@tarojs/components-advanced 3.6.0-canary.10
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 +21 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/virtual-list/constants.d.ts +1 -0
- package/dist/components/virtual-list/constants.js +1 -0
- package/dist/components/virtual-list/dom-helpers.d.ts +1 -0
- package/dist/components/virtual-list/dom-helpers.js +38 -0
- package/dist/components/virtual-list/index.d.ts +189 -0
- package/dist/components/virtual-list/index.js +103 -0
- package/dist/components/virtual-list/list-set.d.ts +27 -0
- package/dist/components/virtual-list/list-set.js +228 -0
- package/dist/components/virtual-list/preset.d.ts +35 -0
- package/dist/components/virtual-list/preset.js +134 -0
- package/dist/components/virtual-list/react/index.d.ts +3 -0
- package/dist/components/virtual-list/react/index.js +63 -0
- package/dist/components/virtual-list/react/list.d.ts +49 -0
- package/dist/components/virtual-list/react/list.js +491 -0
- package/dist/components/virtual-list/react/validate.d.ts +3 -0
- package/dist/components/virtual-list/react/validate.js +70 -0
- package/dist/components/virtual-list/utils.d.ts +12 -0
- package/dist/components/virtual-list/utils.js +33 -0
- package/dist/components/virtual-list/vue/index.d.ts +4 -0
- package/dist/components/virtual-list/vue/index.js +6 -0
- package/dist/components/virtual-list/vue/list.d.ts +119 -0
- package/dist/components/virtual-list/vue/list.js +463 -0
- package/dist/components/virtual-list/vue/render.d.ts +3 -0
- package/dist/components/virtual-list/vue/render.js +25 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +4 -0
- package/dist/utils/convert.d.ts +5 -0
- package/dist/utils/convert.js +16 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/lodash.d.ts +1 -0
- package/dist/utils/lodash.js +10 -0
- package/dist/utils/timer.d.ts +6 -0
- package/dist/utils/timer.js +20 -0
- package/package.json +48 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
|
+
import memoizeOne from 'memoize-one';
|
|
6
|
+
import { convertNumber2PX } from '../../utils';
|
|
7
|
+
import ListSet from './list-set';
|
|
8
|
+
import { isHorizontalFunc, isRtlFunc } from './utils';
|
|
9
|
+
var INSTANCE_ID = 0;
|
|
10
|
+
var Preset = /*#__PURE__*/function () {
|
|
11
|
+
function Preset(props, refresh) {
|
|
12
|
+
_classCallCheck(this, Preset);
|
|
13
|
+
this.props = props;
|
|
14
|
+
this.refresh = refresh;
|
|
15
|
+
_defineProperty(this, "itemList", void 0);
|
|
16
|
+
_defineProperty(this, "getItemStyleCache", memoizeOne(function (_itemSize, _layout, _direction) {
|
|
17
|
+
// TODO: Cache of item styles, keyed by item index.
|
|
18
|
+
return {};
|
|
19
|
+
}));
|
|
20
|
+
this.init(this.props);
|
|
21
|
+
this.itemList = new ListSet(props, refresh);
|
|
22
|
+
}
|
|
23
|
+
_createClass(Preset, [{
|
|
24
|
+
key: "init",
|
|
25
|
+
value: function init(props) {
|
|
26
|
+
this.props = props;
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
key: "update",
|
|
30
|
+
value: function update(props) {
|
|
31
|
+
this.props = props;
|
|
32
|
+
this.itemList.update(props);
|
|
33
|
+
}
|
|
34
|
+
}, {
|
|
35
|
+
key: "id",
|
|
36
|
+
get: function get() {
|
|
37
|
+
return "virtual-list-".concat(INSTANCE_ID++);
|
|
38
|
+
}
|
|
39
|
+
}, {
|
|
40
|
+
key: "isHorizontal",
|
|
41
|
+
get: function get() {
|
|
42
|
+
return isHorizontalFunc(this.props);
|
|
43
|
+
}
|
|
44
|
+
}, {
|
|
45
|
+
key: "isRtl",
|
|
46
|
+
get: function get() {
|
|
47
|
+
return isRtlFunc(this.props);
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
key: "isRelative",
|
|
51
|
+
get: function get() {
|
|
52
|
+
return this.props.position === 'relative';
|
|
53
|
+
}
|
|
54
|
+
}, {
|
|
55
|
+
key: "placeholderCount",
|
|
56
|
+
get: function get() {
|
|
57
|
+
return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount;
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
key: "outerTagName",
|
|
61
|
+
get: function get() {
|
|
62
|
+
return this.props.outerElementType || this.props.outerTagName || 'div';
|
|
63
|
+
}
|
|
64
|
+
}, {
|
|
65
|
+
key: "innerTagName",
|
|
66
|
+
get: function get() {
|
|
67
|
+
return this.props.innerElementType || this.props.innerTagName || 'div';
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: "itemTagName",
|
|
71
|
+
get: function get() {
|
|
72
|
+
return this.props.itemElementType || this.props.itemTagName || 'div';
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
key: "getItemStyle",
|
|
76
|
+
value: function getItemStyle(index) {
|
|
77
|
+
var _this$props = this.props,
|
|
78
|
+
direction = _this$props.direction,
|
|
79
|
+
itemSize = _this$props.itemSize,
|
|
80
|
+
layout = _this$props.layout,
|
|
81
|
+
shouldResetStyleCacheOnItemSizeChange = _this$props.shouldResetStyleCacheOnItemSizeChange;
|
|
82
|
+
var itemStyleCache = this.getItemStyleCache(shouldResetStyleCacheOnItemSizeChange ? itemSize : false, shouldResetStyleCacheOnItemSizeChange ? layout : false, shouldResetStyleCacheOnItemSizeChange ? direction : false);
|
|
83
|
+
var style;
|
|
84
|
+
var offset = convertNumber2PX(this.itemList.getOffsetSize(index));
|
|
85
|
+
var size = convertNumber2PX(this.itemList.getSize(index));
|
|
86
|
+
var isHorizontal = this.isHorizontal;
|
|
87
|
+
var isRtl = this.isRtl;
|
|
88
|
+
if (itemStyleCache.hasOwnProperty(index)) {
|
|
89
|
+
// Note: style is frozen.
|
|
90
|
+
style = _objectSpread({}, itemStyleCache[index]);
|
|
91
|
+
if (isHorizontal) {
|
|
92
|
+
style.width = size;
|
|
93
|
+
if (!this.isRelative) {
|
|
94
|
+
if (isRtl) {
|
|
95
|
+
style.right = offset;
|
|
96
|
+
} else {
|
|
97
|
+
style.left = offset;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
} else {
|
|
101
|
+
style.height = size;
|
|
102
|
+
if (!this.isRelative) {
|
|
103
|
+
style.top = offset;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
if (this.isRelative) {
|
|
108
|
+
itemStyleCache[index] = style = {
|
|
109
|
+
height: !isHorizontal ? size : '100%',
|
|
110
|
+
width: isHorizontal ? size : '100%'
|
|
111
|
+
};
|
|
112
|
+
} else {
|
|
113
|
+
var offsetHorizontal = isHorizontal ? offset : 0;
|
|
114
|
+
itemStyleCache[index] = style = {
|
|
115
|
+
position: 'absolute',
|
|
116
|
+
left: !isRtl ? offsetHorizontal : undefined,
|
|
117
|
+
right: isRtl ? offsetHorizontal : undefined,
|
|
118
|
+
top: !isHorizontal ? offset : 0,
|
|
119
|
+
height: !isHorizontal ? size : '100%',
|
|
120
|
+
width: isHorizontal ? size : '100%'
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
for (var k in style) {
|
|
125
|
+
if (style.hasOwnProperty(k)) {
|
|
126
|
+
style[k] = convertNumber2PX(style[k]);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return style;
|
|
130
|
+
}
|
|
131
|
+
}]);
|
|
132
|
+
return Preset;
|
|
133
|
+
}();
|
|
134
|
+
export { Preset as default };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["style", "onScroll", "onScrollNative", "layout"],
|
|
4
|
+
_excluded2 = ["direction", "innerElementType", "itemElementType", "initialScrollOffset", "overscanCount"];
|
|
5
|
+
import { ScrollView, View } from '@tarojs/components';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { convertPX2Int } from '../../../utils/convert';
|
|
8
|
+
import List from './list';
|
|
9
|
+
var OuterScrollView = React.forwardRef(function OuterScrollView(props, ref) {
|
|
10
|
+
var _ref = props,
|
|
11
|
+
style = _ref.style,
|
|
12
|
+
onScroll = _ref.onScroll,
|
|
13
|
+
onScrollNative = _ref.onScrollNative,
|
|
14
|
+
layout = _ref.layout,
|
|
15
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
16
|
+
var handleScroll = function handleScroll(event) {
|
|
17
|
+
onScroll(_objectSpread(_objectSpread({}, event), {}, {
|
|
18
|
+
currentTarget: _objectSpread(_objectSpread({}, event.detail), {}, {
|
|
19
|
+
clientWidth: convertPX2Int(style.width),
|
|
20
|
+
clientHeight: convertPX2Int(style.height)
|
|
21
|
+
})
|
|
22
|
+
}));
|
|
23
|
+
if (typeof onScrollNative === 'function') {
|
|
24
|
+
onScrollNative(event);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
return React.createElement(ScrollView, _objectSpread({
|
|
28
|
+
ref: ref,
|
|
29
|
+
style: style,
|
|
30
|
+
scrollY: layout === 'vertical',
|
|
31
|
+
scrollX: layout === 'horizontal',
|
|
32
|
+
onScroll: handleScroll
|
|
33
|
+
}, rest));
|
|
34
|
+
});
|
|
35
|
+
var VirtualList = React.forwardRef(function VirtualList(props, ref) {
|
|
36
|
+
var _ref2 = props,
|
|
37
|
+
_ref2$direction = _ref2.direction,
|
|
38
|
+
direction = _ref2$direction === void 0 ? 'ltr' : _ref2$direction,
|
|
39
|
+
_ref2$innerElementTyp = _ref2.innerElementType,
|
|
40
|
+
innerElementType = _ref2$innerElementTyp === void 0 ? View : _ref2$innerElementTyp,
|
|
41
|
+
_ref2$itemElementType = _ref2.itemElementType,
|
|
42
|
+
itemElementType = _ref2$itemElementType === void 0 ? View : _ref2$itemElementType,
|
|
43
|
+
_ref2$initialScrollOf = _ref2.initialScrollOffset,
|
|
44
|
+
initialScrollOffset = _ref2$initialScrollOf === void 0 ? 0 : _ref2$initialScrollOf,
|
|
45
|
+
_ref2$overscanCount = _ref2.overscanCount,
|
|
46
|
+
overscanCount = _ref2$overscanCount === void 0 ? 1 : _ref2$overscanCount,
|
|
47
|
+
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
48
|
+
if (rest.item instanceof Array) {
|
|
49
|
+
console.warn('Taro(VirtualList): item should not be an array');
|
|
50
|
+
rest.item = rest.item[0];
|
|
51
|
+
}
|
|
52
|
+
return React.createElement(List, _objectSpread(_objectSpread({
|
|
53
|
+
ref: ref
|
|
54
|
+
}, rest), {}, {
|
|
55
|
+
itemElementType: itemElementType,
|
|
56
|
+
innerElementType: innerElementType,
|
|
57
|
+
outerElementType: OuterScrollView,
|
|
58
|
+
direction: direction,
|
|
59
|
+
initialScrollOffset: initialScrollOffset,
|
|
60
|
+
overscanCount: overscanCount
|
|
61
|
+
}));
|
|
62
|
+
});
|
|
63
|
+
export default VirtualList;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ListSet from '../list-set';
|
|
3
|
+
import Preset from '../preset';
|
|
4
|
+
import type { IProps } from '../preset';
|
|
5
|
+
export interface IState {
|
|
6
|
+
id: string;
|
|
7
|
+
instance: List;
|
|
8
|
+
isScrolling: boolean;
|
|
9
|
+
scrollDirection: 'forward' | 'backward';
|
|
10
|
+
scrollOffset: number;
|
|
11
|
+
scrollUpdateWasRequested: boolean;
|
|
12
|
+
refreshCount: number;
|
|
13
|
+
}
|
|
14
|
+
export default class List extends React.PureComponent<IProps, IState> {
|
|
15
|
+
static defaultProps: IProps;
|
|
16
|
+
static getDerivedStateFromProps(nextProps: IProps, prevState: IState): any;
|
|
17
|
+
shouldComponentUpdate: (_nextProps: IProps, nextState: IState) => boolean;
|
|
18
|
+
itemList: ListSet;
|
|
19
|
+
preset: Preset;
|
|
20
|
+
constructor(props: IProps);
|
|
21
|
+
refresh: () => void;
|
|
22
|
+
_outerRef: any;
|
|
23
|
+
_resetIsScrollingTimeoutId: any;
|
|
24
|
+
field: {
|
|
25
|
+
scrollLeft: number;
|
|
26
|
+
scrollTop: number;
|
|
27
|
+
scrollHeight: number;
|
|
28
|
+
scrollWidth: number;
|
|
29
|
+
clientHeight: number;
|
|
30
|
+
clientWidth: number;
|
|
31
|
+
diffOffset: number;
|
|
32
|
+
};
|
|
33
|
+
_callOnItemsRendered: import("memoize-one").MemoizedFn<(this: any, overscanStartIndex: any, overscanStopIndex: any, visibleStartIndex: any, visibleStopIndex: any) => any>;
|
|
34
|
+
_callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
|
|
35
|
+
_callPropsCallbacks(prevProps?: any, prevState?: any): void;
|
|
36
|
+
_getSizeUploadSync: (index: number, isHorizontal: boolean) => Promise<unknown>;
|
|
37
|
+
_getRangeToRender(): number[];
|
|
38
|
+
_onScrollHorizontal: (event: any) => void;
|
|
39
|
+
_onScrollVertical: (event: any) => void;
|
|
40
|
+
_outerRefSetter: (ref: any) => void;
|
|
41
|
+
_resetIsScrollingDebounced: () => void;
|
|
42
|
+
_resetIsScrolling: () => void;
|
|
43
|
+
scrollTo(scrollOffset: number): void;
|
|
44
|
+
scrollToItem(index: number, align?: string): void;
|
|
45
|
+
componentDidMount(): void;
|
|
46
|
+
componentDidUpdate(prevProps: IProps, prevState: IState): void;
|
|
47
|
+
componentWillUnmount(): void;
|
|
48
|
+
render(): React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
|
|
49
|
+
}
|