@tarojs/components-advanced 3.6.10-alpha.2 → 3.6.10-alpha.5

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 (78) hide show
  1. package/dist/components/index.d.ts +0 -1
  2. package/dist/components/index.js +0 -1
  3. package/dist/components/index.js.map +1 -1
  4. package/dist/components/virtual-list/index.d.ts +27 -48
  5. package/dist/components/virtual-list/index.js.map +1 -1
  6. package/dist/components/virtual-list/list-set.d.ts +0 -4
  7. package/dist/components/virtual-list/list-set.js +59 -24
  8. package/dist/components/virtual-list/list-set.js.map +1 -1
  9. package/dist/components/virtual-list/preset.d.ts +8 -23
  10. package/dist/components/virtual-list/preset.js +60 -116
  11. package/dist/components/virtual-list/preset.js.map +1 -1
  12. package/dist/components/virtual-list/react/index.d.ts +1 -1
  13. package/dist/components/virtual-list/react/index.js +16 -8
  14. package/dist/components/virtual-list/react/index.js.map +1 -1
  15. package/dist/components/virtual-list/react/list.d.ts +4 -5
  16. package/dist/components/virtual-list/react/list.js +124 -138
  17. package/dist/components/virtual-list/react/list.js.map +1 -1
  18. package/dist/components/virtual-list/react/validate.d.ts +1 -1
  19. package/dist/components/virtual-list/react/validate.js +14 -8
  20. package/dist/components/virtual-list/react/validate.js.map +1 -1
  21. package/dist/components/virtual-list/utils.d.ts +4 -1
  22. package/dist/components/virtual-list/utils.js +28 -1
  23. package/dist/components/virtual-list/utils.js.map +1 -1
  24. package/dist/components/virtual-list/vue/list.d.ts +50 -406
  25. package/dist/components/virtual-list/vue/list.js +169 -198
  26. package/dist/components/virtual-list/vue/list.js.map +1 -1
  27. package/dist/components/virtual-list/vue/render.d.ts +4 -0
  28. package/dist/{utils/vue-render.js → components/virtual-list/vue/render.js} +2 -2
  29. package/dist/components/virtual-list/vue/render.js.map +1 -0
  30. package/dist/index.js +1 -4
  31. package/dist/index.js.map +1 -1
  32. package/dist/utils/convert.d.ts +2 -2
  33. package/dist/utils/convert.js.map +1 -1
  34. package/dist/utils/index.d.ts +0 -2
  35. package/dist/utils/index.js +1 -3
  36. package/dist/utils/index.js.map +1 -1
  37. package/dist/utils/lodash.d.ts +1 -3
  38. package/dist/utils/lodash.js +1 -30
  39. package/dist/utils/lodash.js.map +1 -1
  40. package/package.json +6 -8
  41. package/dist/components/virtual-list/react/wrapper.d.ts +0 -3
  42. package/dist/components/virtual-list/react/wrapper.js +0 -58
  43. package/dist/components/virtual-list/react/wrapper.js.map +0 -1
  44. package/dist/components/virtual-waterfall/constants.d.ts +0 -2
  45. package/dist/components/virtual-waterfall/constants.js +0 -4
  46. package/dist/components/virtual-waterfall/constants.js.map +0 -1
  47. package/dist/components/virtual-waterfall/index.d.ts +0 -251
  48. package/dist/components/virtual-waterfall/index.js +0 -6
  49. package/dist/components/virtual-waterfall/index.js.map +0 -1
  50. package/dist/components/virtual-waterfall/list-map.d.ts +0 -50
  51. package/dist/components/virtual-waterfall/list-map.js +0 -280
  52. package/dist/components/virtual-waterfall/list-map.js.map +0 -1
  53. package/dist/components/virtual-waterfall/preset.d.ts +0 -60
  54. package/dist/components/virtual-waterfall/preset.js +0 -170
  55. package/dist/components/virtual-waterfall/preset.js.map +0 -1
  56. package/dist/components/virtual-waterfall/react/index.d.ts +0 -4
  57. package/dist/components/virtual-waterfall/react/index.js +0 -26
  58. package/dist/components/virtual-waterfall/react/index.js.map +0 -1
  59. package/dist/components/virtual-waterfall/react/waterfall.d.ts +0 -42
  60. package/dist/components/virtual-waterfall/react/waterfall.js +0 -316
  61. package/dist/components/virtual-waterfall/react/waterfall.js.map +0 -1
  62. package/dist/components/virtual-waterfall/react/wrapper.d.ts +0 -3
  63. package/dist/components/virtual-waterfall/react/wrapper.js +0 -50
  64. package/dist/components/virtual-waterfall/react/wrapper.js.map +0 -1
  65. package/dist/components/virtual-waterfall/vue/index.d.ts +0 -17
  66. package/dist/components/virtual-waterfall/vue/index.js +0 -12
  67. package/dist/components/virtual-waterfall/vue/index.js.map +0 -1
  68. package/dist/components/virtual-waterfall/vue/waterfall.d.ts +0 -443
  69. package/dist/components/virtual-waterfall/vue/waterfall.js +0 -410
  70. package/dist/components/virtual-waterfall/vue/waterfall.js.map +0 -1
  71. package/dist/utils/dom.d.ts +0 -7
  72. package/dist/utils/dom.js +0 -45
  73. package/dist/utils/dom.js.map +0 -1
  74. package/dist/utils/helper.d.ts +0 -10
  75. package/dist/utils/helper.js +0 -51
  76. package/dist/utils/helper.js.map +0 -1
  77. package/dist/utils/vue-render.d.ts +0 -4
  78. package/dist/utils/vue-render.js.map +0 -1
@@ -1,21 +1,15 @@
1
- import { isWebPlatform } from '@tarojs/shared';
2
- import { createSelectorQuery, getCurrentInstance, createIntersectionObserver } from '@tarojs/taro';
3
1
  import memoizeOne from 'memoize-one';
4
2
  import '../../utils/index.js';
5
3
  import ListSet from './list-set.js';
6
4
  import { isHorizontalFunc, isRtlFunc } from './utils.js';
7
- import { convertNumber2PX } from '../../utils/convert.js';
8
- import { getRectSizeSync } from '../../utils/dom.js';
9
5
  import { isCosDistributing } from '../../utils/math.js';
10
- import { throttle } from '../../utils/lodash.js';
6
+ import { convertNumber2PX } from '../../utils/convert.js';
11
7
 
12
- const isWeb = isWebPlatform();
13
8
  let INSTANCE_ID = 0;
14
9
  class Preset {
15
10
  constructor(props, refresh) {
16
11
  this.props = props;
17
12
  this.refresh = refresh;
18
- this._observer = {};
19
13
  this.wrapperField = {
20
14
  scrollLeft: 0,
21
15
  scrollTop: 0,
@@ -26,28 +20,9 @@ class Preset {
26
20
  diffOffset: 0
27
21
  };
28
22
  this.diffList = [0, 0, 0];
29
- this.getItemStyleCache = memoizeOne((itemIndex, itemSize, _flag = this.itemList.refreshCounter) => {
30
- itemSize = itemSize || this.itemList.getSize(itemIndex);
31
- const style = this.isRelative ? {} : {
32
- position: 'absolute',
33
- };
34
- const offset = convertNumber2PX(this.itemList.getOffsetSizeCache(itemIndex));
35
- const size = convertNumber2PX(this.itemList.getSize(itemIndex));
36
- const isHorizontal = this.isHorizontal;
37
- const isRtl = this.isRtl;
38
- style.height = !isHorizontal ? size : '100%';
39
- style.width = isHorizontal ? size : '100%';
40
- if (!this.isRelative) {
41
- const offsetHorizontal = isHorizontal ? offset : 0;
42
- style.top = !isHorizontal ? offset : 0;
43
- if (isRtl) {
44
- style.right = offsetHorizontal;
45
- }
46
- else {
47
- style.left = offsetHorizontal;
48
- }
49
- }
50
- return style;
23
+ this.getItemStyleCache = memoizeOne((_itemSize, _layout, _direction) => {
24
+ // TODO: Cache of item styles, keyed by item index.
25
+ return {};
51
26
  });
52
27
  this.init(this.props);
53
28
  this.itemList = new ListSet(props, refresh);
@@ -59,33 +34,8 @@ class Preset {
59
34
  this.props = props;
60
35
  this.itemList.update(props);
61
36
  }
62
- async updateWrapper(id) {
63
- var _a;
64
- var _b, _c;
65
- this.id = id;
66
- const { width = 0, height = 0 } = this.props;
67
- const validWidth = typeof width === 'number' && width > 0;
68
- const validHeight = typeof height === 'number' && height > 0;
69
- if (validWidth) {
70
- this.itemList.wrapperWidth = width;
71
- }
72
- if (validHeight) {
73
- this.itemList.wrapperHeight = height;
74
- }
75
- if (!validHeight || !validWidth) {
76
- const res = await getRectSizeSync(`#${id}`, 100);
77
- (_b = this.itemList).wrapperWidth || (_b.wrapperWidth = res.width);
78
- (_c = this.itemList).wrapperHeight || (_c.wrapperHeight = res.height);
79
- (_a = this.refresh) === null || _a === void 0 ? void 0 : _a.call(this);
80
- }
81
- this.itemList.update(this.props);
82
- }
83
- set id(id) {
84
- this._id = id;
85
- }
86
37
  get id() {
87
- this._id || (this._id = `virtual-waterfall-${INSTANCE_ID++}`);
88
- return this._id;
38
+ return `virtual-list-${INSTANCE_ID++}`;
89
39
  }
90
40
  get isHorizontal() {
91
41
  return isHorizontalFunc(this.props);
@@ -94,21 +44,18 @@ class Preset {
94
44
  return isRtlFunc(this.props);
95
45
  }
96
46
  get isRelative() {
97
- return this.props.position && this.props.position !== 'absolute';
98
- }
99
- get isBrick() {
100
- return this.props.position === 'brick';
47
+ return this.props.position === 'relative';
101
48
  }
102
49
  get placeholderCount() {
103
50
  return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount;
104
51
  }
105
- get outerElement() {
52
+ get outerTagName() {
106
53
  return this.props.outerElementType || this.props.outerTagName || 'div';
107
54
  }
108
- get innerElement() {
55
+ get innerTagName() {
109
56
  return this.props.innerElementType || this.props.innerTagName || 'div';
110
57
  }
111
- get itemElement() {
58
+ get itemTagName() {
112
59
  return this.props.itemElementType || this.props.itemTagName || 'div';
113
60
  }
114
61
  get field() {
@@ -122,68 +69,65 @@ class Preset {
122
69
  // }
123
70
  // })
124
71
  }
125
- get enhanced() {
126
- return this.props.enhanced || true;
127
- }
128
72
  isShaking(diff) {
129
- if (isWeb || this.props.enhanced)
130
- return false;
131
73
  const list = this.diffList.slice(-3);
132
74
  this.diffList.push(diff);
133
75
  return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4));
134
76
  }
135
- resetCache() {
136
- this.itemList.refreshCounter++;
137
- }
138
77
  getItemStyle(index) {
139
- const { shouldResetStyleCacheOnItemSizeChange } = this.props;
140
- return this.getItemStyleCache(index, shouldResetStyleCacheOnItemSizeChange ? this.itemList.getSize(index) : false);
141
- }
142
- boundaryDetection() {
143
- if ([typeof this.props.onScrollToUpper, typeof this.props.onScrollToLower].every(e => e !== 'function'))
144
- return;
145
- createSelectorQuery().select(`#${this.id}`).node().exec(() => {
146
- const upperObserver = this.boundaryDetectionHelper({
147
- event: typeof this.props.onScrollToUpper === 'function' ? () => {
148
- if (this.field.diffOffset >= 0)
149
- this.props.onScrollToUpper();
150
- } : undefined,
151
- id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'right' : 'left' : 'top'}`,
152
- });
153
- if (upperObserver) {
154
- this._observer.top = upperObserver;
78
+ const { direction, itemSize, layout, shouldResetStyleCacheOnItemSizeChange } = this.props;
79
+ const itemStyleCache = this.getItemStyleCache(shouldResetStyleCacheOnItemSizeChange ? itemSize : false, shouldResetStyleCacheOnItemSizeChange ? layout : false, shouldResetStyleCacheOnItemSizeChange ? direction : false);
80
+ let style;
81
+ const offset = convertNumber2PX(this.itemList.getOffsetSize(index));
82
+ const size = convertNumber2PX(this.itemList.getSize(index));
83
+ const isHorizontal = this.isHorizontal;
84
+ const isRtl = this.isRtl;
85
+ if (itemStyleCache.hasOwnProperty(index)) {
86
+ // Note: style is frozen.
87
+ style = Object.assign({}, itemStyleCache[index]);
88
+ if (isHorizontal) {
89
+ style.width = size;
90
+ if (!this.isRelative) {
91
+ if (isRtl) {
92
+ style.right = offset;
93
+ }
94
+ else {
95
+ style.left = offset;
96
+ }
97
+ }
155
98
  }
156
- const lowerObserver = this.boundaryDetectionHelper({
157
- event: typeof this.props.onScrollToLower === 'function' ? () => {
158
- if (this.field.diffOffset <= 0)
159
- this.props.onScrollToLower();
160
- } : undefined,
161
- id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'left' : 'right' : 'bottom'}`,
162
- });
163
- if (lowerObserver) {
164
- this._observer.bottom = lowerObserver;
99
+ else {
100
+ style.height = size;
101
+ if (!this.isRelative) {
102
+ style.top = offset;
103
+ }
165
104
  }
166
- });
167
- }
168
- boundaryDetectionHelper({ component, event, id, }) {
169
- if (typeof event !== 'function')
170
- return;
171
- const eventFunc = throttle(event);
172
- component || (component = getCurrentInstance().page);
173
- const observer = createIntersectionObserver(component, {
174
- thresholds: [0.4],
175
- });
176
- observer
177
- .relativeTo(`#${this.id}`, {
178
- top: typeof this.props.lowerThreshold === 'number' ? this.props.lowerThreshold : 50,
179
- bottom: typeof this.props.upperThreshold === 'number' ? this.props.upperThreshold : 50,
180
- })
181
- .observe(`#${id}`, eventFunc);
182
- return observer;
183
- }
184
- dispose() {
185
- Object.values(this._observer).forEach(e => { var _a; return (_a = e.disconnect) === null || _a === void 0 ? void 0 : _a.call(e); });
186
- this._observer = {};
105
+ }
106
+ else {
107
+ if (this.isRelative) {
108
+ itemStyleCache[index] = style = {
109
+ height: !isHorizontal ? size : '100%',
110
+ width: isHorizontal ? size : '100%'
111
+ };
112
+ }
113
+ else {
114
+ const offsetHorizontal = isHorizontal ? offset : 0;
115
+ itemStyleCache[index] = style = {
116
+ position: 'absolute',
117
+ left: !isRtl ? offsetHorizontal : undefined,
118
+ right: isRtl ? offsetHorizontal : undefined,
119
+ top: !isHorizontal ? offset : 0,
120
+ height: !isHorizontal ? size : '100%',
121
+ width: isHorizontal ? size : '100%'
122
+ };
123
+ }
124
+ }
125
+ for (const k in style) {
126
+ if (style.hasOwnProperty(k)) {
127
+ style[k] = convertNumber2PX(style[k]);
128
+ }
129
+ }
130
+ return style;
187
131
  }
188
132
  }
189
133
 
@@ -1 +1 @@
1
- {"version":3,"file":"preset.js","sources":["../../../src/components/virtual-list/preset.ts"],"sourcesContent":["import { isWebPlatform } from '@tarojs/shared'\nimport { type IntersectionObserver, createIntersectionObserver, createSelectorQuery, getCurrentInstance } from '@tarojs/taro'\nimport * as CSS from 'csstype'\nimport memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX, defaultItemKey, getRectSizeSync, isCosDistributing, throttle } from '../../utils'\nimport ListSet from './list-set'\nimport { isHorizontalFunc, isRtlFunc } from './utils'\n\nimport type { VirtualListProps } from './'\n\nconst isWeb = isWebPlatform()\n\nlet INSTANCE_ID = 0\n\nexport interface IProps extends Partial<VirtualListProps> {\n children?: VirtualListProps['item']\n direction?: 'ltr' | 'rtl' | 'horizontal' | 'vertical'\n itemKey?: typeof defaultItemKey\n itemTagName?: string\n innerTagName?: string\n outerTagName?: string\n innerRef?: React.Ref<HTMLElement> | string\n outerRef?: React.Ref<HTMLElement> | string\n onItemsRendered?: TFunc\n shouldResetStyleCacheOnItemSizeChange?: boolean\n outerWrapper?: React.FC\n}\n\nexport default class Preset {\n itemList: ListSet\n _id: string\n _observer: Record<string, IntersectionObserver> = {}\n\n constructor (protected props: IProps, protected refresh?: TFunc) {\n this.init(this.props)\n this.itemList = new ListSet(props, refresh)\n }\n\n wrapperField = {\n scrollLeft: 0,\n scrollTop: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n clientHeight: 0,\n clientWidth: 0,\n diffOffset: 0\n }\n\n diffList: number[] = [0, 0, 0]\n\n init (props: IProps) {\n this.props = props\n }\n\n update (props: IProps) {\n this.props = props\n this.itemList.update(props)\n }\n\n async updateWrapper (id: string) {\n this.id = id\n const { width = 0, height = 0 } = this.props\n const validWidth = typeof width === 'number' && width > 0\n const validHeight = typeof height === 'number' && height > 0\n if (validWidth) {\n this.itemList.wrapperWidth = width\n }\n if (validHeight) {\n this.itemList.wrapperHeight = height\n }\n\n if (!validHeight || !validWidth) {\n const res = await getRectSizeSync(`#${id}`, 100)\n this.itemList.wrapperWidth ||= res.width\n this.itemList.wrapperHeight ||= res.height\n this.refresh?.()\n }\n\n this.itemList.update(this.props)\n }\n\n set id (id: string) {\n this._id = id\n }\n\n get id () {\n this._id ||= `virtual-waterfall-${INSTANCE_ID++}`\n return this._id\n }\n\n get isHorizontal () {\n return isHorizontalFunc(this.props)\n }\n\n get isRtl () {\n return isRtlFunc(this.props)\n }\n\n get isRelative () {\n return this.props.position && this.props.position !== 'absolute'\n }\n\n get isBrick () {\n return this.props.position === 'brick'\n }\n\n get placeholderCount () {\n return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount\n }\n\n get outerElement () {\n return this.props.outerElementType || this.props.outerTagName || 'div'\n }\n\n get innerElement () {\n return this.props.innerElementType || this.props.innerTagName || 'div'\n }\n\n get itemElement () {\n return this.props.itemElementType || this.props.itemTagName || 'div'\n }\n\n get field () {\n return this.wrapperField\n }\n\n set field (o: Record<string, number>) {\n Object.assign(this.wrapperField, o)\n // Object.keys(o).forEach(key => {\n // if (typeof o[key] === 'number' && typeof this.wrapperField[key] === 'number') {\n // this.wrapperField[key] = o[key]\n // }\n // })\n }\n\n get enhanced () {\n return this.props.enhanced || true\n }\n\n isShaking (diff?: number) {\n if (isWeb || this.props.enhanced) return false\n const list = this.diffList.slice(-3)\n this.diffList.push(diff)\n return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4))\n }\n\n resetCache () {\n this.itemList.refreshCounter++\n }\n\n getItemStyleCache = memoizeOne((\n itemIndex?: number,\n itemSize?: IProps['itemSize'] | false,\n _flag = this.itemList.refreshCounter\n ) => {\n itemSize = itemSize || this.itemList.getSize(itemIndex)\n const style: CSS.Properties<string | number> = this.isRelative ? {} : {\n position: 'absolute',\n }\n const offset = convertNumber2PX(this.itemList.getOffsetSizeCache(itemIndex))\n const size = convertNumber2PX(this.itemList.getSize(itemIndex))\n const isHorizontal = this.isHorizontal\n const isRtl = this.isRtl\n style.height = !isHorizontal ? size : '100%'\n style.width = isHorizontal ? size : '100%'\n if (!this.isRelative) {\n const offsetHorizontal = isHorizontal ? offset : 0\n style.top = !isHorizontal ? offset : 0\n if (isRtl) {\n style.right = offsetHorizontal\n } else {\n style.left = offsetHorizontal\n }\n }\n\n return style\n })\n\n getItemStyle (index: number) {\n const {\n shouldResetStyleCacheOnItemSizeChange\n } = this.props\n\n return this.getItemStyleCache(\n index,\n shouldResetStyleCacheOnItemSizeChange ? this.itemList.getSize(index) : false,\n )\n }\n\n boundaryDetection () {\n if ([typeof this.props.onScrollToUpper, typeof this.props.onScrollToLower].every(e => e !== 'function')) return\n\n createSelectorQuery().select(`#${this.id}`).node().exec(() => {\n const upperObserver = this.boundaryDetectionHelper({\n event: typeof this.props.onScrollToUpper === 'function' ? () => {\n if (this.field.diffOffset >= 0) this.props.onScrollToUpper()\n } : undefined,\n id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'right' : 'left' : 'top'}`,\n })\n if (upperObserver) {\n this._observer.top = upperObserver\n }\n\n const lowerObserver = this.boundaryDetectionHelper({\n event: typeof this.props.onScrollToLower === 'function' ? () => {\n if (this.field.diffOffset <= 0) this.props.onScrollToLower()\n } : undefined,\n id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'left' : 'right' : 'bottom'}`,\n })\n if (lowerObserver) {\n this._observer.bottom = lowerObserver\n }\n })\n }\n\n boundaryDetectionHelper ({\n component,\n event,\n id,\n }: {\n component?: TaroGeneral.IAnyObject\n event?: () => void\n id: string\n }) {\n if (typeof event !== 'function') return\n const eventFunc = throttle(event)\n\n component ||= getCurrentInstance().page\n const observer = createIntersectionObserver(component, {\n thresholds: [0.4],\n })\n\n observer\n .relativeTo(`#${this.id}`, {\n top: typeof this.props.lowerThreshold === 'number' ? this.props.lowerThreshold : 50,\n bottom: typeof this.props.upperThreshold === 'number' ? this.props.upperThreshold : 50,\n })\n .observe(`#${id}`, eventFunc)\n\n return observer\n }\n\n dispose () {\n Object.values(this._observer).forEach(e => e.disconnect?.())\n this._observer = {}\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preset.js","sources":["../../../src/components/virtual-list/preset.ts"],"sourcesContent":["import memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX, isCosDistributing } from '../../utils'\nimport ListSet from './list-set'\nimport { defaultItemKey, isHorizontalFunc, isRtlFunc } from './utils'\n\nimport type { VirtualListProps } from './'\n\nlet INSTANCE_ID = 0\n\nexport interface IProps extends Partial<VirtualListProps> {\n children?: VirtualListProps['item']\n direction?: 'ltr' | 'rtl' | 'horizontal' | 'vertical'\n itemKey?: typeof defaultItemKey\n itemTagName?: string\n innerTagName?: string\n outerTagName?: string\n itemElementType?: React.ComponentType | string\n outerElementType?: React.ComponentType | string\n innerRef?: React.Ref<HTMLElement> | string\n outerRef?: React.Ref<HTMLElement> | string\n onItemsRendered?: TFunc\n shouldResetStyleCacheOnItemSizeChange?: boolean\n}\n\nexport default class Preset {\n itemList: ListSet\n\n constructor (protected props: IProps, protected refresh?: TFunc) {\n this.init(this.props)\n this.itemList = new ListSet(props, refresh)\n }\n\n wrapperField = {\n scrollLeft: 0,\n scrollTop: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n clientHeight: 0,\n clientWidth: 0,\n diffOffset: 0\n }\n\n diffList: number[] = [0, 0, 0]\n\n init (props: IProps) {\n this.props = props\n }\n\n update (props: IProps) {\n this.props = props\n this.itemList.update(props)\n }\n\n get id () {\n return `virtual-list-${INSTANCE_ID++}`\n }\n\n get isHorizontal () {\n return isHorizontalFunc(this.props)\n }\n\n get isRtl () {\n return isRtlFunc(this.props)\n }\n\n get isRelative () {\n return this.props.position === 'relative'\n }\n\n get placeholderCount () {\n return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount\n }\n\n get outerTagName () {\n return this.props.outerElementType || this.props.outerTagName || 'div'\n }\n\n get innerTagName () {\n return this.props.innerElementType || this.props.innerTagName || 'div'\n }\n\n get itemTagName () {\n return this.props.itemElementType || this.props.itemTagName || 'div'\n }\n\n get field () {\n return this.wrapperField\n }\n\n set field (o: Record<string, number>) {\n Object.assign(this.wrapperField, o)\n // Object.keys(o).forEach(key => {\n // if (typeof o[key] === 'number' && typeof this.wrapperField[key] === 'number') {\n // this.wrapperField[key] = o[key]\n // }\n // })\n }\n\n isShaking (diff?: number) {\n const list = this.diffList.slice(-3)\n this.diffList.push(diff)\n return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4))\n }\n\n getItemStyleCache = memoizeOne((\n _itemSize?: IProps['itemSize'] | false,\n _layout?: IProps['layout'] | false,\n _direction?: IProps['direction'] | false\n ) => {\n // TODO: Cache of item styles, keyed by item index.\n return {}\n })\n\n getItemStyle (index: number) {\n const {\n direction,\n itemSize,\n layout,\n shouldResetStyleCacheOnItemSizeChange\n } = this.props\n\n const itemStyleCache = this.getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange ? itemSize : false,\n shouldResetStyleCacheOnItemSizeChange ? layout : false,\n shouldResetStyleCacheOnItemSizeChange ? direction : false\n )\n\n let style\n\n const offset = convertNumber2PX(this.itemList.getOffsetSize(index))\n const size = convertNumber2PX(this.itemList.getSize(index))\n const isHorizontal = this.isHorizontal\n const isRtl = this.isRtl\n if (itemStyleCache.hasOwnProperty(index)) {\n // Note: style is frozen.\n style = { ...itemStyleCache[index] }\n if (isHorizontal) {\n style.width = size\n if (!this.isRelative) {\n if (isRtl) {\n style.right = offset\n } else {\n style.left = offset\n }\n }\n } else {\n style.height = size\n if (!this.isRelative) {\n style.top = offset\n }\n }\n } else {\n if (this.isRelative) {\n itemStyleCache[index] = style = {\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n }\n } else {\n const offsetHorizontal = isHorizontal ? offset : 0\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: !isRtl ? offsetHorizontal : undefined,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n }\n }\n }\n\n for (const k in style) {\n if (style.hasOwnProperty(k)) {\n style[k] = convertNumber2PX(style[k])\n }\n }\n\n return style\n }\n}\n"],"names":[],"mappings":";;;;;;;AAQA,IAAI,WAAW,GAAG,CAAC,CAAA;AAiBL,MAAO,MAAM,CAAA;IAGzB,WAAuB,CAAA,KAAa,EAAY,OAAe,EAAA;QAAxC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAY,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AAK/D,QAAA,IAAA,CAAA,YAAY,GAAG;AACb,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,UAAU,EAAE,CAAC;SACd,CAAA;QAED,IAAQ,CAAA,QAAA,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QA8D9B,IAAiB,CAAA,iBAAA,GAAG,UAAU,CAAC,CAC7B,SAAsC,EACtC,OAAkC,EAClC,UAAwC,KACtC;;AAEF,YAAA,OAAO,EAAE,CAAA;AACX,SAAC,CAAC,CAAA;AAnFA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;KAC5C;AAcD,IAAA,IAAI,CAAE,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;KACnB;AAED,IAAA,MAAM,CAAE,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAC5B;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,CAAgB,aAAA,EAAA,WAAW,EAAE,CAAA,CAAE,CAAA;KACvC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACpC;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC7B;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAA;KAC1C;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;KACjG;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAA;KACvE;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAA;KACvE;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAA;KACrE;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,YAAY,CAAA;KACzB;IAED,IAAI,KAAK,CAAE,CAAyB,EAAA;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;;;;;;KAMpC;AAED,IAAA,SAAS,CAAE,IAAa,EAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAChH;AAWD,IAAA,YAAY,CAAE,KAAa,EAAA;AACzB,QAAA,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,qCAAqC,EACtC,GAAG,IAAI,CAAC,KAAK,CAAA;AAEd,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAC3C,qCAAqC,GAAG,QAAQ,GAAG,KAAK,EACxD,qCAAqC,GAAG,MAAM,GAAG,KAAK,EACtD,qCAAqC,GAAG,SAAS,GAAG,KAAK,CAC1D,CAAA;AAED,QAAA,IAAI,KAAK,CAAA;AAET,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;AACnE,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AACxB,QAAA,IAAI,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;AAExC,YAAA,KAAK,qBAAQ,cAAc,CAAC,KAAK,CAAC,CAAE,CAAA;AACpC,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,IAAI,KAAK,EAAE;AACT,wBAAA,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;AACrB,qBAAA;AAAM,yBAAA;AACL,wBAAA,KAAK,CAAC,IAAI,GAAG,MAAM,CAAA;AACpB,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,KAAK,CAAC,GAAG,GAAG,MAAM,CAAA;AACnB,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG;oBAC9B,MAAM,EAAE,CAAC,YAAY,GAAG,IAAI,GAAG,MAAM;oBACrC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM;iBACpC,CAAA;AACF,aAAA;AAAM,iBAAA;gBACL,MAAM,gBAAgB,GAAG,YAAY,GAAG,MAAM,GAAG,CAAC,CAAA;AAClD,gBAAA,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG;AAC9B,oBAAA,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE,CAAC,KAAK,GAAG,gBAAgB,GAAG,SAAS;oBAC3C,KAAK,EAAE,KAAK,GAAG,gBAAgB,GAAG,SAAS;oBAC3C,GAAG,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC;oBAC/B,MAAM,EAAE,CAAC,YAAY,GAAG,IAAI,GAAG,MAAM;oBACrC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM;iBACpC,CAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,aAAA;AACF,SAAA;AAED,QAAA,OAAO,KAAK,CAAA;KACb;AACF;;;;"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { VirtualListProps } from "../index.js";
3
- declare const VirtualList: React.ForwardRefExoticComponent<Omit<VirtualListProps<any>, "ref"> & React.RefAttributes<unknown>>;
3
+ declare const VirtualList: React.ForwardRefExoticComponent<Omit<VirtualListProps, "ref"> & React.RefAttributes<unknown>>;
4
4
  export { VirtualList as default };
@@ -1,11 +1,22 @@
1
1
  import { __rest } from '../../../node_modules/.pnpm/registry.npmjs.org_tslib@2.5.0/node_modules/tslib/tslib.es6.js';
2
2
  import { ScrollView, View } from '@tarojs/components';
3
3
  import React from 'react';
4
+ import { convertPX2Int } from '../../../utils/convert.js';
4
5
  import List from './list.js';
5
- import outerWrapper from './wrapper.js';
6
6
 
7
+ const OuterScrollView = React.forwardRef(function OuterScrollView(props, ref) {
8
+ const _a = props, { style, onScroll, onScrollNative, layout } = _a, rest = __rest(_a, ["style", "onScroll", "onScrollNative", "layout"]);
9
+ const handleScroll = (event) => {
10
+ onScroll(Object.assign(Object.assign({}, event), { currentTarget: Object.assign(Object.assign({}, event.detail), { clientWidth: convertPX2Int(style.width), clientHeight: convertPX2Int(style.height) }) }));
11
+ if (typeof onScrollNative === 'function') {
12
+ onScrollNative(event);
13
+ }
14
+ };
15
+ return React.createElement(ScrollView, Object.assign({ ref,
16
+ style, scrollY: layout === 'vertical', scrollX: layout === 'horizontal', onScroll: handleScroll }, rest));
17
+ });
7
18
  const VirtualList = React.forwardRef(function VirtualList(props, ref) {
8
- const _a = props, { direction = 'ltr', outerElementType = ScrollView, innerElementType = View, itemElementType = View, initialScrollOffset = 0, overscanCount = 1 } = _a, rest = __rest(_a, ["direction", "outerElementType", "innerElementType", "itemElementType", "initialScrollOffset", "overscanCount"]);
19
+ const _a = props, { direction = 'ltr', innerElementType = View, itemElementType = View, initialScrollOffset = 0, overscanCount = 1 } = _a, rest = __rest(_a, ["direction", "innerElementType", "itemElementType", "initialScrollOffset", "overscanCount"]);
9
20
  if ('children' in rest) {
10
21
  console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.');
11
22
  rest.item = rest.children;
@@ -14,13 +25,10 @@ const VirtualList = React.forwardRef(function VirtualList(props, ref) {
14
25
  console.warn('Taro(VirtualList): item should not be an array');
15
26
  rest.item = rest.item[0];
16
27
  }
17
- return React.createElement(List, Object.assign(Object.assign({ ref }, rest), { outerElementType,
18
- itemElementType,
19
- innerElementType,
20
- direction,
28
+ return React.createElement(List, Object.assign(Object.assign({ ref }, rest), { itemElementType,
29
+ innerElementType, outerElementType: OuterScrollView, direction,
21
30
  initialScrollOffset,
22
- overscanCount,
23
- outerWrapper }));
31
+ overscanCount }));
24
32
  });
25
33
 
26
34
  export { VirtualList as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/virtual-list/react/index.ts"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport React from 'react'\n\nimport List from './list'\nimport outerWrapper from './wrapper'\n\nimport type { VirtualListProps } from '../'\nimport type { IProps } from '../preset'\n\nconst VirtualList = React.forwardRef(function VirtualList (props: VirtualListProps, ref) {\n const {\n direction = 'ltr',\n outerElementType = ScrollView,\n innerElementType = View,\n itemElementType = View,\n initialScrollOffset = 0,\n overscanCount = 1,\n ...rest\n } = props as IProps\n\n if ('children' in rest) {\n console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.')\n rest.item = rest.children as IProps['item']\n }\n if (rest.item instanceof Array) {\n console.warn('Taro(VirtualList): item should not be an array')\n rest.item = rest.item[0]\n }\n return React.createElement(List, {\n ref,\n ...rest,\n outerElementType,\n itemElementType,\n innerElementType,\n direction,\n initialScrollOffset,\n overscanCount,\n outerWrapper,\n })\n})\n\nexport default VirtualList\n"],"names":[],"mappings":";;;;;;AASM,MAAA,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,WAAW,CAAE,KAAuB,EAAE,GAAG,EAAA;AACrF,IAAA,MAAM,EAQF,GAAA,KAAe,EARb,EACJ,SAAS,GAAG,KAAK,EACjB,gBAAgB,GAAG,UAAU,EAC7B,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,CAAC,EACvB,aAAa,GAAG,CAAC,OAEA,EADd,IAAI,GAPH,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,eAAA,CAQL,CAAkB,CAAA;IAEnB,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,GAAG,oCAAoC,CAAC,CAAA;AAC/G,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAA0B,CAAA;AAC5C,KAAA;AACD,IAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACzB,KAAA;IACD,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,gCAC7B,GAAG,EAAA,EACA,IAAI,CAAA,EAAA,EACP,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,mBAAmB;QACnB,aAAa;AACb,QAAA,YAAY,IACZ,CAAA;AACJ,CAAC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/virtual-list/react/index.ts"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport React from 'react'\n\nimport { convertPX2Int } from '../../../utils/convert'\nimport List from './list'\n\nimport type { BaseEventOrig } from '@tarojs/components'\nimport type { VirtualListProps } from '../'\nimport type { IProps } from '../preset'\n\nconst OuterScrollView = React.forwardRef(\n function OuterScrollView (props, ref) {\n const { style, onScroll, onScrollNative, layout, ...rest } = props as IProps\n const handleScroll = (event: BaseEventOrig<VirtualListProps.IVirtualListEventDetail>) => {\n onScroll({\n ...event as any,\n currentTarget: {\n ...event.detail,\n clientWidth: convertPX2Int(style.width),\n clientHeight: convertPX2Int(style.height)\n } as any\n })\n\n if (typeof onScrollNative === 'function') {\n onScrollNative(event)\n }\n }\n\n return React.createElement<any>(ScrollView, {\n ref,\n style,\n scrollY: layout === 'vertical',\n scrollX: layout === 'horizontal',\n onScroll: handleScroll,\n ...rest\n })\n }\n)\n\nconst VirtualList = React.forwardRef(function VirtualList (props: VirtualListProps, ref) {\n const {\n direction = 'ltr',\n innerElementType = View,\n itemElementType = View,\n initialScrollOffset = 0,\n overscanCount = 1,\n ...rest\n } = props as IProps\n\n if ('children' in rest) {\n console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.')\n rest.item = rest.children as IProps['item']\n }\n if (rest.item instanceof Array) {\n console.warn('Taro(VirtualList): item should not be an array')\n rest.item = rest.item[0]\n }\n return React.createElement(List, {\n ref,\n ...rest,\n itemElementType,\n innerElementType,\n outerElementType: OuterScrollView,\n direction,\n initialScrollOffset,\n overscanCount\n })\n})\n\nexport default VirtualList\n"],"names":[],"mappings":";;;;;;AAUA,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CACtC,SAAS,eAAe,CAAE,KAAK,EAAE,GAAG,EAAA;AAClC,IAAA,MAAM,KAAuD,KAAe,EAAtE,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAA6B,GAAA,EAAA,EAAxB,IAAI,GAAlD,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,CAAoD,CAAkB,CAAA;AAC5E,IAAA,MAAM,YAAY,GAAG,CAAC,KAA8D,KAAI;AACtF,QAAA,QAAQ,CACH,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAY,CACf,EAAA,EAAA,aAAa,EAAE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,KAAK,CAAC,MAAM,CAAA,EAAA,EACf,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAA,CACnC,IACR,CAAA;AAEF,QAAA,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;YACxC,cAAc,CAAC,KAAK,CAAC,CAAA;AACtB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,OAAO,KAAK,CAAC,aAAa,CAAM,UAAU,kBACxC,GAAG;AACH,QAAA,KAAK,EACL,OAAO,EAAE,MAAM,KAAK,UAAU,EAC9B,OAAO,EAAE,MAAM,KAAK,YAAY,EAChC,QAAQ,EAAE,YAAY,EACnB,EAAA,IAAI,EACP,CAAA;AACJ,CAAC,CACF,CAAA;AAEK,MAAA,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,WAAW,CAAE,KAAuB,EAAE,GAAG,EAAA;AACrF,IAAA,MAAM,EAOF,GAAA,KAAe,EAPb,EACJ,SAAS,GAAG,KAAK,EACjB,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,CAAC,EACvB,aAAa,GAAG,CAAC,EAAA,GAAA,EAEA,EADd,IAAI,GANH,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,eAAA,CAOL,CAAkB,CAAA;IAEnB,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,GAAG,oCAAoC,CAAC,CAAA;AAC/G,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAA0B,CAAA;AAC5C,KAAA;AACD,IAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACzB,KAAA;IACD,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,gCAC7B,GAAG,EAAA,EACA,IAAI,CAAA,EAAA,EACP,eAAe;AACf,QAAA,gBAAgB,EAChB,gBAAgB,EAAE,eAAe,EACjC,SAAS;QACT,mBAAmB;AACnB,QAAA,aAAa,IACb,CAAA;AACJ,CAAC;;;;"}
@@ -3,6 +3,7 @@ import ListSet from "../list-set.js";
3
3
  import Preset from "../preset.js";
4
4
  import { IProps } from "../preset.js";
5
5
  interface IState {
6
+ id: string;
6
7
  instance: List;
7
8
  isScrolling: boolean;
8
9
  scrollDirection: 'forward' | 'backward';
@@ -19,7 +20,7 @@ declare class List extends React.PureComponent<IProps, IState> {
19
20
  refresh: () => void;
20
21
  _outerRef: any;
21
22
  _resetIsScrollingTimeoutId: any;
22
- _callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, startIndex: any, stopIndex: any) => any>;
23
+ _callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, visibleStartIndex: any, visibleStopIndex: any) => any>;
23
24
  _callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
24
25
  _callPropsCallbacks(prevProps?: any, prevState?: any): void;
25
26
  _getSizeUploadSync: (index: number, isHorizontal: boolean) => Promise<unknown>;
@@ -33,13 +34,11 @@ declare class List extends React.PureComponent<IProps, IState> {
33
34
  _outerRefSetter: (ref: any) => void;
34
35
  _resetIsScrollingDebounced: () => void;
35
36
  _resetIsScrolling: () => void;
36
- scrollTo(scrollOffset?: number, enhanced?: true): Promise<any>;
37
- scrollToItem(index: number, align?: string, enhanced?: true): void;
37
+ scrollTo(scrollOffset?: number): Promise<any>;
38
+ scrollToItem(index: number, align?: string): void;
38
39
  componentDidMount(): void;
39
40
  componentDidUpdate(prevProps: IProps, prevState: IState): void;
40
41
  componentWillUnmount(): void;
41
- getRenderItemNode(index: number, type?: 'node' | 'placeholder'): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
42
- getRenderColumnNode(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
43
42
  render(): React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
44
43
  }
45
44
  export { IState, List as default };