react-grid-layout 1.2.1 → 1.2.5
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/.flowconfig +1 -1
- package/CHANGELOG.md +40 -0
- package/README.md +6 -7
- package/build/GridItem.js +13 -19
- package/build/ReactGridLayout.js +53 -40
- package/build/ReactGridLayoutPropTypes.js +5 -5
- package/build/ResponsiveReactGridLayout.js +3 -3
- package/build/components/WidthProvider.js +27 -23
- package/build/utils.js +52 -3
- package/dist/react-grid-layout.min.js +1 -1
- package/dist/react-grid-layout.min.js.LICENSE.txt +1 -1
- package/dist/react-grid-layout.min.js.map +1 -1
- package/lib/GridItem.jsx +18 -14
- package/lib/ReactGridLayout.jsx +49 -46
- package/lib/ReactGridLayoutPropTypes.js +11 -6
- package/lib/components/WidthProvider.jsx +35 -23
- package/lib/utils.js +36 -0
- package/package.json +26 -21
- package/.husky/pre-commit +0 -6
- package/.travis.yml +0 -9
package/.flowconfig
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
1.2.5 (May 10, 2021)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
### Bugfixes
|
|
7
|
+
- Ensure no negative positions are possible when compacting
|
|
8
|
+
- Thanks @DonnyLi [#829](https://github.com/react-grid-layout/react-grid-layout/pull/829)
|
|
9
|
+
- Fixes [#535](https://github.com/react-grid-layout/react-grid-layout/issues/535)
|
|
10
|
+
- Fix resizing on mobile. This was caused by the `ref` refactor to remove ReactDOM in 1.2.3.
|
|
11
|
+
- Fixes #[1458](https://github.com/react-grid-layout/react-grid-layout/issues/1458)
|
|
12
|
+
- Note: this upgrades `react-resizable` to `3.0.1`, which like our other deps, is only compatible with `React@>=16.3`.
|
|
13
|
+
|
|
14
|
+
### Documentation
|
|
15
|
+
- Document new arity of `resizeHandle` (`(axis: ResizeHandleAxis, ref: ReactRef<HTMLElement>) => React$Element`)
|
|
16
|
+
- Remove references to the deprecated `verticalCompact` prop
|
|
17
|
+
|
|
18
|
+
1.2.4 (Mar 18, 2021)
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
*This version fixes a serious render bug in `<WidthProvider>`. 1.2.3 should not be used.*
|
|
22
|
+
|
|
23
|
+
### Bugfixes
|
|
24
|
+
- Fix failure to mount when layout is WidthProvider-wrapped and `measureBeforeMount` is `true`.
|
|
25
|
+
- Ref: [#1428](https://github.com/react-grid-layout/react-grid-layout/issues/1428)
|
|
26
|
+
- `<WidthProvider>` no longer updates grid with if it has been set to 0. This prevents unnecessary updates
|
|
27
|
+
if the grid is set to `display: none;`. Thanks @405go [#1427](https://github.com/react-grid-layout/react-grid-layout/pull/1427)
|
|
28
|
+
|
|
29
|
+
1.2.3 (Mar 16, 2021)
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
### New Features
|
|
33
|
+
- React-Grid-Layout is now fully compatible with `<React.StrictMode>`.
|
|
34
|
+
- Usage of `ReactDOM` has been removed by using `React.createRef()` inside RGL, and the new [`nodeRef` prop](https://github.com/react-grid-layout/react-draggable/blob/master/CHANGELOG.md#440-may-12-2020) in `react-draggable`.
|
|
35
|
+
|
|
36
|
+
1.2.2 (Mar 1, 2021)
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### Bugfixes
|
|
40
|
+
- `onResize` as changed in 1.2.1 did not correctly save the layout. This is now fixed.
|
|
41
|
+
- As you might guess, we need more test coverage! PRs are very welcome, I'll buy you beers on Cashapp or Patreon or whatever you like.
|
|
42
|
+
|
|
3
43
|
1.2.1 (Mar 1, 2021)
|
|
4
44
|
---
|
|
5
45
|
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ RGL is React-only and does not require jQuery.
|
|
|
16
16
|

|
|
17
17
|
> GIF from production usage on [BitMEX.com](https://www.bitmex.com)
|
|
18
18
|
|
|
19
|
-
[**[Demo](https://react-grid-layout.github.io/react-grid-layout/
|
|
19
|
+
[**[Demo](https://react-grid-layout.github.io/react-grid-layout/) | [Changelog](/CHANGELOG.md) | [CodeSandbox Editable demo](https://codesandbox.io/s/5wy3rz5z1x?module=%2Fsrc%2FShowcaseLayout.js)**]
|
|
20
20
|
|
|
21
21
|
## Table of Contents
|
|
22
22
|
|
|
@@ -92,11 +92,12 @@ RGL is React-only and does not require jQuery.
|
|
|
92
92
|
* Separate layouts per responsive breakpoint
|
|
93
93
|
* Grid Items placed using CSS Transforms
|
|
94
94
|
* Performance with CSS Transforms: [on](http://i.imgur.com/FTogpLp.jpg) / [off](http://i.imgur.com/gOveMm8.jpg), note paint (green) as % of time
|
|
95
|
+
* Compatibility with `<React.StrictMode>`
|
|
95
96
|
|
|
96
97
|
|Version | Compatibility |
|
|
97
98
|
|----------------|------------------|
|
|
98
|
-
| >= 0.17.0 | React
|
|
99
|
-
| >= 0.11.3 | React 0.14 &
|
|
99
|
+
| >= 0.17.0 | React 16 & 17 |
|
|
100
|
+
| >= 0.11.3 | React 0.14 & 15 |
|
|
100
101
|
| >= 0.10.0 | React 0.14 |
|
|
101
102
|
| 0.8. - 0.9.2 | React 0.13 |
|
|
102
103
|
| < 0.8 | React 0.12 |
|
|
@@ -272,9 +273,6 @@ draggableCancel: ?string = '',
|
|
|
272
273
|
// If you forget the leading . it will not work.
|
|
273
274
|
draggableHandle: ?string = '',
|
|
274
275
|
|
|
275
|
-
// If true, the layout will compact vertically
|
|
276
|
-
verticalCompact: ?boolean = true,
|
|
277
|
-
|
|
278
276
|
// Compaction type.
|
|
279
277
|
compactType: ?('vertical' | 'horizontal') = 'vertical';
|
|
280
278
|
|
|
@@ -344,7 +342,8 @@ isDroppable: ?boolean = false
|
|
|
344
342
|
// 'ne' - Northeast handle (top-right)
|
|
345
343
|
resizeHandles: ?Array<'s' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne'> = ['se']
|
|
346
344
|
// Custom component for resize handles
|
|
347
|
-
|
|
345
|
+
// See `handle` as used in https://github.com/react-grid-layout/react-resizable#props
|
|
346
|
+
resizeHandle?: ReactElement<any> | ((resizeHandleAxis: ResizeHandleAxis, ref: ReactRef<HTMLElement>) => ReactElement<any>)
|
|
348
347
|
|
|
349
348
|
//
|
|
350
349
|
// Callbacks
|
package/build/GridItem.js
CHANGED
|
@@ -9,8 +9,6 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
|
|
12
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
13
|
-
|
|
14
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
13
|
|
|
16
14
|
var _reactDraggable = require("react-draggable");
|
|
@@ -27,7 +25,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
27
25
|
|
|
28
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
27
|
|
|
30
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
31
29
|
|
|
32
30
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
31
|
|
|
@@ -78,7 +76,7 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
|
|
|
78
76
|
className: ""
|
|
79
77
|
});
|
|
80
78
|
|
|
81
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
79
|
+
_defineProperty(_assertThisInitialized(_this), "elementRef", /*#__PURE__*/_react.default.createRef());
|
|
82
80
|
|
|
83
81
|
_defineProperty(_assertThisInitialized(_this), "onDragStart", function (e, _ref) {
|
|
84
82
|
var node = _ref.node;
|
|
@@ -273,26 +271,19 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
|
|
|
273
271
|
) {
|
|
274
272
|
var droppingPosition = this.props.droppingPosition;
|
|
275
273
|
if (!droppingPosition) return;
|
|
274
|
+
var node = this.elementRef.current; // Can't find DOM node (are we unmounted?)
|
|
275
|
+
|
|
276
|
+
if (!node) return;
|
|
276
277
|
var prevDroppingPosition = prevProps.droppingPosition || {
|
|
277
278
|
left: 0,
|
|
278
279
|
top: 0
|
|
279
280
|
};
|
|
280
281
|
var dragging = this.state.dragging;
|
|
281
|
-
|
|
282
|
-
if (!this.currentNode) {
|
|
283
|
-
// eslint-disable-next-line react/no-find-dom-node
|
|
284
|
-
this.currentNode = ((_reactDom.default.findDOMNode(this)
|
|
285
|
-
/*: any*/
|
|
286
|
-
)
|
|
287
|
-
/*: HTMLElement*/
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
282
|
var shouldDrag = dragging && droppingPosition.left !== prevDroppingPosition.left || droppingPosition.top !== prevDroppingPosition.top;
|
|
292
283
|
|
|
293
284
|
if (!dragging) {
|
|
294
285
|
this.onDragStart(droppingPosition.e, {
|
|
295
|
-
node:
|
|
286
|
+
node: node,
|
|
296
287
|
deltaX: droppingPosition.left,
|
|
297
288
|
deltaY: droppingPosition.top
|
|
298
289
|
});
|
|
@@ -300,7 +291,7 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
|
|
|
300
291
|
var deltaX = droppingPosition.left - dragging.left;
|
|
301
292
|
var deltaY = droppingPosition.top - dragging.top;
|
|
302
293
|
this.onDrag(droppingPosition.e, {
|
|
303
|
-
node:
|
|
294
|
+
node: node,
|
|
304
295
|
deltaX: deltaX,
|
|
305
296
|
deltaY: deltaY
|
|
306
297
|
});
|
|
@@ -383,7 +374,8 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
|
|
|
383
374
|
onStop: this.onDragStop,
|
|
384
375
|
handle: this.props.handle,
|
|
385
376
|
cancel: ".react-resizable-handle" + (this.props.cancel ? "," + this.props.cancel : ""),
|
|
386
|
-
scale: this.props.transformScale
|
|
377
|
+
scale: this.props.transformScale,
|
|
378
|
+
nodeRef: this.elementRef
|
|
387
379
|
}, child);
|
|
388
380
|
}
|
|
389
381
|
/**
|
|
@@ -422,7 +414,8 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
|
|
|
422
414
|
var maxes = (0, _calculateUtils.calcGridItemPosition)(positionParams, 0, 0, maxW, maxH);
|
|
423
415
|
var minConstraints = [mins.width, mins.height];
|
|
424
416
|
var maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)];
|
|
425
|
-
return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable
|
|
417
|
+
return /*#__PURE__*/_react.default.createElement(_reactResizable.Resizable // These are opts for the resize handle itself
|
|
418
|
+
, {
|
|
426
419
|
draggableOpts: {
|
|
427
420
|
disabled: !isResizable
|
|
428
421
|
},
|
|
@@ -518,6 +511,7 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
|
|
|
518
511
|
|
|
519
512
|
|
|
520
513
|
var newChild = /*#__PURE__*/_react.default.cloneElement(child, {
|
|
514
|
+
ref: this.elementRef,
|
|
521
515
|
className: (0, _classnames.default)("react-grid-item", child.props.className, this.props.className, {
|
|
522
516
|
static: this.props.static,
|
|
523
517
|
resizing: Boolean(this.state.resizing),
|
|
@@ -598,7 +592,7 @@ _defineProperty(GridItem, "propTypes", {
|
|
|
598
592
|
// ID is nice to have for callbacks
|
|
599
593
|
i: _propTypes.default.string.isRequired,
|
|
600
594
|
// Resize handle options
|
|
601
|
-
resizeHandles: _ReactGridLayoutPropTypes.
|
|
595
|
+
resizeHandles: _ReactGridLayoutPropTypes.resizeHandleAxesType,
|
|
602
596
|
resizeHandle: _ReactGridLayoutPropTypes.resizeHandleType,
|
|
603
597
|
// Functions
|
|
604
598
|
onDragStop: _propTypes.default.func,
|
package/build/ReactGridLayout.js
CHANGED
|
@@ -23,11 +23,19 @@ var _ReactGridLayoutPropTypes = _interopRequireDefault(require("./ReactGridLayou
|
|
|
23
23
|
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
|
|
26
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
26
|
+
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); }
|
|
27
27
|
|
|
28
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
28
|
+
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; }
|
|
29
29
|
|
|
30
|
-
function
|
|
30
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
31
|
+
|
|
32
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
33
|
+
|
|
34
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
35
|
+
|
|
36
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
37
|
+
|
|
38
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
31
39
|
|
|
32
40
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
41
|
|
|
@@ -37,7 +45,7 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
37
45
|
|
|
38
46
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
39
47
|
|
|
40
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator
|
|
48
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
41
49
|
|
|
42
50
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
43
51
|
|
|
@@ -464,45 +472,50 @@ var ReactGridLayout = /*#__PURE__*/function (_React$Component) {
|
|
|
464
472
|
var _this$props4 = this.props,
|
|
465
473
|
cols = _this$props4.cols,
|
|
466
474
|
preventCollision = _this$props4.preventCollision;
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
w: w,
|
|
480
|
-
h: h
|
|
481
|
-
})).filter(function (layoutItem) {
|
|
482
|
-
return layoutItem.i !== l.i;
|
|
483
|
-
});
|
|
484
|
-
hasCollisions = collisions.length > 0; // If we're colliding, we need adjust the placeholder.
|
|
485
|
-
|
|
486
|
-
if (hasCollisions) {
|
|
487
|
-
// adjust w && h to maximum allowed space
|
|
488
|
-
var leastX = Infinity,
|
|
489
|
-
leastY = Infinity;
|
|
490
|
-
collisions.forEach(function (layoutItem) {
|
|
491
|
-
if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);
|
|
492
|
-
if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);
|
|
475
|
+
|
|
476
|
+
var _withLayoutItem = (0, _utils.withLayoutItem)(layout, i, function (l) {
|
|
477
|
+
// Something like quad tree should be used
|
|
478
|
+
// to find collisions faster
|
|
479
|
+
var hasCollisions;
|
|
480
|
+
|
|
481
|
+
if (preventCollision) {
|
|
482
|
+
var collisions = (0, _utils.getAllCollisions)(layout, _objectSpread(_objectSpread({}, l), {}, {
|
|
483
|
+
w: w,
|
|
484
|
+
h: h
|
|
485
|
+
})).filter(function (layoutItem) {
|
|
486
|
+
return layoutItem.i !== l.i;
|
|
493
487
|
});
|
|
494
|
-
|
|
495
|
-
|
|
488
|
+
hasCollisions = collisions.length > 0; // If we're colliding, we need adjust the placeholder.
|
|
489
|
+
|
|
490
|
+
// If we're colliding, we need adjust the placeholder.
|
|
491
|
+
if (hasCollisions) {
|
|
492
|
+
// adjust w && h to maximum allowed space
|
|
493
|
+
var leastX = Infinity,
|
|
494
|
+
leastY = Infinity;
|
|
495
|
+
collisions.forEach(function (layoutItem) {
|
|
496
|
+
if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);
|
|
497
|
+
if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);
|
|
498
|
+
});
|
|
499
|
+
if (Number.isFinite(leastX)) l.w = leastX - l.x;
|
|
500
|
+
if (Number.isFinite(leastY)) l.h = leastY - l.y;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
if (!hasCollisions) {
|
|
505
|
+
// Set new width and height.
|
|
506
|
+
l.w = w;
|
|
507
|
+
l.h = h;
|
|
496
508
|
}
|
|
497
|
-
}
|
|
498
509
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
510
|
+
return l;
|
|
511
|
+
}),
|
|
512
|
+
_withLayoutItem2 = _slicedToArray(_withLayoutItem, 2),
|
|
513
|
+
newLayout = _withLayoutItem2[0],
|
|
514
|
+
l = _withLayoutItem2[1]; // Shouldn't ever happen, but typechecking makes it necessary
|
|
504
515
|
|
|
505
516
|
|
|
517
|
+
if (!l) return; // Create placeholder element (display only)
|
|
518
|
+
|
|
506
519
|
var placeholder = {
|
|
507
520
|
w: l.w,
|
|
508
521
|
h: l.h,
|
|
@@ -511,10 +524,10 @@ var ReactGridLayout = /*#__PURE__*/function (_React$Component) {
|
|
|
511
524
|
static: true,
|
|
512
525
|
i: i
|
|
513
526
|
};
|
|
514
|
-
this.props.onResize(
|
|
527
|
+
this.props.onResize(newLayout, oldResizeItem, l, placeholder, e, node); // Re-compact the newLayout and set the drag placeholder.
|
|
515
528
|
|
|
516
529
|
this.setState({
|
|
517
|
-
layout: (0, _utils.compact)(
|
|
530
|
+
layout: (0, _utils.compact)(newLayout, (0, _utils.compactType)(this.props), cols),
|
|
518
531
|
activeDrag: placeholder
|
|
519
532
|
});
|
|
520
533
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.resizeHandleType = exports.
|
|
6
|
+
exports.default = exports.resizeHandleType = exports.resizeHandleAxesType = void 0;
|
|
7
7
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
|
|
@@ -21,12 +21,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
21
21
|
// 'nw' - Northwest handle (top-left)
|
|
22
22
|
// 'se' - Southeast handle (bottom-right)
|
|
23
23
|
// 'ne' - Northeast handle (top-right)
|
|
24
|
-
var
|
|
24
|
+
var resizeHandleAxesType
|
|
25
25
|
/*: ReactPropsChainableTypeChecker*/
|
|
26
26
|
= _propTypes.default.arrayOf(_propTypes.default.oneOf(["s", "w", "e", "n", "sw", "nw", "se", "ne"])); // Custom component for resize handles
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
exports.
|
|
29
|
+
exports.resizeHandleAxesType = resizeHandleAxesType;
|
|
30
30
|
|
|
31
31
|
var resizeHandleType
|
|
32
32
|
/*: ReactPropsChainableTypeChecker*/
|
|
@@ -54,7 +54,7 @@ var resizeHandleType
|
|
|
54
54
|
useCSSTransforms: boolean,
|
|
55
55
|
transformScale: number,
|
|
56
56
|
droppingItem: $Shape<LayoutItem>,
|
|
57
|
-
resizeHandles:
|
|
57
|
+
resizeHandles: ResizeHandleAxis[],
|
|
58
58
|
resizeHandle?: ResizeHandle,
|
|
59
59
|
|
|
60
60
|
// Callbacks
|
|
@@ -156,7 +156,7 @@ var _default = {
|
|
|
156
156
|
// If true, an external element can trigger onDrop callback with a specific grid position as a parameter
|
|
157
157
|
isDroppable: _propTypes.default.bool,
|
|
158
158
|
// Resize handle options
|
|
159
|
-
resizeHandles:
|
|
159
|
+
resizeHandles: resizeHandleAxesType,
|
|
160
160
|
resizeHandle: resizeHandleType,
|
|
161
161
|
//
|
|
162
162
|
// Callbacks
|
|
@@ -21,9 +21,9 @@ var _ReactGridLayout = _interopRequireDefault(require("./ReactGridLayout"));
|
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
24
|
+
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); }
|
|
25
25
|
|
|
26
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
26
|
+
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; }
|
|
27
27
|
|
|
28
28
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
29
29
|
|
|
@@ -31,7 +31,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
31
31
|
|
|
32
32
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
33
33
|
|
|
34
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
34
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
35
35
|
|
|
36
36
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
37
37
|
|
|
@@ -5,19 +5,19 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.default =
|
|
8
|
+
exports.default = WidthProvideRGL;
|
|
9
9
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
18
|
+
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); }
|
|
19
19
|
|
|
20
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
20
|
+
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; }
|
|
21
21
|
|
|
22
22
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
23
23
|
|
|
@@ -47,24 +47,20 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
47
47
|
|
|
48
48
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
49
49
|
|
|
50
|
+
var layoutClassName = "react-grid-layout";
|
|
50
51
|
/*
|
|
51
52
|
* A simple HOC that provides facility for listening to container resizes.
|
|
52
53
|
*
|
|
53
54
|
* The Flow type is pretty janky here. I can't just spread `WPProps` into this returned object - I wish I could - but it triggers
|
|
54
55
|
* a flow bug of some sort that causes it to stop typechecking.
|
|
55
56
|
*/
|
|
56
|
-
|
|
57
|
+
|
|
58
|
+
function WidthProvideRGL
|
|
57
59
|
/*:: <Config>*/
|
|
58
60
|
(ComposedComponent
|
|
59
61
|
/*: React.AbstractComponent<Config>*/
|
|
60
62
|
)
|
|
61
|
-
/*: React.AbstractComponent<
|
|
62
|
-
...Config,
|
|
63
|
-
measureBeforeMount?: boolean,
|
|
64
|
-
className?: string,
|
|
65
|
-
style?: Object,
|
|
66
|
-
width?: number
|
|
67
|
-
|}>*/
|
|
63
|
+
/*: React.AbstractComponent<ComposedProps<Config>>*/
|
|
68
64
|
{
|
|
69
65
|
var _class, _temp;
|
|
70
66
|
|
|
@@ -88,17 +84,21 @@ function WidthProvider
|
|
|
88
84
|
width: 1280
|
|
89
85
|
});
|
|
90
86
|
|
|
87
|
+
_defineProperty(_assertThisInitialized(_this), "elementRef", /*#__PURE__*/React.createRef());
|
|
88
|
+
|
|
91
89
|
_defineProperty(_assertThisInitialized(_this), "mounted", false);
|
|
92
90
|
|
|
93
91
|
_defineProperty(_assertThisInitialized(_this), "onWindowResize", function () {
|
|
94
|
-
if (!_this.mounted) return;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if (node instanceof HTMLElement)
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
if (!_this.mounted) return;
|
|
93
|
+
var node = _this.elementRef.current; // Flow casts this to Text | Element
|
|
94
|
+
// fix: grid position error when node or parentNode display is none by window resize
|
|
95
|
+
// #924 #1084
|
|
96
|
+
|
|
97
|
+
if (node instanceof HTMLElement && node.offsetWidth) {
|
|
98
|
+
_this.setState({
|
|
99
|
+
width: node.offsetWidth
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
return _this;
|
|
@@ -129,12 +129,16 @@ function WidthProvider
|
|
|
129
129
|
|
|
130
130
|
if (measureBeforeMount && !this.mounted) {
|
|
131
131
|
return /*#__PURE__*/React.createElement("div", {
|
|
132
|
-
className: this.props.className,
|
|
133
|
-
style: this.props.style
|
|
132
|
+
className: (0, _classnames.default)(this.props.className, layoutClassName),
|
|
133
|
+
style: this.props.style // $FlowIgnore ref types
|
|
134
|
+
,
|
|
135
|
+
ref: this.elementRef
|
|
134
136
|
});
|
|
135
137
|
}
|
|
136
138
|
|
|
137
|
-
return /*#__PURE__*/React.createElement(ComposedComponent, _extends({
|
|
139
|
+
return /*#__PURE__*/React.createElement(ComposedComponent, _extends({
|
|
140
|
+
innerRef: this.elementRef
|
|
141
|
+
}, rest, this.state));
|
|
138
142
|
}
|
|
139
143
|
}]);
|
|
140
144
|
|
package/build/utils.js
CHANGED
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.bottom = bottom;
|
|
7
7
|
exports.cloneLayout = cloneLayout;
|
|
8
|
+
exports.modifyLayout = modifyLayout;
|
|
9
|
+
exports.withLayoutItem = withLayoutItem;
|
|
8
10
|
exports.cloneLayoutItem = cloneLayoutItem;
|
|
9
11
|
exports.childrenEqual = childrenEqual;
|
|
10
12
|
exports.fastPositionEqual = fastPositionEqual;
|
|
@@ -36,7 +38,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
36
38
|
|
|
37
39
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
38
40
|
|
|
39
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
41
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
40
42
|
|
|
41
43
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
42
44
|
|
|
@@ -79,6 +81,48 @@ function cloneLayout(layout
|
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
return newLayout;
|
|
84
|
+
} // Modify a layoutItem inside a layout. Returns a new Layout,
|
|
85
|
+
// does not mutate. Carries over all other LayoutItems unmodified.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
function modifyLayout(layout
|
|
89
|
+
/*: Layout*/
|
|
90
|
+
, layoutItem
|
|
91
|
+
/*: LayoutItem*/
|
|
92
|
+
)
|
|
93
|
+
/*: Layout*/
|
|
94
|
+
{
|
|
95
|
+
var newLayout = Array(layout.length);
|
|
96
|
+
|
|
97
|
+
for (var i = 0, len = layout.length; i < len; i++) {
|
|
98
|
+
if (layoutItem.i === layout[i].i) {
|
|
99
|
+
newLayout[i] = layoutItem;
|
|
100
|
+
} else {
|
|
101
|
+
newLayout[i] = layout[i];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return newLayout;
|
|
106
|
+
} // Function to be called to modify a layout item.
|
|
107
|
+
// Does defensive clones to ensure the layout is not modified.
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
function withLayoutItem(layout
|
|
111
|
+
/*: Layout*/
|
|
112
|
+
, itemKey
|
|
113
|
+
/*: string*/
|
|
114
|
+
, cb
|
|
115
|
+
/*: LayoutItem => LayoutItem*/
|
|
116
|
+
)
|
|
117
|
+
/*: [Layout, ?LayoutItem]*/
|
|
118
|
+
{
|
|
119
|
+
var item = getLayoutItem(layout, itemKey);
|
|
120
|
+
if (!item) return [layout, null];
|
|
121
|
+
item = cb(cloneLayoutItem(item)); // defensive clone then modify
|
|
122
|
+
// FIXME could do this faster if we already knew the index
|
|
123
|
+
|
|
124
|
+
layout = modifyLayout(layout, item);
|
|
125
|
+
return [layout, item];
|
|
82
126
|
} // Fast path to cloning, since this is monomorphic
|
|
83
127
|
|
|
84
128
|
|
|
@@ -318,8 +362,11 @@ function compactItem(compareWith
|
|
|
318
362
|
l.x = cols - l.w;
|
|
319
363
|
l.y++;
|
|
320
364
|
}
|
|
321
|
-
}
|
|
365
|
+
} // Ensure that there are no negative positions
|
|
366
|
+
|
|
322
367
|
|
|
368
|
+
l.y = Math.max(l.y, 0);
|
|
369
|
+
l.x = Math.max(l.x, 0);
|
|
323
370
|
return l;
|
|
324
371
|
}
|
|
325
372
|
/**
|
|
@@ -727,13 +774,15 @@ function synchronizeLayoutWithChildren(initialLayout
|
|
|
727
774
|
if (g) {
|
|
728
775
|
if (!isProduction) {
|
|
729
776
|
validateLayout([g], "ReactGridLayout.children");
|
|
730
|
-
}
|
|
777
|
+
} // FIXME clone not really necessary here
|
|
778
|
+
|
|
731
779
|
|
|
732
780
|
layout[i] = cloneLayoutItem(_objectSpread(_objectSpread({}, g), {}, {
|
|
733
781
|
i: child.key
|
|
734
782
|
}));
|
|
735
783
|
} else {
|
|
736
784
|
// Nothing provided: ensure this is added to the bottom
|
|
785
|
+
// FIXME clone not really necessary here
|
|
737
786
|
layout[i] = cloneLayoutItem({
|
|
738
787
|
w: 1,
|
|
739
788
|
h: 1,
|