deepsea-components 5.16.11 → 5.16.13

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();
@@ -173,7 +179,6 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
173
179
  const key = keyExtractor ? keyExtractor(item) : item;
174
180
  keyToItem.set(key, item);
175
181
  });
176
- console.log(keyToItem);
177
182
  return keyToItem;
178
183
  }, [
179
184
  items,
@@ -192,9 +197,13 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
192
197
  orderPriority
193
198
  ]);
194
199
  const [keyToOrder, setKeyToOrder] = (0, external_react_namespaceObject.useState)(()=>{
195
- if (orderMap) return orderMap;
200
+ if (orderMap && isLegalOrderMap({
201
+ orders: orders_0,
202
+ keys: keyToItem_0.keys(),
203
+ orderMap
204
+ })) return orderMap;
196
205
  const newOrderMap = getOrderMap({
197
- prev: void 0,
206
+ prev: orderMap,
198
207
  orders: orders_0,
199
208
  keys: Array.from(keyToItem_0.keys()),
200
209
  orderPriority
@@ -256,7 +265,11 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
256
265
  ]);
257
266
  (0, external_react_namespaceObject.useEffect)(()=>{
258
267
  if (orderMap === keyToOrder) return;
259
- if (orderMap) setKeyToOrder(orderMap);
268
+ if (!!orderMap && isLegalOrderMap({
269
+ orders: orders_0,
270
+ keys: keyToItem_0.keys(),
271
+ orderMap
272
+ })) setKeyToOrder(orderMap);
260
273
  else null == onOrderMapChange || onOrderMapChange(keyToOrder);
261
274
  }, [
262
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();
@@ -135,7 +141,6 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
135
141
  const key = keyExtractor ? keyExtractor(item) : item;
136
142
  keyToItem.set(key, item);
137
143
  });
138
- console.log(keyToItem);
139
144
  return keyToItem;
140
145
  }, [
141
146
  items,
@@ -154,9 +159,13 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
154
159
  orderPriority
155
160
  ]);
156
161
  const [keyToOrder, setKeyToOrder] = useState(()=>{
157
- if (orderMap) return orderMap;
162
+ if (orderMap && isLegalOrderMap({
163
+ orders: orders_0,
164
+ keys: keyToItem_0.keys(),
165
+ orderMap
166
+ })) return orderMap;
158
167
  const newOrderMap = getOrderMap({
159
- prev: void 0,
168
+ prev: orderMap,
160
169
  orders: orders_0,
161
170
  keys: Array.from(keyToItem_0.keys()),
162
171
  orderPriority
@@ -218,7 +227,11 @@ function DraggableGrid({ className, classNames, style, items = [], disabled, col
218
227
  ]);
219
228
  useEffect(()=>{
220
229
  if (orderMap === keyToOrder) return;
221
- if (orderMap) setKeyToOrder(orderMap);
230
+ if (!!orderMap && isLegalOrderMap({
231
+ orders: orders_0,
232
+ keys: keyToItem_0.keys(),
233
+ orderMap
234
+ })) setKeyToOrder(orderMap);
222
235
  else null == onOrderMapChange || onOrderMapChange(keyToOrder);
223
236
  }, [
224
237
  orderMap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepsea-components",
3
- "version": "5.16.11",
3
+ "version": "5.16.13",
4
4
  "description": "格数科技自用组件库",
5
5
  "type": "module",
6
6
  "exports": {
@@ -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,
@@ -280,7 +294,6 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
280
294
  const key = keyExtractor ? keyExtractor(item) : (item as unknown as K)
281
295
  keyToItem.set(key, item)
282
296
  })
283
- console.log(keyToItem)
284
297
  return keyToItem
285
298
  }, [items, keyExtractor])
286
299
 
@@ -300,8 +313,8 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
300
313
 
301
314
  /** 元素的 key 到次序的映射 */
302
315
  const [keyToOrder, setKeyToOrder] = useState(() => {
303
- if (orderMap) return orderMap
304
- 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 })
305
318
  onOrderMapChange?.(newOrderMap)
306
319
  return newOrderMap
307
320
  })
@@ -355,7 +368,7 @@ export function DraggableGrid<T, K extends Key = T extends Key ? T : never>({
355
368
  /** 受控 */
356
369
  useEffect(() => {
357
370
  if (orderMap === keyToOrder) return
358
- if (!!orderMap) setKeyToOrder(orderMap)
371
+ if (!!orderMap && isLegalOrderMap({ orders, keys: keyToItem.keys(), orderMap })) setKeyToOrder(orderMap)
359
372
  else onOrderMapChange?.(keyToOrder)
360
373
  }, [orderMap, keyToOrder, onOrderMapChange])
361
374