@tarojs/components-advanced 4.0.0-alpha.2 → 4.0.0-alpha.21

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 (64) hide show
  1. package/LICENSE +8 -8
  2. package/dist/components/index.d.ts +2 -2
  3. package/dist/components/virtual-list/constants.d.ts +1 -2
  4. package/dist/components/virtual-list/dom-helpers.d.ts +1 -2
  5. package/dist/components/virtual-list/dom-helpers.js.map +1 -1
  6. package/dist/components/virtual-list/index.d.ts +9 -17
  7. package/dist/components/virtual-list/index.js.map +1 -1
  8. package/dist/components/virtual-list/list-set.d.ts +3 -3
  9. package/dist/components/virtual-list/list-set.js.map +1 -1
  10. package/dist/components/virtual-list/preset.d.ts +10 -10
  11. package/dist/components/virtual-list/preset.js.map +1 -1
  12. package/dist/components/virtual-list/react/index.d.ts +2 -2
  13. package/dist/components/virtual-list/react/index.js +2 -1
  14. package/dist/components/virtual-list/react/index.js.map +1 -1
  15. package/dist/components/virtual-list/react/list.d.ts +5 -10
  16. package/dist/components/virtual-list/react/list.js +2 -2
  17. package/dist/components/virtual-list/react/list.js.map +1 -1
  18. package/dist/components/virtual-list/react/validate.d.ts +3 -4
  19. package/dist/components/virtual-list/react/validate.js.map +1 -1
  20. package/dist/components/virtual-list/react/wrapper.d.ts +1 -1
  21. package/dist/components/virtual-list/react/wrapper.js.map +1 -1
  22. package/dist/components/virtual-list/utils.d.ts +3 -3
  23. package/dist/components/virtual-list/vue/index.d.ts +6 -6
  24. package/dist/components/virtual-list/vue/list.d.ts +24 -3
  25. package/dist/components/virtual-list/vue/list.js +8 -4
  26. package/dist/components/virtual-list/vue/list.js.map +1 -1
  27. package/dist/components/virtual-waterfall/constants.d.ts +1 -2
  28. package/dist/components/virtual-waterfall/index.d.ts +9 -17
  29. package/dist/components/virtual-waterfall/index.js +1 -1
  30. package/dist/components/virtual-waterfall/index.js.map +1 -1
  31. package/dist/components/virtual-waterfall/list-map.d.ts +3 -4
  32. package/dist/components/virtual-waterfall/list-map.js.map +1 -1
  33. package/dist/components/virtual-waterfall/preset.d.ts +10 -10
  34. package/dist/components/virtual-waterfall/preset.js.map +1 -1
  35. package/dist/components/virtual-waterfall/react/index.d.ts +2 -2
  36. package/dist/components/virtual-waterfall/react/index.js +3 -2
  37. package/dist/components/virtual-waterfall/react/index.js.map +1 -1
  38. package/dist/components/virtual-waterfall/react/waterfall.d.ts +4 -9
  39. package/dist/components/virtual-waterfall/react/waterfall.js +2 -2
  40. package/dist/components/virtual-waterfall/react/waterfall.js.map +1 -1
  41. package/dist/components/virtual-waterfall/react/wrapper.d.ts +1 -1
  42. package/dist/components/virtual-waterfall/react/wrapper.js.map +1 -1
  43. package/dist/components/virtual-waterfall/vue/index.d.ts +6 -6
  44. package/dist/components/virtual-waterfall/vue/waterfall.d.ts +24 -3
  45. package/dist/components/virtual-waterfall/vue/waterfall.js +8 -4
  46. package/dist/components/virtual-waterfall/vue/waterfall.js.map +1 -1
  47. package/dist/index.d.ts +2 -2
  48. package/dist/utils/convert.d.ts +2 -3
  49. package/dist/utils/convert.js.map +1 -1
  50. package/dist/utils/dom.d.ts +3 -4
  51. package/dist/utils/dom.js.map +1 -1
  52. package/dist/utils/helper.d.ts +2 -3
  53. package/dist/utils/helper.js.map +1 -1
  54. package/dist/utils/index.d.ts +6 -6
  55. package/dist/utils/lodash.d.ts +3 -4
  56. package/dist/utils/lodash.js.map +1 -1
  57. package/dist/utils/math.d.ts +2 -3
  58. package/dist/utils/math.js.map +1 -1
  59. package/dist/utils/timer.d.ts +3 -3
  60. package/dist/utils/timer.js.map +1 -1
  61. package/dist/utils/vue-render.d.ts +1 -2
  62. package/dist/utils/vue-render.js +9 -10
  63. package/dist/utils/vue-render.js.map +1 -1
  64. package/package.json +11 -24
@@ -1,5 +1,5 @@
1
- import { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components';
2
- import { Component, ComponentType, CSSProperties } from 'react';
1
+ import type { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components';
2
+ import type { Component, ComponentType, CSSProperties } from 'react';
3
3
  interface VirtualWaterfallProps<T = any> extends Omit<StandardProps, 'children'> {
4
4
  /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */
5
5
  column?: number;
@@ -95,6 +95,10 @@ interface VirtualWaterfallProps<T = any> extends Omit<StandardProps, 'children'>
95
95
  /** 触底事件 */
96
96
  onScrollToLower?: () => void;
97
97
  style?: CSSProperties;
98
+ /** 这是一个 fix 类型的参数,针对于各端小程序,在层级太深的情况下会生成 Taro 的自定义组件,导致一般的选择器字符会查询不到对应的元素,需要加上类似 #container >>> 的查询前缀
99
+ * @default ''
100
+ */
101
+ queryPrefix?: string;
98
102
  }
99
103
  declare namespace VirtualWaterfallProps {
100
104
  interface IVirtualWaterfallEventDetail extends ScrollViewProps.onScrollDetail {
@@ -215,23 +219,10 @@ declare namespace VirtualWaterfallProps {
215
219
  * @see https://taro-docs.jd.com/docs/virtual-waterfall
216
220
  */
217
221
  declare class VirtualWaterfallComponent extends Component<VirtualWaterfallProps> {
218
- /**
219
- * 滚动到指定的地点。
220
- */
221
222
  /**
222
223
  * 滚动到指定的地点。
223
224
  */
224
225
  scrollTo(scrollOffset: number, enhanced?: boolean): void;
225
- /** 滚动到指定的条目。
226
- * @param index 指定条目的索引。
227
- * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。
228
- *
229
- * - start:指定条目在可视区域的顶部。
230
- * - end:指定条目在可视区域的底部。
231
- * - center:指定条目在可视区域的中间。
232
- * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。
233
- * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。
234
- */
235
226
  /** 滚动到指定的条目。
236
227
  * @param index 指定条目的索引。
237
228
  * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。
@@ -244,6 +235,7 @@ declare class VirtualWaterfallComponent extends Component<VirtualWaterfallProps>
244
235
  */
245
236
  scrollToItem(index: number, align: 'start' | 'end' | 'center' | 'auto' | 'smart', enhanced?: boolean): void;
246
237
  }
247
- type VirtualWaterfall = VirtualWaterfallComponent;
238
+ declare type VirtualWaterfall = VirtualWaterfallComponent;
248
239
  declare const VirtualWaterfall: typeof VirtualWaterfallComponent;
249
- export { VirtualWaterfall as default, VirtualWaterfall, VirtualWaterfallProps };
240
+ export { VirtualWaterfall, VirtualWaterfallProps };
241
+ export default VirtualWaterfall;
@@ -1,4 +1,4 @@
1
- const VirtualWaterfall = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')
1
+ const VirtualWaterfall = process.env.FRAMEWORK === 'vue3'
2
2
  ? require('./vue').default
3
3
  : require('./react').default;
4
4
 
@@ -1 +1 @@
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 /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */\n column?: number\n /** 瀑布流单列宽度,默认值依照 width / column 计算 */\n columnWidth?: number\n /** 高度 */\n height: string | number\n /** 宽度 */\n width: string | number\n /** 子组件 */\n item: ComponentType<{\n /** 组件 ID */\n id: string\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 /** 触顶事件触发时距页面顶部距离\n * @default 50\n */\n upperThreshold?: number\n /** 触底事件触发时距页面底部距离\n * @default 50\n */\n lowerThreshold?: 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 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, enhanced?: boolean): 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', enhanced?: boolean): 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":"AAgPA,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
+ {"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 /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */\n column?: number\n /** 瀑布流单列宽度,默认值依照 width / column 计算 */\n columnWidth?: number\n /** 高度 */\n height: string | number\n /** 宽度 */\n width: string | number\n /** 子组件 */\n item: ComponentType<{\n /** 组件 ID */\n id: string\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 /** 触顶事件触发时距页面顶部距离\n * @default 50\n */\n upperThreshold?: number\n /** 触底事件触发时距页面底部距离\n * @default 50\n */\n lowerThreshold?: 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 style?: CSSProperties\n /** 这是一个 fix 类型的参数,针对于各端小程序,在层级太深的情况下会生成 Taro 的自定义组件,导致一般的选择器字符会查询不到对应的元素,需要加上类似 #container >>> 的查询前缀\n * @default ''\n */\n queryPrefix?: string\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, enhanced?: boolean): 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', enhanced?: boolean): void\n}\n\ndeclare type VirtualWaterfall = VirtualWaterfallComponent\nconst VirtualWaterfall: typeof VirtualWaterfallComponent = process.env.FRAMEWORK === 'vue3'\n ? require('./vue').default\n : require('./react').default\n\nexport { VirtualWaterfall, VirtualWaterfallProps }\nexport default VirtualWaterfall\n"],"names":[],"mappings":"AAoPM,MAAA,gBAAgB,GAAqC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;AACzF,MAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO;AAC1B,MAAE,OAAO,CAAC,SAAS,CAAC,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
- import { IProps } from "./preset.js";
1
+ import type { IProps } from './preset';
2
2
  type TProps = Pick<IProps, 'column' | 'columnWidth' | 'width' | 'height' | 'itemCount' | 'itemData' | 'itemSize' | 'overscanDistance' | 'unlimitedSize'>;
3
- declare class ListMap {
3
+ export default class ListMap {
4
4
  protected props: TProps;
5
5
  protected refresh?: TFunc;
6
6
  _columns: number;
@@ -32,7 +32,6 @@ declare class ListMap {
32
32
  setSizeByPosition(column?: number, row?: number, itemSize?: number, itemIndex?: number): void;
33
33
  getSize(itemIndex?: number): number;
34
34
  getSizeByPosition(column?: number, row?: number, itemIndex?: number): number;
35
- // 不支持 normal 模式
36
35
  getColumnList(column: number): [number, number][];
37
36
  getColumnLength(columnIndex: number): number;
38
37
  getColumnSize(columnIndex?: number): number;
@@ -47,4 +46,4 @@ declare class ListMap {
47
46
  getOffsetForIndexAndAlignment(index: number, align: string, scrollOffset: number): number;
48
47
  compareSizeByPosition(column?: number, row?: number, size?: number): boolean;
49
48
  }
50
- export { ListMap as default };
49
+ export {};
@@ -1 +1 @@
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._columnMap = new Array(columns).fill(0).map(() => [])\n this._items = []\n }\n this._columns = columns\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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"}
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._columnMap = new Array(columns).fill(0).map(() => [])\n this._items = []\n }\n this._columns = columns\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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"}
@@ -1,9 +1,10 @@
1
+ /// <reference types="react" />
1
2
  import * as CSS from 'csstype';
2
- import { defaultItemKey } from "../../utils/index.js";
3
- import ListMap from "./list-map.js";
4
- import { IntersectionObserver } from '@tarojs/taro';
5
- import { VirtualWaterfallProps } from "./index.js";
6
- interface IProps extends Partial<VirtualWaterfallProps> {
3
+ import { defaultItemKey } from '../../utils';
4
+ import ListMap from './list-map';
5
+ import type { IntersectionObserver } from '@tarojs/taro';
6
+ import type { VirtualWaterfallProps } from './';
7
+ export interface IProps extends Partial<VirtualWaterfallProps> {
7
8
  children?: VirtualWaterfallProps['item'];
8
9
  itemKey?: typeof defaultItemKey;
9
10
  itemTagName?: string;
@@ -14,7 +15,7 @@ interface IProps extends Partial<VirtualWaterfallProps> {
14
15
  shouldResetStyleCacheOnItemSizeChange?: boolean;
15
16
  outerWrapper?: React.FC;
16
17
  }
17
- declare class Preset {
18
+ export default class Preset {
18
19
  protected props: IProps;
19
20
  protected refresh?: TFunc;
20
21
  itemMap: ListMap;
@@ -39,9 +40,9 @@ declare class Preset {
39
40
  get isRelative(): boolean;
40
41
  get isBrick(): boolean;
41
42
  get placeholderCount(): number;
42
- get outerElement(): string | import("react").ComponentType<{}>;
43
- get innerElement(): string | import("react").ComponentType<{}>;
44
- get itemElement(): string | import("react").ComponentType<{}>;
43
+ get outerElement(): string | import("react").ComponentType;
44
+ get innerElement(): string | import("react").ComponentType;
45
+ get itemElement(): string | import("react").ComponentType;
45
46
  get field(): Record<string, number>;
46
47
  set field(o: Record<string, number>);
47
48
  get enhanced(): true;
@@ -57,4 +58,3 @@ declare class Preset {
57
58
  }): IntersectionObserver;
58
59
  dispose(): void;
59
60
  }
60
- export { IProps, Preset as default };
@@ -1 +1 @@
1
- {"version":3,"file":"preset.js","sources":["../../../src/components/virtual-waterfall/preset.ts"],"sourcesContent":["import { 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 ListMap from './list-map'\n\nimport type { IntersectionObserver } from '@tarojs/taro'\nimport type { VirtualWaterfallProps } from './'\n\nlet INSTANCE_ID = 0\n\nexport interface IProps extends Partial<VirtualWaterfallProps> {\n children?: VirtualWaterfallProps['item']\n itemKey?: typeof defaultItemKey\n itemTagName?: string\n innerTagName?: string\n outerTagName?: string\n outerRef?: React.Ref<HTMLElement> | string\n onItemsRendered?: TFunc\n shouldResetStyleCacheOnItemSizeChange?: boolean\n outerWrapper?: React.FC\n}\n\nexport default class Preset {\n itemMap: ListMap\n _id: string\n _observer: Record<string, IntersectionObserver> = {}\n\n constructor (protected props: IProps, protected refresh?: TFunc) {\n this.init(this.props)\n this.itemMap = new ListMap(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.itemMap.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.itemMap.wrapperWidth = width\n }\n if (validHeight) {\n this.itemMap.wrapperHeight = height\n }\n\n if (!validHeight || !validWidth) {\n const res = await getRectSizeSync(`#${id}`, 100)\n this.itemMap.wrapperWidth ||= res.width\n this.itemMap.wrapperHeight ||= res.height\n this.refresh?.()\n }\n\n this.itemMap.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 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\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 }\n\n get enhanced () {\n return this.props.enhanced || true\n }\n\n isShaking (diff?: number) {\n if (process.env.TARO_PLATFORM === 'web' || 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.itemMap.refreshCounter++\n }\n\n getItemStyleCache = memoizeOne((\n itemIndex?: number,\n itemSize?: IProps['itemSize'] | false,\n _flag = this.itemMap.refreshCounter\n ) => {\n itemSize = itemSize || this.itemMap.getSize(itemIndex)\n const style: CSS.Properties<string | number> = this.isRelative ? {} : {\n position: 'absolute',\n left: 0,\n }\n style.width = '100%'\n style.height = convertNumber2PX(itemSize)\n if (!this.isRelative) {\n const nodeOffset = this.itemMap.getOffsetSize(itemIndex)\n style.top = convertNumber2PX(nodeOffset)\n }\n return style\n })\n\n getItemStyle (itemIndex: number) {\n const {\n shouldResetStyleCacheOnItemSizeChange\n } = this.props\n\n return this.getItemStyleCache(\n itemIndex,\n shouldResetStyleCacheOnItemSizeChange ? this.itemMap.getSize(itemIndex) : 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}-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}-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":";;;;;;;;;AAUA,IAAI,WAAW,GAAG,CAAC,CAAA;AAcL,MAAO,MAAM,CAAA;IAKzB,WAAuB,CAAA,KAAa,EAAY,OAAe,EAAA;QAAxC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAY,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QAF/D,IAAS,CAAA,SAAA,GAAyC,EAAE,CAAA;AAOpD,QAAA,IAAA,CAAA,aAAa,GAAG;AACd,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;AAyF9B,QAAA,IAAA,CAAA,iBAAiB,GAAG,UAAU,CAAC,CAC7B,SAAkB,EAClB,QAAqC,EACrC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,KACjC;YACF,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACtD,MAAM,KAAK,GAAoC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG;AACpE,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,IAAI,EAAE,CAAC;aACR,CAAA;AACD,YAAA,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;AACpB,YAAA,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;AACxD,gBAAA,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;AACzC,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACd,SAAC,CAAC,CAAA;AAxHA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;KAC3C;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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAC3B;IAED,MAAM,aAAa,CAAE,EAAU,EAAA;;;AAC7B,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;AACZ,QAAA,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC5C,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;QACzD,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAA;AAC5D,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;AAClC,SAAA;AACD,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM,CAAA;AACpC,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE;YAC/B,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,CAAI,CAAA,EAAA,EAAE,CAAE,CAAA,EAAE,GAAG,CAAC,CAAA;YAChD,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,EAAC,YAAY,KAAZ,EAAA,CAAA,YAAY,GAAK,GAAG,CAAC,KAAK,CAAA,CAAA;YACvC,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,EAAC,aAAa,KAAb,EAAA,CAAA,aAAa,GAAK,GAAG,CAAC,MAAM,CAAA,CAAA;AACzC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAA;AACjB,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAChC;IAED,IAAI,EAAE,CAAE,EAAU,EAAA;AAChB,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;KACd;AAED,IAAA,IAAI,EAAE,GAAA;QACJ,IAAI,CAAC,GAAG,KAAR,IAAI,CAAC,GAAG,GAAK,CAAqB,kBAAA,EAAA,WAAW,EAAE,CAAA,CAAE,CAAA,CAAA;QACjD,OAAO,IAAI,CAAC,GAAG,CAAA;KAChB;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAA;KACjE;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAA;KACvC;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAA;KACxC;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,aAAa,CAAA;KAC1B;IAED,IAAI,KAAK,CAAE,CAAyB,EAAA;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;KACrC;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAA;KACnC;AAED,IAAA,SAAS,CAAE,IAAa,EAAA;AACtB,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK,CAAA;QAC5E,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;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;KAC9B;AAqBD,IAAA,YAAY,CAAE,SAAiB,EAAA;AAC7B,QAAA,MAAM,EACJ,qCAAqC,EACtC,GAAG,IAAI,CAAC,KAAK,CAAA;QAEd,OAAO,IAAI,CAAC,iBAAiB,CAC3B,SAAS,EACT,qCAAqC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAChF,CAAA;KACF;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;YAAE,OAAM;AAE/G,QAAA,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAK;AAC3D,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACjD,gBAAA,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,UAAU,GAAG,MAAK;AAC7D,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC;AAAE,wBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;iBAC7D,GAAG,SAAS;AACb,gBAAA,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAM,IAAA,CAAA;AACrB,aAAA,CAAC,CAAA;AACF,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,aAAa,CAAA;AACnC,aAAA;AAED,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACjD,gBAAA,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,UAAU,GAAG,MAAK;AAC7D,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC;AAAE,wBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;iBAC7D,GAAG,SAAS;AACb,gBAAA,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAS,OAAA,CAAA;AACxB,aAAA,CAAC,CAAA;AACF,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAA;AACtC,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AAED,IAAA,uBAAuB,CAAE,EACvB,SAAS,EACT,KAAK,EACL,EAAE,GAKH,EAAA;QACC,IAAI,OAAO,KAAK,KAAK,UAAU;YAAE,OAAM;AACvC,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;AAEjC,QAAA,SAAS,KAAT,SAAS,GAAK,kBAAkB,EAAE,CAAC,IAAI,CAAA,CAAA;AACvC,QAAA,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,EAAE;YACrD,UAAU,EAAE,CAAC,GAAG,CAAC;AAClB,SAAA,CAAC,CAAA;QAEF,QAAQ;AACL,aAAA,UAAU,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,EAAE,EAAE,EAAE;YACzB,GAAG,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE;YACnF,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE;SACvF,CAAC;AACD,aAAA,OAAO,CAAC,CAAI,CAAA,EAAA,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;AAE/B,QAAA,OAAO,QAAQ,CAAA;KAChB;IAED,OAAO,GAAA;QACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAC,CAAA;AAC5D,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;KACpB;AACF;;;;"}
1
+ {"version":3,"file":"preset.js","sources":["../../../src/components/virtual-waterfall/preset.ts"],"sourcesContent":["import { 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 ListMap from './list-map'\n\nimport type { IntersectionObserver } from '@tarojs/taro'\nimport type { VirtualWaterfallProps } from './'\n\nlet INSTANCE_ID = 0\n\nexport interface IProps extends Partial<VirtualWaterfallProps> {\n children?: VirtualWaterfallProps['item']\n itemKey?: typeof defaultItemKey\n itemTagName?: string\n innerTagName?: string\n outerTagName?: string\n outerRef?: React.Ref<HTMLElement> | string\n onItemsRendered?: TFunc\n shouldResetStyleCacheOnItemSizeChange?: boolean\n outerWrapper?: React.FC\n}\n\nexport default class Preset {\n itemMap: ListMap\n _id: string\n _observer: Record<string, IntersectionObserver> = {}\n\n constructor (protected props: IProps, protected refresh?: TFunc) {\n this.init(this.props)\n this.itemMap = new ListMap(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.itemMap.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.itemMap.wrapperWidth = width\n }\n if (validHeight) {\n this.itemMap.wrapperHeight = height\n }\n\n if (!validHeight || !validWidth) {\n const res = await getRectSizeSync(`#${id}`, 100)\n this.itemMap.wrapperWidth ||= res.width\n this.itemMap.wrapperHeight ||= res.height\n this.refresh?.()\n }\n\n this.itemMap.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 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\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 }\n\n get enhanced () {\n return this.props.enhanced || true\n }\n\n isShaking (diff?: number) {\n if (process.env.TARO_PLATFORM === 'web' || 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.itemMap.refreshCounter++\n }\n\n getItemStyleCache = memoizeOne((\n itemIndex?: number,\n itemSize?: IProps['itemSize'] | false,\n _flag = this.itemMap.refreshCounter\n ) => {\n itemSize = itemSize || this.itemMap.getSize(itemIndex)\n const style: CSS.Properties<string | number> = this.isRelative ? {} : {\n position: 'absolute',\n left: 0,\n }\n style.width = '100%'\n style.height = convertNumber2PX(itemSize)\n if (!this.isRelative) {\n const nodeOffset = this.itemMap.getOffsetSize(itemIndex)\n style.top = convertNumber2PX(nodeOffset)\n }\n return style\n })\n\n getItemStyle (itemIndex: number) {\n const {\n shouldResetStyleCacheOnItemSizeChange\n } = this.props\n\n return this.getItemStyleCache(\n itemIndex,\n shouldResetStyleCacheOnItemSizeChange ? this.itemMap.getSize(itemIndex) : 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}-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}-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,4 +1,4 @@
1
1
  import React from 'react';
2
- import { VirtualWaterfallProps } from "../index.js";
2
+ import type { VirtualWaterfallProps } from '../';
3
3
  declare const VirtualWaterfall: React.ForwardRefExoticComponent<Omit<VirtualWaterfallProps<any>, "ref"> & React.RefAttributes<unknown>>;
4
- export { VirtualWaterfall as default };
4
+ export default VirtualWaterfall;
@@ -5,7 +5,7 @@ import Waterfall from './waterfall.js';
5
5
  import outerWrapper from './wrapper.js';
6
6
 
7
7
  const VirtualWaterfall = React.forwardRef(function VirtualWaterfall(props, ref) {
8
- const _a = props, { outerElementType = ScrollView, innerElementType = View, itemElementType = View, initialScrollOffset = 0, overscanDistance = 50 } = _a, rest = __rest(_a, ["outerElementType", "innerElementType", "itemElementType", "initialScrollOffset", "overscanDistance"]);
8
+ const _a = props, { outerElementType = ScrollView, innerElementType = View, itemElementType = View, initialScrollOffset = 0, overscanDistance = 50, queryPrefix = '' } = _a, rest = __rest(_a, ["outerElementType", "innerElementType", "itemElementType", "initialScrollOffset", "overscanDistance", "queryPrefix"]);
9
9
  if ('children' in rest) {
10
10
  console.warn('Taro(VirtualWaterfall): children props have been deprecated. ' + 'Please use the item props instead.');
11
11
  rest.item = rest.children;
@@ -19,7 +19,8 @@ const VirtualWaterfall = React.forwardRef(function VirtualWaterfall(props, ref)
19
19
  innerElementType,
20
20
  initialScrollOffset,
21
21
  overscanDistance,
22
- outerWrapper }));
22
+ outerWrapper,
23
+ queryPrefix }));
23
24
  });
24
25
 
25
26
  export { VirtualWaterfall as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/virtual-waterfall/react/index.ts"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport React from 'react'\n\nimport Waterfall from './waterfall'\nimport outerWrapper from './wrapper'\n\nimport type { VirtualWaterfallProps } from '../'\nimport type { IProps } from '../preset'\n\nconst VirtualWaterfall = React.forwardRef(function VirtualWaterfall (props: VirtualWaterfallProps, ref) {\n const {\n outerElementType = ScrollView,\n innerElementType = View,\n itemElementType = View,\n initialScrollOffset = 0,\n overscanDistance = 50,\n ...rest\n } = props as IProps\n\n if ('children' in rest) {\n console.warn('Taro(VirtualWaterfall): 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(VirtualWaterfall): item should not be an array')\n rest.item = rest.item[0]\n }\n return React.createElement(Waterfall, {\n ref,\n ...rest,\n outerElementType,\n itemElementType,\n innerElementType,\n initialScrollOffset,\n overscanDistance,\n outerWrapper,\n })\n})\n\nexport default VirtualWaterfall\n"],"names":[],"mappings":";;;;;;AASM,MAAA,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,gBAAgB,CAAE,KAA4B,EAAE,GAAG,EAAA;AACpG,IAAA,MAAM,EAOF,GAAA,KAAe,EAPb,EACJ,gBAAgB,GAAG,UAAU,EAC7B,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,CAAC,EACvB,gBAAgB,GAAG,EAAE,EAAA,GAAA,EAEJ,EADd,IAAI,GANH,MAAA,CAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,CAOL,CAAkB,CAAA;IAEnB,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,+DAA+D,GAAG,oCAAoC,CAAC,CAAA;AACpH,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,qDAAqD,CAAC,CAAA;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACzB,KAAA;IACD,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,gCAClC,GAAG,EAAA,EACA,IAAI,CAAA,EAAA,EACP,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;AAChB,QAAA,YAAY,IACZ,CAAA;AACJ,CAAC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/virtual-waterfall/react/index.ts"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport React from 'react'\n\nimport Waterfall from './waterfall'\nimport outerWrapper from './wrapper'\n\nimport type { VirtualWaterfallProps } from '../'\nimport type { IProps } from '../preset'\n\nconst VirtualWaterfall = React.forwardRef(function VirtualWaterfall (props: VirtualWaterfallProps, ref) {\n const {\n outerElementType = ScrollView,\n innerElementType = View,\n itemElementType = View,\n initialScrollOffset = 0,\n overscanDistance = 50,\n queryPrefix = '',\n ...rest\n } = props as IProps\n\n if ('children' in rest) {\n console.warn('Taro(VirtualWaterfall): 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(VirtualWaterfall): item should not be an array')\n rest.item = rest.item[0]\n }\n return React.createElement(Waterfall, {\n ref,\n ...rest,\n outerElementType,\n itemElementType,\n innerElementType,\n initialScrollOffset,\n overscanDistance,\n outerWrapper,\n queryPrefix,\n })\n})\n\nexport default VirtualWaterfall\n"],"names":[],"mappings":";;;;;;AASM,MAAA,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,gBAAgB,CAAE,KAA4B,EAAE,GAAG,EAAA;AACpG,IAAA,MAAM,EAQF,GAAA,KAAe,EARb,EACJ,gBAAgB,GAAG,UAAU,EAC7B,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,CAAC,EACvB,gBAAgB,GAAG,EAAE,EACrB,WAAW,GAAG,EAAE,OAEC,EADd,IAAI,GAPH,MAAA,CAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,CAQL,CAAkB,CAAA;AAEnB,IAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,+DAA+D,GAAG,oCAAoC,CAAC,CAAA;AACpH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAA0B,CAAA;KAC5C;AACD,IAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACzB;IACD,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,gCAClC,GAAG,EAAA,EACA,IAAI,CAAA,EAAA,EACP,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;QAChB,YAAY;AACZ,QAAA,WAAW,IACX,CAAA;AACJ,CAAC;;;;"}
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
- import ListMap from "../list-map.js";
3
- import Preset from "../preset.js";
4
- import { IProps } from "../preset.js";
2
+ import ListMap from '../list-map';
3
+ import Preset, { type IProps } from '../preset';
5
4
  interface IState {
6
5
  instance: Waterfall;
7
6
  isScrolling: boolean;
@@ -10,7 +9,7 @@ interface IState {
10
9
  scrollUpdateWasRequested: boolean;
11
10
  refreshCount: number;
12
11
  }
13
- declare class Waterfall extends React.PureComponent<IProps, IState> {
12
+ export default class Waterfall extends React.PureComponent<IProps, IState> {
14
13
  static defaultProps: IProps;
15
14
  itemMap: ListMap;
16
15
  preset: Preset;
@@ -21,10 +20,6 @@ declare class Waterfall extends React.PureComponent<IProps, IState> {
21
20
  _callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, columnIndex: any, overscanStartIndex: any, overscanStopIndex: any) => any>;
22
21
  _callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
23
22
  _callPropsCallbacks(prevProps?: any, prevState?: any): void;
24
- // Lazily create and cache item styles while scrolling,
25
- // So that pure component sCU will prevent re-renders.
26
- // We maintain this cache, and pass a style prop rather than index,
27
- // So that List can clear cached styles and force item re-render if necessary.
28
23
  _getRangeToRender(columnIndex?: number): number[];
29
24
  _outerRefSetter: (ref: any) => void;
30
25
  _resetIsScrollingDebounced: () => void;
@@ -39,4 +34,4 @@ declare class Waterfall extends React.PureComponent<IProps, IState> {
39
34
  getRenderColumnNode(columnIndex: number): React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
40
35
  render(): React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
41
36
  }
42
- export { Waterfall as default };
37
+ export {};
@@ -141,7 +141,7 @@ class Waterfall extends React.PureComponent {
141
141
  const itemIndex = this.itemMap.getItemIndexByPosition(column, row);
142
142
  if (itemIndex >= 0 && itemIndex < this.props.itemCount) {
143
143
  const times = this.itemMap.compareSizeByPosition(column, row) ? 3 : 0;
144
- getRectSizeSync(`#${this.preset.id}-${itemIndex}`, 100, times).then(({ height }) => {
144
+ getRectSizeSync(`${this.props.queryPrefix}#${this.preset.id}-${itemIndex}`, 100, times).then(({ height }) => {
145
145
  if (typeof height === 'number' && height > 0 && !this.itemMap.compareSizeByPosition(column, row, height)) {
146
146
  this.itemMap.setSizeByPosition(column, row, height);
147
147
  }
@@ -169,7 +169,7 @@ class Waterfall extends React.PureComponent {
169
169
  duration: 300,
170
170
  };
171
171
  option.top = scrollOffset;
172
- return getScrollViewContextNode(`#${this.preset.id}`).then((node) => node.scrollTo(option));
172
+ return getScrollViewContextNode(`${this.props.queryPrefix}#${this.preset.id}`).then((node) => node.scrollTo(option));
173
173
  }
174
174
  this.setState((prevState) => {
175
175
  if (prevState.scrollOffset === scrollOffset) {
@@ -1 +1 @@
1
- {"version":3,"file":"waterfall.js","sources":["../../../../src/components/virtual-waterfall/react/waterfall.ts"],"sourcesContent":["import { isNumber } from '@tarojs/shared'\nimport classNames from 'classnames'\nimport memoizeOne from 'memoize-one'\nimport React from 'react'\n\nimport { cancelTimeout, convertNumber2PX, defaultItemKey, getRectSizeSync, getScrollViewContextNode, omit, requestTimeout } from '../../../utils'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport ListMap from '../list-map'\nimport Preset, { type IProps } from '../preset'\n\ninterface IState {\n instance: Waterfall\n isScrolling: boolean\n scrollDirection: 'forward' | 'backward'\n scrollOffset: number\n scrollUpdateWasRequested: boolean\n refreshCount: number\n}\n\nexport default class Waterfall extends React.PureComponent<IProps, IState> {\n static defaultProps: IProps = {\n itemData: undefined,\n overscanDistance: 50,\n useIsScrolling: false,\n shouldResetStyleCacheOnItemSizeChange: true\n }\n\n itemMap: ListMap\n preset: Preset\n\n constructor (props: IProps) {\n super(props)\n\n this.preset = new Preset(\n props,\n this.refresh,\n )\n const id = this.props.id || this.preset.id\n this.preset.updateWrapper(id)\n this.itemMap = this.preset.itemMap\n\n this.state = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n refreshCount: 0,\n }\n }\n\n refresh = () => {\n if (process.env.FRAMEWORK === 'preact') {\n this.forceUpdate()\n } else {\n this.setState(({ refreshCount }) => ({\n refreshCount: ++refreshCount\n }))\n }\n }\n\n _outerRef = undefined\n\n _resetIsScrollingTimeoutId = null\n\n _callOnItemsRendered = memoizeOne((columnIndex, overscanStartIndex, overscanStopIndex) => this.props.onItemsRendered({\n columnIndex,\n overscanStartIndex,\n overscanStopIndex,\n }))\n\n _callOnScroll = memoizeOne((scrollDirection, scrollOffset, scrollUpdateWasRequested, detail) => this.props.onScroll({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n } as any))\n\n _callPropsCallbacks (prevProps: any = {}, prevState: any = {}) {\n if (typeof this.props.onItemsRendered === 'function') {\n if (this.props.itemCount > 0) {\n if (prevProps && prevProps.itemCount !== this.props.itemCount) {\n for (let columnIndex = 0; columnIndex < this.itemMap.columns; columnIndex++) {\n const [overscanStartIndex, overscanStopIndex] = this._getRangeToRender(columnIndex)\n this._callOnItemsRendered(columnIndex, overscanStartIndex, overscanStopIndex)\n }\n }\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n if (!prevState ||\n prevState.scrollDirection !== this.state.scrollDirection ||\n prevState.scrollOffset !== this.state.scrollOffset ||\n prevState.scrollUpdateWasRequested !== this.state.scrollUpdateWasRequested\n ) {\n this._callOnScroll(\n this.state.scrollDirection,\n this.state.scrollOffset,\n this.state.scrollUpdateWasRequested,\n this.preset.field\n )\n }\n }\n\n if (this.itemMap.isUnlimitedMode) {\n setTimeout(() => {\n for (let column = 0; column < this.itemMap.columns; column++) {\n const [startIndex, stopIndex] = this._getRangeToRender(column)\n for (let row = startIndex; row <= stopIndex; row++) {\n const itemIndex = this.itemMap.getItemIndexByPosition(column, row)\n if (itemIndex >= 0 && itemIndex < this.props.itemCount) {\n const times = this.itemMap.compareSizeByPosition(column, row) ? 3 : 0\n getRectSizeSync(`#${this.preset.id}-${itemIndex}`, 100, times).then(({ height }) => {\n if (typeof height === 'number' && height > 0 && !this.itemMap.compareSizeByPosition(column, row, height)) {\n this.itemMap.setSizeByPosition(column, row, height)\n }\n })\n }\n }\n }\n }, 0)\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getRangeToRender (columnIndex = 0) {\n return this.itemMap.getRangeToRender(\n this.state.scrollDirection,\n columnIndex,\n this.state.scrollOffset,\n this.state.isScrolling,\n )\n }\n\n _outerRefSetter = ref => {\n const { outerRef } = this.props\n this._outerRef = ref\n\n if (typeof outerRef === 'function') {\n outerRef(ref)\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n // @ts-ignore\n outerRef.current = ref\n }\n }\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId)\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL)\n }\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null\n this.setState({\n isScrolling: false\n }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this.preset.resetCache()\n })\n }\n\n _onScroll = event => {\n const {\n scrollHeight = this.itemMap.maxColumnSize,\n scrollWidth,\n scrollTop,\n scrollLeft\n } = event.currentTarget\n if (!isNumber(scrollHeight) || !isNumber(scrollWidth)) return\n const clientHeight = this.itemMap.wrapperHeight\n const clientWidth = this.itemMap.wrapperWidth\n this.setState((prevState: IState) => {\n const diffOffset = this.preset.field.scrollTop - scrollTop\n if (prevState.scrollOffset === scrollTop || this.preset.isShaking(diffOffset)) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null\n }\n // FIXME preact 中使用时,该组件会出现触底滚动事件重复触发导致的抖动问题,后续修复\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight))\n this.preset.field = {\n scrollHeight: this.itemMap.maxColumnSize,\n scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft,\n clientHeight,\n clientWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false\n }\n }, this._resetIsScrollingDebounced)\n }\n\n public scrollTo (scrollOffset = 0, enhanced = this.preset.enhanced) {\n scrollOffset = Math.max(0, scrollOffset)\n if (this.state.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const option: any = {\n animated: true,\n duration: 300,\n }\n option.top = scrollOffset\n return getScrollViewContextNode(`#${this.preset.id}`).then((node: any) => node.scrollTo(option))\n }\n\n this.setState((prevState: IState) => {\n if (prevState.scrollOffset === scrollOffset) {\n return null\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: true\n }\n }, this._resetIsScrollingDebounced)\n }\n\n public scrollToItem (index: number, align = 'auto', enhanced = this.preset.enhanced) {\n const { itemCount } = this.props\n const { scrollOffset } = this.state\n index = Math.max(0, Math.min(index, itemCount - 1))\n this.scrollTo(this.itemMap.getOffsetForIndexAndAlignment(index, align, scrollOffset), enhanced)\n }\n\n componentDidMount () {\n const { initialScrollOffset } = this.props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n this._outerRef.scrollTop = initialScrollOffset\n }\n\n this._callPropsCallbacks()\n this.preset.boundaryDetection()\n }\n\n componentDidUpdate (prevProps: IProps, prevState: IState) {\n const { scrollOffset, scrollUpdateWasRequested } = this.state\n\n this.preset.update(this.props)\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n this._outerRef.scrollTop = scrollOffset\n }\n\n this._callPropsCallbacks(prevProps, prevState)\n }\n\n componentWillUnmount () {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId)\n }\n this.preset.dispose()\n }\n\n getRenderItemNode (itemIndex: number, type: 'node' | 'placeholder' = 'node') {\n const { item, itemData, itemKey = defaultItemKey, useIsScrolling } = this.props\n const { isScrolling } = this.state\n const key = itemKey(itemIndex, itemData)\n\n const style = this.preset.getItemStyle(itemIndex)\n if (type === 'placeholder') {\n return React.createElement<any>(this.preset.itemElement, {\n key,\n id: `${this.preset.id}-${itemIndex}-wrapper`,\n style: this.preset.isBrick ? style : { display: 'none' }\n })\n }\n\n return React.createElement<any>(this.preset.itemElement, {\n key,\n id: `${this.preset.id}-${itemIndex}-wrapper`,\n style\n }, React.createElement(item, {\n id: `${this.preset.id}-${itemIndex}`,\n data: itemData,\n index: itemIndex,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }))\n }\n\n getRenderColumnNode (columnIndex: number) {\n const columnProps: any = {\n key: `${this.preset.id}-column-${columnIndex}`,\n id: `${this.preset.id}-column-${columnIndex}`,\n style: {\n height: '100%',\n position: 'relative',\n width: convertNumber2PX(this.itemMap.columnWidth)\n }\n }\n\n const [startIndex, stopIndex] = this._getRangeToRender(columnIndex)\n const items = []\n if (this.preset.isRelative && !this.preset.isBrick) {\n const pre = convertNumber2PX(this.itemMap.getOffsetSizeCache(columnIndex, startIndex))\n items.push(\n React.createElement<any>(this.preset.itemElement, {\n key: `${this.preset.id}-${columnIndex}-pre`,\n id: `${this.preset.id}-${columnIndex}-pre`,\n style: {\n height: pre,\n width: '100%'\n }\n })\n )\n }\n const placeholderCount = this.preset.placeholderCount\n const restCount = this.itemMap.getColumnLength(columnIndex) - stopIndex\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n const visibleItem = (stopIndex + postPlaceholder) * this.itemMap.columns + columnIndex\n this.itemMap.updateItem(visibleItem)\n for (let row = 0; row < stopIndex + postPlaceholder; row++) {\n const itemIndex = this.itemMap.getItemIndexByPosition(columnIndex, row)\n if (itemIndex >= 0 && itemIndex < this.props.itemCount) {\n if (!this.preset.isBrick) {\n if (row < startIndex - prevPlaceholder) {\n row = startIndex - prevPlaceholder\n continue\n }\n }\n\n if (row < startIndex || row > stopIndex) {\n items.push(this.getRenderItemNode(itemIndex, 'placeholder'))\n } else {\n items.push(this.getRenderItemNode(itemIndex))\n }\n }\n }\n return React.createElement(this.preset.innerElement, columnProps, items)\n }\n\n render () {\n const {\n className,\n style,\n height,\n width,\n enhanced,\n outerWrapper,\n renderTop,\n renderBottom,\n ...rest\n } = omit(this.props, [\n 'item', 'itemCount', 'itemData', 'itemKey', 'useIsScrolling',\n 'innerElementType', 'innerTagName', 'itemElementType', 'itemTagName',\n 'outerElementType', 'outerTagName', 'onScrollToLower', 'onScrollToUpper',\n 'upperThreshold', 'lowerThreshold',\n 'position',\n ])\n const {\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.state\n\n const estimatedHeight = convertNumber2PX(this.itemMap.maxColumnSize)\n const outerProps: any = {\n ...rest,\n id: this.preset.id,\n className: classNames(className, 'virtual-waterfall'),\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n height: convertNumber2PX(height),\n width: convertNumber2PX(width),\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n ...style\n },\n enhanced,\n outerElementType: this.preset.outerElement,\n innerElementType: this.preset.innerElement,\n renderTop,\n renderBottom,\n }\n\n if (!this.preset.enhanced) {\n outerProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n\n const columnNodes: React.ReactNode[] = []\n for (let i = 0; i < this.itemMap.columns; i++) {\n columnNodes.push(this.getRenderColumnNode(i))\n }\n\n return React.createElement(\n outerWrapper || this.preset.outerElement,\n outerProps,\n React.createElement(this.preset.innerElement, {\n key: `${this.preset.id}-wrapper`,\n id: `${this.preset.id}-wrapper`,\n className: classNames(className, 'virtual-waterfall-wrapper'),\n style: {\n display: 'flex',\n justifyContent: 'space-evenly',\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n height: estimatedHeight,\n width: '100%',\n ...style\n },\n } as any, columnNodes),\n )\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"waterfall.js","sources":["../../../../src/components/virtual-waterfall/react/waterfall.ts"],"sourcesContent":["import { isNumber } from '@tarojs/shared'\nimport classNames from 'classnames'\nimport memoizeOne from 'memoize-one'\nimport React from 'react'\n\nimport { cancelTimeout, convertNumber2PX, defaultItemKey, getRectSizeSync, getScrollViewContextNode, omit, requestTimeout } from '../../../utils'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport ListMap from '../list-map'\nimport Preset, { type IProps } from '../preset'\n\ninterface IState {\n instance: Waterfall\n isScrolling: boolean\n scrollDirection: 'forward' | 'backward'\n scrollOffset: number\n scrollUpdateWasRequested: boolean\n refreshCount: number\n}\n\nexport default class Waterfall extends React.PureComponent<IProps, IState> {\n static defaultProps: IProps = {\n itemData: undefined,\n overscanDistance: 50,\n useIsScrolling: false,\n shouldResetStyleCacheOnItemSizeChange: true\n }\n\n itemMap: ListMap\n preset: Preset\n\n constructor (props: IProps) {\n super(props)\n\n this.preset = new Preset(\n props,\n this.refresh,\n )\n const id = this.props.id || this.preset.id\n this.preset.updateWrapper(id)\n this.itemMap = this.preset.itemMap\n\n this.state = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n refreshCount: 0,\n }\n }\n\n refresh = () => {\n if (process.env.FRAMEWORK === 'preact') {\n this.forceUpdate()\n } else {\n this.setState(({ refreshCount }) => ({\n refreshCount: ++refreshCount\n }))\n }\n }\n\n _outerRef = undefined\n\n _resetIsScrollingTimeoutId = null\n\n _callOnItemsRendered = memoizeOne((columnIndex, overscanStartIndex, overscanStopIndex) => this.props.onItemsRendered({\n columnIndex,\n overscanStartIndex,\n overscanStopIndex,\n }))\n\n _callOnScroll = memoizeOne((scrollDirection, scrollOffset, scrollUpdateWasRequested, detail) => this.props.onScroll({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n } as any))\n\n _callPropsCallbacks (prevProps: any = {}, prevState: any = {}) {\n if (typeof this.props.onItemsRendered === 'function') {\n if (this.props.itemCount > 0) {\n if (prevProps && prevProps.itemCount !== this.props.itemCount) {\n for (let columnIndex = 0; columnIndex < this.itemMap.columns; columnIndex++) {\n const [overscanStartIndex, overscanStopIndex] = this._getRangeToRender(columnIndex)\n this._callOnItemsRendered(columnIndex, overscanStartIndex, overscanStopIndex)\n }\n }\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n if (!prevState ||\n prevState.scrollDirection !== this.state.scrollDirection ||\n prevState.scrollOffset !== this.state.scrollOffset ||\n prevState.scrollUpdateWasRequested !== this.state.scrollUpdateWasRequested\n ) {\n this._callOnScroll(\n this.state.scrollDirection,\n this.state.scrollOffset,\n this.state.scrollUpdateWasRequested,\n this.preset.field\n )\n }\n }\n\n if (this.itemMap.isUnlimitedMode) {\n setTimeout(() => {\n for (let column = 0; column < this.itemMap.columns; column++) {\n const [startIndex, stopIndex] = this._getRangeToRender(column)\n for (let row = startIndex; row <= stopIndex; row++) {\n const itemIndex = this.itemMap.getItemIndexByPosition(column, row)\n if (itemIndex >= 0 && itemIndex < this.props.itemCount) {\n const times = this.itemMap.compareSizeByPosition(column, row) ? 3 : 0\n getRectSizeSync(`${this.props.queryPrefix}#${this.preset.id}-${itemIndex}`, 100, times).then(({ height }) => {\n if (typeof height === 'number' && height > 0 && !this.itemMap.compareSizeByPosition(column, row, height)) {\n this.itemMap.setSizeByPosition(column, row, height)\n }\n })\n }\n }\n }\n }, 0)\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getRangeToRender (columnIndex = 0) {\n return this.itemMap.getRangeToRender(\n this.state.scrollDirection,\n columnIndex,\n this.state.scrollOffset,\n this.state.isScrolling,\n )\n }\n\n _outerRefSetter = ref => {\n const { outerRef } = this.props\n this._outerRef = ref\n\n if (typeof outerRef === 'function') {\n outerRef(ref)\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n // @ts-ignore\n outerRef.current = ref\n }\n }\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId)\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL)\n }\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null\n this.setState({\n isScrolling: false\n }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this.preset.resetCache()\n })\n }\n\n _onScroll = event => {\n const {\n scrollHeight = this.itemMap.maxColumnSize,\n scrollWidth,\n scrollTop,\n scrollLeft\n } = event.currentTarget\n if (!isNumber(scrollHeight) || !isNumber(scrollWidth)) return\n const clientHeight = this.itemMap.wrapperHeight\n const clientWidth = this.itemMap.wrapperWidth\n this.setState((prevState: IState) => {\n const diffOffset = this.preset.field.scrollTop - scrollTop\n if (prevState.scrollOffset === scrollTop || this.preset.isShaking(diffOffset)) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null\n }\n // FIXME preact 中使用时,该组件会出现触底滚动事件重复触发导致的抖动问题,后续修复\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight))\n this.preset.field = {\n scrollHeight: this.itemMap.maxColumnSize,\n scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft,\n clientHeight,\n clientWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false\n }\n }, this._resetIsScrollingDebounced)\n }\n\n public scrollTo (scrollOffset = 0, enhanced = this.preset.enhanced) {\n scrollOffset = Math.max(0, scrollOffset)\n if (this.state.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const option: any = {\n animated: true,\n duration: 300,\n }\n option.top = scrollOffset\n return getScrollViewContextNode(`${this.props.queryPrefix}#${this.preset.id}`).then((node: any) => node.scrollTo(option))\n }\n\n this.setState((prevState: IState) => {\n if (prevState.scrollOffset === scrollOffset) {\n return null\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: true\n }\n }, this._resetIsScrollingDebounced)\n }\n\n public scrollToItem (index: number, align = 'auto', enhanced = this.preset.enhanced) {\n const { itemCount } = this.props\n const { scrollOffset } = this.state\n index = Math.max(0, Math.min(index, itemCount - 1))\n this.scrollTo(this.itemMap.getOffsetForIndexAndAlignment(index, align, scrollOffset), enhanced)\n }\n\n componentDidMount () {\n const { initialScrollOffset } = this.props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n this._outerRef.scrollTop = initialScrollOffset\n }\n\n this._callPropsCallbacks()\n this.preset.boundaryDetection()\n }\n\n componentDidUpdate (prevProps: IProps, prevState: IState) {\n const { scrollOffset, scrollUpdateWasRequested } = this.state\n\n this.preset.update(this.props)\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n this._outerRef.scrollTop = scrollOffset\n }\n\n this._callPropsCallbacks(prevProps, prevState)\n }\n\n componentWillUnmount () {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId)\n }\n this.preset.dispose()\n }\n\n getRenderItemNode (itemIndex: number, type: 'node' | 'placeholder' = 'node') {\n const { item, itemData, itemKey = defaultItemKey, useIsScrolling } = this.props\n const { isScrolling } = this.state\n const key = itemKey(itemIndex, itemData)\n\n const style = this.preset.getItemStyle(itemIndex)\n if (type === 'placeholder') {\n return React.createElement<any>(this.preset.itemElement, {\n key,\n id: `${this.preset.id}-${itemIndex}-wrapper`,\n style: this.preset.isBrick ? style : { display: 'none' }\n })\n }\n\n return React.createElement<any>(this.preset.itemElement, {\n key,\n id: `${this.preset.id}-${itemIndex}-wrapper`,\n style\n }, React.createElement(item, {\n id: `${this.preset.id}-${itemIndex}`,\n data: itemData,\n index: itemIndex,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }))\n }\n\n getRenderColumnNode (columnIndex: number) {\n const columnProps: any = {\n key: `${this.preset.id}-column-${columnIndex}`,\n id: `${this.preset.id}-column-${columnIndex}`,\n style: {\n height: '100%',\n position: 'relative',\n width: convertNumber2PX(this.itemMap.columnWidth)\n }\n }\n\n const [startIndex, stopIndex] = this._getRangeToRender(columnIndex)\n const items = []\n if (this.preset.isRelative && !this.preset.isBrick) {\n const pre = convertNumber2PX(this.itemMap.getOffsetSizeCache(columnIndex, startIndex))\n items.push(\n React.createElement<any>(this.preset.itemElement, {\n key: `${this.preset.id}-${columnIndex}-pre`,\n id: `${this.preset.id}-${columnIndex}-pre`,\n style: {\n height: pre,\n width: '100%'\n }\n })\n )\n }\n const placeholderCount = this.preset.placeholderCount\n const restCount = this.itemMap.getColumnLength(columnIndex) - stopIndex\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n const visibleItem = (stopIndex + postPlaceholder) * this.itemMap.columns + columnIndex\n this.itemMap.updateItem(visibleItem)\n for (let row = 0; row < stopIndex + postPlaceholder; row++) {\n const itemIndex = this.itemMap.getItemIndexByPosition(columnIndex, row)\n if (itemIndex >= 0 && itemIndex < this.props.itemCount) {\n if (!this.preset.isBrick) {\n if (row < startIndex - prevPlaceholder) {\n row = startIndex - prevPlaceholder\n continue\n }\n }\n\n if (row < startIndex || row > stopIndex) {\n items.push(this.getRenderItemNode(itemIndex, 'placeholder'))\n } else {\n items.push(this.getRenderItemNode(itemIndex))\n }\n }\n }\n return React.createElement(this.preset.innerElement, columnProps, items)\n }\n\n render () {\n const {\n className,\n style,\n height,\n width,\n enhanced,\n outerWrapper,\n renderTop,\n renderBottom,\n ...rest\n } = omit(this.props, [\n 'item', 'itemCount', 'itemData', 'itemKey', 'useIsScrolling',\n 'innerElementType', 'innerTagName', 'itemElementType', 'itemTagName',\n 'outerElementType', 'outerTagName', 'onScrollToLower', 'onScrollToUpper',\n 'upperThreshold', 'lowerThreshold',\n 'position',\n ])\n const {\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.state\n\n const estimatedHeight = convertNumber2PX(this.itemMap.maxColumnSize)\n const outerProps: any = {\n ...rest,\n id: this.preset.id,\n className: classNames(className, 'virtual-waterfall'),\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n height: convertNumber2PX(height),\n width: convertNumber2PX(width),\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n ...style\n },\n enhanced,\n outerElementType: this.preset.outerElement,\n innerElementType: this.preset.innerElement,\n renderTop,\n renderBottom,\n }\n\n if (!this.preset.enhanced) {\n outerProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n\n const columnNodes: React.ReactNode[] = []\n for (let i = 0; i < this.itemMap.columns; i++) {\n columnNodes.push(this.getRenderColumnNode(i))\n }\n\n return React.createElement(\n outerWrapper || this.preset.outerElement,\n outerProps,\n React.createElement(this.preset.innerElement, {\n key: `${this.preset.id}-wrapper`,\n id: `${this.preset.id}-wrapper`,\n className: classNames(className, 'virtual-waterfall-wrapper'),\n style: {\n display: 'flex',\n justifyContent: 'space-evenly',\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n height: estimatedHeight,\n width: '100%',\n ...style\n },\n } as any, columnNodes),\n )\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  declare const outerWrapper: React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
3
- export { outerWrapper as default };
3
+ export default outerWrapper;