@tarojs/components-advanced 4.1.4-beta.2 → 4.1.4-beta.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 (37) hide show
  1. package/dist/components/virtual-list/dom-helpers.js.map +1 -1
  2. package/dist/components/virtual-list/index.d.ts +5 -5
  3. package/dist/components/virtual-list/index.js.map +1 -1
  4. package/dist/components/virtual-list/list-set.js.map +1 -1
  5. package/dist/components/virtual-list/preset.js.map +1 -1
  6. package/dist/components/virtual-list/react/index.js.map +1 -1
  7. package/dist/components/virtual-list/react/list.js.map +1 -1
  8. package/dist/components/virtual-list/react/validate.js.map +1 -1
  9. package/dist/components/virtual-list/react/wrapper.js.map +1 -1
  10. package/dist/components/virtual-list/utils.js.map +1 -1
  11. package/dist/components/virtual-list/vue/list.js.map +1 -1
  12. package/dist/components/virtual-waterfall/index.js.map +1 -1
  13. package/dist/components/virtual-waterfall/list-map.js.map +1 -1
  14. package/dist/components/virtual-waterfall/preset.js.map +1 -1
  15. package/dist/components/virtual-waterfall/react/index.js.map +1 -1
  16. package/dist/components/virtual-waterfall/react/waterfall.js.map +1 -1
  17. package/dist/components/virtual-waterfall/react/wrapper.js.map +1 -1
  18. package/dist/components/virtual-waterfall/vue/waterfall.js.map +1 -1
  19. package/dist/components/water-flow/flow-item.js.map +1 -1
  20. package/dist/components/water-flow/flow-section.js +2 -2
  21. package/dist/components/water-flow/flow-section.js.map +1 -1
  22. package/dist/components/water-flow/node.js.map +1 -1
  23. package/dist/components/water-flow/root.d.ts +1 -1
  24. package/dist/components/water-flow/root.js +11 -23
  25. package/dist/components/water-flow/root.js.map +1 -1
  26. package/dist/components/water-flow/section.d.ts +2 -0
  27. package/dist/components/water-flow/section.js +28 -21
  28. package/dist/components/water-flow/section.js.map +1 -1
  29. package/dist/components/water-flow/stateful-event-bus.js.map +1 -1
  30. package/dist/components/water-flow/use-observed-attr.js.map +1 -1
  31. package/dist/components/water-flow/utils.js.map +1 -1
  32. package/dist/components/water-flow/water-flow.js +22 -9
  33. package/dist/components/water-flow/water-flow.js.map +1 -1
  34. package/dist/utils/dom.js.map +1 -1
  35. package/dist/utils/math.js.map +1 -1
  36. package/dist/utils/vue-render.js.map +1 -1
  37. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/vue/list.ts"],"sourcesContent":["import { isNumber } from '@tarojs/shared'\nimport memoizeOne from 'memoize-one'\nimport { defineComponent } from 'vue'\n\nimport { cancelTimeout, convertNumber2PX, defaultItemKey, getRectSizeSync, 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, { type IProps } from '../preset'\n\nexport default defineComponent({\n props: {\n id: String,\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: Function,\n itemSize: {\n type: [Number, Function],\n required: true\n },\n queryPrefix: {\n type: String,\n default: ''\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: process.env.TARO_PLATFORM === 'web' ? 'taro-scroll-view-core' : 'scroll-view'\n },\n innerElementType: {\n type: String,\n default: process.env.TARO_PLATFORM === 'web' ? 'taro-view-core' : 'view'\n },\n itemElementType: {\n type: String,\n default: process.env.TARO_PLATFORM === 'web' ? '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 as IProps, this.refresh as TFunc)\n const id = this.$props.id || preset.id\n preset.updateWrapper(id)\n\n return {\n itemList: preset.itemList,\n preset,\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 = 0, enhanced = this.preset.enhanced) {\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: 300,\n }\n if (isHorizontal) {\n option.left = scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`${this.$props.queryPrefix}#${this.preset.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: number, align = 'auto', enhanced = this.preset.enhanced) {\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 index,\n align,\n scrollOffset\n ),\n enhanced,\n )\n },\n\n _callOnItemsRendered: memoizeOne(function (overscanStartIndex, overscanStopIndex, startIndex, stopIndex) {\n return this.$props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\n })\n }),\n\n _callOnScroll: memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested, detail) {\n this.$emit('scroll', {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n })\n }),\n\n _callPropsCallbacks () {\n if (typeof this.$props.onItemsRendered === 'function') {\n if (this.$props.itemCount > 0) {\n const [overscanStartIndex, overscanStopIndex, startIndex, stopIndex] = this._getRangeToRender()\n this._callOnItemsRendered(overscanStartIndex, overscanStopIndex, startIndex, stopIndex)\n }\n }\n\n if (typeof this.$props.onScroll === 'function') {\n this._callOnScroll(\n this.scrollDirection,\n this.scrollOffset,\n this.scrollUpdateWasRequested,\n this.preset.field\n )\n }\n\n if (this.itemList.isUnlimitedMode) {\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\n _getSizeUploadSync (index: number, isHorizontal: boolean) {\n return new Promise((resolve) => {\n if (index >= 0 && index < this.$props.itemCount) {\n const times = this.itemList.compareSize(index) ? 0 : 2\n getRectSizeSync(`${this.$props.queryPrefix}#${this.preset.id}-${index}`, 100, times).then(({ width, height }) => {\n const size = isHorizontal ? width : height\n if (typeof size === 'number' && size > 0 && !this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n })\n }\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 scrollHeight,\n scrollWidth = this.itemList.getOffsetSizeCache(),\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n if (!isNumber(scrollHeight) || !isNumber(scrollWidth)) return\n const clientWidth = this.itemList.wrapperSize\n this.preset.field = {\n scrollHeight,\n scrollWidth,\n scrollTop,\n 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 scrollHeight = this.itemList.getOffsetSizeCache(),\n scrollWidth,\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n if (!isNumber(scrollHeight) || !isNumber(scrollWidth)) return\n const clientHeight = this.itemList.wrapperSize\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(0, Math.min(scrollTop, scrollHeight - clientHeight))\n this.preset.field = {\n scrollHeight,\n scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft,\n 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 { 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('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(this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL)\n },\n\n _resetIsScrolling () {\n this.resetIsScrollingTimeoutId = null\n this.isScrolling = false\n this.$nextTick(() => {\n this.preset.resetCache()\n })\n },\n\n getRenderItemNode (index: number, type: 'node' | 'placeholder' = 'node') {\n const { item, itemData, itemKey = defaultItemKey, useIsScrolling } = this.$props\n const { isScrolling } = this.$data\n const key = itemKey(index, itemData)\n\n const style = this.preset.getItemStyle(index)\n if (type === 'placeholder') {\n return render(this.preset.itemElement, {\n key,\n id: `${this.preset.id}-${index}-wrapper`,\n style: this.preset.isBrick ? style : { display: 'none' }\n })\n }\n\n return render(this.preset.itemElement, {\n key: itemKey(index, itemData),\n id: `${this.preset.id}-${index}-wrapper`,\n style\n }, render(item, {\n id: `${this.preset.id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }))\n },\n\n getRenderColumnNode () {\n const { isScrolling } = this.$data\n const { innerRef, itemCount } = this.$props\n const isHorizontal = this.preset.isHorizontal\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 columnProps: any = {\n ref: innerRef,\n key: `${this.preset.id}-inner`,\n id: `${this.preset.id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n width: !isHorizontal ? '100%' : estimatedTotalSize,\n position: 'relative',\n pointerEvents: isScrolling ? 'none' : 'auto',\n }\n }\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n const items = []\n\n if (this.preset.isRelative && !this.preset.isBrick) {\n const pre = convertNumber2PX(this.itemList.getOffsetSizeCache(startIndex))\n items.push(\n render(this.preset.itemElement, {\n key: `${this.preset.id}-pre`,\n id: `${this.preset.id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n })\n )\n }\n\n const placeholderCount = this.preset.placeholderCount\n const restCount = itemCount - stopIndex\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n\n for (let itemIndex = 0; itemIndex < stopIndex + postPlaceholder; itemIndex++) {\n if (!this.preset.isBrick) {\n if (itemIndex < startIndex - prevPlaceholder) {\n itemIndex = startIndex - prevPlaceholder\n continue\n }\n }\n\n if (itemIndex < startIndex || itemIndex > stopIndex) {\n items.push(this.getRenderItemNode(itemIndex, 'placeholder'))\n } else {\n items.push(this.getRenderItemNode(itemIndex))\n }\n }\n return render(this.preset.innerElement, columnProps, items)\n },\n getRenderExpandNodes (direction: 'top' | 'bottom' | 'left' | 'right') {\n const isHorizontal = this.preset.isHorizontal\n const isRtl = this.preset.isRtl\n const props: any = {\n id: `${this.preset.id}-${direction}`,\n style: {\n visibility: 'hidden',\n height: isHorizontal ? '100%' : 100,\n width: isHorizontal ? 100 : '100%',\n [isHorizontal ? isRtl ? 'marginRight' : 'marginLeft' : 'marginTop']: -100,\n zIndex: -1,\n }\n }\n return render(this.preset.innerElement, props)\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 this.preset.boundaryDetection()\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 this.preset.dispose()\n },\n\n render () {\n const {\n direction,\n height,\n layout,\n width,\n enhanced = false\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', 'innerRef',\n ])\n const {\n scrollOffset,\n scrollUpdateWasRequested\n } = this.$data\n\n const isHorizontal = this.preset.isHorizontal\n const isRtl = this.preset.isRtl\n const outerElementProps: any = {\n id: this.preset.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: !this.preset.isHorizontal,\n scrollX: this.preset.isHorizontal\n },\n on: {\n scroll: isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\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 return render(this.preset.outerElement, outerElementProps, [\n this.getRenderExpandNodes(isHorizontal ? isRtl ? 'right' : 'left' : 'top'),\n this.$slots.top?.(),\n this.getRenderColumnNode(),\n this.$slots.bottom?.(),\n this.getRenderExpandNodes(isHorizontal ? isRtl ? 'left' : 'right' : 'bottom'),\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 { isNumber } from '@tarojs/shared'\nimport memoizeOne from 'memoize-one'\nimport { defineComponent } from 'vue'\n\nimport { cancelTimeout, convertNumber2PX, defaultItemKey, getRectSizeSync, 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, { type IProps } from '../preset'\n\nexport default defineComponent({\n props: {\n id: String,\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: Function,\n itemSize: {\n type: [Number, Function],\n required: true\n },\n queryPrefix: {\n type: String,\n default: ''\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: process.env.TARO_PLATFORM === 'web' ? 'taro-scroll-view-core' : 'scroll-view'\n },\n innerElementType: {\n type: String,\n default: process.env.TARO_PLATFORM === 'web' ? 'taro-view-core' : 'view'\n },\n itemElementType: {\n type: String,\n default: process.env.TARO_PLATFORM === 'web' ? '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 as IProps, this.refresh as TFunc)\n const id = this.$props.id || preset.id\n preset.updateWrapper(id)\n\n return {\n itemList: preset.itemList,\n preset,\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 = 0, enhanced = this.preset.enhanced) {\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: 300,\n }\n if (isHorizontal) {\n option.left = scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`${this.$props.queryPrefix}#${this.preset.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: number, align = 'auto', enhanced = this.preset.enhanced) {\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 index,\n align,\n scrollOffset\n ),\n enhanced,\n )\n },\n\n _callOnItemsRendered: memoizeOne(function (overscanStartIndex, overscanStopIndex, startIndex, stopIndex) {\n return this.$props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\n })\n }),\n\n _callOnScroll: memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested, detail) {\n this.$emit('scroll', {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n })\n }),\n\n _callPropsCallbacks () {\n if (typeof this.$props.onItemsRendered === 'function') {\n if (this.$props.itemCount > 0) {\n const [overscanStartIndex, overscanStopIndex, startIndex, stopIndex] = this._getRangeToRender()\n this._callOnItemsRendered(overscanStartIndex, overscanStopIndex, startIndex, stopIndex)\n }\n }\n\n if (typeof this.$props.onScroll === 'function') {\n this._callOnScroll(\n this.scrollDirection,\n this.scrollOffset,\n this.scrollUpdateWasRequested,\n this.preset.field\n )\n }\n\n if (this.itemList.isUnlimitedMode) {\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\n _getSizeUploadSync (index: number, isHorizontal: boolean) {\n return new Promise((resolve) => {\n if (index >= 0 && index < this.$props.itemCount) {\n const times = this.itemList.compareSize(index) ? 0 : 2\n getRectSizeSync(`${this.$props.queryPrefix}#${this.preset.id}-${index}`, 100, times).then(({ width, height }) => {\n const size = isHorizontal ? width : height\n if (typeof size === 'number' && size > 0 && !this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n })\n }\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 scrollHeight,\n scrollWidth = this.itemList.getOffsetSizeCache(),\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n if (!isNumber(scrollHeight) || !isNumber(scrollWidth)) return\n const clientWidth = this.itemList.wrapperSize\n this.preset.field = {\n scrollHeight,\n scrollWidth,\n scrollTop,\n 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 scrollHeight = this.itemList.getOffsetSizeCache(),\n scrollWidth,\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n if (!isNumber(scrollHeight) || !isNumber(scrollWidth)) return\n const clientHeight = this.itemList.wrapperSize\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(0, Math.min(scrollTop, scrollHeight - clientHeight))\n this.preset.field = {\n scrollHeight,\n scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft,\n 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 { 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('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(this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL)\n },\n\n _resetIsScrolling () {\n this.resetIsScrollingTimeoutId = null\n this.isScrolling = false\n this.$nextTick(() => {\n this.preset.resetCache()\n })\n },\n\n getRenderItemNode (index: number, type: 'node' | 'placeholder' = 'node') {\n const { item, itemData, itemKey = defaultItemKey, useIsScrolling } = this.$props\n const { isScrolling } = this.$data\n const key = itemKey(index, itemData)\n\n const style = this.preset.getItemStyle(index)\n if (type === 'placeholder') {\n return render(this.preset.itemElement, {\n key,\n id: `${this.preset.id}-${index}-wrapper`,\n style: this.preset.isBrick ? style : { display: 'none' }\n })\n }\n\n return render(this.preset.itemElement, {\n key: itemKey(index, itemData),\n id: `${this.preset.id}-${index}-wrapper`,\n style\n }, render(item, {\n id: `${this.preset.id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }))\n },\n\n getRenderColumnNode () {\n const { isScrolling } = this.$data\n const { innerRef, itemCount } = this.$props\n const isHorizontal = this.preset.isHorizontal\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 columnProps: any = {\n ref: innerRef,\n key: `${this.preset.id}-inner`,\n id: `${this.preset.id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n width: !isHorizontal ? '100%' : estimatedTotalSize,\n position: 'relative',\n pointerEvents: isScrolling ? 'none' : 'auto',\n }\n }\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n const items = []\n\n if (this.preset.isRelative && !this.preset.isBrick) {\n const pre = convertNumber2PX(this.itemList.getOffsetSizeCache(startIndex))\n items.push(\n render(this.preset.itemElement, {\n key: `${this.preset.id}-pre`,\n id: `${this.preset.id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n })\n )\n }\n\n const placeholderCount = this.preset.placeholderCount\n const restCount = itemCount - stopIndex\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n\n for (let itemIndex = 0; itemIndex < stopIndex + postPlaceholder; itemIndex++) {\n if (!this.preset.isBrick) {\n if (itemIndex < startIndex - prevPlaceholder) {\n itemIndex = startIndex - prevPlaceholder\n continue\n }\n }\n\n if (itemIndex < startIndex || itemIndex > stopIndex) {\n items.push(this.getRenderItemNode(itemIndex, 'placeholder'))\n } else {\n items.push(this.getRenderItemNode(itemIndex))\n }\n }\n return render(this.preset.innerElement, columnProps, items)\n },\n getRenderExpandNodes (direction: 'top' | 'bottom' | 'left' | 'right') {\n const isHorizontal = this.preset.isHorizontal\n const isRtl = this.preset.isRtl\n const props: any = {\n id: `${this.preset.id}-${direction}`,\n style: {\n visibility: 'hidden',\n height: isHorizontal ? '100%' : 100,\n width: isHorizontal ? 100 : '100%',\n [isHorizontal ? isRtl ? 'marginRight' : 'marginLeft' : 'marginTop']: -100,\n zIndex: -1,\n }\n }\n return render(this.preset.innerElement, props)\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 this.preset.boundaryDetection()\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 this.preset.dispose()\n },\n\n render () {\n const {\n direction,\n height,\n layout,\n width,\n enhanced = false\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', 'innerRef',\n ])\n const {\n scrollOffset,\n scrollUpdateWasRequested\n } = this.$data\n\n const isHorizontal = this.preset.isHorizontal\n const isRtl = this.preset.isRtl\n const outerElementProps: any = {\n id: this.preset.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: !this.preset.isHorizontal,\n scrollX: this.preset.isHorizontal\n },\n on: {\n scroll: isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\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 return render(this.preset.outerElement, outerElementProps, [\n this.getRenderExpandNodes(isHorizontal ? isRtl ? 'right' : 'left' : 'top'),\n this.$slots.top?.(),\n this.getRenderColumnNode(),\n this.$slots.bottom?.(),\n this.getRenderExpandNodes(isHorizontal ? isRtl ? 'left' : 'right' : 'bottom'),\n ])\n }\n})\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAUA,WAAe,eAAe,CAAC;AAC7B,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,EAAE,MAAM;AACV,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACtB,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACtB,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxB,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,mBAAmB,EAAE;AACnB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,qCAAqC,EAAE;AACrC,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,uBAAuB,GAAG;AAC1E,SAAA;AACD,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,gBAAgB,GAAG;AACnE,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,gBAAgB,GAAG;AACnE,SAAA;AACD,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,eAAe,EAAE,QAAQ;AAC1B,KAAA;IACD,IAAI,GAAA;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAgB,EAAE,IAAI,CAAC,OAAgB,CAAC;QACvE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE;AACtC,QAAA,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAExB,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM;AACN,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,eAAe,EAAE,SAAS;YAC1B,YAAY,EACV,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK;AACzC,kBAAE,IAAI,CAAC,MAAM,CAAC;AACd,kBAAE,CAAC;AACP,YAAA,wBAAwB,EAAE,KAAK;AAC/B,YAAA,yBAAyB,EAAE,IAAI;AAC/B,YAAA,YAAY,EAAE;SACf;KACF;AACD,IAAA,OAAO,EAAE;QACP,OAAO,GAAA;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC;SAC1C;QACD,QAAQ,CAAE,YAAY,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAA;YACzD,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;AACxC,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY;gBAAE;YAExC,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC7C,gBAAA,MAAM,MAAM,GAAQ;AAClB,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,QAAQ,EAAE,GAAG;iBACd;gBACD,IAAI,YAAY,EAAE;AAChB,oBAAA,MAAM,CAAC,IAAI,GAAG,YAAY;;qBACrB;AACL,oBAAA,MAAM,CAAC,GAAG,GAAG,YAAY;;AAE3B,gBAAA,OAAO,wBAAwB,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;AAG5H,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU;AAChF,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AAEpC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC;SAChD;AAED,QAAA,YAAY,CAAE,KAAa,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAA;AAC1E,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM;AACjC,YAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK;AAEnC,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;AAEnD,YAAA,IAAI,CAAC,QAAQ,CACX,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CACzC,KAAK,EACL,KAAK,EACL,YAAY,CACb,EACD,QAAQ,CACT;SACF;QAED,oBAAoB,EAAE,UAAU,CAAC,UAAU,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAA;AACrG,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBACjC,kBAAkB;gBAClB,iBAAiB;gBACjB,UAAU;gBACV;AACD,aAAA,CAAC;AACJ,SAAC,CAAC;QAEF,aAAa,EAAE,UAAU,CAAC,UAAU,eAAe,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,EAAA;AACjG,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACnB,eAAe;gBACf,YAAY;gBACZ,wBAAwB;gBACxB;AACD,aAAA,CAAC;AACJ,SAAC,CAAC;QAEF,mBAAmB,GAAA;YACjB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;gBACrD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE;AAC7B,oBAAA,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE;oBAC/F,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC;;;YAI3F,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;gBAC9C,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB;;AAGH,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;gBACjC,UAAU,CAAC,MAAK;oBACd,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACxD,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC7C,oBAAA,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE;AACxD,wBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC;;iBAE/C,EAAE,CAAC,CAAC;;SAER;QAED,kBAAkB,CAAE,KAAa,EAAE,YAAqB,EAAA;AACtD,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,gBAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC/C,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACtD,oBAAA,eAAe,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAI;wBAC9G,MAAM,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM;wBAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;4BACnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;4BAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;AAEzC,qBAAC,CAAC;;AAEN,aAAC,CAAC;SACH;QAED,iBAAiB,GAAA;YACf,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CACnC,IAAI,CAAC,KAAK,CAAC,eAAe,EAC1B,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CACvB;SACF;AAED,QAAA,mBAAmB,CAAE,KAAK,EAAA;YACxB,MAAM,EACJ,YAAY,EACZ,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAChD,SAAS,EACT,UAAU,GACX,GAAG,KAAK,CAAC,aAAa;YACvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE;AACvD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;gBAClB,YAAY;gBACZ,WAAW;gBACX,SAAS;gBACT,UAAU;AACV,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,WAAW,EAAE;aACd;AACD,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;;YAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU;AAC5D,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;gBACzE;;YAGF,IAAI,YAAY,GAAG,UAAU;AAC7B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;;;;gBAKrB,QAAQ,gBAAgB,EAAE;AACxB,oBAAA,KAAK,UAAU;wBACb,YAAY,GAAG,CAAC,UAAU;wBAC1B;AACF,oBAAA,KAAK,qBAAqB;AACxB,wBAAA,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU;wBACrD;;;;AAKN,YAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CACrB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,GAAG,WAAW,CAAC,CAClD;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;AAClB,gBAAA,WAAW,EAAE,YAAY;aAC1B;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU;AAC9E,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC;SAChD;AAED,QAAA,iBAAiB,CAAE,KAAK,EAAA;YACtB,MAAM,EACJ,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EACjD,WAAW,EACX,SAAS,EACT,UAAU,GACX,GAAG,KAAK,CAAC,aAAa;YACvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE;AACvD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC9C,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;;YAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS;AAC1D,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;gBACxE;;;AAIF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;AAClF,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;gBAClB,YAAY;gBACZ,WAAW;AACX,gBAAA,SAAS,EAAE,YAAY;gBACvB,UAAU;gBACV,YAAY;AACZ,gBAAA,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;aACvD;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU;AAChF,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC;SAChD;AAED,QAAA,eAAe,CAAE,GAAG,EAAA;AAClB,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG;AAEpB,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,QAAQ,CAAC,GAAG,CAAC;;AACR,iBAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAC/F,gBAAA,QAAQ,CAAC,KAAK,GAAG,GAAG;;SAEvB;QAED,0BAA0B,GAAA;AACxB,YAAA,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE;AAC3C,gBAAA,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;;YAG/C,IAAI,CAAC,yBAAyB,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACxG;QAED,iBAAiB,GAAA;AACf,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;AACrC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAK;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,aAAC,CAAC;SACH;AAED,QAAA,iBAAiB,CAAE,KAAa,EAAE,IAAA,GAA+B,MAAM,EAAA;AACrE,YAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM;AAChF,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK;YAClC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;YAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AAC7C,YAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC1B,gBAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBACrC,GAAG;oBACH,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAI,CAAA,EAAA,KAAK,CAAU,QAAA,CAAA;AACxC,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,EAAE,OAAO,EAAE,MAAM;AACvD,iBAAA,CAAC;;AAGJ,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACrC,gBAAA,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC7B,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAI,CAAA,EAAA,KAAK,CAAU,QAAA,CAAA;gBACxC;aACD,EAAE,MAAM,CAAC,IAAI,EAAE;gBACd,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA;AAChC,gBAAA,IAAI,EAAE,QAAQ;gBACd,KAAK;gBACL,WAAW,EAAE,cAAc,GAAG,WAAW,GAAG;AAC7C,aAAA,CAAC,CAAC;SACJ;QAED,mBAAmB,GAAA;AACjB,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK;YAClC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM;AAC3C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;;;YAG7C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AAC1E,YAAA,MAAM,WAAW,GAAQ;AACvB,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,GAAG,EAAE,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAQ,MAAA,CAAA;AAC9B,gBAAA,EAAE,EAAE,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAQ,MAAA,CAAA;AAC7B,gBAAA,KAAK,EAAE;oBACL,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,kBAAkB;oBAClD,KAAK,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG,kBAAkB;AAClD,oBAAA,QAAQ,EAAE,UAAU;oBACpB,aAAa,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM;AAC7C;aACF;YAED,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACxD,MAAM,KAAK,GAAG,EAAE;AAEhB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAClD,gBAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC1E,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC9B,oBAAA,GAAG,EAAE,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAM,IAAA,CAAA;AAC5B,oBAAA,EAAE,EAAE,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAM,IAAA,CAAA;AAC3B,oBAAA,KAAK,EAAE;wBACL,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,GAAG;wBACnC,KAAK,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG;AACjC;AACF,iBAAA,CAAC,CACH;;AAGH,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB;AACrD,YAAA,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS;AACvC,YAAA,MAAM,eAAe,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,GAAG,gBAAgB;AACrF,YAAA,MAAM,eAAe,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,gBAAgB;AAEnF,YAAA,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,eAAe,EAAE,SAAS,EAAE,EAAE;AAC5E,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxB,oBAAA,IAAI,SAAS,GAAG,UAAU,GAAG,eAAe,EAAE;AAC5C,wBAAA,SAAS,GAAG,UAAU,GAAG,eAAe;wBACxC;;;gBAIJ,IAAI,SAAS,GAAG,UAAU,IAAI,SAAS,GAAG,SAAS,EAAE;AACnD,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;;qBACvD;oBACL,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;;;AAGjD,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC;SAC5D;AACD,QAAA,oBAAoB,CAAE,SAA8C,EAAA;AAClE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC7C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAC/B,YAAA,MAAM,KAAK,GAAQ;gBACjB,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAI,CAAA,EAAA,SAAS,CAAE,CAAA;AACpC,gBAAA,KAAK,EAAE;AACL,oBAAA,UAAU,EAAE,QAAQ;oBACpB,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,GAAG;oBACnC,KAAK,EAAE,YAAY,GAAG,GAAG,GAAG,MAAM;oBAClC,CAAC,YAAY,GAAG,KAAK,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,CAAC,GAAG;oBACzE,MAAM,EAAE,CAAC,CAAC;AACX;aACF;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;;AAEjD,KAAA;IACD,OAAO,GAAA;AACL,QAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,MAAM;QAE3C,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AACrE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AAC/B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,gBAAA,QAAQ,CAAC,UAAU,GAAG,mBAAmB;;iBACpC;AACL,gBAAA,QAAQ,CAAC,SAAS,GAAG,mBAAmB;;;QAI5C,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;KAChC;IACD,OAAO,GAAA;QACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAE/B,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAAC,KAAK;QAE7D,IAAI,wBAAwB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AACtD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AAE/B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;;;oBAIrB,QAAQ,gBAAgB,EAAE;AACxB,wBAAA,KAAK,UAAU;AACb,4BAAA,QAAQ,CAAC,UAAU,GAAG,CAAC,YAAY;4BACnC;AACF,wBAAA,KAAK,oBAAoB;AACvB,4BAAA,QAAQ,CAAC,UAAU,GAAG,YAAY;4BAClC;wBACF,SAAS;AACP,4BAAA,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ;4BAC7C,QAAQ,CAAC,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY;4BAC9D;;;;qBAGC;AACL,oBAAA,QAAQ,CAAC,UAAU,GAAG,YAAY;;;iBAE/B;AACL,gBAAA,QAAQ,CAAC,SAAS,GAAG,YAAY;;;QAIrC,IAAI,CAAC,mBAAmB,EAAE;KAC3B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE;AAC3C,YAAA,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;;AAE/C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;KACtB;IAED,MAAM,GAAA;;AACJ,QAAA,MAAM,EACJ,SAAS,EACT,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,GAAG,KAAK,EACjB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,YAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB;AAC5D,YAAA,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa;AACpE,YAAA,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB;AACxE,YAAA,gBAAgB,EAAE,gBAAgB;AAClC,YAAA,UAAU,EAAE,UAAU;AACvB,SAAA,CAAC;QACF,MAAM,EACJ,YAAY,EACZ,wBAAwB,EACzB,GAAG,IAAI,CAAC,KAAK;AAEd,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAC/B,QAAA,MAAM,iBAAiB,GAAQ;AAC7B,YAAA,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YAClB,GAAG,EAAE,IAAI,CAAC,eAAe;YACzB,MAAM;YACN,QAAQ;AACR,YAAA,KAAK,EAAE;AACL,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;AAChC,gBAAA,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;AAC9B,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,uBAAuB,EAAE,OAAO;AAChC,gBAAA,UAAU,EAAE,WAAW;gBACvB;AACD,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;AAClC,gBAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AACtB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,MAAM,EAAE;sBACJ,IAAI,CAAC;sBACL,IAAI,CAAC;AACV;SACF;QAED,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,YAAY,EAAE;AAChB,gBAAA,iBAAiB,CAAC,UAAU,GAAG,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;;iBAChG;AACL,gBAAA,iBAAiB,CAAC,SAAS,GAAG,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;;;QAIvG,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE;YACzD,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAC1E,YAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,EAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;YACnB,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,EAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;YACtB,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9E,SAAA,CAAC;;AAEL,CAAA,CAAC;;;;"}
@@ -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 /** 这是一个 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":"AAoPA,MAAM,gBAAgB,GAAqC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK;AACnF,MAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,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;AACnF,MAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,MAAE,OAAO,CAAC,SAAS,CAAC,CAAC;;;;"}
@@ -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 +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":"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"}
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;AAcL,MAAO,MAAM,CAAA;IAKzB,WAAuB,CAAA,KAAa,EAAY,OAAe,EAAA;QAAxC,IAAK,CAAA,KAAA,GAAL,KAAK;QAAoB,IAAO,CAAA,OAAA,GAAP,OAAO;QAFvD,IAAS,CAAA,SAAA,GAAyC,EAAE;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;SACb;QAED,IAAQ,CAAA,QAAA,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;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;YACtD,MAAM,KAAK,GAAoC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG;AACpE,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,IAAI,EAAE,CAAC;aACR;AACD,YAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AACpB,YAAA,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;AACxD,gBAAA,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC;;AAE1C,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;AAxHA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;;AAe5C,IAAA,IAAI,CAAE,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGpB,IAAA,MAAM,CAAE,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;IAG5B,MAAM,aAAa,CAAE,EAAU,EAAA;;;AAC7B,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,QAAA,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK;QAC5C,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC;QACzD,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC;QAC5D,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK;;QAEnC,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM;;AAGrC,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;YAChD,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,EAAC,YAAY,KAAZ,EAAA,CAAA,YAAY,GAAK,GAAG,CAAC,KAAK,CAAA;YACvC,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,EAAC,aAAa,KAAb,EAAA,CAAA,aAAa,GAAK,GAAG,CAAC,MAAM,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;;QAGlB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGjC,IAAI,EAAE,CAAE,EAAU,EAAA;AAChB,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;;AAGf,IAAA,IAAI,EAAE,GAAA;QACJ,IAAI,CAAC,GAAG,KAAR,IAAI,CAAC,GAAG,GAAK,CAAqB,kBAAA,EAAA,WAAW,EAAE,CAAA,CAAE,CAAA;QACjD,OAAO,IAAI,CAAC,GAAG;;AAGjB,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU;;AAGlE,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO;;AAGxC,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC;;AAGzC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK;;AAGxE,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK;;AAGxE,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK;;AAGtE,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,aAAa;;IAG3B,IAAI,KAAK,CAAE,CAAyB,EAAA;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;;AAGtC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI;;AAGpC,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;QAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;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;;IAGjH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;;AAsB/B,IAAA,YAAY,CAAE,SAAiB,EAAA;AAC7B,QAAA,MAAM,EACJ,qCAAqC,EACtC,GAAG,IAAI,CAAC,KAAK;QAEd,OAAO,IAAI,CAAC,iBAAiB,CAC3B,SAAS,EACT,qCAAqC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAChF;;IAGH,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;AAEzG,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;iBAC7D,GAAG,SAAS;AACb,gBAAA,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAM,IAAA,CAAA;AACrB,aAAA,CAAC;YACF,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,aAAa;;AAGpC,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;iBAC7D,GAAG,SAAS;AACb,gBAAA,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,CAAS,OAAA,CAAA;AACxB,aAAA,CAAC;YACF,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa;;AAEzC,SAAC,CAAC;;AAGJ,IAAA,uBAAuB,CAAE,EACvB,SAAS,EACT,KAAK,EACL,EAAE,GAKH,EAAA;QACC,IAAI,OAAO,KAAK,KAAK,UAAU;YAAE;AACjC,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEjC,QAAA,SAAS,KAAT,SAAS,GAAK,kBAAkB,EAAE,CAAC,IAAI,CAAA;AACvC,QAAA,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,EAAE;YACrD,UAAU,EAAE,CAAC,GAAG,CAAC;AAClB,SAAA,CAAC;QAEF;AACG,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;AACA,aAAA,OAAO,CAAC,CAAI,CAAA,EAAA,EAAE,EAAE,EAAE,SAAS,CAAC;AAE/B,QAAA,OAAO,QAAQ;;IAGjB,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;AAC5D,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAEtB;;;;"}
@@ -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 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":";;;;;;AASA,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,gBAAgB,CAAE,KAA4B,EAAE,GAAG,EAAA;AACpG,IAAA,MAAM,EAAA,GAQF,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,GAAA,MAAA,CAAA,EAAA,EAPH,CAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,CAQL,CAAkB;AAEnB,IAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,+DAA+D,GAAG,oCAAoC,CAAC;AACpH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAA0B;;AAE7C,IAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;IAE1B,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;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;AAEnB,IAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,+DAA+D,GAAG,oCAAoC,CAAC;AACpH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAA0B;;AAE7C,IAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;IAE1B,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;AACJ,CAAC;;;;"}
@@ -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.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
+ {"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 +1 @@
1
- {"version":3,"file":"wrapper.js","sources":["../../../../src/components/virtual-waterfall/react/wrapper.ts"],"sourcesContent":["import React, { PropsWithChildren } from 'react'\n\nimport { convertPX2Int } from '../../../utils'\n\nimport type { BaseEventOrig } from '@tarojs/components'\nimport type { VirtualWaterfallProps } from '..'\nimport type { IProps } from '../preset'\n\nfunction getRenderExpandNodes ({\n direction,\n id: sid,\n innerElement,\n renderExpand,\n}: {\n direction: 'top' | 'bottom'\n id: string\n innerElement: VirtualWaterfallProps['innerElementType']\n renderExpand?: VirtualWaterfallProps['renderTop'] | VirtualWaterfallProps['renderBottom']\n}) {\n const id = `${sid}-${direction}`\n const props: any = {\n key: id,\n id,\n style: {\n visibility: 'hidden',\n height: 100,\n marginTop: -100,\n zIndex: -1,\n }\n }\n const expands = [renderExpand && React.createElement(renderExpand), React.createElement(innerElement!, props)]\n if (direction === 'top') {\n expands.reverse()\n }\n return expands\n}\n\nconst outerWrapper = React.forwardRef(\n function OuterWrapper (props, ref) {\n const {\n id, className, style, children,\n outerElementType, innerElementType,\n onScroll, onScrollNative,\n renderTop, renderBottom,\n ...rest\n } = props as PropsWithChildren<IProps>\n const handleScroll = (event: BaseEventOrig<VirtualWaterfallProps.IVirtualWaterfallEventDetail>) => {\n onScroll?.({\n ...event as any,\n currentTarget: {\n ...event.detail,\n clientWidth: convertPX2Int(style.width),\n clientHeight: convertPX2Int(style.height)\n } as any\n })\n\n if (typeof onScrollNative === 'function') {\n onScrollNative(event)\n }\n }\n\n return React.createElement<any>(outerElementType, {\n ref,\n id,\n className,\n style,\n scrollY: true,\n onScroll: handleScroll,\n ...rest\n }, [\n getRenderExpandNodes({\n direction: 'top',\n id,\n innerElement: innerElementType,\n renderExpand: renderTop,\n }),\n children,\n getRenderExpandNodes({\n direction: 'bottom',\n id,\n innerElement: innerElementType,\n renderExpand: renderBottom,\n }),\n ])\n }\n)\n\nexport default outerWrapper\n"],"names":[],"mappings":";;;;;AAQA,SAAS,oBAAoB,CAAE,EAC7B,SAAS,EACT,EAAE,EAAE,GAAG,EACP,YAAY,EACZ,YAAY,GAMb,EAAA;AACC,IAAA,MAAM,EAAE,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE;AAChC,IAAA,MAAM,KAAK,GAAQ;AACjB,QAAA,GAAG,EAAE,EAAE;QACP,EAAE;AACF,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,CAAC,GAAG;YACf,MAAM,EAAE,CAAC,CAAC;AACX;KACF;IACD,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,YAAa,EAAE,KAAK,CAAC,CAAC;AAC9G,IAAA,IAAI,SAAS,KAAK,KAAK,EAAE;QACvB,OAAO,CAAC,OAAO,EAAE;;AAEnB,IAAA,OAAO,OAAO;AAChB;AAEA,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CACnC,SAAS,YAAY,CAAE,KAAK,EAAE,GAAG,EAAA;AAC/B,IAAA,MAAM,EAAA,GAMF,KAAkC,EANhC,EACJ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,YAAY,EAAA,GAAA,EAEa,EADjC,IAAI,GAAA,MAAA,CAAA,EAAA,EALH,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,CAML,CAAqC;AACtC,IAAA,MAAM,YAAY,GAAG,CAAC,KAAwE,KAAI;AAChG,QAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,iCACH,KAAY,CAAA,EAAA,EACf,aAAa,EAAE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,KAAK,CAAC,MAAM,KACf,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAA,CACnC,IACR;AAEF,QAAA,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;YACxC,cAAc,CAAC,KAAK,CAAC;;AAEzB,KAAC;AAED,IAAA,OAAO,KAAK,CAAC,aAAa,CAAM,gBAAgB,kBAC9C,GAAG;QACH,EAAE;QACF,SAAS;QACT,KAAK,EACL,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,YAAY,EAAA,EACnB,IAAI,CAAA,EACN;AACD,QAAA,oBAAoB,CAAC;AACnB,YAAA,SAAS,EAAE,KAAK;YAChB,EAAE;AACF,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,YAAY,EAAE,SAAS;SACxB,CAAC;QACF,QAAQ;AACR,QAAA,oBAAoB,CAAC;AACnB,YAAA,SAAS,EAAE,QAAQ;YACnB,EAAE;AACF,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,YAAY,EAAE,YAAY;SAC3B,CAAC;AACH,KAAA,CAAC;AACJ,CAAC;;;;"}
1
+ {"version":3,"file":"wrapper.js","sources":["../../../../src/components/virtual-waterfall/react/wrapper.ts"],"sourcesContent":["import React, { PropsWithChildren } from 'react'\n\nimport { convertPX2Int } from '../../../utils'\n\nimport type { BaseEventOrig } from '@tarojs/components'\nimport type { VirtualWaterfallProps } from '..'\nimport type { IProps } from '../preset'\n\nfunction getRenderExpandNodes ({\n direction,\n id: sid,\n innerElement,\n renderExpand,\n}: {\n direction: 'top' | 'bottom'\n id: string\n innerElement: VirtualWaterfallProps['innerElementType']\n renderExpand?: VirtualWaterfallProps['renderTop'] | VirtualWaterfallProps['renderBottom']\n}) {\n const id = `${sid}-${direction}`\n const props: any = {\n key: id,\n id,\n style: {\n visibility: 'hidden',\n height: 100,\n marginTop: -100,\n zIndex: -1,\n }\n }\n const expands = [renderExpand && React.createElement(renderExpand), React.createElement(innerElement!, props)]\n if (direction === 'top') {\n expands.reverse()\n }\n return expands\n}\n\nconst outerWrapper = React.forwardRef(\n function OuterWrapper (props, ref) {\n const {\n id, className, style, children,\n outerElementType, innerElementType,\n onScroll, onScrollNative,\n renderTop, renderBottom,\n ...rest\n } = props as PropsWithChildren<IProps>\n const handleScroll = (event: BaseEventOrig<VirtualWaterfallProps.IVirtualWaterfallEventDetail>) => {\n onScroll?.({\n ...event as any,\n currentTarget: {\n ...event.detail,\n clientWidth: convertPX2Int(style.width),\n clientHeight: convertPX2Int(style.height)\n } as any\n })\n\n if (typeof onScrollNative === 'function') {\n onScrollNative(event)\n }\n }\n\n return React.createElement<any>(outerElementType, {\n ref,\n id,\n className,\n style,\n scrollY: true,\n onScroll: handleScroll,\n ...rest\n }, [\n getRenderExpandNodes({\n direction: 'top',\n id,\n innerElement: innerElementType,\n renderExpand: renderTop,\n }),\n children,\n getRenderExpandNodes({\n direction: 'bottom',\n id,\n innerElement: innerElementType,\n renderExpand: renderBottom,\n }),\n ])\n }\n)\n\nexport default outerWrapper\n"],"names":[],"mappings":";;;;;AAQA,SAAS,oBAAoB,CAAE,EAC7B,SAAS,EACT,EAAE,EAAE,GAAG,EACP,YAAY,EACZ,YAAY,GAMb,EAAA;AACC,IAAA,MAAM,EAAE,GAAG,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,SAAS,EAAE;AAChC,IAAA,MAAM,KAAK,GAAQ;AACjB,QAAA,GAAG,EAAE,EAAE;QACP,EAAE;AACF,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,CAAC,GAAG;YACf,MAAM,EAAE,CAAC,CAAC;AACX;KACF;IACD,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,YAAa,EAAE,KAAK,CAAC,CAAC;AAC9G,IAAA,IAAI,SAAS,KAAK,KAAK,EAAE;QACvB,OAAO,CAAC,OAAO,EAAE;;AAEnB,IAAA,OAAO,OAAO;AAChB;AAEM,MAAA,YAAY,GAAG,KAAK,CAAC,UAAU,CACnC,SAAS,YAAY,CAAE,KAAK,EAAE,GAAG,EAAA;AAC/B,IAAA,MAAM,EAMF,GAAA,KAAkC,EANhC,EACJ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,YAAY,EAAA,GAAA,EAEa,EADjC,IAAI,GALH,MAAA,CAAA,EAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,CAML,CAAqC;AACtC,IAAA,MAAM,YAAY,GAAG,CAAC,KAAwE,KAAI;AAChG,QAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,iCACH,KAAY,CAAA,EAAA,EACf,aAAa,EAAE,MACV,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,MAAM,KACf,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAA,CACnC,IACR;AAEF,QAAA,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;YACxC,cAAc,CAAC,KAAK,CAAC;;AAEzB,KAAC;AAED,IAAA,OAAO,KAAK,CAAC,aAAa,CAAM,gBAAgB,kBAC9C,GAAG;QACH,EAAE;QACF,SAAS;QACT,KAAK,EACL,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,YAAY,EACnB,EAAA,IAAI,CACN,EAAA;AACD,QAAA,oBAAoB,CAAC;AACnB,YAAA,SAAS,EAAE,KAAK;YAChB,EAAE;AACF,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,YAAY,EAAE,SAAS;SACxB,CAAC;QACF,QAAQ;AACR,QAAA,oBAAoB,CAAC;AACnB,YAAA,SAAS,EAAE,QAAQ;YACnB,EAAE;AACF,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,YAAY,EAAE,YAAY;SAC3B,CAAC;AACH,KAAA,CAAC;AACJ,CAAC;;;;"}