@tarojs/components-advanced 3.7.0-alpha.2 → 3.7.0-alpha.22
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/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/virtual-list/index.d.ts +49 -30
- package/dist/components/virtual-list/index.js.map +1 -1
- package/dist/components/virtual-list/list-set.d.ts +5 -1
- package/dist/components/virtual-list/list-set.js +24 -59
- package/dist/components/virtual-list/list-set.js.map +1 -1
- package/dist/components/virtual-list/preset.d.ts +25 -10
- package/dist/components/virtual-list/preset.js +116 -60
- package/dist/components/virtual-list/preset.js.map +1 -1
- package/dist/components/virtual-list/react/index.d.ts +2 -2
- package/dist/components/virtual-list/react/index.js +8 -16
- package/dist/components/virtual-list/react/index.js.map +1 -1
- package/dist/components/virtual-list/react/list.d.ts +8 -7
- package/dist/components/virtual-list/react/list.js +141 -127
- package/dist/components/virtual-list/react/list.js.map +1 -1
- package/dist/components/virtual-list/react/validate.d.ts +3 -3
- package/dist/components/virtual-list/react/validate.js +8 -14
- package/dist/components/virtual-list/react/validate.js.map +1 -1
- package/dist/components/virtual-list/react/wrapper.d.ts +3 -0
- package/dist/components/virtual-list/react/wrapper.js +58 -0
- package/dist/components/virtual-list/react/wrapper.js.map +1 -0
- package/dist/components/virtual-list/utils.d.ts +1 -4
- package/dist/components/virtual-list/utils.js +1 -28
- package/dist/components/virtual-list/utils.js.map +1 -1
- package/dist/components/virtual-list/vue/index.d.ts +1 -1
- package/dist/components/virtual-list/vue/list.d.ts +407 -51
- package/dist/components/virtual-list/vue/list.js +198 -169
- package/dist/components/virtual-list/vue/list.js.map +1 -1
- package/dist/components/virtual-waterfall/constants.d.ts +2 -0
- package/dist/components/virtual-waterfall/constants.js +4 -0
- package/dist/components/virtual-waterfall/constants.js.map +1 -0
- package/dist/components/virtual-waterfall/index.d.ts +249 -0
- package/dist/components/virtual-waterfall/index.js +6 -0
- package/dist/components/virtual-waterfall/index.js.map +1 -0
- package/dist/components/virtual-waterfall/list-map.d.ts +50 -0
- package/dist/components/virtual-waterfall/list-map.js +280 -0
- package/dist/components/virtual-waterfall/list-map.js.map +1 -0
- package/dist/components/virtual-waterfall/preset.d.ts +60 -0
- package/dist/components/virtual-waterfall/preset.js +170 -0
- package/dist/components/virtual-waterfall/preset.js.map +1 -0
- package/dist/components/virtual-waterfall/react/index.d.ts +4 -0
- package/dist/components/virtual-waterfall/react/index.js +26 -0
- package/dist/components/virtual-waterfall/react/index.js.map +1 -0
- package/dist/components/virtual-waterfall/react/waterfall.d.ts +42 -0
- package/dist/components/virtual-waterfall/react/waterfall.js +316 -0
- package/dist/components/virtual-waterfall/react/waterfall.js.map +1 -0
- package/dist/components/virtual-waterfall/react/wrapper.d.ts +3 -0
- package/dist/components/virtual-waterfall/react/wrapper.js +50 -0
- package/dist/components/virtual-waterfall/react/wrapper.js.map +1 -0
- package/dist/components/virtual-waterfall/vue/index.d.ts +17 -0
- package/dist/components/virtual-waterfall/vue/index.js +12 -0
- package/dist/components/virtual-waterfall/vue/index.js.map +1 -0
- package/dist/components/virtual-waterfall/vue/waterfall.d.ts +443 -0
- package/dist/components/virtual-waterfall/vue/waterfall.js +410 -0
- package/dist/components/virtual-waterfall/vue/waterfall.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/convert.d.ts +2 -2
- package/dist/utils/convert.js.map +1 -1
- package/dist/utils/dom.d.ts +7 -0
- package/dist/utils/dom.js +45 -0
- package/dist/utils/dom.js.map +1 -0
- package/dist/utils/helper.d.ts +10 -0
- package/dist/utils/helper.js +51 -0
- package/dist/utils/helper.js.map +1 -0
- package/dist/utils/index.d.ts +6 -4
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/lodash.d.ts +3 -1
- package/dist/utils/lodash.js +30 -1
- package/dist/utils/lodash.js.map +1 -1
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/vue-render.d.ts +4 -0
- package/dist/{components/virtual-list/vue/render.js → utils/vue-render.js} +2 -2
- package/dist/utils/vue-render.js.map +1 -0
- package/package.json +8 -6
- package/dist/components/virtual-list/vue/render.d.ts +0 -4
- package/dist/components/virtual-list/vue/render.js.map +0 -1
|
@@ -1,15 +1,21 @@
|
|
|
1
|
+
import { isWebPlatform } from '@tarojs/shared';
|
|
2
|
+
import { createSelectorQuery, getCurrentInstance, createIntersectionObserver } from '@tarojs/taro';
|
|
1
3
|
import memoizeOne from 'memoize-one';
|
|
2
4
|
import '../../utils/index.js';
|
|
3
5
|
import ListSet from './list-set.js';
|
|
4
6
|
import { isHorizontalFunc, isRtlFunc } from './utils.js';
|
|
5
|
-
import { isCosDistributing } from '../../utils/math.js';
|
|
6
7
|
import { convertNumber2PX } from '../../utils/convert.js';
|
|
8
|
+
import { getRectSizeSync } from '../../utils/dom.js';
|
|
9
|
+
import { isCosDistributing } from '../../utils/math.js';
|
|
10
|
+
import { throttle } from '../../utils/lodash.js';
|
|
7
11
|
|
|
12
|
+
const isWeb = isWebPlatform();
|
|
8
13
|
let INSTANCE_ID = 0;
|
|
9
14
|
class Preset {
|
|
10
15
|
constructor(props, refresh) {
|
|
11
16
|
this.props = props;
|
|
12
17
|
this.refresh = refresh;
|
|
18
|
+
this._observer = {};
|
|
13
19
|
this.wrapperField = {
|
|
14
20
|
scrollLeft: 0,
|
|
15
21
|
scrollTop: 0,
|
|
@@ -20,9 +26,28 @@ class Preset {
|
|
|
20
26
|
diffOffset: 0
|
|
21
27
|
};
|
|
22
28
|
this.diffList = [0, 0, 0];
|
|
23
|
-
this.getItemStyleCache = memoizeOne((
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
this.getItemStyleCache = memoizeOne((itemIndex, itemSize, _flag = this.itemList.refreshCounter) => {
|
|
30
|
+
itemSize = itemSize || this.itemList.getSize(itemIndex);
|
|
31
|
+
const style = this.isRelative ? {} : {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
};
|
|
34
|
+
const offset = convertNumber2PX(this.itemList.getOffsetSizeCache(itemIndex));
|
|
35
|
+
const size = convertNumber2PX(this.itemList.getSize(itemIndex));
|
|
36
|
+
const isHorizontal = this.isHorizontal;
|
|
37
|
+
const isRtl = this.isRtl;
|
|
38
|
+
style.height = !isHorizontal ? size : '100%';
|
|
39
|
+
style.width = isHorizontal ? size : '100%';
|
|
40
|
+
if (!this.isRelative) {
|
|
41
|
+
const offsetHorizontal = isHorizontal ? offset : 0;
|
|
42
|
+
style.top = !isHorizontal ? offset : 0;
|
|
43
|
+
if (isRtl) {
|
|
44
|
+
style.right = offsetHorizontal;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
style.left = offsetHorizontal;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return style;
|
|
26
51
|
});
|
|
27
52
|
this.init(this.props);
|
|
28
53
|
this.itemList = new ListSet(props, refresh);
|
|
@@ -34,8 +59,33 @@ class Preset {
|
|
|
34
59
|
this.props = props;
|
|
35
60
|
this.itemList.update(props);
|
|
36
61
|
}
|
|
62
|
+
async updateWrapper(id) {
|
|
63
|
+
var _a;
|
|
64
|
+
var _b, _c;
|
|
65
|
+
this.id = id;
|
|
66
|
+
const { width = 0, height = 0 } = this.props;
|
|
67
|
+
const validWidth = typeof width === 'number' && width > 0;
|
|
68
|
+
const validHeight = typeof height === 'number' && height > 0;
|
|
69
|
+
if (validWidth) {
|
|
70
|
+
this.itemList.wrapperWidth = width;
|
|
71
|
+
}
|
|
72
|
+
if (validHeight) {
|
|
73
|
+
this.itemList.wrapperHeight = height;
|
|
74
|
+
}
|
|
75
|
+
if (!validHeight || !validWidth) {
|
|
76
|
+
const res = await getRectSizeSync(`#${id}`, 100);
|
|
77
|
+
(_b = this.itemList).wrapperWidth || (_b.wrapperWidth = res.width);
|
|
78
|
+
(_c = this.itemList).wrapperHeight || (_c.wrapperHeight = res.height);
|
|
79
|
+
(_a = this.refresh) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
80
|
+
}
|
|
81
|
+
this.itemList.update(this.props);
|
|
82
|
+
}
|
|
83
|
+
set id(id) {
|
|
84
|
+
this._id = id;
|
|
85
|
+
}
|
|
37
86
|
get id() {
|
|
38
|
-
|
|
87
|
+
this._id || (this._id = `virtual-waterfall-${INSTANCE_ID++}`);
|
|
88
|
+
return this._id;
|
|
39
89
|
}
|
|
40
90
|
get isHorizontal() {
|
|
41
91
|
return isHorizontalFunc(this.props);
|
|
@@ -44,18 +94,21 @@ class Preset {
|
|
|
44
94
|
return isRtlFunc(this.props);
|
|
45
95
|
}
|
|
46
96
|
get isRelative() {
|
|
47
|
-
return this.props.position
|
|
97
|
+
return this.props.position && this.props.position !== 'absolute';
|
|
98
|
+
}
|
|
99
|
+
get isBrick() {
|
|
100
|
+
return this.props.position === 'brick';
|
|
48
101
|
}
|
|
49
102
|
get placeholderCount() {
|
|
50
103
|
return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount;
|
|
51
104
|
}
|
|
52
|
-
get
|
|
105
|
+
get outerElement() {
|
|
53
106
|
return this.props.outerElementType || this.props.outerTagName || 'div';
|
|
54
107
|
}
|
|
55
|
-
get
|
|
108
|
+
get innerElement() {
|
|
56
109
|
return this.props.innerElementType || this.props.innerTagName || 'div';
|
|
57
110
|
}
|
|
58
|
-
get
|
|
111
|
+
get itemElement() {
|
|
59
112
|
return this.props.itemElementType || this.props.itemTagName || 'div';
|
|
60
113
|
}
|
|
61
114
|
get field() {
|
|
@@ -69,65 +122,68 @@ class Preset {
|
|
|
69
122
|
// }
|
|
70
123
|
// })
|
|
71
124
|
}
|
|
125
|
+
get enhanced() {
|
|
126
|
+
return this.props.enhanced || true;
|
|
127
|
+
}
|
|
72
128
|
isShaking(diff) {
|
|
129
|
+
if (isWeb || this.props.enhanced)
|
|
130
|
+
return false;
|
|
73
131
|
const list = this.diffList.slice(-3);
|
|
74
132
|
this.diffList.push(diff);
|
|
75
133
|
return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4));
|
|
76
134
|
}
|
|
135
|
+
resetCache() {
|
|
136
|
+
this.itemList.refreshCounter++;
|
|
137
|
+
}
|
|
77
138
|
getItemStyle(index) {
|
|
78
|
-
const {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
else {
|
|
95
|
-
style.left = offset;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
style.height = size;
|
|
101
|
-
if (!this.isRelative) {
|
|
102
|
-
style.top = offset;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
if (this.isRelative) {
|
|
108
|
-
itemStyleCache[index] = style = {
|
|
109
|
-
height: !isHorizontal ? size : '100%',
|
|
110
|
-
width: isHorizontal ? size : '100%'
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
const offsetHorizontal = isHorizontal ? offset : 0;
|
|
115
|
-
itemStyleCache[index] = style = {
|
|
116
|
-
position: 'absolute',
|
|
117
|
-
left: !isRtl ? offsetHorizontal : undefined,
|
|
118
|
-
right: isRtl ? offsetHorizontal : undefined,
|
|
119
|
-
top: !isHorizontal ? offset : 0,
|
|
120
|
-
height: !isHorizontal ? size : '100%',
|
|
121
|
-
width: isHorizontal ? size : '100%'
|
|
122
|
-
};
|
|
139
|
+
const { shouldResetStyleCacheOnItemSizeChange } = this.props;
|
|
140
|
+
return this.getItemStyleCache(index, shouldResetStyleCacheOnItemSizeChange ? this.itemList.getSize(index) : false);
|
|
141
|
+
}
|
|
142
|
+
boundaryDetection() {
|
|
143
|
+
if ([typeof this.props.onScrollToUpper, typeof this.props.onScrollToLower].every(e => e !== 'function'))
|
|
144
|
+
return;
|
|
145
|
+
createSelectorQuery().select(`#${this.id}`).node().exec(() => {
|
|
146
|
+
const upperObserver = this.boundaryDetectionHelper({
|
|
147
|
+
event: typeof this.props.onScrollToUpper === 'function' ? () => {
|
|
148
|
+
if (this.field.diffOffset >= 0)
|
|
149
|
+
this.props.onScrollToUpper();
|
|
150
|
+
} : undefined,
|
|
151
|
+
id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'right' : 'left' : 'top'}`,
|
|
152
|
+
});
|
|
153
|
+
if (upperObserver) {
|
|
154
|
+
this._observer.top = upperObserver;
|
|
123
155
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
156
|
+
const lowerObserver = this.boundaryDetectionHelper({
|
|
157
|
+
event: typeof this.props.onScrollToLower === 'function' ? () => {
|
|
158
|
+
if (this.field.diffOffset <= 0)
|
|
159
|
+
this.props.onScrollToLower();
|
|
160
|
+
} : undefined,
|
|
161
|
+
id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'left' : 'right' : 'bottom'}`,
|
|
162
|
+
});
|
|
163
|
+
if (lowerObserver) {
|
|
164
|
+
this._observer.bottom = lowerObserver;
|
|
128
165
|
}
|
|
129
|
-
}
|
|
130
|
-
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
boundaryDetectionHelper({ component, event, id, }) {
|
|
169
|
+
if (typeof event !== 'function')
|
|
170
|
+
return;
|
|
171
|
+
const eventFunc = throttle(event);
|
|
172
|
+
component || (component = getCurrentInstance().page);
|
|
173
|
+
const observer = createIntersectionObserver(component, {
|
|
174
|
+
thresholds: [0.4],
|
|
175
|
+
});
|
|
176
|
+
observer
|
|
177
|
+
.relativeTo(`#${this.id}`, {
|
|
178
|
+
top: typeof this.props.lowerThreshold === 'number' ? this.props.lowerThreshold : 50,
|
|
179
|
+
bottom: typeof this.props.upperThreshold === 'number' ? this.props.upperThreshold : 50,
|
|
180
|
+
})
|
|
181
|
+
.observe(`#${id}`, eventFunc);
|
|
182
|
+
return observer;
|
|
183
|
+
}
|
|
184
|
+
dispose() {
|
|
185
|
+
Object.values(this._observer).forEach(e => { var _a; return (_a = e.disconnect) === null || _a === void 0 ? void 0 : _a.call(e); });
|
|
186
|
+
this._observer = {};
|
|
131
187
|
}
|
|
132
188
|
}
|
|
133
189
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sources":["../../../src/components/virtual-list/preset.ts"],"sourcesContent":["import memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX, isCosDistributing } from '../../utils'\nimport ListSet from './list-set'\nimport { defaultItemKey, isHorizontalFunc, isRtlFunc } from './utils'\n\nimport type { VirtualListProps } from './'\n\nlet INSTANCE_ID = 0\n\nexport interface IProps extends Partial<VirtualListProps> {\n children?: VirtualListProps['item']\n direction?: 'ltr' | 'rtl' | 'horizontal' | 'vertical'\n itemKey?: typeof defaultItemKey\n itemTagName?: string\n innerTagName?: string\n outerTagName?: string\n itemElementType?: React.ComponentType | string\n outerElementType?: React.ComponentType | string\n innerRef?: React.Ref<HTMLElement> | string\n outerRef?: React.Ref<HTMLElement> | string\n onItemsRendered?: TFunc\n shouldResetStyleCacheOnItemSizeChange?: boolean\n}\n\nexport default class Preset {\n itemList: ListSet\n\n constructor (protected props: IProps, protected refresh?: TFunc) {\n this.init(this.props)\n this.itemList = new ListSet(props, refresh)\n }\n\n wrapperField = {\n scrollLeft: 0,\n scrollTop: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n clientHeight: 0,\n clientWidth: 0,\n diffOffset: 0\n }\n\n diffList: number[] = [0, 0, 0]\n\n init (props: IProps) {\n this.props = props\n }\n\n update (props: IProps) {\n this.props = props\n this.itemList.update(props)\n }\n\n get id () {\n return `virtual-list-${INSTANCE_ID++}`\n }\n\n get isHorizontal () {\n return isHorizontalFunc(this.props)\n }\n\n get isRtl () {\n return isRtlFunc(this.props)\n }\n\n get isRelative () {\n return this.props.position === 'relative'\n }\n\n get placeholderCount () {\n return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount\n }\n\n get outerTagName () {\n return this.props.outerElementType || this.props.outerTagName || 'div'\n }\n\n get innerTagName () {\n return this.props.innerElementType || this.props.innerTagName || 'div'\n }\n\n get itemTagName () {\n return this.props.itemElementType || this.props.itemTagName || 'div'\n }\n\n get field () {\n return this.wrapperField\n }\n\n set field (o: Record<string, number>) {\n Object.assign(this.wrapperField, o)\n // Object.keys(o).forEach(key => {\n // if (typeof o[key] === 'number' && typeof this.wrapperField[key] === 'number') {\n // this.wrapperField[key] = o[key]\n // }\n // })\n }\n\n isShaking (diff?: number) {\n const list = this.diffList.slice(-3)\n this.diffList.push(diff)\n return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4))\n }\n\n getItemStyleCache = memoizeOne((\n _itemSize?: IProps['itemSize'] | false,\n _layout?: IProps['layout'] | false,\n _direction?: IProps['direction'] | false\n ) => {\n // TODO: Cache of item styles, keyed by item index.\n return {}\n })\n\n getItemStyle (index: number) {\n const {\n direction,\n itemSize,\n layout,\n shouldResetStyleCacheOnItemSizeChange\n } = this.props\n\n const itemStyleCache = this.getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange ? itemSize : false,\n shouldResetStyleCacheOnItemSizeChange ? layout : false,\n shouldResetStyleCacheOnItemSizeChange ? direction : false\n )\n\n let style\n\n const offset = convertNumber2PX(this.itemList.getOffsetSize(index))\n const size = convertNumber2PX(this.itemList.getSize(index))\n const isHorizontal = this.isHorizontal\n const isRtl = this.isRtl\n if (itemStyleCache.hasOwnProperty(index)) {\n // Note: style is frozen.\n style = { ...itemStyleCache[index] }\n if (isHorizontal) {\n style.width = size\n if (!this.isRelative) {\n if (isRtl) {\n style.right = offset\n } else {\n style.left = offset\n }\n }\n } else {\n style.height = size\n if (!this.isRelative) {\n style.top = offset\n }\n }\n } else {\n if (this.isRelative) {\n itemStyleCache[index] = style = {\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n }\n } else {\n const offsetHorizontal = isHorizontal ? offset : 0\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: !isRtl ? offsetHorizontal : undefined,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n }\n }\n }\n\n for (const k in style) {\n if (style.hasOwnProperty(k)) {\n style[k] = convertNumber2PX(style[k])\n }\n }\n\n return style\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preset.js","sources":["../../../src/components/virtual-list/preset.ts"],"sourcesContent":["import { isWebPlatform } from '@tarojs/shared'\nimport { type IntersectionObserver, createIntersectionObserver, createSelectorQuery, getCurrentInstance } from '@tarojs/taro'\nimport * as CSS from 'csstype'\nimport memoizeOne from 'memoize-one'\n\nimport { convertNumber2PX, defaultItemKey, getRectSizeSync, isCosDistributing, throttle } from '../../utils'\nimport ListSet from './list-set'\nimport { isHorizontalFunc, isRtlFunc } from './utils'\n\nimport type { VirtualListProps } from './'\n\nconst isWeb = isWebPlatform()\n\nlet INSTANCE_ID = 0\n\nexport interface IProps extends Partial<VirtualListProps> {\n children?: VirtualListProps['item']\n direction?: 'ltr' | 'rtl' | 'horizontal' | 'vertical'\n itemKey?: typeof defaultItemKey\n itemTagName?: string\n innerTagName?: string\n outerTagName?: string\n innerRef?: React.Ref<HTMLElement> | string\n outerRef?: React.Ref<HTMLElement> | string\n onItemsRendered?: TFunc\n shouldResetStyleCacheOnItemSizeChange?: boolean\n outerWrapper?: React.FC\n}\n\nexport default class Preset {\n itemList: ListSet\n _id: string\n _observer: Record<string, IntersectionObserver> = {}\n\n constructor (protected props: IProps, protected refresh?: TFunc) {\n this.init(this.props)\n this.itemList = new ListSet(props, refresh)\n }\n\n wrapperField = {\n scrollLeft: 0,\n scrollTop: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n clientHeight: 0,\n clientWidth: 0,\n diffOffset: 0\n }\n\n diffList: number[] = [0, 0, 0]\n\n init (props: IProps) {\n this.props = props\n }\n\n update (props: IProps) {\n this.props = props\n this.itemList.update(props)\n }\n\n async updateWrapper (id: string) {\n this.id = id\n const { width = 0, height = 0 } = this.props\n const validWidth = typeof width === 'number' && width > 0\n const validHeight = typeof height === 'number' && height > 0\n if (validWidth) {\n this.itemList.wrapperWidth = width\n }\n if (validHeight) {\n this.itemList.wrapperHeight = height\n }\n\n if (!validHeight || !validWidth) {\n const res = await getRectSizeSync(`#${id}`, 100)\n this.itemList.wrapperWidth ||= res.width\n this.itemList.wrapperHeight ||= res.height\n this.refresh?.()\n }\n\n this.itemList.update(this.props)\n }\n\n set id (id: string) {\n this._id = id\n }\n\n get id () {\n this._id ||= `virtual-waterfall-${INSTANCE_ID++}`\n return this._id\n }\n\n get isHorizontal () {\n return isHorizontalFunc(this.props)\n }\n\n get isRtl () {\n return isRtlFunc(this.props)\n }\n\n get isRelative () {\n return this.props.position && this.props.position !== 'absolute'\n }\n\n get isBrick () {\n return this.props.position === 'brick'\n }\n\n get placeholderCount () {\n return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount\n }\n\n get outerElement () {\n return this.props.outerElementType || this.props.outerTagName || 'div'\n }\n\n get innerElement () {\n return this.props.innerElementType || this.props.innerTagName || 'div'\n }\n\n get itemElement () {\n return this.props.itemElementType || this.props.itemTagName || 'div'\n }\n\n get field () {\n return this.wrapperField\n }\n\n set field (o: Record<string, number>) {\n Object.assign(this.wrapperField, o)\n // Object.keys(o).forEach(key => {\n // if (typeof o[key] === 'number' && typeof this.wrapperField[key] === 'number') {\n // this.wrapperField[key] = o[key]\n // }\n // })\n }\n\n get enhanced () {\n return this.props.enhanced || true\n }\n\n isShaking (diff?: number) {\n if (isWeb || this.props.enhanced) return false\n const list = this.diffList.slice(-3)\n this.diffList.push(diff)\n return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4))\n }\n\n resetCache () {\n this.itemList.refreshCounter++\n }\n\n getItemStyleCache = memoizeOne((\n itemIndex?: number,\n itemSize?: IProps['itemSize'] | false,\n _flag = this.itemList.refreshCounter\n ) => {\n itemSize = itemSize || this.itemList.getSize(itemIndex)\n const style: CSS.Properties<string | number> = this.isRelative ? {} : {\n position: 'absolute',\n }\n const offset = convertNumber2PX(this.itemList.getOffsetSizeCache(itemIndex))\n const size = convertNumber2PX(this.itemList.getSize(itemIndex))\n const isHorizontal = this.isHorizontal\n const isRtl = this.isRtl\n style.height = !isHorizontal ? size : '100%'\n style.width = isHorizontal ? size : '100%'\n if (!this.isRelative) {\n const offsetHorizontal = isHorizontal ? offset : 0\n style.top = !isHorizontal ? offset : 0\n if (isRtl) {\n style.right = offsetHorizontal\n } else {\n style.left = offsetHorizontal\n }\n }\n\n return style\n })\n\n getItemStyle (index: number) {\n const {\n shouldResetStyleCacheOnItemSizeChange\n } = this.props\n\n return this.getItemStyleCache(\n index,\n shouldResetStyleCacheOnItemSizeChange ? this.itemList.getSize(index) : false,\n )\n }\n\n boundaryDetection () {\n if ([typeof this.props.onScrollToUpper, typeof this.props.onScrollToLower].every(e => e !== 'function')) return\n\n createSelectorQuery().select(`#${this.id}`).node().exec(() => {\n const upperObserver = this.boundaryDetectionHelper({\n event: typeof this.props.onScrollToUpper === 'function' ? () => {\n if (this.field.diffOffset >= 0) this.props.onScrollToUpper()\n } : undefined,\n id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'right' : 'left' : 'top'}`,\n })\n if (upperObserver) {\n this._observer.top = upperObserver\n }\n\n const lowerObserver = this.boundaryDetectionHelper({\n event: typeof this.props.onScrollToLower === 'function' ? () => {\n if (this.field.diffOffset <= 0) this.props.onScrollToLower()\n } : undefined,\n id: `${this.id}-${this.isHorizontal ? this.isRtl ? 'left' : 'right' : 'bottom'}`,\n })\n if (lowerObserver) {\n this._observer.bottom = lowerObserver\n }\n })\n }\n\n boundaryDetectionHelper ({\n component,\n event,\n id,\n }: {\n component?: TaroGeneral.IAnyObject\n event?: () => void\n id: string\n }) {\n if (typeof event !== 'function') return\n const eventFunc = throttle(event)\n\n component ||= getCurrentInstance().page\n const observer = createIntersectionObserver(component, {\n thresholds: [0.4],\n })\n\n observer\n .relativeTo(`#${this.id}`, {\n top: typeof this.props.lowerThreshold === 'number' ? this.props.lowerThreshold : 50,\n bottom: typeof this.props.upperThreshold === 'number' ? this.props.upperThreshold : 50,\n })\n .observe(`#${id}`, eventFunc)\n\n return observer\n }\n\n dispose () {\n Object.values(this._observer).forEach(e => e.disconnect?.())\n this._observer = {}\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { VirtualListProps } from "../index";
|
|
3
|
-
declare const VirtualList: React.ForwardRefExoticComponent<
|
|
2
|
+
import { VirtualListProps } from "../index.js";
|
|
3
|
+
declare const VirtualList: React.ForwardRefExoticComponent<Omit<VirtualListProps<any>, "ref"> & React.RefAttributes<unknown>>;
|
|
4
4
|
export { VirtualList as default };
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
import { __rest } from '../../../node_modules/.pnpm/registry.npmjs.org_tslib@2.5.0/node_modules/tslib/tslib.es6.js';
|
|
2
2
|
import { ScrollView, View } from '@tarojs/components';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { convertPX2Int } from '../../../utils/convert.js';
|
|
5
4
|
import List from './list.js';
|
|
5
|
+
import outerWrapper from './wrapper.js';
|
|
6
6
|
|
|
7
|
-
const OuterScrollView = React.forwardRef(function OuterScrollView(props, ref) {
|
|
8
|
-
const _a = props, { style, onScroll, onScrollNative, layout } = _a, rest = __rest(_a, ["style", "onScroll", "onScrollNative", "layout"]);
|
|
9
|
-
const handleScroll = (event) => {
|
|
10
|
-
onScroll(Object.assign(Object.assign({}, event), { currentTarget: Object.assign(Object.assign({}, event.detail), { clientWidth: convertPX2Int(style.width), clientHeight: convertPX2Int(style.height) }) }));
|
|
11
|
-
if (typeof onScrollNative === 'function') {
|
|
12
|
-
onScrollNative(event);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
return React.createElement(ScrollView, Object.assign({ ref,
|
|
16
|
-
style, scrollY: layout === 'vertical', scrollX: layout === 'horizontal', onScroll: handleScroll }, rest));
|
|
17
|
-
});
|
|
18
7
|
const VirtualList = React.forwardRef(function VirtualList(props, ref) {
|
|
19
|
-
const _a = props, { direction = 'ltr', innerElementType = View, itemElementType = View, initialScrollOffset = 0, overscanCount = 1 } = _a, rest = __rest(_a, ["direction", "innerElementType", "itemElementType", "initialScrollOffset", "overscanCount"]);
|
|
8
|
+
const _a = props, { direction = 'ltr', outerElementType = ScrollView, innerElementType = View, itemElementType = View, initialScrollOffset = 0, overscanCount = 1 } = _a, rest = __rest(_a, ["direction", "outerElementType", "innerElementType", "itemElementType", "initialScrollOffset", "overscanCount"]);
|
|
20
9
|
if ('children' in rest) {
|
|
21
10
|
console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.');
|
|
22
11
|
rest.item = rest.children;
|
|
@@ -25,10 +14,13 @@ const VirtualList = React.forwardRef(function VirtualList(props, ref) {
|
|
|
25
14
|
console.warn('Taro(VirtualList): item should not be an array');
|
|
26
15
|
rest.item = rest.item[0];
|
|
27
16
|
}
|
|
28
|
-
return React.createElement(List, Object.assign(Object.assign({ ref }, rest), {
|
|
29
|
-
|
|
17
|
+
return React.createElement(List, Object.assign(Object.assign({ ref }, rest), { outerElementType,
|
|
18
|
+
itemElementType,
|
|
19
|
+
innerElementType,
|
|
20
|
+
direction,
|
|
30
21
|
initialScrollOffset,
|
|
31
|
-
overscanCount
|
|
22
|
+
overscanCount,
|
|
23
|
+
outerWrapper }));
|
|
32
24
|
});
|
|
33
25
|
|
|
34
26
|
export { VirtualList as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/virtual-list/react/index.ts"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport React from 'react'\n\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/virtual-list/react/index.ts"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport React from 'react'\n\nimport List from './list'\nimport outerWrapper from './wrapper'\n\nimport type { VirtualListProps } from '../'\nimport type { IProps } from '../preset'\n\nconst VirtualList = React.forwardRef(function VirtualList (props: VirtualListProps, ref) {\n const {\n direction = 'ltr',\n outerElementType = ScrollView,\n innerElementType = View,\n itemElementType = View,\n initialScrollOffset = 0,\n overscanCount = 1,\n ...rest\n } = props as IProps\n\n if ('children' in rest) {\n console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.')\n rest.item = rest.children as IProps['item']\n }\n if (rest.item instanceof Array) {\n console.warn('Taro(VirtualList): item should not be an array')\n rest.item = rest.item[0]\n }\n return React.createElement(List, {\n ref,\n ...rest,\n outerElementType,\n itemElementType,\n innerElementType,\n direction,\n initialScrollOffset,\n overscanCount,\n outerWrapper,\n })\n})\n\nexport default VirtualList\n"],"names":[],"mappings":";;;;;;AASM,MAAA,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,WAAW,CAAE,KAAuB,EAAE,GAAG,EAAA;AACrF,IAAA,MAAM,EAQF,GAAA,KAAe,EARb,EACJ,SAAS,GAAG,KAAK,EACjB,gBAAgB,GAAG,UAAU,EAC7B,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,CAAC,EACvB,aAAa,GAAG,CAAC,OAEA,EADd,IAAI,GAPH,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,eAAA,CAQL,CAAkB,CAAA;IAEnB,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,GAAG,oCAAoC,CAAC,CAAA;AAC/G,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAA0B,CAAA;AAC5C,KAAA;AACD,IAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACzB,KAAA;IACD,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,gCAC7B,GAAG,EAAA,EACA,IAAI,CAAA,EAAA,EACP,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,mBAAmB;QACnB,aAAa;AACb,QAAA,YAAY,IACZ,CAAA;AACJ,CAAC;;;;"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import ListSet from "../list-set";
|
|
3
|
-
import Preset from "../preset";
|
|
4
|
-
import { IProps } from "../preset";
|
|
2
|
+
import ListSet from "../list-set.js";
|
|
3
|
+
import Preset from "../preset.js";
|
|
4
|
+
import { IProps } from "../preset.js";
|
|
5
5
|
interface IState {
|
|
6
|
-
id: string;
|
|
7
6
|
instance: List;
|
|
8
7
|
isScrolling: boolean;
|
|
9
8
|
scrollDirection: 'forward' | 'backward';
|
|
@@ -20,7 +19,7 @@ declare class List extends React.PureComponent<IProps, IState> {
|
|
|
20
19
|
refresh: () => void;
|
|
21
20
|
_outerRef: any;
|
|
22
21
|
_resetIsScrollingTimeoutId: any;
|
|
23
|
-
_callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any,
|
|
22
|
+
_callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, startIndex: any, stopIndex: any) => any>;
|
|
24
23
|
_callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
|
|
25
24
|
_callPropsCallbacks(prevProps?: any, prevState?: any): void;
|
|
26
25
|
_getSizeUploadSync: (index: number, isHorizontal: boolean) => Promise<unknown>;
|
|
@@ -34,11 +33,13 @@ declare class List extends React.PureComponent<IProps, IState> {
|
|
|
34
33
|
_outerRefSetter: (ref: any) => void;
|
|
35
34
|
_resetIsScrollingDebounced: () => void;
|
|
36
35
|
_resetIsScrolling: () => void;
|
|
37
|
-
scrollTo(scrollOffset?: number): Promise<any>;
|
|
38
|
-
scrollToItem(index: number, align?: string): void;
|
|
36
|
+
scrollTo(scrollOffset?: number, enhanced?: true): Promise<any>;
|
|
37
|
+
scrollToItem(index: number, align?: string, enhanced?: true): void;
|
|
39
38
|
componentDidMount(): void;
|
|
40
39
|
componentDidUpdate(prevProps: IProps, prevState: IState): void;
|
|
41
40
|
componentWillUnmount(): void;
|
|
41
|
+
getRenderItemNode(index: number, type?: 'node' | 'placeholder'): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
42
|
+
getRenderColumnNode(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
42
43
|
render(): React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
|
|
43
44
|
}
|
|
44
45
|
export { IState, List as default };
|