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

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,251 +0,0 @@
1
- import { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components';
2
- import { Component, ComponentType, CSSProperties } from 'react';
3
- interface VirtualWaterfallProps<T = any> extends Omit<StandardProps, 'children'> {
4
- /** 高度 */
5
- height: string | number;
6
- /** 宽度 */
7
- width: string | number;
8
- /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */
9
- column?: number;
10
- /** 瀑布流单列宽度,默认值依照 width / column 计算 */
11
- columnWidth?: number;
12
- /** 子组件 */
13
- item: ComponentType<{
14
- /** 组件 ID */
15
- id: string;
16
- /** 单项的样式,样式必须传入组件的 style 中 */
17
- style?: CSSProperties;
18
- /** 组件渲染的数据 */
19
- data: T[];
20
- /** 组件渲染数据的索引 */
21
- index: number;
22
- /** 组件是否正在滚动,当 useIsScrolling 值为 true 时返回布尔值,否则返回 undefined */
23
- isScrolling?: boolean;
24
- }>;
25
- /** 列表的长度 */
26
- itemCount: number;
27
- /** 渲染数据 */
28
- itemData: T[];
29
- /** 单项的大小 */
30
- itemSize: number | ((index?: number, itemData?: T[]) => number);
31
- /** 解开高度列表单项大小限制,默认值使用: itemSize。
32
- *
33
- * > Note: 通过 itemSize 设置的初始高度与子节点实际高度差异过大会导致隐患,建议将单页大小设置接近于现实高度,在该模式下可以提升用户体验。
34
- * > - unlimitedSize 模式下如果传入函数,只会调用一次用于设置初始值
35
- * > - 非 unlimitedSize 模式下如果传入函数,为避免性能问题,每个节点只会调用一次用于设置初始值
36
- * @default false
37
- */
38
- unlimitedSize?: boolean;
39
- /** 布局方式
40
- * @default "absolute"
41
- */
42
- position?: 'absolute' | 'relative' | 'brick';
43
- /** 初始滚动偏移值 */
44
- initialScrollOffset?: number;
45
- /** 在可视区域之外预渲染的距离,值设置得越高,快速滚动时出现白屏的概率就越小,相应地,每次滚动的性能会变得越差。
46
- * > 建议至少大于等于 itemSize 的最大值,但不要设置超过虚拟列表高度。
47
- * @default 50
48
- */
49
- overscanDistance?: number;
50
- /** 上下滚动预占位节点
51
- * @default 0
52
- */
53
- placeholderCount?: number;
54
- /** 是否注入 isScrolling 属性到 item 组件。这个参数一般用于实现滚动骨架屏(或其它 placeholder) 时比较有用。 */
55
- useIsScrolling?: boolean;
56
- /** 通过 ScrollViewContext 优化组件滚动性能
57
- * @default true
58
- * @note 部分平台不支持,使用时请注意甄别
59
- */
60
- enhanced?: boolean;
61
- /** 列表外部容器组件类型。
62
- * @default ScrollView
63
- */
64
- outerElementType?: ComponentType | string;
65
- /** 列表内部容器组件类型。
66
- * @default View
67
- */
68
- innerElementType?: ComponentType | string;
69
- /** 列表子节点容器组件类型。
70
- * @default View
71
- */
72
- itemElementType?: ComponentType | string;
73
- /** 顶部区域 */
74
- renderTop?: ComponentType<{
75
- /** 组件 ID */
76
- id: string;
77
- }>;
78
- /** 底部区域 */
79
- renderBottom?: ComponentType<{
80
- /** 组件 ID */
81
- id: string;
82
- }>;
83
- /** 滚动时调用函数 */
84
- onScroll?: (event: VirtualWaterfallProps.IVirtualWaterfallEvent<VirtualWaterfallProps.IVirtualWaterfallEventDetail>) => void;
85
- /** 调用平台原生的滚动监听函数。 */
86
- onScrollNative?: BaseEventOrigFunction<ScrollViewProps.onScrollDetail>;
87
- /** 触顶事件 */
88
- onScrollToUpper?: () => void;
89
- /** 触底事件 */
90
- onScrollToLower?: () => void;
91
- /** 触顶事件触发时距页面顶部距离
92
- * @default 50
93
- */
94
- upperThreshold?: number;
95
- /** 触底事件触发时距页面底部距离
96
- * @default 50
97
- */
98
- lowerThreshold?: number;
99
- style?: CSSProperties;
100
- }
101
- declare namespace VirtualWaterfallProps {
102
- interface IVirtualWaterfallEventDetail extends ScrollViewProps.onScrollDetail {
103
- scrollLeft: number;
104
- scrollTop: number;
105
- scrollHeight: number;
106
- scrollWidth: number;
107
- clientHeight: number;
108
- clientWidth: number;
109
- diffOffset: number;
110
- }
111
- interface IVirtualWaterfallEvent<T extends ScrollViewProps.onScrollDetail = ScrollViewProps.onScrollDetail> extends BaseEventOrig {
112
- /** 滚动方向,可能值为 forward 往前, backward 往后。 */
113
- scrollDirection: 'forward' | 'backward';
114
- /** 滚动距离 */
115
- scrollOffset: number;
116
- /** 当滚动是由 scrollTo() 或 scrollToItem() 调用时返回 true,否则返回 false */
117
- scrollUpdateWasRequested: boolean;
118
- /** 滚动信息 */
119
- detail: T;
120
- }
121
- }
122
- /** 虚拟瀑布流
123
- * @classification viewContainer
124
- * @supported weapp, swan, alipay, tt, qq, jd, h5
125
- * @example_react
126
- * ```tsx
127
- * import { VirtualWaterfall } from `@tarojs/components-advanced`
128
- *
129
- * function buildData (offset = 0) {
130
- * return Array(100).fill(0).map((_, i) => i + offset);
131
- * }
132
- *
133
- * const Row = React.memo(({ id, index, data }) => {
134
- * return (
135
- * <View id={id} className={index % 2 ? 'ListItemOdd' : 'ListItemEven'}>
136
- * Row {index}
137
- * </View>
138
- * );
139
- * })
140
- *
141
- * export default class Index extends Component {
142
- * state = {
143
- * data: buildData(0),
144
- * }
145
- *
146
- * render() {
147
- * const { data } = this.state
148
- * const dataLen = data.length
149
- * return (
150
- * <VirtualWaterfall
151
- * height={500} // 列表的高度
152
- * width='100%' // 列表的宽度
153
- * item={Row} // 列表单项组件,这里只能传入一个组件
154
- * itemData={data} // 渲染列表的数据
155
- * itemCount={dataLen} // 渲染列表的长度
156
- * itemSize={100} // 列表单项的高度
157
- * />
158
- * );
159
- * }
160
- * }
161
- * ```
162
- * @example_vue
163
- * ```js
164
- * // app.js 入口文件
165
- * import Vue from 'vue'
166
- * import { VirtualWaterfall } from `@tarojs/components-advanced`
167
- *
168
- * Vue.use(VirtualWaterfall)
169
- * ```
170
- * ```js
171
- * <! –– row.vue 单项组件 ––>
172
- * <template>
173
- * <view
174
- * :class="index % 2 ? 'ListItemOdd' : 'ListItemEven'"
175
- * >
176
- * Row {{ index }} : {{ data[index] }}
177
- * </view>
178
- * </template>
179
- *
180
- * <script>
181
- * export default {
182
- * props: ['index', 'data']
183
- * }
184
- * </script>
185
- * ```
186
- * ```js
187
- * <! –– page.vue 页面组件 ––>
188
- * <template>
189
- * <virtual-waterfall
190
- * :height="500"
191
- * :item-data="list"
192
- * :item-count="list.length"
193
- * :item-size="100"
194
- * :item="Row"
195
- * width="100%"
196
- * />
197
- * </template>
198
- *
199
- * <script>
200
- * import Row from './row.vue'
201
- * import { markRaw } from 'vue'
202
- *
203
- * function buildData (offset = 0) {
204
- * return Array(100).fill(0).map((_, i) => i + offset)
205
- * }
206
- *
207
- * export default {
208
- * data() {
209
- * return {
210
- * Row: markRaw(Row),
211
- * list: buildData(0)
212
- * }
213
- * },
214
- * }
215
- * </script>
216
- * ```
217
- * @see https://taro-docs.jd.com/docs/virtual-waterfall
218
- */
219
- declare class VirtualWaterfallComponent extends Component<VirtualWaterfallProps> {
220
- /**
221
- * 滚动到指定的地点。
222
- */
223
- /**
224
- * 滚动到指定的地点。
225
- */
226
- scrollTo(scrollOffset: number): void;
227
- /** 滚动到指定的条目。
228
- * @param index 指定条目的索引。
229
- * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。
230
- *
231
- * - start:指定条目在可视区域的顶部。
232
- * - end:指定条目在可视区域的底部。
233
- * - center:指定条目在可视区域的中间。
234
- * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。
235
- * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。
236
- */
237
- /** 滚动到指定的条目。
238
- * @param index 指定条目的索引。
239
- * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。
240
- *
241
- * - start:指定条目在可视区域的顶部。
242
- * - end:指定条目在可视区域的底部。
243
- * - center:指定条目在可视区域的中间。
244
- * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。
245
- * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。
246
- */
247
- scrollToItem(index: number, align: 'start' | 'end' | 'center' | 'auto' | 'smart'): void;
248
- }
249
- type VirtualWaterfall = VirtualWaterfallComponent;
250
- declare const VirtualWaterfall: typeof VirtualWaterfallComponent;
251
- export { VirtualWaterfall as default, VirtualWaterfall, VirtualWaterfallProps };
@@ -1,6 +0,0 @@
1
- const VirtualWaterfall = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')
2
- ? require('./vue').default
3
- : require('./react').default;
4
-
5
- export { VirtualWaterfall, VirtualWaterfall as default };
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/virtual-waterfall/index.ts"],"sourcesContent":["import type { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components'\nimport type { Component, ComponentType, CSSProperties } from 'react'\n\ninterface VirtualWaterfallProps<T = any> extends Omit<StandardProps, 'children'> {\n /** 高度 */\n height: string | number\n /** 宽度 */\n width: string | number\n /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */\n column?: number\n /** 瀑布流单列宽度,默认值依照 width / column 计算 */\n columnWidth?: number\n /** 子组件 */\n item: ComponentType<{\n /** 组件 ID */\n id: string\n /** 单项的样式,样式必须传入组件的 style 中 */\n style?: CSSProperties\n /** 组件渲染的数据 */\n data: T[]\n /** 组件渲染数据的索引 */\n index: number\n /** 组件是否正在滚动,当 useIsScrolling 值为 true 时返回布尔值,否则返回 undefined */\n isScrolling?: boolean\n }>\n /** 列表的长度 */\n itemCount: number\n /** 渲染数据 */\n itemData: T[]\n /** 单项的大小 */\n itemSize: number | ((index?: number, itemData?: T[]) => number)\n /** 解开高度列表单项大小限制,默认值使用: itemSize。\n *\n * > Note: 通过 itemSize 设置的初始高度与子节点实际高度差异过大会导致隐患,建议将单页大小设置接近于现实高度,在该模式下可以提升用户体验。\n * > - unlimitedSize 模式下如果传入函数,只会调用一次用于设置初始值\n * > - 非 unlimitedSize 模式下如果传入函数,为避免性能问题,每个节点只会调用一次用于设置初始值\n * @default false\n */\n unlimitedSize?: boolean\n /** 布局方式\n * @default \"absolute\"\n */\n position?: 'absolute' | 'relative' | 'brick'\n /** 初始滚动偏移值 */\n initialScrollOffset?: number\n /** 在可视区域之外预渲染的距离,值设置得越高,快速滚动时出现白屏的概率就越小,相应地,每次滚动的性能会变得越差。\n * > 建议至少大于等于 itemSize 的最大值,但不要设置超过虚拟列表高度。\n * @default 50\n */\n overscanDistance?: number\n /** 上下滚动预占位节点\n * @default 0\n */\n placeholderCount?: number\n /** 是否注入 isScrolling 属性到 item 组件。这个参数一般用于实现滚动骨架屏(或其它 placeholder) 时比较有用。 */\n useIsScrolling?: boolean\n /** 通过 ScrollViewContext 优化组件滚动性能\n * @default true\n * @note 部分平台不支持,使用时请注意甄别\n */\n enhanced?: boolean\n /** 列表外部容器组件类型。\n * @default ScrollView\n */\n outerElementType?: ComponentType | string\n /** 列表内部容器组件类型。\n * @default View\n */\n innerElementType?: ComponentType | string\n /** 列表子节点容器组件类型。\n * @default View\n */\n itemElementType?: ComponentType | string\n /** 顶部区域 */\n renderTop?: ComponentType<{\n /** 组件 ID */\n id: string\n }>\n /** 底部区域 */\n renderBottom?: ComponentType<{\n /** 组件 ID */\n id: string\n }>\n /** 滚动时调用函数 */\n onScroll?: (event: VirtualWaterfallProps.IVirtualWaterfallEvent<VirtualWaterfallProps.IVirtualWaterfallEventDetail>) => void\n /** 调用平台原生的滚动监听函数。 */\n onScrollNative?: BaseEventOrigFunction<ScrollViewProps.onScrollDetail>\n /** 触顶事件 */\n onScrollToUpper?: () => void\n /** 触底事件 */\n onScrollToLower?: () => void\n /** 触顶事件触发时距页面顶部距离\n * @default 50\n */\n upperThreshold?: number\n /** 触底事件触发时距页面底部距离\n * @default 50\n */\n lowerThreshold?: number\n style?: CSSProperties\n}\n\ndeclare namespace VirtualWaterfallProps {\n interface IVirtualWaterfallEventDetail extends ScrollViewProps.onScrollDetail {\n scrollLeft: number\n scrollTop: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n diffOffset: number\n }\n\n interface IVirtualWaterfallEvent<T extends ScrollViewProps.onScrollDetail = ScrollViewProps.onScrollDetail> extends BaseEventOrig {\n /** 滚动方向,可能值为 forward 往前, backward 往后。 */\n scrollDirection: 'forward' | 'backward'\n /** 滚动距离 */\n scrollOffset: number\n /** 当滚动是由 scrollTo() 或 scrollToItem() 调用时返回 true,否则返回 false */\n scrollUpdateWasRequested: boolean\n /** 滚动信息 */\n detail: T\n }\n}\n\n/** 虚拟瀑布流\n * @classification viewContainer\n * @supported weapp, swan, alipay, tt, qq, jd, h5\n * @example_react\n * ```tsx\n * import { VirtualWaterfall } from `@tarojs/components-advanced`\n *\n * function buildData (offset = 0) {\n * return Array(100).fill(0).map((_, i) => i + offset);\n * }\n *\n * const Row = React.memo(({ id, index, data }) => {\n * return (\n * <View id={id} className={index % 2 ? 'ListItemOdd' : 'ListItemEven'}>\n * Row {index}\n * </View>\n * );\n * })\n *\n * export default class Index extends Component {\n * state = {\n * data: buildData(0),\n * }\n *\n * render() {\n * const { data } = this.state\n * const dataLen = data.length\n * return (\n * <VirtualWaterfall\n * height={500} // 列表的高度\n * width='100%' // 列表的宽度\n * item={Row} // 列表单项组件,这里只能传入一个组件\n * itemData={data} // 渲染列表的数据\n * itemCount={dataLen} // 渲染列表的长度\n * itemSize={100} // 列表单项的高度\n * />\n * );\n * }\n * }\n * ```\n * @example_vue\n * ```js\n * // app.js 入口文件\n * import Vue from 'vue'\n * import { VirtualWaterfall } from `@tarojs/components-advanced`\n *\n * Vue.use(VirtualWaterfall)\n * ```\n * ```js\n * <! –– row.vue 单项组件 ––>\n * <template>\n * <view\n * :class=\"index % 2 ? 'ListItemOdd' : 'ListItemEven'\"\n * >\n * Row {{ index }} : {{ data[index] }}\n * </view>\n * </template>\n *\n * <script>\n * export default {\n * props: ['index', 'data']\n * }\n * </script>\n * ```\n * ```js\n * <! –– page.vue 页面组件 ––>\n * <template>\n * <virtual-waterfall\n * :height=\"500\"\n * :item-data=\"list\"\n * :item-count=\"list.length\"\n * :item-size=\"100\"\n * :item=\"Row\"\n * width=\"100%\"\n * />\n * </template>\n *\n * <script>\n * import Row from './row.vue'\n * import { markRaw } from 'vue'\n *\n * function buildData (offset = 0) {\n * return Array(100).fill(0).map((_, i) => i + offset)\n * }\n *\n * export default {\n * data() {\n * return {\n * Row: markRaw(Row),\n * list: buildData(0)\n * }\n * },\n * }\n * </script>\n * ```\n * @see https://taro-docs.jd.com/docs/virtual-waterfall\n */\ndeclare class VirtualWaterfallComponent extends Component<VirtualWaterfallProps> {\n /**\n * 滚动到指定的地点。\n */\n public scrollTo(scrollOffset: number): void\n\n /** 滚动到指定的条目。\n * @param index 指定条目的索引。\n * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。\n *\n * - start:指定条目在可视区域的顶部。\n * - end:指定条目在可视区域的底部。\n * - center:指定条目在可视区域的中间。\n * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。\n * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。\n */\n public scrollToItem(index: number, align: 'start' | 'end' | 'center' | 'auto' | 'smart'): void\n}\n\ndeclare type VirtualWaterfall = VirtualWaterfallComponent\nconst VirtualWaterfall: typeof VirtualWaterfallComponent = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')\n ? require('./vue').default\n : require('./react').default\n\nexport { VirtualWaterfall, VirtualWaterfallProps }\nexport default VirtualWaterfall\n"],"names":[],"mappings":"AAkPA,MAAM,gBAAgB,GAAqC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;AAC7H,MAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO;AAC1B,MAAE,OAAO,CAAC,SAAS,CAAC,CAAC;;;;"}
@@ -1,50 +0,0 @@
1
- import { IProps } from "./preset.js";
2
- type TProps = Pick<IProps, 'column' | 'columnWidth' | 'width' | 'height' | 'itemCount' | 'itemData' | 'itemSize' | 'overscanDistance' | 'unlimitedSize'>;
3
- declare class ListMap {
4
- protected props: TProps;
5
- protected refresh?: TFunc;
6
- _columns: number;
7
- _columnMap: [number, number][][];
8
- _items: string[];
9
- mode?: 'normal' | 'function' | 'unlimited';
10
- minItemSize: number;
11
- maxItemSize: number;
12
- defaultSize: number;
13
- wrapperHeight: number;
14
- wrapperWidth: number;
15
- columns: number;
16
- columnWidth: string | number;
17
- refreshCounter: number;
18
- constructor(props: TProps, refresh?: TFunc);
19
- get isNormalMode(): boolean;
20
- get isFunctionMode(): boolean;
21
- get isUnlimitedMode(): boolean;
22
- get length(): number;
23
- get overscan(): number;
24
- get columnsSize(): any[];
25
- get maxColumnSize(): number;
26
- get minColumnSize(): number;
27
- get maxColumnIndex(): number;
28
- get minColumnIndex(): number;
29
- update(props: TProps): void;
30
- updateColumns(columns?: number): void;
31
- updateItem(itemIndex: number): any;
32
- setSizeByPosition(column?: number, row?: number, itemSize?: number, itemIndex?: number): void;
33
- getSize(itemIndex?: number): number;
34
- getSizeByPosition(column?: number, row?: number, itemIndex?: number): number;
35
- // 不支持 normal 模式
36
- getColumnList(column: number): [number, number][];
37
- getColumnLength(columnIndex: number): number;
38
- getColumnSize(columnIndex?: number): number;
39
- getItemPosition(itemIndex: number): false | number[];
40
- getItemIndexByPosition(column?: number, row?: number): number;
41
- getOffsetSize(itemIndex: number): number;
42
- getOffsetSizeByPosition(column?: number, row?: number): number;
43
- getOffsetSizeCache: import("memoize-one").MemoizedFn<(this: any, column: any, row: any, _flag?: any) => number>;
44
- getStartIndex(column: number, offset: number): number;
45
- getStopIndex(column: number, offset: number, start?: number): number;
46
- getRangeToRender(direction: 'forward' | 'backward', column: number, offset: number, block?: boolean): number[];
47
- getOffsetForIndexAndAlignment(index: number, align: string, scrollOffset: number): number;
48
- compareSizeByPosition(column?: number, row?: number, size?: number): boolean;
49
- }
50
- export { ListMap as default };
@@ -1,280 +0,0 @@
1
- import { isFunction, isNumber } from '@tarojs/shared';
2
- import memoizeOne from 'memoize-one';
3
- import '../../utils/index.js';
4
- import { getOffsetForIndexAndAlignment } from '../../utils/helper.js';
5
-
6
- class ListMap {
7
- constructor(props, refresh) {
8
- this.props = props;
9
- this.refresh = refresh;
10
- this._columnMap = []; // [itemIndex, itemSize]
11
- this._items = []; // columnIndex-rowIndex
12
- this.minItemSize = 0;
13
- this.maxItemSize = 0;
14
- this.defaultSize = 1;
15
- this.wrapperHeight = 0;
16
- this.wrapperWidth = 0;
17
- this.columns = 2;
18
- this.columnWidth = 0;
19
- this.refreshCounter = 0;
20
- this.getOffsetSizeCache = memoizeOne((column, row, _flag = this.refreshCounter) => {
21
- return this.getOffsetSizeByPosition(column, row);
22
- });
23
- // Note: 不考虑列表模式切换情况,可能会导致列表抖动体验过差
24
- if (this.props.unlimitedSize) {
25
- this.mode = 'unlimited';
26
- }
27
- else if (isFunction(this.props.itemSize)) {
28
- this.mode = 'function';
29
- }
30
- else if (isNumber(this.props.itemSize)) {
31
- this.mode = 'normal';
32
- }
33
- this.defaultSize = (isFunction(this.props.itemSize) ? this.props.itemSize() : this.props.itemSize) || 1;
34
- this.minItemSize = this.defaultSize;
35
- this.maxItemSize = this.defaultSize;
36
- this.update(props);
37
- }
38
- get isNormalMode() {
39
- return this.mode === 'normal';
40
- }
41
- get isFunctionMode() {
42
- return this.mode === 'function';
43
- }
44
- get isUnlimitedMode() {
45
- return this.mode === 'unlimited';
46
- }
47
- get length() {
48
- return this.props.itemCount || 100;
49
- }
50
- get overscan() {
51
- return this.props.overscanDistance || 50;
52
- }
53
- get columnsSize() {
54
- if (this.isNormalMode) {
55
- return new Array(this._columns).fill(this.getColumnSize());
56
- }
57
- return new Array(this._columns).fill(0).map((_, i) => this.getColumnSize(i));
58
- }
59
- get maxColumnSize() {
60
- if (this.isNormalMode)
61
- return this.getColumnSize();
62
- return Math.max(...this.columnsSize);
63
- }
64
- get minColumnSize() {
65
- if (this.isNormalMode)
66
- return this.getColumnSize();
67
- return Math.min(...this.columnsSize);
68
- }
69
- get maxColumnIndex() {
70
- if (this.isNormalMode)
71
- return 0;
72
- const list = this.columnsSize;
73
- return list.indexOf(Math.max(...list));
74
- }
75
- get minColumnIndex() {
76
- if (this.isNormalMode)
77
- return 0;
78
- const list = this.columnsSize;
79
- return list.indexOf(Math.min(...list));
80
- }
81
- update(props) {
82
- this.props = props;
83
- const { column, columnWidth } = this.props;
84
- if (typeof column === 'number' && column > 0) {
85
- this.columns = column;
86
- this.columnWidth = this.wrapperWidth / column;
87
- }
88
- else if (typeof columnWidth === 'number' && columnWidth > 0) {
89
- this.columns = Math.floor(this.wrapperWidth / columnWidth);
90
- this.columnWidth = columnWidth;
91
- }
92
- else {
93
- this.columns = 2;
94
- this.columnWidth = this.wrapperWidth / this.columns;
95
- }
96
- this.columnWidth || (this.columnWidth = `calc(100% / ${this.columns})`);
97
- this.updateColumns(this.columns);
98
- // this.updateItem(this.length - 1)
99
- }
100
- updateColumns(columns = 2) {
101
- if (!this.isNormalMode && this._columns !== columns) {
102
- this._columns = columns;
103
- this._columnMap = new Array(this._columns).fill(0).map(() => []);
104
- this._items = [];
105
- }
106
- }
107
- updateItem(itemIndex) {
108
- if (this.isNormalMode)
109
- return;
110
- if (itemIndex >= this.length)
111
- return this.updateItem(this.length - 1);
112
- for (let i = 0; i <= itemIndex; i++) {
113
- const position = this.getItemPosition(i);
114
- if (position)
115
- continue;
116
- const column = this.minColumnIndex;
117
- const row = this.getColumnLength(column);
118
- this._items[i] = `${column}-${row}`;
119
- const itemSize = this.getSizeByPosition(column, row, i);
120
- if (!this.compareSizeByPosition(column, row, itemSize)) {
121
- this.setSizeByPosition(column, row, itemSize, i);
122
- }
123
- }
124
- }
125
- setSizeByPosition(column = 0, row = 0, itemSize = this.defaultSize, itemIndex = this.getItemIndexByPosition(column, row)) {
126
- var _a;
127
- if (itemIndex >= 0) {
128
- if (this.maxItemSize < itemSize || this.maxItemSize === 0) {
129
- this.maxItemSize = itemSize;
130
- }
131
- if (this.minItemSize > itemSize || this.minItemSize === 0) {
132
- this.minItemSize = itemSize;
133
- }
134
- this._columnMap[column][row] = [itemIndex, itemSize];
135
- if (!this.isNormalMode) {
136
- (_a = this.refresh) === null || _a === void 0 ? void 0 : _a.call(this);
137
- this.refreshCounter++;
138
- }
139
- }
140
- }
141
- getSize(itemIndex = 0) {
142
- const position = this.getItemPosition(itemIndex);
143
- if (position) {
144
- return this.getSizeByPosition(...position, itemIndex);
145
- }
146
- else {
147
- return this.defaultSize;
148
- }
149
- }
150
- getSizeByPosition(column = 0, row = 0, itemIndex = this.getItemIndexByPosition(column, row)) {
151
- var _a;
152
- if (this.isNormalMode)
153
- return this.defaultSize;
154
- let itemSize = (_a = this.getColumnList(column)[row]) === null || _a === void 0 ? void 0 : _a[1];
155
- if (typeof itemSize === 'number')
156
- return itemSize;
157
- itemSize = (isFunction(this.props.itemSize) ? this.props.itemSize(itemIndex, this.props.itemData) : this.props.itemSize) || this.defaultSize;
158
- this.setSizeByPosition(column, row, itemSize);
159
- return itemSize;
160
- }
161
- // 不支持 normal 模式
162
- getColumnList(column) {
163
- var _a;
164
- (_a = this._columnMap)[column] || (_a[column] = []);
165
- return this._columnMap[column];
166
- }
167
- getColumnLength(columnIndex) {
168
- if (this.isNormalMode)
169
- return Math.ceil(this.length / this._columns);
170
- return this.getColumnList(columnIndex).length;
171
- }
172
- getColumnSize(columnIndex = 0) {
173
- if (this.isNormalMode) {
174
- return this.defaultSize * this.getColumnLength(columnIndex);
175
- }
176
- // Note: 不考虑未同步节点情况
177
- return this.getOffsetSizeCache(columnIndex, this.getColumnLength(columnIndex));
178
- }
179
- getItemPosition(itemIndex) {
180
- var _a;
181
- if (this.isNormalMode) {
182
- const column = itemIndex % this._columns;
183
- const row = Math.floor(itemIndex / this._columns);
184
- return [column, row];
185
- }
186
- return ((_a = this._items[itemIndex]) === null || _a === void 0 ? void 0 : _a.split('-').map(Number)) || false;
187
- }
188
- getItemIndexByPosition(column = 0, row = 0) {
189
- if (this.isNormalMode) {
190
- return row * this._columns + column;
191
- }
192
- const columnList = this.getColumnList(column);
193
- const [itemIndex] = columnList[row] || [];
194
- return itemIndex;
195
- }
196
- getOffsetSize(itemIndex) {
197
- const [column, row] = this.getItemPosition(itemIndex) || [];
198
- return this.getOffsetSizeCache(column, row);
199
- }
200
- getOffsetSizeByPosition(column = 0, row = 0) {
201
- column = Math.max(0, column);
202
- row = Math.max(0, row);
203
- let sum = 0;
204
- for (let i = 0; i < row; i++) {
205
- sum += this.getSizeByPosition(column, i);
206
- }
207
- return sum;
208
- }
209
- getStartIndex(column, offset) {
210
- if (offset <= 0)
211
- return 0;
212
- if (this.isNormalMode) {
213
- const size = this.minItemSize || 1;
214
- return Math.max(0, Math.floor(offset / size));
215
- }
216
- const columnList = this.getColumnList(column);
217
- const columnLength = columnList.length - 1;
218
- let x = Math.floor(offset / (this.maxItemSize || 1));
219
- let y = Math.ceil(offset / (this.minItemSize || 1));
220
- this.updateItem(this.getItemIndexByPosition(column, y));
221
- x = Math.min(x, columnLength);
222
- y = Math.min(y, columnLength);
223
- while (this.getOffsetSizeCache(column, x - 1) < offset && this.getOffsetSizeCache(column, y - 1) > offset && x < y) {
224
- x < columnLength && x++;
225
- y > 0 && y--;
226
- }
227
- return Math.max(0, Math.min(this.getOffsetSizeCache(column, x - 1) > offset ? x : y, columnLength) - 1);
228
- }
229
- getStopIndex(column, offset, start = 0) {
230
- if (offset <= 0)
231
- return 0;
232
- if (this.isNormalMode) {
233
- const size = this.minItemSize || 1;
234
- const count = Math.ceil(offset / size);
235
- return Math.min(count, this.getColumnSize(column));
236
- }
237
- const columnList = this.getColumnList(column);
238
- const columnLength = columnList.length - 1;
239
- let x = Math.max(start, Math.floor(offset / (this.maxItemSize || 1)));
240
- let y = Math.max(start, Math.ceil(offset / (this.minItemSize || 1)));
241
- this.updateItem(this.getItemIndexByPosition(column, y));
242
- x = Math.min(x, columnLength);
243
- y = Math.min(y, columnLength);
244
- while (this.getOffsetSizeCache(column, x) < offset && this.getOffsetSizeCache(column, y) > offset && x < y) {
245
- x < columnLength && x++;
246
- y > 0 && y--;
247
- }
248
- return Math.max(1, Math.min(this.getOffsetSizeCache(column, x) > offset ? x : y, columnLength) + 1);
249
- }
250
- getRangeToRender(direction, column, offset, block = false) {
251
- if (this.length === 0)
252
- return [0, 0];
253
- const scrollSize = this.maxColumnSize;
254
- const backwardDistance = !block || direction === 'backward' ? Math.max(0, this.overscan) : 0;
255
- const forwardDistance = !block || direction === 'forward' ? Math.max(0, this.overscan) : 0;
256
- const overscanBackward = this.getStartIndex(column, Math.max(0, offset - this.wrapperHeight - backwardDistance));
257
- const overscanForward = this.getStopIndex(column, Math.max(0, Math.min(scrollSize, offset + this.wrapperHeight + forwardDistance)), overscanBackward);
258
- return [overscanBackward, overscanForward];
259
- }
260
- getOffsetForIndexAndAlignment(index, align, scrollOffset) {
261
- return getOffsetForIndexAndAlignment({
262
- align,
263
- containerSize: this.wrapperHeight,
264
- currentOffset: scrollOffset,
265
- scrollSize: this.getOffsetSize(this.length),
266
- slideSize: this.getColumnSize(index),
267
- targetOffset: this.getOffsetSize(index),
268
- });
269
- }
270
- compareSizeByPosition(column = 0, row = 0, size = this.getSizeByPosition(column, row)) {
271
- var _a, _b;
272
- if (this.isNormalMode)
273
- return true;
274
- const origenSize = (_b = (_a = this._columnMap[column]) === null || _a === void 0 ? void 0 : _a[row]) === null || _b === void 0 ? void 0 : _b[1];
275
- return typeof origenSize === 'number' && origenSize === size;
276
- }
277
- }
278
-
279
- export { ListMap as default };
280
- //# sourceMappingURL=list-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-map.js","sources":["../../../src/components/virtual-waterfall/list-map.ts"],"sourcesContent":["import { isFunction, isNumber } from '@tarojs/shared'\nimport memoizeOne from 'memoize-one'\n\nimport { getOffsetForIndexAndAlignment } from '../../utils'\n\nimport type { IProps } from './preset'\n\ntype TProps = Pick<IProps, 'column' | 'columnWidth' | 'width' | 'height' | 'itemCount' | 'itemData' | 'itemSize' | 'overscanDistance' | 'unlimitedSize'>\n\nexport default class ListMap {\n _columns: number\n _columnMap: [number, number][][] = [] // [itemIndex, itemSize]\n _items: string[] = [] // columnIndex-rowIndex\n mode?: 'normal' | 'function' | 'unlimited'\n minItemSize = 0\n maxItemSize = 0\n defaultSize = 1\n\n wrapperHeight = 0\n wrapperWidth = 0\n columns = 2\n columnWidth: string | number = 0\n\n refreshCounter = 0\n\n constructor (protected props: TProps, protected refresh?: TFunc) {\n // Note: 不考虑列表模式切换情况,可能会导致列表抖动体验过差\n if (this.props.unlimitedSize) {\n this.mode = 'unlimited'\n } else if (isFunction(this.props.itemSize)) {\n this.mode = 'function'\n } else if (isNumber(this.props.itemSize)) {\n this.mode = 'normal'\n }\n\n this.defaultSize = (isFunction(this.props.itemSize) ? this.props.itemSize() : this.props.itemSize) || 1\n this.minItemSize = this.defaultSize\n this.maxItemSize = this.defaultSize\n this.update(props)\n }\n\n get isNormalMode () {\n return this.mode === 'normal'\n }\n\n get isFunctionMode () {\n return this.mode === 'function'\n }\n\n get isUnlimitedMode () {\n return this.mode === 'unlimited'\n }\n\n get length () {\n return this.props.itemCount || 100\n }\n\n get overscan () {\n return this.props.overscanDistance || 50\n }\n\n get columnsSize () {\n if (this.isNormalMode) {\n return new Array(this._columns).fill(this.getColumnSize())\n }\n\n return new Array(this._columns).fill(0).map((_, i) => this.getColumnSize(i))\n }\n\n get maxColumnSize () {\n if (this.isNormalMode) return this.getColumnSize()\n\n return Math.max(...this.columnsSize)\n }\n\n get minColumnSize () {\n if (this.isNormalMode) return this.getColumnSize()\n\n return Math.min(...this.columnsSize)\n }\n\n get maxColumnIndex () {\n if (this.isNormalMode) return 0\n\n const list = this.columnsSize\n return list.indexOf(Math.max(...list))\n }\n\n get minColumnIndex () {\n if (this.isNormalMode) return 0\n\n const list = this.columnsSize\n return list.indexOf(Math.min(...list))\n }\n\n update (props: TProps) {\n this.props = props\n\n const { column, columnWidth } = this.props\n if (typeof column === 'number' && column > 0) {\n this.columns = column\n this.columnWidth = this.wrapperWidth / column\n } else if (typeof columnWidth === 'number' && columnWidth > 0) {\n this.columns = Math.floor(this.wrapperWidth / columnWidth)\n this.columnWidth = columnWidth\n } else {\n this.columns = 2\n this.columnWidth = this.wrapperWidth / this.columns\n }\n this.columnWidth ||= `calc(100% / ${this.columns})`\n this.updateColumns(this.columns)\n // this.updateItem(this.length - 1)\n }\n\n updateColumns (columns = 2) {\n if (!this.isNormalMode && this._columns !== columns) {\n this._columns = columns\n this._columnMap = new Array(this._columns).fill(0).map(() => [])\n this._items = []\n }\n }\n\n updateItem (itemIndex: number) {\n if (this.isNormalMode) return\n if (itemIndex >= this.length) return this.updateItem(this.length - 1)\n\n for (let i = 0; i <= itemIndex; i++) {\n const position = this.getItemPosition(i)\n if (position) continue\n\n const column = this.minColumnIndex\n const row = this.getColumnLength(column)\n this._items[i] = `${column}-${row}`\n const itemSize = this.getSizeByPosition(column, row, i)\n if (!this.compareSizeByPosition(column, row, itemSize)) {\n this.setSizeByPosition(column, row, itemSize, i)\n }\n }\n }\n\n setSizeByPosition (column = 0, row = 0, itemSize = this.defaultSize, itemIndex = this.getItemIndexByPosition(column, row)) {\n if (itemIndex >= 0) {\n if (this.maxItemSize < itemSize || this.maxItemSize === 0) {\n this.maxItemSize = itemSize\n }\n if (this.minItemSize > itemSize || this.minItemSize === 0) {\n this.minItemSize = itemSize\n }\n this._columnMap[column][row] = [itemIndex, itemSize]\n if (!this.isNormalMode) {\n this.refresh?.()\n this.refreshCounter++\n }\n }\n }\n\n getSize (itemIndex = 0) {\n const position = this.getItemPosition(itemIndex)\n if (position) {\n return this.getSizeByPosition(...position, itemIndex)\n } else {\n return this.defaultSize\n }\n }\n\n getSizeByPosition (column = 0, row = 0, itemIndex = this.getItemIndexByPosition(column, row)) {\n if (this.isNormalMode) return this.defaultSize\n let itemSize = this.getColumnList(column)[row]?.[1]\n if (typeof itemSize === 'number') return itemSize\n\n itemSize = (isFunction(this.props.itemSize) ? this.props.itemSize(itemIndex, this.props.itemData) : this.props.itemSize) || this.defaultSize\n this.setSizeByPosition(column, row, itemSize)\n return itemSize\n }\n\n // 不支持 normal 模式\n getColumnList (column: number) {\n this._columnMap[column] ||= []\n return this._columnMap[column]\n }\n\n getColumnLength (columnIndex: number) {\n if (this.isNormalMode) return Math.ceil(this.length / this._columns)\n\n return this.getColumnList(columnIndex).length\n }\n\n getColumnSize (columnIndex = 0) {\n if (this.isNormalMode) {\n return this.defaultSize * this.getColumnLength(columnIndex)\n }\n\n // Note: 不考虑未同步节点情况\n return this.getOffsetSizeCache(columnIndex, this.getColumnLength(columnIndex))\n }\n\n getItemPosition (itemIndex: number) {\n if (this.isNormalMode) {\n const column = itemIndex % this._columns\n const row = Math.floor(itemIndex / this._columns)\n return [column, row]\n }\n\n return this._items[itemIndex]?.split('-').map(Number) || false\n }\n\n getItemIndexByPosition (column = 0, row = 0) {\n if (this.isNormalMode) {\n return row * this._columns + column\n }\n\n const columnList = this.getColumnList(column)\n const [itemIndex] = columnList[row] || []\n return itemIndex\n }\n\n getOffsetSize (itemIndex: number) {\n const [column, row] = this.getItemPosition(itemIndex) || []\n return this.getOffsetSizeCache(column, row)\n }\n\n getOffsetSizeByPosition (column = 0, row = 0) {\n column = Math.max(0, column)\n row = Math.max(0, row)\n let sum = 0\n for (let i = 0; i < row; i++) {\n sum += this.getSizeByPosition(column, i)\n }\n return sum\n }\n\n getOffsetSizeCache = memoizeOne((column, row, _flag = this.refreshCounter) => {\n return this.getOffsetSizeByPosition(column, row)\n })\n\n getStartIndex (column: number, offset: number) {\n if (offset <= 0) return 0\n if (this.isNormalMode) {\n const size = this.minItemSize || 1\n return Math.max(0, Math.floor(offset / size))\n }\n\n const columnList = this.getColumnList(column)\n const columnLength = columnList.length - 1\n let x = Math.floor(offset / (this.maxItemSize || 1))\n let y = Math.ceil(offset / (this.minItemSize || 1))\n this.updateItem(this.getItemIndexByPosition(column, y))\n x = Math.min(x, columnLength)\n y = Math.min(y, columnLength)\n while (this.getOffsetSizeCache(column, x - 1) < offset && this.getOffsetSizeCache(column, y - 1) > offset && x < y) {\n x < columnLength && x++\n y > 0 && y--\n }\n return Math.max(0, Math.min(this.getOffsetSizeCache(column, x - 1) > offset ? x : y, columnLength) - 1)\n }\n\n getStopIndex (column: number, offset: number, start = 0) {\n if (offset <= 0) return 0\n if (this.isNormalMode) {\n const size = this.minItemSize || 1\n const count = Math.ceil(offset / size)\n return Math.min(count, this.getColumnSize(column))\n }\n const columnList = this.getColumnList(column)\n const columnLength = columnList.length - 1\n let x = Math.max(start, Math.floor(offset / (this.maxItemSize || 1)))\n let y = Math.max(start, Math.ceil(offset / (this.minItemSize || 1)))\n this.updateItem(this.getItemIndexByPosition(column, y))\n x = Math.min(x, columnLength)\n y = Math.min(y, columnLength)\n while (this.getOffsetSizeCache(column, x) < offset && this.getOffsetSizeCache(column, y) > offset && x < y) {\n x < columnLength && x++\n y > 0 && y--\n }\n return Math.max(1, Math.min(this.getOffsetSizeCache(column, x) > offset ? x : y, columnLength) + 1)\n }\n\n getRangeToRender (direction: 'forward' | 'backward', column: number, offset: number, block = false) {\n if (this.length === 0) return [0, 0]\n\n const scrollSize = this.maxColumnSize\n const backwardDistance = !block || direction === 'backward' ? Math.max(0, this.overscan) : 0\n const forwardDistance = !block || direction === 'forward' ? Math.max(0, this.overscan) : 0\n\n const overscanBackward = this.getStartIndex(column, Math.max(0, offset - this.wrapperHeight - backwardDistance))\n const overscanForward = this.getStopIndex(column, Math.max(0, Math.min(scrollSize, offset + this.wrapperHeight + forwardDistance)), overscanBackward)\n return [overscanBackward, overscanForward]\n }\n\n getOffsetForIndexAndAlignment (index: number, align: string, scrollOffset: number) {\n return getOffsetForIndexAndAlignment({\n align,\n containerSize: this.wrapperHeight,\n currentOffset: scrollOffset,\n scrollSize: this.getOffsetSize(this.length),\n slideSize: this.getColumnSize(index),\n targetOffset: this.getOffsetSize(index),\n })\n }\n\n compareSizeByPosition (column = 0, row = 0, size = this.getSizeByPosition(column, row)) {\n if (this.isNormalMode) return true\n\n const origenSize = this._columnMap[column]?.[row]?.[1]\n return typeof origenSize === 'number' && origenSize === size\n }\n}\n"],"names":[],"mappings":"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"}