@tarojs/components-advanced 3.6.9-alpha.12 → 3.6.9-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/components/index.d.ts +1 -0
  2. package/dist/components/index.js +1 -0
  3. package/dist/components/index.js.map +1 -1
  4. package/dist/components/virtual-list/index.d.ts +30 -19
  5. package/dist/components/virtual-list/index.js.map +1 -1
  6. package/dist/components/virtual-list/list-set.js +10 -45
  7. package/dist/components/virtual-list/list-set.js.map +1 -1
  8. package/dist/components/virtual-list/preset.d.ts +4 -6
  9. package/dist/components/virtual-list/preset.js +3 -3
  10. package/dist/components/virtual-list/preset.js.map +1 -1
  11. package/dist/components/virtual-list/react/index.d.ts +1 -1
  12. package/dist/components/virtual-list/react/index.js +3 -2
  13. package/dist/components/virtual-list/react/index.js.map +1 -1
  14. package/dist/components/virtual-list/react/list.d.ts +1 -1
  15. package/dist/components/virtual-list/react/list.js +21 -19
  16. package/dist/components/virtual-list/react/list.js.map +1 -1
  17. package/dist/components/virtual-list/utils.d.ts +1 -4
  18. package/dist/components/virtual-list/utils.js +1 -28
  19. package/dist/components/virtual-list/utils.js.map +1 -1
  20. package/dist/components/virtual-list/vue/list.d.ts +24 -23
  21. package/dist/components/virtual-list/vue/list.js +45 -42
  22. package/dist/components/virtual-list/vue/list.js.map +1 -1
  23. package/dist/components/virtual-waterfall/constants.d.ts +2 -0
  24. package/dist/components/virtual-waterfall/constants.js +4 -0
  25. package/dist/components/virtual-waterfall/constants.js.map +1 -0
  26. package/dist/components/virtual-waterfall/index.d.ts +128 -0
  27. package/dist/components/virtual-waterfall/index.js +6 -0
  28. package/dist/components/virtual-waterfall/index.js.map +1 -0
  29. package/dist/components/virtual-waterfall/list-map.d.ts +39 -0
  30. package/dist/components/virtual-waterfall/list-map.js +257 -0
  31. package/dist/components/virtual-waterfall/list-map.js.map +1 -0
  32. package/dist/components/virtual-waterfall/preset.d.ts +40 -0
  33. package/dist/components/virtual-waterfall/preset.js +153 -0
  34. package/dist/components/virtual-waterfall/preset.js.map +1 -0
  35. package/dist/components/virtual-waterfall/react/index.d.ts +4 -0
  36. package/dist/components/virtual-waterfall/react/index.js +38 -0
  37. package/dist/components/virtual-waterfall/react/index.js.map +1 -0
  38. package/dist/components/virtual-waterfall/react/waterfall.d.ts +30 -0
  39. package/dist/components/virtual-waterfall/react/waterfall.js +285 -0
  40. package/dist/components/virtual-waterfall/react/waterfall.js.map +1 -0
  41. package/dist/components/virtual-waterfall/vue/index.d.ts +17 -0
  42. package/dist/components/virtual-waterfall/vue/index.js +12 -0
  43. package/dist/components/virtual-waterfall/vue/index.js.map +1 -0
  44. package/dist/components/virtual-waterfall/vue/waterfall.d.ts +159 -0
  45. package/dist/components/virtual-waterfall/vue/waterfall.js +86 -0
  46. package/dist/components/virtual-waterfall/vue/waterfall.js.map +1 -0
  47. package/dist/index.js +3 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/utils/convert.d.ts +1 -1
  50. package/dist/utils/convert.js.map +1 -1
  51. package/dist/utils/dom.d.ts +7 -0
  52. package/dist/utils/dom.js +43 -0
  53. package/dist/utils/dom.js.map +1 -0
  54. package/dist/utils/helper.d.ts +10 -0
  55. package/dist/utils/helper.js +51 -0
  56. package/dist/utils/helper.js.map +1 -0
  57. package/dist/utils/index.d.ts +2 -0
  58. package/dist/utils/index.js +2 -0
  59. package/dist/utils/index.js.map +1 -1
  60. package/dist/utils/vue-render.d.ts +4 -0
  61. package/dist/{components/virtual-list/vue/render.js → utils/vue-render.js} +2 -2
  62. package/dist/utils/vue-render.js.map +1 -0
  63. package/package.json +7 -6
  64. package/dist/components/virtual-list/vue/render.d.ts +0 -4
  65. package/dist/components/virtual-list/vue/render.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/vue/list.ts"],"sourcesContent":["import { isWebPlatform } from '@tarojs/shared'\nimport memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX } from '../../../utils/convert'\nimport { omit } from '../../../utils/lodash'\nimport { cancelTimeout, requestTimeout } from '../../../utils/timer'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport { getRTLOffsetType } from '../dom-helpers'\nimport Preset from '../preset'\nimport { defaultItemKey, getRectSize, getScrollViewContextNode } from '../utils'\nimport render from './render'\n\nconst isWeb = isWebPlatform()\n\nexport default {\n props: {\n height: {\n type: [String, Number],\n required: true\n },\n width: {\n type: [String, Number],\n required: true\n },\n itemCount: {\n type: Number,\n required: true\n },\n itemData: {\n type: Array,\n required: true\n },\n itemSize: {\n type: [Number, Function],\n required: true\n },\n unlimitedSize: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: 'absolute'\n },\n initialScrollOffset: {\n type: Number,\n default: 0\n },\n innerElementType: {\n type: String,\n default: isWeb ? 'taro-view-core' : 'view'\n },\n direction: {\n type: String,\n default: 'ltr'\n },\n layout: {\n type: String,\n default: 'vertical'\n },\n overscanCount: {\n type: Number,\n default: 1\n },\n placeholderCount: {\n type: Number\n },\n useIsScrolling: {\n type: Boolean,\n default: false\n },\n item: {\n required: true\n },\n itemKey: String,\n itemTagName: {\n type: String,\n default: isWeb ? 'taro-view-core' : 'view'\n },\n innerTagName: {\n type: String,\n default: isWeb ? 'taro-view-core' : 'view'\n },\n outerTagName: {\n type: String,\n default: isWeb ? 'taro-scroll-view-core' : 'scroll-view'\n },\n itemElementType: String,\n outerElementType: String,\n innerRef: String,\n outerRef: String,\n onItemsRendered: Function,\n onScrollNative: Function,\n shouldResetStyleCacheOnItemSizeChange: {\n type: Boolean,\n default: true\n },\n },\n data () {\n const preset = new Preset(this.$props, this.refresh)\n return {\n itemList: preset.itemList,\n preset,\n id: this.$props.id || preset.id,\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 resetIsScrollingTimeoutId: null,\n refreshCount: 0\n }\n },\n methods: {\n refresh () {\n this.refreshCount = this.refreshCount + 1\n },\n scrollTo (scrollOffset) {\n const { enhanced } = this.$props\n scrollOffset = Math.max(0, scrollOffset)\n if (this.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const isHorizontal = this.preset.isHorizontal\n const option: any = {\n animated: true,\n duration: 500\n }\n if (isHorizontal) {\n option.left\t= scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`#${this.$data.id}`).then((node: any) => node.scrollTo(option))\n }\n\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = true\n\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n scrollToItem (index, align = 'auto') {\n const { itemCount } = this.$props\n const { scrollOffset } = this.$data\n\n index = Math.max(0, Math.min(index, itemCount - 1))\n\n this.scrollTo(\n this.itemList.getOffsetForIndexAndAlignment(\n this.$props,\n index,\n align,\n scrollOffset\n )\n )\n },\n\n _callOnItemsRendered: memoizeOne(\n function (\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n ) {\n return this.$props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n })\n }\n ),\n\n _callOnScroll: memoizeOne(\n function (\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n ) {\n this.$emit('scroll', {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n })\n }\n ),\n\n _callPropsCallbacks () {\n if (typeof this.$props.onItemsRendered === 'function') {\n const { itemCount } = this.$props\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n ] = this._getRangeToRender()\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n )\n }\n }\n\n this._callOnScroll(\n this.scrollDirection,\n this.scrollOffset,\n this.scrollUpdateWasRequested,\n this.preset.field\n )\n\n setTimeout(() => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n const isHorizontal = this.preset.isHorizontal\n for (let index = startIndex; index <= stopIndex; index++) {\n this._getSizeUploadSync(index, isHorizontal)\n }\n }, 0)\n },\n\n _getSizeUploadSync (index: number, isHorizontal: boolean) {\n const ID = `#${this.$data.id}-${index}`\n\n return new Promise((resolve) => {\n const success = ({ width, height }) => {\n const size = isHorizontal ? width : height\n if (!this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n }\n const fail = () => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n if (index >= startIndex && index <= stopIndex) {\n setTimeout(() => {\n getRectSize(ID, success, fail)\n }, 100)\n }\n }\n getRectSize(ID, success, fail)\n })\n },\n\n _getRangeToRender () {\n return this.itemList.getRangeToRender(\n this.$data.scrollDirection,\n this.$data.scrollOffset,\n this.$data.isScrolling\n )\n },\n\n _onScrollHorizontal (event) {\n const {\n clientWidth = this.itemList.wrapperSize,\n scrollHeight,\n scrollWidth = this.itemList.getOffsetSize(),\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n this.preset.field = {\n scrollHeight: scrollHeight,\n scrollWidth: this.itemList.getOffsetSize(),\n scrollTop: scrollTop,\n scrollLeft: scrollLeft,\n clientHeight: scrollHeight,\n clientWidth: scrollWidth\n }\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollLeft - scrollLeft\n if (this.scrollOffset === scrollLeft || this.preset.isShaking(diffOffset)) {\n return\n }\n\n let scrollOffset = scrollLeft\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft\n break\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft\n break\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n )\n this.preset.field = {\n scrollWidth: scrollOffset,\n }\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollLeft ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _onScrollVertical (event) {\n const {\n clientHeight = this.itemList.wrapperSize,\n scrollHeight = this.itemList.getOffsetSize(),\n scrollWidth,\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollTop - scrollTop\n if (this.scrollOffset === scrollTop || this.preset.isShaking(diffOffset)) {\n return\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n )\n this.preset.field = {\n scrollHeight: this.itemList.getOffsetSize(),\n scrollWidth: scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft: scrollLeft,\n clientHeight: clientHeight,\n clientWidth: scrollWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _outerRefSetter (ref) {\n const {\n outerRef\n } = 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('value')) {\n outerRef.value = ref\n }\n },\n\n _resetIsScrollingDebounced () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n\n this.resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n )\n },\n\n _resetIsScrolling () {\n this.resetIsScrollingTimeoutId = null\n this.isScrolling = false\n this.$nextTick(() => {\n this.preset.getItemStyleCache(-1, null)\n })\n }\n },\n mounted () {\n const { initialScrollOffset } = this.$props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = this._outerRef\n if (this.preset.isHorizontal) {\n outerRef.scrollLeft = initialScrollOffset\n } else {\n outerRef.scrollTop = initialScrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n updated () {\n this.preset.update(this.$props)\n\n const { scrollOffset, scrollUpdateWasRequested } = this.$data\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = this._outerRef\n\n if (this.preset.isHorizontal) {\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset\n break\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset\n break\n default: {\n const { clientWidth, scrollWidth } = outerRef\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset\n break\n }\n }\n } else {\n outerRef.scrollLeft = scrollOffset\n }\n } else {\n outerRef.scrollTop = scrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n\n beforeDestroy () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n },\n\n render () {\n const {\n item,\n direction,\n height,\n innerRef,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n useIsScrolling,\n width,\n enhanced = false\n } = omit(this.$props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position'])\n const {\n id,\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.$data\n\n const isHorizontal = this.preset.isHorizontal\n const placeholderCount = this.preset.placeholderCount\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n\n const items = []\n if (itemCount > 0) {\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemTagName, {\n key: itemKey(index + startIndex - prevPlaceholder, itemData),\n style: { display: 'none' }\n }\n )))\n for (let index = startIndex; index <= stopIndex; index++) {\n const style = this.preset.getItemStyle(index)\n items.push(\n render(this.preset.itemTagName, {\n key: itemKey(index, itemData),\n style\n }, [\n render(item, {\n id: `${id}-${index}`,\n props: {\n id: `${id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }\n })\n ])\n )\n }\n let restCount = itemCount - stopIndex\n restCount = restCount > 0 ? restCount : 0\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemTagName, {\n key: itemKey(1 + index + stopIndex, itemData),\n style: { display: 'none' }\n }\n )))\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize())\n const outerElementProps: any = {\n id,\n ref: this._outerRefSetter,\n layout,\n enhanced,\n style: {\n position: 'relative',\n height: convertNumber2PX(height),\n width: convertNumber2PX(width),\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction\n },\n attrs: {\n scrollY: layout === 'vertical',\n scrollX: layout === 'horizontal'\n },\n on: {\n scroll: onScroll\n }\n }\n\n if (!enhanced) {\n if (isHorizontal) {\n outerElementProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft\n } else {\n outerElementProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n }\n\n if (this.preset.isRelative) {\n const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex))\n return render(this.preset.outerTagName, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.itemTagName, {\n key: `${id}-pre`,\n id: `${id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n }),\n render(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n } else {\n return render(this.preset.outerTagName, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n width: !isHorizontal ? '100%' : estimatedTotalSize\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/vue/list.ts"],"sourcesContent":["import { isWebPlatform } from '@tarojs/shared'\nimport memoizeOne from 'memoize-one'\n\nimport { cancelTimeout, convertNumber2PX, defaultItemKey, getRectSize, getScrollViewContextNode, omit, requestTimeout } from '../../../utils'\nimport render from '../../../utils/vue-render'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport { getRTLOffsetType } from '../dom-helpers'\nimport Preset from '../preset'\n\nconst isWeb = isWebPlatform()\n\nexport default {\n props: {\n height: {\n type: [String, Number],\n required: true\n },\n width: {\n type: [String, Number],\n required: true\n },\n item: {\n required: true\n },\n itemCount: {\n type: Number,\n required: true\n },\n itemData: {\n type: Array,\n required: true\n },\n itemKey: String,\n itemSize: {\n type: [Number, Function],\n required: true\n },\n unlimitedSize: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: 'absolute'\n },\n direction: {\n type: String,\n default: 'ltr'\n },\n layout: {\n type: String,\n default: 'vertical'\n },\n initialScrollOffset: {\n type: Number,\n default: 0\n },\n overscanCount: {\n type: Number,\n default: 1\n },\n placeholderCount: {\n type: Number\n },\n useIsScrolling: {\n type: Boolean,\n default: false\n },\n enhanced: {\n type: Boolean,\n default: false\n },\n shouldResetStyleCacheOnItemSizeChange: {\n type: Boolean,\n default: true\n },\n outerElementType: {\n type: String,\n default: isWeb ? 'taro-scroll-view-core' : 'scroll-view'\n },\n innerElementType: {\n type: String,\n default: isWeb ? 'taro-view-core' : 'view'\n },\n itemElementType: {\n type: String,\n default: isWeb ? 'taro-view-core' : 'view'\n },\n outerTagName: String,\n innerTagName: String,\n itemTagName: String,\n outerRef: String,\n innerRef: String,\n onScrollNative: Function,\n onItemsRendered: Function,\n },\n data () {\n const preset = new Preset(this.$props, this.refresh)\n return {\n itemList: preset.itemList,\n preset,\n id: this.$props.id || preset.id,\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 resetIsScrollingTimeoutId: null,\n refreshCount: 0\n }\n },\n methods: {\n refresh () {\n this.refreshCount = this.refreshCount + 1\n },\n scrollTo (scrollOffset) {\n const { enhanced } = this.$props\n scrollOffset = Math.max(0, scrollOffset)\n if (this.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const isHorizontal = this.preset.isHorizontal\n const option: any = {\n animated: true,\n duration: 500\n }\n if (isHorizontal) {\n option.left\t= scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`#${this.$data.id}`).then((node: any) => node.scrollTo(option))\n }\n\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = true\n\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n scrollToItem (index, align = 'auto') {\n const { itemCount } = this.$props\n const { scrollOffset } = this.$data\n\n index = Math.max(0, Math.min(index, itemCount - 1))\n\n this.scrollTo(\n this.itemList.getOffsetForIndexAndAlignment(\n this.$props,\n index,\n align,\n scrollOffset\n )\n )\n },\n\n _callOnItemsRendered: memoizeOne(\n function (\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\n ) {\n return this.$props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\n })\n }\n ),\n\n _callOnScroll: memoizeOne(\n function (\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n ) {\n this.$emit('scroll', {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n })\n }\n ),\n\n _callPropsCallbacks () {\n if (typeof this.$props.onItemsRendered === 'function') {\n const { itemCount } = this.$props\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\n ] = this._getRangeToRender()\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\n )\n }\n }\n\n this._callOnScroll(\n this.scrollDirection,\n this.scrollOffset,\n this.scrollUpdateWasRequested,\n this.preset.field\n )\n\n setTimeout(() => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n const isHorizontal = this.preset.isHorizontal\n for (let index = startIndex; index <= stopIndex; index++) {\n this._getSizeUploadSync(index, isHorizontal)\n }\n }, 0)\n },\n\n _getSizeUploadSync (index: number, isHorizontal: boolean) {\n const ID = `#${this.$data.id}-${index}`\n\n return new Promise((resolve) => {\n const success = ({ width, height }) => {\n const size = isHorizontal ? width : height\n if (!this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n }\n const fail = () => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n if (index >= startIndex && index <= stopIndex) {\n setTimeout(() => {\n getRectSize(ID, success, fail)\n }, 100)\n }\n }\n getRectSize(ID, success, fail)\n })\n },\n\n _getRangeToRender () {\n return this.itemList.getRangeToRender(\n this.$data.scrollDirection,\n this.$data.scrollOffset,\n this.$data.isScrolling\n )\n },\n\n _onScrollHorizontal (event) {\n const {\n clientWidth = this.itemList.wrapperSize,\n scrollHeight,\n scrollWidth = this.itemList.getOffsetSize(),\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n this.preset.field = {\n scrollHeight: scrollHeight,\n scrollWidth: this.itemList.getOffsetSize(),\n scrollTop: scrollTop,\n scrollLeft: scrollLeft,\n clientHeight: scrollHeight,\n clientWidth: scrollWidth\n }\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollLeft - scrollLeft\n if (this.scrollOffset === scrollLeft || this.preset.isShaking(diffOffset)) {\n return\n }\n\n let scrollOffset = scrollLeft\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft\n break\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft\n break\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n )\n this.preset.field = {\n scrollWidth: scrollOffset,\n }\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollLeft ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _onScrollVertical (event) {\n const {\n clientHeight = this.itemList.wrapperSize,\n scrollHeight = this.itemList.getOffsetSize(),\n scrollWidth,\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollTop - scrollTop\n if (this.scrollOffset === scrollTop || this.preset.isShaking(diffOffset)) {\n return\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n )\n this.preset.field = {\n scrollHeight: this.itemList.getOffsetSize(),\n scrollWidth: scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft: scrollLeft,\n clientHeight: clientHeight,\n clientWidth: scrollWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _outerRefSetter (ref) {\n const {\n outerRef\n } = 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('value')) {\n outerRef.value = ref\n }\n },\n\n _resetIsScrollingDebounced () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n\n this.resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n )\n },\n\n _resetIsScrolling () {\n this.resetIsScrollingTimeoutId = null\n this.isScrolling = false\n this.$nextTick(() => {\n this.preset.getItemStyleCache(-1, null)\n })\n }\n },\n mounted () {\n const { initialScrollOffset } = this.$props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = this._outerRef\n if (this.preset.isHorizontal) {\n outerRef.scrollLeft = initialScrollOffset\n } else {\n outerRef.scrollTop = initialScrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n updated () {\n this.preset.update(this.$props)\n\n const { scrollOffset, scrollUpdateWasRequested } = this.$data\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = this._outerRef\n\n if (this.preset.isHorizontal) {\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset\n break\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset\n break\n default: {\n const { clientWidth, scrollWidth } = outerRef\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset\n break\n }\n }\n } else {\n outerRef.scrollLeft = scrollOffset\n }\n } else {\n outerRef.scrollTop = scrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n\n beforeDestroy () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n },\n\n render () {\n const {\n item,\n direction,\n height,\n innerRef,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n useIsScrolling,\n width,\n enhanced = false\n } = omit(this.$props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position'])\n const {\n id,\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.$data\n\n const isHorizontal = this.preset.isHorizontal\n const placeholderCount = this.preset.placeholderCount\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n\n const items = []\n if (itemCount > 0) {\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemElement, {\n key: itemKey(index + startIndex - prevPlaceholder, itemData),\n style: { display: 'none' }\n }\n )))\n for (let index = startIndex; index <= stopIndex; index++) {\n const style = this.preset.getItemStyle(index)\n items.push(\n render(this.preset.itemElement, {\n key: itemKey(index, itemData),\n style\n }, [\n render(item, {\n id: `${id}-${index}`,\n props: {\n id: `${id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }\n })\n ])\n )\n }\n let restCount = itemCount - stopIndex\n restCount = restCount > 0 ? restCount : 0\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemElement, {\n key: itemKey(1 + index + stopIndex, itemData),\n style: { display: 'none' }\n }\n )))\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize())\n const outerElementProps: any = {\n id,\n ref: this._outerRefSetter,\n layout,\n enhanced,\n style: {\n position: 'relative',\n height: convertNumber2PX(height),\n width: convertNumber2PX(width),\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction\n },\n attrs: {\n scrollY: layout === 'vertical',\n scrollX: layout === 'horizontal'\n },\n on: {\n scroll: onScroll\n }\n }\n\n if (!enhanced) {\n if (isHorizontal) {\n outerElementProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft\n } else {\n outerElementProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n }\n\n if (this.preset.isRelative) {\n const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex))\n return render(this.preset.outerElement, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.itemElement, {\n key: `${id}-pre`,\n id: `${id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n }),\n render(this.preset.innerElement, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n } else {\n return render(this.preset.outerElement, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.innerElement, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n width: !isHorizontal ? '100%' : estimatedTotalSize\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const IS_SCROLLING_DEBOUNCE_INTERVAL = 200;
2
+ export { IS_SCROLLING_DEBOUNCE_INTERVAL };
@@ -0,0 +1,4 @@
1
+ const IS_SCROLLING_DEBOUNCE_INTERVAL = 200;
2
+
3
+ export { IS_SCROLLING_DEBOUNCE_INTERVAL };
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../src/components/virtual-waterfall/constants.ts"],"sourcesContent":["export const IS_SCROLLING_DEBOUNCE_INTERVAL = 200\n"],"names":[],"mappings":"AAAO,MAAM,8BAA8B,GAAG;;;;"}
@@ -0,0 +1,128 @@
1
+ import { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components';
2
+ import { Component, ComponentType, CSSProperties } from 'react';
3
+ interface VirtualWaterfallProps<T = any> extends Omit<StandardProps, 'children'> {
4
+ /** 高度 */
5
+ height: string | number;
6
+ /** 宽度 */
7
+ width: string | number;
8
+ /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */
9
+ column?: number;
10
+ /** 瀑布流单列宽度,默认值依照 width / column 计算 */
11
+ columnWidth?: number;
12
+ /** 子组件 */
13
+ item: ComponentType<{
14
+ /** 组件 ID */
15
+ id: string;
16
+ /** 单项的样式,样式必须传入组件的 style 中 */
17
+ style?: CSSProperties;
18
+ /** 组件渲染的数据 */
19
+ data: T[];
20
+ /** 组件渲染数据的索引 */
21
+ index: number;
22
+ /** 组件是否正在滚动,当 useIsScrolling 值为 true 时返回布尔值,否则返回 undefined */
23
+ isScrolling?: boolean;
24
+ }>;
25
+ /** 列表的长度 */
26
+ itemCount: number;
27
+ /** 渲染数据 */
28
+ itemData: T[];
29
+ /** 单项的大小 */
30
+ itemSize: number | ((index?: number, itemData?: T[]) => number);
31
+ /** 布局方式
32
+ * @default "absolute"
33
+ */
34
+ position?: 'absolute' | 'relative';
35
+ /** 初始滚动偏移值 */
36
+ initialScrollOffset?: number;
37
+ /** 在可视区域之外预渲染的距离,值设置得越高,快速滚动时出现白屏的概率就越小,相应地,每次滚动的性能会变得越差。
38
+ * > 建议至少大于等于 itemSize 的最大值
39
+ * @default 50
40
+ */
41
+ overscanDistance?: number;
42
+ /** 上下滚动预占位节点
43
+ * @default 0
44
+ */
45
+ placeholderCount?: number;
46
+ /** 是否注入 isScrolling 属性到 item 组件。这个参数一般用于实现滚动骨架屏(或其它 placeholder) 时比较有用。 */
47
+ useIsScrolling?: boolean;
48
+ /** 通过 ScrollViewContext 优化组件滚动性能
49
+ * @default false
50
+ * @note 部分平台不支持,使用时请注意甄别
51
+ */
52
+ enhanced?: boolean;
53
+ /** 列表外部容器组件类型。
54
+ * @default ScrollView
55
+ */
56
+ outerElementType?: ComponentType | string;
57
+ /** 列表内部容器组件类型。
58
+ * @default View
59
+ */
60
+ innerElementType?: ComponentType | string;
61
+ /** 列表子节点容器组件类型。
62
+ * @default View
63
+ */
64
+ itemElementType?: ComponentType | string;
65
+ /** 滚动时调用函数 */
66
+ onScroll?: (event: VirtualWaterfallProps.IVirtualWaterfallEvent<VirtualWaterfallProps.IVirtualWaterfallEventDetail>) => void;
67
+ /** 调用平台原生的滚动监听函数。 */
68
+ onScrollNative?: BaseEventOrigFunction<ScrollViewProps.onScrollDetail>;
69
+ style?: CSSProperties;
70
+ }
71
+ declare namespace VirtualWaterfallProps {
72
+ interface IVirtualWaterfallEventDetail extends ScrollViewProps.onScrollDetail {
73
+ scrollLeft: number;
74
+ scrollTop: number;
75
+ scrollHeight: number;
76
+ scrollWidth: number;
77
+ clientHeight: number;
78
+ clientWidth: number;
79
+ diffOffset: number;
80
+ }
81
+ interface IVirtualWaterfallEvent<T extends ScrollViewProps.onScrollDetail = ScrollViewProps.onScrollDetail> extends BaseEventOrig {
82
+ /** 滚动方向,可能值为 forward 往前, backward 往后。 */
83
+ scrollDirection: 'forward' | 'backward';
84
+ /** 滚动距离 */
85
+ scrollOffset: number;
86
+ /** 当滚动是由 scrollTo() 或 scrollToItem() 调用时返回 true,否则返回 false */
87
+ scrollUpdateWasRequested: boolean;
88
+ /** 滚动信息 */
89
+ detail: T;
90
+ }
91
+ }
92
+ /** 虚拟瀑布流
93
+ * @classification viewContainer
94
+ * @supported weapp, swan, alipay, tt, qq, jd, h5
95
+ */
96
+ declare class VirtualWaterfallComponent extends Component<VirtualWaterfallProps> {
97
+ /**
98
+ * 滚动到指定的地点。
99
+ */
100
+ /**
101
+ * 滚动到指定的地点。
102
+ */
103
+ scrollTo(scrollOffset: number): void;
104
+ /** 滚动到指定的条目。
105
+ * @param index 指定条目的索引。
106
+ * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。
107
+ *
108
+ * - start:指定条目在可视区域的顶部。
109
+ * - end:指定条目在可视区域的底部。
110
+ * - center:指定条目在可视区域的中间。
111
+ * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。
112
+ * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。
113
+ */
114
+ /** 滚动到指定的条目。
115
+ * @param index 指定条目的索引。
116
+ * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。
117
+ *
118
+ * - start:指定条目在可视区域的顶部。
119
+ * - end:指定条目在可视区域的底部。
120
+ * - center:指定条目在可视区域的中间。
121
+ * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。
122
+ * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。
123
+ */
124
+ scrollToItem(index: number, align: 'start' | 'end' | 'center' | 'auto' | 'smart'): void;
125
+ }
126
+ type VirtualWaterfall = VirtualWaterfallComponent;
127
+ declare const VirtualWaterfall: typeof VirtualWaterfallComponent;
128
+ export { VirtualWaterfall as default, VirtualWaterfall, VirtualWaterfallProps };
@@ -0,0 +1,6 @@
1
+ const VirtualWaterfall = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')
2
+ ? require('./vue').default
3
+ : require('./react').default;
4
+
5
+ export { VirtualWaterfall, VirtualWaterfall as default };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 /** 高度 */\n height: string | number\n /** 宽度 */\n width: string | number\n /** 瀑布流占用列数量,默认值依照 width / columnWidth ||= 2 计算 */\n column?: number\n /** 瀑布流单列宽度,默认值依照 width / column 计算 */\n columnWidth?: number\n /** 子组件 */\n item: ComponentType<{\n /** 组件 ID */\n id: string\n /** 单项的样式,样式必须传入组件的 style 中 */\n style?: CSSProperties\n /** 组件渲染的数据 */\n data: T[]\n /** 组件渲染数据的索引 */\n index: number\n /** 组件是否正在滚动,当 useIsScrolling 值为 true 时返回布尔值,否则返回 undefined */\n isScrolling?: boolean\n }>\n /** 列表的长度 */\n itemCount: number\n /** 渲染数据 */\n itemData: T[]\n /** 单项的大小 */\n itemSize: number | ((index?: number, itemData?: T[]) => number)\n /** 布局方式\n * @default \"absolute\"\n */\n position?: 'absolute' | 'relative'\n /** 初始滚动偏移值 */\n initialScrollOffset?: number\n /** 在可视区域之外预渲染的距离,值设置得越高,快速滚动时出现白屏的概率就越小,相应地,每次滚动的性能会变得越差。\n * > 建议至少大于等于 itemSize 的最大值\n * @default 50\n */\n overscanDistance?: number\n /** 上下滚动预占位节点\n * @default 0\n */\n placeholderCount?: number\n /** 是否注入 isScrolling 属性到 item 组件。这个参数一般用于实现滚动骨架屏(或其它 placeholder) 时比较有用。 */\n useIsScrolling?: boolean\n /** 通过 ScrollViewContext 优化组件滚动性能\n * @default false\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 onScroll?: (event: VirtualWaterfallProps.IVirtualWaterfallEvent<VirtualWaterfallProps.IVirtualWaterfallEventDetail>) => void\n /** 调用平台原生的滚动监听函数。 */\n onScrollNative?: BaseEventOrigFunction<ScrollViewProps.onScrollDetail>\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 */\ndeclare class VirtualWaterfallComponent extends Component<VirtualWaterfallProps> {\n /**\n * 滚动到指定的地点。\n */\n public scrollTo(scrollOffset: number): void\n\n /** 滚动到指定的条目。\n * @param index 指定条目的索引。\n * @param align 滚动到指定条目时,指定条目的位置。默认值为 auto。\n *\n * - start:指定条目在可视区域的顶部。\n * - end:指定条目在可视区域的底部。\n * - center:指定条目在可视区域的中间。\n * - auto:尽可能滚动距离最小保证条目在可视区域中,如果已经在可视区域,就不滚动。\n * - smart:条目如果已经在可视区域,就不滚动;如果有部分在可视区域,尽可能滚动距离最小保证条目在可视区域中;如果条目完全不在可视区域,那就滚动到条目在可视区域居中显示。\n */\n public scrollToItem(index: number, align: 'start' | 'end' | 'center' | 'auto' | 'smart'): void\n}\n\ndeclare type VirtualWaterfall = VirtualWaterfallComponent\nconst VirtualWaterfall: typeof VirtualWaterfallComponent = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')\n ? require('./vue').default\n : require('./react').default\n\nexport { VirtualWaterfall, VirtualWaterfallProps }\nexport default VirtualWaterfall\n"],"names":[],"mappings":"AAuHA,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;;;;"}
@@ -0,0 +1,39 @@
1
+ import { IProps } from "./preset.js";
2
+ type TProps = Pick<IProps, 'width' | 'height' | 'itemCount' | 'itemData' | 'itemSize' | 'overscanDistance'>;
3
+ type TItem = [number, number, number];
4
+ declare class ListMap {
5
+ #private;
6
+ protected props: TProps;
7
+ protected refresh?: TFunc;
8
+ mode?: 'normal' | 'function';
9
+ clientSize: number;
10
+ minItemSize: number;
11
+ maxItemSize: number;
12
+ constructor(columns: number, props: TProps, refresh?: TFunc);
13
+ updateColumns(columns: number, props: TProps): void;
14
+ update(props: TProps): void;
15
+ // 不支持 normal 模式
16
+ updateItem(itemIndex: number): any;
17
+ get isNormalMode(): boolean;
18
+ get length(): number;
19
+ get overscan(): number;
20
+ get columnsSize(): any[];
21
+ get maxColumnSize(): number;
22
+ get minColumnSize(): number;
23
+ get maxColumnIndex(): number;
24
+ get minColumnIndex(): number;
25
+ // 不支持 normal 模式
26
+ getColumnList(columnIndex: number): TItem[];
27
+ getColumnSize(columnIndex?: number): number;
28
+ getItemPosition(itemIndex: number): false | number[];
29
+ getItemInfo(itemIndex: number): number[];
30
+ getItemsInfoFromPosition(column?: number, row?: number): number[];
31
+ getItemDetail(itemIndex: number): any;
32
+ getOffsetSize(itemIndex: number): number;
33
+ getStartItems(offset: number): number[];
34
+ getStartIndex(column: number, offset: number): number;
35
+ getStopIndex(column: number, offset: number, start?: number): number;
36
+ getRangeToRender(direction: 'forward' | 'backward', column: number, offset: number, block?: boolean): number[];
37
+ getOffsetForIndexAndAlignment(index: number, align: string, scrollOffset: number): number;
38
+ }
39
+ export { ListMap as default };
@@ -0,0 +1,257 @@
1
+ import { __classPrivateFieldSet, __classPrivateFieldGet } from '../../node_modules/.pnpm/registry.npmjs.org_tslib@2.5.0/node_modules/tslib/tslib.es6.js';
2
+ import { isFunction, isNumber } from '@tarojs/shared';
3
+ import '../../utils/index.js';
4
+ import { getOffsetForIndexAndAlignment } from '../../utils/helper.js';
5
+
6
+ var _ListMap_columns, _ListMap_columnMap, _ListMap_items;
7
+ class ListMap {
8
+ constructor(columns = 2, props, refresh) {
9
+ this.props = props;
10
+ this.refresh = refresh;
11
+ _ListMap_columns.set(this, void 0);
12
+ _ListMap_columnMap.set(this, []); // [itemIndex, startPosition, itemSize]
13
+ _ListMap_items.set(this, []); // [columnIndex, rowIndex]
14
+ this.clientSize = 0;
15
+ this.minItemSize = 0;
16
+ this.maxItemSize = 0;
17
+ if (isFunction(this.props.itemSize)) {
18
+ this.mode = 'function';
19
+ }
20
+ else if (isNumber(this.props.itemSize)) {
21
+ this.mode = 'normal';
22
+ this.minItemSize = this.props.itemSize;
23
+ this.maxItemSize = this.props.itemSize;
24
+ }
25
+ this.updateColumns(columns, props);
26
+ }
27
+ updateColumns(columns = 2, props) {
28
+ __classPrivateFieldSet(this, _ListMap_columns, columns, "f");
29
+ if (!this.isNormalMode) {
30
+ __classPrivateFieldSet(this, _ListMap_columnMap, new Array(__classPrivateFieldGet(this, _ListMap_columns, "f")).fill(0).map(() => []), "f");
31
+ __classPrivateFieldSet(this, _ListMap_items, [], "f");
32
+ this.update(props);
33
+ }
34
+ }
35
+ update(props) {
36
+ this.props = props;
37
+ if (!this.isNormalMode) {
38
+ this.updateItem(this.length - 1);
39
+ }
40
+ }
41
+ // 不支持 normal 模式
42
+ updateItem(itemIndex) {
43
+ if (itemIndex >= this.length) {
44
+ return this.updateItem(this.length - 1);
45
+ }
46
+ if (!__classPrivateFieldGet(this, _ListMap_items, "f")[itemIndex]) {
47
+ const itemSizeFunc = this.props.itemSize;
48
+ const itemSize = itemSizeFunc(itemIndex, this.props.itemData);
49
+ if (this.maxItemSize < itemSize || this.maxItemSize === 0) {
50
+ this.maxItemSize = itemSize;
51
+ }
52
+ if (this.minItemSize > itemSize || this.minItemSize === 0) {
53
+ this.minItemSize = itemSize;
54
+ }
55
+ if (itemIndex > 0) {
56
+ // Note: 判断上一个 item 是否在同步
57
+ const lastIndex = itemIndex - 1;
58
+ const position = this.getItemPosition(lastIndex);
59
+ if (!position)
60
+ this.updateItem(lastIndex);
61
+ }
62
+ const column = this.minColumnIndex;
63
+ const row = this.getColumnList(column).length;
64
+ let startPosition = 0;
65
+ if (row > 0) {
66
+ const [, lastStart, lastSize] = this.getItemsInfoFromPosition(column, row - 1);
67
+ startPosition = lastStart + lastSize;
68
+ }
69
+ __classPrivateFieldGet(this, _ListMap_items, "f")[itemIndex] = [column, row];
70
+ const list = this.getColumnList(column);
71
+ list[row] = [itemIndex, startPosition, itemSize];
72
+ }
73
+ }
74
+ get isNormalMode() {
75
+ return this.mode === 'normal';
76
+ }
77
+ get length() {
78
+ return this.props.itemCount || 100;
79
+ }
80
+ get overscan() {
81
+ return this.props.overscanDistance || 50;
82
+ }
83
+ get columnsSize() {
84
+ if (this.isNormalMode) {
85
+ return new Array(__classPrivateFieldGet(this, _ListMap_columns, "f")).fill(this.getColumnSize());
86
+ }
87
+ return new Array(__classPrivateFieldGet(this, _ListMap_columns, "f")).fill(0).map((_, i) => this.getColumnSize(i));
88
+ }
89
+ get maxColumnSize() {
90
+ if (this.isNormalMode)
91
+ return this.getColumnSize();
92
+ return Math.max(...this.columnsSize);
93
+ }
94
+ get minColumnSize() {
95
+ if (this.isNormalMode)
96
+ return this.getColumnSize();
97
+ return Math.min(...this.columnsSize);
98
+ }
99
+ get maxColumnIndex() {
100
+ if (this.isNormalMode)
101
+ return 0;
102
+ const list = this.columnsSize;
103
+ return list.indexOf(Math.max(...list));
104
+ }
105
+ get minColumnIndex() {
106
+ if (this.isNormalMode)
107
+ return 0;
108
+ const list = this.columnsSize;
109
+ return list.indexOf(Math.min(...list));
110
+ }
111
+ // 不支持 normal 模式
112
+ getColumnList(columnIndex) {
113
+ var _a;
114
+ (_a = __classPrivateFieldGet(this, _ListMap_columnMap, "f"))[columnIndex] || (_a[columnIndex] = []);
115
+ return __classPrivateFieldGet(this, _ListMap_columnMap, "f")[columnIndex];
116
+ }
117
+ getColumnSize(columnIndex = 0) {
118
+ if (this.isNormalMode) {
119
+ const columnLength = Math.ceil(this.length / __classPrivateFieldGet(this, _ListMap_columns, "f"));
120
+ return this.minItemSize * columnLength;
121
+ }
122
+ // Note: 不考虑未同步节点情况
123
+ const columns = this.getColumnList(columnIndex);
124
+ const [, start = 0, size = 0] = columns[columns.length - 1] || [];
125
+ return start + size;
126
+ }
127
+ getItemPosition(itemIndex) {
128
+ if (this.isNormalMode) {
129
+ const column = itemIndex % __classPrivateFieldGet(this, _ListMap_columns, "f");
130
+ const row = Math.floor(itemIndex / __classPrivateFieldGet(this, _ListMap_columns, "f"));
131
+ return [column, row];
132
+ }
133
+ return __classPrivateFieldGet(this, _ListMap_items, "f")[itemIndex] || false;
134
+ }
135
+ getItemInfo(itemIndex) {
136
+ const [column, row] = this.getItemPosition(itemIndex) || [];
137
+ if (this.isNormalMode) {
138
+ const itemSize = this.minItemSize;
139
+ const startPosition = row * itemSize;
140
+ return [itemIndex, startPosition, itemSize];
141
+ }
142
+ if (typeof column !== 'number') {
143
+ this.updateItem(itemIndex);
144
+ }
145
+ const list = this.getColumnList(column);
146
+ if (!(list[row] instanceof Array)) {
147
+ this.updateItem(itemIndex);
148
+ }
149
+ return list[row];
150
+ }
151
+ getItemsInfoFromPosition(column = 0, row = 0) {
152
+ const list = this.getColumnList(column);
153
+ const itemIndex = row * __classPrivateFieldGet(this, _ListMap_columns, "f") + column;
154
+ if (this.isNormalMode) {
155
+ const itemSize = this.minItemSize;
156
+ const startPosition = row * itemSize;
157
+ return [itemIndex, startPosition, itemSize];
158
+ }
159
+ if (!(list[row] instanceof Array)) {
160
+ this.updateItem(Math.min(itemIndex, this.length - 1));
161
+ }
162
+ return list[row] || [];
163
+ }
164
+ getItemDetail(itemIndex) {
165
+ return this.props.itemData[itemIndex];
166
+ }
167
+ getOffsetSize(itemIndex) {
168
+ const [, start] = this.getItemInfo(itemIndex);
169
+ return start;
170
+ }
171
+ getStartItems(offset) {
172
+ const list = new Array(__classPrivateFieldGet(this, _ListMap_columns, "f")).fill(0);
173
+ offset = Math.max(0, offset - this.overscan);
174
+ if (this.isNormalMode) {
175
+ const size = this.minItemSize || 1;
176
+ const count = Math.max(0, Math.floor(offset / size));
177
+ return list.map(() => count);
178
+ }
179
+ else {
180
+ return list.map((_, i) => this.getStartIndex(i, offset));
181
+ }
182
+ }
183
+ getStartIndex(column, offset) {
184
+ const getOffset = ([, start = 0] = [0, 0, 0]) => start;
185
+ if (offset <= 0)
186
+ return 0;
187
+ if (this.isNormalMode) {
188
+ const size = this.minItemSize || 1;
189
+ return Math.max(0, Math.floor(offset / size));
190
+ }
191
+ const columns = this.getColumnList(column);
192
+ let x = Math.floor(offset / (this.maxItemSize || 1));
193
+ let y = Math.ceil(offset / (this.minItemSize || 1));
194
+ this.updateItem(y * __classPrivateFieldGet(this, _ListMap_columns, "f") + column);
195
+ x = Math.min(x, columns.length - 1);
196
+ y = Math.min(y, columns.length - 1);
197
+ while (getOffset(columns[x]) < offset && getOffset(columns[y]) > offset && x < y) {
198
+ x + 1 < columns.length && x++;
199
+ y > 0 && y--;
200
+ if (!columns[x])
201
+ this.updateItem(x * __classPrivateFieldGet(this, _ListMap_columns, "f") + column);
202
+ if (!columns[y])
203
+ this.updateItem(y * __classPrivateFieldGet(this, _ListMap_columns, "f") + column);
204
+ }
205
+ return Math.max(0, Math.min(getOffset(columns[x]) > offset ? x - 1 : y + 1, columns.length - 1));
206
+ }
207
+ getStopIndex(column, offset, start = 0) {
208
+ const getOffset = ([, start = 0, size = 0] = [0, 0, 0]) => start + size;
209
+ if (offset <= 0)
210
+ return 0;
211
+ if (this.isNormalMode) {
212
+ const size = this.minItemSize || 1;
213
+ const count = Math.ceil(offset / size);
214
+ return Math.min(count, this.getColumnSize(column));
215
+ }
216
+ const columns = this.getColumnList(column);
217
+ let x = Math.max(start, Math.floor(offset / (this.maxItemSize || 1)));
218
+ let y = Math.max(start, Math.ceil(offset / (this.minItemSize || 1)));
219
+ this.updateItem(y * __classPrivateFieldGet(this, _ListMap_columns, "f") + column);
220
+ x = Math.min(x, columns.length - 1);
221
+ y = Math.min(y, columns.length - 1);
222
+ while (getOffset(columns[x]) < offset && getOffset(columns[y]) > offset && x < y) {
223
+ x + 1 < columns.length && x++;
224
+ y > 0 && y--;
225
+ if (!columns[x])
226
+ this.updateItem(x * __classPrivateFieldGet(this, _ListMap_columns, "f") + column);
227
+ if (!columns[y])
228
+ this.updateItem(y * __classPrivateFieldGet(this, _ListMap_columns, "f") + column);
229
+ }
230
+ return Math.max(0, Math.min(getOffset(columns[x]) > offset ? x : y, columns.length - 1));
231
+ }
232
+ getRangeToRender(direction, column, offset, block = false) {
233
+ if (this.length === 0)
234
+ return [0, 0];
235
+ const clientSize = this.clientSize;
236
+ const scrollSize = this.maxColumnSize;
237
+ const backwardDistance = !block || direction === 'backward' ? Math.max(0, this.overscan) : 0;
238
+ const forwardDistance = !block || direction === 'forward' ? Math.max(0, this.overscan) : 0;
239
+ const overscanBackward = this.getStartIndex(column, Math.max(0, offset - backwardDistance));
240
+ const overscanForward = this.getStopIndex(column, Math.max(0, Math.min(scrollSize, clientSize + offset + forwardDistance)), overscanBackward);
241
+ return [overscanBackward, overscanForward];
242
+ }
243
+ getOffsetForIndexAndAlignment(index, align, scrollOffset) {
244
+ return getOffsetForIndexAndAlignment({
245
+ align,
246
+ containerSize: this.clientSize,
247
+ currentOffset: scrollOffset,
248
+ scrollSize: this.getOffsetSize(this.length),
249
+ slideSize: this.getColumnSize(index),
250
+ targetOffset: this.getOffsetSize(index),
251
+ });
252
+ }
253
+ }
254
+ _ListMap_columns = new WeakMap(), _ListMap_columnMap = new WeakMap(), _ListMap_items = new WeakMap();
255
+
256
+ export { ListMap as default };
257
+ //# sourceMappingURL=list-map.js.map