deepsea-components 5.16.12 → 5.16.14

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.
@@ -166,6 +166,12 @@ function DraggableGridItem(t0) {
166
166
  } else t3 = $[18];
167
167
  return t3;
168
168
  }
169
+ function isLegalOrderMap({ orders, keys, orderMap }) {
170
+ if (!isTheSameIterable(orderMap.keys(), keys)) return false;
171
+ const values = Array.from(orderMap.values());
172
+ if (values.some((value)=>!orders.includes(value))) return false;
173
+ return values.length === new Set(values).size;
174
+ }
169
175
  function DraggableGrid({ className, classNames, style, items = [], disabled, columns, rows, gap = 0, gapX = gap, gapY = gap, itemWidth, itemHeight, orderMap, onOrderMapChange, render, keyExtractor, isItemDisabled: _isItemDisabled, isOrderDisabled, orderPriority, handle, onDragMoveStart: _onDragMoveStart, onDragMove: _onDragMove, onDragMoveEnd: _onDragMoveEnd, ...rest }) {
170
176
  const keyToItem_0 = (0, external_react_namespaceObject.useMemo)(()=>{
171
177
  const keyToItem = new Map();
@@ -191,9 +197,13 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
191
197
  orderPriority
192
198
  ]);
193
199
  const [keyToOrder, setKeyToOrder] = (0, external_react_namespaceObject.useState)(()=>{
194
- if (orderMap) return orderMap;
200
+ if (orderMap && isLegalOrderMap({
201
+ orders: orders_0,
202
+ keys: keyToItem_0.keys(),
203
+ orderMap
204
+ })) return orderMap;
195
205
  const newOrderMap = getOrderMap({
196
- prev: void 0,
206
+ prev: orderMap,
197
207
  orders: orders_0,
198
208
  keys: Array.from(keyToItem_0.keys()),
199
209
  orderPriority
@@ -255,7 +265,11 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
255
265
  ]);
256
266
  (0, external_react_namespaceObject.useEffect)(()=>{
257
267
  if (orderMap === keyToOrder) return;
258
- if (orderMap) setKeyToOrder(orderMap);
268
+ if (!!orderMap && isLegalOrderMap({
269
+ orders: orders_0,
270
+ keys: keyToItem_0.keys(),
271
+ orderMap
272
+ })) setKeyToOrder(orderMap);
259
273
  else null == onOrderMapChange || onOrderMapChange(keyToOrder);
260
274
  }, [
261
275
  orderMap,
@@ -128,6 +128,12 @@ function DraggableGridItem(t0) {
128
128
  } else t3 = $[18];
129
129
  return t3;
130
130
  }
131
+ function isLegalOrderMap({ orders, keys, orderMap }) {
132
+ if (!isTheSameIterable(orderMap.keys(), keys)) return false;
133
+ const values = Array.from(orderMap.values());
134
+ if (values.some((value)=>!orders.includes(value))) return false;
135
+ return values.length === new Set(values).size;
136
+ }
131
137
  function DraggableGrid({ className, classNames, style, items = [], disabled, columns, rows, gap = 0, gapX = gap, gapY = gap, itemWidth, itemHeight, orderMap, onOrderMapChange, render, keyExtractor, isItemDisabled: _isItemDisabled, isOrderDisabled, orderPriority, handle, onDragMoveStart: _onDragMoveStart, onDragMove: _onDragMove, onDragMoveEnd: _onDragMoveEnd, ...rest }) {
132
138
  const keyToItem_0 = useMemo(()=>{
133
139
  const keyToItem = new Map();
@@ -153,9 +159,13 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
153
159
  orderPriority
154
160
  ]);
155
161
  const [keyToOrder, setKeyToOrder] = useState(()=>{
156
- if (orderMap) return orderMap;
162
+ if (orderMap && isLegalOrderMap({
163
+ orders: orders_0,
164
+ keys: keyToItem_0.keys(),
165
+ orderMap
166
+ })) return orderMap;
157
167
  const newOrderMap = getOrderMap({
158
- prev: void 0,
168
+ prev: orderMap,
159
169
  orders: orders_0,
160
170
  keys: Array.from(keyToItem_0.keys()),
161
171
  orderPriority
@@ -217,7 +227,11 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
217
227
  ]);
218
228
  useEffect(()=>{
219
229
  if (orderMap === keyToOrder) return;
220
- if (orderMap) setKeyToOrder(orderMap);
230
+ if (!!orderMap && isLegalOrderMap({
231
+ orders: orders_0,
232
+ keys: keyToItem_0.keys(),
233
+ orderMap
234
+ })) setKeyToOrder(orderMap);
221
235
  else null == onOrderMapChange || onOrderMapChange(keyToOrder);
222
236
  }, [
223
237
  orderMap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepsea-components",
3
- "version": "5.16.12",
3
+ "version": "5.16.14",
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
- "soda-hooks": "6.14.4",
44
- "deepsea-tools": "5.42.0"
43
+ "deepsea-tools": "5.42.1",
44
+ "soda-hooks": "6.14.5"
45
45
  },
46
46
  "devDependencies": {
47
47
  "typescript": "^5.9.2"
@@ -248,6 +248,20 @@ interface DraggingItem<K extends Key> {
248
248
  keyToOrder: DraggableGridKeyToOrder<K>
249
249
  }
250
250
 
251
+ interface IsLegalOrderMapParams<K extends Key> {
252
+ orders: number[]
253
+ keys: Iterable<K>
254
+ orderMap: DraggableGridKeyToOrder<K>
255
+ }
256
+
257
+ /** 检查 orderMap 是否合法 */
258
+ function isLegalOrderMap<K extends Key>({ orders, keys, orderMap }: IsLegalOrderMapParams<K>) {
259
+ if (!isTheSameIterable(orderMap.keys(), keys)) return false
260
+ const values = Array.from(orderMap.values())
261
+ if (values.some(value => !orders.includes(value))) return false
262
+ return values.length === new Set(values).size
263
+ }
264
+
251
265
  export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
252
266
  className,
253
267
  classNames,
@@ -299,8 +313,8 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
299
313
 
300
314
  /** 元素的 key 到次序的映射 */
301
315
  const [keyToOrder, setKeyToOrder] = useState(() => {
302
- if (orderMap) return orderMap
303
- const newOrderMap = getOrderMap({ prev: undefined, orders, keys: Array.from(keyToItem.keys()), orderPriority })
316
+ if (orderMap && isLegalOrderMap({ orders, keys: keyToItem.keys(), orderMap })) return orderMap
317
+ const newOrderMap = getOrderMap({ prev: orderMap, orders, keys: Array.from(keyToItem.keys()), orderPriority })
304
318
  onOrderMapChange?.(newOrderMap)
305
319
  return newOrderMap
306
320
  })
@@ -354,7 +368,7 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
354
368
  /** 受控 */
355
369
  useEffect(() => {
356
370
  if (orderMap === keyToOrder) return
357
- if (!!orderMap) setKeyToOrder(orderMap)
371
+ if (!!orderMap && isLegalOrderMap({ orders, keys: keyToItem.keys(), orderMap })) setKeyToOrder(orderMap)
358
372
  else onOrderMapChange?.(keyToOrder)
359
373
  }, [orderMap, keyToOrder, onOrderMapChange])
360
374