@tarojs/components-advanced 3.6.0-beta.2 → 3.6.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/components/index.d.ts +1 -1
  2. package/dist/components/index.js +2 -1
  3. package/dist/components/index.js.map +1 -0
  4. package/dist/components/virtual-list/constants.d.ts +2 -1
  5. package/dist/components/virtual-list/constants.js +4 -1
  6. package/dist/components/virtual-list/constants.js.map +1 -0
  7. package/dist/components/virtual-list/dom-helpers.d.ts +2 -1
  8. package/dist/components/virtual-list/dom-helpers.js +33 -30
  9. package/dist/components/virtual-list/dom-helpers.js.map +1 -0
  10. package/dist/components/virtual-list/index.d.ts +3 -4
  11. package/dist/components/virtual-list/index.js +5 -102
  12. package/dist/components/virtual-list/index.js.map +1 -0
  13. package/dist/components/virtual-list/list-set.d.ts +4 -4
  14. package/dist/components/virtual-list/list-set.js +178 -222
  15. package/dist/components/virtual-list/list-set.js.map +1 -0
  16. package/dist/components/virtual-list/preset.d.ts +6 -6
  17. package/dist/components/virtual-list/preset.js +117 -148
  18. package/dist/components/virtual-list/preset.js.map +1 -0
  19. package/dist/components/virtual-list/react/index.d.ts +2 -2
  20. package/dist/components/virtual-list/react/index.js +31 -63
  21. package/dist/components/virtual-list/react/index.js.map +1 -0
  22. package/dist/components/virtual-list/react/list.d.ts +10 -5
  23. package/dist/components/virtual-list/react/list.js +347 -450
  24. package/dist/components/virtual-list/react/list.js.map +1 -0
  25. package/dist/components/virtual-list/react/validate.d.ts +4 -3
  26. package/dist/components/virtual-list/react/validate.js +59 -64
  27. package/dist/components/virtual-list/react/validate.js.map +1 -0
  28. package/dist/components/virtual-list/utils.d.ts +5 -5
  29. package/dist/components/virtual-list/utils.js +27 -28
  30. package/dist/components/virtual-list/utils.js.map +1 -0
  31. package/dist/components/virtual-list/vue/index.d.ts +6 -6
  32. package/dist/components/virtual-list/vue/index.js +10 -6
  33. package/dist/components/virtual-list/vue/index.js.map +1 -0
  34. package/dist/components/virtual-list/vue/list.d.ts +2 -2
  35. package/dist/components/virtual-list/vue/list.js +435 -474
  36. package/dist/components/virtual-list/vue/list.js.map +1 -0
  37. package/dist/components/virtual-list/vue/render.d.ts +2 -1
  38. package/dist/components/virtual-list/vue/render.js +17 -23
  39. package/dist/components/virtual-list/vue/render.js.map +1 -0
  40. package/dist/index.d.ts +2 -2
  41. package/dist/index.js +8 -2
  42. package/dist/index.js.map +1 -0
  43. package/dist/utils/convert.d.ts +3 -2
  44. package/dist/utils/convert.js +15 -11
  45. package/dist/utils/convert.js.map +1 -0
  46. package/dist/utils/index.d.ts +4 -4
  47. package/dist/utils/index.js +5 -4
  48. package/dist/utils/index.js.map +1 -0
  49. package/dist/utils/lodash.d.ts +2 -1
  50. package/dist/utils/lodash.js +10 -10
  51. package/dist/utils/lodash.js.map +1 -0
  52. package/dist/utils/math.d.ts +3 -2
  53. package/dist/utils/math.js +13 -16
  54. package/dist/utils/math.js.map +1 -0
  55. package/dist/utils/timer.d.ts +3 -3
  56. package/dist/utils/timer.js +21 -17
  57. package/dist/utils/timer.js.map +1 -0
  58. package/package.json +16 -8
@@ -1,166 +1,135 @@
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
1
  import memoizeOne from 'memoize-one';
6
- import { convertNumber2PX, isCosDistributing } 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, "wrapperField", {
17
- scrollLeft: 0,
18
- scrollTop: 0,
19
- scrollHeight: 0,
20
- scrollWidth: 0,
21
- clientHeight: 0,
22
- clientWidth: 0,
23
- diffOffset: 0
24
- });
25
- _defineProperty(this, "diffList", [0, 0, 0]);
26
- _defineProperty(this, "getItemStyleCache", memoizeOne(function (_itemSize, _layout, _direction) {
27
- // TODO: Cache of item styles, keyed by item index.
28
- return {};
29
- }));
30
- this.init(this.props);
31
- this.itemList = new ListSet(props, refresh);
32
- }
33
- _createClass(Preset, [{
34
- key: "init",
35
- value: function init(props) {
36
- this.props = props;
2
+ import '../../utils/index.js';
3
+ import ListSet from './list-set.js';
4
+ import { isHorizontalFunc, isRtlFunc } from './utils.js';
5
+ import { isCosDistributing } from '../../utils/math.js';
6
+ import { convertNumber2PX } from '../../utils/convert.js';
7
+
8
+ let INSTANCE_ID = 0;
9
+ class Preset {
10
+ constructor(props, refresh) {
11
+ this.props = props;
12
+ this.refresh = refresh;
13
+ this.wrapperField = {
14
+ scrollLeft: 0,
15
+ scrollTop: 0,
16
+ scrollHeight: 0,
17
+ scrollWidth: 0,
18
+ clientHeight: 0,
19
+ clientWidth: 0,
20
+ diffOffset: 0
21
+ };
22
+ this.diffList = [0, 0, 0];
23
+ this.getItemStyleCache = memoizeOne((_itemSize, _layout, _direction) => {
24
+ // TODO: Cache of item styles, keyed by item index.
25
+ return {};
26
+ });
27
+ this.init(this.props);
28
+ this.itemList = new ListSet(props, refresh);
37
29
  }
38
- }, {
39
- key: "update",
40
- value: function update(props) {
41
- this.props = props;
42
- this.itemList.update(props);
30
+ init(props) {
31
+ this.props = props;
43
32
  }
44
- }, {
45
- key: "id",
46
- get: function get() {
47
- return "virtual-list-".concat(INSTANCE_ID++);
33
+ update(props) {
34
+ this.props = props;
35
+ this.itemList.update(props);
48
36
  }
49
- }, {
50
- key: "isHorizontal",
51
- get: function get() {
52
- return isHorizontalFunc(this.props);
37
+ get id() {
38
+ return `virtual-list-${INSTANCE_ID++}`;
53
39
  }
54
- }, {
55
- key: "isRtl",
56
- get: function get() {
57
- return isRtlFunc(this.props);
40
+ get isHorizontal() {
41
+ return isHorizontalFunc(this.props);
58
42
  }
59
- }, {
60
- key: "isRelative",
61
- get: function get() {
62
- return this.props.position === 'relative';
43
+ get isRtl() {
44
+ return isRtlFunc(this.props);
63
45
  }
64
- }, {
65
- key: "placeholderCount",
66
- get: function get() {
67
- return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount;
46
+ get isRelative() {
47
+ return this.props.position === 'relative';
68
48
  }
69
- }, {
70
- key: "outerTagName",
71
- get: function get() {
72
- return this.props.outerElementType || this.props.outerTagName || 'div';
49
+ get placeholderCount() {
50
+ return this.props.placeholderCount >= 0 ? this.props.placeholderCount : this.props.overscanCount;
73
51
  }
74
- }, {
75
- key: "innerTagName",
76
- get: function get() {
77
- return this.props.innerElementType || this.props.innerTagName || 'div';
52
+ get outerTagName() {
53
+ return this.props.outerElementType || this.props.outerTagName || 'div';
78
54
  }
79
- }, {
80
- key: "itemTagName",
81
- get: function get() {
82
- return this.props.itemElementType || this.props.itemTagName || 'div';
55
+ get innerTagName() {
56
+ return this.props.innerElementType || this.props.innerTagName || 'div';
83
57
  }
84
- }, {
85
- key: "field",
86
- get: function get() {
87
- return this.wrapperField;
88
- },
89
- set: function set(o) {
90
- Object.assign(this.wrapperField, o);
91
- // Object.keys(o).forEach(key => {
92
- // if (typeof o[key] === 'number' && typeof this.wrapperField[key] === 'number') {
93
- // this.wrapperField[key] = o[key]
94
- // }
95
- // })
58
+ get itemTagName() {
59
+ return this.props.itemElementType || this.props.itemTagName || 'div';
96
60
  }
97
- }, {
98
- key: "isShaking",
99
- value: function isShaking(diff) {
100
- var list = this.diffList.slice(-3);
101
- this.diffList.push(diff);
102
- return list.findIndex(function (e) {
103
- return Math.abs(e) === Math.abs(diff);
104
- }) !== -1 || isCosDistributing(this.diffList.slice(-4));
61
+ get field() {
62
+ return this.wrapperField;
105
63
  }
106
- }, {
107
- key: "getItemStyle",
108
- value: function getItemStyle(index) {
109
- var _this$props = this.props,
110
- direction = _this$props.direction,
111
- itemSize = _this$props.itemSize,
112
- layout = _this$props.layout,
113
- shouldResetStyleCacheOnItemSizeChange = _this$props.shouldResetStyleCacheOnItemSizeChange;
114
- var itemStyleCache = this.getItemStyleCache(shouldResetStyleCacheOnItemSizeChange ? itemSize : false, shouldResetStyleCacheOnItemSizeChange ? layout : false, shouldResetStyleCacheOnItemSizeChange ? direction : false);
115
- var style;
116
- var offset = convertNumber2PX(this.itemList.getOffsetSize(index));
117
- var size = convertNumber2PX(this.itemList.getSize(index));
118
- var isHorizontal = this.isHorizontal;
119
- var isRtl = this.isRtl;
120
- if (itemStyleCache.hasOwnProperty(index)) {
121
- // Note: style is frozen.
122
- style = _objectSpread({}, itemStyleCache[index]);
123
- if (isHorizontal) {
124
- style.width = size;
125
- if (!this.isRelative) {
126
- if (isRtl) {
127
- style.right = offset;
128
- } else {
129
- style.left = offset;
64
+ set field(o) {
65
+ Object.assign(this.wrapperField, o);
66
+ // Object.keys(o).forEach(key => {
67
+ // if (typeof o[key] === 'number' && typeof this.wrapperField[key] === 'number') {
68
+ // this.wrapperField[key] = o[key]
69
+ // }
70
+ // })
71
+ }
72
+ isShaking(diff) {
73
+ const list = this.diffList.slice(-3);
74
+ this.diffList.push(diff);
75
+ return list.findIndex(e => Math.abs(e) === Math.abs(diff)) !== -1 || isCosDistributing(this.diffList.slice(-4));
76
+ }
77
+ getItemStyle(index) {
78
+ const { direction, itemSize, layout, shouldResetStyleCacheOnItemSizeChange } = this.props;
79
+ const itemStyleCache = this.getItemStyleCache(shouldResetStyleCacheOnItemSizeChange ? itemSize : false, shouldResetStyleCacheOnItemSizeChange ? layout : false, shouldResetStyleCacheOnItemSizeChange ? direction : false);
80
+ let style;
81
+ const offset = convertNumber2PX(this.itemList.getOffsetSize(index));
82
+ const size = convertNumber2PX(this.itemList.getSize(index));
83
+ const isHorizontal = this.isHorizontal;
84
+ const isRtl = this.isRtl;
85
+ if (itemStyleCache.hasOwnProperty(index)) {
86
+ // Note: style is frozen.
87
+ style = Object.assign({}, itemStyleCache[index]);
88
+ if (isHorizontal) {
89
+ style.width = size;
90
+ if (!this.isRelative) {
91
+ if (isRtl) {
92
+ style.right = offset;
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
+ }
130
104
  }
131
- }
132
- } else {
133
- style.height = size;
134
- if (!this.isRelative) {
135
- style.top = offset;
136
- }
137
105
  }
138
- } else {
139
- if (this.isRelative) {
140
- itemStyleCache[index] = style = {
141
- height: !isHorizontal ? size : '100%',
142
- width: isHorizontal ? size : '100%'
143
- };
144
- } else {
145
- var offsetHorizontal = isHorizontal ? offset : 0;
146
- itemStyleCache[index] = style = {
147
- position: 'absolute',
148
- left: !isRtl ? offsetHorizontal : undefined,
149
- right: isRtl ? offsetHorizontal : undefined,
150
- top: !isHorizontal ? offset : 0,
151
- height: !isHorizontal ? size : '100%',
152
- width: isHorizontal ? size : '100%'
153
- };
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
+ };
123
+ }
154
124
  }
155
- }
156
- for (var k in style) {
157
- if (style.hasOwnProperty(k)) {
158
- style[k] = convertNumber2PX(style[k]);
125
+ for (const k in style) {
126
+ if (style.hasOwnProperty(k)) {
127
+ style[k] = convertNumber2PX(style[k]);
128
+ }
159
129
  }
160
- }
161
- return style;
130
+ return style;
162
131
  }
163
- }]);
164
- return Preset;
165
- }();
166
- export { Preset as default };
132
+ }
133
+
134
+ export { Preset as default };
135
+ //# sourceMappingURL=preset.js.map
@@ -0,0 +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,4 +1,4 @@
1
1
  import React from 'react';
2
- import type { VirtualListProps } from '../';
2
+ import { VirtualListProps } from "../index";
3
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>>;
4
- export default VirtualList;
4
+ export { VirtualList as default };
@@ -1,67 +1,35 @@
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"];
1
+ import { __rest } from 'tslib';
5
2
  import { ScrollView, View } from '@tarojs/components';
6
3
  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));
4
+ import { convertPX2Int } from '../../../utils/convert.js';
5
+ import List from './list.js';
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));
34
17
  });
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 ('children' in rest) {
49
- console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.');
50
- rest.item = rest.children;
51
- }
52
- if (rest.item instanceof Array) {
53
- console.warn('Taro(VirtualList): item should not be an array');
54
- rest.item = rest.item[0];
55
- }
56
- return React.createElement(List, _objectSpread(_objectSpread({
57
- ref: ref
58
- }, rest), {}, {
59
- itemElementType: itemElementType,
60
- innerElementType: innerElementType,
61
- outerElementType: OuterScrollView,
62
- direction: direction,
63
- initialScrollOffset: initialScrollOffset,
64
- overscanCount: overscanCount
65
- }));
18
+ 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"]);
20
+ if ('children' in rest) {
21
+ console.warn('Taro(VirtualList): children props have been deprecated. ' + 'Please use the item props instead.');
22
+ rest.item = rest.children;
23
+ }
24
+ if (rest.item instanceof Array) {
25
+ console.warn('Taro(VirtualList): item should not be an array');
26
+ rest.item = rest.item[0];
27
+ }
28
+ return React.createElement(List, Object.assign(Object.assign({ ref }, rest), { itemElementType,
29
+ innerElementType, outerElementType: OuterScrollView, direction,
30
+ initialScrollOffset,
31
+ overscanCount }));
66
32
  });
67
- export default VirtualList;
33
+
34
+ export { VirtualList as default };
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 { convertPX2Int } from '../../../utils/convert'\nimport List from './list'\n\nimport type { BaseEventOrig } from '@tarojs/components'\nimport type { VirtualListProps } from '../'\nimport type { IProps } from '../preset'\n\nconst OuterScrollView = React.forwardRef(\n function OuterScrollView (props, ref) {\n const { style, onScroll, onScrollNative, layout, ...rest } = props as IProps\n const handleScroll = (event: BaseEventOrig<VirtualListProps.IVirtualListEventDetail>) => {\n onScroll({\n ...event as any,\n currentTarget: {\n ...event.detail,\n clientWidth: convertPX2Int(style.width),\n clientHeight: convertPX2Int(style.height)\n } as any\n })\n\n if (typeof onScrollNative === 'function') {\n onScrollNative(event)\n }\n }\n\n return React.createElement<any>(ScrollView, {\n ref,\n style,\n scrollY: layout === 'vertical',\n scrollX: layout === 'horizontal',\n onScroll: handleScroll,\n ...rest\n })\n }\n)\n\nconst VirtualList = React.forwardRef(function VirtualList (props: VirtualListProps, ref) {\n const {\n direction = 'ltr',\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 itemElementType,\n innerElementType,\n outerElementType: OuterScrollView,\n direction,\n initialScrollOffset,\n overscanCount\n })\n})\n\nexport default VirtualList\n"],"names":[],"mappings":";;;;;;AAUA,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CACtC,SAAS,eAAe,CAAE,KAAK,EAAE,GAAG,EAAA;AAClC,IAAA,MAAM,KAAuD,KAAe,EAAtE,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAA6B,GAAA,EAAA,EAAxB,IAAI,GAAlD,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,CAAoD,CAAkB,CAAA;AAC5E,IAAA,MAAM,YAAY,GAAG,CAAC,KAA8D,KAAI;AACtF,QAAA,QAAQ,CACH,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAY,CACf,EAAA,EAAA,aAAa,EAAE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,KAAK,CAAC,MAAM,CAAA,EAAA,EACf,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAA,CACnC,IACR,CAAA;AAEF,QAAA,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;YACxC,cAAc,CAAC,KAAK,CAAC,CAAA;AACtB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,OAAO,KAAK,CAAC,aAAa,CAAM,UAAU,kBACxC,GAAG;AACH,QAAA,KAAK,EACL,OAAO,EAAE,MAAM,KAAK,UAAU,EAC9B,OAAO,EAAE,MAAM,KAAK,YAAY,EAChC,QAAQ,EAAE,YAAY,EACnB,EAAA,IAAI,EACP,CAAA;AACJ,CAAC,CACF,CAAA;AAEK,MAAA,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,WAAW,CAAE,KAAuB,EAAE,GAAG,EAAA;AACrF,IAAA,MAAM,EAOF,GAAA,KAAe,EAPb,EACJ,SAAS,GAAG,KAAK,EACjB,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,CAAC,EACvB,aAAa,GAAG,CAAC,EAAA,GAAA,EAEA,EADd,IAAI,GANH,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,eAAA,CAOL,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,eAAe;AACf,QAAA,gBAAgB,EAChB,gBAAgB,EAAE,eAAe,EACjC,SAAS;QACT,mBAAmB;AACnB,QAAA,aAAa,IACb,CAAA;AACJ,CAAC;;;;"}
@@ -1,8 +1,8 @@
1
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 {
2
+ import ListSet from "../list-set";
3
+ import Preset from "../preset";
4
+ import { IProps } from "../preset";
5
+ interface IState {
6
6
  id: string;
7
7
  instance: List;
8
8
  isScrolling: boolean;
@@ -11,7 +11,7 @@ export interface IState {
11
11
  scrollUpdateWasRequested: boolean;
12
12
  refreshCount: number;
13
13
  }
14
- export default class List extends React.PureComponent<IProps, IState> {
14
+ declare class List extends React.PureComponent<IProps, IState> {
15
15
  static defaultProps: IProps;
16
16
  static getDerivedStateFromProps(nextProps: IProps, prevState: IState): any;
17
17
  itemList: ListSet;
@@ -24,6 +24,10 @@ export default class List extends React.PureComponent<IProps, IState> {
24
24
  _callOnScroll: import("memoize-one").MemoizedFn<(this: any, scrollDirection: any, scrollOffset: any, scrollUpdateWasRequested: any, detail: any) => void>;
25
25
  _callPropsCallbacks(prevProps?: any, prevState?: any): void;
26
26
  _getSizeUploadSync: (index: number, isHorizontal: boolean) => Promise<unknown>;
27
+ // Lazily create and cache item styles while scrolling,
28
+ // So that pure component sCU will prevent re-renders.
29
+ // We maintain this cache, and pass a style prop rather than index,
30
+ // So that List can clear cached styles and force item re-render if necessary.
27
31
  _getRangeToRender(): number[];
28
32
  _onScrollHorizontal: (event: any) => void;
29
33
  _onScrollVertical: (event: any) => void;
@@ -37,3 +41,4 @@ export default class List extends React.PureComponent<IProps, IState> {
37
41
  componentWillUnmount(): void;
38
42
  render(): React.ReactElement<{}, string | React.JSXElementConstructor<any>>;
39
43
  }
44
+ export { IState, List as default };