From 7a8b82a9311075326772d3c292229bf275fe431e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=89=B3=E5=85=B5?= Date: Wed, 20 May 2026 10:58:27 +0800 Subject: [PATCH 1/3] chore: avoid rc deep imports --- package.json | 6 +++--- src/Image.tsx | 2 +- src/Preview/index.tsx | 5 +---- src/PreviewGroup.tsx | 3 +-- src/hooks/useImageTransform.ts | 5 ++--- src/hooks/useMouseEvent.ts | 2 +- tests/placeholder.test.tsx | 2 +- tests/preview.test.tsx | 34 ++++++++++++++++++++++++++-------- tests/previewGroup.test.tsx | 2 +- tests/previewTouch.test.tsx | 2 +- 10 files changed, 38 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 8cff7baa..07a0c689 100644 --- a/package.json +++ b/package.json @@ -42,14 +42,14 @@ "dependencies": { "@rc-component/motion": "^1.0.0", "@rc-component/portal": "^2.1.2", - "@rc-component/util": "^1.10.1", + "@rc-component/util": "^1.11.1", "clsx": "^2.1.1" }, "devDependencies": { "@ant-design/icons": "^5.0.1", - "@rc-component/father-plugin": "^2.0.2", - "@rc-component/np": "^1.0.0", "@rc-component/dialog": "^1.7.0", + "@rc-component/father-plugin": "^2.2.0", + "@rc-component/np": "^1.0.0", "@testing-library/jest-dom": "^6.4.0", "@testing-library/react": "^15.0.6", "@types/jest": "^30.0.0", diff --git a/src/Image.tsx b/src/Image.tsx index 22c37a03..55725691 100644 --- a/src/Image.tsx +++ b/src/Image.tsx @@ -1,4 +1,4 @@ -import useControlledState from '@rc-component/util/lib/hooks/useControlledState'; +import { useControlledState } from '@rc-component/util'; import { clsx } from 'clsx'; import * as React from 'react'; import { useContext, useMemo, useState } from 'react'; diff --git a/src/Preview/index.tsx b/src/Preview/index.tsx index 8c482963..a90d9ff9 100644 --- a/src/Preview/index.tsx +++ b/src/Preview/index.tsx @@ -1,9 +1,6 @@ import CSSMotion from '@rc-component/motion'; import Portal, { type PortalProps } from '@rc-component/portal'; -import { useEvent } from '@rc-component/util'; -import { useLockFocus } from '@rc-component/util/lib/Dom/focus'; -import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect'; -import KeyCode from '@rc-component/util/lib/KeyCode'; +import { KeyCode, useEvent, useLayoutEffect, useLockFocus } from '@rc-component/util'; import { clsx } from 'clsx'; import React, { useContext, useEffect, useRef, useState } from 'react'; import { PreviewGroupContext } from '../context'; diff --git a/src/PreviewGroup.tsx b/src/PreviewGroup.tsx index 8d3e9741..519e9080 100644 --- a/src/PreviewGroup.tsx +++ b/src/PreviewGroup.tsx @@ -1,5 +1,4 @@ -import useControlledState from '@rc-component/util/lib/hooks/useControlledState'; -import useEvent from '@rc-component/util/lib/hooks/useEvent'; +import { useControlledState, useEvent } from '@rc-component/util'; import * as React from 'react'; import { useState } from 'react'; import type { ImgInfo } from './Image'; diff --git a/src/hooks/useImageTransform.ts b/src/hooks/useImageTransform.ts index be119576..ce8e2851 100644 --- a/src/hooks/useImageTransform.ts +++ b/src/hooks/useImageTransform.ts @@ -1,7 +1,6 @@ -import { getClientSize } from '../util'; -import isEqual from '@rc-component/util/lib/isEqual'; -import raf from '@rc-component/util/lib/raf'; +import { isEqual, raf } from '@rc-component/util'; import { useRef, useState } from 'react'; +import { getClientSize } from '../util'; export type TransformType = { x: number; diff --git a/src/hooks/useMouseEvent.ts b/src/hooks/useMouseEvent.ts index d047d090..29228042 100644 --- a/src/hooks/useMouseEvent.ts +++ b/src/hooks/useMouseEvent.ts @@ -1,4 +1,4 @@ -import { warning } from '@rc-component/util/lib/warning'; +import { warning } from '@rc-component/util'; import type React from 'react'; import { useEffect, useRef, useState } from 'react'; import getFixScaleEleTransPosition from '../getFixScaleEleTransPosition'; diff --git a/tests/placeholder.test.tsx b/tests/placeholder.test.tsx index 5cf29b6f..d609c254 100644 --- a/tests/placeholder.test.tsx +++ b/tests/placeholder.test.tsx @@ -1,5 +1,5 @@ +import { spyElementPrototypes } from '@rc-component/util'; import { act, fireEvent, render } from '@testing-library/react'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; import React from 'react'; import Image from '../src'; diff --git a/tests/preview.test.tsx b/tests/preview.test.tsx index 1b13883c..d19cf108 100644 --- a/tests/preview.test.tsx +++ b/tests/preview.test.tsx @@ -6,7 +6,7 @@ import RotateRightOutlined from '@ant-design/icons/RotateRightOutlined'; import ZoomInOutlined from '@ant-design/icons/ZoomInOutlined'; import ZoomOutOutlined from '@ant-design/icons/ZoomOutOutlined'; import Dialog from '@rc-component/dialog'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; +import { spyElementPrototypes } from '@rc-component/util'; import { act, createEvent, fireEvent, render } from '@testing-library/react'; import React from 'react'; @@ -23,9 +23,13 @@ jest.mock('../src/Preview', () => { return MockPreview; }); -jest.mock('@rc-component/util/lib/hooks/useId', () => { +jest.mock('@rc-component/util', () => { + const util = jest.requireActual('@rc-component/util'); const origin = jest.requireActual('react'); - return origin.useId; + return { + ...util, + useId: origin.useId, + }; }); import Image from '../src'; @@ -1286,8 +1290,14 @@ describe('Preview', () => { it('Focus should be trapped inside preview after keyboard open and restored on close', () => { const rectSpy = jest.spyOn(HTMLElement.prototype, 'getBoundingClientRect').mockReturnValue({ - x: 0, y: 0, width: 100, height: 100, - top: 0, right: 100, bottom: 100, left: 0, + x: 0, + y: 0, + width: 100, + height: 100, + top: 0, + right: 100, + bottom: 100, + left: 0, toJSON: () => undefined, } as DOMRect); @@ -1326,12 +1336,20 @@ describe('Preview', () => { it('Focus should not be trapped when focusTrap is false', () => { const rectSpy = jest.spyOn(HTMLElement.prototype, 'getBoundingClientRect').mockReturnValue({ - x: 0, y: 0, width: 100, height: 100, - top: 0, right: 100, bottom: 100, left: 0, + x: 0, + y: 0, + width: 100, + height: 100, + top: 0, + right: 100, + bottom: 100, + left: 0, toJSON: () => undefined, } as DOMRect); - const { container } = render(no trap); + const { container } = render( + no trap, + ); act(() => { jest.runAllTimers(); diff --git a/tests/previewGroup.test.tsx b/tests/previewGroup.test.tsx index 178950d0..c13b6337 100644 --- a/tests/previewGroup.test.tsx +++ b/tests/previewGroup.test.tsx @@ -1,4 +1,4 @@ -import KeyCode from '@rc-component/util/lib/KeyCode'; +import { KeyCode } from '@rc-component/util'; import { act, fireEvent, render } from '@testing-library/react'; import React from 'react'; import Image from '../src'; diff --git a/tests/previewTouch.test.tsx b/tests/previewTouch.test.tsx index 0d63553f..d8410586 100644 --- a/tests/previewTouch.test.tsx +++ b/tests/previewTouch.test.tsx @@ -1,5 +1,5 @@ +import { spyElementPrototypes } from '@rc-component/util'; import { act, fireEvent, render } from '@testing-library/react'; -import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook'; import React from 'react'; import Image from '../src'; From 1656419a3a23e2925868e2ed949896f4c5e3e746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=89=B3=E5=85=B5?= Date: Wed, 20 May 2026 11:41:47 +0800 Subject: [PATCH 2/3] chore: address review comments --- tests/preview.test.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/preview.test.tsx b/tests/preview.test.tsx index d19cf108..a050a598 100644 --- a/tests/preview.test.tsx +++ b/tests/preview.test.tsx @@ -27,6 +27,7 @@ jest.mock('@rc-component/util', () => { const util = jest.requireActual('@rc-component/util'); const origin = jest.requireActual('react'); return { + __esModule: true, ...util, useId: origin.useId, }; From 337c97285eba5044fae7320dbf116d9892f53596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=89=B3=E5=85=B5?= Date: Wed, 20 May 2026 14:02:37 +0800 Subject: [PATCH 3/3] test: restore useId mock --- tests/preview.test.tsx | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/preview.test.tsx b/tests/preview.test.tsx index a050a598..23007613 100644 --- a/tests/preview.test.tsx +++ b/tests/preview.test.tsx @@ -23,14 +23,9 @@ jest.mock('../src/Preview', () => { return MockPreview; }); -jest.mock('@rc-component/util', () => { - const util = jest.requireActual('@rc-component/util'); +jest.mock('@rc-component/util/lib/hooks/useId', () => { const origin = jest.requireActual('react'); - return { - __esModule: true, - ...util, - useId: origin.useId, - }; + return origin.useId; }); import Image from '../src';