@tarojs/components-react 4.1.12-beta.9 → 4.2.0

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 (30) hide show
  1. package/dist/components/picker/picker-group.js +40 -101
  2. package/dist/components/picker/picker-group.js.map +1 -1
  3. package/dist/components/refresher/index.js +5 -5
  4. package/dist/components/refresher/index.js.map +1 -1
  5. package/dist/components/scroll-view/index.js +14 -41
  6. package/dist/components/scroll-view/index.js.map +1 -1
  7. package/dist/index.js +1 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/original/components/picker/picker-group.js +40 -101
  10. package/dist/original/components/picker/picker-group.js.map +1 -1
  11. package/dist/original/components/refresher/index.js +5 -5
  12. package/dist/original/components/refresher/index.js.map +1 -1
  13. package/dist/original/components/scroll-view/index.js +14 -41
  14. package/dist/original/components/scroll-view/index.js.map +1 -1
  15. package/dist/original/index.js +1 -2
  16. package/dist/original/index.js.map +1 -1
  17. package/dist/solid/components/picker/picker-group.js +40 -101
  18. package/dist/solid/components/picker/picker-group.js.map +1 -1
  19. package/dist/solid/components/refresher/index.js +5 -5
  20. package/dist/solid/components/refresher/index.js.map +1 -1
  21. package/dist/solid/components/scroll-view/index.js +18 -45
  22. package/dist/solid/components/scroll-view/index.js.map +1 -1
  23. package/dist/solid/index.js +1 -1
  24. package/package.json +6 -6
  25. package/dist/contexts/ScrollElementContext.js +0 -6
  26. package/dist/contexts/ScrollElementContext.js.map +0 -1
  27. package/dist/original/contexts/ScrollElementContext.js +0 -6
  28. package/dist/original/contexts/ScrollElementContext.js.map +0 -1
  29. package/dist/solid/contexts/ScrollElementContext.js +0 -6
  30. package/dist/solid/contexts/ScrollElementContext.js.map +0 -1
@@ -12,43 +12,42 @@ const getIndicatorStyle = lineColor => {
12
12
  borderBottomColor: lineColor
13
13
  };
14
14
  };
15
- // 辅助函数:计算 lengthScaleRatio
16
- const calculateLengthScaleRatio = res => {
17
- let lengthScaleRatio = res === null || res === void 0 ? void 0 : res.lengthScaleRatio;
18
- if (lengthScaleRatio == null || lengthScaleRatio === 0) {
19
- console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用计算值');
20
- lengthScaleRatio = 1;
21
- if (res.windowWidth < 320) {
22
- lengthScaleRatio = res.windowWidth / 320;
23
- } else if (res.windowWidth >= 400 && res.windowWidth < 600) {
24
- lengthScaleRatio = res.windowWidth / 400;
25
- }
26
- const shortSide = res.windowWidth < res.windowHeight ? res.windowWidth : res.windowHeight;
27
- const isBigScreen = shortSide >= 600;
28
- if (isBigScreen) {
29
- lengthScaleRatio = shortSide / 720;
30
- }
31
- }
32
- return lengthScaleRatio;
33
- };
34
15
  // 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop
35
- const setTargetScrollTopWithScale = function (setTargetScrollTop, baseValue, randomOffset) {
36
- let lengthScaleRatio = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
16
+ const setTargetScrollTopWithScale = (setTargetScrollTop, baseValue, randomOffset) => {
37
17
  // H5 和 weapp 不参与放大计算,直接使用 baseValue
38
18
  if (process.env.TARO_ENV === 'h5' || process.env.TARO_ENV === 'weapp') {
39
19
  const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue;
40
20
  setTargetScrollTop(finalValue);
41
21
  return;
42
22
  }
43
- if (process.env.TARO_PLATFORM === 'harmony') {
44
- const scaledValue = baseValue;
45
- const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue;
46
- setTargetScrollTop(finalValue);
47
- } else {
48
- const scaledValue = baseValue * lengthScaleRatio;
49
- const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue;
50
- setTargetScrollTop(finalValue);
51
- }
23
+ Taro.getSystemInfo({
24
+ success: res => {
25
+ let lengthScaleRatio = res === null || res === void 0 ? void 0 : res.lengthScaleRatio;
26
+ if (lengthScaleRatio == null || lengthScaleRatio === 0) {
27
+ console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用计算值');
28
+ lengthScaleRatio = 1;
29
+ if (res.windowWidth < 320) {
30
+ lengthScaleRatio = res.windowWidth / 320;
31
+ } else if (res.windowWidth >= 400 && res.windowWidth < 600) {
32
+ lengthScaleRatio = res.windowWidth / 400;
33
+ }
34
+ const shortSide = res.windowWidth < res.windowHeight ? res.windowWidth : res.windowHeight;
35
+ const isBigScreen = shortSide >= 600;
36
+ if (isBigScreen) {
37
+ lengthScaleRatio = shortSide / 720;
38
+ }
39
+ }
40
+ const scaledValue = baseValue * lengthScaleRatio;
41
+ const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue;
42
+ setTargetScrollTop(finalValue);
43
+ },
44
+ fail: err => {
45
+ console.error('获取系统信息失败:', err);
46
+ // 失败时使用默认值 1
47
+ const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue;
48
+ setTargetScrollTop(finalValue);
49
+ }
50
+ });
52
51
  };
53
52
  function PickerGroupBasic(props) {
54
53
  const {
@@ -69,25 +68,10 @@ function PickerGroupBasic(props) {
69
68
  const [currentIndex, setCurrentIndex] = React.useState(selectedIndex);
70
69
  // 触摸状态用于优化用户体验
71
70
  const [isTouching, setIsTouching] = React.useState(false);
72
- const lengthScaleRatioRef = React.useRef(1);
73
71
  const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
74
- // 初始化时计算 lengthScaleRatio
75
- React.useEffect(() => {
76
- Taro.getSystemInfo({
77
- success: res => {
78
- lengthScaleRatioRef.current = calculateLengthScaleRatio(res);
79
- },
80
- fail: () => {
81
- // 失败时使用默认值 1
82
- lengthScaleRatioRef.current = 1;
83
- }
84
- });
85
- }, []);
86
72
  React.useEffect(() => {
87
73
  var _a;
88
- if (process.env.TARO_PLATFORM === 'harmony') {
89
- itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current;
90
- } else {
74
+ if (process.env.TARO_PLATFORM !== 'harmony') {
91
75
  if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight)) {
92
76
  itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
93
77
  } else {
@@ -103,7 +87,7 @@ function PickerGroupBasic(props) {
103
87
  React.useEffect(() => {
104
88
  if (scrollViewRef.current && range.length > 0 && !isTouching) {
105
89
  const baseValue = selectedIndex * itemHeightRef.current;
106
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current);
90
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
107
91
  setCurrentIndex(selectedIndex);
108
92
  }
109
93
  }, [selectedIndex, range]);
@@ -124,7 +108,7 @@ function PickerGroupBasic(props) {
124
108
  setIsTouching(false);
125
109
  const baseValue = newIndex * itemHeightRef.current;
126
110
  const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
127
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current);
111
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
128
112
  updateIndex(newIndex, columnId);
129
113
  onColumnChange === null || onColumnChange === void 0 ? void 0 : onColumnChange({
130
114
  columnId,
@@ -213,25 +197,10 @@ function PickerGroupTime(props) {
213
197
  const itemRefs = React.useRef([]);
214
198
  const [currentIndex, setCurrentIndex] = React.useState(selectedIndex);
215
199
  const [isTouching, setIsTouching] = React.useState(false);
216
- const lengthScaleRatioRef = React.useRef(1);
217
200
  const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
218
- // 初始化时计算 lengthScaleRatio
219
- React.useEffect(() => {
220
- Taro.getSystemInfo({
221
- success: res => {
222
- lengthScaleRatioRef.current = calculateLengthScaleRatio(res);
223
- },
224
- fail: () => {
225
- // 失败时使用默认值 1
226
- lengthScaleRatioRef.current = 1;
227
- }
228
- });
229
- }, []);
230
201
  React.useEffect(() => {
231
202
  var _a;
232
- if (process.env.TARO_PLATFORM === 'harmony') {
233
- itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current;
234
- } else {
203
+ if (process.env.TARO_PLATFORM !== 'harmony') {
235
204
  if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight)) {
236
205
  itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
237
206
  } else {
@@ -246,7 +215,7 @@ function PickerGroupTime(props) {
246
215
  React.useEffect(() => {
247
216
  if (scrollViewRef.current && range.length > 0 && !isTouching) {
248
217
  const baseValue = selectedIndex * itemHeightRef.current;
249
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current);
218
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
250
219
  setCurrentIndex(selectedIndex);
251
220
  }
252
221
  }, [selectedIndex, range]);
@@ -271,7 +240,7 @@ function PickerGroupTime(props) {
271
240
  if (!isLimited) {
272
241
  const baseValue = newIndex * itemHeightRef.current;
273
242
  const randomOffset = Math.random() * 0.001;
274
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current);
243
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
275
244
  }
276
245
  isCenterTimerId.current = null;
277
246
  }, 100);
@@ -354,25 +323,10 @@ function PickerGroupDate(props) {
354
323
  const scrollViewRef = React.useRef(null);
355
324
  const [currentIndex, setCurrentIndex] = React.useState(selectedIndex);
356
325
  const [isTouching, setIsTouching] = React.useState(false);
357
- const lengthScaleRatioRef = React.useRef(1);
358
326
  const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
359
- // 初始化时计算 lengthScaleRatio
360
- React.useEffect(() => {
361
- Taro.getSystemInfo({
362
- success: res => {
363
- lengthScaleRatioRef.current = calculateLengthScaleRatio(res);
364
- },
365
- fail: () => {
366
- // 失败时使用默认值 1
367
- lengthScaleRatioRef.current = 1;
368
- }
369
- });
370
- }, []);
371
327
  React.useEffect(() => {
372
328
  var _a;
373
- if (process.env.TARO_PLATFORM === 'harmony') {
374
- itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current;
375
- } else {
329
+ if (process.env.TARO_PLATFORM !== 'harmony') {
376
330
  if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight)) {
377
331
  itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
378
332
  } else {
@@ -387,7 +341,7 @@ function PickerGroupDate(props) {
387
341
  React.useEffect(() => {
388
342
  if (scrollViewRef.current && range.length > 0 && !isTouching) {
389
343
  const baseValue = selectedIndex * itemHeightRef.current;
390
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current);
344
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
391
345
  setCurrentIndex(selectedIndex);
392
346
  }
393
347
  }, [selectedIndex, range]);
@@ -408,7 +362,7 @@ function PickerGroupDate(props) {
408
362
  setIsTouching(false);
409
363
  const baseValue = newIndex * itemHeightRef.current;
410
364
  const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
411
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current);
365
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
412
366
  // 更新日期值
413
367
  if (updateDay) {
414
368
  // 解析文本中的数字(移除年、月、日等后缀)
@@ -497,26 +451,11 @@ function PickerGroupRegion(props) {
497
451
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
498
452
  const [currentIndex, setCurrentIndex] = React.useState(selectedIndex);
499
453
  const [isTouching, setIsTouching] = React.useState(false);
500
- const lengthScaleRatioRef = React.useRef(1);
501
454
  const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
502
455
  const isUserBeginScrollRef = React.useRef(false);
503
- // 初始化时计算 lengthScaleRatio
504
- React.useEffect(() => {
505
- Taro.getSystemInfo({
506
- success: res => {
507
- lengthScaleRatioRef.current = calculateLengthScaleRatio(res);
508
- },
509
- fail: () => {
510
- // 失败时使用默认值 1
511
- lengthScaleRatioRef.current = 1;
512
- }
513
- });
514
- }, []);
515
456
  React.useEffect(() => {
516
457
  var _a;
517
- if (process.env.TARO_PLATFORM === 'harmony') {
518
- itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current;
519
- } else {
458
+ if (process.env.TARO_PLATFORM !== 'harmony') {
520
459
  if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight)) {
521
460
  itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
522
461
  } else {
@@ -551,7 +490,7 @@ function PickerGroupRegion(props) {
551
490
  setIsTouching(false);
552
491
  const baseValue = newIndex * itemHeightRef.current;
553
492
  const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
554
- setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current);
493
+ setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
555
494
  updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current);
556
495
  }, 100);
557
496
  };
@@ -1 +1 @@
1
- {"version":3,"file":"picker-group.js","sources":["../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean, isUserBeginScroll?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n lineColor?: string // 选中指示线颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\nconst getIndicatorStyle = (lineColor: string): React.CSSProperties => {\n return {\n borderTopColor: lineColor,\n borderBottomColor: lineColor\n }\n}\n\n// 辅助函数:计算 lengthScaleRatio\nconst calculateLengthScaleRatio = (res: Taro.getSystemInfo.Result): number => {\n let lengthScaleRatio = (res as any)?.lengthScaleRatio\n if (lengthScaleRatio == null || lengthScaleRatio === 0) {\n console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用计算值')\n lengthScaleRatio = 1\n if (res.windowWidth < 320) {\n lengthScaleRatio = res.windowWidth / 320\n } else if (res.windowWidth >= 400 && res.windowWidth < 600) {\n lengthScaleRatio = res.windowWidth / 400\n }\n const shortSide = res.windowWidth < res.windowHeight ? res.windowWidth : res.windowHeight\n const isBigScreen = shortSide >= 600\n if (isBigScreen) {\n lengthScaleRatio = shortSide / 720\n }\n }\n return lengthScaleRatio\n}\n\n// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop\nconst setTargetScrollTopWithScale = (\n setTargetScrollTop: (value: number) => void,\n baseValue: number,\n randomOffset?: number,\n lengthScaleRatio: number = 1,\n) => {\n // H5 和 weapp 不参与放大计算,直接使用 baseValue\n if (process.env.TARO_ENV === 'h5' || process.env.TARO_ENV === 'weapp') {\n const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue\n setTargetScrollTop(finalValue)\n return\n }\n\n if (process.env.TARO_PLATFORM === 'harmony') {\n const scaledValue = baseValue\n const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue\n setTargetScrollTop(finalValue)\n } else {\n const scaledValue = baseValue * lengthScaleRatio\n const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue\n setTargetScrollTop(finalValue)\n }\n}\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const lengthScaleRatioRef = React.useRef(1)\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n\n // 初始化时计算 lengthScaleRatio\n React.useEffect(() => {\n Taro.getSystemInfo({\n success: (res) => {\n lengthScaleRatioRef.current = calculateLengthScaleRatio(res)\n },\n fail: () => {\n // 失败时使用默认值 1\n lengthScaleRatioRef.current = 1\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM === 'harmony') {\n itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current\n } else {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current)\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n isCenterTimerId.current = null\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const lengthScaleRatioRef = React.useRef(1)\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n\n // 初始化时计算 lengthScaleRatio\n React.useEffect(() => {\n Taro.getSystemInfo({\n success: (res) => {\n lengthScaleRatioRef.current = calculateLengthScaleRatio(res)\n },\n fail: () => {\n // 失败时使用默认值 1\n lengthScaleRatioRef.current = 1\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM === 'harmony') {\n itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current\n } else {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current)\n }\n isCenterTimerId.current = null\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const lengthScaleRatioRef = React.useRef(1)\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n\n // 初始化时计算 lengthScaleRatio\n React.useEffect(() => {\n Taro.getSystemInfo({\n success: (res) => {\n lengthScaleRatioRef.current = calculateLengthScaleRatio(res)\n },\n fail: () => {\n // 失败时使用默认值 1\n lengthScaleRatioRef.current = 1\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM === 'harmony') {\n itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current\n } else {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current)\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n isCenterTimerId.current = null\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const lengthScaleRatioRef = React.useRef(1)\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n\n // 初始化时计算 lengthScaleRatio\n React.useEffect(() => {\n Taro.getSystemInfo({\n success: (res) => {\n lengthScaleRatioRef.current = calculateLengthScaleRatio(res)\n },\n fail: () => {\n // 失败时使用默认值 1\n lengthScaleRatioRef.current = 1\n }\n })\n }, [])\n\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM === 'harmony') {\n itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current\n } else {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset, lengthScaleRatioRef.current)\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","getIndicatorStyle","lineColor","borderTopColor","borderBottomColor","calculateLengthScaleRatio","res","lengthScaleRatio","console","warn","windowWidth","shortSide","windowHeight","isBigScreen","setTargetScrollTopWithScale","setTargetScrollTop","baseValue","randomOffset","arguments","length","undefined","process","env","TARO_ENV","finalValue","TARO_PLATFORM","scaledValue","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","indicatorStyle","targetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","lengthScaleRatioRef","itemHeightRef","useEffect","Taro","getSystemInfo","success","current","fail","_a","scrollHeight","childNodes","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_jsx","View","id","ref","el","className","style","height","color","itemSelectedColor","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","_jsxs","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
1
+ {"version":3,"file":"picker-group.js","sources":["../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean, isUserBeginScroll?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n lineColor?: string // 选中指示线颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\nconst getIndicatorStyle = (lineColor: string): React.CSSProperties => {\n return {\n borderTopColor: lineColor,\n borderBottomColor: lineColor\n }\n}\n\n// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop\nconst setTargetScrollTopWithScale = (\n setTargetScrollTop: (value: number) => void,\n baseValue: number,\n randomOffset?: number\n) => {\n // H5 和 weapp 不参与放大计算,直接使用 baseValue\n if (process.env.TARO_ENV === 'h5' || process.env.TARO_ENV === 'weapp') {\n const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue\n setTargetScrollTop(finalValue)\n return\n }\n\n Taro.getSystemInfo({\n success: (res) => {\n let lengthScaleRatio = (res as any)?.lengthScaleRatio\n if (lengthScaleRatio == null || lengthScaleRatio === 0) {\n console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用计算值')\n lengthScaleRatio = 1\n if (res.windowWidth < 320) {\n lengthScaleRatio = res.windowWidth / 320\n } else if (res.windowWidth >= 400 && res.windowWidth < 600) {\n lengthScaleRatio = res.windowWidth / 400\n }\n const shortSide = res.windowWidth < res.windowHeight ? res.windowWidth : res.windowHeight\n const isBigScreen = shortSide >= 600\n if (isBigScreen) {\n lengthScaleRatio = shortSide / 720\n }\n }\n const scaledValue = baseValue * lengthScaleRatio\n const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue\n setTargetScrollTop(finalValue)\n },\n fail: (err) => {\n console.error('获取系统信息失败:', err)\n // 失败时使用默认值 1\n const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue\n setTargetScrollTop(finalValue)\n }\n })\n}\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n isCenterTimerId.current = null\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n }\n isCenterTimerId.current = null\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n isCenterTimerId.current = null\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const indicatorStyle = colors.lineColor ? getIndicatorStyle(colors.lineColor) : null\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View\n className=\"taro-picker__indicator\"\n {...(indicatorStyle ? { style: indicatorStyle } : {})}\n />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","getIndicatorStyle","lineColor","borderTopColor","borderBottomColor","setTargetScrollTopWithScale","setTargetScrollTop","baseValue","randomOffset","process","env","TARO_ENV","finalValue","undefined","Taro","getSystemInfo","success","res","lengthScaleRatio","console","warn","windowWidth","shortSide","windowHeight","isBigScreen","scaledValue","fail","err","error","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","indicatorStyle","targetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","TARO_PLATFORM","current","_a","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_jsx","View","id","ref","el","className","style","height","color","itemSelectedColor","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","_jsxs","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- const Refresher = () => {
2
- return null;
3
- };
4
- Refresher.displayName = 'Refresher';
1
+ import { View } from '@tarojs/components';
5
2
 
6
- export { Refresher, Refresher as default };
3
+ // TODO: Refresher 组件未实现,暂时使用 View 组件
4
+ const Refresher = View;
5
+
6
+ export { Refresher as default };
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/refresher/index.tsx"],"sourcesContent":["import React from 'react'\n\n/**\n * Refresher 组件 - 下拉刷新(标记组件)\n *\n * 以各平台 ScrollView 的 refresher 落地为准:\n * - weapp/jd/tt: ScrollView.refresher-enabled / bindRefresherPulling 等\n * - 本组件为标记组件,不渲染 DOM,仅向 List 等传配置;实际下拉逻辑由 List/ScrollView 内 useRefresher 或原生 refresher 处理。\n *\n * 高度规则:\n * - 无 children:使用默认 50px 高度\n * - 有 children:由 children 内容撑开高度\n *\n * children:用于替换「加载楼层」中间的显示内容;不传则使用默认文案(下拉刷新/释放刷新/加载中...)。\n * 小程序自定义需配合 refresherDefaultStyle=\"none\"。\n *\n * @example 使用默认文案(50px 高度)\n * <Refresher refresherEnabled refresherThreshold={50} onRefresherRefresh={fetchData} />\n *\n * @example 自定义内容(由内容撑开高度)\n * <Refresher refresherEnabled refresherDefaultStyle=\"none\" onRefresherRefresh={fetchData}>\n * <View style={{ height: 60, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n * <Text>下拉刷新</Text>\n * </View>\n * </Refresher>\n */\n\n/** 与 ScrollView.d.ts 的 refresher 相关属性、事件对齐 */\nexport interface RefresherProps {\n refresherEnabled?: boolean\n refresherThreshold?: number\n refresherDefaultStyle?: 'black' | 'white' | 'none'\n refresherBackground?: string\n refresherTriggered?: boolean\n /** 自定义刷新内容(替换默认「下拉刷新/释放刷新/加载中...」文案) */\n children?: React.ReactNode\n onRefresherPulling?: (e?: { detail?: { deltaY?: number } }) => void\n onRefresherRefresh?: () => void | Promise<void>\n onRefresherRestore?: () => void\n onRefresherAbort?: () => void\n onRefresherWillRefresh?: () => void\n onRefresherStatusChange?: (e?: { detail?: { status?: number, dy?: number } }) => void\n}\n\nconst Refresher: React.FC<RefresherProps> = () => {\n return null\n}\n\nRefresher.displayName = 'Refresher'\n\nexport { Refresher }\nexport default Refresher\n"],"names":["Refresher","displayName"],"mappings":"AA4CMA,MAAAA,SAAS,GAA6BA,MAAK;AAC/C,EAAA,OAAO,IAAI;AACb;AAEAA,SAAS,CAACC,WAAW,GAAG,WAAW;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/refresher/index.ts"],"sourcesContent":["import { View } from '@tarojs/components'\n\n// TODO: Refresher 组件未实现,暂时使用 View 组件\nconst Refresher = View\n\nexport default Refresher\n"],"names":["Refresher","View"],"mappings":";;AAEA;AACMA,MAAAA,SAAS,GAAGC;;;;"}
@@ -1,9 +1,8 @@
1
1
  import './style/index.scss.js';
2
2
  import { isFunction } from '@tarojs/shared';
3
3
  import classNames from 'classnames';
4
- import { ScrollElementContext } from '../../contexts/ScrollElementContext.js';
5
4
  import { throttle, createForwardRefComponent } from '../../utils/index.js';
6
- import { useRef, useState, useEffect } from '../../utils/hooks.react.js';
5
+ import { useRef, useEffect } from '../../utils/hooks.react.js';
7
6
  import { jsx } from 'react/jsx-runtime';
8
7
 
9
8
  function easeOutScroll() {
@@ -64,14 +63,12 @@ function scrollHorizontal(container, scrollLeft, left, isAnimation) {
64
63
  scrollLeft.current = left;
65
64
  }
66
65
  function ScrollView(props) {
67
- var _a;
68
66
  const _scrollTop = useRef(null);
69
67
  const _scrollLeft = useRef(null);
70
68
  const container = useRef(null);
71
69
  const scrollEndTimerRef = useRef(null);
72
70
  const isScrollingRef = useRef(false);
73
71
  const isInitializedRef = useRef(false);
74
- const [containerHeight, setContainerHeight] = useState(0);
75
72
  const onTouchMove = e => {
76
73
  e.stopPropagation();
77
74
  };
@@ -216,44 +213,20 @@ function ScrollView(props) {
216
213
  }
217
214
  };
218
215
  }, []);
219
- // ScrollElementContext:嵌套滚动时向子组件提供 scrollRef、containerHeight、startOffset
220
- useEffect(() => {
221
- const el = container.current;
222
- if (!el) return;
223
- const update = () => {
224
- if (container.current) {
225
- setContainerHeight(container.current.clientHeight);
216
+ return /*#__PURE__*/jsx("div", {
217
+ ref: e => {
218
+ if (e) {
219
+ container.current = e;
220
+ if (props.forwardedRef) props.forwardedRef.current = e;
226
221
  }
227
- };
228
- update();
229
- const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null;
230
- if (ro) {
231
- ro.observe(el);
232
- return () => ro.disconnect();
233
- }
234
- }, []);
235
- const scrollElementContextValue = {
236
- scrollRef: container,
237
- containerHeight,
238
- startOffset: (_a = props.startOffset) !== null && _a !== void 0 ? _a : 0
239
- };
240
- return /*#__PURE__*/jsx(ScrollElementContext.Provider, {
241
- value: scrollElementContextValue,
242
- children: /*#__PURE__*/jsx("div", {
243
- ref: e => {
244
- if (e) {
245
- container.current = e;
246
- if (props.forwardedRef) props.forwardedRef.current = e;
247
- }
248
- },
249
- style: style,
250
- className: cls,
251
- onScroll: _onScroll,
252
- onTouchMove: _onTouchMove,
253
- onTouchStart: _onTouchStart,
254
- onTouchEnd: _onTouchEnd,
255
- children: props.children
256
- })
222
+ },
223
+ style: style,
224
+ className: cls,
225
+ onScroll: _onScroll,
226
+ onTouchMove: _onTouchMove,
227
+ onTouchStart: _onTouchStart,
228
+ onTouchEnd: _onTouchEnd,
229
+ children: props.children
257
230
  });
258
231
  }
259
232
  var index = createForwardRefComponent(ScrollView);