From d7f078e1a207dfec274ea28027b2b5c559fcd6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Sat, 21 Dec 2024 20:31:55 +0800 Subject: [PATCH 01/14] chore: update for React 19 compatibility --- common/shared/vite/index.ts | 4 + examples/esbuild.config.ts | 34 +- examples/package.json | 7 +- examples/src/main.tsx | 4 +- examples/src/sheets-multi/main.tsx | 6 +- package.json | 18 +- .../action-recorder/package.json | 2 +- .../uni-slides-ui/package.json | 3 +- packages-experimental/uniui/package.json | 4 +- .../controllers/uniui-desktop.controller.tsx | 6 +- packages/design/package.json | 4 +- packages/design/src/index.ts | 1 + packages/design/src/utils/render.ts | 130 +++ packages/docs-drawing-ui/package.json | 2 +- packages/docs-hyper-link-ui/package.json | 2 +- packages/docs-mention-ui/package.json | 2 +- packages/docs-thread-comment-ui/package.json | 2 +- packages/docs-ui/package.json | 2 +- packages/drawing-ui/package.json | 2 +- packages/find-replace/package.json | 2 +- .../package.json | 2 +- .../sheets-crosshair-highlight/package.json | 2 +- .../sheets-data-validation-ui/package.json | 2 +- packages/sheets-drawing-ui/package.json | 2 +- packages/sheets-filter-ui/package.json | 2 +- packages/sheets-formula-ui/package.json | 2 +- packages/sheets-hyper-link-ui/package.json | 2 +- packages/sheets-numfmt-ui/package.json | 2 +- packages/sheets-sort-ui/package.json | 2 +- .../sheets-thread-comment-ui/package.json | 2 +- packages/sheets-ui/package.json | 2 +- packages/sheets-zen-editor/package.json | 2 +- packages/slides-ui/package.json | 2 +- packages/thread-comment-ui/package.json | 2 +- packages/ui/package.json | 4 +- .../controllers/ui/ui-desktop.controller.tsx | 4 +- .../controllers/ui/ui-mobile.controller.tsx | 3 +- pnpm-lock.yaml | 923 +++++++++--------- 38 files changed, 661 insertions(+), 538 deletions(-) create mode 100644 packages/design/src/utils/render.ts diff --git a/common/shared/vite/index.ts b/common/shared/vite/index.ts index 04880e5617c..a8aa1654888 100644 --- a/common/shared/vite/index.ts +++ b/common/shared/vite/index.ts @@ -209,6 +209,10 @@ export async function build(options?: IBuildOptions) { build: { target: 'chrome70', }, + esbuild: { + minifyIdentifiers: false, + keepNames: true, + }, resolve: { conditions: nodeFirst ? ['node', 'default'] : undefined, }, diff --git a/examples/esbuild.config.ts b/examples/esbuild.config.ts index 4a493f397f7..0991c72cd83 100644 --- a/examples/esbuild.config.ts +++ b/examples/esbuild.config.ts @@ -181,29 +181,29 @@ const entryPoints = [ './src/sheets/main.ts', './src/sheets/worker.ts', - // sheets-multi - './src/sheets-multi/main.tsx', + // // sheets-multi + // './src/sheets-multi/main.tsx', - // sheets-uniscript - './src/sheets-uniscript/main.ts', + // // sheets-uniscript + // './src/sheets-uniscript/main.ts', - // docs - './src/docs/main.ts', + // // docs + // './src/docs/main.ts', - // docs-uniscript - './src/docs-uniscript/main.ts', + // // docs-uniscript + // './src/docs-uniscript/main.ts', - // slides - './src/slides/main.ts', + // // slides + // './src/slides/main.ts', - // uni - './src/uni/main.ts', - './src/uni/worker.ts', - './src/uni/lazy.ts', + // // uni + // './src/uni/main.ts', + // './src/uni/worker.ts', + // './src/uni/lazy.ts', - // mobile sheet - './src/mobile-s/main.ts', - './src/mobile-s/worker.ts', + // // mobile sheet + // './src/mobile-s/main.ts', + // './src/mobile-s/worker.ts', ]; const config: SameShape = { diff --git a/examples/package.json b/examples/package.json index 479540c7942..747f0a3edf4 100644 --- a/examples/package.json +++ b/examples/package.json @@ -65,20 +65,17 @@ "@univerjs/uni-docs-ui": "workspace:*", "@univerjs/uni-formula": "workspace:*", "@univerjs/uni-formula-ui": "workspace:*", - "@univerjs/uni-sheets-ui": "workspace:*", "@univerjs/uni-slides-ui": "workspace:*", "@univerjs/uniscript": "workspace:*", "@univerjs/uniui": "workspace:*", "@univerjs/watermark": "workspace:*", "monaco-editor": "0.52.2", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "react-mosaic-component": "^6.1.1" }, "devDependencies": { "@types/fs-extra": "^11.0.4", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", "@univerjs-infra/shared": "workspace:*", "cross-env": "^7.0.3", "detect-port": "^1.6.1", diff --git a/examples/src/main.tsx b/examples/src/main.tsx index 1650d17e705..33758132e88 100644 --- a/examples/src/main.tsx +++ b/examples/src/main.tsx @@ -14,8 +14,8 @@ * limitations under the License. */ +import { render } from '@univerjs/design'; import React from 'react'; -import { createRoot } from 'react-dom/client'; import pkg from '../../package.json'; import './global.css'; @@ -109,4 +109,4 @@ function Examples() { ); } -createRoot(document.getElementById('app')!).render(); +render(, document.getElementById('app')!); diff --git a/examples/src/sheets-multi/main.tsx b/examples/src/sheets-multi/main.tsx index 02eacc31010..9e0892f9b21 100644 --- a/examples/src/sheets-multi/main.tsx +++ b/examples/src/sheets-multi/main.tsx @@ -15,7 +15,7 @@ */ import { LocaleType, LogLevel, Tools, Univer, UniverInstanceType } from '@univerjs/core'; -import { defaultTheme } from '@univerjs/design'; +import { defaultTheme, render } from '@univerjs/design'; import { UniverDocsPlugin } from '@univerjs/docs'; import { UniverDocsUIPlugin } from '@univerjs/docs-ui'; @@ -29,7 +29,6 @@ import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui'; import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui'; import { UniverUIPlugin } from '@univerjs/ui'; import React, { useEffect } from 'react'; -import { createRoot } from 'react-dom/client'; import { Mosaic, MosaicWindow } from 'react-mosaic-component'; import { enUS, faIR, frFR, ruRU, zhCN } from '../locales'; @@ -114,4 +113,5 @@ export function App() { /> ); }; -createRoot(document.getElementById('app')!).render(); + +render(, document.getElementById('app')!); diff --git a/package.json b/package.json index a712bd5c21a..38124fba59c 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "url": "https://github.com/dream-num/univer/issues" }, "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.5.0 || >=9.0.0" + "node": ">=18 || <=22", + "pnpm": ">=9" }, "scripts": { "prepare": "husky install", @@ -53,8 +53,8 @@ "@release-it/conventional-changelog": "^9.0.4", "@storybook/react": "8.4.7", "@types/node": "^22.10.2", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2", "@univerjs-infra/shared": "workspace:*", "@univerjs/design": "workspace:*", "@vitejs/plugin-react": "^4.3.4", @@ -69,15 +69,21 @@ "eslint-plugin-react-refresh": "^0.4.16", "husky": "^9.1.7", "lint-staged": "^15.3.0", - "react": "18.3.1", - "react-dom": "18.3.1", "release-it": "^17.11.0", + "react": "19.0.0", + "react-dom": "19.0.0", "serve": "^14.2.4", "tsx": "^4.19.2", "turbo": "^2.3.3", "typescript": "^5.7.2", "vitest": "^2.1.8" }, + "resolutions": { + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2", + "react": "19.0.0", + "react-dom": "19.0.0" + }, "lint-staged": { "*": "eslint --fix" } diff --git a/packages-experimental/action-recorder/package.json b/packages-experimental/action-recorder/package.json index b3d77b8bb5c..b2410400a3d 100644 --- a/packages-experimental/action-recorder/package.json +++ b/packages-experimental/action-recorder/package.json @@ -78,7 +78,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uni-slides-ui/package.json b/packages-experimental/uni-slides-ui/package.json index 3e473afab9f..8e2dd55d389 100644 --- a/packages-experimental/uni-slides-ui/package.json +++ b/packages-experimental/uni-slides-ui/package.json @@ -71,8 +71,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uniui/package.json b/packages-experimental/uniui/package.json index 9444e711bfb..ec51dd8c760 100644 --- a/packages-experimental/uniui/package.json +++ b/packages-experimental/uniui/package.json @@ -77,8 +77,8 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uniui/src/controllers/uniui-desktop.controller.tsx b/packages-experimental/uniui/src/controllers/uniui-desktop.controller.tsx index 7d60a76b11a..dd675f925cb 100644 --- a/packages-experimental/uniui/src/controllers/uniui-desktop.controller.tsx +++ b/packages-experimental/uniui/src/controllers/uniui-desktop.controller.tsx @@ -14,13 +14,13 @@ * limitations under the License. */ -import { connectInjector, Disposable, Inject, Injector, LifecycleService, LifecycleStages, Optional, toDisposable } from '@univerjs/core'; -import type { IUniverUIConfig, IWorkbenchOptions } from '@univerjs/ui'; import type { IDisposable } from '@univerjs/core'; +import type { IUniverUIConfig, IWorkbenchOptions } from '@univerjs/ui'; +import { connectInjector, Disposable, Inject, Injector, LifecycleService, LifecycleStages, Optional, toDisposable } from '@univerjs/core'; +import { render as createRoot, unmount } from '@univerjs/design'; import { BuiltInUIPart, CanvasPopup, FloatDom, ILayoutService, IUIPartsService } from '@univerjs/ui'; import React from 'react'; import { delay, filter, take } from 'rxjs'; -import { render as createRoot, unmount } from 'rc-util/lib/React/render'; import { UniWorkbench } from '../views/workbench/UniWorkbench'; diff --git a/packages/design/package.json b/packages/design/package.json index 71bd6cd3e95..7722d569c67 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -97,8 +97,8 @@ "@univerjs/core": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", "typescript": "^5.7.2", diff --git a/packages/design/src/index.ts b/packages/design/src/index.ts index 4599253eaf1..3bb2b53b721 100644 --- a/packages/design/src/index.ts +++ b/packages/design/src/index.ts @@ -50,3 +50,4 @@ export { defaultTheme, greenTheme, themeInstance } from './themes'; export { DraggableList, type IDraggableListProps } from './components/draggable-list'; export { clsx } from './helper/clsx'; export { resizeObserverCtor } from './helper/resize-observer'; +export { render, unmount } from './utils/render'; diff --git a/packages/design/src/utils/render.ts b/packages/design/src/utils/render.ts new file mode 100644 index 00000000000..331a56b6358 --- /dev/null +++ b/packages/design/src/utils/render.ts @@ -0,0 +1,130 @@ +/** + * Copyright 2023-present DreamNum Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Inspired by https://github.com/react-component/util + */ + +import type * as React from 'react'; +import type { Root } from 'react-dom/client'; +import * as ReactDOM from 'react-dom'; + +type CreateRoot = (container: ContainerType) => Root; + +type fullClone = typeof ReactDOM & { + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?: { + usingClientEntryPoint?: boolean; + }; + createRoot?: CreateRoot; +}; + +let fullClone: fullClone; +async function getFullClone() { + if (fullClone) return fullClone; + + try { + const { default: client } = await import('react-dom/client'); + fullClone = { ...ReactDOM, ...client }; + } catch { + fullClone = { ...ReactDOM }; + } + + return fullClone; +} + +async function getCreateRoot() { + const fullClone = await getFullClone(); + + let createRoot: CreateRoot | undefined; + try { + const mainVersion = Number((fullClone.version || '').split('.')[0]); + if (mainVersion >= 18) { + createRoot = fullClone.createRoot; + } + } catch {} + + return createRoot; +} + +async function toggleWarning(skip: boolean) { + const { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } = await getFullClone(); + + if ( + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && + typeof __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === 'object' + ) { + __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = + skip; + } +} + +const MARK = '__rc_react_root__'; + +// ========================== Render ========================== +type ContainerType = (Element | DocumentFragment) & { + [MARK]?: Root; +}; + +async function modernRender(node: React.ReactElement, container: ContainerType) { + toggleWarning(true); + const createRoot = await getCreateRoot(); + const root = container[MARK] || createRoot?.(container); + toggleWarning(false); + + root?.render(node); + + container[MARK] = root; +} + +async function legacyRender(node: React.ReactElement, container: ContainerType) { + const { render: reactRender } = await getFullClone(); + reactRender(node, container); +} + +export async function render(node: React.ReactElement, container: ContainerType) { + const createRoot = await getCreateRoot(); + if (createRoot) { + modernRender(node, container); + return; + } + + legacyRender(node, container); +} + +// ========================= Unmount ========================== +async function modernUnmount(container: ContainerType) { + // Delay to unmount to avoid React 18 sync warning + return Promise.resolve().then(() => { + container[MARK]?.unmount(); + + delete container[MARK]; + }); +} + +async function legacyUnmount(container: ContainerType) { + const { unmountComponentAtNode } = await getFullClone(); + unmountComponentAtNode(container); +} + +export async function unmount(container: ContainerType) { + const createRoot = await getCreateRoot(); + if (createRoot !== undefined) { + // Delay to unmount to avoid React 18 sync warning + return modernUnmount(container); + } + + legacyUnmount(container); +} diff --git a/packages/docs-drawing-ui/package.json b/packages/docs-drawing-ui/package.json index dfe5523652c..1a7a922393f 100644 --- a/packages/docs-drawing-ui/package.json +++ b/packages/docs-drawing-ui/package.json @@ -82,7 +82,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-hyper-link-ui/package.json b/packages/docs-hyper-link-ui/package.json index 784bb428137..847c74e77eb 100644 --- a/packages/docs-hyper-link-ui/package.json +++ b/packages/docs-hyper-link-ui/package.json @@ -79,7 +79,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-mention-ui/package.json b/packages/docs-mention-ui/package.json index aebf262a2ab..0c85725a6e6 100644 --- a/packages/docs-mention-ui/package.json +++ b/packages/docs-mention-ui/package.json @@ -72,7 +72,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-thread-comment-ui/package.json b/packages/docs-thread-comment-ui/package.json index d325e7ebc50..c2551323d68 100644 --- a/packages/docs-thread-comment-ui/package.json +++ b/packages/docs-thread-comment-ui/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-ui/package.json b/packages/docs-ui/package.json index 6663d9ddf26..b38a125b856 100644 --- a/packages/docs-ui/package.json +++ b/packages/docs-ui/package.json @@ -88,7 +88,7 @@ "@univerjs/docs-drawing": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/drawing-ui/package.json b/packages/drawing-ui/package.json index 8509bff1d52..4efd475d5c7 100644 --- a/packages/drawing-ui/package.json +++ b/packages/drawing-ui/package.json @@ -78,7 +78,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/find-replace/package.json b/packages/find-replace/package.json index bb27a073ed2..b43ebeb9594 100644 --- a/packages/find-replace/package.json +++ b/packages/find-replace/package.json @@ -78,7 +78,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-conditional-formatting-ui/package.json b/packages/sheets-conditional-formatting-ui/package.json index 7ea1663f4be..82605138071 100644 --- a/packages/sheets-conditional-formatting-ui/package.json +++ b/packages/sheets-conditional-formatting-ui/package.json @@ -88,7 +88,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-crosshair-highlight/package.json b/packages/sheets-crosshair-highlight/package.json index c274ab86f53..57044a123b4 100644 --- a/packages/sheets-crosshair-highlight/package.json +++ b/packages/sheets-crosshair-highlight/package.json @@ -84,7 +84,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-data-validation-ui/package.json b/packages/sheets-data-validation-ui/package.json index 251ac189e64..403067b2e1e 100644 --- a/packages/sheets-data-validation-ui/package.json +++ b/packages/sheets-data-validation-ui/package.json @@ -89,7 +89,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-drawing-ui/package.json b/packages/sheets-drawing-ui/package.json index 491ac26fbad..1b204ce9b9d 100644 --- a/packages/sheets-drawing-ui/package.json +++ b/packages/sheets-drawing-ui/package.json @@ -90,7 +90,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-filter-ui/package.json b/packages/sheets-filter-ui/package.json index 5c06b0109c1..6f89afe8ec0 100644 --- a/packages/sheets-filter-ui/package.json +++ b/packages/sheets-filter-ui/package.json @@ -82,7 +82,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-formula-ui/package.json b/packages/sheets-formula-ui/package.json index 3a5c7e75c20..cd74ed2a9dc 100644 --- a/packages/sheets-formula-ui/package.json +++ b/packages/sheets-formula-ui/package.json @@ -88,7 +88,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-hyper-link-ui/package.json b/packages/sheets-hyper-link-ui/package.json index c59e5168472..cb9c0e4c6a1 100644 --- a/packages/sheets-hyper-link-ui/package.json +++ b/packages/sheets-hyper-link-ui/package.json @@ -92,7 +92,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-numfmt-ui/package.json b/packages/sheets-numfmt-ui/package.json index 86fc5749c2d..6ce2199de1b 100644 --- a/packages/sheets-numfmt-ui/package.json +++ b/packages/sheets-numfmt-ui/package.json @@ -83,7 +83,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-sort-ui/package.json b/packages/sheets-sort-ui/package.json index 07765efe0a8..6bdad464d1b 100644 --- a/packages/sheets-sort-ui/package.json +++ b/packages/sheets-sort-ui/package.json @@ -81,7 +81,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-thread-comment-ui/package.json b/packages/sheets-thread-comment-ui/package.json index f5a408f0bdf..83fbf9d4b65 100644 --- a/packages/sheets-thread-comment-ui/package.json +++ b/packages/sheets-thread-comment-ui/package.json @@ -81,7 +81,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-ui/package.json b/packages/sheets-ui/package.json index f383a334e40..7d242a01b40 100644 --- a/packages/sheets-ui/package.json +++ b/packages/sheets-ui/package.json @@ -92,7 +92,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-zen-editor/package.json b/packages/sheets-zen-editor/package.json index ce9dca743d0..fa09b7e57cc 100644 --- a/packages/sheets-zen-editor/package.json +++ b/packages/sheets-zen-editor/package.json @@ -88,7 +88,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/slides-ui/package.json b/packages/slides-ui/package.json index fd9ccfc6c1c..2b3137b213c 100644 --- a/packages/slides-ui/package.json +++ b/packages/slides-ui/package.json @@ -83,7 +83,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/thread-comment-ui/package.json b/packages/thread-comment-ui/package.json index ab5d6e23f07..48513ec8705 100644 --- a/packages/thread-comment-ui/package.json +++ b/packages/thread-comment-ui/package.json @@ -78,7 +78,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", + "react": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/ui/package.json b/packages/ui/package.json index 847695e747f..c9553c2f64a 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -92,8 +92,8 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/ui/src/controllers/ui/ui-desktop.controller.tsx b/packages/ui/src/controllers/ui/ui-desktop.controller.tsx index 137caee4bff..1d5ab8e538d 100644 --- a/packages/ui/src/controllers/ui/ui-desktop.controller.tsx +++ b/packages/ui/src/controllers/ui/ui-desktop.controller.tsx @@ -19,9 +19,9 @@ import type { RenderUnit } from '@univerjs/engine-render'; import type { IUniverUIConfig } from '../config.schema'; import type { IWorkbenchOptions } from './ui.controller'; import { connectInjector, Disposable, Inject, Injector, isInternalEditorID, IUniverInstanceService, LifecycleService, LifecycleStages, Optional, toDisposable } from '@univerjs/core'; -import { IRenderManagerService } from '@univerjs/engine-render'; +import { render as createRoot, unmount } from '@univerjs/design'; -import { render as createRoot, unmount } from 'rc-util/lib/React/render'; +import { IRenderManagerService } from '@univerjs/engine-render'; import React from 'react'; import { filter, take } from 'rxjs'; import { ILayoutService } from '../../services/layout/layout.service'; diff --git a/packages/ui/src/controllers/ui/ui-mobile.controller.tsx b/packages/ui/src/controllers/ui/ui-mobile.controller.tsx index 10cb6938a04..67bcad729f0 100644 --- a/packages/ui/src/controllers/ui/ui-mobile.controller.tsx +++ b/packages/ui/src/controllers/ui/ui-mobile.controller.tsx @@ -18,9 +18,10 @@ import type { IDisposable } from '@univerjs/core'; import type { IUniverUIConfig } from '../config.schema'; import type { IUIController, IWorkbenchOptions } from './ui.controller'; import { connectInjector, Disposable, Inject, Injector, IUniverInstanceService, LifecycleService, LifecycleStages, Optional, toDisposable, UniverInstanceType } from '@univerjs/core'; +import { render as createRoot, unmount } from '@univerjs/design'; + import { IRenderManagerService } from '@univerjs/engine-render'; -import { render as createRoot, unmount } from 'rc-util/lib/React/render'; import React from 'react'; import { ILayoutService } from '../../services/layout/layout.service'; import { IMenuManagerService } from '../../services/menu/menu-manager.service'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3909132d32..b5f283ad489 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,12 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@types/react': ^19.0.2 + '@types/react-dom': ^19.0.2 + react: 19.0.0 + react-dom: 19.0.0 + importers: .: @@ -31,16 +37,16 @@ importers: version: 9.0.4(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)(release-it@17.11.0(typescript@5.7.2)) '@storybook/react': specifier: 8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@types/node': specifier: ^22.10.2 version: 22.10.2 '@types/react': - specifier: ^18.3.12 - version: 18.3.12 + specifier: ^19.0.2 + version: 19.0.2 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.0.2 + version: 19.0.2(@types/react@19.0.2) '@univerjs-infra/shared': specifier: workspace:* version: link:common/shared @@ -84,11 +90,11 @@ importers: specifier: ^15.3.0 version: 15.3.0 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) release-it: specifier: ^17.11.0 version: 17.11.0(typescript@5.7.2) @@ -167,7 +173,7 @@ importers: version: 11.0.4 '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/icons-svg': specifier: ^0.2.12 version: 0.2.12 @@ -179,16 +185,16 @@ importers: dependencies: '@chromatic-com/storybook': specifier: ^3.2.3 - version: 3.2.3(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + version: 3.2.3(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-essentials': specifier: ^8.4.7 - version: 8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.2)) + version: 8.4.7(@types/react@19.0.2)(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-interactions': specifier: ^8.4.7 version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-links': specifier: ^8.4.7 - version: 8.4.7(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + version: 8.4.7(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-styling-webpack': specifier: ^1.0.1 version: 1.0.1(webpack@5.97.1(@swc/core@1.7.5)(esbuild@0.24.2)) @@ -197,16 +203,16 @@ importers: version: 1.0.5(webpack@5.97.1(@swc/core@1.7.5)(esbuild@0.24.2)) '@storybook/blocks': specifier: ^8.4.7 - version: 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + version: 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) '@storybook/icons': specifier: ^1.3.0 - version: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@storybook/react': specifier: ^8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@storybook/react-webpack5': specifier: ^8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@storybook/types': specifier: ^8.4.7 version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) @@ -418,9 +424,6 @@ importers: '@univerjs/uni-formula-ui': specifier: workspace:* version: link:../packages-experimental/uni-formula-ui - '@univerjs/uni-sheets-ui': - specifier: workspace:* - version: link:../packages-experimental/uni-sheets-ui '@univerjs/uni-slides-ui': specifier: workspace:* version: link:../packages-experimental/uni-slides-ui @@ -437,24 +440,18 @@ importers: specifier: 0.52.2 version: 0.52.2 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) react-mosaic-component: specifier: ^6.1.1 - version: 6.1.1(@types/node@22.10.5)(@types/react@18.3.12)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.1.1(@types/node@22.10.5)(@types/react@19.0.2)(dnd-core@16.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@types/fs-extra': specifier: ^11.0.4 version: 11.0.4 - '@types/react': - specifier: ^18.3.12 - version: 18.3.12 - '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.1 '@univerjs-infra/shared': specifier: workspace:* version: link:../common/shared @@ -648,7 +645,7 @@ importers: version: link:../../packages/design '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../../packages/sheets @@ -672,8 +669,8 @@ importers: specifier: ^4.2.1 version: 4.2.1 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -706,7 +703,7 @@ importers: version: link:../../packages/engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/mockdata': specifier: workspace:* version: link:../../mockdata @@ -726,8 +723,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 react: - specifier: ^16.9.0 || ^17.0.0 || ^18.0.0 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 optionalDependencies: vue: specifier: '>=3.0.0' @@ -867,7 +864,7 @@ importers: version: link:../../packages/engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/rpc': specifier: workspace:* version: link:../../packages/rpc @@ -890,8 +887,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 react: - specifier: ^16.9.0 || ^17.0.0 || ^18.0.0 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -931,7 +928,7 @@ importers: version: link:../../packages/docs-ui '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../../packages/sheets @@ -951,8 +948,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 react: - specifier: ^16.9.0 || ^17.0.0 || ^18.0.0 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -986,7 +983,7 @@ importers: version: link:../../packages/engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/slides-ui': specifier: workspace:* version: link:../../packages/slides-ui @@ -1010,11 +1007,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 - react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1035,7 +1029,7 @@ importers: dependencies: '@floating-ui/react-dom': specifier: ^2.1.2 - version: 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/core': specifier: workspace:* version: link:../../packages/core @@ -1047,7 +1041,7 @@ importers: version: link:../../packages/engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../../packages/sheets @@ -1059,13 +1053,13 @@ importers: version: link:../../packages/ui '@xyflow/react': specifier: ^12.3.5 - version: 12.3.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.3.5(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) clsx: specifier: ^2.1.1 version: 2.1.1 rc-util: specifier: ^5.43.0 - version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -1077,11 +1071,11 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1134,8 +1128,8 @@ importers: specifier: ^4.0.1 version: 4.0.1 react: - specifier: ^16.9.0 || ^17.0.0 || ^18.0.0 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 devDependencies: '@types/lodash-es': specifier: ^4.17.12 @@ -1194,13 +1188,13 @@ importers: dependencies: '@rc-component/color-picker': specifier: ^2.0.1 - version: 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rc-component/trigger': specifier: ^2.2.5 - version: 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -1209,59 +1203,59 @@ importers: version: 1.11.13 rc-dialog: specifier: ^9.6.0 - version: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-dropdown: specifier: ^4.2.0 - version: 4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-input: specifier: ^1.6.3 - version: 1.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-input-number: specifier: ^9.3.0 - version: 9.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-menu: specifier: ^9.16.0 - version: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-picker: specifier: ^4.8.1 - version: 4.8.1(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.8.1(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-segmented: specifier: ^2.5.0 - version: 2.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-select: specifier: ^14.16.3 - version: 14.16.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.16.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-textarea: specifier: ^1.8.2 - version: 1.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-util: specifier: ^5.43.0 - version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-virtual-list: specifier: ^3.15.0 - version: 3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-draggable: specifier: ^4.4.6 - version: 4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-grid-layout: specifier: ^1.5.0 - version: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-transition-group: specifier: ^4.4.5 - version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: specifier: ^2.6.0 version: 2.6.0 devDependencies: '@testing-library/react': specifier: ^16.1.0 - version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@types/react-grid-layout': specifier: ^1.3.5 version: 1.3.5 '@types/react-transition-group': specifier: ^4.4.11 - version: 4.4.12(@types/react@18.3.12) + version: 4.4.12(@types/react@19.0.2) '@univerjs-infra/shared': specifier: workspace:* version: link:../../common/shared @@ -1275,11 +1269,11 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) tailwindcss: specifier: ^3.4.17 version: 3.4.17 @@ -1371,7 +1365,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/ui': specifier: workspace:* version: link:../ui @@ -1389,8 +1383,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1451,7 +1445,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/ui': specifier: workspace:* version: link:../ui @@ -1466,8 +1460,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1512,8 +1506,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1546,7 +1540,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/thread-comment': specifier: workspace:* version: link:../thread-comment @@ -1567,8 +1561,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1604,7 +1598,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/ui': specifier: workspace:* version: link:../ui @@ -1625,8 +1619,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1684,7 +1678,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/ui': specifier: workspace:* version: link:../ui @@ -1702,8 +1696,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1910,7 +1904,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/ui': specifier: workspace:* version: link:../ui @@ -1925,8 +1919,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2096,7 +2090,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2116,14 +2110,14 @@ importers: specifier: ^2.1.1 version: 2.1.1 react-dom: - specifier: ^16.9.0 || ^17.0.0 || ^18.0.0 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) react-grid-layout: specifier: ^1.4.4 - version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-resizable: specifier: ^3.0.5 - version: 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@types/react-grid-layout': specifier: ^1.3.5 @@ -2138,8 +2132,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2166,7 +2160,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2190,8 +2184,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2273,7 +2267,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2306,8 +2300,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2374,7 +2368,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2401,8 +2395,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2457,7 +2451,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/rpc': specifier: workspace:* version: link:../rpc @@ -2478,7 +2472,7 @@ importers: version: 2.1.1 rc-virtual-list: specifier: ^3.15.0 - version: 3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -2490,8 +2484,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2598,7 +2592,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2625,8 +2619,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2724,7 +2718,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2754,8 +2748,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2822,7 +2816,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2846,8 +2840,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2902,7 +2896,7 @@ importers: version: link:../engine-formula '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -2920,7 +2914,7 @@ importers: version: 2.1.1 rc-virtual-list: specifier: ^3.15.0 - version: 3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -2932,8 +2926,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -2994,7 +2988,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -3024,8 +3018,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -3067,7 +3061,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/protocol': specifier: 0.1.40 version: 0.1.40(@grpc/grpc-js@1.10.9)(rxjs@7.8.1) @@ -3094,8 +3088,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -3128,7 +3122,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/sheets': specifier: workspace:* version: link:../sheets @@ -3152,8 +3146,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -3214,7 +3208,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/slides': specifier: workspace:* version: link:../slides @@ -3235,8 +3229,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -3310,7 +3304,7 @@ importers: version: link:../docs-ui '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs/thread-comment': specifier: workspace:* version: link:../thread-comment @@ -3331,8 +3325,8 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -3362,7 +3356,7 @@ importers: version: link:../engine-render '@univerjs/icons': specifier: ^0.2.12 - version: 0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -3371,10 +3365,10 @@ importers: version: 1.10.0 rc-notification: specifier: ^5.6.2 - version: 5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-util: specifier: ^5.43.0 - version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) optionalDependencies: vue: specifier: '>=3.0.0' @@ -3382,7 +3376,7 @@ importers: devDependencies: '@testing-library/react': specifier: ^16.1.0 - version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@univerjs-infra/shared': specifier: workspace:* version: link:../../common/shared @@ -3393,11 +3387,11 @@ importers: specifier: ^8.4.49 version: 8.4.49 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -3435,8 +3429,8 @@ importers: specifier: 0.52.2 version: 0.52.2 react: - specifier: ^16.9.0 || ^17.0.0 || ^18.0.0 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -4649,8 +4643,8 @@ packages: '@floating-ui/react-dom@2.1.2': resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: 19.0.0 + react-dom: 19.0.0 '@floating-ui/utils@0.2.8': resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} @@ -4742,8 +4736,8 @@ packages: '@mdx-js/react@3.1.0': resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: - '@types/react': '>=16' - react: '>=16' + '@types/react': ^19.0.2 + react: 19.0.0 '@microsoft/api-extractor-model@7.30.1': resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} @@ -4880,8 +4874,8 @@ packages: '@rc-component/color-picker@2.0.1': resolution: {integrity: sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 '@rc-component/mini-decimal@1.1.0': resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} @@ -4891,15 +4885,15 @@ packages: resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} engines: {node: '>=8.x'} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 '@rc-component/trigger@2.2.5': resolution: {integrity: sha512-F1EJ4KjFpGAHAjuKvOyZB/6IZDkVx0bHl0M4fQM5wXcmm7lgTgVSSnR3bXwdmS6jOJGHOqfDxIJW3WUvwMIXhQ==} engines: {node: '>=8.x'} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 '@react-dnd/asap@5.0.2': resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} @@ -5185,7 +5179,7 @@ packages: '@storybook/addon-links@8.4.7': resolution: {integrity: sha512-L/1h4dMeMKF+MM0DanN24v5p3faNYbbtOApMgg7SlcBT/tgo3+cAjkgmNpYA8XtKnDezm+T2mTDhB8mmIRZpIQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 storybook: ^8.4.7 peerDependenciesMeta: react: @@ -5223,8 +5217,8 @@ packages: '@storybook/blocks@8.4.7': resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 + react-dom: 19.0.0 storybook: ^8.4.7 peerDependenciesMeta: react: @@ -5274,8 +5268,8 @@ packages: resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} engines: {node: '>=14.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 + react-dom: 19.0.0 '@storybook/instrumenter@8.4.7': resolution: {integrity: sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==} @@ -5294,8 +5288,8 @@ packages: resolution: {integrity: sha512-geTSBKyrBagVihil5MF7LkVFynbfHhCinvnbCZZqXW7M1vgcxvatunUENB+iV8eWg/0EJ+8O7scZL+BAxQ/2qg==} engines: {node: '>=18.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 + react-dom: 19.0.0 storybook: ^8.4.7 typescript: '*' peerDependenciesMeta: @@ -5316,16 +5310,16 @@ packages: '@storybook/react-dom-shim@8.4.7': resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 + react-dom: 19.0.0 storybook: ^8.4.7 '@storybook/react-webpack5@8.4.7': resolution: {integrity: sha512-T9GLqlsP4It4El7cC8rSkBPRWvORAsTDULeWlO36RST2TrYnmBOUytsi22mk7cAAAVhhD6rTrs1YdqWRMpfa1w==} engines: {node: '>=18.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 + react-dom: 19.0.0 storybook: ^8.4.7 typescript: '>= 4.2.x' peerDependenciesMeta: @@ -5337,8 +5331,8 @@ packages: engines: {node: '>=18.0.0'} peerDependencies: '@storybook/test': 8.4.7 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: 19.0.0 + react-dom: 19.0.0 storybook: ^8.4.7 typescript: '>= 4.2.x' peerDependenciesMeta: @@ -5456,10 +5450,10 @@ packages: engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 + '@types/react': ^19.0.2 + '@types/react-dom': ^19.0.2 + react: 19.0.0 + react-dom: 19.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -5586,14 +5580,13 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/prop-types@15.7.13': - resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - '@types/rbush@4.0.0': resolution: {integrity: sha512-+N+2H39P8X+Hy1I5mC6awlTX54k3FhiUmvt7HWzGJZvF+syUAAxP/stwppS8JE84YHqFgRMv6fCy31202CMFxQ==} - '@types/react-dom@18.3.1': - resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + '@types/react-dom@19.0.2': + resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} + peerDependencies: + '@types/react': ^19.0.2 '@types/react-grid-layout@1.3.5': resolution: {integrity: sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ==} @@ -5601,10 +5594,10 @@ packages: '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: - '@types/react': '*' + '@types/react': ^19.0.2 - '@types/react@18.3.12': - resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + '@types/react@19.0.2': + resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -5730,8 +5723,8 @@ packages: '@univerjs/icons@0.2.12': resolution: {integrity: sha512-1NaLAveIFpo9uPIS13gZ1W1nK8yeatr1HBsI65E8HkKF6jMML1JHxj/fcc6t95c7hN4jt0AmxwilB4BGK3S8Og==} peerDependencies: - react: '*' - react-dom: '*' + react: 19.0.0 + react-dom: 19.0.0 '@univerjs/protocol@0.1.40': resolution: {integrity: sha512-+SxbIaLlQ3G1iPGtm7915R+iLtMFiiynk1M9j+40QxFPDD6Kynwi7XCjo4Y1NDSXDlDvU60iW1gYfuldybyk5w==} @@ -5933,8 +5926,8 @@ packages: '@xyflow/react@12.3.5': resolution: {integrity: sha512-wAYqpicdrVo1rxCu0X3M9s3YIF45Agqfabw0IBryTGqjWvr2NyfciI8gIP4MB+NKpWWN5kxZ9tiZ9u8lwC7iAg==} peerDependencies: - react: '>=17' - react-dom: '>=17' + react: 19.0.0 + react-dom: 19.0.0 '@xyflow/system@0.0.46': resolution: {integrity: sha512-bmFXvboVdiydIFZmDCjrbBCYgB0d5pYdkcZPWbAxGmhMRUZ+kW3CksYgYxWabrw51rwpWitLEadvLrivG0mVfA==} @@ -9878,57 +9871,57 @@ packages: rc-dialog@9.6.0: resolution: {integrity: sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-dropdown@4.2.0: resolution: {integrity: sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==} peerDependencies: - react: '>=16.11.0' - react-dom: '>=16.11.0' + react: 19.0.0 + react-dom: 19.0.0 rc-input-number@9.3.0: resolution: {integrity: sha512-JQ363ywqRyxwgVxpg2z2kja3CehTpYdqR7emJ/6yJjRdbvo+RvfE83fcpBCIJRq3zLp8SakmEXq60qzWyZ7Usw==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-input@1.6.3: resolution: {integrity: sha512-wI4NzuqBS8vvKr8cljsvnTUqItMfG1QbJoxovCgL+DX4eVUcHIjVwharwevIxyy7H/jbLryh+K7ysnJr23aWIA==} peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' + react: 19.0.0 + react-dom: 19.0.0 rc-menu@9.16.0: resolution: {integrity: sha512-vAL0yqPkmXWk3+YKRkmIR8TYj3RVdEt3ptG2jCJXWNAvQbT0VJJdRyHZ7kG/l1JsZlB+VJq/VcYOo69VR4oD+w==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-motion@2.9.2: resolution: {integrity: sha512-fUAhHKLDdkAXIDLH0GYwof3raS58dtNUmzLF2MeiR8o6n4thNpSDQhOqQzWE4WfFZDCi9VEN8n7tiB7czREcyw==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-motion@2.9.3: resolution: {integrity: sha512-rkW47ABVkic7WEB0EKJqzySpvDqwl60/tdkY7hWP7dYnh5pm0SzJpo54oW3TDUGXV5wfxXFmMkxrzRRbotQ0+w==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-notification@5.6.2: resolution: {integrity: sha512-Id4IYMoii3zzrG0lB0gD6dPgJx4Iu95Xu0BQrhHIbp7ZnAZbLqdqQ73aIWH0d0UFcElxwaKjnzNovTjo7kXz7g==} engines: {node: '>=8.x'} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-overflow@1.3.2: resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-picker@4.8.1: resolution: {integrity: sha512-lj9hXXMSkbjFUIhfQh8XH698ybxnoBOfq7pdM1FvfSyDwdFhdQa7dvsIYwo6Uz7Zp1wVkfw5rOJO3MpdWzoHsg==} @@ -9938,8 +9931,8 @@ packages: dayjs: '>= 1.x' luxon: '>= 3.x' moment: '>= 2.x' - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 peerDependenciesMeta: date-fns: optional: true @@ -9953,40 +9946,40 @@ packages: rc-resize-observer@1.4.0: resolution: {integrity: sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-segmented@2.5.0: resolution: {integrity: sha512-B28Fe3J9iUFOhFJET3RoXAPFJ2u47QvLSYcZWC4tFYNGPEjug5LAxEasZlA/PpAxhdOPqGWsGbSj7ftneukJnw==} peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' + react: 19.0.0 + react-dom: 19.0.0 rc-select@14.16.3: resolution: {integrity: sha512-51+j6s3fJJJXB7E+B6W1hM4Tjzv1B/Decooz9ilgegDBt3ZAth1b/xMwYCTrT5BbG2e53XACQsyDib2+3Ro1fg==} engines: {node: '>=8.x'} peerDependencies: - react: '*' - react-dom: '*' + react: 19.0.0 + react-dom: 19.0.0 rc-textarea@1.8.2: resolution: {integrity: sha512-UFAezAqltyR00a8Lf0IPAyTd29Jj9ee8wt8DqXyDMal7r/Cg/nDt3e1OOv3Th4W6mKaZijjgwuPXhAfVNTN8sw==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-util@5.43.0: resolution: {integrity: sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc-virtual-list@3.15.0: resolution: {integrity: sha512-dF2YQztqrU3ijAeWOqscTshCEr7vpimzSqAVjO1AyAmaqcHulaXpnGR0ptK5PXfxTUy48VkJOiglMIxlkYGs0w==} engines: {node: '>=8.x'} peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + react: 19.0.0 + react-dom: 19.0.0 rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -9999,7 +9992,7 @@ packages: resolution: {integrity: sha512-K+kTyOPgX+ZujMZ+Rmb7pZdHBvg+DzinG/w4Eh52WOB8/pfO38efnnrtEZNJmjTvLxc16RBYO+tPM68Fg8viBA==} engines: {node: '>=16'} peerDependencies: - react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 + react: 19.0.0 react-dnd-html5-backend@16.0.1: resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==} @@ -10008,14 +10001,14 @@ packages: resolution: {integrity: sha512-Ecj+gwr5B7zRiWqkDU5sUvUmufcu97WnsZFHnqHrWFJhTXAXQnhrperHLFktNP2CnQYtAgbucodr1if0MWpEaA==} peerDependencies: dnd-core: ^16.0.1 - react: ^16.14.0 || ^17.0.2 || ^18.0.0 + react: 19.0.0 react-dnd: ^16.0.1 - react-dom: ^16.14.0 || ^17.0.2 || ^18.0.0 + react-dom: 19.0.0 react-dnd-preview@8.1.2: resolution: {integrity: sha512-j5M1NcQBItOCYXONRbCNs6MzW7u4KygeOGZlztNNguTs1/f2d7q1fRnQjFLjCpgeg5Gy/JrTFrbRThZglJP5dg==} peerDependencies: - react: ^16.14.0 || ^17.0.2 || ^18.0.0 + react: 19.0.0 react-dnd: ^16.0.1 react-dnd-touch-backend@16.0.1: @@ -10026,8 +10019,8 @@ packages: peerDependencies: '@types/hoist-non-react-statics': '>= 3.3.1' '@types/node': '>= 12' - '@types/react': '>= 16' - react: '>= 16.14' + '@types/react': ^19.0.2 + react: 19.0.0 peerDependenciesMeta: '@types/hoist-non-react-statics': optional: true @@ -10045,28 +10038,28 @@ packages: resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} engines: {node: '>=16.14.0'} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: - react: ^18.3.1 + react: 19.0.0 react-draggable@4.4.6: resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==} peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' + react: 19.0.0 + react-dom: 19.0.0 react-grid-layout@1.4.4: resolution: {integrity: sha512-7+Lg8E8O8HfOH5FrY80GCIR1SHTn2QnAYKh27/5spoz+OHhMmEhU/14gIkRzJOtympDPaXcVRX/nT1FjmeOUmQ==} peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' + react: 19.0.0 + react-dom: 19.0.0 react-grid-layout@1.5.0: resolution: {integrity: sha512-WBKX7w/LsTfI99WskSu6nX2nbJAUD7GD6nIXcwYLyPpnslojtmql2oD3I2g5C3AK8hrxIarYT8awhuDIp7iQ5w==} peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' + react: 19.0.0 + react-dom: 19.0.0 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -10080,7 +10073,7 @@ packages: react-mosaic-component@6.1.1: resolution: {integrity: sha512-Ivuj6AxRDlo/H8OiEDU1mdgivxuKbwGOa5Ub6Yf+bHcu0JWioT7ttlpCWF63/gKrJBlRMB6fW9/eNOXINg9+Gg==} peerDependencies: - react: '>=16' + react: 19.0.0 react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} @@ -10089,16 +10082,16 @@ packages: react-resizable@3.0.5: resolution: {integrity: sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==} peerDependencies: - react: '>= 16.3' + react: 19.0.0 react-transition-group@4.4.5: resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react: 19.0.0 + react-dom: 19.0.0 - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -10349,8 +10342,8 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} @@ -11094,7 +11087,7 @@ packages: use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: 19.0.0 util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -11492,9 +11485,9 @@ packages: resolution: {integrity: sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==} engines: {node: '>=12.7.0'} peerDependencies: - '@types/react': '>=16.8' + '@types/react': ^19.0.2 immer: '>=9.0.6' - react: '>=16.8' + react: 19.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -11766,12 +11759,12 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@chromatic-com/storybook@3.2.3(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@chromatic-com/storybook@3.2.3(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))': dependencies: chromatic: 11.20.2 filesize: 10.1.6 jsonfile: 6.1.0 - react-confetti: 6.2.2(react@18.3.1) + react-confetti: 6.2.2(react@19.0.0) storybook: 8.4.7(prettier@3.4.2) strip-ansi: 7.1.0 transitivePeerDependencies: @@ -12570,11 +12563,11 @@ snapshots: '@floating-ui/core': 1.6.4 '@floating-ui/utils': 0.2.8 - '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/dom': 1.6.11 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@floating-ui/utils@0.2.8': {} @@ -12661,11 +12654,11 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} - '@mdx-js/react@3.1.0(@types/react@18.3.12)(react@18.3.1)': + '@mdx-js/react@3.1.0(@types/react@19.0.2)(react@19.0.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.12 - react: 18.3.1 + '@types/react': 19.0.2 + react: 19.0.0 '@microsoft/api-extractor-model@7.30.1(@types/node@22.10.5)': dependencies: @@ -12821,37 +12814,37 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@rc-component/color-picker@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/color-picker@2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@ant-design/fast-color': 2.0.6 '@babel/runtime': 7.25.0 classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@rc-component/mini-decimal@1.1.0': dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/portal@1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@rc-component/trigger@2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/trigger@2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@react-dnd/asap@5.0.2': {} @@ -13063,25 +13056,25 @@ snapshots: storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-docs@8.4.7(@types/react@19.0.2)(storybook@8.4.7(prettier@3.4.2))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.3.12)(react@18.3.1) - '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + '@mdx-js/react': 3.1.0(@types/react@19.0.2)(react@19.0.0) + '@storybook/blocks': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@storybook/react-dom-shim': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-essentials@8.4.7(@types/react@19.0.2)(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/addon-actions': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-controls': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/addon-docs': 8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.2)) + '@storybook/addon-docs': 8.4.7(@types/react@19.0.2)(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-measure': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/addon-outline': 8.4.7(storybook@8.4.7(prettier@3.4.2)) @@ -13106,14 +13099,14 @@ snapshots: storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - '@storybook/addon-links@8.4.7(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/addon-links@8.4.7(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/csf': 0.1.13 '@storybook/global': 5.0.0 storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 optionalDependencies: - react: 18.3.1 + react: 19.0.0 '@storybook/addon-measure@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: @@ -13149,15 +13142,15 @@ snapshots: - '@swc/helpers' - webpack - '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))': dependencies: '@storybook/csf': 0.1.13 - '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/icons': 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@storybook/builder-webpack5@8.4.7(@swc/core@1.7.5)(esbuild@0.24.2)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': dependencies: @@ -13237,10 +13230,10 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/icons@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@storybook/instrumenter@8.4.7(storybook@8.4.7(prettier@3.4.2))': dependencies: @@ -13254,18 +13247,18 @@ snapshots: '@storybook/node-logger@8.1.6': {} - '@storybook/preset-react-webpack@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/preset-react-webpack@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/core-webpack': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.7.5)(esbuild@0.24.2)) '@types/node': 22.10.2 '@types/semver': 7.5.8 find-up: 5.0.0 magic-string: 0.30.17 - react: 18.3.1 + react: 19.0.0 react-docgen: 7.1.0 - react-dom: 18.3.1(react@18.3.1) + react-dom: 19.0.0(react@19.0.0) resolve: 1.22.10 semver: 7.6.3 storybook: 8.4.7(prettier@3.4.2) @@ -13299,20 +13292,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))': + '@storybook/react-dom-shim@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) storybook: 8.4.7(prettier@3.4.2) - '@storybook/react-webpack5@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/react-webpack5@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/builder-webpack5': 8.4.7(@swc/core@1.7.5)(esbuild@0.24.2)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) - '@storybook/preset-react-webpack': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) - '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + '@storybook/preset-react-webpack': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(@swc/core@1.7.5)(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) + '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@types/node': 22.10.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) storybook: 8.4.7(prettier@3.4.2) optionalDependencies: typescript: 5.7.2 @@ -13325,16 +13318,16 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': + '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)': dependencies: '@storybook/components': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/global': 5.0.0 '@storybook/manager-api': 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@storybook/preview-api': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.2)) + '@storybook/react-dom-shim': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.4.2)) '@storybook/theming': 8.4.7(storybook@8.4.7(prettier@3.4.2)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) storybook: 8.4.7(prettier@3.4.2) optionalDependencies: '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.2)) @@ -13445,15 +13438,15 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@testing-library/dom': 10.4.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.2 + '@types/react-dom': 19.0.2(@types/react@19.0.2) '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: @@ -13582,25 +13575,22 @@ snapshots: '@types/parse-json@4.0.2': {} - '@types/prop-types@15.7.13': {} - '@types/rbush@4.0.0': {} - '@types/react-dom@18.3.1': + '@types/react-dom@19.0.2(@types/react@19.0.2)': dependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.2 '@types/react-grid-layout@1.3.5': dependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.2 - '@types/react-transition-group@4.4.12(@types/react@18.3.12)': + '@types/react-transition-group@4.4.12(@types/react@19.0.2)': dependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.2 - '@types/react@18.3.12': + '@types/react@19.0.2': dependencies: - '@types/prop-types': 15.7.13 csstype: 3.1.3 '@types/resolve@1.20.6': {} @@ -13765,10 +13755,10 @@ snapshots: '@univerjs/icons-svg@0.2.12': {} - '@univerjs/icons@0.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@univerjs/icons@0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@univerjs/protocol@0.1.40(@grpc/grpc-js@1.10.9)(rxjs@7.8.1)': dependencies: @@ -14083,13 +14073,13 @@ snapshots: '@xtuc/long@4.2.2': {} - '@xyflow/react@12.3.5(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@xyflow/react@12.3.5(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@xyflow/system': 0.0.46 classcat: 5.0.5 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - zustand: 4.5.4(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + zustand: 4.5.4(@types/react@19.0.2)(react@19.0.0) transitivePeerDependencies: - '@types/react' - immer @@ -18706,156 +18696,156 @@ snapshots: dependencies: quickselect: 3.0.0 - rc-dialog@9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-dialog@9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.4 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-dropdown@4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-dropdown@4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.24.7 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-input-number@9.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-input-number@9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 '@rc-component/mini-decimal': 1.1.0 classnames: 2.5.1 - rc-input: 1.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-input: 1.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-input@1.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-input@1.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.0 classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-menu@9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-menu@9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-motion@2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-motion@2.9.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.4 classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-motion@2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-motion@2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-notification@5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-notification@5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.4 classnames: 2.5.1 - rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-overflow@1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-overflow@1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-picker@4.8.1(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-picker@4.8.1(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: dayjs: 1.11.13 - rc-resize-observer@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-resize-observer@1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.24.7 classnames: 2.5.1 - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) resize-observer-polyfill: 1.5.1 - rc-segmented@2.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-segmented@2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.4 classnames: 2.5.1 - rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-select@14.16.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-select@14.16.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-virtual-list: 3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-textarea@1.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-textarea@1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.25.4 classnames: 2.5.1 - rc-input: 1.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-input: 1.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-util@5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-util@5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.24.7 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) react-is: 18.3.1 - rc-virtual-list@3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-virtual-list@3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) rc@1.2.8: dependencies: @@ -18872,45 +18862,45 @@ snapshots: transitivePeerDependencies: - dnd-core - react-confetti@6.2.2(react@18.3.1): + react-confetti@6.2.2(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 tween-functions: 1.2.0 react-dnd-html5-backend@16.0.1: dependencies: dnd-core: 16.0.1 - react-dnd-multi-backend@8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-dnd-multi-backend@8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: dnd-core: 16.0.1 dnd-multi-backend: 8.1.2(dnd-core@16.0.1) - react: 18.3.1 - react-dnd: 16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1) - react-dnd-preview: 8.1.2(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dnd: 16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0) + react-dnd-preview: 8.1.2(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0))(react@19.0.0) + react-dom: 19.0.0(react@19.0.0) - react-dnd-preview@8.1.2(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + react-dnd-preview@8.1.2(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-dnd: 16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dnd: 16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0) react-dnd-touch-backend@16.0.1: dependencies: '@react-dnd/invariant': 4.0.2 dnd-core: 16.0.1 - react-dnd@16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1): + react-dnd@16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 dnd-core: 16.0.1 fast-deep-equal: 3.1.3 hoist-non-react-statics: 3.3.2 - react: 18.3.1 + react: 19.0.0 optionalDependencies: '@types/node': 22.10.5 - '@types/react': 18.3.12 + '@types/react': 19.0.2 react-docgen-typescript@2.2.2(typescript@5.7.2): dependencies: @@ -18931,39 +18921,38 @@ snapshots: transitivePeerDependencies: - supports-color - react-dom@18.3.1(react@18.3.1): + react-dom@19.0.0(react@19.0.0): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 19.0.0 + scheduler: 0.25.0 - react-draggable@4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-draggable@4.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: clsx: 1.2.1 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - react-grid-layout@1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-grid-layout@1.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: clsx: 2.1.1 fast-equals: 4.0.3 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-draggable: 4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-resizable: 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-draggable: 4.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-resizable: 3.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) resize-observer-polyfill: 1.5.1 - react-grid-layout@1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-grid-layout@1.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: clsx: 2.1.1 fast-equals: 4.0.3 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-draggable: 4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-resizable: 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-draggable: 4.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-resizable: 3.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) resize-observer-polyfill: 1.5.1 react-is@16.13.1: {} @@ -18972,17 +18961,17 @@ snapshots: react-is@18.3.1: {} - react-mosaic-component@6.1.1(@types/node@22.10.5)(@types/react@18.3.12)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-mosaic-component@6.1.1(@types/node@22.10.5)(@types/react@19.0.2)(dnd-core@16.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: classnames: 2.5.1 immutability-helper: 3.1.1 lodash: 4.17.21 prop-types: 15.8.1 rdndmb-html5-to-touch: 8.1.2(dnd-core@16.0.1) - react: 18.3.1 - react-dnd: 16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dnd: 16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0) react-dnd-html5-backend: 16.0.1 - react-dnd-multi-backend: 8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@18.3.12)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd-multi-backend: 8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/node@22.10.5)(@types/react@19.0.2)(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-dnd-touch-backend: 16.0.1 uuid: 9.0.1 transitivePeerDependencies: @@ -18994,26 +18983,24 @@ snapshots: react-refresh@0.14.2: {} - react-resizable@3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-resizable@3.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: prop-types: 15.8.1 - react: 18.3.1 - react-draggable: 4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-draggable: 4.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - react-dom - react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-transition-group@4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.0.0: {} read-cache@1.0.0: dependencies: @@ -19361,9 +19348,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 + scheduler@0.25.0: {} schema-utils@3.3.0: dependencies: @@ -20173,9 +20158,9 @@ snapshots: punycode: 1.4.1 qs: 6.13.1 - use-sync-external-store@1.2.0(react@18.3.1): + use-sync-external-store@1.2.0(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 util-deprecate@1.0.2: {} @@ -20682,11 +20667,11 @@ snapshots: yoctocolors-cjs@2.1.2: {} - zustand@4.5.4(@types/react@18.3.12)(react@18.3.1): + zustand@4.5.4(@types/react@19.0.2)(react@19.0.0): dependencies: - use-sync-external-store: 1.2.0(react@18.3.1) + use-sync-external-store: 1.2.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - react: 18.3.1 + '@types/react': 19.0.2 + react: 19.0.0 zwitch@2.0.4: {} From 4f1e7b5dad125be2256cf95271e6f02df0e3e9ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Sat, 21 Dec 2024 21:01:58 +0800 Subject: [PATCH 02/14] chore: update React peer dependency to support version 19 --- common/shared/vite/data.ts | 4 +- .../action-recorder/package.json | 2 +- packages-experimental/debugger/package.json | 2 +- .../uni-formula-ui/package.json | 2 +- .../uni-sheets-ui/package.json | 2 +- .../uni-slides-ui/package.json | 2 +- packages-experimental/uniui/package.json | 4 +- packages/core/package.json | 2 +- packages/design/package.json | 20 +-- .../design/src/components/slider/Slider.tsx | 8 +- packages/docs-drawing-ui/package.json | 2 +- packages/docs-hyper-link-ui/package.json | 2 +- packages/docs-mention-ui/package.json | 2 +- packages/docs-thread-comment-ui/package.json | 2 +- packages/docs-ui/package.json | 2 +- packages/drawing-ui/package.json | 2 +- packages/find-replace/package.json | 2 +- .../package.json | 4 +- .../sheets-crosshair-highlight/package.json | 2 +- .../sheets-data-validation-ui/package.json | 2 +- packages/sheets-drawing-ui/package.json | 2 +- packages/sheets-filter-ui/package.json | 2 +- packages/sheets-formula-ui/package.json | 2 +- packages/sheets-hyper-link-ui/package.json | 2 +- packages/sheets-numfmt-ui/package.json | 2 +- packages/sheets-sort-ui/package.json | 2 +- .../sheets-thread-comment-ui/package.json | 2 +- packages/sheets-ui/package.json | 2 +- packages/sheets-zen-editor/package.json | 2 +- packages/slides-ui/package.json | 2 +- packages/thread-comment-ui/package.json | 2 +- packages/ui/package.json | 4 +- packages/uniscript/package.json | 2 +- pnpm-lock.yaml | 131 ++++++++++++------ 34 files changed, 145 insertions(+), 84 deletions(-) diff --git a/common/shared/vite/data.ts b/common/shared/vite/data.ts index c6fd7768053..601b7af55a5 100644 --- a/common/shared/vite/data.ts +++ b/common/shared/vite/data.ts @@ -18,12 +18,12 @@ export const peerDepsMap = { react: { global: 'React', name: 'react', - version: '^16.9.0 || ^17.0.0 || ^18.0.0', + version: '>=16.9.0 || >=17 || >=18 || >=19', }, 'react-dom': { global: 'ReactDOM', name: 'react-dom', - version: '^16.9.0 || ^17.0.0 || ^18.0.0', + version: '>=16.9.0 || >=17 || >=18 || >=19', }, rxjs: { global: 'rxjs', diff --git a/packages-experimental/action-recorder/package.json b/packages-experimental/action-recorder/package.json index b2410400a3d..dd24116880e 100644 --- a/packages-experimental/action-recorder/package.json +++ b/packages-experimental/action-recorder/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages-experimental/debugger/package.json b/packages-experimental/debugger/package.json index d73ad81d91e..004f4727a43 100644 --- a/packages-experimental/debugger/package.json +++ b/packages-experimental/debugger/package.json @@ -53,7 +53,7 @@ "build": "univer-cli build --skipUMD" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages-experimental/uni-formula-ui/package.json b/packages-experimental/uni-formula-ui/package.json index 9e5eaecc30f..6bc4fad152d 100644 --- a/packages-experimental/uni-formula-ui/package.json +++ b/packages-experimental/uni-formula-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages-experimental/uni-sheets-ui/package.json b/packages-experimental/uni-sheets-ui/package.json index ea01ace8ecb..ebe63280fc8 100644 --- a/packages-experimental/uni-sheets-ui/package.json +++ b/packages-experimental/uni-sheets-ui/package.json @@ -56,7 +56,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages-experimental/uni-slides-ui/package.json b/packages-experimental/uni-slides-ui/package.json index 8e2dd55d389..fa64895b252 100644 --- a/packages-experimental/uni-slides-ui/package.json +++ b/packages-experimental/uni-slides-ui/package.json @@ -56,7 +56,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0" + "react": ">=16.9.0 || >=17 || >=18 || >=19" }, "dependencies": { "@univerjs/core": "workspace:*", diff --git a/packages-experimental/uniui/package.json b/packages-experimental/uniui/package.json index ec51dd8c760..f1994b15d41 100644 --- a/packages-experimental/uniui/package.json +++ b/packages-experimental/uniui/package.json @@ -56,8 +56,8 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", + "react-dom": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index c7ac6f8a9af..a54d176369e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -58,7 +58,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/design/package.json b/packages/design/package.json index 7722d569c67..8b75fa3d5a9 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -64,26 +64,27 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0" + "react": ">=16.9.0 || >=17 || >=18 || >=19", + "react-dom": ">=16.9.0 || >=17 || >=18 || >=19" }, "dependencies": { "@rc-component/color-picker": "^2.0.1", - "@rc-component/trigger": "^2.2.5", + "@rc-component/trigger": "^2.2.6", + "@types/react-mentions": "^4.4.0", "@univerjs/icons": "^0.2.12", "clsx": "^2.1.1", "dayjs": "^1.11.13", "rc-dialog": "^9.6.0", - "rc-dropdown": "^4.2.0", - "rc-input": "^1.6.3", + "rc-dropdown": "^4.2.1", + "rc-input": "^1.7.1", "rc-input-number": "^9.3.0", "rc-menu": "^9.16.0", - "rc-picker": "^4.8.1", - "rc-segmented": "^2.5.0", - "rc-select": "^14.16.3", + "rc-picker": "^4.9.0", + "rc-segmented": "^2.7.0", + "rc-select": "^14.16.4", "rc-textarea": "^1.8.2", "rc-util": "^5.43.0", - "rc-virtual-list": "^3.15.0", + "rc-virtual-list": "^3.16.1", "react-draggable": "^4.4.6", "react-grid-layout": "^1.5.0", "react-transition-group": "^4.4.5", @@ -92,6 +93,7 @@ "devDependencies": { "@testing-library/react": "^16.1.0", "@types/react-grid-layout": "^1.3.5", + "@types/react-mentions": "^4.4.1", "@types/react-transition-group": "^4.4.11", "@univerjs-infra/shared": "workspace:*", "@univerjs/core": "workspace:*", diff --git a/packages/design/src/components/slider/Slider.tsx b/packages/design/src/components/slider/Slider.tsx index e059ae38122..4d3a6b81e3f 100644 --- a/packages/design/src/components/slider/Slider.tsx +++ b/packages/design/src/components/slider/Slider.tsx @@ -212,7 +212,13 @@ export function Slider(props: ISliderProps) { )} > - + {value} % diff --git a/packages/docs-drawing-ui/package.json b/packages/docs-drawing-ui/package.json index 1a7a922393f..d059af57f6b 100644 --- a/packages/docs-drawing-ui/package.json +++ b/packages/docs-drawing-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/docs-hyper-link-ui/package.json b/packages/docs-hyper-link-ui/package.json index 847c74e77eb..f340de8cdd5 100644 --- a/packages/docs-hyper-link-ui/package.json +++ b/packages/docs-hyper-link-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/docs-mention-ui/package.json b/packages/docs-mention-ui/package.json index 0c85725a6e6..95d14c15dac 100644 --- a/packages/docs-mention-ui/package.json +++ b/packages/docs-mention-ui/package.json @@ -58,7 +58,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/docs-thread-comment-ui/package.json b/packages/docs-thread-comment-ui/package.json index c2551323d68..feb2ca05dd2 100644 --- a/packages/docs-thread-comment-ui/package.json +++ b/packages/docs-thread-comment-ui/package.json @@ -56,7 +56,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/docs-ui/package.json b/packages/docs-ui/package.json index b38a125b856..8d44b7b4853 100644 --- a/packages/docs-ui/package.json +++ b/packages/docs-ui/package.json @@ -70,7 +70,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/drawing-ui/package.json b/packages/drawing-ui/package.json index 4efd475d5c7..8cd7dbf5944 100644 --- a/packages/drawing-ui/package.json +++ b/packages/drawing-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/find-replace/package.json b/packages/find-replace/package.json index b43ebeb9594..6caa4cc5c7e 100644 --- a/packages/find-replace/package.json +++ b/packages/find-replace/package.json @@ -64,7 +64,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-conditional-formatting-ui/package.json b/packages/sheets-conditional-formatting-ui/package.json index 82605138071..66f1db82d68 100644 --- a/packages/sheets-conditional-formatting-ui/package.json +++ b/packages/sheets-conditional-formatting-ui/package.json @@ -64,8 +64,8 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", + "react-dom": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-crosshair-highlight/package.json b/packages/sheets-crosshair-highlight/package.json index 57044a123b4..4a32ebb7a85 100644 --- a/packages/sheets-crosshair-highlight/package.json +++ b/packages/sheets-crosshair-highlight/package.json @@ -68,7 +68,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-data-validation-ui/package.json b/packages/sheets-data-validation-ui/package.json index 403067b2e1e..5cd241189d1 100644 --- a/packages/sheets-data-validation-ui/package.json +++ b/packages/sheets-data-validation-ui/package.json @@ -65,7 +65,7 @@ "lint:types": "tsc --noEmit" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-drawing-ui/package.json b/packages/sheets-drawing-ui/package.json index 1b204ce9b9d..6b372688921 100644 --- a/packages/sheets-drawing-ui/package.json +++ b/packages/sheets-drawing-ui/package.json @@ -68,7 +68,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-filter-ui/package.json b/packages/sheets-filter-ui/package.json index 6f89afe8ec0..b63ad892b3e 100644 --- a/packages/sheets-filter-ui/package.json +++ b/packages/sheets-filter-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-formula-ui/package.json b/packages/sheets-formula-ui/package.json index cd74ed2a9dc..0c58992225c 100644 --- a/packages/sheets-formula-ui/package.json +++ b/packages/sheets-formula-ui/package.json @@ -67,7 +67,7 @@ "sync:cnpm": "cnpm sync" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-hyper-link-ui/package.json b/packages/sheets-hyper-link-ui/package.json index cb9c0e4c6a1..853488fc0ed 100644 --- a/packages/sheets-hyper-link-ui/package.json +++ b/packages/sheets-hyper-link-ui/package.json @@ -70,7 +70,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-numfmt-ui/package.json b/packages/sheets-numfmt-ui/package.json index 6ce2199de1b..c56c9316e05 100644 --- a/packages/sheets-numfmt-ui/package.json +++ b/packages/sheets-numfmt-ui/package.json @@ -64,7 +64,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-sort-ui/package.json b/packages/sheets-sort-ui/package.json index 6bdad464d1b..4140500fd49 100644 --- a/packages/sheets-sort-ui/package.json +++ b/packages/sheets-sort-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-thread-comment-ui/package.json b/packages/sheets-thread-comment-ui/package.json index 83fbf9d4b65..20d326d0018 100644 --- a/packages/sheets-thread-comment-ui/package.json +++ b/packages/sheets-thread-comment-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-ui/package.json b/packages/sheets-ui/package.json index 7d242a01b40..8ce0a151c67 100644 --- a/packages/sheets-ui/package.json +++ b/packages/sheets-ui/package.json @@ -70,7 +70,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/sheets-zen-editor/package.json b/packages/sheets-zen-editor/package.json index fa09b7e57cc..d62b88e105a 100644 --- a/packages/sheets-zen-editor/package.json +++ b/packages/sheets-zen-editor/package.json @@ -70,7 +70,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/slides-ui/package.json b/packages/slides-ui/package.json index 2b3137b213c..bf8ae7809b2 100644 --- a/packages/slides-ui/package.json +++ b/packages/slides-ui/package.json @@ -64,7 +64,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/thread-comment-ui/package.json b/packages/thread-comment-ui/package.json index 48513ec8705..917634aa445 100644 --- a/packages/thread-comment-ui/package.json +++ b/packages/thread-comment-ui/package.json @@ -62,7 +62,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/ui/package.json b/packages/ui/package.json index c9553c2f64a..4001b6b5f4b 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -70,8 +70,8 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", + "react-dom": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/packages/uniscript/package.json b/packages/uniscript/package.json index 563d231c423..7b0411d0683 100644 --- a/packages/uniscript/package.json +++ b/packages/uniscript/package.json @@ -64,7 +64,7 @@ "build": "univer-cli build" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": ">=16.9.0 || >=17 || >=18 || >=19", "rxjs": ">=7.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5f283ad489..e277c9bbb2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1190,8 +1190,11 @@ importers: specifier: ^2.0.1 version: 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rc-component/trigger': - specifier: ^2.2.5 - version: 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^2.2.6 + version: 2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@types/react-mentions': + specifier: ^4.4.0 + version: 4.4.1 '@univerjs/icons': specifier: ^0.2.12 version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -1205,11 +1208,11 @@ importers: specifier: ^9.6.0 version: 9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-dropdown: - specifier: ^4.2.0 - version: 4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^4.2.1 + version: 4.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-input: - specifier: ^1.6.3 - version: 1.6.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^1.7.1 + version: 1.7.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-input-number: specifier: ^9.3.0 version: 9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -1217,14 +1220,14 @@ importers: specifier: ^9.16.0 version: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-picker: - specifier: ^4.8.1 - version: 4.8.1(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^4.9.0 + version: 4.9.0(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-segmented: - specifier: ^2.5.0 - version: 2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^2.7.0 + version: 2.7.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-select: - specifier: ^14.16.3 - version: 14.16.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^14.16.4 + version: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-textarea: specifier: ^1.8.2 version: 1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -1232,8 +1235,8 @@ importers: specifier: ^5.43.0 version: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-virtual-list: - specifier: ^3.15.0 - version: 3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^3.16.1 + version: 3.16.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-draggable: specifier: ^4.4.6 version: 4.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -4888,8 +4891,8 @@ packages: react: 19.0.0 react-dom: 19.0.0 - '@rc-component/trigger@2.2.5': - resolution: {integrity: sha512-F1EJ4KjFpGAHAjuKvOyZB/6IZDkVx0bHl0M4fQM5wXcmm7lgTgVSSnR3bXwdmS6jOJGHOqfDxIJW3WUvwMIXhQ==} + '@rc-component/trigger@2.2.6': + resolution: {integrity: sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q==} engines: {node: '>=8.x'} peerDependencies: react: 19.0.0 @@ -5591,6 +5594,9 @@ packages: '@types/react-grid-layout@1.3.5': resolution: {integrity: sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ==} + '@types/react-mentions@4.4.1': + resolution: {integrity: sha512-65QdcZYkGe2I4GnOLY2OhlXCGz/Csd8NhytwE5r59CoFeYafMltAE/WqFB/Y6SoPU8LvF7EyUrq6Rxrf0Kzxkg==} + '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: @@ -9874,8 +9880,8 @@ packages: react: 19.0.0 react-dom: 19.0.0 - rc-dropdown@4.2.0: - resolution: {integrity: sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==} + rc-dropdown@4.2.1: + resolution: {integrity: sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==} peerDependencies: react: 19.0.0 react-dom: 19.0.0 @@ -9892,6 +9898,12 @@ packages: react: 19.0.0 react-dom: 19.0.0 + rc-input@1.7.1: + resolution: {integrity: sha512-by1VW/m7z2OH/ST3P5P8zi4K/RWUh7jJuNaPYGdGzXwJ3MF1rKWEuP0jeKW1PaWqqLxNVSvQZ8sIRkCCS8uWSg==} + peerDependencies: + react: 19.0.0 + react-dom: 19.0.0 + rc-menu@9.16.0: resolution: {integrity: sha512-vAL0yqPkmXWk3+YKRkmIR8TYj3RVdEt3ptG2jCJXWNAvQbT0VJJdRyHZ7kG/l1JsZlB+VJq/VcYOo69VR4oD+w==} peerDependencies: @@ -9923,8 +9935,8 @@ packages: react: 19.0.0 react-dom: 19.0.0 - rc-picker@4.8.1: - resolution: {integrity: sha512-lj9hXXMSkbjFUIhfQh8XH698ybxnoBOfq7pdM1FvfSyDwdFhdQa7dvsIYwo6Uz7Zp1wVkfw5rOJO3MpdWzoHsg==} + rc-picker@4.9.0: + resolution: {integrity: sha512-37Cx1tCsKuCMCLRAJZTjLJNVmX14QcapLlNQFUhcBjpPbzT3a62Q+p9ct7Oa9oKDn6nvfBh4I5CC3q92pOPq3w==} engines: {node: '>=8.x'} peerDependencies: date-fns: '>= 2.x' @@ -9949,14 +9961,14 @@ packages: react: 19.0.0 react-dom: 19.0.0 - rc-segmented@2.5.0: - resolution: {integrity: sha512-B28Fe3J9iUFOhFJET3RoXAPFJ2u47QvLSYcZWC4tFYNGPEjug5LAxEasZlA/PpAxhdOPqGWsGbSj7ftneukJnw==} + rc-segmented@2.7.0: + resolution: {integrity: sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==} peerDependencies: react: 19.0.0 react-dom: 19.0.0 - rc-select@14.16.3: - resolution: {integrity: sha512-51+j6s3fJJJXB7E+B6W1hM4Tjzv1B/Decooz9ilgegDBt3ZAth1b/xMwYCTrT5BbG2e53XACQsyDib2+3Ro1fg==} + rc-select@14.16.4: + resolution: {integrity: sha512-jP6qf7+vjnxGvPpfPWbGYfFlSl3h8L2XcD4O7g2GYXmEeBC0mw+nPD7i++OOE8v3YGqP8xtYjRKAWCMLfjgxlw==} engines: {node: '>=8.x'} peerDependencies: react: 19.0.0 @@ -9974,6 +9986,12 @@ packages: react: 19.0.0 react-dom: 19.0.0 + rc-util@5.44.2: + resolution: {integrity: sha512-uGSk3hpPBLa3/0QAcKhCjgl4SFnhQCJDLvvpoLdbR6KgDuXrujG+dQaUeUvBJr2ZWak1O/9n+cYbJiWmmk95EQ==} + peerDependencies: + react: 19.0.0 + react-dom: 19.0.0 + rc-virtual-list@3.15.0: resolution: {integrity: sha512-dF2YQztqrU3ijAeWOqscTshCEr7vpimzSqAVjO1AyAmaqcHulaXpnGR0ptK5PXfxTUy48VkJOiglMIxlkYGs0w==} engines: {node: '>=8.x'} @@ -9981,6 +9999,13 @@ packages: react: 19.0.0 react-dom: 19.0.0 + rc-virtual-list@3.16.1: + resolution: {integrity: sha512-algM5UsB7vrlPNr9lsZEH8s9KHkP8XbT/Y0qylyPkiM8mIOlSJLjBNADcmbYPEQCm4zW82mZRJuVHNzqqN0EAQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: 19.0.0 + react-dom: 19.0.0 + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -12835,14 +12860,14 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@rc-component/trigger@2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@rc-component/trigger@2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -13585,6 +13610,10 @@ snapshots: dependencies: '@types/react': 19.0.2 + '@types/react-mentions@4.4.1': + dependencies: + '@types/react': 19.0.2 + '@types/react-transition-group@4.4.12(@types/react@19.0.2)': dependencies: '@types/react': 19.0.2 @@ -18706,12 +18735,12 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - rc-dropdown@4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + rc-dropdown@4.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@babel/runtime': 7.24.7 - '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -18733,10 +18762,18 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) + rc-input@1.7.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + rc-menu@9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -18778,10 +18815,10 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - rc-picker@4.8.1(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + rc-picker@4.9.0(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -18800,24 +18837,24 @@ snapshots: react-dom: 19.0.0(react@19.0.0) resize-observer-polyfill: 1.5.1 - rc-segmented@2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + rc-segmented@2.7.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-motion: 2.9.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - rc-select@14.16.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + rc-select@14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-util: 5.43.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - rc-virtual-list: 3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -18838,6 +18875,13 @@ snapshots: react-dom: 19.0.0(react@19.0.0) react-is: 18.3.1 + rc-util@5.44.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-is: 18.3.1 + rc-virtual-list@3.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 @@ -18847,6 +18891,15 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) + rc-virtual-list@3.16.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + rc@1.2.8: dependencies: deep-extend: 0.6.0 From 9ce9261e872270ccaa93c4a0d0ba6947f715bdbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 24 Dec 2024 19:30:08 +0800 Subject: [PATCH 03/14] chore: fix ts issues --- examples/esbuild.config.ts | 34 +++++++++---------- .../src/views/UniSlideSideBar.tsx | 16 ++++----- .../design/src/components/dialog/Dialog.tsx | 8 ++--- packages/design/src/utils/render.ts | 14 ++++---- .../components/panel/rule-edit/iconSet.tsx | 4 ++- .../src/components/panel/rule-edit/index.tsx | 2 +- .../src/views/components/item/index.tsx | 2 +- packages/sheets-drawing/package.json | 3 +- .../hooks/useSheetSelectionChange.ts | 2 +- .../search-function/SearchFunction.tsx | 2 +- .../hooks/useSheetSelectionChange.ts | 2 +- .../sheets-thread-comment-panel/index.tsx | 3 +- .../views/mobile/sheet-bar/MobileSheetBar.tsx | 14 ++++---- .../src/components/slide-bar/SlideBar.tsx | 12 +++---- .../components/custom-label/CustomLabel.tsx | 8 ++--- .../src/views/components/popup/RectPopup.tsx | 2 +- pnpm-lock.yaml | 3 ++ 17 files changed, 67 insertions(+), 64 deletions(-) diff --git a/examples/esbuild.config.ts b/examples/esbuild.config.ts index 0991c72cd83..4a493f397f7 100644 --- a/examples/esbuild.config.ts +++ b/examples/esbuild.config.ts @@ -181,29 +181,29 @@ const entryPoints = [ './src/sheets/main.ts', './src/sheets/worker.ts', - // // sheets-multi - // './src/sheets-multi/main.tsx', + // sheets-multi + './src/sheets-multi/main.tsx', - // // sheets-uniscript - // './src/sheets-uniscript/main.ts', + // sheets-uniscript + './src/sheets-uniscript/main.ts', - // // docs - // './src/docs/main.ts', + // docs + './src/docs/main.ts', - // // docs-uniscript - // './src/docs-uniscript/main.ts', + // docs-uniscript + './src/docs-uniscript/main.ts', - // // slides - // './src/slides/main.ts', + // slides + './src/slides/main.ts', - // // uni - // './src/uni/main.ts', - // './src/uni/worker.ts', - // './src/uni/lazy.ts', + // uni + './src/uni/main.ts', + './src/uni/worker.ts', + './src/uni/lazy.ts', - // // mobile sheet - // './src/mobile-s/main.ts', - // './src/mobile-s/worker.ts', + // mobile sheet + './src/mobile-s/main.ts', + './src/mobile-s/worker.ts', ]; const config: SameShape = { diff --git a/packages-experimental/uni-slides-ui/src/views/UniSlideSideBar.tsx b/packages-experimental/uni-slides-ui/src/views/UniSlideSideBar.tsx index b4dcd4fc729..86b2e59616a 100644 --- a/packages-experimental/uni-slides-ui/src/views/UniSlideSideBar.tsx +++ b/packages-experimental/uni-slides-ui/src/views/UniSlideSideBar.tsx @@ -15,14 +15,13 @@ */ import type { SlideDataModel } from '@univerjs/core'; -import clsx from 'clsx'; import { ICommandService, IUniverInstanceService, LocaleService, UniverInstanceType, useDependency } from '@univerjs/core'; -import type { RefObject } from 'react'; -import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { useObservable } from '@univerjs/ui'; import { IRenderManagerService } from '@univerjs/engine-render'; -import { ActivateSlidePageOperation, AppendSlideOperation, SetSlidePageThumbOperation } from '@univerjs/slides-ui'; import { IncreaseSingle } from '@univerjs/icons'; +import { ActivateSlidePageOperation, AppendSlideOperation, SetSlidePageThumbOperation } from '@univerjs/slides-ui'; +import { useObservable } from '@univerjs/ui'; +import clsx from 'clsx'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import styles from './index.module.less'; @@ -52,13 +51,10 @@ export function UniSlideSideBar() { const slideList = pageOrder.map((id) => pages[id]); - const [divRefs, setDivRefs] = useState[]>([]); const [activatePageId, setActivatePageId] = useState(pageOrder[0]); const [barHeight, setBarHeight] = useState(0); - useEffect(() => { - setDivRefs(slideList.map((_) => React.createRef())); - }, [slideList.length]); + const divRefs = useMemo(() => slideList.map(() => React.createRef()), [slideList]); useEffect(() => { const subscriber = currentSlide?.activePage$.subscribe((page) => { @@ -119,7 +115,7 @@ export function UniSlideSideBar() { ))} - diff --git a/packages/design/src/components/dialog/Dialog.tsx b/packages/design/src/components/dialog/Dialog.tsx index 5f238f9e849..a2b2af164d6 100644 --- a/packages/design/src/components/dialog/Dialog.tsx +++ b/packages/design/src/components/dialog/Dialog.tsx @@ -14,13 +14,13 @@ * limitations under the License. */ +import type { ModalStyles } from 'rc-dialog/lib/IDialogPropTypes'; +import type { DraggableData, DraggableEvent, DraggableEventHandler } from 'react-draggable'; import { CloseSingle } from '@univerjs/icons'; import RcDialog from 'rc-dialog'; import React, { useContext, useRef, useState } from 'react'; -import type { DraggableData, DraggableEvent, DraggableEventHandler } from 'react-draggable'; -import Draggable from 'react-draggable'; -import type { ModalStyles } from 'rc-dialog/lib/IDialogPropTypes'; +import Draggable from 'react-draggable'; import { ConfigContext } from '../config-provider/ConfigProvider'; import styles from './index.module.less'; @@ -172,7 +172,7 @@ export function Dialog(props: IDialogProps) { const modalRender = (modal: React.ReactNode) => { const [bounds, setBounds] = useState({ left: 0, top: 0, bottom: 0, right: 0 }); - const draggleRef = useRef(null); + const draggleRef = useRef(null!); function handleStop(_event: MouseEvent, data: DraggableData) { if (preservePositionOnDestroy) { diff --git a/packages/design/src/utils/render.ts b/packages/design/src/utils/render.ts index 331a56b6358..20bc5f9cee7 100644 --- a/packages/design/src/utils/render.ts +++ b/packages/design/src/utils/render.ts @@ -24,15 +24,17 @@ import * as ReactDOM from 'react-dom'; type CreateRoot = (container: ContainerType) => Root; -type fullClone = typeof ReactDOM & { +type FullCloneType = typeof ReactDOM & { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?: { usingClientEntryPoint?: boolean; }; createRoot?: CreateRoot; + render?: (node: React.ReactElement, container: ContainerType) => void; + unmountComponentAtNode?: (container: ContainerType) => void; }; -let fullClone: fullClone; -async function getFullClone() { +let fullClone: FullCloneType; +async function getFullClone(): Promise { if (fullClone) return fullClone; try { @@ -90,8 +92,8 @@ async function modernRender(node: React.ReactElement, container: ContainerType) } async function legacyRender(node: React.ReactElement, container: ContainerType) { - const { render: reactRender } = await getFullClone(); - reactRender(node, container); + const { render } = await getFullClone(); + render?.(node, container); } export async function render(node: React.ReactElement, container: ContainerType) { @@ -116,7 +118,7 @@ async function modernUnmount(container: ContainerType) { async function legacyUnmount(container: ContainerType) { const { unmountComponentAtNode } = await getFullClone(); - unmountComponentAtNode(container); + unmountComponentAtNode?.(container); } export async function unmount(container: ContainerType) { diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx index 975c891ff9a..5ddeda7d8e4 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx @@ -554,7 +554,9 @@ export const IconSet = (props: IStyleEditorProps) => { placement="bottomLeft" overlay={( !iconGroupListEl && el && setIconGroupListEl(el)} + ref={(el) => { + !iconGroupListEl && el && setIconGroupListEl(el); + }} iconType={currentIconType} onClick={handleClickIconList} /> diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx index 70b4980ad2c..6c0c3021502 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx @@ -127,7 +127,7 @@ export const RuleEdit = (props: IRuleEditProps) => { } return defaultType; }); - const result = useRef>(); + const result = useRef>(undefined); const interceptorManager = useMemo(() => { const _interceptorManager = new InterceptorManager({ beforeSubmit, submit }); return _interceptorManager; diff --git a/packages/sheets-data-validation-ui/src/views/components/item/index.tsx b/packages/sheets-data-validation-ui/src/views/components/item/index.tsx index f2acd50b55a..b2948459b29 100644 --- a/packages/sheets-data-validation-ui/src/views/components/item/index.tsx +++ b/packages/sheets-data-validation-ui/src/views/components/item/index.tsx @@ -38,7 +38,7 @@ export const DataValidationItem = (props: IDataValidationDetailProps) => { const commandService = useDependency(ICommandService); const markSelectionService = useDependency(IMarkSelectionService); const validator = validatorRegistry.getValidatorItem(rule.type); - const ids = useRef<(string | null)[]>(); + const ids = useRef<(string | null)[]>(undefined); const [isHover, setIsHover] = useState(false); const handleDelete = (e: React.MouseEvent) => { commandService.executeCommand(RemoveSheetDataValidationCommand.id, { diff --git a/packages/sheets-drawing/package.json b/packages/sheets-drawing/package.json index c0c9c8aeff0..c39b7b6659e 100644 --- a/packages/sheets-drawing/package.json +++ b/packages/sheets-drawing/package.json @@ -57,7 +57,8 @@ }, "dependencies": { "@univerjs/core": "workspace:*", - "@univerjs/drawing": "workspace:*" + "@univerjs/drawing": "workspace:*", + "@univerjs/sheets": "workspace:*" }, "devDependencies": { "@univerjs-infra/shared": "workspace:*", diff --git a/packages/sheets-formula-ui/src/views/formula-editor/hooks/useSheetSelectionChange.ts b/packages/sheets-formula-ui/src/views/formula-editor/hooks/useSheetSelectionChange.ts index 4590060186b..86dd7217f1d 100644 --- a/packages/sheets-formula-ui/src/views/formula-editor/hooks/useSheetSelectionChange.ts +++ b/packages/sheets-formula-ui/src/views/formula-editor/hooks/useSheetSelectionChange.ts @@ -73,7 +73,7 @@ export const useSheetSelectionChange = ( const isSelectingRef = useRef(isSelecting); isSelectingRef.current = isSelecting; - const scalingOptionRef = useRef<{ result: string; offset: number }>(); + const scalingOptionRef = useRef<{ result: string; offset: number }>(undefined); useEffect(() => { if (refSelectionsRenderService && isNeed) { diff --git a/packages/sheets-formula-ui/src/views/formula-editor/search-function/SearchFunction.tsx b/packages/sheets-formula-ui/src/views/formula-editor/search-function/SearchFunction.tsx index e1afc9d84c5..3f7bd75c950 100644 --- a/packages/sheets-formula-ui/src/views/formula-editor/search-function/SearchFunction.tsx +++ b/packages/sheets-formula-ui/src/views/formula-editor/search-function/SearchFunction.tsx @@ -45,7 +45,7 @@ function SearchFunctionFactory(props: ISearchFunctionProps, ref: any) { const commandService = useDependency(ICommandService); const { searchList, searchText, handlerFormulaReplace, reset: resetFormulaSearch } = useFormulaSearch(isFocus, sequenceNodes, editor); const visible = useMemo(() => !!searchList.length, [searchList]); - const ulRef = useRef(); + const ulRef = useRef(undefined); const [active, activeSet] = useState(0); const isEnableMouseEnterOrOut = useRef(false); const [position$] = useEditorPostion(editorId, visible, [searchText, searchList]); diff --git a/packages/sheets-formula-ui/src/views/range-selector/hooks/useSheetSelectionChange.ts b/packages/sheets-formula-ui/src/views/range-selector/hooks/useSheetSelectionChange.ts index a9fc9a99cac..8534ee32310 100644 --- a/packages/sheets-formula-ui/src/views/range-selector/hooks/useSheetSelectionChange.ts +++ b/packages/sheets-formula-ui/src/views/range-selector/hooks/useSheetSelectionChange.ts @@ -59,7 +59,7 @@ export const useSheetSelectionChange = ( }, [sequenceNodes]); oldFilterReferenceNodes.current = filterReferenceNodes; - const scalingOptionRef = useRef<{ result: string; offset: number }>(); + const scalingOptionRef = useRef<{ result: string; offset: number }>(undefined); useEffect(() => { if (isNeed && refSelectionsRenderService) { diff --git a/packages/sheets-thread-comment-ui/src/views/sheets-thread-comment-panel/index.tsx b/packages/sheets-thread-comment-ui/src/views/sheets-thread-comment-panel/index.tsx index b3a9227cf79..7000b60d730 100644 --- a/packages/sheets-thread-comment-ui/src/views/sheets-thread-comment-panel/index.tsx +++ b/packages/sheets-thread-comment-ui/src/views/sheets-thread-comment-panel/index.tsx @@ -35,7 +35,7 @@ export const SheetsThreadCommentPanel = () => { const commandService = useDependency(ICommandService); const subUnitId$ = useMemo(() => workbook.activeSheet$.pipe(map((i) => i?.getSheetId())), [workbook.activeSheet$]); const subUnitId = useObservable(subUnitId$, workbook.getActiveSheet()?.getSheetId()); - const hoverShapeId = useRef(); + const hoverShapeId = useRef(null); const panelService = useDependency(ThreadCommentPanelService); const activeCommentId = useObservable(panelService.activeCommentId$); const panelVisible = useObservable(panelService.panelVisible$, panelService.panelVisible); @@ -93,6 +93,7 @@ export const SheetsThreadCommentPanel = () => { }); } } + return null; }, [markSelectionService, subUnitId, unitId]); const getSubUnitName = (id: string) => { diff --git a/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx b/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx index bf01e84fd68..ccae86cf3dc 100644 --- a/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx +++ b/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx @@ -14,11 +14,10 @@ * limitations under the License. */ -import React, { useCallback, useEffect, useState } from 'react'; -import clsx from 'clsx'; -import { ICommandService, useDependency } from '@univerjs/core'; import type { ICommandInfo, Workbook } from '@univerjs/core'; import type { ISetWorksheetActiveOperationParams } from '@univerjs/sheets'; +import type { IBaseSheetBarProps } from '../../sheet-bar/sheet-bar-tabs/SheetBarItem'; +import { ICommandService, useDependency } from '@univerjs/core'; import { InsertSheetMutation, RemoveSheetMutation, @@ -27,7 +26,8 @@ import { SetWorksheetNameMutation, SetWorksheetOrderMutation, } from '@univerjs/sheets'; -import type { IBaseSheetBarProps } from '../../sheet-bar/sheet-bar-tabs/SheetBarItem'; +import clsx from 'clsx'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; import { useActiveWorkbook } from '../../../components/hook'; import styles from './index.module.less'; @@ -45,7 +45,7 @@ function MobileSheetBarImpl(props: { workbook: Workbook }) { const { workbook } = props; const [sheetList, setSheetList] = useState([]); const [activeKey, setActiveKey] = useState(''); - const tabMapRef = React.useRef>(new Map()); + const tabMapRef = useRef>(new Map()); const commandService = useDependency(ICommandService); @@ -119,7 +119,9 @@ function MobileSheetBarImpl(props: { workbook: Workbook }) { )} key={sheet.sheetId} onClick={() => onTabClick(sheet.sheetId!)} - ref={(element) => tabMapRef.current.set(sheet.sheetId!, element)} + ref={(element) => { + tabMapRef.current.set(sheet.sheetId!, element); + }} > {sheet.label} diff --git a/packages/slides-ui/src/components/slide-bar/SlideBar.tsx b/packages/slides-ui/src/components/slide-bar/SlideBar.tsx index c8f5e53834d..5a4fb5564cd 100644 --- a/packages/slides-ui/src/components/slide-bar/SlideBar.tsx +++ b/packages/slides-ui/src/components/slide-bar/SlideBar.tsx @@ -15,15 +15,14 @@ */ import type { SlideDataModel } from '@univerjs/core'; -import clsx from 'clsx'; import { ICommandService, IUniverInstanceService, LocaleService, UniverInstanceType, useDependency } from '@univerjs/core'; import { Scrollbar } from '@univerjs/design'; -import type { RefObject } from 'react'; -import React, { useCallback, useEffect, useRef, useState } from 'react'; import { IRenderManagerService } from '@univerjs/engine-render'; +import clsx from 'clsx'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { ActivateSlidePageOperation } from '../../commands/operations/activate.operation'; -import { SetSlidePageThumbOperation } from '../../commands/operations/set-thumb.operation'; import { AppendSlideOperation } from '../../commands/operations/append-slide.operation'; +import { SetSlidePageThumbOperation } from '../../commands/operations/set-thumb.operation'; import styles from './index.module.less'; /** @@ -53,12 +52,9 @@ export function SlideSideBar() { const slideList = pageOrder.map((id) => pages[id]); - const [divRefs, setDivRefs] = useState[]>([]); const [activatePageId, setActivatePageId] = useState(currentSlide?.getActivePage()?.id ?? null); - useEffect(() => { - setDivRefs(slideList.map((_) => React.createRef())); - }, [slideList.length]); + const divRefs = useMemo(() => slideList.map(() => React.createRef()), [slideList]); useEffect(() => { const subscriber = currentSlide?.activePage$.subscribe((page) => { diff --git a/packages/ui/src/components/custom-label/CustomLabel.tsx b/packages/ui/src/components/custom-label/CustomLabel.tsx index c3f92fbc887..d94e3eab1df 100644 --- a/packages/ui/src/components/custom-label/CustomLabel.tsx +++ b/packages/ui/src/components/custom-label/CustomLabel.tsx @@ -14,13 +14,13 @@ * limitations under the License. */ +import type { Observable } from 'rxjs'; +import type { IMenuSelectorItem } from '../../services/menu/menu'; import { ColorKit, LocaleService, useDependency } from '@univerjs/core'; import React, { useEffect, useMemo, useState } from 'react'; -import { isObservable } from 'rxjs'; -import type { Observable } from 'rxjs'; +import { isObservable } from 'rxjs'; import { ComponentManager } from '../../common/component-manager'; -import type { IMenuSelectorItem } from '../../services/menu/menu'; export type ICustomLabelProps = { value?: string | number | undefined; @@ -36,7 +36,7 @@ export type ICustomLabelProps = { * The component to render toolbar item label and menu item label. * @param props */ -export function CustomLabel(props: ICustomLabelProps): JSX.Element { +export function CustomLabel(props: ICustomLabelProps) { const { title, icon, label, value, value$ } = props; const localeService = useDependency(LocaleService); const componentManager = useDependency(ComponentManager); diff --git a/packages/ui/src/views/components/popup/RectPopup.tsx b/packages/ui/src/views/components/popup/RectPopup.tsx index 5a19be7eb67..0eb86aae1c9 100644 --- a/packages/ui/src/views/components/popup/RectPopup.tsx +++ b/packages/ui/src/views/components/popup/RectPopup.tsx @@ -119,7 +119,7 @@ function RectPopup(props: IRectPopupProps) { left: -9999, }); const excludeRectsRef = excludeRects; - const anchorRectRef = useRef(); + const anchorRectRef = useRef(undefined); useEffect(() => { const anchorRectSub = anchorRect$.subscribe((anchorRect) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e277c9bbb2b..464c690b40a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2329,6 +2329,9 @@ importers: '@univerjs/drawing': specifier: workspace:* version: link:../drawing + '@univerjs/sheets': + specifier: workspace:* + version: link:../sheets devDependencies: '@univerjs-infra/shared': specifier: workspace:* From 6613149f780cb149dae0f3f97eb89ff5f1bc3704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 24 Dec 2024 19:56:29 +0800 Subject: [PATCH 04/14] fix(docs-ui): fix the issue of initial rendering failure --- packages/docs-ui/src/docs-ui-plugin.ts | 38 +++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/docs-ui/src/docs-ui-plugin.ts b/packages/docs-ui/src/docs-ui-plugin.ts index cebc5235674..558ba154f0f 100644 --- a/packages/docs-ui/src/docs-ui-plugin.ts +++ b/packages/docs-ui/src/docs-ui-plugin.ts @@ -17,7 +17,8 @@ import type { Dependency } from '@univerjs/core'; import type { IUniverDocsUIConfig } from './controllers/config.schema'; import { - DependentOn, ICommandService, + DependentOn, + ICommandService, IConfigService, ILogService, Inject, @@ -43,15 +44,44 @@ import { CloseHeaderFooterCommand } from './commands/commands/doc-header-footer. import { DocParagraphSettingCommand } from './commands/commands/doc-paragraph-setting.command'; import { DocSelectAllCommand } from './commands/commands/doc-select-all.command'; import { IMEInputCommand } from './commands/commands/ime-input.command'; -import { ResetInlineFormatTextBackgroundColorCommand, SetInlineFormatBoldCommand, SetInlineFormatCommand, SetInlineFormatFontFamilyCommand, SetInlineFormatFontSizeCommand, SetInlineFormatItalicCommand, SetInlineFormatStrikethroughCommand, SetInlineFormatSubscriptCommand, SetInlineFormatSuperscriptCommand, SetInlineFormatTextBackgroundColorCommand, SetInlineFormatTextColorCommand, SetInlineFormatUnderlineCommand } from './commands/commands/inline-format.command'; -import { BulletListCommand, ChangeListNestingLevelCommand, ChangeListTypeCommand, CheckListCommand, ListOperationCommand, OrderListCommand, QuickListCommand, ToggleCheckListCommand } from './commands/commands/list.command'; +import { + ResetInlineFormatTextBackgroundColorCommand, + SetInlineFormatBoldCommand, + SetInlineFormatCommand, + SetInlineFormatFontFamilyCommand, + SetInlineFormatFontSizeCommand, + SetInlineFormatItalicCommand, + SetInlineFormatStrikethroughCommand, + SetInlineFormatSubscriptCommand, + SetInlineFormatSuperscriptCommand, + SetInlineFormatTextBackgroundColorCommand, + SetInlineFormatTextColorCommand, + SetInlineFormatUnderlineCommand, +} from './commands/commands/inline-format.command'; +import { + BulletListCommand, + ChangeListNestingLevelCommand, + ChangeListTypeCommand, + CheckListCommand, + ListOperationCommand, + OrderListCommand, + QuickListCommand, + ToggleCheckListCommand, +} from './commands/commands/list.command'; import { AlignCenterCommand, AlignJustifyCommand, AlignLeftCommand, AlignOperationCommand, AlignRightCommand } from './commands/commands/paragraph-align.command'; import { CoverContentCommand, ReplaceContentCommand, ReplaceSnapshotCommand, ReplaceTextRunsCommand } from './commands/commands/replace-content.command'; import { SetDocZoomRatioCommand } from './commands/commands/set-doc-zoom-ratio.command'; import { SwitchDocModeCommand } from './commands/commands/switch-doc-mode.command'; import { CreateDocTableCommand } from './commands/commands/table/doc-table-create.command'; import { DocTableDeleteColumnsCommand, DocTableDeleteRowsCommand, DocTableDeleteTableCommand } from './commands/commands/table/doc-table-delete.command'; -import { DocTableInsertColumnCommand, DocTableInsertColumnLeftCommand, DocTableInsertColumnRightCommand, DocTableInsertRowAboveCommand, DocTableInsertRowBellowCommand, DocTableInsertRowCommand } from './commands/commands/table/doc-table-insert.command'; +import { + DocTableInsertColumnCommand, + DocTableInsertColumnLeftCommand, + DocTableInsertColumnRightCommand, + DocTableInsertRowAboveCommand, + DocTableInsertRowBellowCommand, + DocTableInsertRowCommand, +} from './commands/commands/table/doc-table-insert.command'; import { DocTableTabCommand } from './commands/commands/table/doc-table-tab.command'; import { MoveCursorOperation, MoveSelectionOperation } from './commands/operations/doc-cursor.operation'; import { DocParagraphSettingPanelOperation } from './commands/operations/doc-paragraph-setting-panel.operation'; From 7a681362934c5782e7d3fcd53fea10873db6386b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 24 Dec 2024 20:14:56 +0800 Subject: [PATCH 05/14] chore: update @testing-library/react to version 16.1.0 --- pnpm-lock.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 464c690b40a..8724bef6e1a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2336,9 +2336,6 @@ importers: '@univerjs-infra/shared': specifier: workspace:* version: link:../../common/shared - '@univerjs/sheets': - specifier: workspace:* - version: link:../sheets typescript: specifier: ^5.7.2 version: 5.7.2 From 0304b7ef071c0f6ad9c30aa2d9eae940c8fd122e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 24 Dec 2024 20:39:59 +0800 Subject: [PATCH 06/14] feat(slider): replace DropdownLegacy with Dropdown components and update styles --- .../design/src/components/slider/Slider.tsx | 62 ++++++++++++------- .../src/components/slider/index.module.less | 55 ---------------- 2 files changed, 39 insertions(+), 78 deletions(-) diff --git a/packages/design/src/components/slider/Slider.tsx b/packages/design/src/components/slider/Slider.tsx index 4d3a6b81e3f..50a917d5abd 100644 --- a/packages/design/src/components/slider/Slider.tsx +++ b/packages/design/src/components/slider/Slider.tsx @@ -20,7 +20,9 @@ import React, { useContext, useMemo, useRef } from 'react'; import { Button } from '../button/Button'; import { ConfigContext } from '../config-provider/ConfigProvider'; -import { DropdownLegacy } from '../dropdown-legacy/DropdownLegacy'; +import { DropdownOverlay } from '../dropdown/DropdownOverlay'; +import { DropdownProvider } from '../dropdown/DropdownProvider'; +import { DropdownTrigger } from '../dropdown/DropdownTrigger'; import { Tooltip } from '../tooltip/Tooltip'; import styles from './index.module.less'; @@ -185,21 +187,46 @@ export function Slider(props: ISliderProps) { - + + + + {value} + % + + + + - )} - > - - {value} - % - - + + ); } diff --git a/packages/design/src/components/slider/index.module.less b/packages/design/src/components/slider/index.module.less index 4d4af5873ff..f44029ad4b4 100644 --- a/packages/design/src/components/slider/index.module.less +++ b/packages/design/src/components/slider/index.module.less @@ -144,59 +144,4 @@ background-color: @slider-parts-hover-color; } } - - &-shortcuts { - transform: translateX(-(@slider-value-width / 2)); - - display: grid; - gap: var(--margin-xxs); - align-items: center; - - box-sizing: border-box; - width: 128px; - padding: var(--padding-sm); - - font-size: var(--font-size-xs); - - background-color: rgb(var(--color-white)); - border: 1px solid rgb(var(--border-color)); - border-radius: var(--border-radius-lg); - box-shadow: var(--box-shadow-lg); - } - - &-shortcut { - cursor: pointer; - - position: relative; - - box-sizing: border-box; - padding: var(--padding-xs) 0 var(--padding-xs) 36px; - - color: rgb(var(--text-color)); - - border-radius: var(--border-radius-base); - - transition: background 0.2s; - text-decoration: none; - - &:hover { - background-color: rgb(var(--bg-color-hover)); - color: inherit; - text-decoration: inherit; - } - } - - &-shortcut-icon { - position: absolute; - top: 0; - left: var(--padding-xs); - height: 100%; - color: rgb(var(--success-color)); - display: flex; - align-items: center; - } - - &-shortcut-active { - background-color: rgb(var(--bg-color-hover)); - } } From 620ecb60520bb55f463f7a9a67b951bef9c108e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Thu, 26 Dec 2024 19:17:17 +0800 Subject: [PATCH 07/14] feat: update React JSX transform and improve ReactDOM imports --- common/shared/tsconfigs/base.json | 2 +- common/shared/vite/data.ts | 10 +++ packages/design/src/utils/render.ts | 118 ++++------------------------ 3 files changed, 27 insertions(+), 103 deletions(-) diff --git a/common/shared/tsconfigs/base.json b/common/shared/tsconfigs/base.json index ddd4731d345..9aa6b32b165 100644 --- a/common/shared/tsconfigs/base.json +++ b/common/shared/tsconfigs/base.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "target": "ESNext", - "jsx": "react", + "jsx": "react-jsx", "lib": ["ESNext", "DOM", "DOM.Iterable", "WebWorker"], "useDefineForClassFields": true, diff --git a/common/shared/vite/data.ts b/common/shared/vite/data.ts index 601b7af55a5..579513755d1 100644 --- a/common/shared/vite/data.ts +++ b/common/shared/vite/data.ts @@ -20,11 +20,21 @@ export const peerDepsMap = { name: 'react', version: '>=16.9.0 || >=17 || >=18 || >=19', }, + 'react/jsx-runtime': { + global: 'React', + name: 'react', + version: 'react', + }, 'react-dom': { global: 'ReactDOM', name: 'react-dom', version: '>=16.9.0 || >=17 || >=18 || >=19', }, + 'react-dom/client': { + global: 'ReactDOM', + name: 'react-dom', + version: 'react-dom', + }, rxjs: { global: 'rxjs', name: 'rxjs', diff --git a/packages/design/src/utils/render.ts b/packages/design/src/utils/render.ts index 20bc5f9cee7..dcc8088b969 100644 --- a/packages/design/src/utils/render.ts +++ b/packages/design/src/utils/render.ts @@ -14,119 +14,33 @@ * limitations under the License. */ -/** - * Inspired by https://github.com/react-component/util - */ - import type * as React from 'react'; import type { Root } from 'react-dom/client'; -import * as ReactDOM from 'react-dom'; - -type CreateRoot = (container: ContainerType) => Root; +import { createRoot } from 'react-dom/client'; -type FullCloneType = typeof ReactDOM & { - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?: { - usingClientEntryPoint?: boolean; - }; - createRoot?: CreateRoot; - render?: (node: React.ReactElement, container: ContainerType) => void; - unmountComponentAtNode?: (container: ContainerType) => void; -}; - -let fullClone: FullCloneType; -async function getFullClone(): Promise { - if (fullClone) return fullClone; - - try { - const { default: client } = await import('react-dom/client'); - fullClone = { ...ReactDOM, ...client }; - } catch { - fullClone = { ...ReactDOM }; - } - - return fullClone; -} - -async function getCreateRoot() { - const fullClone = await getFullClone(); - - let createRoot: CreateRoot | undefined; - try { - const mainVersion = Number((fullClone.version || '').split('.')[0]); - if (mainVersion >= 18) { - createRoot = fullClone.createRoot; - } - } catch {} - - return createRoot; -} - -async function toggleWarning(skip: boolean) { - const { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } = await getFullClone(); - - if ( - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && - typeof __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED === 'object' - ) { - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = - skip; - } -} - -const MARK = '__rc_react_root__'; +// Map to track container and corresponding Root +const rootMap = new WeakMap(); // ========================== Render ========================== -type ContainerType = (Element | DocumentFragment) & { - [MARK]?: Root; -}; - -async function modernRender(node: React.ReactElement, container: ContainerType) { - toggleWarning(true); - const createRoot = await getCreateRoot(); - const root = container[MARK] || createRoot?.(container); - toggleWarning(false); - - root?.render(node); - - container[MARK] = root; -} +export function render(node: React.ReactElement, container: Element | DocumentFragment) { + // Get or create the root + let root = rootMap.get(container); -async function legacyRender(node: React.ReactElement, container: ContainerType) { - const { render } = await getFullClone(); - render?.(node, container); -} - -export async function render(node: React.ReactElement, container: ContainerType) { - const createRoot = await getCreateRoot(); - if (createRoot) { - modernRender(node, container); - return; + if (!root) { + root = createRoot(container); + rootMap.set(container, root); } - legacyRender(node, container); + // Render the React element + root.render(node); } // ========================= Unmount ========================== -async function modernUnmount(container: ContainerType) { - // Delay to unmount to avoid React 18 sync warning - return Promise.resolve().then(() => { - container[MARK]?.unmount(); - - delete container[MARK]; - }); -} +export function unmount(container: Element | DocumentFragment) { + const root = rootMap.get(container); -async function legacyUnmount(container: ContainerType) { - const { unmountComponentAtNode } = await getFullClone(); - unmountComponentAtNode?.(container); -} - -export async function unmount(container: ContainerType) { - const createRoot = await getCreateRoot(); - if (createRoot !== undefined) { - // Delay to unmount to avoid React 18 sync warning - return modernUnmount(container); + if (root) { + root.unmount(); + rootMap.delete(container); // Clean up the mapping } - - legacyUnmount(container); } From a764a2bb1ff6b6a13e449ecdd7af641848a3d098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Thu, 26 Dec 2024 20:27:42 +0800 Subject: [PATCH 08/14] chore: downgrade React version to 18.3.1 across multiple packages --- packages-experimental/action-recorder/package.json | 2 +- packages-experimental/uni-slides-ui/package.json | 2 +- packages-experimental/uniui/package.json | 4 ++-- packages/design/package.json | 4 ++-- packages/docs-drawing-ui/package.json | 2 +- packages/docs-hyper-link-ui/package.json | 2 +- packages/docs-mention-ui/package.json | 2 +- packages/docs-thread-comment-ui/package.json | 2 +- packages/docs-ui/package.json | 2 +- packages/drawing-ui/package.json | 2 +- packages/find-replace/package.json | 2 +- packages/sheets-conditional-formatting-ui/package.json | 2 +- packages/sheets-crosshair-highlight/package.json | 2 +- packages/sheets-data-validation-ui/package.json | 2 +- packages/sheets-drawing-ui/package.json | 2 +- packages/sheets-filter-ui/package.json | 2 +- packages/sheets-formula-ui/package.json | 2 +- packages/sheets-hyper-link-ui/package.json | 2 +- packages/sheets-numfmt-ui/package.json | 2 +- packages/sheets-sort-ui/package.json | 2 +- packages/sheets-thread-comment-ui/package.json | 2 +- packages/sheets-ui/package.json | 2 +- packages/sheets-zen-editor/package.json | 2 +- packages/slides-ui/package.json | 2 +- packages/thread-comment-ui/package.json | 2 +- packages/ui/package.json | 4 ++-- 26 files changed, 29 insertions(+), 29 deletions(-) diff --git a/packages-experimental/action-recorder/package.json b/packages-experimental/action-recorder/package.json index dd24116880e..4dbf979907a 100644 --- a/packages-experimental/action-recorder/package.json +++ b/packages-experimental/action-recorder/package.json @@ -78,7 +78,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uni-slides-ui/package.json b/packages-experimental/uni-slides-ui/package.json index fa64895b252..acf9941127c 100644 --- a/packages-experimental/uni-slides-ui/package.json +++ b/packages-experimental/uni-slides-ui/package.json @@ -71,7 +71,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uniui/package.json b/packages-experimental/uniui/package.json index f1994b15d41..1e9b18956af 100644 --- a/packages-experimental/uniui/package.json +++ b/packages-experimental/uniui/package.json @@ -77,8 +77,8 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", - "react-dom": "19.0.0", + "react": "18.3.1", + "react-dom": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/design/package.json b/packages/design/package.json index 8b75fa3d5a9..23a791bb65a 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -99,8 +99,8 @@ "@univerjs/core": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", - "react-dom": "19.0.0", + "react": "18.3.1", + "react-dom": "18.3.1", "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", "typescript": "^5.7.2", diff --git a/packages/docs-drawing-ui/package.json b/packages/docs-drawing-ui/package.json index d059af57f6b..11cce217737 100644 --- a/packages/docs-drawing-ui/package.json +++ b/packages/docs-drawing-ui/package.json @@ -82,7 +82,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-hyper-link-ui/package.json b/packages/docs-hyper-link-ui/package.json index f340de8cdd5..70bb4452c8e 100644 --- a/packages/docs-hyper-link-ui/package.json +++ b/packages/docs-hyper-link-ui/package.json @@ -79,7 +79,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-mention-ui/package.json b/packages/docs-mention-ui/package.json index 95d14c15dac..9d9d26e6f95 100644 --- a/packages/docs-mention-ui/package.json +++ b/packages/docs-mention-ui/package.json @@ -72,7 +72,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-thread-comment-ui/package.json b/packages/docs-thread-comment-ui/package.json index feb2ca05dd2..8960687f08d 100644 --- a/packages/docs-thread-comment-ui/package.json +++ b/packages/docs-thread-comment-ui/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/docs-ui/package.json b/packages/docs-ui/package.json index 8d44b7b4853..8de6e55ac2f 100644 --- a/packages/docs-ui/package.json +++ b/packages/docs-ui/package.json @@ -88,7 +88,7 @@ "@univerjs/docs-drawing": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/drawing-ui/package.json b/packages/drawing-ui/package.json index 8cd7dbf5944..c16b44ca222 100644 --- a/packages/drawing-ui/package.json +++ b/packages/drawing-ui/package.json @@ -78,7 +78,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/find-replace/package.json b/packages/find-replace/package.json index 6caa4cc5c7e..6913db10d91 100644 --- a/packages/find-replace/package.json +++ b/packages/find-replace/package.json @@ -78,7 +78,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-conditional-formatting-ui/package.json b/packages/sheets-conditional-formatting-ui/package.json index 66f1db82d68..ac9cdfc6da0 100644 --- a/packages/sheets-conditional-formatting-ui/package.json +++ b/packages/sheets-conditional-formatting-ui/package.json @@ -88,7 +88,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-crosshair-highlight/package.json b/packages/sheets-crosshair-highlight/package.json index 4a32ebb7a85..6fe7fd8d10f 100644 --- a/packages/sheets-crosshair-highlight/package.json +++ b/packages/sheets-crosshair-highlight/package.json @@ -84,7 +84,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-data-validation-ui/package.json b/packages/sheets-data-validation-ui/package.json index 5cd241189d1..4eeb6981c06 100644 --- a/packages/sheets-data-validation-ui/package.json +++ b/packages/sheets-data-validation-ui/package.json @@ -89,7 +89,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-drawing-ui/package.json b/packages/sheets-drawing-ui/package.json index 6b372688921..70c4a29b198 100644 --- a/packages/sheets-drawing-ui/package.json +++ b/packages/sheets-drawing-ui/package.json @@ -90,7 +90,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-filter-ui/package.json b/packages/sheets-filter-ui/package.json index b63ad892b3e..e4d08f00afe 100644 --- a/packages/sheets-filter-ui/package.json +++ b/packages/sheets-filter-ui/package.json @@ -82,7 +82,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-formula-ui/package.json b/packages/sheets-formula-ui/package.json index 0c58992225c..4b4cc93bcbf 100644 --- a/packages/sheets-formula-ui/package.json +++ b/packages/sheets-formula-ui/package.json @@ -88,7 +88,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-hyper-link-ui/package.json b/packages/sheets-hyper-link-ui/package.json index 853488fc0ed..14e28c84a5d 100644 --- a/packages/sheets-hyper-link-ui/package.json +++ b/packages/sheets-hyper-link-ui/package.json @@ -92,7 +92,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-numfmt-ui/package.json b/packages/sheets-numfmt-ui/package.json index c56c9316e05..b0a28c2fe74 100644 --- a/packages/sheets-numfmt-ui/package.json +++ b/packages/sheets-numfmt-ui/package.json @@ -83,7 +83,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-sort-ui/package.json b/packages/sheets-sort-ui/package.json index 4140500fd49..5645bb8822f 100644 --- a/packages/sheets-sort-ui/package.json +++ b/packages/sheets-sort-ui/package.json @@ -81,7 +81,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-thread-comment-ui/package.json b/packages/sheets-thread-comment-ui/package.json index 20d326d0018..4dd03ba7e95 100644 --- a/packages/sheets-thread-comment-ui/package.json +++ b/packages/sheets-thread-comment-ui/package.json @@ -81,7 +81,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-ui/package.json b/packages/sheets-ui/package.json index 8ce0a151c67..77dd374489d 100644 --- a/packages/sheets-ui/package.json +++ b/packages/sheets-ui/package.json @@ -92,7 +92,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/sheets-zen-editor/package.json b/packages/sheets-zen-editor/package.json index d62b88e105a..b206d974df2 100644 --- a/packages/sheets-zen-editor/package.json +++ b/packages/sheets-zen-editor/package.json @@ -88,7 +88,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/slides-ui/package.json b/packages/slides-ui/package.json index bf8ae7809b2..3a6aa7ea0d6 100644 --- a/packages/slides-ui/package.json +++ b/packages/slides-ui/package.json @@ -83,7 +83,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/thread-comment-ui/package.json b/packages/thread-comment-ui/package.json index 917634aa445..bd20ba05364 100644 --- a/packages/thread-comment-ui/package.json +++ b/packages/thread-comment-ui/package.json @@ -78,7 +78,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/ui/package.json b/packages/ui/package.json index 4001b6b5f4b..fed9d841ed7 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -92,8 +92,8 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", - "react": "19.0.0", - "react-dom": "19.0.0", + "react": "18.3.1", + "react-dom": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", From 7a23d3d2acbf63e8bc0eccabaa9210656d401082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Thu, 26 Dec 2024 20:42:41 +0800 Subject: [PATCH 09/14] feat(defined-name): replace Input with native input and add change handler --- .../src/views/defined-name/DefinedName.tsx | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/sheets-ui/src/views/defined-name/DefinedName.tsx b/packages/sheets-ui/src/views/defined-name/DefinedName.tsx index 5226e60bc41..08cba03007b 100644 --- a/packages/sheets-ui/src/views/defined-name/DefinedName.tsx +++ b/packages/sheets-ui/src/views/defined-name/DefinedName.tsx @@ -16,7 +16,7 @@ import { useDependency } from '@univerjs/core'; -import { DropdownOverlay, DropdownProvider, DropdownTrigger, Input } from '@univerjs/design'; +import { DropdownOverlay, DropdownProvider, DropdownTrigger } from '@univerjs/design'; import { IDefinedNamesService } from '@univerjs/engine-formula'; import { MoreDownSingle } from '@univerjs/icons'; import clsx from 'clsx'; @@ -39,14 +39,24 @@ export function DefinedName({ disable }: { disable: boolean }) { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); // Empty dependency array means this effect runs once on mount and clean up on unmount + // TODO: @DR-Univer: Should be implemented + function handleChangeSelection() { + + } + return (
- From 1220f12fcc54bb18fbe1c4a17ac5b74eef7bff19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Mon, 6 Jan 2025 12:03:36 +0800 Subject: [PATCH 10/14] fix: fix the case of import paths to ensure consistency --- examples/package.json | 1 + package.json | 2 +- .../rule-edit/{colorScale.tsx => ColorScale.tsx} | 0 .../panel/rule-edit/{dataBar.tsx => DataBar.tsx} | 0 .../panel/rule-edit/{formula.tsx => Formula.tsx} | 0 .../{highlightCell.tsx => HighlightCell.tsx} | 0 .../panel/rule-edit/{iconSet.tsx => IconSet.tsx} | 6 +++--- .../panel/rule-edit/{rank.tsx => Rank.tsx} | 0 .../src/components/panel/rule-edit/index.tsx | 12 ++++++------ pnpm-lock.yaml | 3 +++ 10 files changed, 14 insertions(+), 10 deletions(-) rename packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/{colorScale.tsx => ColorScale.tsx} (100%) rename packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/{dataBar.tsx => DataBar.tsx} (100%) rename packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/{formula.tsx => Formula.tsx} (100%) rename packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/{highlightCell.tsx => HighlightCell.tsx} (100%) rename packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/{iconSet.tsx => IconSet.tsx} (99%) rename packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/{rank.tsx => Rank.tsx} (100%) diff --git a/examples/package.json b/examples/package.json index 747f0a3edf4..90fe7059c2a 100644 --- a/examples/package.json +++ b/examples/package.json @@ -65,6 +65,7 @@ "@univerjs/uni-docs-ui": "workspace:*", "@univerjs/uni-formula": "workspace:*", "@univerjs/uni-formula-ui": "workspace:*", + "@univerjs/uni-sheets-ui": "workspace:*", "@univerjs/uni-slides-ui": "workspace:*", "@univerjs/uniscript": "workspace:*", "@univerjs/uniui": "workspace:*", diff --git a/package.json b/package.json index 38124fba59c..a5fce87d480 100644 --- a/package.json +++ b/package.json @@ -69,9 +69,9 @@ "eslint-plugin-react-refresh": "^0.4.16", "husky": "^9.1.7", "lint-staged": "^15.3.0", - "release-it": "^17.11.0", "react": "19.0.0", "react-dom": "19.0.0", + "release-it": "^17.11.0", "serve": "^14.2.4", "tsx": "^4.19.2", "turbo": "^2.3.3", diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/colorScale.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/ColorScale.tsx similarity index 100% rename from packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/colorScale.tsx rename to packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/ColorScale.tsx diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/dataBar.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/DataBar.tsx similarity index 100% rename from packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/dataBar.tsx rename to packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/DataBar.tsx diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/formula.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Formula.tsx similarity index 100% rename from packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/formula.tsx rename to packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Formula.tsx diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/highlightCell.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/HighlightCell.tsx similarity index 100% rename from packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/highlightCell.tsx rename to packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/HighlightCell.tsx diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx similarity index 99% rename from packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx rename to packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx index 5ddeda7d8e4..5a98e03744d 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/iconSet.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx @@ -37,7 +37,7 @@ import { import { FormulaEditor } from '@univerjs/sheets-formula-ui'; import { ILayoutService, useScrollYOverContainer, useSidebarClick } from '@univerjs/ui'; -import React, { forwardRef, useEffect, useMemo, useRef, useState } from 'react'; +import React, { useEffect, useMemo, useRef, useState } from 'react'; import stylesBase from '../index.module.less'; import styles from './index.module.less'; @@ -108,7 +108,7 @@ interface IconGroupListProps { onClick: (iconType: IIconType) => void; iconType?: IIconType; }; -const IconGroupList = forwardRef((props, ref) => { +const IconGroupList = ({ ref, ...props }: IconGroupListProps & { ref: React.RefObject }) => { const localeService = useDependency(LocaleService); const handleClick = (iconType: IIconType) => { @@ -137,7 +137,7 @@ const IconGroupList = forwardRef((pro })}
); -}); +}; const IconItemList = (props: { onClick: (iconType: IIconType, iconId: string) => void; iconType?: IIconType; iconId: string }) => { const list = useMemo(() => { diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/rank.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Rank.tsx similarity index 100% rename from packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/rank.tsx rename to packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Rank.tsx diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx index 6c0c3021502..3959e1eab0e 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.tsx @@ -34,13 +34,13 @@ import { AddCfCommand } from '../../../commands/commands/add-cf.command'; import { SetCfCommand } from '../../../commands/commands/set-cf.command'; import styleBase from '../index.module.less'; -import { ColorScaleStyleEditor } from './colorScale'; -import { DataBarStyleEditor } from './dataBar'; -import { FormulaStyleEditor } from './formula'; -import { HighlightCellStyleEditor } from './highlightCell'; -import { IconSet } from './iconSet'; +import { ColorScaleStyleEditor } from './ColorScale'; +import { DataBarStyleEditor } from './DataBar'; +import { FormulaStyleEditor } from './Formula'; +import { HighlightCellStyleEditor } from './HighlightCell'; +import { IconSet } from './IconSet'; import styles from './index.module.less'; -import { RankStyleEditor } from './rank'; +import { RankStyleEditor } from './Rank'; import { beforeSubmit, submit } from './type'; interface IRuleEditProps { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8724bef6e1a..5348250f39e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -424,6 +424,9 @@ importers: '@univerjs/uni-formula-ui': specifier: workspace:* version: link:../packages-experimental/uni-formula-ui + '@univerjs/uni-sheets-ui': + specifier: workspace:* + version: link:../packages-experimental/uni-sheets-ui '@univerjs/uni-slides-ui': specifier: workspace:* version: link:../packages-experimental/uni-slides-ui From 8d44380181cc4f5863a83626fc218071a9801180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 14 Jan 2025 20:23:35 +0800 Subject: [PATCH 11/14] feat: update React components for improved type safety and compatibility --- common/shared/eslint/index.js | 4 + .../components/dropdown/DropdownProvider.tsx | 4 +- .../design/src/components/input/Input.tsx | 192 ++++++++---------- .../design/src/components/tooltip/Tooltip.tsx | 2 +- .../src/views/rich-text-editor/index.tsx | 2 +- .../components/panel/rule-edit/IconSet.tsx | 6 +- .../src/views/formula-editor/index.tsx | 2 +- .../src/views/range-selector/index.tsx | 2 +- 8 files changed, 101 insertions(+), 113 deletions(-) diff --git a/common/shared/eslint/index.js b/common/shared/eslint/index.js index 52abb19080d..ba93552aee8 100644 --- a/common/shared/eslint/index.js +++ b/common/shared/eslint/index.js @@ -51,6 +51,10 @@ exports.baseRules = { 'command/command': 'off', 'jsdoc/tag-lines': 'off', + // IMPORTANT: To ensure compatibility, some features of React 19 will be disabled. + 'react/no-forward-ref': 'off', + 'react/no-context-provider': 'off', + // TODO: debatable rules 'react/no-duplicate-key': 'warn', 'test/prefer-lowercase-title': 'off', diff --git a/packages/design/src/components/dropdown/DropdownProvider.tsx b/packages/design/src/components/dropdown/DropdownProvider.tsx index 17fedf7f9e3..0e8c7dbdef6 100644 --- a/packages/design/src/components/dropdown/DropdownProvider.tsx +++ b/packages/design/src/components/dropdown/DropdownProvider.tsx @@ -26,8 +26,8 @@ interface IDropdownProviderProps { } export function DropdownProvider({ visible, children, disabled = false, onVisibleChange }: IDropdownProviderProps) { - const triggerRef = useRef(null); - const overlayRef = useRef(null); + const triggerRef = useRef(null!); + const overlayRef = useRef(null!); const [internalShow, setInternalShow] = useState(false); const isControlled = visible !== undefined; diff --git a/packages/design/src/components/input/Input.tsx b/packages/design/src/components/input/Input.tsx index 8e837395929..df74aa187ee 100644 --- a/packages/design/src/components/input/Input.tsx +++ b/packages/design/src/components/input/Input.tsx @@ -14,129 +14,113 @@ * limitations under the License. */ -import type { InputProps } from 'rc-input'; import { CloseSingle } from '@univerjs/icons'; -import clsx from 'clsx'; -import RcInput from 'rc-input'; import React from 'react'; +import { clsx } from '../../helper/clsx'; -import styles from './index.module.less'; +type InputProps = React.InputHTMLAttributes; export interface IInputProps extends Pick { - /** - * Whether the input is autoFocus - * @default false - */ autoFocus?: boolean; - - /** - * The input class name - */ className?: string; - - /** - * The input affix wrapper style - */ affixWrapperStyle?: React.CSSProperties; - - /** - * The input type - * @default text - */ type?: 'text' | 'password'; - - /** - * The input placeholder - */ placeholder?: string; - - /** - * The input content value - */ value?: string; - - /** - * The input size - * @default middle - */ size?: 'small' | 'middle' | 'large'; - - /** - * Whether the input is clearable - * @default false - */ allowClear?: boolean; - - /** - * Whether the input is disabled - * @default false - */ disabled?: boolean; - - /** - * Callback when user click - * @param e - */ onClick?: (e: React.MouseEvent) => void; - - /** - * Callback when user press a key - * @param e - */ onKeyDown?: (e: React.KeyboardEvent) => void; - - /** - * Callback when user input - * @param value - */ onChange?: (value: string) => void; - } -export function Input(props: IInputProps) { - const { - affixWrapperStyle, - autoFocus = false, - type = 'text', - className, - placeholder, - value, - size = 'middle', - allowClear, - disabled = false, - onClick, - onKeyDown, - onChange, - ...rest - } = props; - - function handleChange(e: React.ChangeEvent) { - const { value } = e.target; - onChange?.(value); - } - - const _className = clsx(className, { - [styles.inputAffixWrapperSmall]: size === 'small', - [styles.inputAffixWrapperMiddle]: size === 'middle', - [styles.inputAffixWrapperLarge]: size === 'large', - [styles.inputNotAllowClear]: !allowClear, - }, className); +export const Input = ({ + autoFocus = false, + className, + affixWrapperStyle, + type = 'text', + placeholder, + value, + size = 'small', + allowClear = false, + disabled = false, + onClick, + onKeyDown, + onChange, + onFocus, + onBlur, + ...props +}: IInputProps) => { + const sizeClasses = { + small: 'univer-h-8 univer-text-sm univer-px-2', + middle: 'univer-h-10 univer-text-base univer-px-3', + large: 'univer-h-12 univer-text-lg univer-px-4', + }; + + const handleClear = (e: React.MouseEvent) => { + e.stopPropagation(); + onChange?.(''); + }; + + const handleChange = (e: React.ChangeEvent) => { + onChange?.(e.target.value); + }; return ( - : <> }} - {...rest} - /> +
+ + {allowClear && value && !disabled && ( + + )} +
); -} +}; diff --git a/packages/design/src/components/tooltip/Tooltip.tsx b/packages/design/src/components/tooltip/Tooltip.tsx index 28735a9305d..ebfe463fb58 100644 --- a/packages/design/src/components/tooltip/Tooltip.tsx +++ b/packages/design/src/components/tooltip/Tooltip.tsx @@ -273,7 +273,7 @@ export function Tooltip({ visible, asChild = false, title, children, placement = React.Children.only(children) as React.ReactElement, { ref: triggerRef, - } + } as any ); return ( diff --git a/packages/docs-ui/src/views/rich-text-editor/index.tsx b/packages/docs-ui/src/views/rich-text-editor/index.tsx index d1702c12f7f..c036a4ce775 100644 --- a/packages/docs-ui/src/views/rich-text-editor/index.tsx +++ b/packages/docs-ui/src/views/rich-text-editor/index.tsx @@ -69,7 +69,7 @@ export const RichTextEditor = forwardRef((props, r const onFocusChange = useEvent(_onFocusChange); const onClickOutside = useEvent(_onClickOutside); const [height, setHeight] = useState(defaultHeight); - const formulaEditorContainerRef = React.useRef(null); + const formulaEditorContainerRef = React.useRef(null!); const editorId = useMemo(() => propsEditorId ?? createInternalEditorID(`RICH_TEXT_EDITOR-${generateRandomId(4)}`), [propsEditorId]); const editor = useEditor({ editorId, diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx index 5a98e03744d..f3fc4908123 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx @@ -37,7 +37,7 @@ import { import { FormulaEditor } from '@univerjs/sheets-formula-ui'; import { ILayoutService, useScrollYOverContainer, useSidebarClick } from '@univerjs/ui'; -import React, { useEffect, useMemo, useRef, useState } from 'react'; +import React, { forwardRef, useEffect, useMemo, useRef, useState } from 'react'; import stylesBase from '../index.module.less'; import styles from './index.module.less'; @@ -108,7 +108,7 @@ interface IconGroupListProps { onClick: (iconType: IIconType) => void; iconType?: IIconType; }; -const IconGroupList = ({ ref, ...props }: IconGroupListProps & { ref: React.RefObject }) => { +const IconGroupList = forwardRef((props, ref) => { const localeService = useDependency(LocaleService); const handleClick = (iconType: IIconType) => { @@ -137,7 +137,7 @@ const IconGroupList = ({ ref, ...props }: IconGroupListProps & { ref: React.RefO })} ); -}; +}); const IconItemList = (props: { onClick: (iconType: IIconType, iconId: string) => void; iconType?: IIconType; iconId: string }) => { const list = useMemo(() => { diff --git a/packages/sheets-formula-ui/src/views/formula-editor/index.tsx b/packages/sheets-formula-ui/src/views/formula-editor/index.tsx index bb94d9e4a79..91fc533da3e 100644 --- a/packages/sheets-formula-ui/src/views/formula-editor/index.tsx +++ b/packages/sheets-formula-ui/src/views/formula-editor/index.tsx @@ -117,7 +117,7 @@ export function FormulaEditor(props: IFormulaEditorProps) { const onFormulaSelectingChange = useEvent(propOnFormulaSelectingChange); const searchFunctionRef = useRef(null); - const editorRef = useRef(); + const editorRef = useRef(undefined); const editor = editorRef.current; const [isFocus, isFocusSet] = useState(_isFocus); const formulaEditorContainerRef = useRef(null); diff --git a/packages/sheets-formula-ui/src/views/range-selector/index.tsx b/packages/sheets-formula-ui/src/views/range-selector/index.tsx index 5397d483e17..a4bb73a8a1a 100644 --- a/packages/sheets-formula-ui/src/views/range-selector/index.tsx +++ b/packages/sheets-formula-ui/src/views/range-selector/index.tsx @@ -116,7 +116,7 @@ export function RangeSelector(props: IRangeSelectorProps) { const [rangeDialogVisible, rangeDialogVisibleSet] = useState(false); const [isFocus, isFocusSet] = useState(_isFocus); const editorId = useMemo(() => createInternalEditorID(`${RANGE_SELECTOR_SYMBOLS}-${generateRandomId(4)}`), []); - const editorRef = useRef(); + const editorRef = useRef(undefined); const editor = editorRef.current; const containerRef = useRef(null); const univerInstanceService = useDependency(IUniverInstanceService); From 7853f13897a3ae00f85eb5cf2f735359dbb58d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 21 Jan 2025 20:42:34 +0800 Subject: [PATCH 12/14] chore: cleanup package.json --- packages-experimental/debugger/package.json | 1 + .../uni-formula-ui/package.json | 1 + .../uni-sheets-ui/package.json | 1 + packages/design/package.json | 2 - packages/sheets-drawing/package.json | 3 +- packages/uniscript/package.json | 1 + pnpm-lock.yaml | 40 +++++++------------ 7 files changed, 20 insertions(+), 29 deletions(-) diff --git a/packages-experimental/debugger/package.json b/packages-experimental/debugger/package.json index 004f4727a43..d432fc96a82 100644 --- a/packages-experimental/debugger/package.json +++ b/packages-experimental/debugger/package.json @@ -75,6 +75,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uni-formula-ui/package.json b/packages-experimental/uni-formula-ui/package.json index 6bc4fad152d..9fda0b41229 100644 --- a/packages-experimental/uni-formula-ui/package.json +++ b/packages-experimental/uni-formula-ui/package.json @@ -82,6 +82,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages-experimental/uni-sheets-ui/package.json b/packages-experimental/uni-sheets-ui/package.json index ebe63280fc8..9f37ee68c65 100644 --- a/packages-experimental/uni-sheets-ui/package.json +++ b/packages-experimental/uni-sheets-ui/package.json @@ -75,6 +75,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "postcss": "^8.4.49", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/packages/design/package.json b/packages/design/package.json index 23a791bb65a..772b0c12318 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -70,7 +70,6 @@ "dependencies": { "@rc-component/color-picker": "^2.0.1", "@rc-component/trigger": "^2.2.6", - "@types/react-mentions": "^4.4.0", "@univerjs/icons": "^0.2.12", "clsx": "^2.1.1", "dayjs": "^1.11.13", @@ -93,7 +92,6 @@ "devDependencies": { "@testing-library/react": "^16.1.0", "@types/react-grid-layout": "^1.3.5", - "@types/react-mentions": "^4.4.1", "@types/react-transition-group": "^4.4.11", "@univerjs-infra/shared": "workspace:*", "@univerjs/core": "workspace:*", diff --git a/packages/sheets-drawing/package.json b/packages/sheets-drawing/package.json index c39b7b6659e..c0c9c8aeff0 100644 --- a/packages/sheets-drawing/package.json +++ b/packages/sheets-drawing/package.json @@ -57,8 +57,7 @@ }, "dependencies": { "@univerjs/core": "workspace:*", - "@univerjs/drawing": "workspace:*", - "@univerjs/sheets": "workspace:*" + "@univerjs/drawing": "workspace:*" }, "devDependencies": { "@univerjs-infra/shared": "workspace:*", diff --git a/packages/uniscript/package.json b/packages/uniscript/package.json index 7b0411d0683..bee74e3e287 100644 --- a/packages/uniscript/package.json +++ b/packages/uniscript/package.json @@ -79,6 +79,7 @@ "@univerjs-infra/shared": "workspace:*", "less": "^4.2.1", "postcss": "^8.4.49", + "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5348250f39e..0f0239c0e71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -725,9 +725,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - react: - specifier: 19.0.0 - version: 19.0.0 optionalDependencies: vue: specifier: '>=3.0.0' @@ -739,6 +736,9 @@ importers: postcss: specifier: ^8.4.49 version: 8.4.49 + react: + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -889,9 +889,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - react: - specifier: 19.0.0 - version: 19.0.0 devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -899,6 +896,9 @@ importers: postcss: specifier: ^8.4.49 version: 8.4.49 + react: + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -950,9 +950,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - react: - specifier: 19.0.0 - version: 19.0.0 devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -960,6 +957,9 @@ importers: postcss: specifier: ^8.4.49 version: 8.4.49 + react: + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -1195,9 +1195,6 @@ importers: '@rc-component/trigger': specifier: ^2.2.6 version: 2.2.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@types/react-mentions': - specifier: ^4.4.0 - version: 4.4.1 '@univerjs/icons': specifier: ^0.2.12 version: 0.2.12(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -2332,13 +2329,13 @@ importers: '@univerjs/drawing': specifier: workspace:* version: link:../drawing - '@univerjs/sheets': - specifier: workspace:* - version: link:../sheets devDependencies: '@univerjs-infra/shared': specifier: workspace:* version: link:../../common/shared + '@univerjs/sheets': + specifier: workspace:* + version: link:../sheets typescript: specifier: ^5.7.2 version: 5.7.2 @@ -3434,9 +3431,6 @@ importers: monaco-editor: specifier: 0.52.2 version: 0.52.2 - react: - specifier: 19.0.0 - version: 19.0.0 devDependencies: '@univerjs-infra/shared': specifier: workspace:* @@ -3447,6 +3441,9 @@ importers: postcss: specifier: ^8.4.49 version: 8.4.49 + react: + specifier: 19.0.0 + version: 19.0.0 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -5597,9 +5594,6 @@ packages: '@types/react-grid-layout@1.3.5': resolution: {integrity: sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ==} - '@types/react-mentions@4.4.1': - resolution: {integrity: sha512-65QdcZYkGe2I4GnOLY2OhlXCGz/Csd8NhytwE5r59CoFeYafMltAE/WqFB/Y6SoPU8LvF7EyUrq6Rxrf0Kzxkg==} - '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: @@ -13613,10 +13607,6 @@ snapshots: dependencies: '@types/react': 19.0.2 - '@types/react-mentions@4.4.1': - dependencies: - '@types/react': 19.0.2 - '@types/react-transition-group@4.4.12(@types/react@19.0.2)': dependencies: '@types/react': 19.0.2 From 9d6055091e75d1fb4b16c162e77a1de6d8314483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Tue, 21 Jan 2025 20:51:10 +0800 Subject: [PATCH 13/14] test: fix test case --- .../design/src/components/input/__tests__/Input.spec.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/design/src/components/input/__tests__/Input.spec.tsx b/packages/design/src/components/input/__tests__/Input.spec.tsx index b0dd44df6e5..70e89d72784 100644 --- a/packages/design/src/components/input/__tests__/Input.spec.tsx +++ b/packages/design/src/components/input/__tests__/Input.spec.tsx @@ -14,9 +14,8 @@ * limitations under the License. */ -import { afterEach, describe, expect, it } from 'vitest'; -import React from 'react'; import { cleanup, fireEvent, render } from '@testing-library/react'; +import { afterEach, describe, expect, it } from 'vitest'; import { Input } from '../Input'; describe('Input', () => { @@ -51,13 +50,13 @@ describe('Input', () => { it('renders the size', () => { const { container } = render(); - expect(container.innerHTML).contains('inputAffixWrapperLarge'); + expect(container.innerHTML).contains('univer-h-12'); }); it('renders the clearable', () => { - const { container } = render(); + const { container } = render(); - expect(container.innerHTML).contains('input-clear-icon'); + expect(container.innerHTML).contains('type="button"'); }); it('change the value', () => { From 47a5f5cc088b597160c04dc1933ae44253625cb9 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 21 Jan 2025 13:11:04 +0000 Subject: [PATCH 14/14] chore(snapshots): update snapshots --- .../default-doc-ci-chromium-linux.png | Bin 119404 -> 119456 bytes .../sheets-no-gridlines-ci-chromium-linux.png | Bin 50591 -> 50907 bytes ...fault-sheet-fullpage-ci-chromium-linux.png | Bin 78036 -> 78370 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/e2e/visual-comparison/docs/docs-visual-comparison.spec.ts-snapshots/default-doc-ci-chromium-linux.png b/e2e/visual-comparison/docs/docs-visual-comparison.spec.ts-snapshots/default-doc-ci-chromium-linux.png index 56af6fd4ae33373e9926950bb83ca01fe04cfbb4..b9ca5d0b149eedf63562d36a569b04d462d63307 100644 GIT binary patch literal 119456 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 |)I+;EV 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 F{{l!uL{|U+ literal 119404 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

I*ErqIIPaU+F3dyl4%=v;sL+TXYJtXd!OKlD@ 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 F{})igINbmM delta 18447 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%0D@ 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 SF