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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/components/index.d.ts +1 -0
  2. package/dist/components/index.js +1 -0
  3. package/dist/components/index.js.map +1 -1
  4. package/dist/components/virtual-list/index.d.ts +30 -19
  5. package/dist/components/virtual-list/index.js.map +1 -1
  6. package/dist/components/virtual-list/list-set.js +10 -45
  7. package/dist/components/virtual-list/list-set.js.map +1 -1
  8. package/dist/components/virtual-list/preset.d.ts +4 -6
  9. package/dist/components/virtual-list/preset.js +3 -3
  10. package/dist/components/virtual-list/preset.js.map +1 -1
  11. package/dist/components/virtual-list/react/index.d.ts +1 -1
  12. package/dist/components/virtual-list/react/index.js +3 -2
  13. package/dist/components/virtual-list/react/index.js.map +1 -1
  14. package/dist/components/virtual-list/react/list.d.ts +1 -1
  15. package/dist/components/virtual-list/react/list.js +21 -19
  16. package/dist/components/virtual-list/react/list.js.map +1 -1
  17. package/dist/components/virtual-list/utils.d.ts +1 -4
  18. package/dist/components/virtual-list/utils.js +1 -28
  19. package/dist/components/virtual-list/utils.js.map +1 -1
  20. package/dist/components/virtual-list/vue/list.d.ts +24 -23
  21. package/dist/components/virtual-list/vue/list.js +45 -42
  22. package/dist/components/virtual-list/vue/list.js.map +1 -1
  23. package/dist/components/virtual-waterfall/constants.d.ts +2 -0
  24. package/dist/components/virtual-waterfall/constants.js +4 -0
  25. package/dist/components/virtual-waterfall/constants.js.map +1 -0
  26. package/dist/components/virtual-waterfall/index.d.ts +128 -0
  27. package/dist/components/virtual-waterfall/index.js +6 -0
  28. package/dist/components/virtual-waterfall/index.js.map +1 -0
  29. package/dist/components/virtual-waterfall/list-map.d.ts +39 -0
  30. package/dist/components/virtual-waterfall/list-map.js +257 -0
  31. package/dist/components/virtual-waterfall/list-map.js.map +1 -0
  32. package/dist/components/virtual-waterfall/preset.d.ts +40 -0
  33. package/dist/components/virtual-waterfall/preset.js +153 -0
  34. package/dist/components/virtual-waterfall/preset.js.map +1 -0
  35. package/dist/components/virtual-waterfall/react/index.d.ts +4 -0
  36. package/dist/components/virtual-waterfall/react/index.js +38 -0
  37. package/dist/components/virtual-waterfall/react/index.js.map +1 -0
  38. package/dist/components/virtual-waterfall/react/waterfall.d.ts +30 -0
  39. package/dist/components/virtual-waterfall/react/waterfall.js +285 -0
  40. package/dist/components/virtual-waterfall/react/waterfall.js.map +1 -0
  41. package/dist/components/virtual-waterfall/vue/index.d.ts +17 -0
  42. package/dist/components/virtual-waterfall/vue/index.js +12 -0
  43. package/dist/components/virtual-waterfall/vue/index.js.map +1 -0
  44. package/dist/components/virtual-waterfall/vue/waterfall.d.ts +159 -0
  45. package/dist/components/virtual-waterfall/vue/waterfall.js +86 -0
  46. package/dist/components/virtual-waterfall/vue/waterfall.js.map +1 -0
  47. package/dist/index.js +3 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/utils/convert.d.ts +1 -1
  50. package/dist/utils/convert.js.map +1 -1
  51. package/dist/utils/dom.d.ts +7 -0
  52. package/dist/utils/dom.js +43 -0
  53. package/dist/utils/dom.js.map +1 -0
  54. package/dist/utils/helper.d.ts +10 -0
  55. package/dist/utils/helper.js +51 -0
  56. package/dist/utils/helper.js.map +1 -0
  57. package/dist/utils/index.d.ts +2 -0
  58. package/dist/utils/index.js +2 -0
  59. package/dist/utils/index.js.map +1 -1
  60. package/dist/utils/vue-render.d.ts +4 -0
  61. package/dist/{components/virtual-list/vue/render.js → utils/vue-render.js} +2 -2
  62. package/dist/utils/vue-render.js.map +1 -0
  63. package/package.json +7 -6
  64. package/dist/components/virtual-list/vue/render.d.ts +0 -4
  65. package/dist/components/virtual-list/vue/render.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/react/list.ts"],"sourcesContent":["import memoizeOne from 'memoize-one'\nimport React from 'react'\n\nimport { convertNumber2PX } from '../../../utils/convert'\nimport { omit } from '../../../utils/lodash'\nimport { cancelTimeout, requestTimeout } from '../../../utils/timer'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport { getRTLOffsetType } from '../dom-helpers'\nimport ListSet from '../list-set'\nimport Preset from '../preset'\nimport { defaultItemKey, getRectSize, getScrollViewContextNode } from '../utils'\nimport { validateListProps } from './validate'\n\nimport type { IProps } from '../preset'\n\nexport interface IState {\n id: string\n instance: List\n isScrolling: boolean\n scrollDirection: 'forward' | 'backward'\n scrollOffset: number\n scrollUpdateWasRequested: boolean\n refreshCount: number\n}\n\nexport default class List extends React.PureComponent<IProps, IState> {\n static defaultProps: IProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n shouldResetStyleCacheOnItemSizeChange: true\n }\n\n static getDerivedStateFromProps (nextProps: IProps, prevState: IState) {\n return validateListProps(nextProps, prevState)\n }\n\n itemList: ListSet\n preset: Preset\n\n constructor (props: IProps) {\n super(props)\n\n this.preset = new Preset(\n props,\n this.refresh\n )\n this.itemList = this.preset.itemList\n\n this.state = {\n id: this.props.id || this.preset.id,\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n 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((overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) => this.props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\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 const [overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex] = this._getRangeToRender()\n\n this._callOnItemsRendered(overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex)\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 setTimeout(() => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n const isHorizontal = this.preset.isHorizontal\n for (let index = startIndex; index <= stopIndex; index++) {\n this._getSizeUploadSync(index, isHorizontal)\n }\n }, 0)\n }\n\n _getSizeUploadSync = (index: number, isHorizontal: boolean) => {\n const ID = `#${this.state.id}-${index}`\n\n return new Promise((resolve) => {\n const success = ({ width, height }) => {\n const size = isHorizontal ? width : height\n if (!this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n }\n const fail = () => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n if (index >= startIndex && index <= stopIndex) {\n setTimeout(() => {\n getRectSize(ID, success, fail)\n }, 100)\n }\n }\n getRectSize(ID, success, fail)\n })\n }\n\n // 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 () {\n return this.itemList.getRangeToRender(\n this.state.scrollDirection,\n this.state.scrollOffset,\n this.state.isScrolling\n )\n }\n\n _onScrollHorizontal = event => {\n const {\n clientWidth = this.itemList.wrapperSize,\n scrollHeight,\n scrollWidth = this.itemList.getOffsetSize(),\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n this.preset.field = {\n scrollHeight: scrollHeight,\n scrollWidth: this.itemList.getOffsetSize(),\n scrollTop: scrollTop,\n scrollLeft: scrollLeft,\n clientHeight: scrollHeight,\n clientWidth: scrollWidth\n }\n this.setState((prevState: any) => {\n const diffOffset = this.preset.field.scrollLeft - scrollLeft\n if (prevState.scrollOffset === scrollLeft || 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\n let scrollOffset = scrollLeft\n\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\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft\n break\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n this.preset.field = {\n scrollWidth: scrollOffset,\n }\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false\n }\n }, this._resetIsScrollingDebounced)\n }\n\n _onScrollVertical = event => {\n const {\n clientHeight = this.itemList.wrapperSize,\n scrollHeight = this.itemList.getOffsetSize(),\n scrollWidth,\n scrollTop,\n scrollLeft\n } = event.currentTarget\n 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.itemList.getOffsetSize(),\n scrollWidth: scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft: scrollLeft,\n clientHeight: clientHeight,\n clientWidth: scrollWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false\n }\n }, this._resetIsScrollingDebounced)\n }\n\n _outerRefSetter = ref => {\n const {\n outerRef\n } = this.props\n this._outerRef = ref\n\n if (typeof outerRef === 'function') {\n outerRef(ref)\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('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.getItemStyleCache(-1, null)\n })\n }\n\n public scrollTo (scrollOffset = 0) {\n const { enhanced } = this.props\n scrollOffset = Math.max(0, scrollOffset)\n if (this.state.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const isHorizontal = this.preset.isHorizontal\n const option: any = {\n animated: true,\n duration: 500\n }\n if (isHorizontal) {\n option.left\t= scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`#${this.state.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: scrollOffset,\n scrollUpdateWasRequested: true\n }\n }, this._resetIsScrollingDebounced)\n }\n\n public scrollToItem (index: number, align = 'auto') {\n const { itemCount } = this.props\n const { scrollOffset } = this.state\n index = Math.max(0, Math.min(index, itemCount - 1))\n this.scrollTo(this.itemList.getOffsetForIndexAndAlignment(index, align, scrollOffset))\n }\n\n componentDidMount () {\n const { initialScrollOffset } = this.props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = this._outerRef\n\n if (this.preset.isHorizontal) {\n outerRef.scrollLeft = initialScrollOffset\n } else {\n outerRef.scrollTop = initialScrollOffset\n }\n }\n\n this._callPropsCallbacks()\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 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\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset\n break\n\n default:\n outerRef.scrollLeft = outerRef.scrollWidth - outerRef.clientWidth - scrollOffset\n break\n }\n } else {\n outerRef.scrollLeft = scrollOffset\n }\n } else {\n outerRef.scrollTop = scrollOffset\n }\n }\n\n this._callPropsCallbacks(prevProps, prevState)\n }\n\n componentWillUnmount () {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId)\n }\n }\n\n render () {\n const {\n className,\n direction,\n height,\n innerRef,\n item,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n style,\n useIsScrolling,\n width,\n enhanced = false,\n renderTop,\n renderBottom,\n ...rest\n } = omit(this.props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position'])\n const {\n id,\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.state\n\n const isHorizontal = this.preset.isHorizontal\n const placeholderCount = this.preset.placeholderCount\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n\n const items = []\n\n if (itemCount > 0) {\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => React.createElement<any>(\n this.preset.itemTagName, {\n key: itemKey(index + startIndex - prevPlaceholder, itemData),\n style: { display: 'none' }\n }\n )))\n for (let index = startIndex; index <= stopIndex; index++) {\n const style = this.preset.getItemStyle(index)\n items.push(React.createElement<any>(this.preset.itemTagName, {\n key: itemKey(index, itemData),\n style\n }, React.createElement(item, {\n id: `${id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n })))\n }\n let restCount = itemCount - stopIndex\n restCount = restCount > 0 ? restCount : 0\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n items.push(new Array(postPlaceholder).fill(-1).map((_, index) => React.createElement<any>(\n this.preset.itemTagName, {\n key: itemKey(1 + index + stopIndex, itemData),\n style: { display: 'none' }\n }\n )))\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize())\n const outerElementProps: any = {\n ...rest,\n id,\n className,\n onScroll,\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 ...style\n }\n }\n\n if (!enhanced) {\n if (isHorizontal) {\n outerElementProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft\n } else {\n outerElementProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n }\n\n if (this.preset.isRelative) {\n const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex))\n return React.createElement(this.preset.outerTagName, outerElementProps,\n renderTop,\n React.createElement<any>(this.preset.itemTagName, {\n key: `${id}-pre`,\n id: `${id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n }),\n React.createElement<any>(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n }\n }, items),\n renderBottom\n )\n } else {\n return React.createElement(this.preset.outerTagName, outerElementProps,\n renderTop,\n React.createElement<any>(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n width: !isHorizontal ? '100%' : estimatedTotalSize\n }\n }, items),\n renderBottom\n )\n }\n }\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n"],"names":[],"mappings":";;;;;;;;;;;;AAyBc,MAAO,IAAK,SAAQ,KAAK,CAAC,aAA6B,CAAA;AAUnE,IAAA,OAAO,wBAAwB,CAAE,SAAiB,EAAE,SAAiB,EAAA;AACnE,QAAA,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;KAC/C;AAKD,IAAA,WAAA,CAAa,KAAa,EAAA;QACxB,KAAK,CAAC,KAAK,CAAC,CAAA;QAsBd,IAAO,CAAA,OAAA,GAAG,MAAK;AACb,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,WAAW,EAAE,CAAA;AACnB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM;oBACnC,YAAY,EAAE,EAAE,YAAY;AAC7B,iBAAA,CAAC,CAAC,CAAA;AACJ,aAAA;AACH,SAAC,CAAA;QAED,IAAS,CAAA,SAAA,GAAG,SAAS,CAAA;QAErB,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAA;AAEjC,QAAA,IAAA,CAAA,oBAAoB,GAAG,UAAU,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YAC3I,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;AACjB,SAAA,CAAC,CAAC,CAAA;AAEH,QAAA,IAAA,CAAA,aAAa,GAAG,UAAU,CAAC,CAAC,eAAe,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClH,eAAe;YACf,YAAY;YACZ,wBAAwB;YACxB,MAAM;AACA,SAAA,CAAC,CAAC,CAAA;AAqCV,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAa,EAAE,YAAqB,KAAI;YAC5D,MAAM,EAAE,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AAEvC,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC7B,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAI;oBACpC,MAAM,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;oBAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;wBAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,qBAAA;AACH,iBAAC,CAAA;gBACD,MAAM,IAAI,GAAG,MAAK;oBAChB,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;AACxD,oBAAA,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,SAAS,EAAE;wBAC7C,UAAU,CAAC,MAAK;AACd,4BAAA,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;yBAC/B,EAAE,GAAG,CAAC,CAAA;AACR,qBAAA;AACH,iBAAC,CAAA;AACD,gBAAA,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAChC,aAAC,CAAC,CAAA;AACJ,SAAC,CAAA;QAcD,IAAmB,CAAA,mBAAA,GAAG,KAAK,IAAG;AAC5B,YAAA,MAAM,EACJ,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EACvC,YAAY,EACZ,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAC3C,SAAS,EACT,UAAU,GACX,GAAG,KAAK,CAAC,aAAa,CAAA;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;AAClB,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC1C,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,WAAW,EAAE,WAAW;aACzB,CAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAc,KAAI;gBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;AAC5D,gBAAA,IAAI,SAAS,CAAC,YAAY,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;;;;AAI9E,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;gBAED,IAAI,YAAY,GAAG,UAAU,CAAA;AAE7B,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;;;;oBAKrB,QAAQ,gBAAgB,EAAE;AACxB,wBAAA,KAAK,UAAU;4BACb,YAAY,GAAG,CAAC,UAAU,CAAA;4BAC1B,MAAK;AAEP,wBAAA,KAAK,qBAAqB;AACxB,4BAAA,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAA;4BACrD,MAAK;AACR,qBAAA;AACF,iBAAA;AAED,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;AAClB,oBAAA,WAAW,EAAE,YAAY;iBAC1B,CAAA;gBACD,OAAO;AACL,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,eAAe,EAAE,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU;oBAC7E,YAAY;AACZ,oBAAA,wBAAwB,EAAE,KAAK;iBAChC,CAAA;AACH,aAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAA;AACrC,SAAC,CAAA;QAED,IAAiB,CAAA,iBAAA,GAAG,KAAK,IAAG;AAC1B,YAAA,MAAM,EACJ,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EACxC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAC5C,WAAW,EACX,SAAS,EACT,UAAU,EACX,GAAG,KAAK,CAAC,aAAa,CAAA;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAiB,KAAI;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;AAC1D,gBAAA,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;;;;AAI7E,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;;;AAGD,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC,CAAA;AAClF,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;AAClB,oBAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC3C,oBAAA,WAAW,EAAE,WAAW;AACxB,oBAAA,SAAS,EAAE,YAAY;AACvB,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,YAAY,EAAE,YAAY;AAC1B,oBAAA,WAAW,EAAE,WAAW;oBACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;iBACvD,CAAA;gBACD,OAAO;AACL,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,eAAe,EAAE,SAAS,CAAC,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU;oBAC/E,YAAY;AACZ,oBAAA,wBAAwB,EAAE,KAAK;iBAChC,CAAA;AACH,aAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAA;AACrC,SAAC,CAAA;QAED,IAAe,CAAA,eAAA,GAAG,GAAG,IAAG;AACtB,YAAA,MAAM,EACJ,QAAQ,EACT,GAAG,IAAI,CAAC,KAAK,CAAA;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;AAEpB,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACd,aAAA;AAAM,iBAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;;AAEjG,gBAAA,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAA;AACvB,aAAA;AACH,SAAC,CAAA;QAED,IAA0B,CAAA,0BAAA,GAAG,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,EAAE;AAC5C,gBAAA,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;AAC/C,aAAA;YAED,IAAI,CAAC,0BAA0B,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAA;AAC1G,SAAC,CAAA;QAED,IAAiB,CAAA,iBAAA,GAAG,MAAK;AACvB,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAA;YACtC,IAAI,CAAC,QAAQ,CAAC;AACZ,gBAAA,WAAW,EAAE,KAAK;AACnB,aAAA,EAAE,MAAK;;;gBAGN,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACzC,aAAC,CAAC,CAAA;AACJ,SAAC,CAAA;AAjPC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,KAAK,EACL,IAAI,CAAC,OAAO,CACb,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QAEpC,IAAI,CAAC,KAAK,GAAG;YACX,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,eAAe,EAAE,SAAS;YAC1B,YAAY,EACV,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,QAAQ;AAChD,kBAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB;AAChC,kBAAE,CAAC;AACP,YAAA,wBAAwB,EAAE,KAAK;AAC/B,YAAA,YAAY,EAAE,CAAC;SAChB,CAAA;KACF;AA8BD,IAAA,mBAAmB,CAAE,SAAA,GAAiB,EAAE,EAAE,YAAiB,EAAE,EAAA;QAC3D,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,UAAU,EAAE;AACpD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE;gBAC5B,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC7D,oBAAA,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;oBAE7G,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;AACtG,iBAAA;AACF,aAAA;AACF,SAAA;QAED,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS;AACZ,gBAAA,SAAS,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe;AACxD,gBAAA,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY;gBAClD,SAAS,CAAC,wBAAwB,KAAK,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAC1E;gBACA,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,KAAK,CAAC,eAAe,EAC1B,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB,CAAA;AACF,aAAA;AACF,SAAA;QAED,UAAU,CAAC,MAAK;YACd,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;AACxD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAA;YAC7C,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE;AACxD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AAC7C,aAAA;SACF,EAAE,CAAC,CAAC,CAAA;KACN;;;;;IA6BD,iBAAiB,GAAA;QACf,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,CAAA;KACF;IA+HM,QAAQ,CAAE,YAAY,GAAG,CAAC,EAAA;AAC/B,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;AACxC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY;YAAE,OAAM;AAEpD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAA;AAC7C,YAAA,MAAM,MAAM,GAAQ;AAClB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,QAAQ,EAAE,GAAG;aACd,CAAA;AACD,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,CAAC,IAAI,GAAG,YAAY,CAAA;AAC3B,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,CAAC,GAAG,GAAG,YAAY,CAAA;AAC1B,aAAA;YACD,OAAO,wBAAwB,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAChG,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAiB,KAAI;AAClC,YAAA,IAAI,SAAS,CAAC,YAAY,KAAK,YAAY,EAAE;AAC3C,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;YAED,OAAO;AACL,gBAAA,eAAe,EAAE,SAAS,CAAC,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU;AAC/E,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,wBAAwB,EAAE,IAAI;aAC/B,CAAA;AACH,SAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAA;KACpC;AAEM,IAAA,YAAY,CAAE,KAAa,EAAE,KAAK,GAAG,MAAM,EAAA;AAChD,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;AAChC,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;KACvF;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE1C,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AACrE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;AAE/B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,gBAAA,QAAQ,CAAC,UAAU,GAAG,mBAAmB,CAAA;AAC1C,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CAAA;AACzC,aAAA;AACF,SAAA;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAA;KAC3B;IAED,kBAAkB,CAAE,SAAiB,EAAE,SAAiB,EAAA;QACtD,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE7D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAE9B,QAAA,IAAI,wBAAwB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AACtD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;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,CAAA;4BACnC,MAAK;AAEP,wBAAA,KAAK,oBAAoB;AACvB,4BAAA,QAAQ,CAAC,UAAU,GAAG,YAAY,CAAA;4BAClC,MAAK;AAEP,wBAAA;AACE,4BAAA,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,GAAG,YAAY,CAAA;4BAChF,MAAK;AACR,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,UAAU,GAAG,YAAY,CAAA;AACnC,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAA;AAClC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;KAC/C;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,EAAE;AAC5C,YAAA,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;AAC/C,SAAA;KACF;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,EAiBF,GAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,EAjBtI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,GAAG,cAAc,EACxB,MAAM,EACN,KAAK,EACL,cAAc,EACd,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,YAAY,EAAA,GAAA,EAE8H,EADvI,IAAI,GAhBH,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,CAiBL,CAA2I,CAAA;AAC5I,QAAA,MAAM,EACJ,EAAE,EACF,WAAW,EACX,YAAY,EACZ,wBAAwB,EACzB,GAAG,IAAI,CAAC,KAAK,CAAA;AAEd,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAA;AAC7C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAA;QACrD,MAAM,QAAQ,GAAG,YAAY;cACzB,IAAI,CAAC,mBAAmB;AAC1B,cAAE,IAAI,CAAC,iBAAiB,CAAA;QAE1B,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAExD,MAAM,KAAK,GAAG,EAAE,CAAA;QAEhB,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,YAAA,MAAM,eAAe,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,GAAG,gBAAgB,CAAA;AACrF,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,aAAa,CAClF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACvB,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,UAAU,GAAG,eAAe,EAAE,QAAQ,CAAC;AAC5D,gBAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;aAC3B,CACF,CAAC,CAAC,CAAA;YACH,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE;gBACxD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAC7C,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3D,oBAAA,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;oBAC7B,KAAK;AACN,iBAAA,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AAC3B,oBAAA,EAAE,EAAE,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,KAAK,CAAE,CAAA;AACpB,oBAAA,IAAI,EAAE,QAAQ;oBACd,KAAK;oBACL,WAAW,EAAE,cAAc,GAAG,WAAW,GAAG,SAAS;iBACtD,CAAC,CAAC,CAAC,CAAA;AACL,aAAA;AACD,YAAA,IAAI,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AACrC,YAAA,SAAS,GAAI,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAA;AAC1C,YAAA,MAAM,eAAe,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,gBAAgB,CAAA;AACnF,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,aAAa,CAClF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACvB,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,EAAE,QAAQ,CAAC;AAC7C,gBAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;aAC3B,CACF,CAAC,CAAC,CAAA;AACJ,SAAA;;;QAID,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAA;AAC1E,QAAA,MAAM,iBAAiB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAClB,IAAI,CAAA,EAAA,EACP,EAAE;YACF,SAAS;AACT,YAAA,QAAQ,EACR,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,MAAM;AACN,YAAA,QAAQ,EACR,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,EACH,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,OAAO,EAChC,UAAU,EAAE,WAAW,EACvB,SAAS,EACN,EAAA,KAAK,IAEX,CAAA;QAED,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,iBAAiB,CAAC,UAAU,GAAG,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAA;AACtG,aAAA;AAAM,iBAAA;AACL,gBAAA,iBAAiB,CAAC,SAAS,GAAG,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;AACpG,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;YACrE,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,EACpE,SAAS,EACT,KAAK,CAAC,aAAa,CAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBAChD,GAAG,EAAE,CAAG,EAAA,EAAE,CAAM,IAAA,CAAA;gBAChB,EAAE,EAAE,CAAG,EAAA,EAAE,CAAM,IAAA,CAAA;AACf,gBAAA,KAAK,EAAE;oBACL,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,GAAG;oBACnC,KAAK,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG,GAAG;AACpC,iBAAA;aACF,CAAC,EACF,KAAK,CAAC,aAAa,CAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AACjD,gBAAA,GAAG,EAAE,QAAQ;gBACb,GAAG,EAAE,CAAG,EAAA,EAAE,CAAQ,MAAA,CAAA;gBAClB,EAAE,EAAE,CAAG,EAAA,EAAE,CAAQ,MAAA,CAAA;AACjB,gBAAA,KAAK,EAAE;oBACL,aAAa,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM;AAC5C,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA;AACF,aAAA,EAAE,KAAK,CAAC,EACT,YAAY,CACb,CAAA;AACF,SAAA;AAAM,aAAA;YACL,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,EACpE,SAAS,EACT,KAAK,CAAC,aAAa,CAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AACjD,gBAAA,GAAG,EAAE,QAAQ;gBACb,GAAG,EAAE,CAAG,EAAA,EAAE,CAAQ,MAAA,CAAA;gBAClB,EAAE,EAAE,CAAG,EAAA,EAAE,CAAQ,MAAA,CAAA;AACjB,gBAAA,KAAK,EAAE;oBACL,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,kBAAkB;oBAClD,aAAa,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM;AAC5C,oBAAA,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG,kBAAkB;AACnD,iBAAA;AACF,aAAA,EAAE,KAAK,CAAC,EACT,YAAY,CACb,CAAA;AACF,SAAA;KACF;;AAlfM,IAAA,CAAA,YAAY,GAAW;AAC5B,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,qCAAqC,EAAE,IAAI;CAC5C,CAAA;AA8eH;AACA;AACA;AACA;AACA;;;;"}
1
+ {"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/react/list.ts"],"sourcesContent":["import memoizeOne from 'memoize-one'\nimport React from 'react'\n\nimport { cancelTimeout, convertNumber2PX, defaultItemKey, getRectSize, getScrollViewContextNode, omit, requestTimeout } from '../../../utils'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport { getRTLOffsetType } from '../dom-helpers'\nimport ListSet from '../list-set'\nimport Preset from '../preset'\nimport { validateListProps } from './validate'\n\nimport type { IProps } from '../preset'\n\nexport interface IState {\n id: string\n instance: List\n isScrolling: boolean\n scrollDirection: 'forward' | 'backward'\n scrollOffset: number\n scrollUpdateWasRequested: boolean\n refreshCount: number\n}\n\nexport default class List extends React.PureComponent<IProps, IState> {\n static defaultProps: IProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n shouldResetStyleCacheOnItemSizeChange: true\n }\n\n static getDerivedStateFromProps (nextProps: IProps, prevState: IState) {\n return validateListProps(nextProps, prevState)\n }\n\n itemList: ListSet\n preset: Preset\n\n constructor (props: IProps) {\n super(props)\n\n this.preset = new Preset(\n props,\n this.refresh,\n )\n this.itemList = this.preset.itemList\n\n this.state = {\n id: this.props.id || this.preset.id,\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n 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((overscanStartIndex, overscanStopIndex, startIndex, stopIndex) => this.props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n startIndex,\n stopIndex\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 const [overscanStartIndex, overscanStopIndex, startIndex, stopIndex] = this._getRangeToRender()\n\n this._callOnItemsRendered(overscanStartIndex, overscanStopIndex, startIndex, stopIndex)\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 setTimeout(() => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n const isHorizontal = this.preset.isHorizontal\n for (let index = startIndex; index <= stopIndex; index++) {\n this._getSizeUploadSync(index, isHorizontal)\n }\n }, 0)\n }\n\n _getSizeUploadSync = (index: number, isHorizontal: boolean) => {\n const ID = `#${this.state.id}-${index}`\n\n return new Promise((resolve) => {\n const success = ({ width, height }) => {\n const size = isHorizontal ? width : height\n if (!this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n }\n const fail = () => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n if (index >= startIndex && index <= stopIndex) {\n setTimeout(() => {\n getRectSize(ID, success, fail)\n }, 100)\n }\n }\n getRectSize(ID, success, fail)\n })\n }\n\n // 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 () {\n return this.itemList.getRangeToRender(\n this.state.scrollDirection,\n this.state.scrollOffset,\n this.state.isScrolling\n )\n }\n\n _onScrollHorizontal = event => {\n const {\n clientWidth = this.itemList.wrapperSize,\n scrollHeight,\n scrollWidth = this.itemList.getOffsetSize(),\n scrollTop,\n scrollLeft,\n } = event.currentTarget\n this.preset.field = {\n scrollHeight: scrollHeight,\n scrollWidth: this.itemList.getOffsetSize(),\n scrollTop: scrollTop,\n scrollLeft: scrollLeft,\n clientHeight: scrollHeight,\n clientWidth: scrollWidth\n }\n this.setState((prevState: any) => {\n const diffOffset = this.preset.field.scrollLeft - scrollLeft\n if (prevState.scrollOffset === scrollLeft || 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\n let scrollOffset = scrollLeft\n\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\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft\n break\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n this.preset.field = {\n scrollWidth: scrollOffset,\n }\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false\n }\n }, this._resetIsScrollingDebounced)\n }\n\n _onScrollVertical = event => {\n const {\n clientHeight = this.itemList.wrapperSize,\n scrollHeight = this.itemList.getOffsetSize(),\n scrollWidth,\n scrollTop,\n scrollLeft\n } = event.currentTarget\n 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.itemList.getOffsetSize(),\n scrollWidth: scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft: scrollLeft,\n clientHeight: clientHeight,\n clientWidth: scrollWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false\n }\n }, this._resetIsScrollingDebounced)\n }\n\n _outerRefSetter = ref => {\n const {\n outerRef\n } = this.props\n this._outerRef = ref\n\n if (typeof outerRef === 'function') {\n outerRef(ref)\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('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.getItemStyleCache(-1, null)\n })\n }\n\n public scrollTo (scrollOffset = 0) {\n const { enhanced } = this.props\n scrollOffset = Math.max(0, scrollOffset)\n if (this.state.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const isHorizontal = this.preset.isHorizontal\n const option: any = {\n animated: true,\n duration: 500\n }\n if (isHorizontal) {\n option.left\t= scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`#${this.state.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: scrollOffset,\n scrollUpdateWasRequested: true\n }\n }, this._resetIsScrollingDebounced)\n }\n\n public scrollToItem (index: number, align = 'auto') {\n const { itemCount } = this.props\n const { scrollOffset } = this.state\n index = Math.max(0, Math.min(index, itemCount - 1))\n this.scrollTo(this.itemList.getOffsetForIndexAndAlignment(index, align, scrollOffset))\n }\n\n componentDidMount () {\n const { initialScrollOffset } = this.props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = this._outerRef\n\n if (this.preset.isHorizontal) {\n outerRef.scrollLeft = initialScrollOffset\n } else {\n outerRef.scrollTop = initialScrollOffset\n }\n }\n\n this._callPropsCallbacks()\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 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\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset\n break\n\n default:\n outerRef.scrollLeft = outerRef.scrollWidth - outerRef.clientWidth - scrollOffset\n break\n }\n } else {\n outerRef.scrollLeft = scrollOffset\n }\n } else {\n outerRef.scrollTop = scrollOffset\n }\n }\n\n this._callPropsCallbacks(prevProps, prevState)\n }\n\n componentWillUnmount () {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId)\n }\n }\n\n render () {\n const {\n className,\n direction,\n height,\n innerRef,\n item,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n style,\n useIsScrolling,\n width,\n enhanced = false,\n renderTop,\n renderBottom,\n ...rest\n } = omit(this.props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position'])\n const {\n id,\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.state\n\n const isHorizontal = this.preset.isHorizontal\n const placeholderCount = this.preset.placeholderCount\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n\n const items = []\n\n if (itemCount > 0) {\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => React.createElement<any>(\n this.preset.itemElement, {\n key: itemKey(index + startIndex - prevPlaceholder, itemData),\n style: { display: 'none' }\n }\n )))\n for (let index = startIndex; index <= stopIndex; index++) {\n const style = this.preset.getItemStyle(index)\n items.push(React.createElement<any>(this.preset.itemElement, {\n key: itemKey(index, itemData),\n style\n }, React.createElement(item, {\n id: `${id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n })))\n }\n let restCount = itemCount - stopIndex\n restCount = restCount > 0 ? restCount : 0\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n items.push(new Array(postPlaceholder).fill(-1).map((_, index) => React.createElement<any>(\n this.preset.itemElement, {\n key: itemKey(1 + index + stopIndex, itemData),\n style: { display: 'none' }\n }\n )))\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize())\n const outerProps: any = {\n ...rest,\n id,\n className,\n onScroll,\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 ...style\n }\n }\n\n if (!enhanced) {\n if (isHorizontal) {\n outerProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft\n } else {\n outerProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n }\n\n if (this.preset.isRelative) {\n const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex))\n return React.createElement(this.preset.outerElement, outerProps,\n renderTop,\n React.createElement<any>(this.preset.itemElement, {\n key: `${id}-pre`,\n id: `${id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n }),\n React.createElement<any>(this.preset.innerElement, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n }\n }, items),\n renderBottom\n )\n } else {\n return React.createElement(this.preset.outerElement, outerProps,\n renderTop,\n React.createElement<any>(this.preset.innerElement, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n width: !isHorizontal ? '100%' : estimatedTotalSize\n }\n }, items),\n renderBottom\n )\n }\n }\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- declare const defaultItemKey: (index: number, _itemData?: unknown) => number;
2
1
  interface IHorizontal {
3
2
  direction?: string;
4
3
  layout?: string;
@@ -8,6 +7,4 @@ interface IRrl {
8
7
  direction?: string;
9
8
  }
10
9
  declare function isRtlFunc({ direction }: IRrl): boolean;
11
- declare function getRectSize(id: string, success?: TFunc, fail?: TFunc, retryMs?: number): void;
12
- declare function getScrollViewContextNode(id: string): Promise<unknown>;
13
- export { defaultItemKey, isHorizontalFunc, isRtlFunc, getRectSize, getScrollViewContextNode };
10
+ export { isHorizontalFunc, isRtlFunc };
@@ -1,36 +1,9 @@
1
- import { createSelectorQuery } from '@tarojs/taro';
2
-
3
- // In DEV mode, this Set helps us only log a warning once per component instance.
4
- // This avoids spamming the console every time a render happens.
5
- const defaultItemKey = (index, _itemData) => index;
6
1
  function isHorizontalFunc({ direction, layout }) {
7
2
  return direction === 'horizontal' || layout === 'horizontal';
8
3
  }
9
4
  function isRtlFunc({ direction }) {
10
5
  return direction === 'rtl';
11
6
  }
12
- function getRectSize(id, success, fail, retryMs = 500) {
13
- const query = createSelectorQuery();
14
- try {
15
- query.select(id).boundingClientRect((res) => {
16
- if (res) {
17
- success === null || success === void 0 ? void 0 : success(res);
18
- }
19
- else {
20
- fail === null || fail === void 0 ? void 0 : fail();
21
- }
22
- }).exec();
23
- }
24
- catch (err) {
25
- setTimeout(() => {
26
- getRectSize(id, success, fail, retryMs);
27
- }, retryMs);
28
- }
29
- }
30
- async function getScrollViewContextNode(id) {
31
- const query = createSelectorQuery();
32
- return new Promise((resolve) => query.select(id).node(({ node }) => resolve(node)).exec());
33
- }
34
7
 
35
- export { defaultItemKey, getRectSize, getScrollViewContextNode, isHorizontalFunc, isRtlFunc };
8
+ export { isHorizontalFunc, isRtlFunc };
36
9
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/virtual-list/utils.ts"],"sourcesContent":["import { createSelectorQuery } from '@tarojs/taro'\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nexport const defaultItemKey = (index: number, _itemData?: unknown) => index\n\ninterface IHorizontal {\n direction?: string\n layout?: string\n}\nexport function isHorizontalFunc ({ direction, layout }: IHorizontal) {\n return direction === 'horizontal' || layout === 'horizontal'\n}\ninterface IRrl {\n direction?: string\n}\nexport function isRtlFunc ({ direction }: IRrl) {\n return direction === 'rtl'\n}\n\nexport function getRectSize (id: string, success?: TFunc, fail?: TFunc, retryMs = 500) {\n const query = createSelectorQuery()\n try {\n query.select(id).boundingClientRect((res) => {\n if (res) {\n success?.(res)\n } else {\n fail?.()\n }\n }).exec()\n } catch (err) {\n setTimeout(() => {\n getRectSize(id, success, fail, retryMs)\n }, retryMs)\n }\n}\n\nexport async function getScrollViewContextNode (id: string) {\n const query = createSelectorQuery()\n return new Promise((resolve) => query.select(id).node(({ node }) => resolve(node)).exec())\n}\n"],"names":[],"mappings":";;AAEA;AACA;AACO,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,SAAmB,KAAK,MAAK;SAM3D,gBAAgB,CAAE,EAAE,SAAS,EAAE,MAAM,EAAe,EAAA;AAClE,IAAA,OAAO,SAAS,KAAK,YAAY,IAAI,MAAM,KAAK,YAAY,CAAA;AAC9D,CAAC;AAIe,SAAA,SAAS,CAAE,EAAE,SAAS,EAAQ,EAAA;IAC5C,OAAO,SAAS,KAAK,KAAK,CAAA;AAC5B,CAAC;AAEK,SAAU,WAAW,CAAE,EAAU,EAAE,OAAe,EAAE,IAAY,EAAE,OAAO,GAAG,GAAG,EAAA;AACnF,IAAA,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;IACnC,IAAI;QACF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,KAAI;AAC1C,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAG,GAAG,CAAC,CAAA;AACf,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,EAAI,CAAA;AACT,aAAA;AACH,SAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACV,KAAA;AAAC,IAAA,OAAO,GAAG,EAAE;QACZ,UAAU,CAAC,MAAK;YACd,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;SACxC,EAAE,OAAO,CAAC,CAAA;AACZ,KAAA;AACH,CAAC;AAEM,eAAe,wBAAwB,CAAE,EAAU,EAAA;AACxD,IAAA,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;AACnC,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC5F;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/components/virtual-list/utils.ts"],"sourcesContent":["interface IHorizontal {\n direction?: string\n layout?: string\n}\nexport function isHorizontalFunc ({ direction, layout }: IHorizontal) {\n return direction === 'horizontal' || layout === 'horizontal'\n}\ninterface IRrl {\n direction?: string\n}\nexport function isRtlFunc ({ direction }: IRrl) {\n return direction === 'rtl'\n}\n"],"names":[],"mappings":"SAIgB,gBAAgB,CAAE,EAAE,SAAS,EAAE,MAAM,EAAe,EAAA;AAClE,IAAA,OAAO,SAAS,KAAK,YAAY,IAAI,MAAM,KAAK,YAAY,CAAA;AAC9D,CAAC;AAIe,SAAA,SAAS,CAAE,EAAE,SAAS,EAAQ,EAAA;IAC5C,OAAO,SAAS,KAAK,KAAK,CAAA;AAC5B;;;;"}
@@ -9,6 +9,9 @@ declare const _default: {
9
9
  type: (NumberConstructor | StringConstructor)[];
10
10
  required: boolean;
11
11
  };
12
+ item: {
13
+ required: boolean;
14
+ };
12
15
  itemCount: {
13
16
  type: NumberConstructor;
14
17
  required: boolean;
@@ -17,6 +20,7 @@ declare const _default: {
17
20
  type: ArrayConstructor;
18
21
  required: boolean;
19
22
  };
23
+ itemKey: StringConstructor;
20
24
  itemSize: {
21
25
  type: (NumberConstructor | FunctionConstructor)[];
22
26
  required: boolean;
@@ -29,14 +33,6 @@ declare const _default: {
29
33
  type: StringConstructor;
30
34
  default: string;
31
35
  };
32
- initialScrollOffset: {
33
- type: NumberConstructor;
34
- default: number;
35
- };
36
- innerElementType: {
37
- type: StringConstructor;
38
- default: string;
39
- };
40
36
  direction: {
41
37
  type: StringConstructor;
42
38
  default: string;
@@ -45,6 +41,10 @@ declare const _default: {
45
41
  type: StringConstructor;
46
42
  default: string;
47
43
  };
44
+ initialScrollOffset: {
45
+ type: NumberConstructor;
46
+ default: number;
47
+ };
48
48
  overscanCount: {
49
49
  type: NumberConstructor;
50
50
  default: number;
@@ -56,32 +56,33 @@ declare const _default: {
56
56
  type: BooleanConstructor;
57
57
  default: boolean;
58
58
  };
59
- item: {
60
- required: boolean;
59
+ enhanced: {
60
+ type: BooleanConstructor;
61
+ default: boolean;
61
62
  };
62
- itemKey: StringConstructor;
63
- itemTagName: {
63
+ shouldResetStyleCacheOnItemSizeChange: {
64
+ type: BooleanConstructor;
65
+ default: boolean;
66
+ };
67
+ outerElementType: {
64
68
  type: StringConstructor;
65
69
  default: string;
66
70
  };
67
- innerTagName: {
71
+ innerElementType: {
68
72
  type: StringConstructor;
69
73
  default: string;
70
74
  };
71
- outerTagName: {
75
+ itemElementType: {
72
76
  type: StringConstructor;
73
77
  default: string;
74
78
  };
75
- itemElementType: StringConstructor;
76
- outerElementType: StringConstructor;
77
- innerRef: StringConstructor;
79
+ outerTagName: StringConstructor;
80
+ innerTagName: StringConstructor;
81
+ itemTagName: StringConstructor;
78
82
  outerRef: StringConstructor;
79
- onItemsRendered: FunctionConstructor;
83
+ innerRef: StringConstructor;
80
84
  onScrollNative: FunctionConstructor;
81
- shouldResetStyleCacheOnItemSizeChange: {
82
- type: BooleanConstructor;
83
- default: boolean;
84
- };
85
+ onItemsRendered: FunctionConstructor;
85
86
  };
86
87
  data(): {
87
88
  itemList: import("../list-set.js").default;
@@ -99,7 +100,7 @@ declare const _default: {
99
100
  refresh(): void;
100
101
  scrollTo(scrollOffset: any): Promise<any>;
101
102
  scrollToItem(index: any, align?: string): void;
102
- _callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, visibleStartIndex: any, visibleStopIndex: any) => any>;
103
+ _callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, startIndex: any, stopIndex: any) => any>;
103
104
  _callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
104
105
  _callPropsCallbacks(): void;
105
106
  _getSizeUploadSync(index: number, isHorizontal: boolean): Promise<unknown>;
@@ -1,13 +1,15 @@
1
1
  import { isWebPlatform } from '@tarojs/shared';
2
2
  import memoizeOne from 'memoize-one';
3
- import { convertNumber2PX } from '../../../utils/convert.js';
4
- import { omit } from '../../../utils/lodash.js';
5
- import { cancelTimeout, requestTimeout } from '../../../utils/timer.js';
3
+ import '../../../utils/index.js';
4
+ import render from '../../../utils/vue-render.js';
6
5
  import { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants.js';
7
6
  import { getRTLOffsetType } from '../dom-helpers.js';
8
7
  import Preset from '../preset.js';
9
- import { getScrollViewContextNode, getRectSize, defaultItemKey } from '../utils.js';
10
- import render from './render.js';
8
+ import { getScrollViewContextNode, getRectSize } from '../../../utils/dom.js';
9
+ import { cancelTimeout, requestTimeout } from '../../../utils/timer.js';
10
+ import { omit } from '../../../utils/lodash.js';
11
+ import { defaultItemKey } from '../../../utils/helper.js';
12
+ import { convertNumber2PX } from '../../../utils/convert.js';
11
13
 
12
14
  const isWeb = isWebPlatform();
13
15
  var List = {
@@ -20,6 +22,9 @@ var List = {
20
22
  type: [String, Number],
21
23
  required: true
22
24
  },
25
+ item: {
26
+ required: true
27
+ },
23
28
  itemCount: {
24
29
  type: Number,
25
30
  required: true
@@ -28,6 +33,7 @@ var List = {
28
33
  type: Array,
29
34
  required: true
30
35
  },
36
+ itemKey: String,
31
37
  itemSize: {
32
38
  type: [Number, Function],
33
39
  required: true
@@ -40,14 +46,6 @@ var List = {
40
46
  type: String,
41
47
  default: 'absolute'
42
48
  },
43
- initialScrollOffset: {
44
- type: Number,
45
- default: 0
46
- },
47
- innerElementType: {
48
- type: String,
49
- default: isWeb ? 'taro-view-core' : 'view'
50
- },
51
49
  direction: {
52
50
  type: String,
53
51
  default: 'ltr'
@@ -56,6 +54,10 @@ var List = {
56
54
  type: String,
57
55
  default: 'vertical'
58
56
  },
57
+ initialScrollOffset: {
58
+ type: Number,
59
+ default: 0
60
+ },
59
61
  overscanCount: {
60
62
  type: Number,
61
63
  default: 1
@@ -67,32 +69,33 @@ var List = {
67
69
  type: Boolean,
68
70
  default: false
69
71
  },
70
- item: {
71
- required: true
72
+ enhanced: {
73
+ type: Boolean,
74
+ default: false
72
75
  },
73
- itemKey: String,
74
- itemTagName: {
76
+ shouldResetStyleCacheOnItemSizeChange: {
77
+ type: Boolean,
78
+ default: true
79
+ },
80
+ outerElementType: {
75
81
  type: String,
76
- default: isWeb ? 'taro-view-core' : 'view'
82
+ default: isWeb ? 'taro-scroll-view-core' : 'scroll-view'
77
83
  },
78
- innerTagName: {
84
+ innerElementType: {
79
85
  type: String,
80
86
  default: isWeb ? 'taro-view-core' : 'view'
81
87
  },
82
- outerTagName: {
88
+ itemElementType: {
83
89
  type: String,
84
- default: isWeb ? 'taro-scroll-view-core' : 'scroll-view'
90
+ default: isWeb ? 'taro-view-core' : 'view'
85
91
  },
86
- itemElementType: String,
87
- outerElementType: String,
88
- innerRef: String,
92
+ outerTagName: String,
93
+ innerTagName: String,
94
+ itemTagName: String,
89
95
  outerRef: String,
90
- onItemsRendered: Function,
96
+ innerRef: String,
91
97
  onScrollNative: Function,
92
- shouldResetStyleCacheOnItemSizeChange: {
93
- type: Boolean,
94
- default: true
95
- },
98
+ onItemsRendered: Function,
96
99
  },
97
100
  data() {
98
101
  const preset = new Preset(this.$props, this.refresh);
@@ -145,12 +148,12 @@ var List = {
145
148
  index = Math.max(0, Math.min(index, itemCount - 1));
146
149
  this.scrollTo(this.itemList.getOffsetForIndexAndAlignment(this.$props, index, align, scrollOffset));
147
150
  },
148
- _callOnItemsRendered: memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {
151
+ _callOnItemsRendered: memoizeOne(function (overscanStartIndex, overscanStopIndex, startIndex, stopIndex) {
149
152
  return this.$props.onItemsRendered({
150
153
  overscanStartIndex,
151
154
  overscanStopIndex,
152
- visibleStartIndex,
153
- visibleStopIndex
155
+ startIndex,
156
+ stopIndex
154
157
  });
155
158
  }),
156
159
  _callOnScroll: memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested, detail) {
@@ -165,8 +168,8 @@ var List = {
165
168
  if (typeof this.$props.onItemsRendered === 'function') {
166
169
  const { itemCount } = this.$props;
167
170
  if (itemCount > 0) {
168
- const [overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex] = this._getRangeToRender();
169
- this._callOnItemsRendered(overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex);
171
+ const [overscanStartIndex, overscanStopIndex, startIndex, stopIndex] = this._getRangeToRender();
172
+ this._callOnItemsRendered(overscanStartIndex, overscanStopIndex, startIndex, stopIndex);
170
173
  }
171
174
  }
172
175
  this._callOnScroll(this.scrollDirection, this.scrollOffset, this.scrollUpdateWasRequested, this.preset.field);
@@ -360,13 +363,13 @@ var List = {
360
363
  const items = [];
361
364
  if (itemCount > 0) {
362
365
  const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount;
363
- items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => render(this.preset.itemTagName, {
366
+ items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => render(this.preset.itemElement, {
364
367
  key: itemKey(index + startIndex - prevPlaceholder, itemData),
365
368
  style: { display: 'none' }
366
369
  })));
367
370
  for (let index = startIndex; index <= stopIndex; index++) {
368
371
  const style = this.preset.getItemStyle(index);
369
- items.push(render(this.preset.itemTagName, {
372
+ items.push(render(this.preset.itemElement, {
370
373
  key: itemKey(index, itemData),
371
374
  style
372
375
  }, [
@@ -384,7 +387,7 @@ var List = {
384
387
  let restCount = itemCount - stopIndex;
385
388
  restCount = restCount > 0 ? restCount : 0;
386
389
  const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount;
387
- items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(this.preset.itemTagName, {
390
+ items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(this.preset.itemElement, {
388
391
  key: itemKey(1 + index + stopIndex, itemData),
389
392
  style: { display: 'none' }
390
393
  })));
@@ -424,9 +427,9 @@ var List = {
424
427
  }
425
428
  if (this.preset.isRelative) {
426
429
  const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex));
427
- return render(this.preset.outerTagName, outerElementProps, [
430
+ return render(this.preset.outerElement, outerElementProps, [
428
431
  process.env.FRAMEWORK === 'vue3' ? (_b = (_a = this.$slots).top) === null || _b === void 0 ? void 0 : _b.call(_a) : this.$slots.top,
429
- render(this.preset.itemTagName, {
432
+ render(this.preset.itemElement, {
430
433
  key: `${id}-pre`,
431
434
  id: `${id}-pre`,
432
435
  style: {
@@ -434,7 +437,7 @@ var List = {
434
437
  width: !isHorizontal ? '100%' : pre
435
438
  }
436
439
  }),
437
- render(this.preset.innerTagName, {
440
+ render(this.preset.innerElement, {
438
441
  ref: innerRef,
439
442
  key: `${id}-inner`,
440
443
  id: `${id}-inner`,
@@ -447,9 +450,9 @@ var List = {
447
450
  ]);
448
451
  }
449
452
  else {
450
- return render(this.preset.outerTagName, outerElementProps, [
453
+ return render(this.preset.outerElement, outerElementProps, [
451
454
  process.env.FRAMEWORK === 'vue3' ? (_f = (_e = this.$slots).top) === null || _f === void 0 ? void 0 : _f.call(_e) : this.$slots.top,
452
- render(this.preset.innerTagName, {
455
+ render(this.preset.innerElement, {
453
456
  ref: innerRef,
454
457
  key: `${id}-inner`,
455
458
  id: `${id}-inner`,