@legendapp/list 1.0.0-beta.4 → 1.0.0-beta.6

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/index.d.mts CHANGED
@@ -120,6 +120,7 @@ interface InternalState {
120
120
  bottom: number;
121
121
  } | undefined;
122
122
  enableScrollForNextCalculateItemsInView: boolean;
123
+ minIndexSizeChanged: number | undefined;
123
124
  }
124
125
  interface ViewableRange<T> {
125
126
  startBuffered: number;
package/index.d.ts CHANGED
@@ -120,6 +120,7 @@ interface InternalState {
120
120
  bottom: number;
121
121
  } | undefined;
122
122
  enableScrollForNextCalculateItemsInView: boolean;
123
+ minIndexSizeChanged: number | undefined;
123
124
  }
124
125
  interface ViewableRange<T> {
125
126
  startBuffered: number;
package/index.js CHANGED
@@ -229,7 +229,7 @@ var Container = ({
229
229
  if (isNewArchitecture) {
230
230
  React5.useLayoutEffect(() => {
231
231
  var _a, _b;
232
- if (itemKey) {
232
+ if (itemKey !== void 0) {
233
233
  const measured = (_b = (_a = ref.current) == null ? void 0 : _a.unstable_getBoundingClientRect) == null ? void 0 : _b.call(_a);
234
234
  if (measured) {
235
235
  const size = Math.floor(measured[horizontal ? "width" : "height"] * 8) / 8;
@@ -254,12 +254,24 @@ var Container = ({
254
254
  var useAnimatedValue = reactNative.useAnimatedValue || ((initialValue) => {
255
255
  return React5.useRef(new reactNative.Animated.Value(initialValue)).current;
256
256
  });
257
- function useValue$(key, getValue, key2) {
257
+ function useValue$(key, getValue, useMicrotask) {
258
258
  var _a;
259
259
  const ctx = useStateContext();
260
260
  const animValue = useAnimatedValue((_a = getValue ? getValue(peek$(ctx, key)) : peek$(ctx, key)) != null ? _a : 0);
261
261
  React5.useMemo(() => {
262
- listen$(ctx, key, (v) => animValue.setValue(getValue ? getValue(v) : v));
262
+ let newValue = void 0;
263
+ listen$(ctx, key, (v) => {
264
+ if (useMicrotask && newValue === void 0) {
265
+ queueMicrotask(() => {
266
+ animValue.setValue(newValue);
267
+ newValue = void 0;
268
+ });
269
+ }
270
+ newValue = getValue ? getValue(v) : v;
271
+ if (!useMicrotask) {
272
+ animValue.setValue(newValue);
273
+ }
274
+ });
263
275
  }, []);
264
276
  return animValue;
265
277
  }
@@ -274,7 +286,12 @@ var Containers = React5__namespace.memo(function Containers2({
274
286
  getRenderedItem
275
287
  }) {
276
288
  const numContainers = use$("numContainersPooled");
277
- const animSize = useValue$("totalSize");
289
+ const animSize = useValue$(
290
+ "totalSize",
291
+ void 0,
292
+ /*useMicrotask*/
293
+ true
294
+ );
278
295
  const animOpacity = waitForInitialLayout ? useValue$("containersDidLayout", (value) => value ? 1 : 0) : void 0;
279
296
  const containers = [];
280
297
  for (let i = 0; i < numContainers; i++) {
@@ -598,17 +615,22 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
598
615
  renderItem,
599
616
  estimatedItemSize,
600
617
  getEstimatedItemSize,
601
- onEndReached,
602
- onStartReached,
603
618
  ListEmptyComponent,
604
619
  onItemSizeChanged,
605
620
  scrollEventThrottle,
606
621
  refScrollView,
607
622
  waitForInitialLayout = true,
608
623
  extraData,
624
+ onLayout: onLayoutProp,
609
625
  ...rest
610
626
  } = props;
611
627
  const { style, contentContainerStyle } = props;
628
+ const callbacks = React5.useRef({
629
+ onStartReached: rest.onStartReached,
630
+ onEndReached: rest.onEndReached
631
+ });
632
+ callbacks.current.onStartReached = rest.onStartReached;
633
+ callbacks.current.onEndReached = rest.onEndReached;
612
634
  const ctx = useStateContext();
613
635
  const refScroller = React5.useRef(null);
614
636
  const scrollBuffer = drawDistance != null ? drawDistance : DEFAULT_DRAW_DISTANCE;
@@ -689,7 +711,8 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
689
711
  rowHeights: /* @__PURE__ */ new Map(),
690
712
  startReachedBlockedByTimer: false,
691
713
  scrollForNextCalculateItemsInView: void 0,
692
- enableScrollForNextCalculateItemsInView: true
714
+ enableScrollForNextCalculateItemsInView: true,
715
+ minIndexSizeChanged: 0
693
716
  };
694
717
  refState.current.idsInFirstRender = new Set(data.map((_, i) => getId(i)));
695
718
  if (maintainVisibleContentPosition) {
@@ -851,8 +874,11 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
851
874
  let startBufferedId = null;
852
875
  let endNoBuffer = null;
853
876
  let endBuffered = null;
854
- const originalStartId = startBufferedIdOrig && state.indexByKey.get(startBufferedIdOrig);
855
- let loopStart = originalStartId || 0;
877
+ let loopStart = startBufferedIdOrig ? state.indexByKey.get(startBufferedIdOrig) || 0 : 0;
878
+ if (state.minIndexSizeChanged !== void 0) {
879
+ loopStart = Math.min(state.minIndexSizeChanged, loopStart);
880
+ state.minIndexSizeChanged = void 0;
881
+ }
856
882
  const anchorElementIndex = getAnchorElementIndex();
857
883
  for (let i = loopStart; i >= 0; i--) {
858
884
  const id = getId(i);
@@ -1096,6 +1122,7 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1096
1122
  if (refState.current) {
1097
1123
  refState.current.isAtBottom = distanceFromEnd < scrollLength * maintainScrollAtEndThreshold;
1098
1124
  }
1125
+ const { onEndReached } = callbacks.current;
1099
1126
  if (onEndReached) {
1100
1127
  if (!refState.current.isEndReached) {
1101
1128
  if (distanceFromEnd < onEndReachedThreshold * scrollLength) {
@@ -1117,6 +1144,7 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1117
1144
  const { scrollLength, scroll } = refState.current;
1118
1145
  const distanceFromTop = scroll;
1119
1146
  refState.current.isAtTop = distanceFromTop < 0;
1147
+ const { onStartReached } = callbacks.current;
1120
1148
  if (onStartReached) {
1121
1149
  if (!refState.current.isStartReached && !refState.current.startReachedBlockedByTimer) {
1122
1150
  if (distanceFromTop < onStartReachedThreshold * scrollLength) {
@@ -1145,12 +1173,12 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1145
1173
  const itemKey = peek$(ctx, `containerItemKey${i}`);
1146
1174
  if (!keyExtractorProp || itemKey && state.indexByKey.get(itemKey) === void 0) {
1147
1175
  set$(ctx, `containerItemKey${i}`, void 0);
1176
+ set$(ctx, `containerItemData${i}`, void 0);
1148
1177
  set$(ctx, `containerPosition${i}`, ANCHORED_POSITION_OUT_OF_VIEW);
1149
1178
  set$(ctx, `containerColumn${i}`, -1);
1150
1179
  }
1151
1180
  }
1152
1181
  if (!keyExtractorProp) {
1153
- state.sizes.clear();
1154
1182
  state.positions.clear();
1155
1183
  }
1156
1184
  calculateItemsInView(state.scrollVelocity);
@@ -1166,7 +1194,6 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1166
1194
  const isFirst = !refState.current.renderItem;
1167
1195
  if (isFirst || data !== refState.current.data || numColumnsProp !== peek$(ctx, "numColumns")) {
1168
1196
  if (!keyExtractorProp && !isFirst && data !== refState.current.data) {
1169
- refState.current.sizes.clear();
1170
1197
  refState.current.positions.clear();
1171
1198
  }
1172
1199
  refState.current.data = data;
@@ -1178,6 +1205,13 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1178
1205
  let maxSizeInRow = 0;
1179
1206
  for (let i = 0; i < data.length; i++) {
1180
1207
  const key = getId(i);
1208
+ if (__DEV__) {
1209
+ if (indexByKey.has(key)) {
1210
+ console.error(
1211
+ `[legend-list] Error: Detected overlapping key (${key}) which causes missing items and gaps and other terrrible things. Check that keyExtractor returns unique values.`
1212
+ );
1213
+ }
1214
+ }
1181
1215
  indexByKey.set(key, i);
1182
1216
  if (refState.current.positions.get(key) != null && refState.current.indexByKey.get(key) === i) {
1183
1217
  newPositions.set(key, refState.current.positions.get(key));
@@ -1316,6 +1350,7 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1316
1350
  const { sizes, indexByKey, columns, sizesLaidOut } = state;
1317
1351
  const index = indexByKey.get(itemKey);
1318
1352
  const numColumns = peek$(ctx, "numColumns");
1353
+ state.minIndexSizeChanged = state.minIndexSizeChanged !== void 0 ? Math.min(state.minIndexSizeChanged, index) : index;
1319
1354
  const row = Math.floor(index / numColumns);
1320
1355
  const prevSize = getRowHeight(row);
1321
1356
  if (!prevSize || Math.abs(prevSize - size) > 0.5) {
@@ -1398,6 +1433,9 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1398
1433
  );
1399
1434
  }
1400
1435
  }
1436
+ if (onLayoutProp) {
1437
+ onLayoutProp(event);
1438
+ }
1401
1439
  }, []);
1402
1440
  const handleScroll = React5.useCallback(
1403
1441
  (event, fromSelf) => {
@@ -1451,9 +1489,9 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1451
1489
  };
1452
1490
  return {
1453
1491
  getNativeScrollRef: () => refScroller.current,
1454
- getScrollableNode: refScroller.current.getScrollableNode,
1455
- getScrollResponder: refScroller.current.getScrollResponder,
1456
- flashScrollIndicators: refScroller.current.flashScrollIndicators,
1492
+ getScrollableNode: () => refScroller.current.getScrollableNode(),
1493
+ getScrollResponder: () => refScroller.current.getScrollResponder(),
1494
+ flashScrollIndicators: () => refScroller.current.flashScrollIndicators(),
1457
1495
  scrollToIndex,
1458
1496
  scrollToOffset: ({ offset, animated }) => {
1459
1497
  const offsetObj = horizontal ? { x: offset, y: 0 } : { x: 0, y: offset };
@@ -1465,7 +1503,7 @@ var LegendListInner = React5.forwardRef(function LegendListInner2(props, forward
1465
1503
  scrollToIndex({ index, animated });
1466
1504
  }
1467
1505
  },
1468
- scrollToEnd: refScroller.current.scrollToEnd
1506
+ scrollToEnd: () => refScroller.current.scrollToEnd()
1469
1507
  };
1470
1508
  },
1471
1509
  []
package/index.mjs CHANGED
@@ -208,7 +208,7 @@ var Container = ({
208
208
  if (isNewArchitecture) {
209
209
  useLayoutEffect(() => {
210
210
  var _a, _b;
211
- if (itemKey) {
211
+ if (itemKey !== void 0) {
212
212
  const measured = (_b = (_a = ref.current) == null ? void 0 : _a.unstable_getBoundingClientRect) == null ? void 0 : _b.call(_a);
213
213
  if (measured) {
214
214
  const size = Math.floor(measured[horizontal ? "width" : "height"] * 8) / 8;
@@ -233,12 +233,24 @@ var Container = ({
233
233
  var useAnimatedValue = useAnimatedValue$1 || ((initialValue) => {
234
234
  return useRef(new Animated.Value(initialValue)).current;
235
235
  });
236
- function useValue$(key, getValue, key2) {
236
+ function useValue$(key, getValue, useMicrotask) {
237
237
  var _a;
238
238
  const ctx = useStateContext();
239
239
  const animValue = useAnimatedValue((_a = getValue ? getValue(peek$(ctx, key)) : peek$(ctx, key)) != null ? _a : 0);
240
240
  useMemo(() => {
241
- listen$(ctx, key, (v) => animValue.setValue(getValue ? getValue(v) : v));
241
+ let newValue = void 0;
242
+ listen$(ctx, key, (v) => {
243
+ if (useMicrotask && newValue === void 0) {
244
+ queueMicrotask(() => {
245
+ animValue.setValue(newValue);
246
+ newValue = void 0;
247
+ });
248
+ }
249
+ newValue = getValue ? getValue(v) : v;
250
+ if (!useMicrotask) {
251
+ animValue.setValue(newValue);
252
+ }
253
+ });
242
254
  }, []);
243
255
  return animValue;
244
256
  }
@@ -253,7 +265,12 @@ var Containers = React5.memo(function Containers2({
253
265
  getRenderedItem
254
266
  }) {
255
267
  const numContainers = use$("numContainersPooled");
256
- const animSize = useValue$("totalSize");
268
+ const animSize = useValue$(
269
+ "totalSize",
270
+ void 0,
271
+ /*useMicrotask*/
272
+ true
273
+ );
257
274
  const animOpacity = waitForInitialLayout ? useValue$("containersDidLayout", (value) => value ? 1 : 0) : void 0;
258
275
  const containers = [];
259
276
  for (let i = 0; i < numContainers; i++) {
@@ -577,17 +594,22 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
577
594
  renderItem,
578
595
  estimatedItemSize,
579
596
  getEstimatedItemSize,
580
- onEndReached,
581
- onStartReached,
582
597
  ListEmptyComponent,
583
598
  onItemSizeChanged,
584
599
  scrollEventThrottle,
585
600
  refScrollView,
586
601
  waitForInitialLayout = true,
587
602
  extraData,
603
+ onLayout: onLayoutProp,
588
604
  ...rest
589
605
  } = props;
590
606
  const { style, contentContainerStyle } = props;
607
+ const callbacks = useRef({
608
+ onStartReached: rest.onStartReached,
609
+ onEndReached: rest.onEndReached
610
+ });
611
+ callbacks.current.onStartReached = rest.onStartReached;
612
+ callbacks.current.onEndReached = rest.onEndReached;
591
613
  const ctx = useStateContext();
592
614
  const refScroller = useRef(null);
593
615
  const scrollBuffer = drawDistance != null ? drawDistance : DEFAULT_DRAW_DISTANCE;
@@ -668,7 +690,8 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
668
690
  rowHeights: /* @__PURE__ */ new Map(),
669
691
  startReachedBlockedByTimer: false,
670
692
  scrollForNextCalculateItemsInView: void 0,
671
- enableScrollForNextCalculateItemsInView: true
693
+ enableScrollForNextCalculateItemsInView: true,
694
+ minIndexSizeChanged: 0
672
695
  };
673
696
  refState.current.idsInFirstRender = new Set(data.map((_, i) => getId(i)));
674
697
  if (maintainVisibleContentPosition) {
@@ -830,8 +853,11 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
830
853
  let startBufferedId = null;
831
854
  let endNoBuffer = null;
832
855
  let endBuffered = null;
833
- const originalStartId = startBufferedIdOrig && state.indexByKey.get(startBufferedIdOrig);
834
- let loopStart = originalStartId || 0;
856
+ let loopStart = startBufferedIdOrig ? state.indexByKey.get(startBufferedIdOrig) || 0 : 0;
857
+ if (state.minIndexSizeChanged !== void 0) {
858
+ loopStart = Math.min(state.minIndexSizeChanged, loopStart);
859
+ state.minIndexSizeChanged = void 0;
860
+ }
835
861
  const anchorElementIndex = getAnchorElementIndex();
836
862
  for (let i = loopStart; i >= 0; i--) {
837
863
  const id = getId(i);
@@ -1075,6 +1101,7 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1075
1101
  if (refState.current) {
1076
1102
  refState.current.isAtBottom = distanceFromEnd < scrollLength * maintainScrollAtEndThreshold;
1077
1103
  }
1104
+ const { onEndReached } = callbacks.current;
1078
1105
  if (onEndReached) {
1079
1106
  if (!refState.current.isEndReached) {
1080
1107
  if (distanceFromEnd < onEndReachedThreshold * scrollLength) {
@@ -1096,6 +1123,7 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1096
1123
  const { scrollLength, scroll } = refState.current;
1097
1124
  const distanceFromTop = scroll;
1098
1125
  refState.current.isAtTop = distanceFromTop < 0;
1126
+ const { onStartReached } = callbacks.current;
1099
1127
  if (onStartReached) {
1100
1128
  if (!refState.current.isStartReached && !refState.current.startReachedBlockedByTimer) {
1101
1129
  if (distanceFromTop < onStartReachedThreshold * scrollLength) {
@@ -1124,12 +1152,12 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1124
1152
  const itemKey = peek$(ctx, `containerItemKey${i}`);
1125
1153
  if (!keyExtractorProp || itemKey && state.indexByKey.get(itemKey) === void 0) {
1126
1154
  set$(ctx, `containerItemKey${i}`, void 0);
1155
+ set$(ctx, `containerItemData${i}`, void 0);
1127
1156
  set$(ctx, `containerPosition${i}`, ANCHORED_POSITION_OUT_OF_VIEW);
1128
1157
  set$(ctx, `containerColumn${i}`, -1);
1129
1158
  }
1130
1159
  }
1131
1160
  if (!keyExtractorProp) {
1132
- state.sizes.clear();
1133
1161
  state.positions.clear();
1134
1162
  }
1135
1163
  calculateItemsInView(state.scrollVelocity);
@@ -1145,7 +1173,6 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1145
1173
  const isFirst = !refState.current.renderItem;
1146
1174
  if (isFirst || data !== refState.current.data || numColumnsProp !== peek$(ctx, "numColumns")) {
1147
1175
  if (!keyExtractorProp && !isFirst && data !== refState.current.data) {
1148
- refState.current.sizes.clear();
1149
1176
  refState.current.positions.clear();
1150
1177
  }
1151
1178
  refState.current.data = data;
@@ -1157,6 +1184,13 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1157
1184
  let maxSizeInRow = 0;
1158
1185
  for (let i = 0; i < data.length; i++) {
1159
1186
  const key = getId(i);
1187
+ if (__DEV__) {
1188
+ if (indexByKey.has(key)) {
1189
+ console.error(
1190
+ `[legend-list] Error: Detected overlapping key (${key}) which causes missing items and gaps and other terrrible things. Check that keyExtractor returns unique values.`
1191
+ );
1192
+ }
1193
+ }
1160
1194
  indexByKey.set(key, i);
1161
1195
  if (refState.current.positions.get(key) != null && refState.current.indexByKey.get(key) === i) {
1162
1196
  newPositions.set(key, refState.current.positions.get(key));
@@ -1295,6 +1329,7 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1295
1329
  const { sizes, indexByKey, columns, sizesLaidOut } = state;
1296
1330
  const index = indexByKey.get(itemKey);
1297
1331
  const numColumns = peek$(ctx, "numColumns");
1332
+ state.minIndexSizeChanged = state.minIndexSizeChanged !== void 0 ? Math.min(state.minIndexSizeChanged, index) : index;
1298
1333
  const row = Math.floor(index / numColumns);
1299
1334
  const prevSize = getRowHeight(row);
1300
1335
  if (!prevSize || Math.abs(prevSize - size) > 0.5) {
@@ -1377,6 +1412,9 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1377
1412
  );
1378
1413
  }
1379
1414
  }
1415
+ if (onLayoutProp) {
1416
+ onLayoutProp(event);
1417
+ }
1380
1418
  }, []);
1381
1419
  const handleScroll = useCallback(
1382
1420
  (event, fromSelf) => {
@@ -1430,9 +1468,9 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1430
1468
  };
1431
1469
  return {
1432
1470
  getNativeScrollRef: () => refScroller.current,
1433
- getScrollableNode: refScroller.current.getScrollableNode,
1434
- getScrollResponder: refScroller.current.getScrollResponder,
1435
- flashScrollIndicators: refScroller.current.flashScrollIndicators,
1471
+ getScrollableNode: () => refScroller.current.getScrollableNode(),
1472
+ getScrollResponder: () => refScroller.current.getScrollResponder(),
1473
+ flashScrollIndicators: () => refScroller.current.flashScrollIndicators(),
1436
1474
  scrollToIndex,
1437
1475
  scrollToOffset: ({ offset, animated }) => {
1438
1476
  const offsetObj = horizontal ? { x: offset, y: 0 } : { x: 0, y: offset };
@@ -1444,7 +1482,7 @@ var LegendListInner = forwardRef(function LegendListInner2(props, forwardedRef)
1444
1482
  scrollToIndex({ index, animated });
1445
1483
  }
1446
1484
  },
1447
- scrollToEnd: refScroller.current.scrollToEnd
1485
+ scrollToEnd: () => refScroller.current.scrollToEnd()
1448
1486
  };
1449
1487
  },
1450
1488
  []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/list",
3
- "version": "1.0.0-beta.4",
3
+ "version": "1.0.0-beta.6",
4
4
  "description": "legend-list",
5
5
  "sideEffects": false,
6
6
  "private": false,
package/reanimated.d.mts CHANGED
@@ -8,6 +8,9 @@ interface AnimatedLegendListProps<ItemT> extends Omit<PropsBase<ItemT>, KeysToOm
8
8
  refScrollView?: react__default.Ref<Animated.ScrollView>;
9
9
  }
10
10
  type OtherAnimatedLegendListProps<ItemT> = Pick<PropsBase<ItemT>, KeysToOmit>;
11
- declare const AnimatedLegendList: react__default.ForwardRefExoticComponent<Omit<Omit<AnimatedLegendListProps<unknown>, "refLegendList"> & OtherAnimatedLegendListProps<unknown>, "ref"> & react__default.RefAttributes<LegendListRef>>;
11
+ type AnimatedLegendListDefinition = <ItemT>(props: Omit<AnimatedLegendListProps<ItemT>, "refLegendList"> & OtherAnimatedLegendListProps<ItemT> & {
12
+ ref?: react__default.Ref<LegendListRef>;
13
+ }) => react__default.ReactElement | null;
14
+ declare const AnimatedLegendList: AnimatedLegendListDefinition;
12
15
 
13
16
  export { AnimatedLegendList };
package/reanimated.d.ts CHANGED
@@ -8,6 +8,9 @@ interface AnimatedLegendListProps<ItemT> extends Omit<PropsBase<ItemT>, KeysToOm
8
8
  refScrollView?: react__default.Ref<Animated.ScrollView>;
9
9
  }
10
10
  type OtherAnimatedLegendListProps<ItemT> = Pick<PropsBase<ItemT>, KeysToOmit>;
11
- declare const AnimatedLegendList: react__default.ForwardRefExoticComponent<Omit<Omit<AnimatedLegendListProps<unknown>, "refLegendList"> & OtherAnimatedLegendListProps<unknown>, "ref"> & react__default.RefAttributes<LegendListRef>>;
11
+ type AnimatedLegendListDefinition = <ItemT>(props: Omit<AnimatedLegendListProps<ItemT>, "refLegendList"> & OtherAnimatedLegendListProps<ItemT> & {
12
+ ref?: react__default.Ref<LegendListRef>;
13
+ }) => react__default.ReactElement | null;
14
+ declare const AnimatedLegendList: AnimatedLegendListDefinition;
12
15
 
13
16
  export { AnimatedLegendList };