diff --git a/.dumi/theme/common/BezierVisualizer/index.tsx b/.dumi/theme/common/BezierVisualizer/index.tsx index 855ea14472..32f1785477 100644 --- a/.dumi/theme/common/BezierVisualizer/index.tsx +++ b/.dumi/theme/common/BezierVisualizer/index.tsx @@ -27,7 +27,12 @@ const BezierVisualizer = (props: BezierVisualizerProps) => { const controls = useMemo(() => { const m = RE.exec(value.toLowerCase().trim()); if (m) { - return m[1].split(',').map((v) => parseFloat(v.trim())) as [number, number, number, number]; + return m[1].split(',').map((v) => Number.parseFloat(v.trim())) as [ + number, + number, + number, + number, + ]; } return null; }, [value]); diff --git a/biome.json b/biome.json index 40b618cf6e..fe1ab6849e 100644 --- a/biome.json +++ b/biome.json @@ -58,7 +58,6 @@ }, "suspicious": { "noTsIgnore": "off", - "noGlobalIsFinite": "off", "noExplicitAny": "off", "noArrayIndexKey": "off", "noConfusingVoidType": "off", diff --git a/components/_util/wave/WaveEffect.tsx b/components/_util/wave/WaveEffect.tsx index c701817a7e..e3e028acf4 100644 --- a/components/_util/wave/WaveEffect.tsx +++ b/components/_util/wave/WaveEffect.tsx @@ -63,8 +63,8 @@ const WaveEffect = (props: WaveEffectProps) => { // Rect const { borderLeftWidth, borderTopWidth } = nodeStyle; - setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth))); - setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth))); + setLeft(isStatic ? target.offsetLeft : validateNum(-Number.parseFloat(borderLeftWidth))); + setTop(isStatic ? target.offsetTop : validateNum(-Number.parseFloat(borderTopWidth))); setWidth(target.offsetWidth); setHeight(target.offsetHeight); @@ -82,7 +82,7 @@ const WaveEffect = (props: WaveEffectProps) => { borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius, - ].map((radius) => validateNum(parseFloat(radius))), + ].map((radius) => validateNum(Number.parseFloat(radius))), ); } diff --git a/components/badge/index.tsx b/components/badge/index.tsx index 9fcc8dbd3e..32e394dc55 100644 --- a/components/badge/index.tsx +++ b/components/badge/index.tsx @@ -123,9 +123,9 @@ const InternalBadge = React.forwardRef((props, ref) const offsetStyle: React.CSSProperties = { marginTop: offset[1] }; if (direction === 'rtl') { - offsetStyle.left = parseInt(offset[0] as string, 10); + offsetStyle.left = Number.parseInt(offset[0] as string, 10); } else { - offsetStyle.right = -parseInt(offset[0] as string, 10); + offsetStyle.right = -Number.parseInt(offset[0] as string, 10); } return { ...offsetStyle, ...badge?.style, ...style }; diff --git a/components/config-provider/UnstableContext.tsx b/components/config-provider/UnstableContext.tsx index 7bcee8e14e..f21f4dd543 100644 --- a/components/config-provider/UnstableContext.tsx +++ b/components/config-provider/UnstableContext.tsx @@ -14,7 +14,7 @@ const defaultReactRender: RenderType = (node, container) => { // TODO: Remove in v6 // Warning for React 19 if (process.env.NODE_ENV !== 'production') { - const majorVersion = parseInt(React.version.split('.')[0], 10); + const majorVersion = Number.parseInt(React.version.split('.')[0], 10); const fullKeys = Object.keys(ReactDOM); warning( diff --git a/components/config-provider/__tests__/unstable.test.tsx b/components/config-provider/__tests__/unstable.test.tsx index 1b86119628..0c42b4f851 100644 --- a/components/config-provider/__tests__/unstable.test.tsx +++ b/components/config-provider/__tests__/unstable.test.tsx @@ -16,7 +16,7 @@ describe('UnstableContext', () => { // TODO: Remove in v6 it('should warning', async () => { - const majorVersion = parseInt(version.split('.')[0], 10); + const majorVersion = Number.parseInt(version.split('.')[0], 10); if (majorVersion >= 19) { const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); diff --git a/components/config-provider/demo/wave.tsx b/components/config-provider/demo/wave.tsx index c31a20a8f6..736e6722ef 100644 --- a/components/config-provider/demo/wave.tsx +++ b/components/config-provider/demo/wave.tsx @@ -8,7 +8,7 @@ type WaveConfig = GetProp; // Prepare effect holder const createHolder = (node: HTMLElement) => { const { borderWidth } = getComputedStyle(node); - const borderWidthNum = parseInt(borderWidth, 10); + const borderWidthNum = Number.parseInt(borderWidth, 10); const div = document.createElement('div'); div.style.position = 'absolute'; diff --git a/components/form/FormItem/ItemHolder.tsx b/components/form/FormItem/ItemHolder.tsx index c81131ddc5..81c4f18cc8 100644 --- a/components/form/FormItem/ItemHolder.tsx +++ b/components/form/FormItem/ItemHolder.tsx @@ -72,7 +72,7 @@ export default function ItemHolder(props: ItemHolderProps) { // The element must be part of the DOMTree to use getComputedStyle // https://stackoverflow.com/questions/35360711/getcomputedstyle-returns-a-cssstyledeclaration-but-all-properties-are-empty-on-a const itemStyle = getComputedStyle(itemRef.current); - setMarginBottom(parseInt(itemStyle.marginBottom, 10)); + setMarginBottom(Number.parseInt(itemStyle.marginBottom, 10)); } }, [hasError, isOnScreen]); diff --git a/components/form/demo/customized-form-controls.tsx b/components/form/demo/customized-form-controls.tsx index 6d0dd525a9..bb169e5907 100644 --- a/components/form/demo/customized-form-controls.tsx +++ b/components/form/demo/customized-form-controls.tsx @@ -26,7 +26,7 @@ const PriceInput: React.FC = (props) => { }; const onNumberChange = (e: React.ChangeEvent) => { - const newNumber = parseInt(e.target.value || '0', 10); + const newNumber = Number.parseInt(e.target.value || '0', 10); if (Number.isNaN(number)) { return; } diff --git a/components/layout/Sider.tsx b/components/layout/Sider.tsx index 2f262d6580..211796f00f 100644 --- a/components/layout/Sider.tsx +++ b/components/layout/Sider.tsx @@ -20,7 +20,8 @@ const dimensionMaxMap = { xxl: '1599.98px', }; -const isNumeric = (value: any) => !Number.isNaN(Number.parseFloat(value)) && isFinite(value); +const isNumeric = (val: any) => + !Number.isNaN(Number.parseFloat(val)) && Number.isFinite(Number(val)); export interface SiderContextProps { siderCollapsed?: boolean; @@ -148,7 +149,7 @@ const Sider = React.forwardRef((props, ref) => { const siderWidth = isNumeric(rawWidth) ? `${rawWidth}px` : String(rawWidth); // special trigger when collapsedWidth == 0 const zeroWidthTrigger = - parseFloat(String(collapsedWidth || 0)) === 0 ? ( + Number.parseFloat(String(collapsedWidth || 0)) === 0 ? ( ((props, ref) => { [`${prefixCls}-collapsed`]: !!collapsed, [`${prefixCls}-has-trigger`]: collapsible && trigger !== null && !zeroWidthTrigger, [`${prefixCls}-below`]: !!below, - [`${prefixCls}-zero-width`]: parseFloat(siderWidth) === 0, + [`${prefixCls}-zero-width`]: Number.parseFloat(siderWidth) === 0, }, className, hashId, diff --git a/components/progress/Line.tsx b/components/progress/Line.tsx index 125703b9d7..eea47355ac 100644 --- a/components/progress/Line.tsx +++ b/components/progress/Line.tsx @@ -33,7 +33,7 @@ interface LineProps extends ProgressProps { export const sortGradient = (gradients: StringGradients) => { let tempArr: { key: number; value?: string }[] = []; Object.keys(gradients).forEach((key) => { - const formattedKey = parseFloat(key.replace(/%/g, '')); + const formattedKey = Number.parseFloat(key.replace(/%/g, '')); if (!Number.isNaN(formattedKey)) { tempArr.push({ key: formattedKey, value: gradients[key] }); } diff --git a/components/progress/progress.tsx b/components/progress/progress.tsx index 8abe45d736..d97e1a9109 100644 --- a/components/progress/progress.tsx +++ b/components/progress/progress.tsx @@ -100,7 +100,7 @@ const Progress = React.forwardRef((props, ref) => const percentNumber = React.useMemo(() => { const successPercent = getSuccessPercent(props); - return parseInt( + return Number.parseInt( successPercent !== undefined ? (successPercent ?? 0)?.toString() : (percent ?? 0)?.toString(), 10, ); diff --git a/components/table/__tests__/Table.pagination.test.tsx b/components/table/__tests__/Table.pagination.test.tsx index d829535445..f7cc86118e 100644 --- a/components/table/__tests__/Table.pagination.test.tsx +++ b/components/table/__tests__/Table.pagination.test.tsx @@ -281,7 +281,7 @@ describe('Table.pagination', () => { fireEvent.mouseDown(container.querySelector('.ant-select-selector')!); expect(container.querySelectorAll('.ant-select-item-option').length).toBe(4); fireEvent.click(container.querySelectorAll('.ant-select-item-option')[1]); - const newPageSize = parseInt( + const newPageSize = Number.parseInt( container.querySelectorAll('.ant-select-item-option')?.[1]?.textContent!, 10, ); @@ -308,7 +308,7 @@ describe('Table.pagination', () => { fireEvent.mouseDown(container.querySelector('.ant-select-selector')!); expect(container.querySelectorAll('.ant-select-item-option').length).toBe(4); fireEvent.click(container.querySelectorAll('.ant-select-item-option')[1]); - const newPageSize = parseInt( + const newPageSize = Number.parseInt( container.querySelectorAll('.ant-select-item-option')?.[1]?.textContent!, 10, ); diff --git a/components/table/hooks/useContainerWidth.ts b/components/table/hooks/useContainerWidth.ts index 58c2630232..2751470f77 100644 --- a/components/table/hooks/useContainerWidth.ts +++ b/components/table/hooks/useContainerWidth.ts @@ -7,9 +7,8 @@ export default function useContainerWidth(prefixCls: string) { if (container) { const style = getComputedStyle(container); - const borderLeft = parseInt(style.borderLeftWidth, 10); - const borderRight = parseInt(style.borderRightWidth, 10); - + const borderLeft = Number.parseInt(style.borderLeftWidth, 10); + const borderRight = Number.parseInt(style.borderRightWidth, 10); returnWidth = width - borderLeft - borderRight; } diff --git a/components/upload/demo/customize-progress-bar.tsx b/components/upload/demo/customize-progress-bar.tsx index 2fa8cac7fc..7c94382c8f 100644 --- a/components/upload/demo/customize-progress-bar.tsx +++ b/components/upload/demo/customize-progress-bar.tsx @@ -25,7 +25,7 @@ const props: UploadProps = { '100%': '#87d068', }, strokeWidth: 3, - format: (percent) => percent && `${parseFloat(percent.toFixed(2))}%`, + format: (percent) => percent && `${Number.parseFloat(percent.toFixed(2))}%`, }, }; diff --git a/scripts/visual-regression/build.ts b/scripts/visual-regression/build.ts index e418a416a6..5c17a60f37 100644 --- a/scripts/visual-regression/build.ts +++ b/scripts/visual-regression/build.ts @@ -4,15 +4,15 @@ import os from 'os'; import path from 'path'; import { Readable } from 'stream'; import { finished } from 'stream/promises'; +import blazediff from '@blazediff/core'; import chalk from 'chalk'; import fse from 'fs-extra'; import difference from 'lodash/difference'; +import filter from 'lodash/filter'; import minimist from 'minimist'; -import blazediff from '@blazediff/core'; import { PNG } from 'pngjs'; import sharp from 'sharp'; import simpleGit from 'simple-git'; -import filter from 'lodash/filter'; import markdown2Html from './convert'; import { generate as genAlternativeReport } from './reportAdapter'; @@ -157,7 +157,7 @@ async function parseArgs() { const baseRef = argv['base-ref']; assert(baseRef, 'Missing --base-ref'); - const maxWorkers = argv['max-workers'] ? parseInt(argv['max-workers'], 10) : 1; + const maxWorkers = argv['max-workers'] ? Number.parseInt(argv['max-workers'], 10) : 1; const { latest } = await git.log();