@tarojs/components-react 4.1.12-beta.43 → 4.1.12-beta.45
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/index.js +5 -1
- package/dist/components/picker/index.js.map +1 -1
- package/dist/components/picker/picker-group.js +1 -56
- package/dist/components/picker/picker-group.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/original/components/picker/index.js +5 -1
- package/dist/original/components/picker/index.js.map +1 -1
- package/dist/original/components/picker/picker-group.js +1 -56
- package/dist/original/components/picker/picker-group.js.map +1 -1
- package/dist/original/components/picker/style/index.scss +9 -8
- package/dist/solid/components/picker/index.js +7 -1
- package/dist/solid/components/picker/index.js.map +1 -1
- package/dist/solid/components/picker/picker-group.js +1 -56
- package/dist/solid/components/picker/picker-group.js.map +1 -1
- package/dist/solid/index.css +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/picker/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport { View } from '@tarojs/components'\nimport classNames from 'classnames'\nimport React from 'react'\n\nimport {\n compareTime,\n getDayRange,\n getMonthRange,\n getYearRange,\n hoursRange,\n minutesRange,\n omit,\n verifyDate,\n verifyTime,\n verifyValue\n} from '../../utils'\nimport { PickerGroup } from './picker-group'\n\n// 定义 RegionData 类型,与 Taro 官方保持一致\nexport interface RegionData {\n value: string\n code: string\n postcode?: string\n children?: RegionData[]\n}\n\n// 稳定的空数组引用,避免每次渲染都创建新引用\nconst EMPTY_ARRAY: any[] = []\nconst EMPTY_OBJECT: Record<string, any> = {}\n\n// 语言映射函数\nfunction getLanguageText(lang?: string) {\n const isEnglish = lang === 'en-US' || lang === 'en-GB'\n return {\n confirm: isEnglish ? 'Confirm' : '确定',\n cancel: isEnglish ? 'Cancel' : '取消',\n year: isEnglish ? 'Year ' : '年',\n month: isEnglish ? 'Month ' : '月',\n day: isEnglish ? 'Day ' : '日'\n }\n}\n\n// 数据验证函数\nfunction validateRegionData(data: RegionData[], componentName = 'Picker'): { valid: boolean, error?: string } {\n if (!data) {\n return { valid: false, error: `${componentName}: regionData is required for region mode` }\n }\n\n if (!Array.isArray(data)) {\n return { valid: false, error: `${componentName}: regionData must be an array` }\n }\n\n if (data.length === 0) {\n return { valid: false, error: `${componentName}: regionData cannot be empty` }\n }\n\n // 检查数据结构\n const validateItem = (item: RegionData, path: string): { valid: boolean, error?: string } => {\n if (!item || typeof item !== 'object') {\n return { valid: false, error: `${componentName}: Invalid item at ${path}` }\n }\n\n if (!item.value || typeof item.value !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'value' field at ${path}` }\n }\n\n if (!item.code || typeof item.code !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'code' field at ${path}` }\n }\n\n if (item.postcode !== undefined && typeof item.postcode !== 'string') {\n return { valid: false, error: `${componentName}: Invalid 'postcode' field at ${path}` }\n }\n\n if (item.children && !Array.isArray(item.children)) {\n return { valid: false, error: `${componentName}: 'children' must be an array at ${path}` }\n }\n\n if (item.children) {\n for (let i = 0; i < item.children.length; i++) {\n const childResult = validateItem(item.children[i], `${path}.children[${i}]`)\n if (!childResult.valid) return childResult\n }\n }\n\n return { valid: true }\n }\n\n for (let i = 0; i < data.length; i++) {\n const result = validateItem(data[i], `regionData[${i}]`)\n if (!result.valid) return result\n }\n\n return { valid: true }\n}\n\nexport type Mode = 'selector' | 'multiSelector' | 'time' | 'date' | 'region'\nexport type Fields = 'day' | 'month' | 'year'\nexport type RegionLevel = 'province' | 'city' | 'region'\nexport type PickerValue = number | number[] | string | string[]\n\nexport interface PickerText {\n okText?: string\n cancelText?: string\n}\n\nexport interface PickerColors {\n confirmButtonColor?: string // 确定按钮颜色\n cancelButtonColor?: string // 取消按钮颜色\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n backgroundColor?: string // 面板背景色\n lineColor?: string // 指示线条颜色\n titleColor?: string // 标题颜色\n}\n\nexport interface PickerDate {\n _value: Date\n _start: Date\n _end: Date\n _updateValue: [number, number, number]\n}\n\ninterface IProps {\n mode?: Mode\n disabled?: boolean\n range?: any[]\n rangeKey?: string\n value?: PickerValue\n start?: string\n end?: string\n fields?: Fields\n name?: string\n headerText?: string\n regionData?: RegionData[] // 省市区/县数据(region 模式专用)\n level?: RegionLevel\n textProps?: PickerText\n colors?: PickerColors // 颜色配置\n onChange?: (e: { detail: { value: PickerValue, code?: string, postcode?: string } }) => void\n onColumnChange?: (e: { detail: { column: number, value: number } }) => void\n onCancel?: () => void\n children?: React.ReactNode\n forwardedRef?: React.MutableRefObject<HTMLDivElement | null>\n formType?: string\n lang?: string // 语言参数,支持 'zh-CN'、'en-US'、'en-GB'\n theme?: 'light' | 'dark' // 主题模式,默认 'light'\n /** 点击选项是否滚至选中区,默认 true */\n enableClickItemScroll?: boolean\n}\n\ninterface IState {\n pickerValue: PickerValue\n selectedIndices: number[] // 索引数组\n hidden: boolean\n fadeOut: boolean\n isWillLoadCalled: boolean\n /** time 限位后由子列消费,用于无障碍聚焦 */\n a11yTimeLimitColumnId: string | null\n a11yTimeLimitNonce: number\n}\n\n// 普通函数\nfunction getRegionColumnsCount(level: RegionLevel): number {\n switch (level) {\n case 'province': return 1\n case 'city': return 2\n case 'region': return 3\n default: return 3 // 默认显示省市区/县三列\n }\n}\n\n// 暴露给外部的 ref 类型\nexport interface PickerRef {\n showPicker: () => void\n hidePicker: () => void\n}\n\nconst Picker = React.forwardRef<PickerRef, IProps>((props, ref) => {\n const {\n mode = 'selector',\n disabled = false,\n range = EMPTY_ARRAY,\n rangeKey,\n value,\n start = '',\n end = '',\n fields = 'day',\n headerText,\n level = 'region',\n regionData,\n textProps = EMPTY_OBJECT,\n colors = EMPTY_OBJECT,\n onChange,\n onColumnChange,\n onCancel,\n children,\n formType,\n lang,\n theme = 'light',\n enableClickItemScroll = true,\n ...restProps\n } = props\n const indexRef = React.useRef<number[]>([])\n const pickerDateRef = React.useRef<PickerDate>()\n // region:首次用户滚动初始化完成前不入库\n const isInitializationCompletedRef = React.useRef(false)\n\n const [state, setState] = React.useState<IState>({\n pickerValue: value || EMPTY_ARRAY,\n selectedIndices: EMPTY_ARRAY.slice(), // 索引数组\n hidden: true,\n fadeOut: false,\n isWillLoadCalled: false,\n a11yTimeLimitColumnId: null,\n a11yTimeLimitNonce: 0\n })\n\n // 在组件内部\n const [columnsCount, setColumnsCount] = React.useState(() => getRegionColumnsCount(level))\n\n // 只在level变化时更新列数\n React.useEffect(() => {\n setColumnsCount(getRegionColumnsCount(level))\n }, [level])\n\n // 获取当前索引数组\n const getIndices = React.useCallback(() => {\n return indexRef.current\n }, [])\n\n // 处理属性变化\n const handleProps = React.useCallback(() => {\n if (mode === 'selector') {\n const val = value as number\n indexRef.current = [verifyValue(val, range) ? Math.floor(val) : 0]\n } else if (mode === 'multiSelector') {\n const val = value as number[]\n indexRef.current = []\n range.forEach((rangeItem, index) => {\n const valItem = val?.[index]\n const item = verifyValue(valItem, rangeItem as any[]) ? Math.floor(valItem) : 0\n indexRef.current.push(item)\n })\n } else if (mode === 'time') {\n let val = value as string\n if (!verifyTime(val)) {\n console.warn('time picker value illegal')\n val = '0:0'\n }\n const time = val.split(':').map(n => +n)\n\n // 在 hoursRange 和 minutesRange 中找到对应的索引\n const hourIndex = hoursRange.findIndex(item => parseInt(item) === time[0])\n const minuteIndex = minutesRange.findIndex(item => parseInt(item) === time[1])\n\n // 确保索引在有效范围内\n const safeHourIndex = hourIndex >= 0 ? hourIndex : 0 // 默认为第一项\n const safeMinuteIndex = minuteIndex >= 0 ? minuteIndex : 0 // 默认为第一项\n\n indexRef.current = [\n Math.max(0, Math.min(safeHourIndex, hoursRange.length - 1)),\n Math.max(0, Math.min(safeMinuteIndex, minutesRange.length - 1))\n ]\n } else if (mode === 'date') {\n const val = value as string\n let _value = verifyDate(val) || new Date(new Date().setHours(0, 0, 0, 0))\n const _start = verifyDate(start) || new Date('1875/01/01')\n const _end = verifyDate(end) || new Date('2100/01/01')\n if (!(_start <= _end)) {\n throw new Error(`Picker start time must be less than end time.`)\n }\n if (!(_value >= _start && _value <= _end)) {\n _value = _start\n }\n const currentYear = _value.getFullYear()\n const currentMonth = _value.getMonth() + 1\n const currentDay = _value.getDate()\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n indexRef.current = [\n yearRange.indexOf(currentYear),\n monthRange.indexOf(currentMonth),\n dayRange.indexOf(currentDay)\n ]\n // 与 props 同步时始终刷新 _updateValue,避免取消后再开时日列草稿与索引不一致\n pickerDateRef.current = {\n _value,\n _start,\n _end,\n _updateValue: [currentYear, currentMonth, currentDay]\n }\n } else if (mode === 'region') {\n // region 模式处理 - 验证数据\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n indexRef.current = Array.from({ length: columnsCount }, () => 0)\n setState(prev => ({\n ...prev,\n selectedIndices: [...indexRef.current],\n pickerValue: value || EMPTY_ARRAY\n }))\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n indexRef.current = Array.from({ length: columnsCount }, () => 0)\n setState(prev => ({\n ...prev,\n selectedIndices: [...indexRef.current],\n pickerValue: value || EMPTY_ARRAY\n }))\n return\n }\n\n // 获取列数\n const val = Array.isArray(value) ? value : []\n\n // 根据level和当前值确定索引\n indexRef.current = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData?.length) {\n indexRef.current.push(0)\n continue\n }\n let idx = 0\n if (typeof val[i] === 'number') {\n const rawIdx = val[i] as number\n idx = (rawIdx >= 0 && rawIdx < currentData.length) ? rawIdx : 0\n } else if (typeof val[i] === 'string') {\n const parsed = parseInt(val[i] as string, 10)\n idx = (parsed >= 0 && parsed < currentData.length) ? parsed : 0\n }\n indexRef.current.push(idx)\n currentData = currentData[idx]?.children || []\n }\n } else {\n throw new Error(`Picker not support \"${mode}\" mode.`)\n }\n\n // 更新索引值\n const newIndices = getIndices()\n setState(prev => ({\n ...prev,\n selectedIndices: newIndices,\n pickerValue: value || EMPTY_ARRAY\n }))\n }, [mode, range, value, start, end, fields, regionData, level, columnsCount, getIndices])\n\n // 组件初始化\n React.useEffect(() => {\n setState(prev => ({ ...prev, isWillLoadCalled: true }))\n handleProps()\n }, [])\n\n // 属性变化监听 - 添加 value 依赖以支持联动选择器\n React.useEffect(() => {\n if (state.isWillLoadCalled) {\n handleProps()\n }\n }, [handleProps, state.isWillLoadCalled, JSON.stringify(value)])\n\n // 打开时按 props 重算索引,避免未确认的滑动与 indexRef 残留导致再开抖动\n const showPicker = React.useCallback(() => {\n if (disabled) return\n isInitializationCompletedRef.current = false\n handleProps()\n setState(prev => ({\n ...prev,\n hidden: false,\n a11yTimeLimitColumnId: null\n }))\n }, [disabled, handleProps])\n\n // 隐藏 Picker\n const hidePicker = React.useCallback(() => {\n isInitializationCompletedRef.current = false\n // 动画暂时不支持,暂时屏蔽相关样式挂载逻辑\n // setState(prev => ({ ...prev, fadeOut: true }))\n // setTimeout(() => {\n // setState(prev => ({\n // ...prev,\n // hidden: true,\n // fadeOut: false\n // }))\n // }, 350)\n setState(prev => ({ ...prev, hidden: true }))\n }, [])\n\n // 更新索引\n const updateIndex = React.useCallback((index: number, columnId: string, needRevise: boolean = false, isUserScrollRef: boolean = false) => {\n const columnIndex = Number(columnId)\n let finalIndices = [...state.selectedIndices]\n finalIndices[columnIndex] = index\n let hasLimited = false\n\n // region 模式的级联更新逻辑\n if (mode === 'region' && regionData) {\n if (isUserScrollRef && !isInitializationCompletedRef.current) {\n isInitializationCompletedRef.current = true\n }\n if (!isInitializationCompletedRef.current) {\n return\n }\n // 重置后续列\n for (let i = columnIndex + 1; i < columnsCount; i++) {\n finalIndices[i] = 0\n }\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n return // 直接返回\n }\n\n // time picker\n if (needRevise && mode === 'time') {\n let startTime = start\n let endTime = end\n\n if (!verifyTime(startTime)) startTime = '00:00'\n if (!verifyTime(endTime)) endTime = '23:59'\n if (!compareTime(startTime, endTime)) return false\n\n const timeRanges = [hoursRange.slice(), minutesRange.slice()]\n // 然后基于更新后的索引数组计算时间\n const timeStr = finalIndices.map((idx, i) => {\n const rangeIdx = Math.max(0, Math.min(idx, timeRanges[i].length - 1))\n return timeRanges[i][rangeIdx] || '00'\n }).join(':')\n\n // 检查是否需要限位\n if (!compareTime(startTime, timeStr)) {\n // 修正到 start\n const startParts = startTime.split(':').map(part => parseInt(part))\n const newIndices = startParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n } else if (!compareTime(timeStr, endTime)) {\n // 修正到 end\n const endParts = endTime.split(':').map(part => parseInt(part))\n const newIndices = endParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n }\n\n if (hasLimited) {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n a11yTimeLimitColumnId: columnId,\n a11yTimeLimitNonce: prev.a11yTimeLimitNonce + 1\n }))\n } else {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n\n return hasLimited\n }\n\n // 常规更新\n finalIndices[columnIndex] = index\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n\n return false // 没有限位\n }, [start, end, mode, regionData, state.selectedIndices, columnsCount])\n\n // 更新日期\n const updateDay = React.useCallback((value: number, fields: number) => {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n\n // 更新当前字段的值\n _updateValue[fields] = value\n\n // 获取当前年月日\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const currentDay = _updateValue[2]\n\n // 保存原始值用于后面比较\n const originalValues = [..._updateValue]\n\n // 准备最终的索引数组 - 复制当前索引状态作为起点\n const finalIndices = [...state.selectedIndices]\n\n // 获取基础范围数据\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n let dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 根据修改的字段进行不同处理\n if (fields === 0) {\n // 年份索引直接更新\n finalIndices[0] = yearRange.indexOf(currentYear)\n\n // 月份限位处理\n if (monthRange.length > 0) {\n if (currentMonth > monthRange[monthRange.length - 1]) {\n _updateValue[1] = monthRange[monthRange.length - 1]\n }\n if (currentMonth < monthRange[0]) {\n _updateValue[1] = monthRange[0]\n }\n\n // 更新月份索引\n finalIndices[1] = monthRange.indexOf(_updateValue[1])\n\n // 重新计算日期范围\n dayRange = getDayRange(_start, _end, currentYear, _updateValue[1])\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n }\n } else if (fields === 1) { // 月份变化\n // 月份索引直接更新\n finalIndices[1] = monthRange.indexOf(currentMonth)\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n } else if (fields === 2) { // 日期变化\n // 日期索引直接更新\n finalIndices[2] = dayRange.indexOf(currentDay)\n }\n\n // 只在有实际变化时更新状态\n if (\n JSON.stringify(originalValues) !== JSON.stringify(_updateValue) ||\n JSON.stringify(finalIndices) !== JSON.stringify(state.selectedIndices)\n ) {\n // 一次性更新状态\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n }, [state.selectedIndices])\n\n // 处理确认\n const handleChange = React.useCallback(() => {\n const newIndices = [...state.selectedIndices]\n indexRef.current = newIndices\n\n let newValue: PickerValue = newIndices.length && mode !== 'selector'\n ? newIndices\n : newIndices[0]\n\n if (mode === 'time') {\n const range = [hoursRange.slice(), minutesRange.slice()]\n\n // 安全的时间处理,添加边界检查\n const timeArr = newIndices.map<string>((idx, i) => {\n const index = Math.max(0, Math.min(idx, range[i].length - 1))\n return range[i][index] || (i === 0 ? '00' : '00')\n })\n\n // 确保时间值有效\n const validTimeArr = timeArr.map(time => {\n const num = parseInt(time)\n return isNaN(num) ? '00' : time\n })\n\n indexRef.current = validTimeArr.map(item => parseInt(item))\n newValue = validTimeArr.join(':')\n }\n\n if (mode === 'date') {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 添加边界检查,确保索引有效\n const yearIndex = Math.min(Math.max(Math.floor(newIndices[0]), 0), yearRange.length - 1)\n const monthIndex = Math.min(Math.max(Math.floor(newIndices[1]), 0), monthRange.length - 1)\n const dayIndex = Math.min(Math.max(Math.floor(newIndices[2]), 0), dayRange.length - 1)\n\n const year = yearRange[yearIndex]\n const month = monthRange[monthIndex]\n const day = dayRange[dayIndex]\n\n // 确保所有值都存在\n if (year === undefined || month === undefined || day === undefined) {\n console.warn('Date picker: invalid date values', { year, month, day })\n return\n }\n\n if (fields === 'year') {\n newValue = year.toString()\n } else if (fields === 'month') {\n // YYYY-MM 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}`\n } else {\n // YYYY-MM-DD 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n onChange?.({ detail: { value: newValue } })\n return\n }\n\n if (mode === 'region') {\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n return\n }\n\n // 直接使用索引数组\n const selectedCodes: string[] = []\n let postcode = ''\n\n // 安全获取选中值\n let currentData = regionData\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData || currentData.length === 0) break\n\n const index = newIndices[i] || 0\n if (index < 0 || index >= currentData.length) break\n\n const item = currentData[index]\n selectedCodes.push(item.code)\n\n // 如果是最后一项,获取邮政编码\n if (i === columnsCount - 1 && item.postcode) {\n postcode = item.postcode\n }\n\n // 准备下一级数据\n currentData = item.children || []\n }\n\n // 检查索引数组长度是否符合要求\n if (newIndices.length < columnsCount) {\n console.warn('Region picker: incomplete selection')\n return\n }\n\n // 触发 onChange 事件,包含 code 信息\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newIndices\n }))\n\n onChange?.({\n detail: {\n value: newIndices,\n code: selectedCodes.join(','),\n postcode\n }\n })\n return\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n // 触发 onChange 事件,格式与原始组件一致\n onChange?.({ detail: { value: newValue } })\n }, [hidePicker, state.selectedIndices, mode, fields, onChange, regionData, columnsCount])\n\n // 处理列变化\n const handleColumnChange = React.useCallback((e: { columnId: string, index: number }) => {\n const { columnId, index } = e\n onColumnChange?.({\n detail: {\n column: Number(columnId),\n value: index\n }\n })\n }, [onColumnChange])\n\n const consumeTimeA11yLimitFocus = React.useCallback(() => {\n setState(prev => ({ ...prev, a11yTimeLimitColumnId: null }))\n }, [])\n\n // 取消时按 props 回同步索引,避免与 value 脱节\n const handleCancel = React.useCallback(() => {\n handleProps()\n hidePicker()\n onCancel?.()\n }, [handleProps, hidePicker, onCancel])\n\n // 渲染选择器组\n const renderPickerGroup = React.useMemo(() => {\n switch (mode) {\n case 'multiSelector': {\n return range.map((rangeItem, index) => (\n <PickerGroup\n key={index}\n range={rangeItem}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n onColumnChange={handleColumnChange}\n columnId={String(index)}\n selectedIndex={state.selectedIndices[index]} // 传递对应列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n ))\n }\n case 'time': {\n const timeA11yLimitFocus =\n state.a11yTimeLimitColumnId != null\n ? { nonce: state.a11yTimeLimitNonce, columnId: state.a11yTimeLimitColumnId }\n : null\n return [\n <PickerGroup\n key=\"hour\"\n mode=\"time\"\n range={hoursRange}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递小时列的selectedIndex\n colors={colors}\n timeA11yLimitFocus={timeA11yLimitFocus}\n onTimeA11yLimitFocusConsumed={consumeTimeA11yLimitFocus}\n timeA11yLimitEventNonce={state.a11yTimeLimitNonce}\n enableClickItemScroll={enableClickItemScroll}\n />,\n <PickerGroup\n key=\"minute\"\n mode=\"time\"\n range={minutesRange}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递分钟列的selectedIndex\n colors={colors}\n timeA11yLimitFocus={timeA11yLimitFocus}\n onTimeA11yLimitFocusConsumed={consumeTimeA11yLimitFocus}\n timeA11yLimitEventNonce={state.a11yTimeLimitNonce}\n enableClickItemScroll={enableClickItemScroll}\n />\n ]\n }\n case 'date': {\n if (!pickerDateRef.current) return null\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n\n const langText = getLanguageText(lang)\n const isEnglish = lang === 'en-US' || lang === 'en-GB'\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n .map(item => isEnglish ? `${langText.year}${item}` : `${item}${langText.year}`)\n const monthRange = getMonthRange(_start, _end, currentYear)\n .map(item => isEnglish ? `${langText.month}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.month}`)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n .map(item => isEnglish ? `${langText.day}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.day}`)\n\n const renderView = [\n <PickerGroup\n key={`year`}\n mode=\"date\"\n range={yearRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递年份列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n ]\n if (fields === 'month' || fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`month`}\n mode=\"date\"\n range={monthRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递月份列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n if (fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`day`}\n mode=\"date\"\n range={dayRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"2\"\n selectedIndex={state.selectedIndices[2]} // 传递日期列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n return renderView\n }\n case 'region': {\n // region 模式处理 - 自动识别数据层级\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return null\n }\n\n // 简化验证逻辑\n if (!validateRegionData(regionData, 'Picker').valid) {\n return null\n }\n\n const columns: JSX.Element[] = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (i > 0 && currentData?.length) {\n // 获取上一级选中项的children作为当前列数据\n const prevIndex = state.selectedIndices[i - 1] || 0\n if (prevIndex >= 0 && prevIndex < currentData.length) {\n currentData = currentData[prevIndex].children || []\n } else {\n currentData = []\n }\n }\n\n columns.push(\n <PickerGroup\n key={`region-${i}`}\n mode=\"region\"\n range={currentData}\n rangeKey=\"value\"\n updateIndex={updateIndex}\n columnId={String(i)}\n selectedIndex={state.selectedIndices[i]}\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n\n return columns\n }\n default:\n return (\n <PickerGroup\n range={range}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递selector模式的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, state.a11yTimeLimitColumnId, state.a11yTimeLimitNonce, consumeTimeA11yLimitFocus, columnsCount, lang, colors, enableClickItemScroll])\n\n // 动画类名控制逻辑\n const clsMask = classNames('taro-picker__mask-overlay', 'taro-picker__animate-fade-in', {\n 'taro-picker__animate-fade-out': state.fadeOut\n })\n const clsSlider = classNames('taro-picker', 'taro-picker__animate-slide-up', `taro-picker-theme-${theme}`, {\n 'taro-picker__animate-slide-down': state.fadeOut\n })\n const backgroundStyle = colors.backgroundColor ? { backgroundColor: colors.backgroundColor } : null\n const titleStyle = colors.titleColor ? { color: colors.titleColor } : null\n\n // 暴露方法给外部\n React.useImperativeHandle(ref, () => ({\n showPicker,\n hidePicker\n }))\n\n // 获取语言文本\n const langText = getLanguageText(lang)\n\n return (\n <View\n ref={ref as any} // 直接绑定 ref\n {...(formType ? { 'data-form-type': formType } : {})}\n {...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'formType'])}\n >\n <View onClick={showPicker}>\n {children}\n </View>\n {!state.hidden && (\n <View className=\"taro-picker__overlay\">\n <View className={clsMask} onClick={handleCancel} />\n <View className={clsSlider} {...(backgroundStyle ? { style: backgroundStyle } : {})}>\n <View className=\"taro-picker__hd\" {...(backgroundStyle ? { style: backgroundStyle } : {})}>\n <View\n className=\"taro-picker__action\"\n onClick={handleCancel}\n style={{ color: colors.cancelButtonColor }}\n >\n {textProps.cancelText ?? langText.cancel}\n </View>\n {headerText && (\n <View\n className=\"taro-picker__title\"\n {...(titleStyle ? { style: titleStyle } : {})}\n >\n {headerText}\n </View>\n )}\n <View\n className=\"taro-picker__action\"\n onClick={handleChange}\n style={{ color: colors.confirmButtonColor }}\n >\n {textProps.okText ?? langText.confirm}\n </View>\n </View>\n <View className=\"taro-picker__bd\" {...(backgroundStyle ? { style: backgroundStyle } : {})}>{renderPickerGroup}</View>\n </View>\n </View>\n )}\n </View>\n )\n})\n\nPicker.displayName = 'Picker'\nexport default Picker\n"],"names":["EMPTY_ARRAY","EMPTY_OBJECT","getLanguageText","lang","isEnglish","confirm","cancel","year","month","day","validateRegionData","data","componentName","arguments","length","undefined","valid","error","Array","isArray","validateItem","item","path","value","code","postcode","children","i","childResult","result","getRegionColumnsCount","level","Picker","React","forwardRef","props","ref","mode","disabled","range","rangeKey","start","end","fields","headerText","regionData","textProps","colors","onChange","onColumnChange","onCancel","formType","theme","enableClickItemScroll","restProps","__rest","indexRef","useRef","pickerDateRef","isInitializationCompletedRef","state","setState","useState","pickerValue","selectedIndices","slice","hidden","fadeOut","isWillLoadCalled","a11yTimeLimitColumnId","a11yTimeLimitNonce","columnsCount","setColumnsCount","useEffect","getIndices","useCallback","current","handleProps","val","verifyValue","Math","floor","forEach","rangeItem","index","valItem","push","verifyTime","console","warn","time","split","map","n","hourIndex","hoursRange","findIndex","parseInt","minuteIndex","minutesRange","safeHourIndex","safeMinuteIndex","max","min","_value","verifyDate","Date","setHours","_start","_end","Error","currentYear","getFullYear","currentMonth","getMonth","currentDay","getDate","yearRange","getYearRange","monthRange","getMonthRange","dayRange","getDayRange","indexOf","_updateValue","from","prev","validation","currentData","idx","rawIdx","parsed","_a","newIndices","Object","assign","JSON","stringify","showPicker","hidePicker","updateIndex","columnId","needRevise","isUserScrollRef","columnIndex","Number","finalIndices","hasLimited","startTime","endTime","compareTime","timeRanges","timeStr","rangeIdx","join","startParts","part","endParts","updateDay","originalValues","handleChange","newValue","timeArr","validTimeArr","num","isNaN","yearIndex","monthIndex","dayIndex","toString","detail","selectedCodes","handleColumnChange","e","column","consumeTimeA11yLimitFocus","handleCancel","renderPickerGroup","useMemo","_$createComponent","PickerGroup","key","String","selectedIndex","timeA11yLimitFocus","nonce","onTimeA11yLimitFocusConsumed","timeA11yLimitEventNonce","langText","renderView","columns","prevIndex","clsMask","classNames","clsSlider","backgroundStyle","backgroundColor","titleStyle","titleColor","color","useImperativeHandle","View","_$mergeProps","r$","_ref$","omit","onClick","_$memo","className","style","cancelButtonColor","cancelText","confirmButtonColor","_b","okText","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/picker/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport { View } from '@tarojs/components'\nimport classNames from 'classnames'\nimport React from 'react'\n\nimport {\n compareTime,\n getDayRange,\n getMonthRange,\n getYearRange,\n hoursRange,\n minutesRange,\n omit,\n verifyDate,\n verifyTime,\n verifyValue\n} from '../../utils'\nimport { PickerGroup } from './picker-group'\n\n// 定义 RegionData 类型,与 Taro 官方保持一致\nexport interface RegionData {\n value: string\n code: string\n postcode?: string\n children?: RegionData[]\n}\n\n// 稳定的空数组引用,避免每次渲染都创建新引用\nconst EMPTY_ARRAY: any[] = []\nconst EMPTY_OBJECT: Record<string, any> = {}\n\n// 语言映射函数\nfunction getLanguageText(lang?: string) {\n const isEnglish = lang === 'en-US' || lang === 'en-GB'\n return {\n confirm: isEnglish ? 'Confirm' : '确定',\n cancel: isEnglish ? 'Cancel' : '取消',\n year: isEnglish ? 'Year ' : '年',\n month: isEnglish ? 'Month ' : '月',\n day: isEnglish ? 'Day ' : '日'\n }\n}\n\n// 数据验证函数\nfunction validateRegionData(data: RegionData[], componentName = 'Picker'): { valid: boolean, error?: string } {\n if (!data) {\n return { valid: false, error: `${componentName}: regionData is required for region mode` }\n }\n\n if (!Array.isArray(data)) {\n return { valid: false, error: `${componentName}: regionData must be an array` }\n }\n\n if (data.length === 0) {\n return { valid: false, error: `${componentName}: regionData cannot be empty` }\n }\n\n // 检查数据结构\n const validateItem = (item: RegionData, path: string): { valid: boolean, error?: string } => {\n if (!item || typeof item !== 'object') {\n return { valid: false, error: `${componentName}: Invalid item at ${path}` }\n }\n\n if (!item.value || typeof item.value !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'value' field at ${path}` }\n }\n\n if (!item.code || typeof item.code !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'code' field at ${path}` }\n }\n\n if (item.postcode !== undefined && typeof item.postcode !== 'string') {\n return { valid: false, error: `${componentName}: Invalid 'postcode' field at ${path}` }\n }\n\n if (item.children && !Array.isArray(item.children)) {\n return { valid: false, error: `${componentName}: 'children' must be an array at ${path}` }\n }\n\n if (item.children) {\n for (let i = 0; i < item.children.length; i++) {\n const childResult = validateItem(item.children[i], `${path}.children[${i}]`)\n if (!childResult.valid) return childResult\n }\n }\n\n return { valid: true }\n }\n\n for (let i = 0; i < data.length; i++) {\n const result = validateItem(data[i], `regionData[${i}]`)\n if (!result.valid) return result\n }\n\n return { valid: true }\n}\n\nexport type Mode = 'selector' | 'multiSelector' | 'time' | 'date' | 'region'\nexport type Fields = 'day' | 'month' | 'year'\nexport type RegionLevel = 'province' | 'city' | 'region'\nexport type PickerValue = number | number[] | string | string[]\n\nexport interface PickerText {\n okText?: string\n cancelText?: string\n}\n\nexport interface PickerColors {\n confirmButtonColor?: string // 确定按钮颜色\n cancelButtonColor?: string // 取消按钮颜色\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n backgroundColor?: string // 面板背景色\n lineColor?: string // 指示线条颜色\n titleColor?: string // 标题颜色\n /** 全屏点击蒙层背景色;不设则随 theme 使用默认浅色/深色蒙层 */\n maskColor?: string\n}\n\nexport interface PickerDate {\n _value: Date\n _start: Date\n _end: Date\n _updateValue: [number, number, number]\n}\n\ninterface IProps {\n mode?: Mode\n disabled?: boolean\n range?: any[]\n rangeKey?: string\n value?: PickerValue\n start?: string\n end?: string\n fields?: Fields\n name?: string\n headerText?: string\n regionData?: RegionData[] // 省市区/县数据(region 模式专用)\n level?: RegionLevel\n textProps?: PickerText\n colors?: PickerColors // 颜色配置\n onChange?: (e: { detail: { value: PickerValue, code?: string, postcode?: string } }) => void\n onColumnChange?: (e: { detail: { column: number, value: number } }) => void\n onCancel?: () => void\n children?: React.ReactNode\n forwardedRef?: React.MutableRefObject<HTMLDivElement | null>\n formType?: string\n lang?: string // 语言参数,支持 'zh-CN'、'en-US'、'en-GB'\n theme?: 'light' | 'dark' // 主题模式,默认 'light'\n /** 点击选项是否滚至选中区,默认 true */\n enableClickItemScroll?: boolean\n}\n\ninterface IState {\n pickerValue: PickerValue\n selectedIndices: number[] // 索引数组\n hidden: boolean\n fadeOut: boolean\n isWillLoadCalled: boolean\n /** time 限位后由子列消费,用于无障碍聚焦 */\n a11yTimeLimitColumnId: string | null\n a11yTimeLimitNonce: number\n}\n\n// 普通函数\nfunction getRegionColumnsCount(level: RegionLevel): number {\n switch (level) {\n case 'province': return 1\n case 'city': return 2\n case 'region': return 3\n default: return 3 // 默认显示省市区/县三列\n }\n}\n\n// 暴露给外部的 ref 类型\nexport interface PickerRef {\n showPicker: () => void\n hidePicker: () => void\n}\n\nconst Picker = React.forwardRef<PickerRef, IProps>((props, ref) => {\n const {\n mode = 'selector',\n disabled = false,\n range = EMPTY_ARRAY,\n rangeKey,\n value,\n start = '',\n end = '',\n fields = 'day',\n headerText,\n level = 'region',\n regionData,\n textProps = EMPTY_OBJECT,\n colors = EMPTY_OBJECT,\n onChange,\n onColumnChange,\n onCancel,\n children,\n formType,\n lang,\n theme = 'light',\n enableClickItemScroll = true,\n ...restProps\n } = props\n const indexRef = React.useRef<number[]>([])\n const pickerDateRef = React.useRef<PickerDate>()\n // region:首次用户滚动初始化完成前不入库\n const isInitializationCompletedRef = React.useRef(false)\n\n const [state, setState] = React.useState<IState>({\n pickerValue: value || EMPTY_ARRAY,\n selectedIndices: EMPTY_ARRAY.slice(), // 索引数组\n hidden: true,\n fadeOut: false,\n isWillLoadCalled: false,\n a11yTimeLimitColumnId: null,\n a11yTimeLimitNonce: 0\n })\n\n // 在组件内部\n const [columnsCount, setColumnsCount] = React.useState(() => getRegionColumnsCount(level))\n\n // 只在level变化时更新列数\n React.useEffect(() => {\n setColumnsCount(getRegionColumnsCount(level))\n }, [level])\n\n // 获取当前索引数组\n const getIndices = React.useCallback(() => {\n return indexRef.current\n }, [])\n\n // 处理属性变化\n const handleProps = React.useCallback(() => {\n if (mode === 'selector') {\n const val = value as number\n indexRef.current = [verifyValue(val, range) ? Math.floor(val) : 0]\n } else if (mode === 'multiSelector') {\n const val = value as number[]\n indexRef.current = []\n range.forEach((rangeItem, index) => {\n const valItem = val?.[index]\n const item = verifyValue(valItem, rangeItem as any[]) ? Math.floor(valItem) : 0\n indexRef.current.push(item)\n })\n } else if (mode === 'time') {\n let val = value as string\n if (!verifyTime(val)) {\n console.warn('time picker value illegal')\n val = '0:0'\n }\n const time = val.split(':').map(n => +n)\n\n // 在 hoursRange 和 minutesRange 中找到对应的索引\n const hourIndex = hoursRange.findIndex(item => parseInt(item) === time[0])\n const minuteIndex = minutesRange.findIndex(item => parseInt(item) === time[1])\n\n // 确保索引在有效范围内\n const safeHourIndex = hourIndex >= 0 ? hourIndex : 0 // 默认为第一项\n const safeMinuteIndex = minuteIndex >= 0 ? minuteIndex : 0 // 默认为第一项\n\n indexRef.current = [\n Math.max(0, Math.min(safeHourIndex, hoursRange.length - 1)),\n Math.max(0, Math.min(safeMinuteIndex, minutesRange.length - 1))\n ]\n } else if (mode === 'date') {\n const val = value as string\n let _value = verifyDate(val) || new Date(new Date().setHours(0, 0, 0, 0))\n const _start = verifyDate(start) || new Date('1875/01/01')\n const _end = verifyDate(end) || new Date('2100/01/01')\n if (!(_start <= _end)) {\n throw new Error(`Picker start time must be less than end time.`)\n }\n if (!(_value >= _start && _value <= _end)) {\n _value = _start\n }\n const currentYear = _value.getFullYear()\n const currentMonth = _value.getMonth() + 1\n const currentDay = _value.getDate()\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n indexRef.current = [\n yearRange.indexOf(currentYear),\n monthRange.indexOf(currentMonth),\n dayRange.indexOf(currentDay)\n ]\n // 与 props 同步时始终刷新 _updateValue,避免取消后再开时日列草稿与索引不一致\n pickerDateRef.current = {\n _value,\n _start,\n _end,\n _updateValue: [currentYear, currentMonth, currentDay]\n }\n } else if (mode === 'region') {\n // region 模式处理 - 验证数据\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n indexRef.current = Array.from({ length: columnsCount }, () => 0)\n setState(prev => ({\n ...prev,\n selectedIndices: [...indexRef.current],\n pickerValue: value || EMPTY_ARRAY\n }))\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n indexRef.current = Array.from({ length: columnsCount }, () => 0)\n setState(prev => ({\n ...prev,\n selectedIndices: [...indexRef.current],\n pickerValue: value || EMPTY_ARRAY\n }))\n return\n }\n\n // 获取列数\n const val = Array.isArray(value) ? value : []\n\n // 根据level和当前值确定索引\n indexRef.current = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData?.length) {\n indexRef.current.push(0)\n continue\n }\n let idx = 0\n if (typeof val[i] === 'number') {\n const rawIdx = val[i] as number\n idx = (rawIdx >= 0 && rawIdx < currentData.length) ? rawIdx : 0\n } else if (typeof val[i] === 'string') {\n const parsed = parseInt(val[i] as string, 10)\n idx = (parsed >= 0 && parsed < currentData.length) ? parsed : 0\n }\n indexRef.current.push(idx)\n currentData = currentData[idx]?.children || []\n }\n } else {\n throw new Error(`Picker not support \"${mode}\" mode.`)\n }\n\n // 更新索引值\n const newIndices = getIndices()\n setState(prev => ({\n ...prev,\n selectedIndices: newIndices,\n pickerValue: value || EMPTY_ARRAY\n }))\n }, [mode, range, value, start, end, fields, regionData, level, columnsCount, getIndices])\n\n // 组件初始化\n React.useEffect(() => {\n setState(prev => ({ ...prev, isWillLoadCalled: true }))\n handleProps()\n }, [])\n\n // 属性变化监听 - 添加 value 依赖以支持联动选择器\n React.useEffect(() => {\n if (state.isWillLoadCalled) {\n handleProps()\n }\n }, [handleProps, state.isWillLoadCalled, JSON.stringify(value)])\n\n // 打开时按 props 重算索引,避免未确认的滑动与 indexRef 残留导致再开抖动\n const showPicker = React.useCallback(() => {\n if (disabled) return\n isInitializationCompletedRef.current = false\n handleProps()\n setState(prev => ({\n ...prev,\n hidden: false,\n a11yTimeLimitColumnId: null\n }))\n }, [disabled, handleProps])\n\n // 隐藏 Picker\n const hidePicker = React.useCallback(() => {\n isInitializationCompletedRef.current = false\n // 动画暂时不支持,暂时屏蔽相关样式挂载逻辑\n // setState(prev => ({ ...prev, fadeOut: true }))\n // setTimeout(() => {\n // setState(prev => ({\n // ...prev,\n // hidden: true,\n // fadeOut: false\n // }))\n // }, 350)\n setState(prev => ({ ...prev, hidden: true }))\n }, [])\n\n // 更新索引\n const updateIndex = React.useCallback((index: number, columnId: string, needRevise: boolean = false, isUserScrollRef: boolean = false) => {\n const columnIndex = Number(columnId)\n let finalIndices = [...state.selectedIndices]\n finalIndices[columnIndex] = index\n let hasLimited = false\n\n // region 模式的级联更新逻辑\n if (mode === 'region' && regionData) {\n if (isUserScrollRef && !isInitializationCompletedRef.current) {\n isInitializationCompletedRef.current = true\n }\n if (!isInitializationCompletedRef.current) {\n return\n }\n // 重置后续列\n for (let i = columnIndex + 1; i < columnsCount; i++) {\n finalIndices[i] = 0\n }\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n return // 直接返回\n }\n\n // time picker\n if (needRevise && mode === 'time') {\n let startTime = start\n let endTime = end\n\n if (!verifyTime(startTime)) startTime = '00:00'\n if (!verifyTime(endTime)) endTime = '23:59'\n if (!compareTime(startTime, endTime)) return false\n\n const timeRanges = [hoursRange.slice(), minutesRange.slice()]\n // 然后基于更新后的索引数组计算时间\n const timeStr = finalIndices.map((idx, i) => {\n const rangeIdx = Math.max(0, Math.min(idx, timeRanges[i].length - 1))\n return timeRanges[i][rangeIdx] || '00'\n }).join(':')\n\n // 检查是否需要限位\n if (!compareTime(startTime, timeStr)) {\n // 修正到 start\n const startParts = startTime.split(':').map(part => parseInt(part))\n const newIndices = startParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n } else if (!compareTime(timeStr, endTime)) {\n // 修正到 end\n const endParts = endTime.split(':').map(part => parseInt(part))\n const newIndices = endParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n }\n\n if (hasLimited) {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n a11yTimeLimitColumnId: columnId,\n a11yTimeLimitNonce: prev.a11yTimeLimitNonce + 1\n }))\n } else {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n\n return hasLimited\n }\n\n // 常规更新\n finalIndices[columnIndex] = index\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n\n return false // 没有限位\n }, [start, end, mode, regionData, state.selectedIndices, columnsCount])\n\n // 更新日期\n const updateDay = React.useCallback((value: number, fields: number) => {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n\n // 更新当前字段的值\n _updateValue[fields] = value\n\n // 获取当前年月日\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const currentDay = _updateValue[2]\n\n // 保存原始值用于后面比较\n const originalValues = [..._updateValue]\n\n // 准备最终的索引数组 - 复制当前索引状态作为起点\n const finalIndices = [...state.selectedIndices]\n\n // 获取基础范围数据\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n let dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 根据修改的字段进行不同处理\n if (fields === 0) {\n // 年份索引直接更新\n finalIndices[0] = yearRange.indexOf(currentYear)\n\n // 月份限位处理\n if (monthRange.length > 0) {\n if (currentMonth > monthRange[monthRange.length - 1]) {\n _updateValue[1] = monthRange[monthRange.length - 1]\n }\n if (currentMonth < monthRange[0]) {\n _updateValue[1] = monthRange[0]\n }\n\n // 更新月份索引\n finalIndices[1] = monthRange.indexOf(_updateValue[1])\n\n // 重新计算日期范围\n dayRange = getDayRange(_start, _end, currentYear, _updateValue[1])\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n }\n } else if (fields === 1) { // 月份变化\n // 月份索引直接更新\n finalIndices[1] = monthRange.indexOf(currentMonth)\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n } else if (fields === 2) { // 日期变化\n // 日期索引直接更新\n finalIndices[2] = dayRange.indexOf(currentDay)\n }\n\n // 只在有实际变化时更新状态\n if (\n JSON.stringify(originalValues) !== JSON.stringify(_updateValue) ||\n JSON.stringify(finalIndices) !== JSON.stringify(state.selectedIndices)\n ) {\n // 一次性更新状态\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n }, [state.selectedIndices])\n\n // 处理确认\n const handleChange = React.useCallback(() => {\n const newIndices = [...state.selectedIndices]\n indexRef.current = newIndices\n\n let newValue: PickerValue = newIndices.length && mode !== 'selector'\n ? newIndices\n : newIndices[0]\n\n if (mode === 'time') {\n const range = [hoursRange.slice(), minutesRange.slice()]\n\n // 安全的时间处理,添加边界检查\n const timeArr = newIndices.map<string>((idx, i) => {\n const index = Math.max(0, Math.min(idx, range[i].length - 1))\n return range[i][index] || (i === 0 ? '00' : '00')\n })\n\n // 确保时间值有效\n const validTimeArr = timeArr.map(time => {\n const num = parseInt(time)\n return isNaN(num) ? '00' : time\n })\n\n indexRef.current = validTimeArr.map(item => parseInt(item))\n newValue = validTimeArr.join(':')\n }\n\n if (mode === 'date') {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 添加边界检查,确保索引有效\n const yearIndex = Math.min(Math.max(Math.floor(newIndices[0]), 0), yearRange.length - 1)\n const monthIndex = Math.min(Math.max(Math.floor(newIndices[1]), 0), monthRange.length - 1)\n const dayIndex = Math.min(Math.max(Math.floor(newIndices[2]), 0), dayRange.length - 1)\n\n const year = yearRange[yearIndex]\n const month = monthRange[monthIndex]\n const day = dayRange[dayIndex]\n\n // 确保所有值都存在\n if (year === undefined || month === undefined || day === undefined) {\n console.warn('Date picker: invalid date values', { year, month, day })\n return\n }\n\n if (fields === 'year') {\n newValue = year.toString()\n } else if (fields === 'month') {\n // YYYY-MM 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}`\n } else {\n // YYYY-MM-DD 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n onChange?.({ detail: { value: newValue } })\n return\n }\n\n if (mode === 'region') {\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n return\n }\n\n // 直接使用索引数组\n const selectedCodes: string[] = []\n let postcode = ''\n\n // 安全获取选中值\n let currentData = regionData\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData || currentData.length === 0) break\n\n const index = newIndices[i] || 0\n if (index < 0 || index >= currentData.length) break\n\n const item = currentData[index]\n selectedCodes.push(item.code)\n\n // 如果是最后一项,获取邮政编码\n if (i === columnsCount - 1 && item.postcode) {\n postcode = item.postcode\n }\n\n // 准备下一级数据\n currentData = item.children || []\n }\n\n // 检查索引数组长度是否符合要求\n if (newIndices.length < columnsCount) {\n console.warn('Region picker: incomplete selection')\n return\n }\n\n // 触发 onChange 事件,包含 code 信息\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newIndices\n }))\n\n onChange?.({\n detail: {\n value: newIndices,\n code: selectedCodes.join(','),\n postcode\n }\n })\n return\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n // 触发 onChange 事件,格式与原始组件一致\n onChange?.({ detail: { value: newValue } })\n }, [hidePicker, state.selectedIndices, mode, fields, onChange, regionData, columnsCount])\n\n // 处理列变化\n const handleColumnChange = React.useCallback((e: { columnId: string, index: number }) => {\n const { columnId, index } = e\n onColumnChange?.({\n detail: {\n column: Number(columnId),\n value: index\n }\n })\n }, [onColumnChange])\n\n const consumeTimeA11yLimitFocus = React.useCallback(() => {\n setState(prev => ({ ...prev, a11yTimeLimitColumnId: null }))\n }, [])\n\n // 取消时按 props 回同步索引,避免与 value 脱节\n const handleCancel = React.useCallback(() => {\n handleProps()\n hidePicker()\n onCancel?.()\n }, [handleProps, hidePicker, onCancel])\n\n // 渲染选择器组\n const renderPickerGroup = React.useMemo(() => {\n switch (mode) {\n case 'multiSelector': {\n return range.map((rangeItem, index) => (\n <PickerGroup\n key={index}\n range={rangeItem}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n onColumnChange={handleColumnChange}\n columnId={String(index)}\n selectedIndex={state.selectedIndices[index]} // 传递对应列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n ))\n }\n case 'time': {\n const timeA11yLimitFocus =\n state.a11yTimeLimitColumnId != null\n ? { nonce: state.a11yTimeLimitNonce, columnId: state.a11yTimeLimitColumnId }\n : null\n return [\n <PickerGroup\n key=\"hour\"\n mode=\"time\"\n range={hoursRange}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递小时列的selectedIndex\n colors={colors}\n timeA11yLimitFocus={timeA11yLimitFocus}\n onTimeA11yLimitFocusConsumed={consumeTimeA11yLimitFocus}\n timeA11yLimitEventNonce={state.a11yTimeLimitNonce}\n enableClickItemScroll={enableClickItemScroll}\n />,\n <PickerGroup\n key=\"minute\"\n mode=\"time\"\n range={minutesRange}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递分钟列的selectedIndex\n colors={colors}\n timeA11yLimitFocus={timeA11yLimitFocus}\n onTimeA11yLimitFocusConsumed={consumeTimeA11yLimitFocus}\n timeA11yLimitEventNonce={state.a11yTimeLimitNonce}\n enableClickItemScroll={enableClickItemScroll}\n />\n ]\n }\n case 'date': {\n if (!pickerDateRef.current) return null\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n\n const langText = getLanguageText(lang)\n const isEnglish = lang === 'en-US' || lang === 'en-GB'\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n .map(item => isEnglish ? `${langText.year}${item}` : `${item}${langText.year}`)\n const monthRange = getMonthRange(_start, _end, currentYear)\n .map(item => isEnglish ? `${langText.month}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.month}`)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n .map(item => isEnglish ? `${langText.day}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.day}`)\n\n const renderView = [\n <PickerGroup\n key={`year`}\n mode=\"date\"\n range={yearRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递年份列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n ]\n if (fields === 'month' || fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`month`}\n mode=\"date\"\n range={monthRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递月份列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n if (fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`day`}\n mode=\"date\"\n range={dayRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"2\"\n selectedIndex={state.selectedIndices[2]} // 传递日期列的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n return renderView\n }\n case 'region': {\n // region 模式处理 - 自动识别数据层级\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return null\n }\n\n // 简化验证逻辑\n if (!validateRegionData(regionData, 'Picker').valid) {\n return null\n }\n\n const columns: JSX.Element[] = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (i > 0 && currentData?.length) {\n // 获取上一级选中项的children作为当前列数据\n const prevIndex = state.selectedIndices[i - 1] || 0\n if (prevIndex >= 0 && prevIndex < currentData.length) {\n currentData = currentData[prevIndex].children || []\n } else {\n currentData = []\n }\n }\n\n columns.push(\n <PickerGroup\n key={`region-${i}`}\n mode=\"region\"\n range={currentData}\n rangeKey=\"value\"\n updateIndex={updateIndex}\n columnId={String(i)}\n selectedIndex={state.selectedIndices[i]}\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n\n return columns\n }\n default:\n return (\n <PickerGroup\n range={range}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递selector模式的selectedIndex\n colors={colors}\n enableClickItemScroll={enableClickItemScroll}\n />\n )\n }\n }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, state.a11yTimeLimitColumnId, state.a11yTimeLimitNonce, consumeTimeA11yLimitFocus, columnsCount, lang, colors, enableClickItemScroll])\n\n // 动画类名控制逻辑\n const clsMask = classNames('taro-picker__mask-overlay', 'taro-picker__animate-fade-in', {\n 'taro-picker__animate-fade-out': state.fadeOut\n })\n const clsSlider = classNames('taro-picker', 'taro-picker__animate-slide-up', `taro-picker-theme-${theme}`, {\n 'taro-picker__animate-slide-down': state.fadeOut\n })\n const backgroundStyle = colors.backgroundColor ? { backgroundColor: colors.backgroundColor } : null\n const titleStyle = colors.titleColor ? { color: colors.titleColor } : null\n const maskOverlayStyle = colors.maskColor ? { backgroundColor: colors.maskColor } : undefined\n\n // 暴露方法给外部\n React.useImperativeHandle(ref, () => ({\n showPicker,\n hidePicker\n }))\n\n // 获取语言文本\n const langText = getLanguageText(lang)\n\n return (\n <View\n ref={ref as any} // 直接绑定 ref\n {...(formType ? { 'data-form-type': formType } : {})}\n {...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'formType'])}\n >\n <View onClick={showPicker}>\n {children}\n </View>\n {!state.hidden && (\n <View className={classNames('taro-picker__overlay', `taro-picker__overlay--theme-${theme}`)}>\n <View className={clsMask} style={maskOverlayStyle} onClick={handleCancel} />\n <View className={clsSlider} {...(backgroundStyle ? { style: backgroundStyle } : {})}>\n <View className=\"taro-picker__hd\" {...(backgroundStyle ? { style: backgroundStyle } : {})}>\n <View\n className=\"taro-picker__action\"\n onClick={handleCancel}\n style={{ color: colors.cancelButtonColor }}\n >\n {textProps.cancelText ?? langText.cancel}\n </View>\n {headerText && (\n <View\n className=\"taro-picker__title\"\n {...(titleStyle ? { style: titleStyle } : {})}\n >\n {headerText}\n </View>\n )}\n <View\n className=\"taro-picker__action\"\n onClick={handleChange}\n style={{ color: colors.confirmButtonColor }}\n >\n {textProps.okText ?? langText.confirm}\n </View>\n </View>\n <View className=\"taro-picker__bd\" {...(backgroundStyle ? { style: backgroundStyle } : {})}>{renderPickerGroup}</View>\n </View>\n </View>\n )}\n </View>\n )\n})\n\nPicker.displayName = 'Picker'\nexport default Picker\n"],"names":["EMPTY_ARRAY","EMPTY_OBJECT","getLanguageText","lang","isEnglish","confirm","cancel","year","month","day","validateRegionData","data","componentName","arguments","length","undefined","valid","error","Array","isArray","validateItem","item","path","value","code","postcode","children","i","childResult","result","getRegionColumnsCount","level","Picker","React","forwardRef","props","ref","mode","disabled","range","rangeKey","start","end","fields","headerText","regionData","textProps","colors","onChange","onColumnChange","onCancel","formType","theme","enableClickItemScroll","restProps","__rest","indexRef","useRef","pickerDateRef","isInitializationCompletedRef","state","setState","useState","pickerValue","selectedIndices","slice","hidden","fadeOut","isWillLoadCalled","a11yTimeLimitColumnId","a11yTimeLimitNonce","columnsCount","setColumnsCount","useEffect","getIndices","useCallback","current","handleProps","val","verifyValue","Math","floor","forEach","rangeItem","index","valItem","push","verifyTime","console","warn","time","split","map","n","hourIndex","hoursRange","findIndex","parseInt","minuteIndex","minutesRange","safeHourIndex","safeMinuteIndex","max","min","_value","verifyDate","Date","setHours","_start","_end","Error","currentYear","getFullYear","currentMonth","getMonth","currentDay","getDate","yearRange","getYearRange","monthRange","getMonthRange","dayRange","getDayRange","indexOf","_updateValue","from","prev","validation","currentData","idx","rawIdx","parsed","_a","newIndices","Object","assign","JSON","stringify","showPicker","hidePicker","updateIndex","columnId","needRevise","isUserScrollRef","columnIndex","Number","finalIndices","hasLimited","startTime","endTime","compareTime","timeRanges","timeStr","rangeIdx","join","startParts","part","endParts","updateDay","originalValues","handleChange","newValue","timeArr","validTimeArr","num","isNaN","yearIndex","monthIndex","dayIndex","toString","detail","selectedCodes","handleColumnChange","e","column","consumeTimeA11yLimitFocus","handleCancel","renderPickerGroup","useMemo","_$createComponent","PickerGroup","key","String","selectedIndex","timeA11yLimitFocus","nonce","onTimeA11yLimitFocusConsumed","timeA11yLimitEventNonce","langText","renderView","columns","prevIndex","clsMask","classNames","clsSlider","backgroundStyle","backgroundColor","titleStyle","titleColor","color","maskOverlayStyle","maskColor","useImperativeHandle","View","_$mergeProps","r$","_ref$","omit","onClick","_$memo","className","style","cancelButtonColor","cancelText","confirmButtonColor","_b","okText","displayName"],"mappings":"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"}
|
|
@@ -40,76 +40,21 @@ const getIndicatorStyle = lineColor => {
|
|
|
40
40
|
};
|
|
41
41
|
// 大屏方案版本要求
|
|
42
42
|
const MIN_DESIGN_APP_VERSION = 16;
|
|
43
|
-
const MIN_APP_VERSION = '15.7.0';
|
|
44
|
-
// semver 版本比较
|
|
45
|
-
const isAppVersionAtLeast = (version, min) => {
|
|
46
|
-
var _a, _b;
|
|
47
|
-
if (!version || typeof version !== 'string') return false;
|
|
48
|
-
const parts = v => {
|
|
49
|
-
const m = String(v).trim().match(/^(\d+)(?:\.(\d+))?(?:\.(\d+))?/);
|
|
50
|
-
if (!m) return [];
|
|
51
|
-
return [parseInt(m[1], 10) || 0, parseInt(m[2] || '0', 10) || 0, parseInt(m[3] || '0', 10) || 0];
|
|
52
|
-
};
|
|
53
|
-
const a = parts(version);
|
|
54
|
-
const b = parts(min);
|
|
55
|
-
if (a.length === 0) return false;
|
|
56
|
-
if (b.length === 0) return true;
|
|
57
|
-
for (let i = 0; i < Math.max(a.length, b.length); i++) {
|
|
58
|
-
const da = (_a = a[i]) !== null && _a !== void 0 ? _a : 0;
|
|
59
|
-
const db = (_b = b[i]) !== null && _b !== void 0 ? _b : 0;
|
|
60
|
-
if (da > db) return true;
|
|
61
|
-
if (da < db) return false;
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
};
|
|
65
|
-
// 读取 JDMobileConfig,异常时返回 undefined
|
|
66
|
-
const tryGetMobileConfigSync = opt => {
|
|
67
|
-
var _a;
|
|
68
|
-
try {
|
|
69
|
-
const fn = (_a = Taro.JDMobileConfig) === null || _a === void 0 ? void 0 : _a.getMobileConfigSync;
|
|
70
|
-
if (typeof fn !== 'function') return undefined;
|
|
71
|
-
return fn(opt);
|
|
72
|
-
} catch (_b) {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
43
|
// 判断是否启用测量值缩放适配(true=启用, false=使用系统侧缩放)
|
|
77
44
|
const resolveUseMeasuredScale = res => {
|
|
78
45
|
// H5/weapp 不参与大屏系数
|
|
79
46
|
if (process.env.TARO_ENV === 'h5' || process.env.TARO_ENV === 'weapp') {
|
|
80
47
|
return false;
|
|
81
48
|
}
|
|
82
|
-
// 条件1: designAppVersion < 16,不满足则使用系统侧缩放
|
|
83
49
|
const designAppVersionRaw = res.designAppVersion;
|
|
84
50
|
const designAppVersionMajor = designAppVersionRaw != null ? parseInt(String(designAppVersionRaw).trim(), 10) : Number.NaN;
|
|
85
51
|
if (!Number.isFinite(designAppVersionMajor) || designAppVersionMajor < MIN_DESIGN_APP_VERSION) {
|
|
86
52
|
return false;
|
|
87
53
|
}
|
|
88
|
-
// 条件2: appVersion < 15.7.0,不满足则使用系统侧缩放
|
|
89
|
-
if (!isAppVersionAtLeast(res.version, MIN_APP_VERSION)) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
// 条件3: 平台判断
|
|
93
54
|
const platform = String(res.platform || '').toLowerCase();
|
|
94
|
-
if (platform === 'harmony') {
|
|
55
|
+
if (platform === 'harmony' || platform === 'android' || platform === 'ios') {
|
|
95
56
|
return true;
|
|
96
57
|
}
|
|
97
|
-
if (platform === 'android') {
|
|
98
|
-
const raw = tryGetMobileConfigSync({
|
|
99
|
-
space: 'taro',
|
|
100
|
-
configName: 'config',
|
|
101
|
-
key: 'disableFixBoundingScaleRatio'
|
|
102
|
-
});
|
|
103
|
-
return raw !== 1 && raw !== '1';
|
|
104
|
-
}
|
|
105
|
-
if (platform === 'ios') {
|
|
106
|
-
const raw = tryGetMobileConfigSync({
|
|
107
|
-
space: 'Taro',
|
|
108
|
-
configName: 'excutor',
|
|
109
|
-
key: 'disableBoundingScaleRatio'
|
|
110
|
-
});
|
|
111
|
-
return raw !== 1 && raw !== '1';
|
|
112
|
-
}
|
|
113
58
|
return false;
|
|
114
59
|
};
|
|
115
60
|
// 辅助函数:计算 lengthScaleRatio
|