linkmore-design 1.1.21 → 1.1.22-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LmDrag/LmDrag.d.ts +2 -3
- package/dist/LmEditTable/EditTable.d.ts +14 -4
- package/dist/LmTable/common/index.d.ts +10 -0
- package/dist/LmTable/components/Container/Container.d.ts +18 -0
- package/dist/LmTable/components/Container/index.d.ts +2 -0
- package/dist/LmTable/components/DndContainer.d.ts +37 -5
- package/dist/LmTable/components/HeaderCol.d.ts +1 -0
- package/dist/LmTable/components/Item/Item.d.ts +37 -0
- package/dist/LmTable/components/Item/components/Action/Action.d.ts +10 -0
- package/dist/LmTable/components/Item/components/Action/index.d.ts +2 -0
- package/dist/LmTable/components/Item/components/Handle/index.d.ts +4 -0
- package/dist/LmTable/components/Item/components/Remove/index.d.ts +2 -0
- package/dist/LmTable/components/Item/components/index.d.ts +3 -0
- package/dist/LmTable/components/Item/index.d.ts +2 -0
- package/dist/LmTable/components/{sortableBoxCol.d.ts → SortableBox.d.ts} +0 -0
- package/dist/LmTable/demos/{excelGroup.d.ts → draggable.d.ts} +0 -0
- package/dist/LmTable/hooks/useDndItems.d.ts +13 -0
- package/dist/LmTable/multipleContainersKeyboardCoordinates.d.ts +3 -0
- package/dist/LmTable/testDemos/group.d.ts +2 -0
- package/dist/LmUpload/fns/index.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.umd.css +367 -0
- package/dist/index.umd.js +1775 -51950
- package/dist/index.umd.min.css +1 -1
- package/dist/index.umd.min.js +23 -47
- package/dist/variables.css +10 -2
- package/es/LmDrag/LmDrag.d.ts +2 -3
- package/es/LmEditTable/EditTable.d.ts +14 -4
- package/es/LmEditTable/EditTable.js +78 -54
- package/es/LmFilter/components/DropdownFIlter.js +26 -5
- package/es/LmFilter/style/index.css +9 -0
- package/es/LmFilter/style/variables.css +9 -0
- package/es/LmTable/Table.js +132 -125
- package/es/LmTable/common/index.d.ts +10 -0
- package/es/LmTable/common/index.js +38 -0
- package/es/LmTable/components/Container/Container.css +87 -0
- package/es/LmTable/components/Container/Container.d.ts +18 -0
- package/es/LmTable/components/Container/Container.js +48 -0
- package/es/LmTable/components/Container/index.d.ts +2 -0
- package/es/LmTable/components/Container/index.js +1 -0
- package/es/LmTable/components/DndContainer.d.ts +37 -5
- package/es/LmTable/components/DndContainer.js +699 -24
- package/es/LmTable/components/DndContainer.module.css +6 -0
- package/es/LmTable/components/HeaderCol.js +46 -0
- package/es/LmTable/components/Item/Item.css +113 -0
- package/es/LmTable/components/Item/Item.d.ts +37 -0
- package/es/LmTable/components/Item/Item.js +88 -0
- package/es/LmTable/components/Item/components/Action/Action.css +41 -0
- package/es/LmTable/components/Item/components/Action/Action.d.ts +10 -0
- package/es/LmTable/components/Item/components/Action/Action.js +35 -0
- package/es/LmTable/components/Item/components/Action/index.d.ts +2 -0
- package/es/LmTable/components/Item/components/Action/index.js +1 -0
- package/es/LmTable/components/Item/components/Handle/index.d.ts +4 -0
- package/es/LmTable/components/Item/components/Handle/index.js +15 -0
- package/es/LmTable/components/Item/components/Remove/index.d.ts +2 -0
- package/es/LmTable/components/Item/components/Remove/index.js +16 -0
- package/es/LmTable/components/Item/components/index.d.ts +3 -0
- package/es/LmTable/components/Item/components/index.js +3 -0
- package/es/LmTable/components/Item/index.d.ts +2 -0
- package/es/LmTable/components/Item/index.js +2 -0
- package/es/LmTable/components/{sortableBoxCol.js → SortableBox.js} +0 -0
- package/es/LmTable/hooks/useDndItems.d.ts +13 -0
- package/es/LmTable/hooks/useDndItems.js +156 -0
- package/es/LmTable/multipleContainersKeyboardCoordinates.d.ts +3 -0
- package/es/LmTable/multipleContainersKeyboardCoordinates.js +117 -0
- package/es/LmTable/style/index.css +1 -2
- package/es/LmTable/style/variables.css +1 -2
- package/es/LmTable/testDemos/group.js +131 -0
- package/es/LmUpload/UploadList/ItemPictureCard.js +2 -9
- package/es/LmUpload/UploadList/index.js +3 -6
- package/es/LmUpload/fns/index.d.ts +1 -0
- package/es/LmUpload/fns/index.js +17 -2
- package/es/index.d.ts +1 -0
- package/es/styles/variables.css +10 -2
- package/lib/LmDrag/LmDrag.d.ts +2 -3
- package/lib/LmEditTable/EditTable.d.ts +14 -4
- package/lib/LmEditTable/EditTable.js +77 -53
- package/lib/LmFilter/components/DropdownFIlter.js +26 -5
- package/lib/LmFilter/style/index.css +9 -0
- package/lib/LmFilter/style/variables.css +9 -0
- package/lib/LmTable/Table.js +132 -125
- package/lib/LmTable/common/index.d.ts +10 -0
- package/lib/LmTable/common/index.js +48 -0
- package/lib/LmTable/components/Container/Container.css +87 -0
- package/lib/LmTable/components/Container/Container.d.ts +18 -0
- package/lib/LmTable/components/Container/Container.js +62 -0
- package/lib/LmTable/components/Container/index.d.ts +2 -0
- package/lib/LmTable/components/Container/index.js +13 -0
- package/lib/LmTable/components/DndContainer.d.ts +37 -5
- package/lib/LmTable/components/DndContainer.js +709 -26
- package/lib/LmTable/components/DndContainer.module.css +6 -0
- package/lib/LmTable/components/HeaderCol.js +46 -0
- package/lib/LmTable/components/Item/Item.css +113 -0
- package/lib/LmTable/components/Item/Item.d.ts +37 -0
- package/lib/LmTable/components/Item/Item.js +104 -0
- package/lib/LmTable/components/Item/components/Action/Action.css +41 -0
- package/lib/LmTable/components/Item/components/Action/Action.d.ts +10 -0
- package/lib/LmTable/components/Item/components/Action/Action.js +50 -0
- package/lib/LmTable/components/Item/components/Action/index.d.ts +2 -0
- package/lib/LmTable/components/Item/components/Action/index.js +13 -0
- package/lib/LmTable/components/Item/components/Handle/index.d.ts +4 -0
- package/lib/LmTable/components/Item/components/Handle/index.js +27 -0
- package/lib/LmTable/components/Item/components/Remove/index.d.ts +2 -0
- package/lib/LmTable/components/Item/components/Remove/index.js +27 -0
- package/lib/LmTable/components/Item/components/index.d.ts +3 -0
- package/lib/LmTable/components/Item/components/index.js +31 -0
- package/lib/LmTable/components/Item/index.d.ts +2 -0
- package/lib/LmTable/components/Item/index.js +33 -0
- package/lib/LmTable/components/{sortableBoxCol.js → SortableBox.js} +0 -0
- package/lib/LmTable/hooks/useDndItems.d.ts +13 -0
- package/lib/LmTable/hooks/useDndItems.js +168 -0
- package/lib/LmTable/multipleContainersKeyboardCoordinates.d.ts +3 -0
- package/lib/LmTable/multipleContainersKeyboardCoordinates.js +126 -0
- package/lib/LmTable/style/index.css +1 -2
- package/lib/LmTable/style/variables.css +1 -2
- package/lib/LmTable/testDemos/group.js +131 -0
- package/lib/LmUpload/UploadList/ItemPictureCard.js +2 -9
- package/lib/LmUpload/UploadList/index.js +3 -6
- package/lib/LmUpload/fns/index.d.ts +1 -0
- package/lib/LmUpload/fns/index.js +17 -2
- package/lib/index.d.ts +1 -0
- package/lib/styles/variables.css +10 -2
- package/package.json +4 -4
- package/dist/LmTable/components/sortableItemCol.d.ts +0 -1
- package/es/LmTable/components/sortableItemCol.js +0 -56
- package/lib/LmTable/components/sortableItemCol.js +0 -56
|
@@ -1,49 +1,732 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
3
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
6
|
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
8
|
-
exports.
|
|
10
|
+
exports.TRASH_ID = void 0;
|
|
11
|
+
exports.default = DndContainer;
|
|
9
12
|
|
|
10
|
-
var
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
|
|
15
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
16
|
+
|
|
17
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
18
|
|
|
12
|
-
var
|
|
19
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
20
|
+
|
|
21
|
+
var _reactDom = require("react-dom");
|
|
22
|
+
|
|
23
|
+
var _core = require("@dnd-kit/core");
|
|
13
24
|
|
|
14
25
|
var _sortable = require("@dnd-kit/sortable");
|
|
15
26
|
|
|
16
|
-
var
|
|
27
|
+
var _utilities = require("@dnd-kit/utilities");
|
|
28
|
+
|
|
29
|
+
var _multipleContainersKeyboardCoordinates = _interopRequireDefault(require("../multipleContainersKeyboardCoordinates"));
|
|
30
|
+
|
|
31
|
+
var _Item = require("./Item");
|
|
32
|
+
|
|
33
|
+
var _Container = require("./Container");
|
|
34
|
+
|
|
35
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
36
|
+
|
|
37
|
+
require("./DndContainer.module.css");
|
|
38
|
+
|
|
39
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
40
|
+
var t = {};
|
|
41
|
+
|
|
42
|
+
for (var p in s) {
|
|
43
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
44
|
+
}
|
|
17
45
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
46
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
47
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
48
|
+
}
|
|
49
|
+
return t;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var defaultDropAnimationSideEffects = function defaultDropAnimationSideEffects(options) {
|
|
53
|
+
return function (_ref) {
|
|
54
|
+
var active = _ref.active,
|
|
55
|
+
dragOverlay = _ref.dragOverlay;
|
|
56
|
+
var originalStyles = {};
|
|
57
|
+
var styles = options.styles,
|
|
58
|
+
className = options.className;
|
|
59
|
+
|
|
60
|
+
if (styles === null || styles === void 0 ? void 0 : styles.active) {
|
|
61
|
+
for (var _i = 0, _Object$entries = Object.entries(styles.active); _i < _Object$entries.length; _i++) {
|
|
62
|
+
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
63
|
+
key = _Object$entries$_i[0],
|
|
64
|
+
value = _Object$entries$_i[1];
|
|
65
|
+
|
|
66
|
+
if (value === undefined) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
originalStyles[key] = active.node.style.getPropertyValue(key);
|
|
71
|
+
active.node.style.setProperty(key, value);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (styles === null || styles === void 0 ? void 0 : styles.dragOverlay) {
|
|
76
|
+
for (var _i2 = 0, _Object$entries2 = Object.entries(styles.dragOverlay); _i2 < _Object$entries2.length; _i2++) {
|
|
77
|
+
var _Object$entries2$_i = (0, _slicedToArray2.default)(_Object$entries2[_i2], 2),
|
|
78
|
+
_key = _Object$entries2$_i[0],
|
|
79
|
+
_value = _Object$entries2$_i[1];
|
|
25
80
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
81
|
+
if (_value === undefined) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
29
84
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
85
|
+
dragOverlay.node.style.setProperty(_key, _value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
33
88
|
|
|
89
|
+
if (className === null || className === void 0 ? void 0 : className.active) {
|
|
90
|
+
active.node.classList.add(className.active);
|
|
91
|
+
}
|
|
34
92
|
|
|
35
|
-
if (
|
|
36
|
-
|
|
93
|
+
if (className === null || className === void 0 ? void 0 : className.dragOverlay) {
|
|
94
|
+
dragOverlay.node.classList.add(className.dragOverlay);
|
|
37
95
|
}
|
|
96
|
+
|
|
97
|
+
return function cleanup() {
|
|
98
|
+
for (var _i3 = 0, _Object$entries3 = Object.entries(originalStyles); _i3 < _Object$entries3.length; _i3++) {
|
|
99
|
+
var _Object$entries3$_i = (0, _slicedToArray2.default)(_Object$entries3[_i3], 2),
|
|
100
|
+
_key2 = _Object$entries3$_i[0],
|
|
101
|
+
_value2 = _Object$entries3$_i[1];
|
|
102
|
+
|
|
103
|
+
active.node.style.setProperty(_key2, _value2);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (className === null || className === void 0 ? void 0 : className.active) {
|
|
107
|
+
active.node.classList.remove(className.active);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
38
110
|
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var animateLayoutChanges = function animateLayoutChanges(args) {
|
|
114
|
+
return (0, _sortable.defaultAnimateLayoutChanges)(Object.assign(Object.assign({}, args), {
|
|
115
|
+
wasDragging: true
|
|
116
|
+
}));
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
function DroppableContainer(_a) {
|
|
120
|
+
var _b;
|
|
121
|
+
|
|
122
|
+
var children = _a.children,
|
|
123
|
+
_a$columns = _a.columns,
|
|
124
|
+
columns = _a$columns === void 0 ? 1 : _a$columns,
|
|
125
|
+
disabled = _a.disabled,
|
|
126
|
+
id = _a.id,
|
|
127
|
+
items = _a.items,
|
|
128
|
+
style = _a.style,
|
|
129
|
+
props = __rest(_a, ["children", "columns", "disabled", "id", "items", "style"]);
|
|
130
|
+
|
|
131
|
+
var _useSortable = (0, _sortable.useSortable)({
|
|
132
|
+
id: id,
|
|
133
|
+
data: {
|
|
134
|
+
type: 'container',
|
|
135
|
+
children: items
|
|
136
|
+
},
|
|
137
|
+
animateLayoutChanges: animateLayoutChanges
|
|
138
|
+
}),
|
|
139
|
+
active = _useSortable.active,
|
|
140
|
+
attributes = _useSortable.attributes,
|
|
141
|
+
isDragging = _useSortable.isDragging,
|
|
142
|
+
listeners = _useSortable.listeners,
|
|
143
|
+
over = _useSortable.over,
|
|
144
|
+
setNodeRef = _useSortable.setNodeRef,
|
|
145
|
+
transition = _useSortable.transition,
|
|
146
|
+
transform = _useSortable.transform;
|
|
147
|
+
|
|
148
|
+
var isOverContainer = over ? id === over.id && ((_b = active === null || active === void 0 ? void 0 : active.data.current) === null || _b === void 0 ? void 0 : _b.type) !== 'container' || items.includes(over.id) : false;
|
|
149
|
+
return /*#__PURE__*/_react.default.createElement(_Container.Container, Object.assign({
|
|
150
|
+
ref: disabled ? undefined : setNodeRef,
|
|
151
|
+
style: Object.assign(Object.assign({}, style), {
|
|
152
|
+
transition: transition,
|
|
153
|
+
transform: _utilities.CSS.Translate.toString(transform),
|
|
154
|
+
opacity: isDragging ? 0.5 : undefined
|
|
155
|
+
}),
|
|
156
|
+
hover: isOverContainer,
|
|
157
|
+
handleProps: Object.assign(Object.assign({}, attributes), listeners),
|
|
158
|
+
columns: columns
|
|
159
|
+
}, props), children);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
var dropAnimation = {
|
|
163
|
+
sideEffects: defaultDropAnimationSideEffects({
|
|
164
|
+
styles: {
|
|
165
|
+
active: {
|
|
166
|
+
opacity: '0.5'
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
};
|
|
171
|
+
var TRASH_ID = 'void';
|
|
172
|
+
exports.TRASH_ID = TRASH_ID;
|
|
173
|
+
var PLACEHOLDER_ID = 'placeholder'; // const empty: UniqueIdentifier[] = [];
|
|
174
|
+
|
|
175
|
+
function DndContainer(_ref2) {
|
|
176
|
+
var _ref2$adjustScale = _ref2.adjustScale,
|
|
177
|
+
adjustScale = _ref2$adjustScale === void 0 ? false : _ref2$adjustScale,
|
|
178
|
+
_ref2$itemCount = _ref2.itemCount,
|
|
179
|
+
itemCount = _ref2$itemCount === void 0 ? 3 : _ref2$itemCount,
|
|
180
|
+
cancelDrop = _ref2.cancelDrop,
|
|
181
|
+
columns = _ref2.columns,
|
|
182
|
+
_ref2$handle = _ref2.handle,
|
|
183
|
+
handle = _ref2$handle === void 0 ? false : _ref2$handle,
|
|
184
|
+
initialItems = _ref2.items,
|
|
185
|
+
containerStyle = _ref2.containerStyle,
|
|
186
|
+
_ref2$coordinateGette = _ref2.coordinateGetter,
|
|
187
|
+
coordinateGetter = _ref2$coordinateGette === void 0 ? _multipleContainersKeyboardCoordinates.default : _ref2$coordinateGette,
|
|
188
|
+
_ref2$getItemStyles = _ref2.getItemStyles,
|
|
189
|
+
getItemStyles = _ref2$getItemStyles === void 0 ? function () {
|
|
190
|
+
return {};
|
|
191
|
+
} : _ref2$getItemStyles,
|
|
192
|
+
_ref2$wrapperStyle = _ref2.wrapperStyle,
|
|
193
|
+
wrapperStyle = _ref2$wrapperStyle === void 0 ? function () {
|
|
194
|
+
return {};
|
|
195
|
+
} : _ref2$wrapperStyle,
|
|
196
|
+
modifiers = _ref2.modifiers,
|
|
197
|
+
renderItem = _ref2.renderItem,
|
|
198
|
+
_ref2$trashable = _ref2.trashable,
|
|
199
|
+
trashable = _ref2$trashable === void 0 ? false : _ref2$trashable,
|
|
200
|
+
scrollable = _ref2.scrollable,
|
|
201
|
+
children = _ref2.children,
|
|
202
|
+
_ref2$updateItems = _ref2.updateItems,
|
|
203
|
+
updateItems = _ref2$updateItems === void 0 ? function () {
|
|
204
|
+
return {};
|
|
205
|
+
} : _ref2$updateItems,
|
|
206
|
+
_ref2$rowGroupTitle = _ref2.rowGroupTitle,
|
|
207
|
+
rowGroupTitle = _ref2$rowGroupTitle === void 0 ? '行分组' : _ref2$rowGroupTitle,
|
|
208
|
+
_ref2$colGroupTitle = _ref2.colGroupTitle,
|
|
209
|
+
colGroupTitle = _ref2$colGroupTitle === void 0 ? '列分组' : _ref2$colGroupTitle;
|
|
210
|
+
|
|
211
|
+
var _useState = (0, _react.useState)(function () {
|
|
212
|
+
return initialItems;
|
|
213
|
+
}),
|
|
214
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
215
|
+
items = _useState2[0],
|
|
216
|
+
setItems = _useState2[1];
|
|
217
|
+
|
|
218
|
+
(0, _react.useEffect)(function () {
|
|
219
|
+
setItems(initialItems);
|
|
220
|
+
}, [initialItems]);
|
|
221
|
+
|
|
222
|
+
var _useState3 = (0, _react.useState)(Object.keys(items)),
|
|
223
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
224
|
+
containers = _useState4[0],
|
|
225
|
+
setContainers = _useState4[1];
|
|
226
|
+
|
|
227
|
+
var _useState5 = (0, _react.useState)(null),
|
|
228
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
229
|
+
activeId = _useState6[0],
|
|
230
|
+
setActiveId = _useState6[1];
|
|
231
|
+
|
|
232
|
+
var lastOverId = (0, _react.useRef)(null); // 是否移动到新容器
|
|
233
|
+
|
|
234
|
+
var recentlyMovedToNewContainer = (0, _react.useRef)(false);
|
|
235
|
+
var isSortingContainer = activeId ? containers.includes(activeId) : false; // 执行顺序: onDragStart,collisionDetection,onDragOver,[...collisionDetection],onDragEnd
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Custom collision detection strategy optimized for multiple containers
|
|
239
|
+
* 针对多个容器优化的自定义碰撞检测策略
|
|
240
|
+
* - First, find any droppable containers intersecting with the pointer.
|
|
241
|
+
* - If there are none, find intersecting containers with the active draggable.
|
|
242
|
+
* - If there are no intersecting containers, return the last matched intersection
|
|
243
|
+
* 1.首先,找到与指针相交的任何可放置容器。2.如果没有,则查找具有活动可拖动对象的相交容器。3.如果没有交叉容器,则返回最后匹配的交叉
|
|
244
|
+
*/
|
|
245
|
+
|
|
246
|
+
var collisionDetectionStrategy = (0, _react.useCallback)(function (args) {
|
|
247
|
+
var _a;
|
|
248
|
+
|
|
249
|
+
if (activeId && activeId in items) {
|
|
250
|
+
return (0, _core.closestCenter)(Object.assign(Object.assign({}, args), {
|
|
251
|
+
droppableContainers: args.droppableContainers.filter(function (container) {
|
|
252
|
+
return container.id in items;
|
|
253
|
+
})
|
|
254
|
+
}));
|
|
255
|
+
} // Start by finding any intersecting droppable
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
var pointerIntersections = (0, _core.pointerWithin)(args);
|
|
259
|
+
var intersections = pointerIntersections.length > 0 ? // If there are droppables intersecting with the pointer, return those
|
|
260
|
+
pointerIntersections : (0, _core.rectIntersection)(args);
|
|
261
|
+
var overId = (0, _core.getFirstCollision)(intersections, 'id');
|
|
262
|
+
|
|
263
|
+
if (overId != null) {
|
|
264
|
+
if (overId === TRASH_ID) {
|
|
265
|
+
// If the intersecting droppable is the trash, return early
|
|
266
|
+
// Remove this if you're not using trashable functionality in your app
|
|
267
|
+
return intersections;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
if (overId in items) {
|
|
271
|
+
var containerItems = items[overId]; // If a container is matched and it contains items (columns 'A', 'B', 'C')
|
|
272
|
+
|
|
273
|
+
if (containerItems.length > 0) {
|
|
274
|
+
// Return the closest droppable within that container
|
|
275
|
+
overId = (_a = (0, _core.closestCenter)(Object.assign(Object.assign({}, args), {
|
|
276
|
+
droppableContainers: args.droppableContainers.filter(function (container) {
|
|
277
|
+
return container.id !== overId && containerItems.includes(container.id);
|
|
278
|
+
})
|
|
279
|
+
}))[0]) === null || _a === void 0 ? void 0 : _a.id;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
lastOverId.current = overId;
|
|
284
|
+
return [{
|
|
285
|
+
id: overId
|
|
286
|
+
}];
|
|
287
|
+
} // When a draggable item moves to a new container, the layout may shift
|
|
288
|
+
// and the `overId` may become `null`. We manually set the cached `lastOverId`
|
|
289
|
+
// to the id of the draggable item that was moved to the new container, otherwise
|
|
290
|
+
// the previous `overId` will be returned which can cause items to incorrectly shift positions
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
if (recentlyMovedToNewContainer.current) {
|
|
294
|
+
lastOverId.current = activeId;
|
|
295
|
+
} // If no droppable is matched, return the last match
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
return lastOverId.current ? [{
|
|
299
|
+
id: lastOverId.current
|
|
300
|
+
}] : [];
|
|
301
|
+
}, [activeId, items]);
|
|
39
302
|
|
|
303
|
+
var _useState7 = (0, _react.useState)(null),
|
|
304
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
305
|
+
clonedItems = _useState8[0],
|
|
306
|
+
setClonedItems = _useState8[1]; // 传感器
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.MouseSensor), (0, _core.useSensor)(_core.TouchSensor), (0, _core.useSensor)(_core.KeyboardSensor, {
|
|
310
|
+
coordinateGetter: coordinateGetter
|
|
311
|
+
}));
|
|
312
|
+
|
|
313
|
+
var findContainer = function findContainer(id) {
|
|
314
|
+
if (id in items) {
|
|
315
|
+
return id;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
return Object.keys(items).find(function (key) {
|
|
319
|
+
return items[key].includes(id);
|
|
320
|
+
});
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
var getIndex = function getIndex(id) {
|
|
324
|
+
var container = findContainer(id);
|
|
325
|
+
|
|
326
|
+
if (!container) {
|
|
327
|
+
return -1;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
var index = items[container].indexOf(id);
|
|
331
|
+
return index;
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
var onDragCancel = function onDragCancel() {
|
|
335
|
+
if (clonedItems) {
|
|
336
|
+
// Reset items to their original state in case items have been
|
|
337
|
+
// Dragged across containers
|
|
338
|
+
setItems(clonedItems);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
setActiveId(null);
|
|
342
|
+
setClonedItems(null);
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
(0, _react.useEffect)(function () {
|
|
346
|
+
var id = requestAnimationFrame(function () {
|
|
347
|
+
recentlyMovedToNewContainer.current = false;
|
|
348
|
+
});
|
|
349
|
+
return function () {
|
|
350
|
+
return cancelAnimationFrame(id);
|
|
351
|
+
};
|
|
352
|
+
}, [items]);
|
|
353
|
+
var topContainers = containers.filter(function (item) {
|
|
354
|
+
return item !== 'tableHeader';
|
|
355
|
+
});
|
|
356
|
+
var tableContainer = containers.filter(function (item) {
|
|
357
|
+
return item === 'tableHeader';
|
|
358
|
+
})[0];
|
|
40
359
|
return /*#__PURE__*/_react.default.createElement(_core.DndContext, {
|
|
41
360
|
sensors: sensors,
|
|
42
|
-
collisionDetection:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
361
|
+
collisionDetection: collisionDetectionStrategy,
|
|
362
|
+
measuring: {
|
|
363
|
+
droppable: {
|
|
364
|
+
strategy: _core.MeasuringStrategy.Always
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
onDragStart: function onDragStart(_ref3) {
|
|
368
|
+
var active = _ref3.active;
|
|
369
|
+
setActiveId(active.id);
|
|
370
|
+
setClonedItems(items);
|
|
371
|
+
},
|
|
372
|
+
onDragOver: function onDragOver(_ref4) {
|
|
373
|
+
var active = _ref4.active,
|
|
374
|
+
over = _ref4.over;
|
|
375
|
+
var overId = over === null || over === void 0 ? void 0 : over.id;
|
|
376
|
+
|
|
377
|
+
if (overId == null || overId === TRASH_ID || active.id in items) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
var overContainer = findContainer(overId);
|
|
382
|
+
var activeContainer = findContainer(active.id);
|
|
383
|
+
|
|
384
|
+
if (!overContainer || !activeContainer) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
if (activeContainer !== overContainer) {
|
|
389
|
+
setItems(function (items) {
|
|
390
|
+
var _Object$assign;
|
|
391
|
+
|
|
392
|
+
var activeItems = items[activeContainer];
|
|
393
|
+
var overItems = items[overContainer];
|
|
394
|
+
var overIndex = overItems.indexOf(overId);
|
|
395
|
+
var activeIndex = activeItems.indexOf(active.id);
|
|
396
|
+
var newIndex;
|
|
397
|
+
|
|
398
|
+
if (overId in items) {
|
|
399
|
+
newIndex = overItems.length + 1;
|
|
400
|
+
} else {
|
|
401
|
+
// 当前激活的是否在目标下面
|
|
402
|
+
var isBelowOverItem = over && active.rect.current.translated && active.rect.current.translated.top > over.rect.top + over.rect.height;
|
|
403
|
+
var modifier = isBelowOverItem ? 1 : 0;
|
|
404
|
+
newIndex = overIndex >= 0 ? overIndex + modifier : overItems.length + 1;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
recentlyMovedToNewContainer.current = true;
|
|
408
|
+
return Object.assign(Object.assign({}, items), (_Object$assign = {}, (0, _defineProperty2.default)(_Object$assign, activeContainer, items[activeContainer].filter(function (item) {
|
|
409
|
+
return item !== active.id;
|
|
410
|
+
})), (0, _defineProperty2.default)(_Object$assign, overContainer, [].concat((0, _toConsumableArray2.default)(items[overContainer].slice(0, newIndex)), [items[activeContainer][activeIndex]], (0, _toConsumableArray2.default)(items[overContainer].slice(newIndex, items[overContainer].length)))), _Object$assign));
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
onDragEnd: function onDragEnd(_ref5) {
|
|
415
|
+
var active = _ref5.active,
|
|
416
|
+
over = _ref5.over;
|
|
417
|
+
|
|
418
|
+
// 容器拖拽
|
|
419
|
+
if (active.id in items && (over === null || over === void 0 ? void 0 : over.id)) {
|
|
420
|
+
setContainers(function (containers) {
|
|
421
|
+
var activeIndex = containers.indexOf(active.id);
|
|
422
|
+
var overIndex = containers.indexOf(over.id);
|
|
423
|
+
return (0, _sortable.arrayMove)(containers, activeIndex, overIndex);
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
var activeContainer = findContainer(active.id);
|
|
428
|
+
|
|
429
|
+
if (!activeContainer) {
|
|
430
|
+
setActiveId(null);
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
var overId = over === null || over === void 0 ? void 0 : over.id;
|
|
435
|
+
|
|
436
|
+
if (overId == null) {
|
|
437
|
+
setActiveId(null);
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
if (overId === TRASH_ID) {
|
|
442
|
+
console.log('TRASH_ID', overId);
|
|
443
|
+
setItems(function (items) {
|
|
444
|
+
return Object.assign(Object.assign({}, items), (0, _defineProperty2.default)({}, activeContainer, items[activeContainer].filter(function (id) {
|
|
445
|
+
return id !== activeId;
|
|
446
|
+
})));
|
|
447
|
+
});
|
|
448
|
+
setActiveId(null);
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
if (overId === PLACEHOLDER_ID) {
|
|
453
|
+
var newContainerId = getNextContainerId();
|
|
454
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
455
|
+
setContainers(function (containers) {
|
|
456
|
+
return [].concat((0, _toConsumableArray2.default)(containers), [newContainerId]);
|
|
457
|
+
});
|
|
458
|
+
console.log('PLACEHOLDER_ID', overId);
|
|
459
|
+
setItems(function (items) {
|
|
460
|
+
var _Object$assign3;
|
|
461
|
+
|
|
462
|
+
return Object.assign(Object.assign({}, items), (_Object$assign3 = {}, (0, _defineProperty2.default)(_Object$assign3, activeContainer, items[activeContainer].filter(function (id) {
|
|
463
|
+
return id !== activeId;
|
|
464
|
+
})), (0, _defineProperty2.default)(_Object$assign3, newContainerId, [active.id]), _Object$assign3));
|
|
465
|
+
});
|
|
466
|
+
setActiveId(null);
|
|
467
|
+
});
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
var overContainer = findContainer(overId);
|
|
472
|
+
|
|
473
|
+
if (overContainer) {
|
|
474
|
+
var activeIndex = items[activeContainer].indexOf(active.id);
|
|
475
|
+
var overIndex = items[overContainer].indexOf(overId);
|
|
476
|
+
|
|
477
|
+
if (activeIndex !== overIndex) {
|
|
478
|
+
var newItems = Object.assign(Object.assign({}, items), (0, _defineProperty2.default)({}, overContainer, (0, _sortable.arrayMove)(items[overContainer], activeIndex, overIndex)));
|
|
479
|
+
setItems(newItems);
|
|
480
|
+
updateItems(newItems);
|
|
481
|
+
} else {
|
|
482
|
+
updateItems(items);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
setActiveId(null);
|
|
487
|
+
},
|
|
488
|
+
cancelDrop: cancelDrop,
|
|
489
|
+
onDragCancel: onDragCancel,
|
|
490
|
+
modifiers: modifiers
|
|
491
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
492
|
+
style: {
|
|
493
|
+
display: 'flex',
|
|
494
|
+
boxSizing: 'border-box'
|
|
495
|
+
}
|
|
496
|
+
}, topContainers.map(function (containerId) {
|
|
497
|
+
return /*#__PURE__*/_react.default.createElement(DroppableContainer, {
|
|
498
|
+
key: containerId,
|
|
499
|
+
id: containerId,
|
|
500
|
+
label: containerId === 'row' ? rowGroupTitle : colGroupTitle,
|
|
501
|
+
columns: columns,
|
|
502
|
+
items: items[containerId],
|
|
503
|
+
scrollable: true,
|
|
504
|
+
style: containerStyle,
|
|
505
|
+
unstyled: false
|
|
506
|
+
}, /*#__PURE__*/_react.default.createElement(_sortable.SortableContext, {
|
|
507
|
+
items: items[containerId],
|
|
508
|
+
strategy: _sortable.horizontalListSortingStrategy
|
|
509
|
+
}, items[containerId].map(function (value, index) {
|
|
510
|
+
return /*#__PURE__*/_react.default.createElement(SortableItem, {
|
|
511
|
+
disabled: isSortingContainer,
|
|
512
|
+
key: value,
|
|
513
|
+
id: value,
|
|
514
|
+
index: index,
|
|
515
|
+
handle: true,
|
|
516
|
+
style: getItemStyles,
|
|
517
|
+
wrapperStyle: wrapperStyle,
|
|
518
|
+
renderItem: renderItem,
|
|
519
|
+
containerId: containerId,
|
|
520
|
+
getIndex: getIndex,
|
|
521
|
+
onRemove: function onRemove() {
|
|
522
|
+
updateItems(items, value);
|
|
523
|
+
}
|
|
524
|
+
});
|
|
525
|
+
})));
|
|
526
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
527
|
+
className: (0, _classnames.default)('dnd_table_container'),
|
|
528
|
+
style: {
|
|
529
|
+
display: 'flex',
|
|
530
|
+
boxSizing: 'border-box',
|
|
531
|
+
justifyContent: 'column'
|
|
532
|
+
}
|
|
533
|
+
}, /*#__PURE__*/_react.default.createElement(DroppableContainer, {
|
|
534
|
+
key: tableContainer,
|
|
535
|
+
id: tableContainer,
|
|
536
|
+
columns: 1,
|
|
537
|
+
items: items[tableContainer],
|
|
538
|
+
scrollable: scrollable,
|
|
539
|
+
style: containerStyle,
|
|
540
|
+
unstyled: false
|
|
541
|
+
}, /*#__PURE__*/_react.default.createElement(_sortable.SortableContext, {
|
|
542
|
+
items: items[tableContainer],
|
|
543
|
+
strategy: _sortable.horizontalListSortingStrategy
|
|
544
|
+
}, /*#__PURE__*/_react.default.createElement("li", {
|
|
545
|
+
style: {
|
|
546
|
+
width: '100%'
|
|
547
|
+
}
|
|
548
|
+
}, children)))), /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(_core.DragOverlay, {
|
|
549
|
+
adjustScale: adjustScale,
|
|
550
|
+
dropAnimation: dropAnimation
|
|
551
|
+
}, activeId ? containers.includes(activeId) ? renderContainerDragOverlay(activeId) : renderSortableItemDragOverlay(activeId) : null), document.body), trashable && activeId && !containers.includes(activeId) ? /*#__PURE__*/_react.default.createElement(Trash, {
|
|
552
|
+
id: TRASH_ID
|
|
553
|
+
}) : null);
|
|
554
|
+
|
|
555
|
+
function renderSortableItemDragOverlay(id) {
|
|
556
|
+
return /*#__PURE__*/_react.default.createElement(_Item.Item, {
|
|
557
|
+
value: id,
|
|
558
|
+
handle: handle,
|
|
559
|
+
style: getItemStyles({
|
|
560
|
+
containerId: findContainer(id),
|
|
561
|
+
overIndex: -1,
|
|
562
|
+
index: getIndex(id),
|
|
563
|
+
value: id,
|
|
564
|
+
isSorting: true,
|
|
565
|
+
isDragging: true,
|
|
566
|
+
isDragOverlay: true
|
|
567
|
+
}),
|
|
568
|
+
color: getColor(id),
|
|
569
|
+
wrapperStyle: wrapperStyle({
|
|
570
|
+
index: 0
|
|
571
|
+
}),
|
|
572
|
+
renderItem: renderItem,
|
|
573
|
+
dragOverlay: true
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
function renderContainerDragOverlay(containerId) {
|
|
578
|
+
return /*#__PURE__*/_react.default.createElement(_Container.Container, {
|
|
579
|
+
label: "Column ".concat(containerId),
|
|
580
|
+
columns: columns,
|
|
581
|
+
style: {
|
|
582
|
+
height: '100%'
|
|
583
|
+
},
|
|
584
|
+
shadow: true,
|
|
585
|
+
unstyled: false
|
|
586
|
+
}, items[containerId].map(function (item, index) {
|
|
587
|
+
return /*#__PURE__*/_react.default.createElement(_Item.Item, {
|
|
588
|
+
key: item,
|
|
589
|
+
value: item,
|
|
590
|
+
handle: handle,
|
|
591
|
+
style: getItemStyles({
|
|
592
|
+
containerId: containerId,
|
|
593
|
+
overIndex: -1,
|
|
594
|
+
index: getIndex(item),
|
|
595
|
+
value: item,
|
|
596
|
+
isDragging: false,
|
|
597
|
+
isSorting: false,
|
|
598
|
+
isDragOverlay: false
|
|
599
|
+
}),
|
|
600
|
+
color: getColor(item),
|
|
601
|
+
wrapperStyle: wrapperStyle({
|
|
602
|
+
index: index
|
|
603
|
+
}),
|
|
604
|
+
renderItem: renderItem
|
|
605
|
+
});
|
|
606
|
+
}));
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
function getNextContainerId() {
|
|
610
|
+
var containerIds = Object.keys(items);
|
|
611
|
+
var lastContainerId = containerIds[containerIds.length - 1];
|
|
612
|
+
return String.fromCharCode(lastContainerId.charCodeAt(0) + 1);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
function getColor(id) {
|
|
617
|
+
switch (String(id)[0]) {
|
|
618
|
+
case 'A':
|
|
619
|
+
return '#7193f1';
|
|
620
|
+
|
|
621
|
+
case 'B':
|
|
622
|
+
return '#ffda6c';
|
|
623
|
+
|
|
624
|
+
case 'C':
|
|
625
|
+
return '#00bcd4';
|
|
626
|
+
|
|
627
|
+
case 'D':
|
|
628
|
+
return '#ef769f';
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
return undefined;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
function Trash(_ref6) {
|
|
635
|
+
var id = _ref6.id;
|
|
636
|
+
|
|
637
|
+
var _useDroppable = (0, _core.useDroppable)({
|
|
638
|
+
id: id
|
|
639
|
+
}),
|
|
640
|
+
setNodeRef = _useDroppable.setNodeRef,
|
|
641
|
+
isOver = _useDroppable.isOver;
|
|
642
|
+
|
|
643
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
644
|
+
ref: setNodeRef,
|
|
645
|
+
style: {
|
|
646
|
+
display: 'flex',
|
|
647
|
+
alignItems: 'center',
|
|
648
|
+
justifyContent: 'center',
|
|
649
|
+
position: 'fixed',
|
|
650
|
+
left: '50%',
|
|
651
|
+
marginLeft: -150,
|
|
652
|
+
bottom: 20,
|
|
653
|
+
width: 300,
|
|
654
|
+
height: 60,
|
|
655
|
+
borderRadius: 5,
|
|
656
|
+
border: '1px solid',
|
|
657
|
+
borderColor: isOver ? 'red' : '#DDD'
|
|
658
|
+
}
|
|
659
|
+
}, "Drop here to delete");
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
function SortableItem(_ref7) {
|
|
663
|
+
var disabled = _ref7.disabled,
|
|
664
|
+
id = _ref7.id,
|
|
665
|
+
index = _ref7.index,
|
|
666
|
+
handle = _ref7.handle,
|
|
667
|
+
renderItem = _ref7.renderItem,
|
|
668
|
+
style = _ref7.style,
|
|
669
|
+
containerId = _ref7.containerId,
|
|
670
|
+
getIndex = _ref7.getIndex,
|
|
671
|
+
wrapperStyle = _ref7.wrapperStyle,
|
|
672
|
+
onRemove = _ref7.onRemove;
|
|
673
|
+
|
|
674
|
+
var _useSortable2 = (0, _sortable.useSortable)({
|
|
675
|
+
id: id
|
|
676
|
+
}),
|
|
677
|
+
setNodeRef = _useSortable2.setNodeRef,
|
|
678
|
+
listeners = _useSortable2.listeners,
|
|
679
|
+
isDragging = _useSortable2.isDragging,
|
|
680
|
+
isSorting = _useSortable2.isSorting,
|
|
681
|
+
over = _useSortable2.over,
|
|
682
|
+
overIndex = _useSortable2.overIndex,
|
|
683
|
+
transform = _useSortable2.transform,
|
|
684
|
+
transition = _useSortable2.transition;
|
|
685
|
+
|
|
686
|
+
var mounted = useMountStatus();
|
|
687
|
+
var mountedWhileDragging = isDragging && !mounted;
|
|
688
|
+
return /*#__PURE__*/_react.default.createElement(_Item.Item, {
|
|
689
|
+
ref: disabled ? undefined : setNodeRef,
|
|
690
|
+
value: id,
|
|
691
|
+
dragging: isDragging,
|
|
692
|
+
sorting: isSorting,
|
|
693
|
+
handle: handle,
|
|
694
|
+
handleProps: undefined,
|
|
695
|
+
index: index,
|
|
696
|
+
wrapperStyle: wrapperStyle({
|
|
697
|
+
index: index
|
|
698
|
+
}),
|
|
699
|
+
style: style({
|
|
700
|
+
index: index,
|
|
701
|
+
value: id,
|
|
702
|
+
isDragging: isDragging,
|
|
703
|
+
isSorting: isSorting,
|
|
704
|
+
overIndex: over ? getIndex(over.id) : overIndex,
|
|
705
|
+
containerId: containerId
|
|
706
|
+
}),
|
|
707
|
+
color: getColor(id),
|
|
708
|
+
transition: transition,
|
|
709
|
+
transform: transform,
|
|
710
|
+
fadeIn: mountedWhileDragging,
|
|
711
|
+
listeners: listeners,
|
|
712
|
+
renderItem: renderItem,
|
|
713
|
+
onRemove: onRemove
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
function useMountStatus() {
|
|
718
|
+
var _useState9 = (0, _react.useState)(false),
|
|
719
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
720
|
+
isMounted = _useState10[0],
|
|
721
|
+
setIsMounted = _useState10[1];
|
|
47
722
|
|
|
48
|
-
|
|
49
|
-
|
|
723
|
+
(0, _react.useEffect)(function () {
|
|
724
|
+
var timeout = setTimeout(function () {
|
|
725
|
+
return setIsMounted(true);
|
|
726
|
+
}, 500);
|
|
727
|
+
return function () {
|
|
728
|
+
return clearTimeout(timeout);
|
|
729
|
+
};
|
|
730
|
+
}, []);
|
|
731
|
+
return isMounted;
|
|
732
|
+
}
|