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.
Files changed (126) hide show
  1. package/dist/LmDrag/LmDrag.d.ts +2 -3
  2. package/dist/LmEditTable/EditTable.d.ts +14 -4
  3. package/dist/LmTable/common/index.d.ts +10 -0
  4. package/dist/LmTable/components/Container/Container.d.ts +18 -0
  5. package/dist/LmTable/components/Container/index.d.ts +2 -0
  6. package/dist/LmTable/components/DndContainer.d.ts +37 -5
  7. package/dist/LmTable/components/HeaderCol.d.ts +1 -0
  8. package/dist/LmTable/components/Item/Item.d.ts +37 -0
  9. package/dist/LmTable/components/Item/components/Action/Action.d.ts +10 -0
  10. package/dist/LmTable/components/Item/components/Action/index.d.ts +2 -0
  11. package/dist/LmTable/components/Item/components/Handle/index.d.ts +4 -0
  12. package/dist/LmTable/components/Item/components/Remove/index.d.ts +2 -0
  13. package/dist/LmTable/components/Item/components/index.d.ts +3 -0
  14. package/dist/LmTable/components/Item/index.d.ts +2 -0
  15. package/dist/LmTable/components/{sortableBoxCol.d.ts → SortableBox.d.ts} +0 -0
  16. package/dist/LmTable/demos/{excelGroup.d.ts → draggable.d.ts} +0 -0
  17. package/dist/LmTable/hooks/useDndItems.d.ts +13 -0
  18. package/dist/LmTable/multipleContainersKeyboardCoordinates.d.ts +3 -0
  19. package/dist/LmTable/testDemos/group.d.ts +2 -0
  20. package/dist/LmUpload/fns/index.d.ts +1 -0
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.umd.css +367 -0
  23. package/dist/index.umd.js +1775 -51950
  24. package/dist/index.umd.min.css +1 -1
  25. package/dist/index.umd.min.js +23 -47
  26. package/dist/variables.css +10 -2
  27. package/es/LmDrag/LmDrag.d.ts +2 -3
  28. package/es/LmEditTable/EditTable.d.ts +14 -4
  29. package/es/LmEditTable/EditTable.js +78 -54
  30. package/es/LmFilter/components/DropdownFIlter.js +26 -5
  31. package/es/LmFilter/style/index.css +9 -0
  32. package/es/LmFilter/style/variables.css +9 -0
  33. package/es/LmTable/Table.js +132 -125
  34. package/es/LmTable/common/index.d.ts +10 -0
  35. package/es/LmTable/common/index.js +38 -0
  36. package/es/LmTable/components/Container/Container.css +87 -0
  37. package/es/LmTable/components/Container/Container.d.ts +18 -0
  38. package/es/LmTable/components/Container/Container.js +48 -0
  39. package/es/LmTable/components/Container/index.d.ts +2 -0
  40. package/es/LmTable/components/Container/index.js +1 -0
  41. package/es/LmTable/components/DndContainer.d.ts +37 -5
  42. package/es/LmTable/components/DndContainer.js +699 -24
  43. package/es/LmTable/components/DndContainer.module.css +6 -0
  44. package/es/LmTable/components/HeaderCol.js +46 -0
  45. package/es/LmTable/components/Item/Item.css +113 -0
  46. package/es/LmTable/components/Item/Item.d.ts +37 -0
  47. package/es/LmTable/components/Item/Item.js +88 -0
  48. package/es/LmTable/components/Item/components/Action/Action.css +41 -0
  49. package/es/LmTable/components/Item/components/Action/Action.d.ts +10 -0
  50. package/es/LmTable/components/Item/components/Action/Action.js +35 -0
  51. package/es/LmTable/components/Item/components/Action/index.d.ts +2 -0
  52. package/es/LmTable/components/Item/components/Action/index.js +1 -0
  53. package/es/LmTable/components/Item/components/Handle/index.d.ts +4 -0
  54. package/es/LmTable/components/Item/components/Handle/index.js +15 -0
  55. package/es/LmTable/components/Item/components/Remove/index.d.ts +2 -0
  56. package/es/LmTable/components/Item/components/Remove/index.js +16 -0
  57. package/es/LmTable/components/Item/components/index.d.ts +3 -0
  58. package/es/LmTable/components/Item/components/index.js +3 -0
  59. package/es/LmTable/components/Item/index.d.ts +2 -0
  60. package/es/LmTable/components/Item/index.js +2 -0
  61. package/es/LmTable/components/{sortableBoxCol.js → SortableBox.js} +0 -0
  62. package/es/LmTable/hooks/useDndItems.d.ts +13 -0
  63. package/es/LmTable/hooks/useDndItems.js +156 -0
  64. package/es/LmTable/multipleContainersKeyboardCoordinates.d.ts +3 -0
  65. package/es/LmTable/multipleContainersKeyboardCoordinates.js +117 -0
  66. package/es/LmTable/style/index.css +1 -2
  67. package/es/LmTable/style/variables.css +1 -2
  68. package/es/LmTable/testDemos/group.js +131 -0
  69. package/es/LmUpload/UploadList/ItemPictureCard.js +2 -9
  70. package/es/LmUpload/UploadList/index.js +3 -6
  71. package/es/LmUpload/fns/index.d.ts +1 -0
  72. package/es/LmUpload/fns/index.js +17 -2
  73. package/es/index.d.ts +1 -0
  74. package/es/styles/variables.css +10 -2
  75. package/lib/LmDrag/LmDrag.d.ts +2 -3
  76. package/lib/LmEditTable/EditTable.d.ts +14 -4
  77. package/lib/LmEditTable/EditTable.js +77 -53
  78. package/lib/LmFilter/components/DropdownFIlter.js +26 -5
  79. package/lib/LmFilter/style/index.css +9 -0
  80. package/lib/LmFilter/style/variables.css +9 -0
  81. package/lib/LmTable/Table.js +132 -125
  82. package/lib/LmTable/common/index.d.ts +10 -0
  83. package/lib/LmTable/common/index.js +48 -0
  84. package/lib/LmTable/components/Container/Container.css +87 -0
  85. package/lib/LmTable/components/Container/Container.d.ts +18 -0
  86. package/lib/LmTable/components/Container/Container.js +62 -0
  87. package/lib/LmTable/components/Container/index.d.ts +2 -0
  88. package/lib/LmTable/components/Container/index.js +13 -0
  89. package/lib/LmTable/components/DndContainer.d.ts +37 -5
  90. package/lib/LmTable/components/DndContainer.js +709 -26
  91. package/lib/LmTable/components/DndContainer.module.css +6 -0
  92. package/lib/LmTable/components/HeaderCol.js +46 -0
  93. package/lib/LmTable/components/Item/Item.css +113 -0
  94. package/lib/LmTable/components/Item/Item.d.ts +37 -0
  95. package/lib/LmTable/components/Item/Item.js +104 -0
  96. package/lib/LmTable/components/Item/components/Action/Action.css +41 -0
  97. package/lib/LmTable/components/Item/components/Action/Action.d.ts +10 -0
  98. package/lib/LmTable/components/Item/components/Action/Action.js +50 -0
  99. package/lib/LmTable/components/Item/components/Action/index.d.ts +2 -0
  100. package/lib/LmTable/components/Item/components/Action/index.js +13 -0
  101. package/lib/LmTable/components/Item/components/Handle/index.d.ts +4 -0
  102. package/lib/LmTable/components/Item/components/Handle/index.js +27 -0
  103. package/lib/LmTable/components/Item/components/Remove/index.d.ts +2 -0
  104. package/lib/LmTable/components/Item/components/Remove/index.js +27 -0
  105. package/lib/LmTable/components/Item/components/index.d.ts +3 -0
  106. package/lib/LmTable/components/Item/components/index.js +31 -0
  107. package/lib/LmTable/components/Item/index.d.ts +2 -0
  108. package/lib/LmTable/components/Item/index.js +33 -0
  109. package/lib/LmTable/components/{sortableBoxCol.js → SortableBox.js} +0 -0
  110. package/lib/LmTable/hooks/useDndItems.d.ts +13 -0
  111. package/lib/LmTable/hooks/useDndItems.js +168 -0
  112. package/lib/LmTable/multipleContainersKeyboardCoordinates.d.ts +3 -0
  113. package/lib/LmTable/multipleContainersKeyboardCoordinates.js +126 -0
  114. package/lib/LmTable/style/index.css +1 -2
  115. package/lib/LmTable/style/variables.css +1 -2
  116. package/lib/LmTable/testDemos/group.js +131 -0
  117. package/lib/LmUpload/UploadList/ItemPictureCard.js +2 -9
  118. package/lib/LmUpload/UploadList/index.js +3 -6
  119. package/lib/LmUpload/fns/index.d.ts +1 -0
  120. package/lib/LmUpload/fns/index.js +17 -2
  121. package/lib/index.d.ts +1 -0
  122. package/lib/styles/variables.css +10 -2
  123. package/package.json +4 -4
  124. package/dist/LmTable/components/sortableItemCol.d.ts +0 -1
  125. package/es/LmTable/components/sortableItemCol.js +0 -56
  126. 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.default = void 0;
10
+ exports.TRASH_ID = void 0;
11
+ exports.default = DndContainer;
9
12
 
10
- var _core = require("@dnd-kit/core");
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 _modifiers = require("@dnd-kit/modifiers");
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 _react = _interopRequireDefault(require("react"));
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
- var DndContainer = function DndContainer(_ref) {
20
- var children = _ref.children,
21
- move = _ref.move;
22
- var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor), (0, _core.useSensor)(_core.KeyboardSensor, {
23
- coordinateGetter: _sortable.sortableKeyboardCoordinates
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
- var handleDragEnd = function handleDragEnd(event) {
27
- var active = event.active,
28
- over = event.over; // 未移入时触发
81
+ if (_value === undefined) {
82
+ continue;
83
+ }
29
84
 
30
- if (!(over === null || over === void 0 ? void 0 : over.id)) {
31
- return;
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 (active.id !== over.id) {
36
- move(active.id, over.id);
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: _core.closestCenter,
43
- onDragEnd: handleDragEnd,
44
- modifiers: [_modifiers.restrictToParentElement]
45
- }, children);
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
- var _default = DndContainer;
49
- exports.default = _default;
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
+ }