deepsea-components 5.16.9 → 5.16.11
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.
|
@@ -53,9 +53,28 @@ function isTheSameIterable(a, b) {
|
|
|
53
53
|
if (aSet.size !== bSet.size) return false;
|
|
54
54
|
return 0 === aSet.difference(bSet).size;
|
|
55
55
|
}
|
|
56
|
-
function getOrderMap({ prev, orders, keys }) {
|
|
56
|
+
function getOrderMap({ prev, orders, keys, orderPriority }) {
|
|
57
57
|
const orderSet = new Set(orders);
|
|
58
58
|
const orderMap = new Map();
|
|
59
|
+
if (!!prev) {
|
|
60
|
+
const entries = Array.from(prev.entries()).toSorted((a, b)=>orderPriority ? orderPriority(b[1], a[1]) : b[1] - a[1]);
|
|
61
|
+
const newPrev = new Map();
|
|
62
|
+
const newOrders = [
|
|
63
|
+
...orders
|
|
64
|
+
];
|
|
65
|
+
for (const [key, order] of entries){
|
|
66
|
+
if (!keys.includes(key)) continue;
|
|
67
|
+
const index = newOrders.indexOf(order);
|
|
68
|
+
if (index >= 0) {
|
|
69
|
+
newPrev.set(key, order);
|
|
70
|
+
newOrders.length = index;
|
|
71
|
+
} else {
|
|
72
|
+
const newOrder = newOrders.pop();
|
|
73
|
+
newPrev.set(key, newOrder);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
prev = newPrev;
|
|
77
|
+
}
|
|
59
78
|
const newKeys = keys.filter((key)=>{
|
|
60
79
|
if (!prev) return true;
|
|
61
80
|
if (prev.has(key)) {
|
|
@@ -154,6 +173,7 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
154
173
|
const key = keyExtractor ? keyExtractor(item) : item;
|
|
155
174
|
keyToItem.set(key, item);
|
|
156
175
|
});
|
|
176
|
+
console.log(keyToItem);
|
|
157
177
|
return keyToItem;
|
|
158
178
|
}, [
|
|
159
179
|
items,
|
|
@@ -176,7 +196,8 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
176
196
|
const newOrderMap = getOrderMap({
|
|
177
197
|
prev: void 0,
|
|
178
198
|
orders: orders_0,
|
|
179
|
-
keys: Array.from(keyToItem_0.keys())
|
|
199
|
+
keys: Array.from(keyToItem_0.keys()),
|
|
200
|
+
orderPriority
|
|
180
201
|
});
|
|
181
202
|
null == onOrderMapChange || onOrderMapChange(newOrderMap);
|
|
182
203
|
return newOrderMap;
|
|
@@ -193,7 +214,8 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
193
214
|
const newOrderMap_0 = getOrderMap({
|
|
194
215
|
prev: (null == dragging ? void 0 : dragging.keyToOrder) ?? keyToOrder,
|
|
195
216
|
orders: orders_0,
|
|
196
|
-
keys: cache.keys
|
|
217
|
+
keys: cache.keys,
|
|
218
|
+
orderPriority
|
|
197
219
|
});
|
|
198
220
|
setKeyToOrder(newOrderMap_0);
|
|
199
221
|
null == onOrderMapChange || onOrderMapChange(newOrderMap_0);
|
|
@@ -206,6 +228,7 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
206
228
|
orders_0,
|
|
207
229
|
keyToItem_0,
|
|
208
230
|
keyToOrder,
|
|
231
|
+
orderPriority,
|
|
209
232
|
onOrderMapChange
|
|
210
233
|
]);
|
|
211
234
|
const [renderKeys, setRenderKeys] = (0, external_react_namespaceObject.useState)(()=>new Set(keyToOrder.keys()));
|
|
@@ -359,6 +382,7 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
359
382
|
},
|
|
360
383
|
...rest,
|
|
361
384
|
children: Array.from(renderKeys).map((key_3)=>{
|
|
385
|
+
if (!keyToItem_0.has(key_3)) return;
|
|
362
386
|
const item_0 = keyToItem_0.get(key_3);
|
|
363
387
|
const order_2 = keyToOrder.get(key_3);
|
|
364
388
|
const isDragging = (null == dragging ? void 0 : dragging.key) === key_3;
|
|
@@ -15,9 +15,28 @@ function isTheSameIterable(a, b) {
|
|
|
15
15
|
if (aSet.size !== bSet.size) return false;
|
|
16
16
|
return 0 === aSet.difference(bSet).size;
|
|
17
17
|
}
|
|
18
|
-
function getOrderMap({ prev, orders, keys }) {
|
|
18
|
+
function getOrderMap({ prev, orders, keys, orderPriority }) {
|
|
19
19
|
const orderSet = new Set(orders);
|
|
20
20
|
const orderMap = new Map();
|
|
21
|
+
if (!!prev) {
|
|
22
|
+
const entries = Array.from(prev.entries()).toSorted((a, b)=>orderPriority ? orderPriority(b[1], a[1]) : b[1] - a[1]);
|
|
23
|
+
const newPrev = new Map();
|
|
24
|
+
const newOrders = [
|
|
25
|
+
...orders
|
|
26
|
+
];
|
|
27
|
+
for (const [key, order] of entries){
|
|
28
|
+
if (!keys.includes(key)) continue;
|
|
29
|
+
const index = newOrders.indexOf(order);
|
|
30
|
+
if (index >= 0) {
|
|
31
|
+
newPrev.set(key, order);
|
|
32
|
+
newOrders.length = index;
|
|
33
|
+
} else {
|
|
34
|
+
const newOrder = newOrders.pop();
|
|
35
|
+
newPrev.set(key, newOrder);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
prev = newPrev;
|
|
39
|
+
}
|
|
21
40
|
const newKeys = keys.filter((key)=>{
|
|
22
41
|
if (!prev) return true;
|
|
23
42
|
if (prev.has(key)) {
|
|
@@ -116,6 +135,7 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
116
135
|
const key = keyExtractor ? keyExtractor(item) : item;
|
|
117
136
|
keyToItem.set(key, item);
|
|
118
137
|
});
|
|
138
|
+
console.log(keyToItem);
|
|
119
139
|
return keyToItem;
|
|
120
140
|
}, [
|
|
121
141
|
items,
|
|
@@ -138,7 +158,8 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
138
158
|
const newOrderMap = getOrderMap({
|
|
139
159
|
prev: void 0,
|
|
140
160
|
orders: orders_0,
|
|
141
|
-
keys: Array.from(keyToItem_0.keys())
|
|
161
|
+
keys: Array.from(keyToItem_0.keys()),
|
|
162
|
+
orderPriority
|
|
142
163
|
});
|
|
143
164
|
null == onOrderMapChange || onOrderMapChange(newOrderMap);
|
|
144
165
|
return newOrderMap;
|
|
@@ -155,7 +176,8 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
155
176
|
const newOrderMap_0 = getOrderMap({
|
|
156
177
|
prev: (null == dragging ? void 0 : dragging.keyToOrder) ?? keyToOrder,
|
|
157
178
|
orders: orders_0,
|
|
158
|
-
keys: cache.keys
|
|
179
|
+
keys: cache.keys,
|
|
180
|
+
orderPriority
|
|
159
181
|
});
|
|
160
182
|
setKeyToOrder(newOrderMap_0);
|
|
161
183
|
null == onOrderMapChange || onOrderMapChange(newOrderMap_0);
|
|
@@ -168,6 +190,7 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
168
190
|
orders_0,
|
|
169
191
|
keyToItem_0,
|
|
170
192
|
keyToOrder,
|
|
193
|
+
orderPriority,
|
|
171
194
|
onOrderMapChange
|
|
172
195
|
]);
|
|
173
196
|
const [renderKeys, setRenderKeys] = useState(()=>new Set(keyToOrder.keys()));
|
|
@@ -321,6 +344,7 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
|
|
|
321
344
|
},
|
|
322
345
|
...rest,
|
|
323
346
|
children: Array.from(renderKeys).map((key_3)=>{
|
|
347
|
+
if (!keyToItem_0.has(key_3)) return;
|
|
324
348
|
const item_0 = keyToItem_0.get(key_3);
|
|
325
349
|
const order_2 = keyToOrder.get(key_3);
|
|
326
350
|
const isDragging = (null == dragging ? void 0 : dragging.key) === key_3;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deepsea-components",
|
|
3
|
-
"version": "5.16.
|
|
3
|
+
"version": "5.16.11",
|
|
4
4
|
"description": "格数科技自用组件库",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"echarts": "^5.6.0",
|
|
41
41
|
"hls.js": "^1.6.9",
|
|
42
42
|
"smooth-scrollbar": "^8.8.4",
|
|
43
|
-
"deepsea-tools": "5.
|
|
44
|
-
"soda-hooks": "6.14.
|
|
43
|
+
"deepsea-tools": "5.42.0",
|
|
44
|
+
"soda-hooks": "6.14.4"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"typescript": "^5.9.2"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"scripts": {
|
|
57
57
|
"dev": "rslib build --watch",
|
|
58
58
|
"build": "rslib build",
|
|
59
|
-
"prebuild": "
|
|
59
|
+
"prebuild": "bun scripts/export.ts",
|
|
60
60
|
"lint": "prettier --write ."
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -58,11 +58,32 @@ interface GetOrderMapParams<K extends Key> {
|
|
|
58
58
|
prev?: DraggableGridKeyToOrder<K>
|
|
59
59
|
orders: number[]
|
|
60
60
|
keys: K[]
|
|
61
|
+
orderPriority: ((a: number, b: number) => number) | undefined
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
function getOrderMap<K extends Key>({ prev, orders, keys }: GetOrderMapParams<K>) {
|
|
64
|
+
function getOrderMap<K extends Key>({ prev, orders, keys, orderPriority }: GetOrderMapParams<K>) {
|
|
64
65
|
const orderSet = new Set(orders)
|
|
65
66
|
const orderMap = new Map<K, number>()
|
|
67
|
+
|
|
68
|
+
// 如果 prev 存在,并且继承的 key 中存在溢出的 key
|
|
69
|
+
if (!!prev) {
|
|
70
|
+
const entries = Array.from(prev.entries()).toSorted((a, b) => (orderPriority ? orderPriority(b[1], a[1]) : b[1] - a[1]))
|
|
71
|
+
const newPrev = new Map<K, number>()
|
|
72
|
+
const newOrders = [...orders]
|
|
73
|
+
for (const [key, order] of entries) {
|
|
74
|
+
if (!keys.includes(key)) continue
|
|
75
|
+
const index = newOrders.indexOf(order)
|
|
76
|
+
if (index >= 0) {
|
|
77
|
+
newPrev.set(key, order)
|
|
78
|
+
newOrders.length = index
|
|
79
|
+
} else {
|
|
80
|
+
const newOrder = newOrders.pop()!
|
|
81
|
+
newPrev.set(key, newOrder)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
prev = newPrev
|
|
85
|
+
}
|
|
86
|
+
|
|
66
87
|
const newKeys = keys.filter(key => {
|
|
67
88
|
if (!prev) return true
|
|
68
89
|
if (prev.has(key)) {
|
|
@@ -259,6 +280,7 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
|
|
|
259
280
|
const key = keyExtractor ? keyExtractor(item) : (item as unknown as K)
|
|
260
281
|
keyToItem.set(key, item)
|
|
261
282
|
})
|
|
283
|
+
console.log(keyToItem)
|
|
262
284
|
return keyToItem
|
|
263
285
|
}, [items, keyExtractor])
|
|
264
286
|
|
|
@@ -279,7 +301,7 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
|
|
|
279
301
|
/** 元素的 key 到次序的映射 */
|
|
280
302
|
const [keyToOrder, setKeyToOrder] = useState(() => {
|
|
281
303
|
if (orderMap) return orderMap
|
|
282
|
-
const newOrderMap = getOrderMap({ prev: undefined, orders, keys: Array.from(keyToItem.keys()) })
|
|
304
|
+
const newOrderMap = getOrderMap({ prev: undefined, orders, keys: Array.from(keyToItem.keys()), orderPriority })
|
|
283
305
|
onOrderMapChange?.(newOrderMap)
|
|
284
306
|
return newOrderMap
|
|
285
307
|
})
|
|
@@ -296,13 +318,13 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
|
|
|
296
318
|
if (!isTheSameArray(dragging?.orders ?? cache.orders, orders) || !isTheSameIterable(dragging?.keyToOrder.keys() ?? cache.keys, keyToItem.keys())) {
|
|
297
319
|
cache.orders = orders
|
|
298
320
|
cache.keys = Array.from((dragging?.keyToOrder ?? keyToItem).keys())
|
|
299
|
-
const newOrderMap = getOrderMap({ prev: dragging?.keyToOrder ?? keyToOrder, orders, keys: cache.keys })
|
|
321
|
+
const newOrderMap = getOrderMap({ prev: dragging?.keyToOrder ?? keyToOrder, orders, keys: cache.keys, orderPriority })
|
|
300
322
|
setKeyToOrder(newOrderMap)
|
|
301
323
|
onOrderMapChange?.(newOrderMap)
|
|
302
324
|
const newRenderKeys = new Set(newOrderMap.keys())
|
|
303
325
|
setRenderKeys(prev => prev.intersection(newRenderKeys).union(newRenderKeys.difference(prev)))
|
|
304
326
|
}
|
|
305
|
-
}, [dragging, cache, orders, keyToItem, keyToOrder, onOrderMapChange])
|
|
327
|
+
}, [dragging, cache, orders, keyToItem, keyToOrder, orderPriority, onOrderMapChange])
|
|
306
328
|
|
|
307
329
|
/** 渲染的元素的 key,不会随着 keyToOrder 的变化而变化 */
|
|
308
330
|
const [renderKeys, setRenderKeys] = useState(() => new Set(keyToOrder.keys()))
|
|
@@ -462,6 +484,7 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
|
|
|
462
484
|
{...rest}
|
|
463
485
|
>
|
|
464
486
|
{Array.from(renderKeys).map(key => {
|
|
487
|
+
if (!keyToItem.has(key)) return undefined
|
|
465
488
|
const item = keyToItem.get(key)!
|
|
466
489
|
const order = keyToOrder.get(key)!
|
|
467
490
|
const isDragging = dragging?.key === key
|
|
@@ -485,6 +508,7 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
|
|
|
485
508
|
"--z-index": recent.current === key ? 999999 : keyToOrder.get(key),
|
|
486
509
|
}
|
|
487
510
|
) as CSSProperties
|
|
511
|
+
|
|
488
512
|
const children = render ? render(item, { order, isDragging: isDragging }) : (item as ReactNode)
|
|
489
513
|
|
|
490
514
|
return (
|