@carbon/ibm-products 1.15.0 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. package/README.md +30 -27
  2. package/css/components/Datagrid/styles/datagrid.css +4 -0
  3. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  4. package/css/components/Datagrid/styles/index.css +5 -1
  5. package/css/components/Datagrid/styles/index.css.map +1 -1
  6. package/css/components/Datagrid/styles/useNestedRows.css +1 -1
  7. package/css/index-full-carbon.css +195 -88
  8. package/css/index-full-carbon.css.map +1 -1
  9. package/css/index-full-carbon.min.css +7 -4
  10. package/css/index-full-carbon.min.css.map +1 -1
  11. package/css/index-without-carbon-released-only.css +9 -3
  12. package/css/index-without-carbon-released-only.css.map +1 -1
  13. package/css/index-without-carbon-released-only.min.css +4 -1
  14. package/css/index-without-carbon-released-only.min.css.map +1 -1
  15. package/css/index-without-carbon.css +78 -22
  16. package/css/index-without-carbon.css.map +1 -1
  17. package/css/index-without-carbon.min.css +6 -3
  18. package/css/index-without-carbon.min.css.map +1 -1
  19. package/css/index.css +104 -53
  20. package/css/index.css.map +1 -1
  21. package/css/index.min.css +7 -4
  22. package/css/index.min.css.map +1 -1
  23. package/es/components/AddSelect/AddSelect.js +39 -10
  24. package/es/components/AddSelect/AddSelectColumn.js +31 -73
  25. package/es/components/AddSelect/AddSelectFilter.js +48 -5
  26. package/es/components/AddSelect/AddSelectSort.js +61 -0
  27. package/es/components/AddSelect/add-select-utils.js +21 -0
  28. package/es/components/AddSelect/hooks/useItemSort.js +20 -0
  29. package/es/components/DataSpreadsheet/DataSpreadsheet.js +38 -15
  30. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +93 -46
  31. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -6
  32. package/es/components/DataSpreadsheet/hooks/index.js +3 -1
  33. package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +65 -19
  34. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +60 -0
  35. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +153 -0
  36. package/es/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +16 -0
  37. package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +11 -6
  38. package/es/components/DataSpreadsheet/utils/generateData.js +17 -9
  39. package/es/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +30 -0
  40. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +6 -2
  41. package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -0
  42. package/es/components/Datagrid/Datagrid/Datagrid.js +24 -12
  43. package/es/components/Datagrid/Datagrid/DatagridHead.js +8 -16
  44. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
  45. package/es/components/Datagrid/Datagrid/DatagridRow.js +12 -2
  46. package/es/components/Datagrid/Datagrid/index.js +6 -7
  47. package/es/components/Datagrid/index.js +1 -1
  48. package/es/components/Datagrid/useNestedRows.js +3 -3
  49. package/es/components/Datagrid/useRowExpander.js +1 -1
  50. package/es/components/ExportModal/ExportModal.js +10 -5
  51. package/es/components/SidePanel/SidePanel.js +5 -1
  52. package/es/components/WebTerminal/WebTerminal.js +36 -11
  53. package/es/components/WebTerminal/WebTerminalContentWrapper.js +49 -0
  54. package/es/components/WebTerminal/index.js +2 -1
  55. package/es/components/index.js +1 -1
  56. package/es/global/js/package-settings.js +1 -0
  57. package/lib/components/AddSelect/AddSelect.js +40 -10
  58. package/lib/components/AddSelect/AddSelectColumn.js +32 -71
  59. package/lib/components/AddSelect/AddSelectFilter.js +47 -4
  60. package/lib/components/AddSelect/AddSelectSort.js +79 -0
  61. package/lib/components/AddSelect/add-select-utils.js +29 -2
  62. package/lib/components/AddSelect/hooks/useItemSort.js +33 -0
  63. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +37 -14
  64. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +96 -45
  65. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +85 -6
  66. package/lib/components/DataSpreadsheet/hooks/index.js +17 -1
  67. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +68 -18
  68. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +74 -0
  69. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +161 -0
  70. package/lib/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +26 -0
  71. package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +11 -6
  72. package/lib/components/DataSpreadsheet/utils/generateData.js +17 -9
  73. package/lib/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +40 -0
  74. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +6 -2
  75. package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +45 -0
  76. package/lib/components/Datagrid/Datagrid/Datagrid.js +25 -8
  77. package/lib/components/Datagrid/Datagrid/DatagridHead.js +8 -16
  78. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
  79. package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -2
  80. package/lib/components/Datagrid/Datagrid/index.js +3 -5
  81. package/lib/components/Datagrid/index.js +2 -2
  82. package/lib/components/Datagrid/useNestedRows.js +3 -3
  83. package/lib/components/Datagrid/useRowExpander.js +1 -1
  84. package/lib/components/ExportModal/ExportModal.js +9 -4
  85. package/lib/components/SidePanel/SidePanel.js +5 -1
  86. package/lib/components/WebTerminal/WebTerminal.js +36 -10
  87. package/lib/components/WebTerminal/WebTerminalContentWrapper.js +58 -0
  88. package/lib/components/WebTerminal/index.js +9 -1
  89. package/lib/components/index.js +6 -0
  90. package/lib/global/js/package-settings.js +1 -0
  91. package/package.json +14 -13
  92. package/scss/components/AddSelect/_add-select.scss +15 -2
  93. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +38 -14
  94. package/scss/components/Datagrid/styles/datagrid.scss +8 -0
  95. package/scss/components/Datagrid/styles/useNestedRows.scss +1 -1
  96. package/scss/components/SidePanel/_side-panel.scss +22 -3
  97. package/scss/components/WebTerminal/_storybook-styles.scss +5 -0
  98. package/scss/components/WebTerminal/_web-terminal.scss +14 -4
@@ -29,10 +29,16 @@ var _hooks = require("../../global/js/hooks");
29
29
 
30
30
  var _checkActiveHeaderCell = require("./utils/checkActiveHeaderCell");
31
31
 
32
+ var _checkSelectedHeaderCell = require("./utils/checkSelectedHeaderCell");
33
+
32
34
  var _handleHeaderCellSelection = require("./utils/handleHeaderCellSelection");
33
35
 
34
36
  var _selectAllCells = require("./utils/selectAllCells");
35
37
 
38
+ var _getSpreadsheetWidth = require("./utils/getSpreadsheetWidth");
39
+
40
+ var _hooks2 = require("./hooks");
41
+
36
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
43
 
38
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -55,13 +61,21 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
55
61
  setSelectionAreas = _ref.setSelectionAreas,
56
62
  setSelectionAreaData = _ref.setSelectionAreaData,
57
63
  rows = _ref.rows,
58
- updateActiveCellCoordinates = _ref.updateActiveCellCoordinates;
64
+ totalVisibleColumns = _ref.totalVisibleColumns,
65
+ updateActiveCellCoordinates = _ref.updateActiveCellCoordinates,
66
+ setHeaderCellHoldActive = _ref.setHeaderCellHoldActive,
67
+ headerCellHoldActive = _ref.headerCellHoldActive;
59
68
 
60
69
  var _useState = (0, _react.useState)(0),
61
70
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
62
71
  scrollBarSizeValue = _useState2[0],
63
72
  setScrollBarSizeValue = _useState2[1];
64
73
 
74
+ var _useState3 = (0, _react.useState)(false),
75
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
76
+ selectedHeaderReorderActive = _useState4[0],
77
+ setSelectedHeaderReorderActive = _useState4[1];
78
+
65
79
  var previousState = (0, _hooks.usePreviousValue)({
66
80
  cellSize: cellSize
67
81
  });
@@ -107,6 +121,39 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
107
121
  });
108
122
  };
109
123
 
124
+ var handleHeaderMouseDown = function handleHeaderMouseDown(index) {
125
+ return function (event) {
126
+ var _selectionAreaToClone;
127
+
128
+ setSelectedHeaderReorderActive(true);
129
+ var clickXPosition = event.clientX;
130
+ var headerButtonCoords = event.target.getBoundingClientRect();
131
+ var offsetXValue = clickXPosition - headerButtonCoords.left;
132
+ var bodyContainer = document.querySelector(".".concat(blockClass, "__list--container")).firstElementChild;
133
+ var selectionAreaToClone = selectionAreas.filter(function (item) {
134
+ var _item$header;
135
+
136
+ return (item === null || item === void 0 ? void 0 : (_item$header = item.header) === null || _item$header === void 0 ? void 0 : _item$header.index) === index;
137
+ });
138
+ var selectionAreaElement = ref.current.querySelector("[data-matcher-id=\"".concat((_selectionAreaToClone = selectionAreaToClone[0]) === null || _selectionAreaToClone === void 0 ? void 0 : _selectionAreaToClone.matcher, "\"]"));
139
+ var selectionAreaClonedElement = selectionAreaElement.cloneNode();
140
+ var reorderIndicatorLine = selectionAreaElement.cloneNode();
141
+ reorderIndicatorLine.className = "".concat(blockClass, "__reorder-indicator-line");
142
+ reorderIndicatorLine.style.width = (0, _layout.px)(2);
143
+ selectionAreaClonedElement.classList.add("".concat(blockClass, "__selection-area--element-cloned"));
144
+ selectionAreaClonedElement.setAttribute('data-clone-offset-x', offsetXValue);
145
+ selectionAreaClonedElement.setAttribute('data-column-index-original', index);
146
+ bodyContainer.appendChild(selectionAreaClonedElement);
147
+ bodyContainer.appendChild(reorderIndicatorLine);
148
+ setHeaderCellHoldActive(true);
149
+ };
150
+ };
151
+
152
+ (0, _hooks2.useSpreadsheetMouseMove)({
153
+ ref: ref,
154
+ headerCellHoldActive: headerCellHoldActive,
155
+ defaultColumn: defaultColumn
156
+ });
110
157
  return /*#__PURE__*/_react.default.createElement("div", {
111
158
  className: (0, _classnames.default)("".concat(blockClass, "__header--container")),
112
159
  role: "rowgroup"
@@ -115,13 +162,21 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
115
162
  key: "header_".concat(index)
116
163
  }, headerGroup.getHeaderGroupProps(), {
117
164
  style: _objectSpread(_objectSpread({}, headerGroup.getHeaderGroupProps().style), {}, {
118
- width: (0, _layout.px)(parseInt(headerGroup.getHeaderGroupProps().style.width) + scrollBarSizeValue)
165
+ width: (0, _getSpreadsheetWidth.getSpreadsheetWidth)({
166
+ type: 'header',
167
+ headerGroup: headerGroup,
168
+ scrollBarSizeValue: scrollBarSizeValue,
169
+ totalVisibleColumns: totalVisibleColumns,
170
+ defaultColumn: defaultColumn
171
+ }),
172
+ overflow: 'hidden'
119
173
  }),
120
174
  className: "".concat(blockClass, "__tr")
121
175
  }), /*#__PURE__*/_react.default.createElement("div", {
122
176
  role: "columnheader",
177
+ className: "".concat(blockClass, "__select-all-cell-container"),
123
178
  style: {
124
- width: (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth) - 4,
179
+ width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth,
125
180
  height: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight
126
181
  }
127
182
  }, /*#__PURE__*/_react.default.createElement("button", {
@@ -133,6 +188,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
133
188
  onClick: handleSelectAllClick,
134
189
  className: (0, _classnames.default)("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), "".concat(blockClass, "__th--select-all"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === 'header' && (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'header'))
135
190
  }, "\xA0")), headerGroup.headers.map(function (column, index) {
191
+ var _cx2;
192
+
193
+ var selectedHeader = (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'column');
136
194
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
137
195
  key: "column_".concat(index),
138
196
  role: "columnheader",
@@ -142,11 +200,16 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
142
200
  "data-row-index": "header",
143
201
  "data-column-index": index,
144
202
  tabIndex: -1,
145
- onClick: handleColumnHeaderClick(index),
203
+ onMouseDown: selectedHeader ? handleHeaderMouseDown(index) : null,
204
+ onMouseUp: selectedHeader ? function () {
205
+ return setSelectedHeaderReorderActive(false);
206
+ } : null,
207
+ onClick: !selectedHeader ? handleColumnHeaderClick(index) : null,
146
208
  style: {
147
- height: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight
209
+ height: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight,
210
+ width: (column === null || column === void 0 ? void 0 : column.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width)
148
211
  },
149
- className: (0, _classnames.default)("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'column'))),
212
+ className: (0, _classnames.default)("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), (_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'column')), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__th--selected-header"), selectedHeader), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__th--selected-header-reorder-active"), selectedHeaderReorderActive), _cx2)),
150
213
  type: "button"
151
214
  }, column.render('Header')));
152
215
  }));
@@ -181,6 +244,11 @@ DataSpreadsheetHeader.propTypes = {
181
244
  width: _propTypes.default.number
182
245
  }),
183
246
 
247
+ /**
248
+ * Whether or not a click/hold is active on a header cell
249
+ */
250
+ headerCellHoldActive: _propTypes.default.bool,
251
+
184
252
  /**
185
253
  * Headers provided from useTable hook
186
254
  */
@@ -211,6 +279,11 @@ DataSpreadsheetHeader.propTypes = {
211
279
  */
212
280
  setCurrentMatcher: _propTypes.default.func,
213
281
 
282
+ /**
283
+ * Setter fn for header cell hold active value
284
+ */
285
+ setHeaderCellHoldActive: _propTypes.default.func,
286
+
214
287
  /**
215
288
  * Setter fn for selectionAreaData state value
216
289
  */
@@ -221,6 +294,12 @@ DataSpreadsheetHeader.propTypes = {
221
294
  */
222
295
  setSelectionAreas: _propTypes.default.func,
223
296
 
297
+ /**
298
+ * The total number of columns to be initially visible, additional columns will be rendered and
299
+ * visible via horizontal scrollbar
300
+ */
301
+ totalVisibleColumns: _propTypes.default.number,
302
+
224
303
  /**
225
304
  * Function used to update the active cell coordinates
226
305
  */
@@ -27,6 +27,18 @@ Object.defineProperty(exports, "useSpreadsheetEdit", {
27
27
  return _useSpreadsheetEdit.useSpreadsheetEdit;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "useSpreadsheetMouseMove", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _useSpreadsheetMouseMove.useSpreadsheetMouseMove;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "useSpreadsheetMouseUp", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _useSpreadsheetMouseUp.useSpreadsheetMouseUp;
40
+ }
41
+ });
30
42
  Object.defineProperty(exports, "useSpreadsheetOutsideClick", {
31
43
  enumerable: true,
32
44
  get: function get() {
@@ -42,4 +54,8 @@ var _useResetSpreadsheetFocus = require("./useResetSpreadsheetFocus");
42
54
 
43
55
  var _useSpreadsheetOutsideClick = require("./useSpreadsheetOutsideClick");
44
56
 
45
- var _useSpreadsheetEdit = require("./useSpreadsheetEdit");
57
+ var _useSpreadsheetEdit = require("./useSpreadsheetEdit");
58
+
59
+ var _useSpreadsheetMouseUp = require("./useSpreadsheetMouseUp");
60
+
61
+ var _useSpreadsheetMouseMove = require("./useSpreadsheetMouseMove");
@@ -1,20 +1,28 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.useSpreadsheetEdit = void 0;
7
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
8
12
  var _react = require("react");
9
13
 
10
14
  var _layout = require("@carbon/layout");
11
15
 
12
- // /**
13
- // * Copyright IBM Corp. 2022, 2022
14
- // *
15
- // * This source code is licensed under the Apache-2.0 license found in the
16
- // * LICENSE file in the root directory of this source tree.
17
- // */
16
+ var _settings = require("../../../settings");
17
+
18
+ var _hooks = require("../../../global/js/hooks");
19
+
20
+ /**
21
+ * Copyright IBM Corp. 2022, 2022
22
+ *
23
+ * This source code is licensed under the Apache-2.0 license found in the
24
+ * LICENSE file in the root directory of this source tree.
25
+ */
18
26
  var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
19
27
  var isEditing = _ref.isEditing,
20
28
  rows = _ref.rows,
@@ -22,10 +30,29 @@ var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
22
30
  activeCellRef = _ref.activeCellRef,
23
31
  cellEditorRef = _ref.cellEditorRef,
24
32
  cellEditorRulerRef = _ref.cellEditorRulerRef,
25
- columns = _ref.columns,
33
+ visibleColumns = _ref.visibleColumns,
26
34
  defaultColumn = _ref.defaultColumn,
27
- cellEditorValue = _ref.cellEditorValue;
35
+ cellEditorValue = _ref.cellEditorValue,
36
+ _ref$blockClass = _ref.blockClass,
37
+ blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass;
38
+
39
+ var _useState = (0, _react.useState)(null),
40
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
41
+ nextIndex = _useState2[0],
42
+ setNextIndex = _useState2[1];
43
+
44
+ var previousState = (0, _hooks.usePreviousValue)({
45
+ nextIndex: nextIndex
46
+ });
47
+ (0, _react.useEffect)(function () {
48
+ if (!(previousState !== null && previousState !== void 0 && previousState.nextIndex)) {
49
+ setNextIndex(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column);
50
+ }
51
+ }, [previousState === null || previousState === void 0 ? void 0 : previousState.nextIndex, activeCellCoordinates]);
28
52
  (0, _react.useEffect)(function () {
53
+ var rulerWidth = cellEditorRulerRef.current.offsetWidth;
54
+ var cellEditorCurrentWidth = parseInt(cellEditorRef.current.style.width);
55
+
29
56
  if (isEditing) {
30
57
  var _rows$activeCellCoord, _cellProps$column, _cellEditorRef$curren;
31
58
 
@@ -35,25 +62,47 @@ var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
35
62
  cellEditorRef.current.style.left = activeCellLeftPosition;
36
63
  cellEditorRef.current.style.top = activeCellTopPosition;
37
64
  cellEditorRef.current.style.display = 'block';
38
- cellEditorRef.current.style.width = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.width;
39
65
  cellEditorRef.current.style.height = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.height;
40
66
  cellEditorRef.current.style.paddingTop = "".concat((parseInt(activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.height) - 16) / 2 - 1, "px"); // calculate paddingTop based on cellHeight which could be variable depending on the cellSize prop
41
67
 
42
68
  cellEditorRef.current.style.textAlign = (cellProps === null || cellProps === void 0 ? void 0 : (_cellProps$column = cellProps.column) === null || _cellProps$column === void 0 ? void 0 : _cellProps$column.placement) === 'right' ? 'right' : 'left';
43
69
  (_cellEditorRef$curren = cellEditorRef.current) === null || _cellEditorRef$curren === void 0 ? void 0 : _cellEditorRef$curren.focus();
44
- var rulerWidth = cellEditorRulerRef.current.offsetWidth;
45
- var cellWidth = activeCellRef.current.offsetWidth;
46
70
 
47
- if (rulerWidth >= cellWidth) {
48
- var widthMultiplier = Math.floor(rulerWidth / cellWidth) + 1;
49
- var startingColumnPosition = activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column;
71
+ if (rulerWidth < cellEditorCurrentWidth) {
72
+ var _visibleColumns$nextI;
73
+
74
+ var currentColumnWidth = ((_visibleColumns$nextI = visibleColumns[nextIndex]) === null || _visibleColumns$nextI === void 0 ? void 0 : _visibleColumns$nextI.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width); // If the contents of the cell editor is deleted past the point of the next column
75
+
76
+ if (rulerWidth < cellEditorCurrentWidth - currentColumnWidth) {
77
+ cellEditorRef.current.style.width = (0, _layout.px)(parseInt(cellEditorRef.current.style.width) - currentColumnWidth);
78
+ setNextIndex(function (prev) {
79
+ if (prev === 0) {
80
+ return prev;
81
+ }
82
+
83
+ return prev - 1;
84
+ });
85
+ } // Decrease cell editor width by increment of current column width
86
+
87
+ }
88
+
89
+ if (rulerWidth >= cellEditorCurrentWidth) {
90
+ var _visibleColumns;
91
+
92
+ setNextIndex(function (prev) {
93
+ if (prev === visibleColumns.length - 1) {
94
+ return prev;
95
+ }
96
+
97
+ return prev + 1;
98
+ });
99
+ var onLastColumnIndex = nextIndex + 1 === visibleColumns.length;
100
+ var nextColumnWidth = onLastColumnIndex ? 0 : ((_visibleColumns = visibleColumns[nextIndex + 1]) === null || _visibleColumns === void 0 ? void 0 : _visibleColumns.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width);
50
101
  var startingRowPosition = activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row;
51
- var totalColumns = columns.length;
52
102
  var totalRows = rows.length;
53
- var totalMultiplierPossible = totalColumns - startingColumnPosition;
54
103
  var totalCellEditorMaxHeight = (totalRows - startingRowPosition) * defaultColumn.rowHeight;
55
104
  cellEditorRef.current.style.maxHeight = (0, _layout.px)(totalCellEditorMaxHeight);
56
- cellEditorRef.current.style.width = (0, _layout.px)(cellWidth * (widthMultiplier <= totalMultiplierPossible ? widthMultiplier : totalMultiplierPossible));
105
+ cellEditorRef.current.style.width = (0, _layout.px)(nextColumnWidth + cellEditorCurrentWidth);
57
106
  cellEditorRef.current.style.height = (0, _layout.px)(cellEditorRef.current.scrollHeight); // adds dynamic height to cell editor
58
107
  // Cell editor has reached max height, we need to add the scrolling back.
59
108
  // We also need to subtract 1 to account for the fact that the cell editor
@@ -72,8 +121,9 @@ var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
72
121
  cellEditorRef.current.style.display = 'none';
73
122
  cellEditorRef.current.blur();
74
123
  activeCellRef.current.focus();
124
+ setNextIndex(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column);
75
125
  }
76
- }, [isEditing, activeCellCoordinates, rows, cellEditorValue, columns.length, defaultColumn, cellEditorValue, activeCellRef, cellEditorRef, cellEditorRulerRef]);
126
+ }, [isEditing, activeCellCoordinates, rows, cellEditorValue, defaultColumn, activeCellRef, cellEditorRef, cellEditorRulerRef, visibleColumns, blockClass, previousState === null || previousState === void 0 ? void 0 : previousState.cellEditorValue, nextIndex]);
77
127
  };
78
128
 
79
129
  exports.useSpreadsheetEdit = useSpreadsheetEdit;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSpreadsheetMouseMove = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _layout = require("@carbon/layout");
11
+
12
+ var _settings = require("../../../settings");
13
+
14
+ var _getScrollbarWidth = require("../../../global/js/utils/getScrollbarWidth");
15
+
16
+ var _moveColumnIndicatorLine = require("../utils/moveColumnIndicatorLine");
17
+
18
+ /**
19
+ * Copyright IBM Corp. 2022, 2022
20
+ *
21
+ * This source code is licensed under the Apache-2.0 license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */
24
+ // Used specifically for reordering columns, will move the position of the
25
+ // cloned selection area to follow the position of the cursor
26
+ var useSpreadsheetMouseMove = function useSpreadsheetMouseMove(_ref) {
27
+ var ref = _ref.ref,
28
+ _ref$blockClass = _ref.blockClass,
29
+ blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass,
30
+ headerCellHoldActive = _ref.headerCellHoldActive,
31
+ defaultColumn = _ref.defaultColumn;
32
+ (0, _react.useEffect)(function () {
33
+ var handleMouseMove = function handleMouseMove(event) {
34
+ var clonedSelectionElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element-cloned"));
35
+
36
+ if (clonedSelectionElement) {
37
+ ref.current.addEventListener('mousemove', handleMouseMove);
38
+ }
39
+
40
+ var spreadsheetCoords = ref.current.getBoundingClientRect();
41
+ (0, _moveColumnIndicatorLine.moveColumnIndicatorLine)({
42
+ clonedSelectionElement: clonedSelectionElement,
43
+ ref: ref,
44
+ spreadsheetCoords: spreadsheetCoords
45
+ });
46
+ var scrollbarWidth = (0, _getScrollbarWidth.getScrollbarWidth)();
47
+ var spreadsheetWrapperElement = ref.current;
48
+ spreadsheetWrapperElement.getBoundingClientRect();
49
+ var xPositionRelativeToSpreadsheet = event.clientX - spreadsheetCoords.left;
50
+ var offsetXValue = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-clone-offset-x');
51
+ var totalSpreadsheetWidth = ref.current.offsetWidth;
52
+ var clonedSelectionWidth = clonedSelectionElement.offsetWidth;
53
+ var clonePlacement = Math.max(xPositionRelativeToSpreadsheet - offsetXValue, defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth); // Moves the position of the cloned selection area to follow mouse
54
+
55
+ clonedSelectionElement.style.left = (0, _layout.px)(totalSpreadsheetWidth - clonedSelectionWidth - scrollbarWidth >= clonePlacement ? clonePlacement : totalSpreadsheetWidth - clonedSelectionWidth - scrollbarWidth);
56
+ };
57
+
58
+ if (headerCellHoldActive) {
59
+ ref.current.addEventListener('mousemove', handleMouseMove);
60
+ }
61
+
62
+ var spreadsheetRef = ref.current;
63
+
64
+ if (!headerCellHoldActive) {
65
+ spreadsheetRef === null || spreadsheetRef === void 0 ? void 0 : spreadsheetRef.removeEventListener('mousemove', handleMouseMove);
66
+ }
67
+
68
+ return function () {
69
+ spreadsheetRef === null || spreadsheetRef === void 0 ? void 0 : spreadsheetRef.removeEventListener('mousemove', handleMouseMove);
70
+ };
71
+ });
72
+ };
73
+
74
+ exports.useSpreadsheetMouseMove = useSpreadsheetMouseMove;
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useSpreadsheetMouseUp = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _react = require("react");
15
+
16
+ var _layout = require("@carbon/layout");
17
+
18
+ var _settings = require("../../../settings");
19
+
20
+ var _deepCloneObject = require("../../../global/js/utils/deepCloneObject");
21
+
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
+
26
+ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
27
+ var currentMatcher = _ref.currentMatcher,
28
+ setSelectionAreas = _ref.setSelectionAreas,
29
+ setClickAndHoldActive = _ref.setClickAndHoldActive,
30
+ setValidStartingPoint = _ref.setValidStartingPoint,
31
+ validStartingPoint = _ref.validStartingPoint,
32
+ _ref$blockClass = _ref.blockClass,
33
+ blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass,
34
+ ref = _ref.ref,
35
+ setHeaderCellHoldActive = _ref.setHeaderCellHoldActive,
36
+ setColumnOrder = _ref.setColumnOrder,
37
+ visibleColumns = _ref.visibleColumns,
38
+ setActiveCellCoordinates = _ref.setActiveCellCoordinates,
39
+ activeCellCoordinates = _ref.activeCellCoordinates,
40
+ rows = _ref.rows,
41
+ defaultColumn = _ref.defaultColumn;
42
+ (0, _react.useEffect)(function () {
43
+ var handleMouseUp = function handleMouseUp(event) {
44
+ // Remove the cloned selection area on mouse up
45
+ if (!validStartingPoint) {
46
+ setHeaderCellHoldActive(false);
47
+ var selectionAreaCloneElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element-cloned"));
48
+
49
+ if (!selectionAreaCloneElement) {
50
+ return;
51
+ } // Mouse up while a cloned selection area exists/a column is being reordered
52
+
53
+
54
+ if (selectionAreaCloneElement) {
55
+ var closestCell = event.target.closest(".".concat(blockClass, "--interactive-cell-element"));
56
+ var newColumnIndex = closestCell === null || closestCell === void 0 ? void 0 : closestCell.getAttribute('data-column-index');
57
+ var originalColumnIndex = selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 ? void 0 : selectionAreaCloneElement.getAttribute('data-column-index-original');
58
+ var columnToMoveToElement = ref.current.querySelector("[data-row-index=\"header\"][data-column-index=\"".concat(newColumnIndex, "\"]")); // Mouse up element was not part of the spreadsheet component
59
+
60
+ if (!columnToMoveToElement) {
61
+ return;
62
+ }
63
+
64
+ var selectionAreaToMove = ref.current.querySelector("[data-matcher-id=\"".concat(currentMatcher, "\"]"));
65
+ var spreadsheetPosition = ref.current.getBoundingClientRect();
66
+ var newIndexPosition = columnToMoveToElement.getBoundingClientRect();
67
+ var relativeNewPosition = newIndexPosition.left - spreadsheetPosition.left;
68
+ var cloneColumnWidth = selectionAreaCloneElement.offsetWidth;
69
+ var columnsWidthUpToNewIndex = 0;
70
+ var newIndexLessThanStarting = newColumnIndex < originalColumnIndex;
71
+ visibleColumns.forEach(function (item, index) {
72
+ if (newIndexLessThanStarting && index === visibleColumns.length - 1) {
73
+ return;
74
+ }
75
+
76
+ if (index <= newColumnIndex) {
77
+ columnsWidthUpToNewIndex += (item === null || item === void 0 ? void 0 : item.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width);
78
+ }
79
+ });
80
+ var updatedSelectionAreaPlacement = newIndexLessThanStarting ? relativeNewPosition : columnsWidthUpToNewIndex - cloneColumnWidth + (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth);
81
+ selectionAreaToMove.style.left = (0, _layout.px)(updatedSelectionAreaPlacement);
82
+ setSelectionAreas(function (prev) {
83
+ var selectionAreaClone = (0, _deepCloneObject.deepCloneObject)(prev);
84
+
85
+ if (originalColumnIndex === newColumnIndex) {
86
+ return prev;
87
+ }
88
+
89
+ var indexOfItemToUpdate = selectionAreaClone.findIndex(function (item) {
90
+ return item.matcher === currentMatcher;
91
+ });
92
+
93
+ if (indexOfItemToUpdate === -1) {
94
+ return prev;
95
+ }
96
+
97
+ selectionAreaClone[indexOfItemToUpdate].header.index = Number(newColumnIndex);
98
+ selectionAreaClone[indexOfItemToUpdate].point1.column = Number(newColumnIndex);
99
+ selectionAreaClone[indexOfItemToUpdate].point2.column = Number(newColumnIndex);
100
+ return selectionAreaClone;
101
+ });
102
+ var columnIdArray = visibleColumns.map(function (column) {
103
+ return column.id;
104
+ });
105
+ var columnIdArrayClone = (0, _toConsumableArray2.default)(columnIdArray); // Remove one element at the original index
106
+
107
+ columnIdArrayClone.splice(originalColumnIndex, 1); // Add one element at the new index
108
+
109
+ columnIdArrayClone.splice(newColumnIndex, 0, columnIdArray[originalColumnIndex]);
110
+ setColumnOrder(columnIdArrayClone); // Function provided by useTable (react-table) hook to reorder columns
111
+
112
+ var newCellCoords = _objectSpread(_objectSpread({}, activeCellCoordinates), {}, {
113
+ column: Number(newColumnIndex)
114
+ });
115
+
116
+ setActiveCellCoordinates(newCellCoords); // Remove the cloned column and indicator elements
117
+
118
+ var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
119
+ indicatorLineElement === null || indicatorLineElement === void 0 ? void 0 : indicatorLineElement.remove();
120
+ selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 ? void 0 : selectionAreaCloneElement.remove();
121
+ }
122
+ } // Mouse up was on a spreadsheet body cell which is a valid
123
+ // start/end point for creating a selection area
124
+
125
+
126
+ if (validStartingPoint) {
127
+ setClickAndHoldActive(false);
128
+ setValidStartingPoint(false);
129
+ var cellButton = event.target.closest(".".concat(blockClass, "__body--td"));
130
+
131
+ if (cellButton) {
132
+ var endCellCoordinates = {
133
+ row: Number(cellButton.getAttribute('data-row-index')),
134
+ column: Number(cellButton.getAttribute('data-column-index'))
135
+ };
136
+ setSelectionAreas(function (prev) {
137
+ var selectionAreaClone = (0, _deepCloneObject.deepCloneObject)(prev);
138
+ var indexOfItemToUpdate = selectionAreaClone.findIndex(function (item) {
139
+ return item.matcher === currentMatcher;
140
+ }); // No items in the array have an object that matches the value of currentMatcher
141
+
142
+ if (indexOfItemToUpdate === -1) {
143
+ return prev;
144
+ }
145
+
146
+ selectionAreaClone[indexOfItemToUpdate].point2 = endCellCoordinates;
147
+ selectionAreaClone[indexOfItemToUpdate].areaCreated = false;
148
+ return selectionAreaClone;
149
+ });
150
+ }
151
+ }
152
+ };
153
+
154
+ document.addEventListener('mouseup', handleMouseUp);
155
+ return function () {
156
+ document.removeEventListener('mouseup', handleMouseUp);
157
+ };
158
+ }, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn]);
159
+ };
160
+
161
+ exports.useSpreadsheetMouseUp = useSpreadsheetMouseUp;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.checkSelectedHeaderCell = void 0;
7
+
8
+ var _deepCloneObject = require("../../../global/js/utils/deepCloneObject");
9
+
10
+ /**
11
+ * Copyright IBM Corp. 2022, 2022
12
+ *
13
+ * This source code is licensed under the Apache-2.0 license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */
16
+ var checkSelectedHeaderCell = function checkSelectedHeaderCell(headerIndex, selectionAreas, headerType) {
17
+ var areasCloned = (0, _deepCloneObject.deepCloneObject)(selectionAreas);
18
+ var isSelectedHeader = areasCloned.some(function (area) {
19
+ var _area$header, _area$header2;
20
+
21
+ return (area === null || area === void 0 ? void 0 : (_area$header = area.header) === null || _area$header === void 0 ? void 0 : _area$header.type) === headerType && headerIndex === (area === null || area === void 0 ? void 0 : (_area$header2 = area.header) === null || _area$header2 === void 0 ? void 0 : _area$header2.index);
22
+ });
23
+ return isSelectedHeader;
24
+ };
25
+
26
+ exports.checkSelectedHeaderCell = checkSelectedHeaderCell;
@@ -24,7 +24,8 @@ var createCellSelectionArea = function createCellSelectionArea(_ref) {
24
24
  defaultColumn = _ref.defaultColumn,
25
25
  selectionAreas = _ref.selectionAreas,
26
26
  setSelectionAreas = _ref.setSelectionAreas,
27
- setActiveCellInsideSelectionArea = _ref.setActiveCellInsideSelectionArea;
27
+ setActiveCellInsideSelectionArea = _ref.setActiveCellInsideSelectionArea,
28
+ visibleColumns = _ref.visibleColumns;
28
29
 
29
30
  var _getSelectionAreaPoin = (0, _getSelectionAreaPoints.getSelectionAreaPoints)(area),
30
31
  lowestColumnIndex = _getSelectionAreaPoin.lowestColumnIndex,
@@ -38,24 +39,28 @@ var createCellSelectionArea = function createCellSelectionArea(_ref) {
38
39
  activeCellElement.setAttribute('data-selection-id', area.matcher);
39
40
  }
40
41
 
41
- var point1Element = document.querySelector("[data-row-index=\"".concat(area.point1.row, "\"][data-column-index=\"").concat(area.point1.column, "\"]")) || document.querySelector(".".concat(blockClass, "__body--td")); // if we can't find the point1 element (this can happen in the case where a virtualized row is not present anymore in the DOM), we get the default height/width of the first body cell we find
42
+ var selectionAreaVariableWidth = 0;
43
+ visibleColumns.forEach(function (item, index) {
44
+ if (index >= lowestColumnIndex && index <= greatestColumnIndex) {
45
+ selectionAreaVariableWidth += (item === null || item === void 0 ? void 0 : item.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width);
46
+ }
47
+ });
48
+ var point1Element = document.querySelector("[data-row-index=\"".concat(area.point1.row, "\"][data-column-index=\"").concat(area.point1.column, "\"]")) || document.querySelector(".".concat(blockClass, "__body--td")); // if we can't find the point1 element (this can happen in the case where a virtualized row is not present anymore in the DOM), we get the default height of the first body cell we find
42
49
 
43
- var selectionAreaCellWidth = point1Element.offsetWidth;
44
50
  var selectionAreaCellHeight = point1Element.offsetHeight;
45
- var selectionAreaTotalWidth = selectionAreaCellWidth * (greatestColumnIndex - lowestColumnIndex + 1);
46
51
  var selectionAreaTotalHeight = selectionAreaCellHeight * (greatestRowIndex - lowestRowIndex + 1);
47
52
  var bodyContainer = document.querySelector(".".concat(blockClass, "__list--container")).firstElementChild;
48
53
  var placementElement = bodyContainer.querySelector("[data-row-index=\"".concat(lowestRowIndex, "\"][data-column-index=\"").concat(lowestColumnIndex, "\"]"));
49
54
  var relativePosition = {
50
55
  top: placementElement ? placementElement.getBoundingClientRect().top - bodyContainer.getBoundingClientRect().top : lowestRowIndex === 0 ? 0 : selectionAreaCellHeight * lowestRowIndex,
51
56
  // calculate top value here if virtualized row is not in DOM
52
- left: placementElement ? placementElement.getBoundingClientRect().left - bodyContainer.getBoundingClientRect().left : lowestColumnIndex === 0 ? 0 + (defaultColumn.rowHeaderWidth - 4) : selectionAreaCellWidth * lowestColumnIndex + (defaultColumn.rowHeaderWidth - 4) // calculate left value here if virtualized row is not in DOM, accounting for row header cell width (including borders)
57
+ left: placementElement ? placementElement.getBoundingClientRect().left - bodyContainer.getBoundingClientRect().left : lowestColumnIndex === 0 ? 0 + (defaultColumn.rowHeaderWidth - 4) : defaultColumn.width * lowestColumnIndex + (defaultColumn.rowHeaderWidth - 4) // calculate left value here if virtualized row is not in DOM, accounting for row header cell width (including borders)
53
58
 
54
59
  };
55
60
  var selectionAreaElement = document.querySelector("[data-matcher-id=\"".concat(area.matcher, "\"]")) || document.createElement('div');
56
61
  selectionAreaElement.classList.add("".concat(blockClass, "__selection-area--element"));
57
62
  selectionAreaElement.setAttribute('data-matcher-id', area.matcher);
58
- selectionAreaElement.style.width = (0, _layout.px)(selectionAreaTotalWidth);
63
+ selectionAreaElement.style.width = (0, _layout.px)(selectionAreaVariableWidth);
59
64
  selectionAreaElement.style.height = (0, _layout.px)(selectionAreaTotalHeight);
60
65
  selectionAreaElement.style.left = (0, _layout.px)(relativePosition.left);
61
66
  selectionAreaElement.style.top = (0, _layout.px)(relativePosition.top);