@tarojs/components-react 4.1.12-beta.0 → 4.1.12-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/picker/picker-group.js +2 -5
- package/dist/components/picker/picker-group.js.map +1 -1
- package/dist/components/refresher/index.js +5 -5
- package/dist/components/refresher/index.js.map +1 -1
- package/dist/components/scroll-view/index.js +41 -14
- package/dist/components/scroll-view/index.js.map +1 -1
- package/dist/contexts/ScrollElementContext.js +6 -0
- package/dist/contexts/ScrollElementContext.js.map +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/original/components/picker/picker-group.js +2 -5
- package/dist/original/components/picker/picker-group.js.map +1 -1
- package/dist/original/components/refresher/index.js +5 -5
- package/dist/original/components/refresher/index.js.map +1 -1
- package/dist/original/components/scroll-view/index.js +41 -14
- package/dist/original/components/scroll-view/index.js.map +1 -1
- package/dist/original/contexts/ScrollElementContext.js +6 -0
- package/dist/original/contexts/ScrollElementContext.js.map +1 -0
- package/dist/original/index.js +2 -1
- package/dist/original/index.js.map +1 -1
- package/dist/solid/components/picker/picker-group.js +2 -5
- package/dist/solid/components/picker/picker-group.js.map +1 -1
- package/dist/solid/components/refresher/index.js +5 -5
- package/dist/solid/components/refresher/index.js.map +1 -1
- package/dist/solid/components/scroll-view/index.js +45 -18
- package/dist/solid/components/scroll-view/index.js.map +1 -1
- package/dist/solid/contexts/ScrollElementContext.js +6 -0
- package/dist/solid/contexts/ScrollElementContext.js.map +1 -0
- package/dist/solid/index.js +1 -1
- package/package.json +6 -6
|
@@ -84,14 +84,12 @@ function PickerGroupBasic(props) {
|
|
|
84
84
|
});
|
|
85
85
|
}, []);
|
|
86
86
|
React.useEffect(() => {
|
|
87
|
-
var _a
|
|
87
|
+
var _a;
|
|
88
88
|
if (process.env.TARO_PLATFORM === 'harmony') {
|
|
89
89
|
itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current;
|
|
90
90
|
} else {
|
|
91
|
-
|
|
92
|
-
if (scrollViewRef.current && ((_b = scrollViewRef.current) === null || _b === void 0 ? void 0 : _b.scrollHeight)) {
|
|
91
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight)) {
|
|
93
92
|
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
94
|
-
console.error('itemHeightRef.current', itemHeightRef.current, scrollViewRef.current.scrollHeight, scrollViewRef.current.childNodes.length);
|
|
95
93
|
} else {
|
|
96
94
|
console.warn('Height measurement anomaly');
|
|
97
95
|
}
|
|
@@ -105,7 +103,6 @@ function PickerGroupBasic(props) {
|
|
|
105
103
|
React.useEffect(() => {
|
|
106
104
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
107
105
|
const baseValue = selectedIndex * itemHeightRef.current;
|
|
108
|
-
console.error('baseValue', baseValue, selectedIndex, itemHeightRef.current);
|
|
109
106
|
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current);
|
|
110
107
|
setCurrentIndex(selectedIndex);
|
|
111
108
|
}
|
|
@@ -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 console.error('scrollViewRef.current', scrollViewRef.current && scrollViewRef.current?.scrollHeight)\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeight) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n console.error('itemHeightRef.current', 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 console.error('baseValue', 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","error","_a","scrollHeight","_b","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\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,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
const Refresher = () => {
|
|
2
|
+
return null;
|
|
3
|
+
};
|
|
4
|
+
Refresher.displayName = 'Refresher';
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
const Refresher = View;
|
|
5
|
-
|
|
6
|
-
export { Refresher as default };
|
|
6
|
+
export { Refresher, Refresher as default };
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/refresher/index.
|
|
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,8 +1,9 @@
|
|
|
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';
|
|
4
5
|
import { throttle, createForwardRefComponent } from '../../utils/index.js';
|
|
5
|
-
import { useRef, useEffect } from '../../utils/hooks.react.js';
|
|
6
|
+
import { useRef, useState, useEffect } from '../../utils/hooks.react.js';
|
|
6
7
|
import { jsx } from 'react/jsx-runtime';
|
|
7
8
|
|
|
8
9
|
function easeOutScroll() {
|
|
@@ -63,12 +64,14 @@ function scrollHorizontal(container, scrollLeft, left, isAnimation) {
|
|
|
63
64
|
scrollLeft.current = left;
|
|
64
65
|
}
|
|
65
66
|
function ScrollView(props) {
|
|
67
|
+
var _a;
|
|
66
68
|
const _scrollTop = useRef(null);
|
|
67
69
|
const _scrollLeft = useRef(null);
|
|
68
70
|
const container = useRef(null);
|
|
69
71
|
const scrollEndTimerRef = useRef(null);
|
|
70
72
|
const isScrollingRef = useRef(false);
|
|
71
73
|
const isInitializedRef = useRef(false);
|
|
74
|
+
const [containerHeight, setContainerHeight] = useState(0);
|
|
72
75
|
const onTouchMove = e => {
|
|
73
76
|
e.stopPropagation();
|
|
74
77
|
};
|
|
@@ -213,20 +216,44 @@ function ScrollView(props) {
|
|
|
213
216
|
}
|
|
214
217
|
};
|
|
215
218
|
}, []);
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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);
|
|
221
226
|
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
+
})
|
|
230
257
|
});
|
|
231
258
|
}
|
|
232
259
|
var index = createForwardRefComponent(ScrollView);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/scroll-view/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport { isFunction } from '@tarojs/shared'\nimport classNames from 'classnames'\n\nimport { createForwardRefComponent, throttle } from '../../utils'\nimport { useEffect, useRef } from '../../utils/hooks'\n\nimport type React from 'react'\n\nfunction easeOutScroll (from = 0, to = 0, callback) {\n if (from === to || typeof from !== 'number') {\n return\n }\n const change = to - from\n const dur = 500\n const sTime = +new Date()\n function linear (t, b, c, d) {\n return (c * t) / d + b\n }\n const isLarger = to >= from\n\n function step () {\n from = linear(+new Date() - sTime, from, change, dur)\n if ((isLarger && from >= to) || (!isLarger && to >= from)) {\n callback(to)\n return\n }\n callback(from)\n requestAnimationFrame(step)\n }\n step()\n}\n\nfunction scrollIntoView (id = '', isHorizontal = false, animated = true, scrollIntoViewAlignment?: ScrollLogicalPosition) {\n document.querySelector(`#${id}`)?.scrollIntoView({\n behavior: animated ? 'smooth' : 'auto',\n block: !isHorizontal ? (scrollIntoViewAlignment || 'center') : 'center',\n inline: isHorizontal ? (scrollIntoViewAlignment || 'start') : 'start'\n })\n}\n\nfunction scrollVertical (container, scrollTop, top, isAnimation) {\n if (isAnimation) {\n easeOutScroll(scrollTop.current, top, pos => {\n if (container.current) container.current.scrollTop = pos\n })\n } else {\n if (container.current) container.current.scrollTop = top\n }\n scrollTop.current = top\n}\n\nfunction scrollHorizontal (container, scrollLeft, left, isAnimation) {\n if (isAnimation) {\n easeOutScroll(scrollLeft.current, left, pos => {\n if (container.current) container.current.scrollLeft = pos\n })\n } else {\n if (container.current) container.current.scrollLeft = left\n }\n scrollLeft.current = left\n}\n\ninterface IProps extends React.HTMLAttributes<HTMLDivElement> {\n scrollX: boolean\n scrollY: boolean\n upperThreshold: number\n lowerThreshold: number\n scrollTop: number\n scrollLeft: number\n scrollIntoView?: string\n scrollIntoViewAlignment?: ScrollLogicalPosition\n scrollWithAnimation: boolean\n enableBackToTop?: boolean\n forwardedRef?: React.MutableRefObject<HTMLDivElement>\n onScrollToUpper: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScrollToLower: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScroll: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScrollStart?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScrollEnd?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onTouchMove: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onTouchStart?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onTouchEnd?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n showScrollbar?: boolean // 新增参数,默认true\n enhanced?: boolean // 新增参数,默认false\n}\n\nfunction ScrollView (props: IProps) {\n const _scrollTop = useRef<any>(null)\n const _scrollLeft = useRef<any>(null)\n const container = useRef<any>(null)\n const scrollEndTimerRef = useRef<NodeJS.Timeout | null>(null)\n const isScrollingRef = useRef<boolean>(false)\n const isInitializedRef = useRef<boolean>(false)\n const onTouchMove = (e) => {\n e.stopPropagation()\n }\n\n const handleScroll = (props: IProps, isInit = false) => {\n // scrollIntoView\n if (\n props.scrollIntoView &&\n typeof props.scrollIntoView === 'string' &&\n document &&\n document.querySelector &&\n document.querySelector(`#${props.scrollIntoView}`)\n ) {\n const isHorizontal = props.scrollX && !props.scrollY\n if (isInit) {\n setTimeout(() => scrollIntoView(props.scrollIntoView, props.scrollWithAnimation, isHorizontal, props.scrollIntoViewAlignment), 500)\n } else {\n scrollIntoView(props.scrollIntoView, props.scrollWithAnimation, isHorizontal, props.scrollIntoViewAlignment)\n }\n } else {\n const isAnimation = !!props.scrollWithAnimation\n // Y 轴滚动\n if (props.scrollY && typeof props.scrollTop === 'number' && props.scrollTop !== _scrollTop.current) {\n setTimeout(() => scrollVertical(container, _scrollTop, props.scrollTop, isAnimation), 10)\n }\n // X 轴滚动\n if (props.scrollX && typeof props.scrollLeft === 'number' && props.scrollLeft !== _scrollLeft.current) {\n setTimeout(() => scrollHorizontal(container, _scrollLeft, props.scrollLeft, isAnimation), 10)\n }\n }\n }\n\n useEffect(() => {\n handleScroll(props, true)\n isInitializedRef.current = true\n }, [])\n\n // 监听 scrollTop、scrollLeft、scrollIntoView 的变化(排除初始化)\n useEffect(() => {\n if (isInitializedRef.current && container.current) {\n handleScroll(props, false)\n }\n }, [props.scrollTop, props.scrollLeft, props.scrollIntoView])\n\n const {\n className,\n style = {},\n onScroll,\n onScrollToUpper,\n onScrollToLower,\n scrollX,\n scrollY,\n showScrollbar = true, // 默认显示滚动条\n enhanced = false // 默认不增强\n } = props\n let { upperThreshold = 50, lowerThreshold = 50 } = props\n const cls = classNames(\n 'taro-scroll',\n {\n 'taro-scroll-view__scroll-x': scrollX,\n 'taro-scroll-view__scroll-y': scrollY,\n 'taro-scroll--hidebar': enhanced === true && showScrollbar === false,\n 'taro-scroll--enhanced': enhanced === true\n },\n className\n )\n upperThreshold = Number(upperThreshold)\n lowerThreshold = Number(lowerThreshold)\n const upperAndLower = e => {\n if (!container.current) return\n const { offsetWidth, offsetHeight, scrollLeft, scrollTop, scrollHeight, scrollWidth } = container.current\n if (\n onScrollToLower &&\n ((props.scrollY && offsetHeight + scrollTop + lowerThreshold >= scrollHeight) ||\n (props.scrollX && offsetWidth + scrollLeft + lowerThreshold >= scrollWidth))\n ) {\n onScrollToLower(e)\n }\n if (\n onScrollToUpper &&\n ((props.scrollY && scrollTop <= upperThreshold) || (props.scrollX && scrollLeft <= upperThreshold))\n ) {\n onScrollToUpper(e)\n }\n }\n const upperAndLowerThrottle = throttle(upperAndLower, 200)\n const _onScroll = e => {\n const { scrollLeft, scrollTop, scrollHeight, scrollWidth } = container.current\n _scrollLeft.current = scrollLeft\n _scrollTop.current = scrollTop\n Object.defineProperty(e, 'detail', {\n enumerable: true,\n writable: true,\n value: {\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n }\n })\n\n // 处理滚动开始\n if (!isScrollingRef.current) {\n isScrollingRef.current = true\n if (props.onScrollStart) {\n props.onScrollStart(e)\n }\n }\n\n // 清除滚动结束定时器\n if (scrollEndTimerRef.current) {\n clearTimeout(scrollEndTimerRef.current)\n scrollEndTimerRef.current = null\n }\n\n // 设置滚动结束定时器(150ms 无滚动事件后触发)\n if (props.onScrollEnd) {\n scrollEndTimerRef.current = setTimeout(() => {\n if (isScrollingRef.current) {\n isScrollingRef.current = false\n props.onScrollEnd?.(e)\n }\n scrollEndTimerRef.current = null\n }, 150)\n }\n\n upperAndLowerThrottle(e)\n onScroll && onScroll(e)\n }\n const _onTouchMove = e => {\n isFunction(props.onTouchMove) ? props.onTouchMove(e) : onTouchMove(e)\n }\n const _onTouchStart = e => {\n if (isFunction(props.onTouchStart)) {\n props.onTouchStart(e)\n }\n }\n const _onTouchEnd = e => {\n if (isFunction(props.onTouchEnd)) {\n props.onTouchEnd(e)\n }\n }\n // 清理定时器\n useEffect(() => {\n return () => {\n if (scrollEndTimerRef.current) {\n clearTimeout(scrollEndTimerRef.current)\n scrollEndTimerRef.current = null\n }\n }\n }, [])\n\n return (\n <div\n ref={e => {\n if (e) {\n container.current = e\n if (props.forwardedRef) props.forwardedRef.current = e\n }\n }}\n style={style}\n className={cls}\n onScroll={_onScroll}\n onTouchMove={_onTouchMove}\n onTouchStart={_onTouchStart}\n onTouchEnd={_onTouchEnd}\n >\n {props.children}\n </div>\n )\n}\n\nexport default createForwardRefComponent(ScrollView)\n"],"names":["easeOutScroll","from","arguments","length","undefined","to","callback","change","dur","sTime","Date","linear","t","b","c","d","isLarger","step","requestAnimationFrame","scrollIntoView","id","isHorizontal","animated","scrollIntoViewAlignment","_a","document","querySelector","behavior","block","inline","scrollVertical","container","scrollTop","top","isAnimation","current","pos","scrollHorizontal","scrollLeft","left","ScrollView","props","_scrollTop","useRef","_scrollLeft","scrollEndTimerRef","isScrollingRef","isInitializedRef","onTouchMove","e","stopPropagation","handleScroll","isInit","scrollX","scrollY","setTimeout","scrollWithAnimation","useEffect","className","style","onScroll","onScrollToUpper","onScrollToLower","showScrollbar","enhanced","upperThreshold","lowerThreshold","cls","classNames","Number","upperAndLower","offsetWidth","offsetHeight","scrollHeight","scrollWidth","upperAndLowerThrottle","throttle","_onScroll","Object","defineProperty","enumerable","writable","value","onScrollStart","clearTimeout","onScrollEnd","call","_onTouchMove","isFunction","_onTouchStart","onTouchStart","_onTouchEnd","onTouchEnd","_jsx","ref","forwardedRef","children","createForwardRefComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/scroll-view/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport { isFunction } from '@tarojs/shared'\nimport classNames from 'classnames'\n\nimport { ScrollElementContext } from '../../contexts/ScrollElementContext'\nimport { createForwardRefComponent, throttle } from '../../utils'\nimport { useEffect, useRef, useState } from '../../utils/hooks'\n\nimport type React from 'react'\n\nfunction easeOutScroll (from = 0, to = 0, callback) {\n if (from === to || typeof from !== 'number') {\n return\n }\n const change = to - from\n const dur = 500\n const sTime = +new Date()\n function linear (t, b, c, d) {\n return (c * t) / d + b\n }\n const isLarger = to >= from\n\n function step () {\n from = linear(+new Date() - sTime, from, change, dur)\n if ((isLarger && from >= to) || (!isLarger && to >= from)) {\n callback(to)\n return\n }\n callback(from)\n requestAnimationFrame(step)\n }\n step()\n}\n\nfunction scrollIntoView (id = '', isHorizontal = false, animated = true, scrollIntoViewAlignment?: ScrollLogicalPosition) {\n document.querySelector(`#${id}`)?.scrollIntoView({\n behavior: animated ? 'smooth' : 'auto',\n block: !isHorizontal ? (scrollIntoViewAlignment || 'center') : 'center',\n inline: isHorizontal ? (scrollIntoViewAlignment || 'start') : 'start'\n })\n}\n\nfunction scrollVertical (container, scrollTop, top, isAnimation) {\n if (isAnimation) {\n easeOutScroll(scrollTop.current, top, pos => {\n if (container.current) container.current.scrollTop = pos\n })\n } else {\n if (container.current) container.current.scrollTop = top\n }\n scrollTop.current = top\n}\n\nfunction scrollHorizontal (container, scrollLeft, left, isAnimation) {\n if (isAnimation) {\n easeOutScroll(scrollLeft.current, left, pos => {\n if (container.current) container.current.scrollLeft = pos\n })\n } else {\n if (container.current) container.current.scrollLeft = left\n }\n scrollLeft.current = left\n}\n\ninterface IProps extends React.HTMLAttributes<HTMLDivElement> {\n scrollX: boolean\n scrollY: boolean\n upperThreshold: number\n lowerThreshold: number\n scrollTop: number\n scrollLeft: number\n scrollIntoView?: string\n scrollIntoViewAlignment?: ScrollLogicalPosition\n scrollWithAnimation: boolean\n enableBackToTop?: boolean\n forwardedRef?: React.MutableRefObject<HTMLDivElement>\n onScrollToUpper: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScrollToLower: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScroll: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScrollStart?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onScrollEnd?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onTouchMove: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onTouchStart?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n onTouchEnd?: (e: React.SyntheticEvent<HTMLDivElement, Event>) => void\n showScrollbar?: boolean // 新增参数,默认true\n enhanced?: boolean // 新增参数,默认false\n /** 嵌套滚动:内容在滚动容器中的起始偏移(固定头部等场景) */\n startOffset?: number\n}\n\nfunction ScrollView (props: IProps) {\n const _scrollTop = useRef<any>(null)\n const _scrollLeft = useRef<any>(null)\n const container = useRef<any>(null)\n const scrollEndTimerRef = useRef<NodeJS.Timeout | null>(null)\n const isScrollingRef = useRef<boolean>(false)\n const isInitializedRef = useRef<boolean>(false)\n const [containerHeight, setContainerHeight] = useState(0)\n const onTouchMove = (e) => {\n e.stopPropagation()\n }\n\n const handleScroll = (props: IProps, isInit = false) => {\n // scrollIntoView\n if (\n props.scrollIntoView &&\n typeof props.scrollIntoView === 'string' &&\n document &&\n document.querySelector &&\n document.querySelector(`#${props.scrollIntoView}`)\n ) {\n const isHorizontal = props.scrollX && !props.scrollY\n if (isInit) {\n setTimeout(() => scrollIntoView(props.scrollIntoView, props.scrollWithAnimation, isHorizontal, props.scrollIntoViewAlignment), 500)\n } else {\n scrollIntoView(props.scrollIntoView, props.scrollWithAnimation, isHorizontal, props.scrollIntoViewAlignment)\n }\n } else {\n const isAnimation = !!props.scrollWithAnimation\n // Y 轴滚动\n if (props.scrollY && typeof props.scrollTop === 'number' && props.scrollTop !== _scrollTop.current) {\n setTimeout(() => scrollVertical(container, _scrollTop, props.scrollTop, isAnimation), 10)\n }\n // X 轴滚动\n if (props.scrollX && typeof props.scrollLeft === 'number' && props.scrollLeft !== _scrollLeft.current) {\n setTimeout(() => scrollHorizontal(container, _scrollLeft, props.scrollLeft, isAnimation), 10)\n }\n }\n }\n\n useEffect(() => {\n handleScroll(props, true)\n isInitializedRef.current = true\n }, [])\n\n // 监听 scrollTop、scrollLeft、scrollIntoView 的变化(排除初始化)\n useEffect(() => {\n if (isInitializedRef.current && container.current) {\n handleScroll(props, false)\n }\n }, [props.scrollTop, props.scrollLeft, props.scrollIntoView])\n\n const {\n className,\n style = {},\n onScroll,\n onScrollToUpper,\n onScrollToLower,\n scrollX,\n scrollY,\n showScrollbar = true, // 默认显示滚动条\n enhanced = false // 默认不增强\n } = props\n let { upperThreshold = 50, lowerThreshold = 50 } = props\n const cls = classNames(\n 'taro-scroll',\n {\n 'taro-scroll-view__scroll-x': scrollX,\n 'taro-scroll-view__scroll-y': scrollY,\n 'taro-scroll--hidebar': enhanced === true && showScrollbar === false,\n 'taro-scroll--enhanced': enhanced === true\n },\n className\n )\n upperThreshold = Number(upperThreshold)\n lowerThreshold = Number(lowerThreshold)\n const upperAndLower = e => {\n if (!container.current) return\n const { offsetWidth, offsetHeight, scrollLeft, scrollTop, scrollHeight, scrollWidth } = container.current\n if (\n onScrollToLower &&\n ((props.scrollY && offsetHeight + scrollTop + lowerThreshold >= scrollHeight) ||\n (props.scrollX && offsetWidth + scrollLeft + lowerThreshold >= scrollWidth))\n ) {\n onScrollToLower(e)\n }\n if (\n onScrollToUpper &&\n ((props.scrollY && scrollTop <= upperThreshold) || (props.scrollX && scrollLeft <= upperThreshold))\n ) {\n onScrollToUpper(e)\n }\n }\n const upperAndLowerThrottle = throttle(upperAndLower, 200)\n const _onScroll = e => {\n const { scrollLeft, scrollTop, scrollHeight, scrollWidth } = container.current\n _scrollLeft.current = scrollLeft\n _scrollTop.current = scrollTop\n Object.defineProperty(e, 'detail', {\n enumerable: true,\n writable: true,\n value: {\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n }\n })\n\n // 处理滚动开始\n if (!isScrollingRef.current) {\n isScrollingRef.current = true\n if (props.onScrollStart) {\n props.onScrollStart(e)\n }\n }\n\n // 清除滚动结束定时器\n if (scrollEndTimerRef.current) {\n clearTimeout(scrollEndTimerRef.current)\n scrollEndTimerRef.current = null\n }\n\n // 设置滚动结束定时器(150ms 无滚动事件后触发)\n if (props.onScrollEnd) {\n scrollEndTimerRef.current = setTimeout(() => {\n if (isScrollingRef.current) {\n isScrollingRef.current = false\n props.onScrollEnd?.(e)\n }\n scrollEndTimerRef.current = null\n }, 150)\n }\n\n upperAndLowerThrottle(e)\n onScroll && onScroll(e)\n }\n const _onTouchMove = e => {\n isFunction(props.onTouchMove) ? props.onTouchMove(e) : onTouchMove(e)\n }\n const _onTouchStart = e => {\n if (isFunction(props.onTouchStart)) {\n props.onTouchStart(e)\n }\n }\n const _onTouchEnd = e => {\n if (isFunction(props.onTouchEnd)) {\n props.onTouchEnd(e)\n }\n }\n // 清理定时器\n useEffect(() => {\n return () => {\n if (scrollEndTimerRef.current) {\n clearTimeout(scrollEndTimerRef.current)\n scrollEndTimerRef.current = null\n }\n }\n }, [])\n\n // ScrollElementContext:嵌套滚动时向子组件提供 scrollRef、containerHeight、startOffset\n useEffect(() => {\n const el = container.current\n if (!el) return\n const update = () => {\n if (container.current) {\n setContainerHeight(container.current.clientHeight)\n }\n }\n update()\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null\n if (ro) {\n ro.observe(el)\n return () => ro.disconnect()\n }\n }, [])\n\n const scrollElementContextValue = {\n scrollRef: container,\n containerHeight,\n startOffset: props.startOffset ?? 0,\n }\n\n return (\n <ScrollElementContext.Provider value={scrollElementContextValue}>\n <div\n ref={e => {\n if (e) {\n container.current = e\n if (props.forwardedRef) props.forwardedRef.current = e\n }\n }}\n style={style}\n className={cls}\n onScroll={_onScroll}\n onTouchMove={_onTouchMove}\n onTouchStart={_onTouchStart}\n onTouchEnd={_onTouchEnd}\n >\n {props.children}\n </div>\n </ScrollElementContext.Provider>\n )\n}\n\nexport default createForwardRefComponent(ScrollView)\n"],"names":["easeOutScroll","from","arguments","length","undefined","to","callback","change","dur","sTime","Date","linear","t","b","c","d","isLarger","step","requestAnimationFrame","scrollIntoView","id","isHorizontal","animated","scrollIntoViewAlignment","_a","document","querySelector","behavior","block","inline","scrollVertical","container","scrollTop","top","isAnimation","current","pos","scrollHorizontal","scrollLeft","left","ScrollView","props","_scrollTop","useRef","_scrollLeft","scrollEndTimerRef","isScrollingRef","isInitializedRef","containerHeight","setContainerHeight","useState","onTouchMove","e","stopPropagation","handleScroll","isInit","scrollX","scrollY","setTimeout","scrollWithAnimation","useEffect","className","style","onScroll","onScrollToUpper","onScrollToLower","showScrollbar","enhanced","upperThreshold","lowerThreshold","cls","classNames","Number","upperAndLower","offsetWidth","offsetHeight","scrollHeight","scrollWidth","upperAndLowerThrottle","throttle","_onScroll","Object","defineProperty","enumerable","writable","value","onScrollStart","clearTimeout","onScrollEnd","call","_onTouchMove","isFunction","_onTouchStart","onTouchStart","_onTouchEnd","onTouchEnd","el","update","clientHeight","ro","ResizeObserver","observe","disconnect","scrollElementContextValue","scrollRef","startOffset","_jsx","ScrollElementContext","Provider","children","ref","forwardedRef","createForwardRefComponent"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollElementContext.js","sources":["../../src/contexts/ScrollElementContext.tsx"],"sourcesContent":["import React from 'react'\n\n/**\n * ScrollElementContext:嵌套滚动场景下,父容器(ScrollView/List)向子组件提供滚动容器信息。\n * 子组件(WaterFlow/List)可从 Context 获取 scrollRef、containerHeight、startOffset,\n * 实现随父容器一起滚动,无需业务方手动传 scrollElement。\n */\nexport interface ScrollElementContextValue {\n /** 外层滚动容器 ref */\n scrollRef: React.MutableRefObject<HTMLElement | null>\n /** 可视区高度 */\n containerHeight: number\n /** 内容在滚动容器中的起始偏移(上方有其他内容时使用) */\n startOffset: number\n /** 内层 WaterFlow 报告 scrollHeight 时调用(List 动高联动等) */\n reportNestedHeightChange?: (scrollHeight: number) => void\n}\n\nexport const ScrollElementContext = React.createContext<ScrollElementContextValue | null>(null)\n"],"names":["ScrollElementContext","React","createContext"],"mappings":";;AAkBO,MAAMA,oBAAoB,gBAAGC,cAAK,CAACC,aAAa,CAAmC,IAAI;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,8 @@ export { default as Image } from './components/image/index.js';
|
|
|
5
5
|
export { default as Input } from './components/input/index.js';
|
|
6
6
|
export { default as Picker } from './components/picker/index.js';
|
|
7
7
|
export { default as PullDownRefresh } from './components/pull-down-refresh/index.js';
|
|
8
|
-
export {
|
|
8
|
+
export { Refresher } from './components/refresher/index.js';
|
|
9
|
+
export { ScrollElementContext } from './contexts/ScrollElementContext.js';
|
|
9
10
|
export { default as ScrollView } from './components/scroll-view/index.js';
|
|
10
11
|
export { Swiper, SwiperItem } from './components/swiper/index.js';
|
|
11
12
|
export { default as Text } from './components/text/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.react.ts"],"sourcesContent":["/* eslint-disable simple-import-sort/exports */\nexport { Ad } from '@tarojs/components/lib/react'\nexport { AdCustom } from '@tarojs/components/lib/react'\nexport { AnimationVideo } from '@tarojs/components/lib/react'\nexport { AnimationView } from '@tarojs/components/lib/react'\nexport { ArCamera } from '@tarojs/components/lib/react'\nexport { Audio } from '@tarojs/components/lib/react'\nexport { AwemeData } from '@tarojs/components/lib/react'\nexport { Block } from '@tarojs/components/lib/react'\nexport { default as Button } from './components/button'\nexport { Camera } from '@tarojs/components/lib/react'\nexport { Canvas } from '@tarojs/components/lib/react'\nexport { ChannelLive } from '@tarojs/components/lib/react'\nexport { ChannelVideo } from '@tarojs/components/lib/react'\nexport { Checkbox, CheckboxGroup } from '@tarojs/components/lib/react'\nexport { CommentDetail, CommentList } from '@tarojs/components/lib/react'\nexport { ContactButton } from '@tarojs/components/lib/react'\nexport { CoverImage } from '@tarojs/components/lib/react'\nexport { CoverView } from '@tarojs/components/lib/react'\nexport { CustomWrapper } from '@tarojs/components/lib/react'\nexport { DraggableSheet } from '@tarojs/components/lib/react'\nexport { Editor } from '@tarojs/components/lib/react'\nexport { FollowSwan } from '@tarojs/components/lib/react'\nexport { Form } from '@tarojs/components/lib/react'\nexport { FunctionalPageNavigator } from '@tarojs/components/lib/react'\nexport { GridView } from '@tarojs/components/lib/react'\nexport { GridBuilder } from '@tarojs/components/lib/react'\nexport { default as Icon } from './components/icon'\nexport { default as Image } from './components/image'\nexport { InlinePaymentPanel } from '@tarojs/components/lib/react'\nexport { default as Input } from './components/input'\nexport { KeyboardAccessory } from '@tarojs/components/lib/react'\nexport { Label } from '@tarojs/components/lib/react'\nexport { Lifestyle } from '@tarojs/components/lib/react'\nexport { Like } from '@tarojs/components/lib/react'\nexport { LivePlayer } from '@tarojs/components/lib/react'\nexport { LivePusher } from '@tarojs/components/lib/react'\nexport { ListBuilder } from '@tarojs/components/lib/react'\nexport { ListView } from '@tarojs/components/lib/react'\nexport { Login } from '@tarojs/components/lib/react'\nexport { Lottie } from '@tarojs/components/lib/react'\nexport { Map } from '@tarojs/components/lib/react'\nexport { MatchMedia } from '@tarojs/components/lib/react'\nexport { MovableArea, MovableView } from '@tarojs/components/lib/react'\nexport { NavigationBar } from '@tarojs/components/lib/react'\nexport { Navigator } from '@tarojs/components/lib/react'\nexport { NestedScrollBody } from '@tarojs/components/lib/react'\nexport { NestedScrollHeader } from '@tarojs/components/lib/react'\nexport { OfficialAccount } from '@tarojs/components/lib/react'\nexport { OpenData } from '@tarojs/components/lib/react'\nexport { OpenContainer } from '@tarojs/components/lib/react'\nexport { PageContainer } from '@tarojs/components/lib/react'\nexport { PageMeta } from '@tarojs/components/lib/react'\nexport { default as Picker } from './components/picker'\nexport { PickerView, PickerViewColumn } from '@tarojs/components/lib/react'\nexport { Progress } from '@tarojs/components/lib/react'\nexport { default as PullDownRefresh } from './components/pull-down-refresh'\n// export { PullToRefresh } from '@tarojs/components/lib/react'\nexport { default as Refresher } from './components/refresher'\nexport { Radio, RadioGroup } from '@tarojs/components/lib/react'\nexport { RichText } from '@tarojs/components/lib/react'\nexport { RootPortal } from '@tarojs/components/lib/react'\nexport { RtcRoom, RtcRoomItem } from '@tarojs/components/lib/react'\nexport { Script } from '@tarojs/components/lib/react'\nexport { default as ScrollView } from './components/scroll-view'\nexport { ShareElement } from '@tarojs/components/lib/react'\nexport { Slider } from '@tarojs/components/lib/react'\nexport { Snapshot } from '@tarojs/components/lib/react'\nexport { Span } from '@tarojs/components/lib/react'\nexport { NativeSlot, Slot } from '@tarojs/components/lib/react'\nexport { Swiper, SwiperItem } from './components/swiper'\nexport { Switch } from '@tarojs/components/lib/react'\nexport { Tabs } from '@tarojs/components/lib/react'\nexport { default as Text } from './components/text'\nexport { Textarea } from '@tarojs/components/lib/react'\nexport { Video } from '@tarojs/components/lib/react'\nexport { default as View } from './components/view'\nexport { VoipRoom } from '@tarojs/components/lib/react'\nexport { WebView } from '@tarojs/components/lib/react'\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.react.ts"],"sourcesContent":["/* eslint-disable simple-import-sort/exports */\nexport { Ad } from '@tarojs/components/lib/react'\nexport { AdCustom } from '@tarojs/components/lib/react'\nexport { AnimationVideo } from '@tarojs/components/lib/react'\nexport { AnimationView } from '@tarojs/components/lib/react'\nexport { ArCamera } from '@tarojs/components/lib/react'\nexport { Audio } from '@tarojs/components/lib/react'\nexport { AwemeData } from '@tarojs/components/lib/react'\nexport { Block } from '@tarojs/components/lib/react'\nexport { default as Button } from './components/button'\nexport { Camera } from '@tarojs/components/lib/react'\nexport { Canvas } from '@tarojs/components/lib/react'\nexport { ChannelLive } from '@tarojs/components/lib/react'\nexport { ChannelVideo } from '@tarojs/components/lib/react'\nexport { Checkbox, CheckboxGroup } from '@tarojs/components/lib/react'\nexport { CommentDetail, CommentList } from '@tarojs/components/lib/react'\nexport { ContactButton } from '@tarojs/components/lib/react'\nexport { CoverImage } from '@tarojs/components/lib/react'\nexport { CoverView } from '@tarojs/components/lib/react'\nexport { CustomWrapper } from '@tarojs/components/lib/react'\nexport { DraggableSheet } from '@tarojs/components/lib/react'\nexport { Editor } from '@tarojs/components/lib/react'\nexport { FollowSwan } from '@tarojs/components/lib/react'\nexport { Form } from '@tarojs/components/lib/react'\nexport { FunctionalPageNavigator } from '@tarojs/components/lib/react'\nexport { GridView } from '@tarojs/components/lib/react'\nexport { GridBuilder } from '@tarojs/components/lib/react'\nexport { default as Icon } from './components/icon'\nexport { default as Image } from './components/image'\nexport { InlinePaymentPanel } from '@tarojs/components/lib/react'\nexport { default as Input } from './components/input'\nexport { KeyboardAccessory } from '@tarojs/components/lib/react'\nexport { Label } from '@tarojs/components/lib/react'\nexport { Lifestyle } from '@tarojs/components/lib/react'\nexport { Like } from '@tarojs/components/lib/react'\nexport { LivePlayer } from '@tarojs/components/lib/react'\nexport { LivePusher } from '@tarojs/components/lib/react'\nexport { ListBuilder } from '@tarojs/components/lib/react'\nexport { ListView } from '@tarojs/components/lib/react'\nexport { Login } from '@tarojs/components/lib/react'\nexport { Lottie } from '@tarojs/components/lib/react'\nexport { Map } from '@tarojs/components/lib/react'\nexport { MatchMedia } from '@tarojs/components/lib/react'\nexport { MovableArea, MovableView } from '@tarojs/components/lib/react'\nexport { NavigationBar } from '@tarojs/components/lib/react'\nexport { Navigator } from '@tarojs/components/lib/react'\nexport { NestedScrollBody } from '@tarojs/components/lib/react'\nexport { NestedScrollHeader } from '@tarojs/components/lib/react'\nexport { OfficialAccount } from '@tarojs/components/lib/react'\nexport { OpenData } from '@tarojs/components/lib/react'\nexport { OpenContainer } from '@tarojs/components/lib/react'\nexport { PageContainer } from '@tarojs/components/lib/react'\nexport { PageMeta } from '@tarojs/components/lib/react'\nexport { default as Picker } from './components/picker'\nexport { PickerView, PickerViewColumn } from '@tarojs/components/lib/react'\nexport { Progress } from '@tarojs/components/lib/react'\nexport { default as PullDownRefresh } from './components/pull-down-refresh'\n// export { PullToRefresh } from '@tarojs/components/lib/react'\nexport { default as Refresher, type RefresherProps } from './components/refresher'\nexport { Radio, RadioGroup } from '@tarojs/components/lib/react'\nexport { RichText } from '@tarojs/components/lib/react'\nexport { RootPortal } from '@tarojs/components/lib/react'\nexport { RtcRoom, RtcRoomItem } from '@tarojs/components/lib/react'\nexport { Script } from '@tarojs/components/lib/react'\nexport { ScrollElementContext, type ScrollElementContextValue } from './contexts/ScrollElementContext'\nexport { default as ScrollView } from './components/scroll-view'\nexport { ShareElement } from '@tarojs/components/lib/react'\nexport { Slider } from '@tarojs/components/lib/react'\nexport { Snapshot } from '@tarojs/components/lib/react'\nexport { Span } from '@tarojs/components/lib/react'\nexport { NativeSlot, Slot } from '@tarojs/components/lib/react'\nexport { Swiper, SwiperItem } from './components/swiper'\nexport { Switch } from '@tarojs/components/lib/react'\nexport { Tabs } from '@tarojs/components/lib/react'\nexport { default as Text } from './components/text'\nexport { Textarea } from '@tarojs/components/lib/react'\nexport { Video } from '@tarojs/components/lib/react'\nexport { default as View } from './components/view'\nexport { VoipRoom } from '@tarojs/components/lib/react'\nexport { WebView } from '@tarojs/components/lib/react'\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA"}
|
|
@@ -84,14 +84,12 @@ function PickerGroupBasic(props) {
|
|
|
84
84
|
});
|
|
85
85
|
}, []);
|
|
86
86
|
React.useEffect(() => {
|
|
87
|
-
var _a
|
|
87
|
+
var _a;
|
|
88
88
|
if (process.env.TARO_PLATFORM === 'harmony') {
|
|
89
89
|
itemHeightRef.current = PICKER_LINE_HEIGHT * lengthScaleRatioRef.current;
|
|
90
90
|
} else {
|
|
91
|
-
|
|
92
|
-
if (scrollViewRef.current && ((_b = scrollViewRef.current) === null || _b === void 0 ? void 0 : _b.scrollHeight)) {
|
|
91
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight)) {
|
|
93
92
|
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
94
|
-
console.error('itemHeightRef.current', itemHeightRef.current, scrollViewRef.current.scrollHeight, scrollViewRef.current.childNodes.length);
|
|
95
93
|
} else {
|
|
96
94
|
console.warn('Height measurement anomaly');
|
|
97
95
|
}
|
|
@@ -105,7 +103,6 @@ function PickerGroupBasic(props) {
|
|
|
105
103
|
React.useEffect(() => {
|
|
106
104
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
107
105
|
const baseValue = selectedIndex * itemHeightRef.current;
|
|
108
|
-
console.error('baseValue', baseValue, selectedIndex, itemHeightRef.current);
|
|
109
106
|
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, undefined, lengthScaleRatioRef.current);
|
|
110
107
|
setCurrentIndex(selectedIndex);
|
|
111
108
|
}
|