@tarojs/components-advanced 3.6.0 → 3.6.1
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.
- package/LICENSE +119 -1
- package/dist/components/virtual-list/index.d.ts +5 -0
- package/dist/components/virtual-list/index.js.map +1 -1
- package/dist/components/virtual-list/react/index.d.ts +1 -1
- package/dist/components/virtual-list/react/list.d.ts +1 -1
- package/dist/components/virtual-list/react/list.js +31 -10
- package/dist/components/virtual-list/react/list.js.map +1 -1
- package/dist/components/virtual-list/utils.d.ts +2 -1
- package/dist/components/virtual-list/utils.js +5 -1
- package/dist/components/virtual-list/utils.js.map +1 -1
- package/dist/components/virtual-list/vue/list.d.ts +1 -1
- package/dist/components/virtual-list/vue/list.js +27 -9
- package/dist/components/virtual-list/vue/list.js.map +1 -1
- package/package.json +4 -4
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2018
|
|
3
|
+
Copyright (c) 2018 O2Team
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -19,3 +19,121 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
========================================================================
|
|
24
|
+
|
|
25
|
+
MIT (react-devtools):
|
|
26
|
+
The following files embed [react-devtools](https://github.com/facebook/react) MIT:
|
|
27
|
+
`/packages/taro-plugin-react-devtools/src/backend/index.js`
|
|
28
|
+
See `/LICENSE` for details of the license.
|
|
29
|
+
|
|
30
|
+
==================
|
|
31
|
+
|
|
32
|
+
MIT (vue-devtools):
|
|
33
|
+
The following files embed [vue-devtools](https://github.com/vuejs/devtools) MIT:
|
|
34
|
+
`/packages/taro-plugin-vue-devtools/src/backend/*`
|
|
35
|
+
See `/LICENSE` for details of the license.
|
|
36
|
+
|
|
37
|
+
==================
|
|
38
|
+
|
|
39
|
+
MIT (vite):
|
|
40
|
+
The following files embed [vite](https://github.com/vitejs/vite) MIT:
|
|
41
|
+
`/packages/taro-webpack5-prebundle/src/prebundle/scanImport.ts`,
|
|
42
|
+
`/packages/taro-webpack5-prebundle/src/prebundle/bundle.ts`,
|
|
43
|
+
`/packages/taro-webpack5-prebundle/src/h5.ts`,
|
|
44
|
+
`/packages/taro-webpack5-prebundle/src/min.ts`
|
|
45
|
+
See `/LICENSE` for details of the license.
|
|
46
|
+
|
|
47
|
+
==================
|
|
48
|
+
|
|
49
|
+
MIT (webpack):
|
|
50
|
+
The following files embed [webpack](https://github.com/webpack/webpack) MIT:
|
|
51
|
+
`/packages/taro-webpack5-prebundle/src/webpack/TaroContainerEntryModule.ts`,
|
|
52
|
+
`/packages/taro-webpack5-prebundle/src/webpack/TaroContainerPlugin.ts`,
|
|
53
|
+
`/packages/taro-webpack5-prebundle/src/webpack/TaroContainerReferencePlugin.ts`,
|
|
54
|
+
`/packages/taro-webpack5-prebundle/src/webpack/TaroModuleFederationPlugin.ts`
|
|
55
|
+
See `/LICENSE` for details of the license.
|
|
56
|
+
|
|
57
|
+
==================
|
|
58
|
+
|
|
59
|
+
MIT (sizzle):
|
|
60
|
+
The following files embed [sizzle](https://github.com/jquery/sizzle) MIT:
|
|
61
|
+
`/packages/taro-extends/src/jquery/sizzle.js`
|
|
62
|
+
See `/LICENSE.txt` for details of the license.
|
|
63
|
+
|
|
64
|
+
==================
|
|
65
|
+
|
|
66
|
+
MIT (zepto):
|
|
67
|
+
The following files embed [zepto](https://github.com/madrobby/zepto) MIT:
|
|
68
|
+
`/packages/taro-extends/src/jquery/zepto.js`,
|
|
69
|
+
`/packages/taro-extends/src/jquery/event.js`
|
|
70
|
+
See `/MIT-LICENSE` for details of the license.
|
|
71
|
+
|
|
72
|
+
==================
|
|
73
|
+
|
|
74
|
+
MIT (css-to-react-native):
|
|
75
|
+
The following files embed [css-to-react-native](https://github.com/styled-components/css-to-react-native) MIT:
|
|
76
|
+
`/packages/css-to-react-native/src/css-to-react-native/*`
|
|
77
|
+
See `/LICENSE.md` for details of the license.
|
|
78
|
+
|
|
79
|
+
==================
|
|
80
|
+
|
|
81
|
+
MIT (reactify-wc):
|
|
82
|
+
The following files embed [reactify-wc](https://github.com/BBKolton/reactify-wc) MIT:
|
|
83
|
+
`/packages/taro-components-library-react/src/component-lib/reactify-wc.ts`
|
|
84
|
+
See `/LICENSE` for details of the license.
|
|
85
|
+
|
|
86
|
+
==================
|
|
87
|
+
|
|
88
|
+
MIT (ant-design-mobile-rn):
|
|
89
|
+
The following files embed [ant-design-mobile-rn](https://github.com/ant-design/ant-design-mobile-rn) MIT:
|
|
90
|
+
`/packages/taro-components-rn/src/components/Swiper/carousel.tsx`
|
|
91
|
+
See `/LICENSE` for details of the license.
|
|
92
|
+
|
|
93
|
+
==================
|
|
94
|
+
|
|
95
|
+
MIT (react-wx-images-viewer):
|
|
96
|
+
The following files embed [react-wx-images-viewer](https://github.com/react-ld/react-wx-images-viewer) MIT:
|
|
97
|
+
`/packages/taro-h5/src/api/media/image/previewImage.ts`
|
|
98
|
+
See `/LICENSE` for details of the license.
|
|
99
|
+
|
|
100
|
+
==================
|
|
101
|
+
|
|
102
|
+
MIT (webpack-contrib/css-loader):
|
|
103
|
+
The following files embed [webpack-contrib/css-loader](https://github.com/webpack-contrib/css-loader) MIT:
|
|
104
|
+
`/packages/taro-rn-style-transformer/src/utils/index.ts`
|
|
105
|
+
See `/LICENSE` for details of the license.
|
|
106
|
+
|
|
107
|
+
==================
|
|
108
|
+
|
|
109
|
+
MIT (react-native):
|
|
110
|
+
The following files embed [react-native](https://github.com/facebook/react-native) MIT:
|
|
111
|
+
`/packages/taro-rn-style-transformer/src/transforms/StyleSheet/*`
|
|
112
|
+
See `/LICENSE` for details of the license.
|
|
113
|
+
|
|
114
|
+
==================
|
|
115
|
+
|
|
116
|
+
MIT (myrne/performance-now):
|
|
117
|
+
The following files embed [myrne/performance-now](https://github.com/myrne/performance-now) MIT:
|
|
118
|
+
`/packages/taro-runtime/src/bom/raf.ts`
|
|
119
|
+
See `/LICENSE` for details of the license.
|
|
120
|
+
|
|
121
|
+
==================
|
|
122
|
+
|
|
123
|
+
Apache (chameleon-api):
|
|
124
|
+
The following files embed [chameleon-api](https://github.com/chameleon-team/chameleon-api) Apache:
|
|
125
|
+
`/packages/taro-h5/src/api/device/clipboard.ts`
|
|
126
|
+
|
|
127
|
+
==================
|
|
128
|
+
|
|
129
|
+
MIT (uni-app):
|
|
130
|
+
The following files embed [uni-app](https://github.com/dcloudio/uni-app) MIT:
|
|
131
|
+
`/packages/taro-components-rn/src/components/Video/index.tsx`
|
|
132
|
+
See `/LICENSE` for details of the license.
|
|
133
|
+
|
|
134
|
+
==================
|
|
135
|
+
|
|
136
|
+
MIT (miniprogram-render):
|
|
137
|
+
The following files embed [miniprogram-render](https://github.com/Tencent/kbone) MIT:
|
|
138
|
+
`/packages/taro-plugin-http/src/runtime/Cookie.ts`
|
|
139
|
+
See `/LICENSE` for details of the license.
|
|
@@ -45,6 +45,11 @@ interface VirtualListProps extends Omit<StandardProps, 'children'> {
|
|
|
45
45
|
* @default View
|
|
46
46
|
*/
|
|
47
47
|
innerElementType?: ComponentType;
|
|
48
|
+
/** 通过 ScrollViewContext 优化组件滚动性能
|
|
49
|
+
* @default false
|
|
50
|
+
* @note 部分平台不支持,使用时请注意甄别
|
|
51
|
+
*/
|
|
52
|
+
enhanced?: boolean;
|
|
48
53
|
/** 顶部区域 */
|
|
49
54
|
renderTop?: ReactNode;
|
|
50
55
|
/** 底部区域 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/virtual-list/index.ts"],"sourcesContent":["import type { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components'\nimport type { Component, ComponentType, CSSProperties, ReactNode } from 'react'\n\ninterface VirtualListProps extends Omit<StandardProps, 'children'> {\n /** 列表的高度。 */\n height: string | number\n /** 列表的宽度。 */\n width: string | number\n /** 子组件 */\n item: ComponentType<{\n /** 组件 ID */\n id: string\n /** 单项的样式,样式必须传入组件的 style 中 */\n style?: CSSProperties\n /** 组件渲染的数据 */\n data: any\n /** 组件渲染数据的索引 */\n index: number\n /** 组件是否正在滚动,当 useIsScrolling 值为 true 时返回布尔值,否则返回 undefined */\n isScrolling?: boolean\n }>\n /** 列表的长度 */\n itemCount: number\n /** 渲染数据 */\n itemData: any[]\n /** 列表单项的大小,垂直滚动时为高度,水平滚动时为宽度。\n *\n * > Note:\n * > - unlimitedSize 模式下如果传入函数,只会调用一次用于设置初始值\n * > - 非 unlimitedSize 模式下如果传入函数,为避免性能问题,每个节点只会调用一次用于设置初始值\n */\n itemSize: number | ((index?: number, itemData?: any[]) => number)\n /** 解开高度列表单项大小限制,默认值使用: itemSize (请注意,初始高度与实际高度差异过大会导致隐患)。\n *\n * > Note: 通过 itemSize 设置的初始高度与子节点实际高度差异过大会导致隐患\n * @default false\n */\n unlimitedSize?: boolean\n /** 布局方式\n * @default \"absolute\"\n */\n position?: 'absolute' | 'relative'\n /** 初始滚动偏移值,水平滚动影响 scrollLeft,垂直滚动影响 scrollTop。 */\n initialScrollOffset?: number\n /** 列表内部容器组件类型。\n * @default View\n */\n innerElementType?: ComponentType\n /** 顶部区域 */\n renderTop?: ReactNode\n /** 底部区域 */\n renderBottom?: ReactNode\n /** 滚动方向。vertical 为垂直滚动,horizontal 为平行滚动。\n * @default \"vertical\"\n */\n layout?: 'vertical' | 'horizontal'\n /** 列表滚动时调用函数 */\n onScroll?: (event: VirtualListProps.IVirtualListEvent<VirtualListProps.IVirtualListEventDetail>) => void\n /** 调用平台原生的滚动监听函数。 */\n onScrollNative?: BaseEventOrigFunction<ScrollViewProps.onScrollDetail>\n /** 在可视区域之外渲染的列表单项数量,值设置得越高,快速滚动时出现白屏的概率就越小,相应地,每次滚动的性能会变得越差。 */\n overscanCount?: number\n /** 上下滚动预占位节点 */\n placeholderCount?: number\n /** 是否注入 isScrolling 属性到 item 组件。这个参数一般用于实现滚动骨架屏(或其它 placeholder) 时比较有用。 */\n useIsScrolling?: boolean\n style?: CSSProperties\n}\n\ndeclare namespace VirtualListProps {\n interface IVirtualListEventDetail extends ScrollViewProps.onScrollDetail {\n scrollLeft: number\n scrollTop: number\n scrollHeight: number\n scrollWidth: number\n }\n\n interface IVirtualListEvent<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 /** 当前只有 React 支持 */\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 VirtualList from `@tarojs/components/virtual-list`\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, style, data }) => {\n * return (\n * <View id={id} className={index % 2 ? 'ListItemOdd' : 'ListItemEven'} style={style}>\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 * <VirtualList\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 VirtualList from '@tarojs/components/virtual-list'\n *\n * Vue.use(VirtualList)\n * ```\n * ```js\n * <! –– row.vue 单项组件 ––>\n * <template>\n * <view\n * :class=\"index % 2 ? 'ListItemOdd' : 'ListItemEven'\"\n * :style=\"css\"\n * >\n * Row {{ index }} : {{ data[index] }}\n * </view>\n * </template>\n *\n * <script>\n * export default {\n * props: ['index', 'data', 'css']\n * }\n * </script>\n * ```\n * ```js\n * <! –– page.vue 页面组件 ––>\n * <template>\n * <virtual-list\n * wclass=\"List\"\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-list\n */\ndeclare class VirtualListComponent extends Component<VirtualListProps> {}\n\nconst VirtualList: typeof VirtualListComponent = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')\n ? require('./vue').default\n : require('./react').default\n\nexport { VirtualList, VirtualListProps }\nexport default VirtualList\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/virtual-list/index.ts"],"sourcesContent":["import type { BaseEventOrig, BaseEventOrigFunction, ScrollViewProps, StandardProps } from '@tarojs/components'\nimport type { Component, ComponentType, CSSProperties, ReactNode } from 'react'\n\ninterface VirtualListProps extends Omit<StandardProps, 'children'> {\n /** 列表的高度。 */\n height: string | number\n /** 列表的宽度。 */\n width: string | number\n /** 子组件 */\n item: ComponentType<{\n /** 组件 ID */\n id: string\n /** 单项的样式,样式必须传入组件的 style 中 */\n style?: CSSProperties\n /** 组件渲染的数据 */\n data: any\n /** 组件渲染数据的索引 */\n index: number\n /** 组件是否正在滚动,当 useIsScrolling 值为 true 时返回布尔值,否则返回 undefined */\n isScrolling?: boolean\n }>\n /** 列表的长度 */\n itemCount: number\n /** 渲染数据 */\n itemData: any[]\n /** 列表单项的大小,垂直滚动时为高度,水平滚动时为宽度。\n *\n * > Note:\n * > - unlimitedSize 模式下如果传入函数,只会调用一次用于设置初始值\n * > - 非 unlimitedSize 模式下如果传入函数,为避免性能问题,每个节点只会调用一次用于设置初始值\n */\n itemSize: number | ((index?: number, itemData?: any[]) => number)\n /** 解开高度列表单项大小限制,默认值使用: itemSize (请注意,初始高度与实际高度差异过大会导致隐患)。\n *\n * > Note: 通过 itemSize 设置的初始高度与子节点实际高度差异过大会导致隐患\n * @default false\n */\n unlimitedSize?: boolean\n /** 布局方式\n * @default \"absolute\"\n */\n position?: 'absolute' | 'relative'\n /** 初始滚动偏移值,水平滚动影响 scrollLeft,垂直滚动影响 scrollTop。 */\n initialScrollOffset?: number\n /** 列表内部容器组件类型。\n * @default View\n */\n innerElementType?: ComponentType\n /** 通过 ScrollViewContext 优化组件滚动性能\n * @default false\n * @note 部分平台不支持,使用时请注意甄别\n */\n enhanced?: boolean\n /** 顶部区域 */\n renderTop?: ReactNode\n /** 底部区域 */\n renderBottom?: ReactNode\n /** 滚动方向。vertical 为垂直滚动,horizontal 为平行滚动。\n * @default \"vertical\"\n */\n layout?: 'vertical' | 'horizontal'\n /** 列表滚动时调用函数 */\n onScroll?: (event: VirtualListProps.IVirtualListEvent<VirtualListProps.IVirtualListEventDetail>) => void\n /** 调用平台原生的滚动监听函数。 */\n onScrollNative?: BaseEventOrigFunction<ScrollViewProps.onScrollDetail>\n /** 在可视区域之外渲染的列表单项数量,值设置得越高,快速滚动时出现白屏的概率就越小,相应地,每次滚动的性能会变得越差。 */\n overscanCount?: number\n /** 上下滚动预占位节点 */\n placeholderCount?: number\n /** 是否注入 isScrolling 属性到 item 组件。这个参数一般用于实现滚动骨架屏(或其它 placeholder) 时比较有用。 */\n useIsScrolling?: boolean\n style?: CSSProperties\n}\n\ndeclare namespace VirtualListProps {\n interface IVirtualListEventDetail extends ScrollViewProps.onScrollDetail {\n scrollLeft: number\n scrollTop: number\n scrollHeight: number\n scrollWidth: number\n }\n\n interface IVirtualListEvent<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 /** 当前只有 React 支持 */\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 VirtualList from `@tarojs/components/virtual-list`\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, style, data }) => {\n * return (\n * <View id={id} className={index % 2 ? 'ListItemOdd' : 'ListItemEven'} style={style}>\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 * <VirtualList\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 VirtualList from '@tarojs/components/virtual-list'\n *\n * Vue.use(VirtualList)\n * ```\n * ```js\n * <! –– row.vue 单项组件 ––>\n * <template>\n * <view\n * :class=\"index % 2 ? 'ListItemOdd' : 'ListItemEven'\"\n * :style=\"css\"\n * >\n * Row {{ index }} : {{ data[index] }}\n * </view>\n * </template>\n *\n * <script>\n * export default {\n * props: ['index', 'data', 'css']\n * }\n * </script>\n * ```\n * ```js\n * <! –– page.vue 页面组件 ––>\n * <template>\n * <virtual-list\n * wclass=\"List\"\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-list\n */\ndeclare class VirtualListComponent extends Component<VirtualListProps> {}\n\nconst VirtualList: typeof VirtualListComponent = (process.env.FRAMEWORK === 'vue' || process.env.FRAMEWORK === 'vue3')\n ? require('./vue').default\n : require('./react').default\n\nexport { VirtualList, VirtualListProps }\nexport default VirtualList\n"],"names":[],"mappings":"AAmMA,MAAM,WAAW,GAAgC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;AACnH,MAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO;AAC1B,MAAE,OAAO,CAAC,SAAS,CAAC,CAAC;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { VirtualListProps } from "../index";
|
|
3
|
-
declare const VirtualList: React.ForwardRefExoticComponent<Pick<VirtualListProps, "id" | "className" | "style" | "key" | "hidden" | "animation" | "dangerouslySetInnerHTML" | "onTouchStart" | "onTouchMove" | "onTouchCancel" | "onTouchEnd" | "onClick" | "onLongPress" | "onLongClick" | "onTransitionEnd" | "onAnimationStart" | "onAnimationIteration" | "onAnimationEnd" | "onTouchForceChange" | "height" | "width" | "item" | "itemCount" | "itemData" | "itemSize" | "unlimitedSize" | "position" | "initialScrollOffset" | "innerElementType" | "renderTop" | "renderBottom" | "layout" | "onScroll" | "onScrollNative" | "overscanCount" | "placeholderCount" | "useIsScrolling"> & React.RefAttributes<unknown>>;
|
|
3
|
+
declare const VirtualList: React.ForwardRefExoticComponent<Pick<VirtualListProps, "id" | "className" | "style" | "key" | "hidden" | "animation" | "dangerouslySetInnerHTML" | "onTouchStart" | "onTouchMove" | "onTouchCancel" | "onTouchEnd" | "onClick" | "onLongPress" | "onLongClick" | "onTransitionEnd" | "onAnimationStart" | "onAnimationIteration" | "onAnimationEnd" | "onTouchForceChange" | "height" | "width" | "item" | "itemCount" | "itemData" | "itemSize" | "unlimitedSize" | "position" | "initialScrollOffset" | "innerElementType" | "enhanced" | "renderTop" | "renderBottom" | "layout" | "onScroll" | "onScrollNative" | "overscanCount" | "placeholderCount" | "useIsScrolling"> & React.RefAttributes<unknown>>;
|
|
4
4
|
export { VirtualList as default };
|
|
@@ -34,7 +34,7 @@ declare class List extends React.PureComponent<IProps, IState> {
|
|
|
34
34
|
_outerRefSetter: (ref: any) => void;
|
|
35
35
|
_resetIsScrollingDebounced: () => void;
|
|
36
36
|
_resetIsScrolling: () => void;
|
|
37
|
-
scrollTo(scrollOffset
|
|
37
|
+
scrollTo(scrollOffset?: number): Promise<any>;
|
|
38
38
|
scrollToItem(index: number, align?: string): void;
|
|
39
39
|
componentDidMount(): void;
|
|
40
40
|
componentDidUpdate(prevProps: IProps, prevState: IState): void;
|
|
@@ -7,7 +7,7 @@ import { cancelTimeout, requestTimeout } from '../../../utils/timer.js';
|
|
|
7
7
|
import { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants.js';
|
|
8
8
|
import { getRTLOffsetType } from '../dom-helpers.js';
|
|
9
9
|
import Preset from '../preset.js';
|
|
10
|
-
import { getRectSize, defaultItemKey } from '../utils.js';
|
|
10
|
+
import { getRectSize, getScrollViewContextNode, defaultItemKey } from '../utils.js';
|
|
11
11
|
import { validateListProps } from './validate.js';
|
|
12
12
|
|
|
13
13
|
class List extends React.PureComponent {
|
|
@@ -210,8 +210,25 @@ class List extends React.PureComponent {
|
|
|
210
210
|
_getRangeToRender() {
|
|
211
211
|
return this.itemList.getRangeToRender(this.state.scrollDirection, this.state.scrollOffset, this.state.isScrolling);
|
|
212
212
|
}
|
|
213
|
-
scrollTo(scrollOffset) {
|
|
213
|
+
scrollTo(scrollOffset = 0) {
|
|
214
|
+
const { enhanced } = this.props;
|
|
214
215
|
scrollOffset = Math.max(0, scrollOffset);
|
|
216
|
+
if (this.state.scrollOffset === scrollOffset)
|
|
217
|
+
return;
|
|
218
|
+
if (enhanced) {
|
|
219
|
+
const isHorizontal = this.preset.isHorizontal;
|
|
220
|
+
const option = {
|
|
221
|
+
animated: true,
|
|
222
|
+
duration: 500
|
|
223
|
+
};
|
|
224
|
+
if (isHorizontal) {
|
|
225
|
+
option.left = scrollOffset;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
option.top = scrollOffset;
|
|
229
|
+
}
|
|
230
|
+
return getScrollViewContextNode(`#${this.state.id}`).then((node) => node.scrollTo(option));
|
|
231
|
+
}
|
|
215
232
|
this.setState((prevState) => {
|
|
216
233
|
if (prevState.scrollOffset === scrollOffset) {
|
|
217
234
|
return null;
|
|
@@ -280,7 +297,7 @@ class List extends React.PureComponent {
|
|
|
280
297
|
}
|
|
281
298
|
}
|
|
282
299
|
render() {
|
|
283
|
-
const _a = omit(this.props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position']), { className, direction, height, innerRef, item, itemCount, itemData, itemKey = defaultItemKey, layout, style, useIsScrolling, width, renderTop, renderBottom } = _a, rest = __rest(_a, ["className", "direction", "height", "innerRef", "item", "itemCount", "itemData", "itemKey", "layout", "style", "useIsScrolling", "width", "renderTop", "renderBottom"]);
|
|
300
|
+
const _a = omit(this.props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position']), { className, direction, height, innerRef, item, itemCount, itemData, itemKey = defaultItemKey, layout, style, useIsScrolling, width, enhanced = false, renderTop, renderBottom } = _a, rest = __rest(_a, ["className", "direction", "height", "innerRef", "item", "itemCount", "itemData", "itemKey", "layout", "style", "useIsScrolling", "width", "enhanced", "renderTop", "renderBottom"]);
|
|
284
301
|
const { id, isScrolling, scrollOffset, scrollUpdateWasRequested } = this.state;
|
|
285
302
|
const isHorizontal = this.preset.isHorizontal;
|
|
286
303
|
const placeholderCount = this.preset.placeholderCount;
|
|
@@ -307,7 +324,8 @@ class List extends React.PureComponent {
|
|
|
307
324
|
isScrolling: useIsScrolling ? isScrolling : undefined
|
|
308
325
|
})));
|
|
309
326
|
}
|
|
310
|
-
|
|
327
|
+
let restCount = itemCount - stopIndex;
|
|
328
|
+
restCount = restCount > 0 ? restCount : 0;
|
|
311
329
|
const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount;
|
|
312
330
|
items.push(new Array(postPlaceholder).fill(-1).map((_, index) => React.createElement(this.preset.itemTagName, {
|
|
313
331
|
key: itemKey(1 + index + stopIndex, itemData),
|
|
@@ -319,12 +337,15 @@ class List extends React.PureComponent {
|
|
|
319
337
|
const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize());
|
|
320
338
|
const outerElementProps = Object.assign(Object.assign({}, rest), { id,
|
|
321
339
|
className,
|
|
322
|
-
onScroll, ref: this._outerRefSetter, layout,
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
340
|
+
onScroll, ref: this._outerRefSetter, layout,
|
|
341
|
+
enhanced, style: Object.assign({ position: 'relative', height: convertNumber2PX(height), width: convertNumber2PX(width), overflow: 'auto', WebkitOverflowScrolling: 'touch', willChange: 'transform', direction }, style) });
|
|
342
|
+
if (!enhanced) {
|
|
343
|
+
if (isHorizontal) {
|
|
344
|
+
outerElementProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
outerElementProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop;
|
|
348
|
+
}
|
|
328
349
|
}
|
|
329
350
|
if (this.preset.isRelative) {
|
|
330
351
|
const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex));
|
|
@@ -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 } 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 // FIXME Warning: Cannot update during an existing state transition (such as within `render`).\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 // FIXME 优化事件信息\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,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth\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,\n scrollHeight,\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: number) {\n scrollOffset = Math.max(0, scrollOffset)\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 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 const restCount = itemCount - stopIndex\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 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 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 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;AAiBnE,IAAA,WAAA,CAAa,KAAa,EAAA;QACxB,KAAK,CAAC,KAAK,CAAC,CAAA;;QAuBd,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;;AAGH,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,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,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,EACZ,YAAY,EACZ,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;AAnPC,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;AA5BD,IAAA,OAAO,wBAAwB,CAAE,SAAiB,EAAE,SAAiB,EAAA;AACnE,QAAA,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;KAC/C;AA0DD,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;AA+HM,IAAA,QAAQ,CAAE,YAAoB,EAAA;QACnC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;AACxC,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,EAgBF,GAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,EAhBtI,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,SAAS,EACT,YAAY,EAE8H,GAAA,EAAA,EADvI,IAAI,GAAA,MAAA,CAAA,EAAA,EAfH,CAgBL,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,CAAA,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,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AACvC,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;YACT,QAAQ,EACR,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,MAAM,EACN,KAAK,kBACH,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,EAAA,EACN,KAAK,CAAA,EAAA,CAEX,CAAA;AACD,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,iBAAiB,CAAC,UAAU,GAAG,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAA;AACtG,SAAA;AAAM,aAAA;AACL,YAAA,iBAAiB,CAAC,SAAS,GAAG,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;AACpG,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;;AA7dM,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;AAydH;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 { 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 // FIXME Warning: Cannot update during an existing state transition (such as within `render`).\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 // FIXME 优化事件信息\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,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth\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,\n scrollHeight,\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;AAiBnE,IAAA,WAAA,CAAa,KAAa,EAAA;QACxB,KAAK,CAAC,KAAK,CAAC,CAAA;;QAuBd,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;;AAGH,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,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,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,EACZ,YAAY,EACZ,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;AAnPC,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;AA5BD,IAAA,OAAO,wBAAwB,CAAE,SAAiB,EAAE,SAAiB,EAAA;AACnE,QAAA,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;KAC/C;AA0DD,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;;AApfM,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;AAgfH;AACA;AACA;AACA;AACA;;;;"}
|
|
@@ -9,4 +9,5 @@ interface IRrl {
|
|
|
9
9
|
}
|
|
10
10
|
declare function isRtlFunc({ direction }: IRrl): boolean;
|
|
11
11
|
declare function getRectSize(id: string, success?: TFunc, fail?: TFunc, retryMs?: number): void;
|
|
12
|
-
|
|
12
|
+
declare function getScrollViewContextNode(id: string): Promise<unknown>;
|
|
13
|
+
export { defaultItemKey, isHorizontalFunc, isRtlFunc, getRectSize, getScrollViewContextNode };
|
|
@@ -27,6 +27,10 @@ function getRectSize(id, success, fail, retryMs = 500) {
|
|
|
27
27
|
}, retryMs);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
async function getScrollViewContextNode(id) {
|
|
31
|
+
const query = Taro.createSelectorQuery();
|
|
32
|
+
return new Promise((resolve) => query.select(id).node(({ node }) => resolve(node)).exec());
|
|
33
|
+
}
|
|
30
34
|
|
|
31
|
-
export { defaultItemKey, getRectSize, isHorizontalFunc, isRtlFunc };
|
|
35
|
+
export { defaultItemKey, getRectSize, getScrollViewContextNode, isHorizontalFunc, isRtlFunc };
|
|
32
36
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/components/virtual-list/utils.ts"],"sourcesContent":["import Taro 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 = Taro.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"],"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,IAAI,CAAC,mBAAmB,EAAE,CAAA;IACxC,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;;;;"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/components/virtual-list/utils.ts"],"sourcesContent":["import Taro 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 = Taro.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 = Taro.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,IAAI,CAAC,mBAAmB,EAAE,CAAA;IACxC,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,IAAI,CAAC,mBAAmB,EAAE,CAAA;AACxC,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;;;;"}
|
|
@@ -97,7 +97,7 @@ declare const _default: {
|
|
|
97
97
|
};
|
|
98
98
|
methods: {
|
|
99
99
|
refresh(): void;
|
|
100
|
-
scrollTo(scrollOffset: any):
|
|
100
|
+
scrollTo(scrollOffset: any): Promise<any>;
|
|
101
101
|
scrollToItem(index: any, align?: string): void;
|
|
102
102
|
_callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, visibleStartIndex: any, visibleStopIndex: any) => any>;
|
|
103
103
|
_callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
|
|
@@ -5,7 +5,7 @@ import { cancelTimeout, requestTimeout } from '../../../utils/timer.js';
|
|
|
5
5
|
import { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants.js';
|
|
6
6
|
import { getRTLOffsetType } from '../dom-helpers.js';
|
|
7
7
|
import Preset from '../preset.js';
|
|
8
|
-
import { getRectSize, defaultItemKey } from '../utils.js';
|
|
8
|
+
import { getScrollViewContextNode, getRectSize, defaultItemKey } from '../utils.js';
|
|
9
9
|
import render from './render.js';
|
|
10
10
|
|
|
11
11
|
var List = {
|
|
@@ -114,9 +114,23 @@ var List = {
|
|
|
114
114
|
this.refreshCount = this.refreshCount + 1;
|
|
115
115
|
},
|
|
116
116
|
scrollTo(scrollOffset) {
|
|
117
|
+
const { enhanced } = this.$props;
|
|
117
118
|
scrollOffset = Math.max(0, scrollOffset);
|
|
118
|
-
if (this.scrollOffset === scrollOffset)
|
|
119
|
+
if (this.scrollOffset === scrollOffset)
|
|
119
120
|
return;
|
|
121
|
+
if (enhanced) {
|
|
122
|
+
const isHorizontal = this.preset.isHorizontal;
|
|
123
|
+
const option = {
|
|
124
|
+
animated: true,
|
|
125
|
+
duration: 500
|
|
126
|
+
};
|
|
127
|
+
if (isHorizontal) {
|
|
128
|
+
option.left = scrollOffset;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
option.top = scrollOffset;
|
|
132
|
+
}
|
|
133
|
+
return getScrollViewContextNode(`#${this.$data.id}`).then((node) => node.scrollTo(option));
|
|
120
134
|
}
|
|
121
135
|
this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward';
|
|
122
136
|
this.scrollOffset = scrollOffset;
|
|
@@ -333,7 +347,7 @@ var List = {
|
|
|
333
347
|
},
|
|
334
348
|
render() {
|
|
335
349
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
336
|
-
const { item, direction, height, innerRef, itemCount, itemData, itemKey = defaultItemKey, layout, useIsScrolling, width } = omit(this.$props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position']);
|
|
350
|
+
const { item, direction, height, innerRef, itemCount, itemData, itemKey = defaultItemKey, layout, useIsScrolling, width, enhanced = false } = omit(this.$props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position']);
|
|
337
351
|
const { id, isScrolling, scrollOffset, scrollUpdateWasRequested } = this.$data;
|
|
338
352
|
const isHorizontal = this.preset.isHorizontal;
|
|
339
353
|
const placeholderCount = this.preset.placeholderCount;
|
|
@@ -365,7 +379,8 @@ var List = {
|
|
|
365
379
|
})
|
|
366
380
|
]));
|
|
367
381
|
}
|
|
368
|
-
|
|
382
|
+
let restCount = itemCount - stopIndex;
|
|
383
|
+
restCount = restCount > 0 ? restCount : 0;
|
|
369
384
|
const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount;
|
|
370
385
|
items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(this.preset.itemTagName, {
|
|
371
386
|
key: itemKey(1 + index + stopIndex, itemData),
|
|
@@ -379,6 +394,7 @@ var List = {
|
|
|
379
394
|
id,
|
|
380
395
|
ref: this._outerRefSetter,
|
|
381
396
|
layout,
|
|
397
|
+
enhanced,
|
|
382
398
|
style: {
|
|
383
399
|
position: 'relative',
|
|
384
400
|
height: convertNumber2PX(height),
|
|
@@ -396,11 +412,13 @@ var List = {
|
|
|
396
412
|
scroll: onScroll
|
|
397
413
|
}
|
|
398
414
|
};
|
|
399
|
-
if (
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
415
|
+
if (!enhanced) {
|
|
416
|
+
if (isHorizontal) {
|
|
417
|
+
outerElementProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft;
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
outerElementProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop;
|
|
421
|
+
}
|
|
404
422
|
}
|
|
405
423
|
if (this.preset.isRelative) {
|
|
406
424
|
const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/vue/list.ts"],"sourcesContent":["import memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX } from '../../../utils/convert'\nimport { omit } from '../../../utils/lodash'\nimport { cancelTimeout, requestTimeout } from '../../../utils/timer'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport { getRTLOffsetType } from '../dom-helpers'\nimport Preset from '../preset'\nimport { defaultItemKey, getRectSize } from '../utils'\nimport render from './render'\n\nexport default {\n props: {\n height: {\n type: [String, Number],\n required: true\n },\n width: {\n type: [String, Number],\n required: true\n },\n itemCount: {\n type: Number,\n required: true\n },\n itemData: {\n type: Array,\n required: true\n },\n itemSize: {\n type: [Number, Function],\n required: true\n },\n unlimitedSize: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: 'absolute'\n },\n initialScrollOffset: {\n type: Number,\n default: 0\n },\n innerElementType: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-view-core' : 'view'\n },\n direction: {\n type: String,\n default: 'ltr'\n },\n layout: {\n type: String,\n default: 'vertical'\n },\n overscanCount: {\n type: Number,\n default: 1\n },\n placeholderCount: {\n type: Number\n },\n useIsScrolling: {\n type: Boolean,\n default: false\n },\n item: {\n required: true\n },\n itemKey: String,\n itemTagName: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-view-core' : 'view'\n },\n innerTagName: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-view-core' : 'view'\n },\n outerTagName: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-scroll-view-core' : 'scroll-view'\n },\n itemElementType: String,\n outerElementType: String,\n innerRef: String,\n outerRef: String,\n onItemsRendered: Function,\n onScrollNative: Function,\n shouldResetStyleCacheOnItemSizeChange: {\n type: Boolean,\n default: true\n },\n },\n data () {\n const preset = new Preset(this.$props, this.refresh)\n return {\n itemList: preset.itemList,\n preset,\n id: this.$props.id || preset.id,\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.$props.initialScrollOffset === 'number'\n ? this.$props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n resetIsScrollingTimeoutId: null,\n refreshCount: 0\n }\n },\n methods: {\n refresh () {\n this.refreshCount = this.refreshCount + 1\n },\n scrollTo (scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset)\n\n if (this.scrollOffset === scrollOffset) {\n return\n }\n\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = true\n\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n scrollToItem (index, align = 'auto') {\n const { itemCount } = this.$props\n const { scrollOffset } = this.$data\n\n index = Math.max(0, Math.min(index, itemCount - 1))\n\n this.scrollTo(\n this.itemList.getOffsetForIndexAndAlignment(\n this.$props,\n index,\n align,\n scrollOffset\n )\n )\n },\n\n _callOnItemsRendered: memoizeOne(\n function (\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n ) {\n return this.$props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n })\n }\n ),\n\n _callOnScroll: memoizeOne(\n function (\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n ) {\n this.$emit('scroll', {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n })\n }\n ),\n\n _callPropsCallbacks () {\n if (typeof this.$props.onItemsRendered === 'function') {\n const { itemCount } = this.$props\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n ] = this._getRangeToRender()\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n )\n }\n }\n\n this._callOnScroll(\n this.scrollDirection,\n this.scrollOffset,\n this.scrollUpdateWasRequested,\n this.preset.field\n )\n\n setTimeout(() => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n const isHorizontal = this.preset.isHorizontal\n for (let index = startIndex; index <= stopIndex; index++) {\n this._getSizeUploadSync(index, isHorizontal)\n }\n }, 0)\n },\n\n _getSizeUploadSync (index: number, isHorizontal: boolean) {\n const ID = `#${this.$data.id}-${index}`\n\n return new Promise((resolve) => {\n const success = ({ width, height }) => {\n const size = isHorizontal ? width : height\n if (!this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n }\n const fail = () => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n if (index >= startIndex && index <= stopIndex) {\n setTimeout(() => {\n getRectSize(ID, success, fail)\n }, 100)\n }\n }\n getRectSize(ID, success, fail)\n })\n },\n\n _getRangeToRender () {\n return this.itemList.getRangeToRender(\n this.$data.scrollDirection,\n this.$data.scrollOffset,\n this.$data.isScrolling\n )\n },\n\n _onScrollHorizontal (event) {\n const {\n clientWidth,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth\n } = event.currentTarget\n this.preset.field = {\n scrollHeight: scrollHeight,\n scrollWidth: this.itemList.getOffsetSize(),\n scrollTop: scrollTop,\n scrollLeft: scrollLeft,\n clientHeight: scrollHeight,\n clientWidth: scrollWidth\n }\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollLeft - scrollLeft\n if (this.scrollOffset === scrollLeft || this.preset.isShaking(diffOffset)) {\n return\n }\n\n let scrollOffset = scrollLeft\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft\n break\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft\n break\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n )\n this.preset.field = {\n scrollWidth: scrollOffset,\n }\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollLeft ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _onScrollVertical (event) {\n const {\n clientHeight,\n scrollHeight,\n scrollWidth,\n scrollTop,\n scrollLeft\n } = event.currentTarget\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollTop - scrollTop\n if (this.scrollOffset === scrollTop || this.preset.isShaking(diffOffset)) {\n return\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n )\n this.preset.field = {\n scrollHeight: this.itemList.getOffsetSize(),\n scrollWidth: scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft: scrollLeft,\n clientHeight: clientHeight,\n clientWidth: scrollWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _outerRefSetter (ref) {\n const {\n outerRef\n } = this.$props\n this._outerRef = ref\n\n if (typeof outerRef === 'function') {\n outerRef(ref)\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('value')) {\n outerRef.value = ref\n }\n },\n\n _resetIsScrollingDebounced () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n\n this.resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n )\n },\n\n _resetIsScrolling () {\n this.resetIsScrollingTimeoutId = null\n this.isScrolling = false\n this.$nextTick(() => {\n this.preset.getItemStyleCache(-1, null)\n })\n }\n },\n mounted () {\n const { initialScrollOffset } = this.$props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = this._outerRef\n if (this.preset.isHorizontal) {\n outerRef.scrollLeft = initialScrollOffset\n } else {\n outerRef.scrollTop = initialScrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n updated () {\n this.preset.update(this.$props)\n\n const { scrollOffset, scrollUpdateWasRequested } = this.$data\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = this._outerRef\n\n if (this.preset.isHorizontal) {\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset\n break\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset\n break\n default: {\n const { clientWidth, scrollWidth } = outerRef\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset\n break\n }\n }\n } else {\n outerRef.scrollLeft = scrollOffset\n }\n } else {\n outerRef.scrollTop = scrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n\n beforeDestroy () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n },\n\n render () {\n const {\n item,\n direction,\n height,\n innerRef,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n useIsScrolling,\n width\n } = omit(this.$props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position'])\n const {\n id,\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.$data\n\n const isHorizontal = this.preset.isHorizontal\n const placeholderCount = this.preset.placeholderCount\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n\n const items = []\n if (itemCount > 0) {\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemTagName, {\n key: itemKey(index + startIndex - prevPlaceholder, itemData),\n style: { display: 'none' }\n }\n )))\n for (let index = startIndex; index <= stopIndex; index++) {\n const style = this.preset.getItemStyle(index)\n items.push(\n render(this.preset.itemTagName, {\n key: itemKey(index, itemData),\n style\n }, [\n render(item, {\n id: `${id}-${index}`,\n props: {\n id: `${id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }\n })\n ])\n )\n }\n const restCount = itemCount - stopIndex\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemTagName, {\n key: itemKey(1 + index + stopIndex, itemData),\n style: { display: 'none' }\n }\n )))\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize())\n const outerElementProps: any = {\n id,\n ref: this._outerRefSetter,\n layout,\n style: {\n position: 'relative',\n height: convertNumber2PX(height),\n width: convertNumber2PX(width),\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction\n },\n attrs: {\n scrollY: layout === 'vertical',\n scrollX: layout === 'horizontal'\n },\n on: {\n scroll: onScroll\n }\n }\n 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 if (this.preset.isRelative) {\n const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex))\n return render(this.preset.outerTagName, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.itemTagName, {\n key: `${id}-pre`,\n id: `${id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n }),\n render(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n } else {\n return render(this.preset.outerTagName, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n width: !isHorizontal ? '100%' : estimatedTotalSize\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.js","sources":["../../../../src/components/virtual-list/vue/list.ts"],"sourcesContent":["import memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX } from '../../../utils/convert'\nimport { omit } from '../../../utils/lodash'\nimport { cancelTimeout, requestTimeout } from '../../../utils/timer'\nimport { IS_SCROLLING_DEBOUNCE_INTERVAL } from '../constants'\nimport { getRTLOffsetType } from '../dom-helpers'\nimport Preset from '../preset'\nimport { defaultItemKey, getRectSize, getScrollViewContextNode } from '../utils'\nimport render from './render'\n\nexport default {\n props: {\n height: {\n type: [String, Number],\n required: true\n },\n width: {\n type: [String, Number],\n required: true\n },\n itemCount: {\n type: Number,\n required: true\n },\n itemData: {\n type: Array,\n required: true\n },\n itemSize: {\n type: [Number, Function],\n required: true\n },\n unlimitedSize: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: 'absolute'\n },\n initialScrollOffset: {\n type: Number,\n default: 0\n },\n innerElementType: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-view-core' : 'view'\n },\n direction: {\n type: String,\n default: 'ltr'\n },\n layout: {\n type: String,\n default: 'vertical'\n },\n overscanCount: {\n type: Number,\n default: 1\n },\n placeholderCount: {\n type: Number\n },\n useIsScrolling: {\n type: Boolean,\n default: false\n },\n item: {\n required: true\n },\n itemKey: String,\n itemTagName: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-view-core' : 'view'\n },\n innerTagName: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-view-core' : 'view'\n },\n outerTagName: {\n type: String,\n default: process.env.TARO_ENV === 'h5' ? 'taro-scroll-view-core' : 'scroll-view'\n },\n itemElementType: String,\n outerElementType: String,\n innerRef: String,\n outerRef: String,\n onItemsRendered: Function,\n onScrollNative: Function,\n shouldResetStyleCacheOnItemSizeChange: {\n type: Boolean,\n default: true\n },\n },\n data () {\n const preset = new Preset(this.$props, this.refresh)\n return {\n itemList: preset.itemList,\n preset,\n id: this.$props.id || preset.id,\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.$props.initialScrollOffset === 'number'\n ? this.$props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n resetIsScrollingTimeoutId: null,\n refreshCount: 0\n }\n },\n methods: {\n refresh () {\n this.refreshCount = this.refreshCount + 1\n },\n scrollTo (scrollOffset) {\n const { enhanced } = this.$props\n scrollOffset = Math.max(0, scrollOffset)\n if (this.scrollOffset === scrollOffset) return\n\n if (enhanced) {\n const isHorizontal = this.preset.isHorizontal\n const option: any = {\n animated: true,\n duration: 500\n }\n if (isHorizontal) {\n option.left\t= scrollOffset\n } else {\n option.top = scrollOffset\n }\n return getScrollViewContextNode(`#${this.$data.id}`).then((node: any) => node.scrollTo(option))\n }\n\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = true\n\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n scrollToItem (index, align = 'auto') {\n const { itemCount } = this.$props\n const { scrollOffset } = this.$data\n\n index = Math.max(0, Math.min(index, itemCount - 1))\n\n this.scrollTo(\n this.itemList.getOffsetForIndexAndAlignment(\n this.$props,\n index,\n align,\n scrollOffset\n )\n )\n },\n\n _callOnItemsRendered: memoizeOne(\n function (\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n ) {\n return this.$props.onItemsRendered({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n })\n }\n ),\n\n _callOnScroll: memoizeOne(\n function (\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n ) {\n this.$emit('scroll', {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n detail\n })\n }\n ),\n\n _callPropsCallbacks () {\n if (typeof this.$props.onItemsRendered === 'function') {\n const { itemCount } = this.$props\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n ] = this._getRangeToRender()\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n )\n }\n }\n\n this._callOnScroll(\n this.scrollDirection,\n this.scrollOffset,\n this.scrollUpdateWasRequested,\n this.preset.field\n )\n\n setTimeout(() => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n const isHorizontal = this.preset.isHorizontal\n for (let index = startIndex; index <= stopIndex; index++) {\n this._getSizeUploadSync(index, isHorizontal)\n }\n }, 0)\n },\n\n _getSizeUploadSync (index: number, isHorizontal: boolean) {\n const ID = `#${this.$data.id}-${index}`\n\n return new Promise((resolve) => {\n const success = ({ width, height }) => {\n const size = isHorizontal ? width : height\n if (!this.itemList.compareSize(index, size)) {\n this.itemList.setSize(index, size)\n resolve(this.itemList.getSize(index))\n }\n }\n const fail = () => {\n const [startIndex, stopIndex] = this._getRangeToRender()\n if (index >= startIndex && index <= stopIndex) {\n setTimeout(() => {\n getRectSize(ID, success, fail)\n }, 100)\n }\n }\n getRectSize(ID, success, fail)\n })\n },\n\n _getRangeToRender () {\n return this.itemList.getRangeToRender(\n this.$data.scrollDirection,\n this.$data.scrollOffset,\n this.$data.isScrolling\n )\n },\n\n _onScrollHorizontal (event) {\n const {\n clientWidth,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth\n } = event.currentTarget\n this.preset.field = {\n scrollHeight: scrollHeight,\n scrollWidth: this.itemList.getOffsetSize(),\n scrollTop: scrollTop,\n scrollLeft: scrollLeft,\n clientHeight: scrollHeight,\n clientWidth: scrollWidth\n }\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollLeft - scrollLeft\n if (this.scrollOffset === scrollLeft || this.preset.isShaking(diffOffset)) {\n return\n }\n\n let scrollOffset = scrollLeft\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft\n break\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft\n break\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n )\n this.preset.field = {\n scrollWidth: scrollOffset,\n }\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollLeft ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _onScrollVertical (event) {\n const {\n clientHeight,\n scrollHeight,\n scrollWidth,\n scrollTop,\n scrollLeft\n } = event.currentTarget\n if (this.$props.onScrollNative) {\n this.$props.onScrollNative(event)\n }\n const diffOffset = this.preset.field.scrollTop - scrollTop\n if (this.scrollOffset === scrollTop || this.preset.isShaking(diffOffset)) {\n return\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n )\n this.preset.field = {\n scrollHeight: this.itemList.getOffsetSize(),\n scrollWidth: scrollWidth,\n scrollTop: scrollOffset,\n scrollLeft: scrollLeft,\n clientHeight: clientHeight,\n clientWidth: scrollWidth,\n diffOffset: this.preset.field.scrollTop - scrollOffset,\n }\n\n this.isScrolling = true\n this.scrollDirection = this.scrollOffset < scrollOffset ? 'forward' : 'backward'\n this.scrollOffset = scrollOffset\n this.scrollUpdateWasRequested = false\n this.$nextTick(this._resetIsScrollingDebounced)\n },\n\n _outerRefSetter (ref) {\n const {\n outerRef\n } = this.$props\n this._outerRef = ref\n\n if (typeof outerRef === 'function') {\n outerRef(ref)\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('value')) {\n outerRef.value = ref\n }\n },\n\n _resetIsScrollingDebounced () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n\n this.resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n )\n },\n\n _resetIsScrolling () {\n this.resetIsScrollingTimeoutId = null\n this.isScrolling = false\n this.$nextTick(() => {\n this.preset.getItemStyleCache(-1, null)\n })\n }\n },\n mounted () {\n const { initialScrollOffset } = this.$props\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = this._outerRef\n if (this.preset.isHorizontal) {\n outerRef.scrollLeft = initialScrollOffset\n } else {\n outerRef.scrollTop = initialScrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n updated () {\n this.preset.update(this.$props)\n\n const { scrollOffset, scrollUpdateWasRequested } = this.$data\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = this._outerRef\n\n if (this.preset.isHorizontal) {\n if (this.preset.isRtl) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset\n break\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset\n break\n default: {\n const { clientWidth, scrollWidth } = outerRef\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset\n break\n }\n }\n } else {\n outerRef.scrollLeft = scrollOffset\n }\n } else {\n outerRef.scrollTop = scrollOffset\n }\n }\n\n this._callPropsCallbacks()\n },\n\n beforeDestroy () {\n if (this.resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this.resetIsScrollingTimeoutId)\n }\n },\n\n render () {\n const {\n item,\n direction,\n height,\n innerRef,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n useIsScrolling,\n width,\n enhanced = false\n } = omit(this.$props, ['innerElementType', 'innerTagName', 'itemElementType', 'itemTagName', 'outerElementType', 'outerTagName', 'position'])\n const {\n id,\n isScrolling,\n scrollOffset,\n scrollUpdateWasRequested\n } = this.$data\n\n const isHorizontal = this.preset.isHorizontal\n const placeholderCount = this.preset.placeholderCount\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical\n\n const [startIndex, stopIndex] = this._getRangeToRender()\n\n const items = []\n if (itemCount > 0) {\n const prevPlaceholder = startIndex < placeholderCount ? startIndex : placeholderCount\n items.push(new Array(prevPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemTagName, {\n key: itemKey(index + startIndex - prevPlaceholder, itemData),\n style: { display: 'none' }\n }\n )))\n for (let index = startIndex; index <= stopIndex; index++) {\n const style = this.preset.getItemStyle(index)\n items.push(\n render(this.preset.itemTagName, {\n key: itemKey(index, itemData),\n style\n }, [\n render(item, {\n id: `${id}-${index}`,\n props: {\n id: `${id}-${index}`,\n data: itemData,\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined\n }\n })\n ])\n )\n }\n let restCount = itemCount - stopIndex\n restCount = restCount > 0 ? restCount : 0\n const postPlaceholder = restCount < placeholderCount ? restCount : placeholderCount\n items.push(new Array(postPlaceholder).fill(-1).map((_, index) => render(\n this.preset.itemTagName, {\n key: itemKey(1 + index + stopIndex, itemData),\n style: { display: 'none' }\n }\n )))\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = convertNumber2PX(this.itemList.getOffsetSize())\n const outerElementProps: any = {\n id,\n ref: this._outerRefSetter,\n layout,\n enhanced,\n style: {\n position: 'relative',\n height: convertNumber2PX(height),\n width: convertNumber2PX(width),\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction\n },\n attrs: {\n scrollY: layout === 'vertical',\n scrollX: layout === 'horizontal'\n },\n on: {\n scroll: onScroll\n }\n }\n\n if (!enhanced) {\n if (isHorizontal) {\n outerElementProps.scrollLeft = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollLeft\n } else {\n outerElementProps.scrollTop = scrollUpdateWasRequested ? scrollOffset : this.preset.field.scrollTop\n }\n }\n\n if (this.preset.isRelative) {\n const pre = convertNumber2PX(this.itemList.getOffsetSize(startIndex))\n return render(this.preset.outerTagName, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.itemTagName, {\n key: `${id}-pre`,\n id: `${id}-pre`,\n style: {\n height: isHorizontal ? '100%' : pre,\n width: !isHorizontal ? '100%' : pre\n }\n }),\n render(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n } else {\n return render(this.preset.outerTagName, outerElementProps, [\n process.env.FRAMEWORK === 'vue3' ? this.$slots.top?.() : this.$slots.top,\n render(this.preset.innerTagName, {\n ref: innerRef,\n key: `${id}-inner`,\n id: `${id}-inner`,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : 'auto',\n position: 'relative',\n width: !isHorizontal ? '100%' : estimatedTotalSize\n }\n }, items),\n process.env.FRAMEWORK === 'vue3' ? this.$slots.bottom?.() : this.$slots.bottom,\n ])\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/components-advanced",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"memoize-one": "^6.0.0",
|
|
20
20
|
"postcss": "^8.4.18",
|
|
21
|
-
"@tarojs/components": "3.6.
|
|
22
|
-
"@tarojs/shared": "3.6.
|
|
21
|
+
"@tarojs/components": "3.6.1",
|
|
22
|
+
"@tarojs/shared": "3.6.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@babel/cli": "^7.14.5",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"rollup-plugin-ts": "^3.0.2",
|
|
36
36
|
"typescript": "^4.7.4",
|
|
37
37
|
"vue": "^3.0.0",
|
|
38
|
-
"babel-preset-taro": "3.6.
|
|
38
|
+
"babel-preset-taro": "3.6.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=17"
|