diff --git a/content/guides/pro/index.ja-JP.mdx b/content/guides/pro/index.ja-JP.mdx index a7b3f8ce..d23af72e 100644 --- a/content/guides/pro/index.ja-JP.mdx +++ b/content/guides/pro/index.ja-JP.mdx @@ -46,7 +46,7 @@ Univer Pro はオープンソースの Univer にサーバー連携の企業向 ## ライセンスと制限 -Univer Pro は [Univer 商用ライセンス](https://univer.ai/license) で提供されます。ライセンスなしでも評価は可能ですが、透かし・インポート容量・協調編集数などの制限があります。詳細は[価格](https://univer.ai/pricing)を参照してください。 +Univer Pro は [Univer 商用ライセンス](https://pro.univer.ai/license) で提供されます。ライセンスなしでも評価は可能ですが、透かし・インポート容量・協調編集数などの制限があります。詳細は[価格](https://univer.ai/pricing)を参照してください。 ## クライアント統合 diff --git a/content/guides/pro/index.mdx b/content/guides/pro/index.mdx index f67194db..acc7bbff 100644 --- a/content/guides/pro/index.mdx +++ b/content/guides/pro/index.mdx @@ -46,7 +46,7 @@ Pro features are marked with + + + {headers[0]} + {headers[1]} + + + {children} + + ) +} + +interface MigrationRowProps { + method: ReactNode + children: ReactNode +} + +export function MigrationRow({ method, children }: MigrationRowProps) { + return ( + + {method} + {children} + + ) +} + +export function MigrationCell({ className, children }: { + className?: string + children: ReactNode +}) { + return
{children}
+} diff --git a/content/guides/sheets/features/core/permission.ja-JP.mdx b/content/guides/sheets/features/core/permission.ja-JP.mdx index a8de862c..c3d236f6 100644 --- a/content/guides/sheets/features/core/permission.ja-JP.mdx +++ b/content/guides/sheets/features/core/permission.ja-JP.mdx @@ -2,15 +2,35 @@ title: 権限管理 --- +import { MigrationCell, MigrationRow, MigrationTable } from './components/migration-table' + Univer はブック・シート・セル範囲に対する権限制御機能を提供します。ユーザーが許可されていない操作を実行しようとすると、コード実行を停止し、権限不足を通知できます。たとえば、範囲保護(エリア保護)を設定し、その範囲内で他の共同編集者が編集 / 閲覧 / コピー / フィルター等を行えるかどうかを制御できます。 -**注意: Univer が提供するのは拡張可能な基盤能力であり、カスタマイズ済み機能ではありません。永続化や組織構造など、より広範かつ特化した要件がある場合は、権限ルールの保存および組織構造との統合を自ら実装する必要があります。その際はカスタムプラグインを作成してください。** -そのため、権限を設定した後に権限一覧が空であったり、ユーザー情報を取得しても空で返ることがあります。これは当該情報が API 経由で取得されるべきカスタムロジックであり、追加実装が必要だからです。以下の「サードパーティ認可サービス統合」を参照してください。 + + Univer が提供するのは拡張可能な基盤能力であり、カスタマイズ済み機能ではありません。 + 永続化や組織構造など、より広範かつ特化した要件がある場合は、権限ルールの保存および組織構造との統合を自ら実装する必要があります。その際はカスタムプラグインを作成してください。 + そのため、権限を設定した後に権限一覧が空であったり、ユーザー情報を取得しても空で返ることがあります。これは当該情報が API 経由で取得されるべきカスタムロジックであり、追加実装が必要だからです。以下の「サードパーティ認可サービス統合」を参照してください。 + +## 基本概念 + +- 範囲:権限の対象となる範囲。Univer ではワークブック、ワークシート、選区の 3 つの範囲がサポートされており、ユーザーはこれらの範囲に対して権限を設定できます。 +- 権限ポイント:権限の対象となる機能点。各機能点は対応する権限ポイントクラスで表され、ユーザーはこれらのポイントを設定して特定の機能を制御できます。 +- 保護ルール:ワークシートと選区の権限設定には、まず保護ルールを作成する必要があります。保護ルールは、特定のユーザーやユーザーグループに対して範囲内の操作を許可または禁止するためのルールです。 + + + ローカル非永続化(非協同編集環境)権限制御は、権限ポイントを変更することで直接実現できます。永続化された権限については、以下の「サードパーティ認可サービス統合」を参照してください。 + 協同編集シナリオでは、権限ポイントの更新はサーバー側の状態も同期的に更新します: + - false:その権限ポイントには少なくとも `owner` ロールが必要 + - true:その権限ポイントには少なくとも `reader` ロールが必要 + + ## 基本例 +最も一般的な権限設定方法を、ワークブック、ワークシート、選区の 3 つのレベルで以下に示します。 + ### ワークブック権限コード例 現状、ブックレベルの権限は API を通じて直接変更します。Univer は [Facade API](/guides/sheets/getting-started/facade) を提供しており、これを用いてブックの各機能に対する権限を設定できます。 @@ -25,196 +45,84 @@ const workbookPermission = fWorkbook.getWorkbookPermission() await workbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, false) ``` +重要な点: +- ブック権限ポイントは直接設定でき、保護ルールの作成は必要ありません。 + ### ワークシート権限コード例 ワークシートおよび範囲に関連する権限は Facade API とコマンド両方で設定可能です。ここではワークシート編集権限を例とします。その他のワークシート機能は[権限ポイントビット一覧 - ワークシート](#worksheet-point)を参照してください。 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // ワークシート保護を作成し、指定したユーザーのみ編集可能に設定 - const permissionId = await worksheetPermission.protect({ - allowedUsers: ['user1', 'user2'], - name: 'My Worksheet Protection', - }) - - // 権限ポイントを設定する必要がある場合は、まずワークシート保護を作成する必要があります - await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddWorksheetProtectionMutation, getSheetCommandTarget, WorksheetEditPermission } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - - commandService.executeCommand(AddWorksheetProtectionMutation.id, { - unitId, - subUnitId, - rule: { - permissionId: '2sxcza1', - name: 'sheet', - unitType: 2, - unitId, - subUnitId, - }, - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - const permissionService = accessor.get(IPermissionService) - permissionService.updatePermissionPoint(new WorksheetEditPermission(unitId, subUnitId).id, false) - ``` - - +// ワークシート保護を作成し、指定したユーザーのみ編集可能に設定 +const permissionId = await worksheetPermission.protect({ + allowedUsers: ['user1', 'user2'], + name: 'My Worksheet Protection', +}) -このコマンドのパラメータ: `permissionId` は保存用に自分で生成する一意 ID、`unitType` はシート種別(リポジトリの `UnitObject` enum 利用可)、unitId はブック ID、`subUnitId` はシート ID。 +// 権限ポイントを設定する必要がある場合は、まずワークシート保護を作成する必要があります +await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) +``` #### ワークシート権限の削除 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // ワークシート保護を削除します - await worksheetPermission.unprotect() - ``` - - - ```typescript - import { DeleteWorksheetProtectionMutation } from '@univerjs/sheets' // [!code ++] +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - commandService.executeCommand(DeleteWorksheetProtectionMutation.id, { - unitId, - subUnitId, - }) - ``` - - +// ワークシート保護を削除します +await worksheetPermission.unprotect() +``` ### カスタム範囲権限コード例 範囲(Range)権限も API とコマンドの両方式で設定できます。ここでは範囲編集権限を例とします。他の範囲機能は[権限ポイントビット一覧 - 範囲](#range-point)を参照してください。 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() - - // 指定したユーザーのみ編集可能、他のユーザーは閲覧不可 - const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], - }) - console.log(rule) - - // 権限ポイントを設定する必要がある場合は、まず範囲保護を作成する必要があります - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddRangeProtectionMutation, getSheetCommandTarget, RangeProtectionPermissionEditPoint } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - const ranges = [ - { - startRow: 0, - startColumn: 0, - endRow: 2, - endColumn: 1, - }, - { - startRow: 3, - startColumn: 2, - endRow: 4, - endColumn: 3, - }, - ] - - commandService.executeCommand(AddRangeProtectionMutation.id, { - unitId, - subUnitId, - rules: [{ - permissionId: '3xtfxG1', - name: 'sheet1', - unitType: 3, - unitId, - subUnitId, - ranges, - id: 'rule1', - }], - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - const permissionService = accessor.get(IPermissionService) - // RangeProtectionPermissionEditPoint の第3引数は生成した permissionId。false は編集不可 - permissionService.updatePermissionPoint(new RangeProtectionPermissionEditPoint(unitId, subUnitId, '3xtfxG1').id, false) - ``` - - +// 指定したユーザーのみ編集可能、他のユーザーは閲覧不可 +const rule = await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], +}) +console.log(rule) -ここでのパラメータは前述とほぼ同じで、選択範囲を示す `ranges`、および削除時に利用する一意識別子 `id` が追加されています。 +// 権限ポイントを設定する必要がある場合は、まず範囲保護を作成する必要があります +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +``` #### 範囲保護権限の削除 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - // 範囲保護を削除します - await rangePermission.unprotect() - ``` - - - ```typescript - import { DeleteRangeProtectionMutation } from '@univerjs/sheets' // [!code ++] +// スコープ内のすべての保護ルールを削除 +await rangePermission.unprotect() - commandService.executeCommand(DeleteRangeProtectionMutation.id, { - unitId, - subUnitId, - ruleIds: ['rule1'], - }) - ``` - - +// または、指定されたルールを削除 +const rules = await rangePermission.listRules() +if (rules.length > 0) { + await rules[0].remove() +} +``` ## 拡張利用 +独自のプラグイン内で権限検証を追加する必要がある場合は、直接権限ポイントを操作できます。 + ここでは `WorkbookEditablePermission` を例に、独自プラグイン内で権限検証を追加します。他のポイントも同様です。 ```typescript @@ -239,9 +147,12 @@ class YourService { ### 権限ポイントの拡張方法 +権限ポイントをカスタマイズする必要がある場合は、`IPermissionPoint` を実装し、権限サービスに登録できます。 + ```typescript import type { IPermissionPoint } from '@univerjs/core' -import { IPermissionService } from '@univerjs/core' +import { IPermissionService, PermissionStatus } from '@univerjs/core' +import { UnitAction, UnitObject } from '@univerjs/protocol' export class CustomPermissionPoint implements IPermissionPoint { type = UnitObject.Unkonwn // 任意のタイプ @@ -295,8 +206,7 @@ class ConsumeService { ![Permission](./permission/permission-en.png) -以下は 2 つの事前定義ロール(Owner / Reader)に対し、保護された範囲の追加と削除を行う簡易例です。 -Owner は保護範囲の編集・閲覧が可能で、Reader は保護範囲内セルの内容を編集・閲覧できません。 +以下は 2 つの事前定義ロール(Owner / Reader)に対し、保護された範囲の追加と削除を行う簡易例です。 Owner は保護範囲の編集・閲覧が可能で、Reader は保護範囲内セルの内容を編集・閲覧できません。 ```typescript import type { Injector } from '@univerjs/core' @@ -689,6 +599,8 @@ Univer の標準ユーザーコンポーネントは適応性に限界があり ## Facade API +Facade API は、権限に対する統一されたエントリーポイントを提供します。以下は、ワークブック、ワークシート、選区ごとに一般的なメソッドをグループ化して示しています。 + ### ワークブック権限 #### ワークブック権限インスタンスの取得 @@ -753,21 +665,6 @@ console.log('Workbook permission snapshot:', snapshot) - `FWorkbookPermission.canEdit()`: ワークブックが編集可能か確認します -#### ワークブック権限ポイント変更の購読 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const workbookPermission = fWorkbook.getWorkbookPermission() - -// ワークブック権限ポイント変更を購読 -const unsubscribe = workbookPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// サブスクリプションを削除する -unsubscribe() -``` - #### 共同編集者管理 @@ -868,34 +765,6 @@ if (isProtected) { } ``` -#### 範囲保護 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// 複数の保護範囲を設定、A1:B2 は他のユーザーが閲覧可能だが編集不可、C3:D4 は指定ユーザーが編集可能だが他のユーザーは閲覧不可 -const rules = await worksheetPermission.protectRanges([ - { - ranges: [fWorksheet.getRange('A1:B2')], - options: { name: 'Protected Area 1', allowEdit: false, allowViewByOthers: true }, - }, - { - ranges: [fWorksheet.getRange('C3:D4')], - options: { name: 'Protected Area 2', allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1'] }, - }, -]) -console.log(rules) - -// 現在のすべての保護範囲ルールを取得 -const rules = await worksheetPermission.listRangeProtectionRules() -console.log(rules) - -// 最初の保護範囲ルールを削除 -await worksheetPermission.unprotectRules([rules[0].id]) -``` - #### ワークシート権限ポイントの設定 `WorksheetPermissionPoint` 列挙値のリストは、[権限ポイントビット一覧 - ワークシート権限](#worksheet-point) にあります。 @@ -964,24 +833,10 @@ const snapshot = worksheetPermission.getSnapshot() - `FWorksheetPermission.canEdit(): boolean`:ワークシートが編集可能か確認します - `FWorksheetPermission.canEditCell(row: number, col: number): boolean`:特定のセルが編集可能か確認します +- `FWorksheetPermission.canView(): boolean`:ワークシートが閲覧可能か確認します +- `FWorksheetPermission.canViewCell(row: number, col: number): boolean`:特定のセルが閲覧可能か確認します - `FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo`:特定のセルの権限デバッグ情報を取得します -#### ワークシート権限ポイント変更の購読 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// ワークシート権限ポイント変更を購読 -const unsubscribe = worksheetPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// サブスクリプションを削除する -unsubscribe() -``` - ### 範囲権限 #### 範囲権限インスタンスの取得 @@ -995,32 +850,38 @@ const rangePermission = fRange.getRangePermission() #### 範囲保護の設定 +- ワークシート権限を使用して範囲保護を設定します: + ```typescript const fWorkbook = univerAPI.getActiveWorkbook() const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() +const worksheetPermission = fWorksheet.getWorksheetPermission() -// 範囲保護を設定し、指定ユーザーが編集可能で他のユーザーは閲覧不可にする -const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], -}) -console.log(rule) +// 複数の保護範囲を設定、A1:B2 は他のユーザーが閲覧可能だが編集不可、C3:D4 は指定ユーザーが編集可能だが他のユーザーは閲覧不可 +const rules = await worksheetPermission.protectRanges([ + { + ranges: [fWorksheet.getRange('A1:B2')], + options: { name: 'Protected Area 1', allowViewByOthers: true }, + }, + { + ranges: [fWorksheet.getRange('C3:D4')], + options: { name: 'Protected Area 2', allowViewByOthers: false, allowedUsers: ['user1'] }, + }, +]) +console.log(rules) -// 現在のすべての範囲保護ルールを取得 -const rules = await rangePermission.listRules() +// 現在のワークシートのすべての保護範囲ルールを取得 +const rules = await worksheetPermission.listRangeProtectionRules() console.log(rules) -// 範囲保護を削除 -await rangePermission.unprotect() -``` +// 最初の保護範囲ルールを削除 +await worksheetPermission.unprotectRules([rules[0].id]) -#### 範囲権限インスタンスの設定 +// または、`FRangeProtectionRule.remove()` を使用して保護ルールを削除 +await ruleList[0].remove() +``` -`RangePermissionPoint` 列挙値のリストは、[権限ポイントビット一覧 - 範囲](#range-point) にあります。 +- 範囲権限インスタンスを使用して範囲保護を設定します: ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1028,43 +889,28 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// 権限ポイントを設定する必要がある場合は、まず範囲保護を作成する必要があります -await rangePermission.protect({ +// 範囲保護を設定し、指定ユーザーが編集可能で他のユーザーは閲覧不可にする +const rule = await rangePermission.protect({ name: 'My protected range', - allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1', 'user2'], }) +console.log(rule) -// A1:B2 選択範囲の編集権限を不可、閲覧権限を可に設定 -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) -``` - -#### 範囲権限インスタンスステータスの取得 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() +// 現在の範囲のすべての保護ルールを取得 +const rules = await rangePermission.listRules() +console.log(rules) -// 選択範囲の編集権限ステータスを取得 -const canEdit = rangePermission.getPoint(univerAPI.Enum.RangePermissionPoint.Edit) -console.log(canEdit) +// 現在の範囲内のすべての保護ルールを削除 +await rangePermission.unprotect() -// すべての範囲権限ポイントステータスを取得 -const snapshot = rangePermission.getSnapshot() +// または、`FRangeProtectionRule.remove()` を使用して保護ルールを削除 +await rules[0].remove() ``` -ショートカットメソッドの利用例: - -- `FRangePermission.isProtected(): boolean`:範囲が保護されているか確認 -- `FRangePermission.canEdit(): boolean`:範囲が編集可能か確認 -- `FRangePermission.canView(): boolean`:範囲が閲覧可能か確認 -- `FRangePermission.canDelete(): boolean`:選択範囲が保護削除可能か確認 +#### 範囲権限ポイントの設定 -#### 範囲権限ポイント変更の購読 +`RangePermissionPoint` 列挙値のリストは、[権限ポイントビット一覧 - 範囲](#range-point) にあります。 ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1072,16 +918,44 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// 範囲権限ポイント変更の購読 -const unsubscribe = rangePermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// サブスクリプションを削除する -unsubscribe() +// 権限ポイントを設定する必要がある場合は、まず範囲保護を作成する必要があります +if (rangePermission.isProtected()) { + const rules = await rangePermission.listRules() + + // 最初の保護ルールの編集権限を不可、閲覧権限を可に設定 + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} else { + await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], + }) + + // A1:B2 選択範囲の編集権限を不可、閲覧権限を可に設定 + await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} ``` -### 権限ルール API +### 範囲権限ルール API + +`FRangeProtectionRule` の主なメソッドは以下の通りです: + +| 方法 | 説明 | +| --- | --- | +| `id: string` | 保護ルールの一意識別子 | +| `permissionId: string` | この保護ルールに関連付けられた権限ポイントの ID | +| `ranges: FRange[]` | この保護ルールが適用される範囲のリスト | +| `options: IRangeProtectionOptions` | 保護ルールのオプション設定 | +| `updateRanges(ranges: FRange[]): Promise` | 保護ルールの範囲を更新 | +| `remove(): Promise` | この保護ルールを削除 | +| `setPoint(point: RangePermissionPoint, value: boolean): Promise` | 保護ルールの権限ポイントを設定 | +| `getPoint(point: RangePermissionPoint): boolean` | 保護ルールの特定の権限ポイントのステータスを取得 | +| `canEdit(): boolean` | チェック保護ルールが編集を許可するかどうか | +| `canView(): boolean` | チェック保護ルールが閲覧を許可するかどうか | +| `canDelete(): boolean` | チェック保護ルールが削除を許可するかどうか | +| `getSnapshot(): RangePermissionSnapshot` | 保護ルールの現在の状態のスナップショットを取得 | ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1110,3 +984,181 @@ await rule?.remove() ```typescript univerAPI.setPermissionDialogVisible(false) ``` + +### 旧 API 移行ガイド + + + + + 旧 API: +
+ FWorkbook.getPermission() +
+ + 新しい API: +
+
ワークブック:FWorkbook.getWorkbookPermission()
+
ワークシート:FWorksheet.getWorksheetPermission()
+
範囲:FRange.getRangePermission()
+
+
+ + + 旧 API: +
+ FPermission.setWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor, value: boolean) +
+ + 新しい API: +
+ FWorkbookPermission.setPoint(point: WorkbookPermissionPoint, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.checkWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor): boolean +
+ + 新しい API: +
+ FWorkbookPermission.getPoint(point: WorkbookPermissionPoint): boolean +
+
+ + + 旧 API: +
+ FPermission.setWorkbookEditPermission(unitId: string, value: boolean) +
+ + 新しい API: +
+ FWorkbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.addWorksheetBasePermission(unitId: string, subUnitId: string) +
+ + 新しい API: +
+ FWorksheetPermission.protect(options?: IWorksheetProtectionOptions) +
+
+ + + 旧 API: +
+ FPermission.removeWorksheetPermission(unitId: string, subUnitId: string) +
+ + 新しい API: +
+ FWorksheetPermission.unprotect() +
+
+ + + 旧 API: +
+ FPermission.setWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor, value: boolean) +
+ + 新しい API: +
+ FWorksheetPermission.setPoint(point: WorksheetPermissionPoint, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.checkWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor): boolean +
+ + 新しい API: +
+ FWorksheetPermission.getPoint(point: WorksheetPermissionPoint): boolean +
+
+ + + 旧 API: +
+ FPermission.getPermissionInfoWithCell(unitId: string, subUnitId: string, row: number, column: number) +
+ + 新しい API: +
+ FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo +
+
+ + + 旧 API: +
+ FPermission.addRangeBaseProtection(unitId: string, subUnitId: string, ranges: FRange[]) +
+ + 新しい API: +
+
ワークシート:FWorksheetPermission.protectRanges(configs)
+
範囲:FRangePermission.protect(options?: IRangeProtectionOptions)
+
+
+ + + 旧 API: +
+ FPermission.removeRangeProtection(unitId: string, subUnitId: string, ruleIds: string[]) +
+ + 新しい API: +
+
ワークシート:FWorksheetPermission.unprotectRules(ruleIds: string[])
+
範囲:FRangePermission.unprotect()
+
範囲権限ルール:FRangeProtectionRule.remove()
+
+
+ + + 旧 API: +
+ FPermission.setRangeProtectionPermissionPoint(unitId: string, subUnitId: string, permissionId: string, FPointClass: RangePermissionPointConstructor, value: boolean) +
+ + 新しい API: +
+ FRangeProtectionRule.setPoint(point: RangePermissionPoint, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.setRangeProtectionRanges(unitId: string, subUnitId: string, ruleId: string, ranges: FRange[]) +
+ + 新しい API: +
+ FRangeProtectionRule.updateRanges(ranges: FRange[]) +
+
+ + + 旧 API: +
+ FPermission.setPermissionDialogVisible(false) +
+ + 新しい API: +
+ univerAPI.setPermissionDialogVisible(false) +
+
+
diff --git a/content/guides/sheets/features/core/permission.mdx b/content/guides/sheets/features/core/permission.mdx index a3e1ef23..9f723536 100644 --- a/content/guides/sheets/features/core/permission.mdx +++ b/content/guides/sheets/features/core/permission.mdx @@ -2,15 +2,35 @@ title: Permission Control --- +import { MigrationCell, MigrationRow, MigrationTable } from './components/migration-table' + Univer provides permission control capabilities, typically used to restrict user operations on workbooks, sheets, and ranges. When a user performs an operation without permission, the code execution can be halted and the user will be prompted about the missing permissions. For example, you can set area protection within a range, which allows setting whether other collaborators can edit, read, copy, filter, etc., within the protected range. -**Note: Univer provides extendable foundational capabilities, not customized features. If you have more extensive and tailored requirements such as persistence or organizational structures, you need to implement the storage of permission rules and integrate organizational structures yourself. In this case, you need to write custom plugins to achieve this.** -Therefore, after setting permissions, you might find the permission list empty when viewing it, or user information returns empty when you check it. This is because this information needs to be fetched via API requests; it's custom logic that requires additional implementation on your part. You can refer to the third-party integration below. + + Univer provides extendable foundational capabilities, not customized features. + If you have more extensive and tailored requirements such as persistence or organizational structures, you need to implement the storage of permission rules and integrate organizational structures yourself. In this case, you need to write custom plugins to achieve this. + Therefore, after setting permissions, you might find the permission list empty when viewing it, or user information returns empty when you check it. This is because this information needs to be fetched via API requests; it's custom logic that requires additional implementation on your part. You can refer to the third-party integration below. + +## Core Concepts + +- Scope of Action: Permissions can be applied at three levels: workbook, worksheet, and range. +- Permission Points: Each function corresponds to a permission point, and modifying the point can control whether the function is available. +- Protection Rules: Before setting permission points for worksheets and ranges, you need to create protection rules + + + Local non-persistent (non-collaborative editing environment) permission control can be directly achieved by modifying the permission points. For persistent permissions, please refer to the "Integration of Third-Party Authorization Service" section below. + In a collaborative editing scenario, updating permission points will synchronize the server state: + - false: This permission point requires at least the `owner` role + - true: This permission point requires at least the `reader` role + + ## Basic Example +The most common permission setting methods are shown below at three levels: workbook, worksheet, and range. + ### Workbook Permissions Code Example Currently, workbook-level permissions are directly modified through the API. We provide the [Facade API](/guides/sheets/getting-started/facade), and you can use this API to set permissions for different functions of the workbook. @@ -25,196 +45,84 @@ const workbookPermission = fWorkbook.getWorkbookPermission() await workbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, false) ``` +Key points: +- Workbook permissions points can be directly set without the need to create protection rules. + ### Worksheet Permissions Code Example Worksheet and range-related permissions can be set via both the Facade API and command. Here, we'll use worksheet edit permissions as an example. Other worksheet functions require replacing the permission points, see the [list of permission points - Worksheet](#worksheet-point) for details. - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // Create worksheet protection, allow specified users to edit - const permissionId = await worksheetPermission.protect({ - allowedUsers: ['user1', 'user2'], - name: 'My Worksheet Protection', - }) - - // If you need to set permission points, you must first create worksheet protection - await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddWorksheetProtectionMutation, getSheetCommandTarget, WorksheetEditPermission } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - - commandService.executeCommand(AddWorksheetProtectionMutation.id, { - unitId, - subUnitId, - rule: { - permissionId: '2sxcza1', - name: 'sheet', - unitType: 2, - unitId, - subUnitId, - }, - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - const permissionService = accessor.get(IPermissionService) - permissionService.updatePermissionPoint(new WorksheetEditPermission(unitId, subUnitId).id, false) - ``` - - +// Create worksheet protection, allow specified users to edit +const permissionId = await worksheetPermission.protect({ + allowedUsers: ['user1', 'user2'], + name: 'My Worksheet Protection', +}) -Parameters in this command: `permissionId` is a unique ID you generate to store the permission, `unitType` is the sheet type (you can use the `UnitObject` enum from the repository), unitId is the workbook id, and `subUnitId` is the sheet id. +// If you need to set permission points, you must first create worksheet protection +await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) +``` #### Delete Worksheet Permissions - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // Remove worksheet protection - await worksheetPermission.unprotect() - ``` - - - ```typescript - import { DeleteWorksheetProtectionMutation } from '@univerjs/sheets' // [!code ++] +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - commandService.executeCommand(DeleteWorksheetProtectionMutation.id, { - unitId, - subUnitId, - }) - ``` - - +// Remove worksheet protection +await worksheetPermission.unprotect() +``` ### Custom Range Permissions Code Example Range permissions can also be set via API and command modes. Here, we'll use range edit permissions as an example. Other range functions require replacing the permission points, see the [list of permission points - Range](#range-point) for details. - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() - - // Set range protection permission, allow specified users to edit but not allow others to view - const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], - }) - console.log(rule) - - // If you need to set permission points, you must first create range protection - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddRangeProtectionMutation, getSheetCommandTarget, RangeProtectionPermissionEditPoint } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - const ranges = [ - { - startRow: 0, - startColumn: 0, - endRow: 2, - endColumn: 1, - }, - { - startRow: 3, - startColumn: 2, - endRow: 4, - endColumn: 3, - }, - ] - - commandService.executeCommand(AddRangeProtectionMutation.id, { - unitId, - subUnitId, - rules: [{ - permissionId: '3xtfxG1', - name: 'sheet1', - unitType: 3, - unitId, - subUnitId, - ranges, - id: 'rule1', - }], - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - const permissionService = accessor.get(IPermissionService) - // Here, RangeProtectionPermissionEditPoint's third parameter is the generated permissionId, false means not editable - permissionService.updatePermissionPoint(new RangeProtectionPermissionEditPoint(unitId, subUnitId, '3xtfxG1').id, false) - ``` - - +// Set range protection permission, allow specified users to edit but not allow others to view +const rule = await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], +}) +console.log(rule) -Here, the parameters are similar to those above, with additional `ranges` parameter for selected areas, and `id` parameter for uniquely identifying the rule, used for deletion. +// If you need to set permission points, you must first create range protection. +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +``` #### Delete Range Protection Permissions - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - // Remove range protection - await rangePermission.unprotect() - ``` - - - ```typescript - import { DeleteRangeProtectionMutation } from '@univerjs/sheets' // [!code ++] +// delete all rules within the range +await rangePermission.unprotect() - commandService.executeCommand(DeleteRangeProtectionMutation.id, { - unitId, - subUnitId, - ruleIds: ['rule1'], - }) - ``` - - +// Or delete specific rules within the range +const rules = await rangePermission.listRules() +if (rules.length > 0) { + await rules[0].remove() +} +``` ## Extended usage +When you need to add permission verification in your own plug-in, you can directly manipulate the permission points. + Here we take `WorkbookEditablePermission` as an example and add permission verification in your own plug-in. Other points are similar. ```typescript @@ -239,9 +147,12 @@ You can also extend and modify other permission points to achieve permission con ### How to extend the permission point +If you need to customize permission points, you can implement `IPermissionPoint` and register it to the permission service: + ```typescript import type { IPermissionPoint } from '@univerjs/core' -import { IPermissionService } from '@univerjs/core' +import { IPermissionService, PermissionStatus } from '@univerjs/core' +import { UnitAction, UnitObject } from '@univerjs/protocol' export class CustomPermissionPoint implements IPermissionPoint { type = UnitObject.Unkonwn // your type @@ -295,8 +206,7 @@ In a production environment, we need to replace this implementation with a backe ![Permission](./permission/permission-en.png) -Here is a simple example demonstrating the addition and deletion of protected range permissions for two predefined roles (Owner/Reader). -The Owner has editing/viewing permissions for protected ranges, while the Reader cannot edit or view the contents of cells within protected ranges. +Here is a simple example demonstrating the addition and deletion of protected range permissions for two predefined roles (Owner/Reader). The Owner has editing/viewing permissions for protected ranges, while the Reader cannot edit or view the contents of cells within protected ranges. ```typescript import type { Injector } from '@univerjs/core' @@ -689,6 +599,8 @@ After completing the custom user settings, please synchronize it to the `sheetPe ## Facade API +The Facade API provides a unified entry point for permissions. Below, we will group common methods by workbook, worksheet, and range. + ### Workbook Permissions #### Get Workbook Permission Instance @@ -753,21 +665,6 @@ Using shortcut methods: - `FWorkbookPermission.canEdit()`: Check if the workbook is editable -#### Subscribe to Workbook Permission Point Changes - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const workbookPermission = fWorkbook.getWorkbookPermission() - -// Subscribe to workbook permission point changes -const unsubscribe = workbookPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// Remove subscription -unsubscribe() -``` - #### Collaborator Management @@ -868,34 +765,6 @@ if (isProtected) { } ``` -#### Range Protection - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// Set multiple protected ranges, A1:B2 is not editable but viewable by others, C3:D4 is editable by specified users but not viewable by others -const rules = await worksheetPermission.protectRanges([ - { - ranges: [fWorksheet.getRange('A1:B2')], - options: { name: 'Protected Area 1', allowEdit: false, allowViewByOthers: true }, - }, - { - ranges: [fWorksheet.getRange('C3:D4')], - options: { name: 'Protected Area 2', allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1'] }, - }, -]) -console.log(rules) - -// Get all current protection range rules -const rules = await worksheetPermission.listRangeProtectionRules() -console.log(rules) - -// Remove the first protection range -await worksheetPermission.unprotectRules([rules[0].id]) -``` - #### Set Worksheet Permission Point `WorksheetPermissionPoint` enum values list can be found in [Worksheet Permission Points List](#worksheet-point). @@ -964,24 +833,10 @@ Using shortcut methods: - `FWorksheetPermission.canEdit(): boolean`: Check if the worksheet is editable - `FWorksheetPermission.canEditCell(row: number, col: number): boolean`: Check if a specific cell is editable +- `FWorksheetPermission.canView(): boolean`: Check if the worksheet is viewable +- `FWorksheetPermission.canViewCell(row: number, col: number): boolean`: Check if a specific cell is viewable - `FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo`: Get permission debug info for a specific cell -#### Subscribe to Worksheet Permission Point Changes - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// Subscribe to worksheet permission point changes -const unsubscribe = worksheetPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// Remove subscription -unsubscribe() -``` - ### Range Permissions #### Get Range Permission Instance @@ -995,32 +850,38 @@ const rangePermission = fRange.getRangePermission() #### Set Range Protection +- Set range protection using the worksheet-level permission: + ```typescript const fWorkbook = univerAPI.getActiveWorkbook() const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() +const worksheetPermission = fWorksheet.getWorksheetPermission() -// Set protection for the range, allowing specified users to edit but not allowing others to view -const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], -}) -console.log(rule) +// Set multiple protected ranges, A1:B2 is not editable but viewable by others, C3:D4 is editable by specified users but not viewable by others +const rules = await worksheetPermission.protectRanges([ + { + ranges: [fWorksheet.getRange('A1:B2')], + options: { name: 'Protected Area 1', allowViewByOthers: true }, + }, + { + ranges: [fWorksheet.getRange('C3:D4')], + options: { name: 'Protected Area 2', allowViewByOthers: false, allowedUsers: ['user1'] }, + }, +]) +console.log(rules) -// Get current range protection rules -const rules = await rangePermission.listRules() +// Get all protection rules for the worksheet +const rules = await worksheetPermission.listRangeProtectionRules() console.log(rules) -// Remove range protection -await rangePermission.unprotect() -``` +// Delete the first protection rule +await worksheetPermission.unprotectRules([rules[0].id]) -#### Set Range Permission Point +// Or delete protection range through `FRangeProtectionRule.remove()` +await ruleList[0].remove() +``` -`RangePermissionPoint` enum values list can be found in [Range Protection Points List](#range-point). +- Set range protection using the range-level permission: ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1028,43 +889,28 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// If you need to set permission points, you must first create range protection -await rangePermission.protect({ +// Set protection for the range, allowing specified users to edit but not allowing others to view +const rule = await rangePermission.protect({ name: 'My protected range', - allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1', 'user2'], }) +console.log(rule) -// Set the edit permission of the A1:B2 selection to unavailable, and the view permission to available -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) -``` - -#### Get Range Permission Point Status - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() +// Get all protection rules for the range +const rules = await rangePermission.listRules() +console.log(rules) -// Get the edit permission status of the selection -const canEdit = rangePermission.getPoint(univerAPI.Enum.RangePermissionPoint.Edit) -console.log(canEdit) +// Delete all protection rules for the range +await rangePermission.unprotect() -// Get all range permission point statuses -const snapshot = rangePermission.getSnapshot() +// Or delete protection rules through `FRangeProtectionRule.remove()` +await rules[0].remove() ``` -Using shortcut methods: - -- `FRangePermission.isProtected(): boolean`: Check if the range is protected -- `FRangePermission.canEdit(): boolean`: Check if the range is editable -- `FRangePermission.canView(): boolean`: Check if the range is viewable -- `FRangePermission.canDelete(): boolean`: Check if the selection can delete protection +#### Set Range Permission Point -#### Subscribe to Range Permission Point Changes +`RangePermissionPoint` enum values list can be found in [Range Protection Points List](#range-point). ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1072,16 +918,44 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// Subscribe to range permission point changes -const unsubscribe = rangePermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// Remove subscription -unsubscribe() +// If you need to set permission points, you must first create range protection +if (rangePermission.isProtected()) { + const rules = await rangePermission.listRules() + + // Set the edit permission of the first protection rule to unavailable, and the view permission to available + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} else { + const rule = await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], + }) + + // Set the edit permission of the A1:B2 selection to unavailable, and the view permission to available + await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} ``` -### Permission Rule API +### Range Permission Rule API + +Here are some member methods of `FRangeProtectionRule`: + +| API | Description | +| --- | --- | +| `id: string` | The unique identifier of the protection rule | +| `permissionId: string` | The permission ID associated with the protection rule | +| `ranges: FRange[]` | The ranges covered by the protection rule | +| `options: IRangeProtectionOptions` | The options of the protection rule, including the name of the rule, whether to allow others to view, and the list of users allowed to edit | +| `updateRanges(ranges: FRange[]): Promise` | Update the ranges covered by the protection rule | +| `remove(): Promise` | Remove the protection rule | +| `setPoint(point: RangePermissionPoint, value: boolean): Promise` | Set the status of a specific permission point for the protection rule (e.g., edit/view/delete) | +| `getPoint(point: RangePermissionPoint): boolean` | Get the status of a specific permission point for the protection rule (e.g., edit/view/delete) | +| `canEdit(): boolean` | Check if the protection rule allows editing | +| `canView(): boolean` | Check if the protection rule allows viewing | +| `canDelete(): boolean` | Check if the protection rule allows deletion | +| `getSnapshot(): RangePermissionSnapshot` | Get a snapshot of the current permission status of the protection rule, including all permission points | ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1105,8 +979,186 @@ await rule?.updateRanges([fWorksheet.getRange('A1:C3')]) await rule?.remove() ``` -### Remove permission dialog +### Remove Permission Dialog ```typescript univerAPI.setPermissionDialogVisible(false) ``` + +### Old API Migration Guide + + + + + Old API: +
+ FWorkbook.getPermission() +
+ + New API: +
+
Workbook: FWorkbook.getWorkbookPermission()
+
Worksheet: FWorksheet.getWorksheetPermission()
+
Range: FRange.getRangePermission()
+
+
+ + + Old API: +
+ FPermission.setWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor, value: boolean) +
+ + New API: +
+ FWorkbookPermission.setPoint(point: WorkbookPermissionPoint, value: boolean) +
+
+ + + Old API: +
+ FPermission.checkWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor): boolean +
+ + New API: +
+ FWorkbookPermission.getPoint(point: WorkbookPermissionPoint): boolean +
+
+ + + Old API: +
+ FPermission.setWorkbookEditPermission(unitId: string, value: boolean) +
+ + New API: +
+ FWorkbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, value: boolean) +
+
+ + + Old API: +
+ FPermission.addWorksheetBasePermission(unitId: string, subUnitId: string) +
+ + New API: +
+ FWorksheetPermission.protect(options?: IWorksheetProtectionOptions) +
+
+ + + Old API: +
+ FPermission.removeWorksheetPermission(unitId: string, subUnitId: string) +
+ + New API: +
+ FWorksheetPermission.unprotect() +
+
+ + + Old API: +
+ FPermission.setWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor, value: boolean) +
+ + New API: +
+ FWorksheetPermission.setPoint(point: WorksheetPermissionPoint, value: boolean) +
+
+ + + Old API: +
+ FPermission.checkWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor): boolean +
+ + New API: +
+ FWorksheetPermission.getPoint(point: WorksheetPermissionPoint): boolean +
+
+ + + Old API: +
+ FPermission.getPermissionInfoWithCell(unitId: string, subUnitId: string, row: number, column: number) +
+ + New API: +
+ FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo +
+
+ + + Old API: +
+ FPermission.addRangeBaseProtection(unitId: string, subUnitId: string, ranges: FRange[]) +
+ + New API: +
+
Worksheet: FWorksheetPermission.protectRanges(configs)
+
Range: FRangePermission.protect(options?: IRangeProtectionOptions)
+
+
+ + + Old API: +
+ FPermission.removeRangeProtection(unitId: string, subUnitId: string, ruleIds: string[]) +
+ + New API: +
+
Worksheet: FWorksheetPermission.unprotectRules(ruleIds: string[])
+
Range: FRangePermission.unprotect()
+
Range Protection Rule: FRangeProtectionRule.remove()
+
+
+ + + Old API: +
+ FPermission.setRangeProtectionPermissionPoint(unitId: string, subUnitId: string, permissionId: string, FPointClass: RangePermissionPointConstructor, value: boolean) +
+ + New API: +
+ FRangeProtectionRule.setPoint(point: RangePermissionPoint, value: boolean) +
+
+ + + Old API: +
+ FPermission.setRangeProtectionRanges(unitId: string, subUnitId: string, ruleId: string, ranges: FRange[]) +
+ + New API: +
+ FRangeProtectionRule.updateRanges(ranges: FRange[]) +
+
+ + + Old API: +
+ FPermission.setPermissionDialogVisible(false) +
+ + New API: +
+ univerAPI.setPermissionDialogVisible(false) +
+
+
diff --git a/content/guides/sheets/features/core/permission.zh-CN.mdx b/content/guides/sheets/features/core/permission.zh-CN.mdx index 23114c34..bee1ad5b 100644 --- a/content/guides/sheets/features/core/permission.zh-CN.mdx +++ b/content/guides/sheets/features/core/permission.zh-CN.mdx @@ -2,6 +2,8 @@ title: 权限控制 --- +import { MigrationCell, MigrationRow, MigrationTable } from './components/migration-table' + Univer 提供权限控制能力,用于限制用户对工作簿、工作表、选区的操作。当用户执行无权限动作时,Univer 会中止执行并提示缺失权限。常见场景如:对一片选区设置保护,限制协作者的编辑/查看/复制等能力。 @@ -18,6 +20,13 @@ Univer 提供权限控制能力,用于限制用户对工作簿、工作表、 - 权限点位:每个功能对应一个权限点位,修改点位即可控制功能是否可用。 - 保护规则:工作表和选区在设置权限点位前,需要先创建保护规则。 + + 本地非持久化(非协同编辑环境)权限控制可直接通过修改权限点位实现,持久化权限请参考下方的“第三方权限服务接入”。 + 协同编辑场景下,更新权限点位会同步更新服务端状态: + - false:该权限点至少需要 `owner` 角色 + - true:该权限点至少需要 `reader` 角色 + + ## 基础示例 下面按工作簿、工作表、选区三个层级展示最常见的权限设置方式。 @@ -43,196 +52,72 @@ await workbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, f 工作表和选区相关的权限设置可以通过 Facade API 或命令系统实现。这里以工作表编辑权限举例,其他功能只需替换权限点位,参考[权限点位列表 - 工作表](#worksheet-point)。 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // 创建工作表保护, 允许指定用户编辑 - const permissionId = await worksheetPermission.protect({ - allowedUsers: ['user1', 'user2'], - name: 'My Worksheet Protection', - }) - - // 如果需要设置权限点位,必须先创建工作表保护 - await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddWorksheetProtectionMutation, getSheetCommandTarget, WorksheetEditPermission } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - - commandService.executeCommand(AddWorksheetProtectionMutation.id, { - unitId, - subUnitId, - rule: { - permissionId: '2sxcza1', - name: 'sheet', - unitType: 2, - unitId, - subUnitId, - }, - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - const permissionService = accessor.get(IPermissionService) - permissionService.updatePermissionPoint(new WorksheetEditPermission(unitId, subUnitId).id, false) - ``` - - +// 创建工作表保护, 允许指定用户编辑 +const permissionId = await worksheetPermission.protect({ + allowedUsers: ['user1', 'user2'], + name: 'My Worksheet Protection', +}) -参数说明: -- `permissionId`:你生成的唯一 Id,用于存储权限。 -- `unitType`:工作表类型,可使用仓库中的 `UnitObject` 枚举替代魔法数。 -- `unitId`:工作簿 id。 -- `subUnitId`:工作表 id。 +// 如果需要设置权限点位,必须先创建工作表保护 +await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) +``` #### 删除工作表权限 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // 删除工作表保护 - await worksheetPermission.unprotect() - ``` - - - ```typescript - import { DeleteWorksheetProtectionMutation } from '@univerjs/sheets' // [!code ++] +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - commandService.executeCommand(DeleteWorksheetProtectionMutation.id, { - unitId, - subUnitId, - }) - ``` - - +// 删除工作表保护 +await worksheetPermission.unprotect() +``` ### 自定义选区权限代码示例 选区的权限同样支持 API 和命令模式。这里以选区编辑权限举例,其他选区功能只需替换权限点位,参考[权限点位列表 - 选区](#range-point)。 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() - - // 设置区域保护权限,允许指定用户编辑但不允许他人查看 - const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], - }) - console.log(rule) - - // 如果需要设置权限点位,必须先创建区域保护 - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddRangeProtectionMutation, getSheetCommandTarget, RangeProtectionPermissionEditPoint } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - const ranges = [ - { - startRow: 0, - startColumn: 0, - endRow: 2, - endColumn: 1, - }, - { - startRow: 3, - startColumn: 2, - endRow: 4, - endColumn: 3, - }, - ] - - commandService.executeCommand(AddRangeProtectionMutation.id, { - unitId, - subUnitId, - rules: [{ - permissionId: '3xtfxG1', - name: 'sheet1', - unitType: 3, - unitId, - subUnitId, - ranges, - id: 'rule1', - }], - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - const permissionService = accessor.get(IPermissionService) - // 这里 RangeProtectionPermissionEditPoint 的第三个参数就是上面生成的 permissionId,false 表示不可编辑 - permissionService.updatePermissionPoint(new RangeProtectionPermissionEditPoint(unitId, subUnitId, '3xtfxG1').id, false) - ``` - - +// 设置区域保护权限,允许指定用户编辑但不允许他人查看 +const rule = await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], +}) +console.log(rule) -参数说明: -- `ranges`:要设置权限的区域数组。 -- `id`:规则的唯一 id,用于删除该规则。 -- 其余参数含义与上方工作表示例一致。 +// 如果需要设置权限点位,必须先创建区域保护。 +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +``` #### 删除区域保护权限 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - // 删除区域保护 - await rangePermission.unprotect() - ``` - - - ```typescript - import { DeleteRangeProtectionMutation } from '@univerjs/sheets' // [!code ++] +// 删除范围内所有保护规则 +await rangePermission.unprotect() - commandService.executeCommand(DeleteRangeProtectionMutation.id, { - unitId, - subUnitId, - ruleIds: ['rule1'], - }) - ``` - - +// 或者删除范围内指定规则 +const rules = await rangePermission.listRules() +if (rules.length > 0) { + await rules[0].remove() +} +``` ## 拓展使用 @@ -266,7 +151,8 @@ class YourService { ```typescript import type { IPermissionPoint } from '@univerjs/core' -import { IPermissionService } from '@univerjs/core' +import { IPermissionService, PermissionStatus } from '@univerjs/core' +import { UnitAction, UnitObject } from '@univerjs/protocol' export class CustomPermissionPoint implements IPermissionPoint { type = UnitObject.Unkonwn // your type @@ -779,21 +665,6 @@ console.log('Workbook permission snapshot:', snapshot) - `FWorkbookPermission.canEdit()`:检查工作簿是否可编辑 -#### 订阅工作簿权限点位变化 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const workbookPermission = fWorkbook.getWorkbookPermission() - -// 订阅工作簿权限点位变化 -const unsubscribe = workbookPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// 取消订阅 -unsubscribe() -``` - #### 协作者管理 @@ -894,34 +765,6 @@ if (isProtected) { } ``` -#### 范围保护 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// 设置多个保护范围,A1:B2 不允许编辑但允许他人查看,C3:D4 允许指定用户编辑但不允许他人查看 -const rules = await worksheetPermission.protectRanges([ - { - ranges: [fWorksheet.getRange('A1:B2')], - options: { name: 'Protected Area 1', allowEdit: false, allowViewByOthers: true }, - }, - { - ranges: [fWorksheet.getRange('C3:D4')], - options: { name: 'Protected Area 2', allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1'] }, - }, -]) -console.log(rules) - -// 获取当前所有保护范围规则 -const ruleList = await worksheetPermission.listRangeProtectionRules() -console.log(ruleList) - -// 取消第一个保护范围 -await worksheetPermission.unprotectRules([ruleList[0].id]) -``` - #### 设置工作表权限点位 `WorksheetPermissionPoint` 枚举值列表请参考[权限点位列表-工作表](#worksheet-point)。 @@ -990,24 +833,10 @@ const snapshot = worksheetPermission.getSnapshot() - `FWorksheetPermission.canEdit(): boolean`:检查工作表是否可编辑 - `FWorksheetPermission.canEditCell(row: number, col: number): boolean`:检查指定单元格是否可编辑 +- `FWorksheetPermission.canView(): boolean`:检查工作表是否可查看 +- `FWorksheetPermission.canViewCell(row: number, col: number): boolean`:检查指定单元格是否可查看 - `FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo`:获取指定单元格的权限调试信息 -#### 订阅工作表权限点位变化 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// 订阅工作表权限点位变化 -const unsubscribe = worksheetPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// 取消订阅 -unsubscribe() -``` - ### 选区级权限 #### 获取选区权限实例 @@ -1019,34 +848,40 @@ const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() ``` -#### 设置区域保护权限 +#### 设置范围保护 + +- 通过工作表级权限设置范围保护: ```typescript const fWorkbook = univerAPI.getActiveWorkbook() const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() - -// 设置区域保护权限,允许指定用户编辑但不允许他人查看 -const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], -}) -console.log(rule) +const worksheetPermission = fWorksheet.getWorksheetPermission() -// 获取当前区域保护规则 -const rules = await rangePermission.listRules() +// 设置多个保护范围,A1:B2 不允许编辑但允许他人查看,C3:D4 允许指定用户编辑但不允许他人查看 +const rules = await worksheetPermission.protectRanges([ + { + ranges: [fWorksheet.getRange('A1:B2')], + options: { name: 'Protected Area 1', allowViewByOthers: true }, + }, + { + ranges: [fWorksheet.getRange('C3:D4')], + options: { name: 'Protected Area 2', allowViewByOthers: false, allowedUsers: ['user1'] }, + }, +]) console.log(rules) -// 取消区域保护 -await rangePermission.unprotect() -``` +// 获取当前工作表所有保护范围规则 +const ruleList = await worksheetPermission.listRangeProtectionRules() +console.log(ruleList) -#### 设置选区权限点位 +// 删除第一个保护范围规则 +await worksheetPermission.unprotectRules([ruleList[0].id]) -`RangePermissionPoint` 枚举值列表请参考[权限点位列表-区域保护](#range-point)。 +// 或者通过 `FRangeProtectionRule.remove()` 删除保护规则 +await ruleList[0].remove() +``` + +- 通过选区级权限设置范围保护: ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1054,43 +889,28 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// 如果需要设置权限点位,必须先创建区域保护 -await rangePermission.protect({ +// 设置范围保护,允许指定用户编辑但不允许他人查看 +const rule = await rangePermission.protect({ name: 'My protected range', - allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1', 'user2'], }) +console.log(rule) -// 设置 A1:B2 选区的编辑权限为不可用,查看权限为可用 -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) -``` - -#### 获取选区权限点位状态 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() +// 获取当前范围内的所有保护规则 +const rules = await rangePermission.listRules() +console.log(rules) -// 获取选区编辑权限状态 -const canEdit = rangePermission.getPoint(univerAPI.Enum.RangePermissionPoint.Edit) -console.log(canEdit) +// 删除当前范围内的所有保护规则 +await rangePermission.unprotect() -// 获取选区所有权限点位状态 -const snapshot = rangePermission.getSnapshot() +// 或者通过 `FRangeProtectionRule.remove()` 删除保护规则 +await rules[0].remove() ``` -使用快捷方法: - -- `FRangePermission.isProtected(): boolean`:检查选区是否受保护 -- `FRangePermission.canEdit(): boolean`:检查选区是否可编辑 -- `FRangePermission.canView(): boolean`:检查选区是否可查看 -- `FRangePermission.canDelete(): boolean`:检查选区是否可删除保护 +#### 设置区域保护权限点位 -#### 订阅选区权限点位变化 +`RangePermissionPoint` 枚举值列表请参考[权限点位列表-区域保护](#range-point)。 ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1098,16 +918,44 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// 订阅选区权限点位变化 -const unsubscribe = rangePermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// 取消订阅 -unsubscribe() +// 如果需要设置权限点位,必须先创建区域保护 +if (rangePermission.isProtected()) { + const rules = await rangePermission.listRules() + + // 设置第一个保护规则的编辑权限为不可用,查看权限为可用 + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} else { + const rule = await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], + }) + + // 设置 A1:B2 选区的编辑权限为不可用,查看权限为可用 + await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} ``` -### 权限保护规则 +### 范围权限保护规则 + +以下是 `FRangeProtectionRule` 一些成员方法: + +| 方法 | 描述 | +| --- | --- | +| `id: string` | 保护规则的 ID | +| `permissionId: string` | 保护规则关联的权限 ID | +| `ranges: FRange[]` | 保护规则的范围 | +| `options: IRangeProtectionOptions` | 保护规则的选项配置 | +| `updateRanges(ranges: FRange[]): Promise` | 更新保护规则的范围 | +| `remove(): Promise` | 删除保护规则 | +| `setPoint(point: RangePermissionPoint, value: boolean): Promise` | 设置保护规则的权限点位 | +| `getPoint(point: RangePermissionPoint): boolean` | 获取保护规则的权限点位状态 | +| `canEdit(): boolean` | 检查保护规则是否允许编辑 | +| `canView(): boolean` | 检查保护规则是否允许查看 | +| `canDelete(): boolean` | 检查保护规则是否允许删除 | +| `getSnapshot(): RangePermissionSnapshot` | 获取保护规则的权限快照 | ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1137,21 +985,180 @@ await rule?.remove() univerAPI.setPermissionDialogVisible(false) ``` -{/* ### 旧 API 迁移指南 - -| 功能 | 新 API 方法 | 旧 API 方法 | -| --- | --- | --- | -| 获取权限实例 | 工作簿:`FWorkbook.getWorkbookPermission()`
工作表:`FWorksheet.getWorksheetPermission()`
选区:`FRange.getRangePermission()` | `FWorkbook.getPermission()` | -| 设置工作簿权限点位 | `FWorkbookPermission.setPoint(point: WorkbookPermissionPoint, value: boolean)` | `FPermission.setWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor, value: boolean)` | -| 获取工作簿权限点位状态 | `FWorkbookPermission.getPoint(point: WorkbookPermissionPoint): boolean` | `FPermission.checkWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor): boolean` | -| 设置工作簿编辑权限 | `FWorkbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, value: boolean)` | `FPermission.setWorkbookEditPermission(unitId: string, value: boolean)` | -| 设置工作表权限点位 | `FWorksheetPermission.setPoint(point: WorksheetPermissionPoint, value: boolean)` | `FPermission.setWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor, value: boolean)` | -| 获取工作表权限点位状态 | `FWorksheetPermission.getPoint(point: WorksheetPermissionPoint): boolean` | `FPermission.checkWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor): boolean` | -| 添加工作表保护 | `FWorksheetPermission.protect(options?: IWorksheetProtectionOptions)` | `FPermission.addWorksheetBasePermission(unitId: string, subUnitId: string)` | -| 删除工作表保护 | `FWorksheetPermission.unprotect()` | `FPermission.removeWorksheetPermission(unitId: string, subUnitId: string)` | -| 设置选区权限点位 | `FRangePermission.setPoint(point: RangePermissionPoint, value: boolean)` | `FPermission.setRangeProtectionPermissionPoint(unitId: string, subUnitId: string, permissionId: string, FPointClass: RangePermissionPointConstructor, value: boolean)` | -| 设置区域保护权限 | 工作表:`FWorksheetPermission.protectRanges(configs)`
选区:`FRangePermission.protect(options?: IRangeProtectionOptions)` | `FPermission.addRangeBaseProtection(unitId: string, subUnitId: string, ranges: FRange[])` | -| 删除区域保护权限 | 工作表:`FWorksheetPermission.unprotectRules(ruleIds: string[])`
选区:`FRangePermission.unprotect()` | `FPermission.removeRangeProtection(unitId: string, subUnitId: string, ruleIds: string[])` | -| 更新区域保护权限范围 | `FRangeProtectionRule.updateRanges(ranges: FRange[])` | `FPermission.setRangeProtectionRanges(unitId: string, subUnitId: string, ruleId: string, ranges: FRange[])` | -| 获取指定单元格权限信息 | `FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo` | `FPermission.getPermissionInfoWithCell(unitId: string, subUnitId: string, row: number, column: number)` | -| 去除权限弹窗 | `univerAPI.setPermissionDialogVisible(false)` | `FPermission.setPermissionDialogVisible(false)` | */} +### 旧 API 迁移指南 + + + + + 旧 API: +
+ FWorkbook.getPermission() +
+ + 新 API: +
+
工作簿:FWorkbook.getWorkbookPermission()
+
工作表:FWorksheet.getWorksheetPermission()
+
选区:FRange.getRangePermission()
+
+
+ + + 旧 API: +
+ FPermission.setWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor, value: boolean) +
+ + 新 API: +
+ FWorkbookPermission.setPoint(point: WorkbookPermissionPoint, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.checkWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor): boolean +
+ + 新 API: +
+ FWorkbookPermission.getPoint(point: WorkbookPermissionPoint): boolean +
+
+ + + 旧 API: +
+ FPermission.setWorkbookEditPermission(unitId: string, value: boolean) +
+ + 新 API: +
+ FWorkbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.addWorksheetBasePermission(unitId: string, subUnitId: string) +
+ + 新 API: +
+ FWorksheetPermission.protect(options?: IWorksheetProtectionOptions) +
+
+ + + 旧 API: +
+ FPermission.removeWorksheetPermission(unitId: string, subUnitId: string) +
+ + 新 API: +
+ FWorksheetPermission.unprotect() +
+
+ + + 旧 API: +
+ FPermission.setWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor, value: boolean) +
+ + 新 API: +
+ FWorksheetPermission.setPoint(point: WorksheetPermissionPoint, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.checkWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor): boolean +
+ + 新 API: +
+ FWorksheetPermission.getPoint(point: WorksheetPermissionPoint): boolean +
+
+ + + 旧 API: +
+ FPermission.getPermissionInfoWithCell(unitId: string, subUnitId: string, row: number, column: number) +
+ + 新 API: +
+ FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo +
+
+ + + 旧 API: +
+ FPermission.addRangeBaseProtection(unitId: string, subUnitId: string, ranges: FRange[]) +
+ + 新 API: +
+
工作表:FWorksheetPermission.protectRanges(configs)
+
选区:FRangePermission.protect(options?: IRangeProtectionOptions)
+
+
+ + + 旧 API: +
+ FPermission.removeRangeProtection(unitId: string, subUnitId: string, ruleIds: string[]) +
+ + 新 API: +
+
工作表:FWorksheetPermission.unprotectRules(ruleIds: string[])
+
选区:FRangePermission.unprotect()
+
范围保护规则:FRangeProtectionRule.remove()
+
+
+ + + 旧 API: +
+ FPermission.setRangeProtectionPermissionPoint(unitId: string, subUnitId: string, permissionId: string, FPointClass: RangePermissionPointConstructor, value: boolean) +
+ + 新 API: +
+ FRangeProtectionRule.setPoint(point: RangePermissionPoint, value: boolean) +
+
+ + + 旧 API: +
+ FPermission.setRangeProtectionRanges(unitId: string, subUnitId: string, ruleId: string, ranges: FRange[]) +
+ + 新 API: +
+ FRangeProtectionRule.updateRanges(ranges: FRange[]) +
+
+ + + 旧 API: +
+ FPermission.setPermissionDialogVisible(false) +
+ + 新 API: +
+ univerAPI.setPermissionDialogVisible(false) +
+
+
diff --git a/content/guides/sheets/features/core/permission.zh-TW.mdx b/content/guides/sheets/features/core/permission.zh-TW.mdx index 44b0a2c3..2640526e 100644 --- a/content/guides/sheets/features/core/permission.zh-TW.mdx +++ b/content/guides/sheets/features/core/permission.zh-TW.mdx @@ -2,6 +2,8 @@ title: 權限控制 --- +import { MigrationCell, MigrationRow, MigrationTable } from './components/migration-table' + Univer 提供權限控制能力,用於限制使用者對工作簿、工作表、選區的操作。當使用者執行無權限動作時,Univer 會中止執行並提示缺失權限。常見場景如:對一片選區設定保護,限制協作者的編輯/檢視/複製等能力。 @@ -18,6 +20,13 @@ Univer 提供權限控制能力,用於限制使用者對工作簿、工作表 - 權限點位:每個功能對應一個權限點位,修改點位即可控制功能是否可用。 - 保護規則:工作表和選區在設定權限點位前,需要先建立保護規則。 + + 本機非持久化(非協同編輯環境)權限控制可直接透過修改權限點位實現,持久化權限請參考下方的“第三方權限服務接入”。 + 協同編輯場景下,更新權限點位會同步更新服務端狀態: + - false:該權限點至少需要 `owner` 角色 + - true:該權限點至少需要 `reader` 角色 + + ## 基礎示例 下面按工作簿、工作表、選區三個層級展示最常見的權限設定方式。 @@ -43,196 +52,72 @@ await workbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, f 工作表和選區相關的權限設定可以透過 Facade API 或命令系統實現。這裡以工作表編輯權限舉例,其他功能只需替換權限點位,參考[權限點位列表 - 工作表](#worksheet-point)。 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // 建立工作表保護, 允許指定使用者編輯 - const permissionId = await worksheetPermission.protect({ - allowedUsers: ['user1', 'user2'], - name: 'My Worksheet Protection', - }) - - // 如果需要設定權限點位,必須先建立工作表保護 - await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddWorksheetProtectionMutation, getSheetCommandTarget, WorksheetEditPermission } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - - commandService.executeCommand(AddWorksheetProtectionMutation.id, { - unitId, - subUnitId, - rule: { - permissionId: '2sxcza1', - name: 'sheet', - unitType: 2, - unitId, - subUnitId, - }, - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - const permissionService = accessor.get(IPermissionService) - permissionService.updatePermissionPoint(new WorksheetEditPermission(unitId, subUnitId).id, false) - ``` - - +// 建立工作表保護, 允許指定使用者編輯 +const permissionId = await worksheetPermission.protect({ + allowedUsers: ['user1', 'user2'], + name: 'My Worksheet Protection', +}) -參數說明: -- `permissionId`:你生成的唯一 Id,用於儲存權限。 -- `unitType`:工作表型別,可使用倉庫中的 `UnitObject` 列舉替代魔法數。 -- `unitId`:工作簿 id。 -- `subUnitId`:工作表 id。 +// 如果需要設定權限點位,必須先建立工作表保護 +await worksheetPermission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) +``` #### 刪除工作表權限 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const worksheetPermission = fWorksheet.getWorksheetPermission() - - // 刪除工作表保護 - await worksheetPermission.unprotect() - ``` - - - ```typescript - import { DeleteWorksheetProtectionMutation } from '@univerjs/sheets' // [!code ++] +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const worksheetPermission = fWorksheet.getWorksheetPermission() - commandService.executeCommand(DeleteWorksheetProtectionMutation.id, { - unitId, - subUnitId, - }) - ``` - - +// 刪除工作表保護 +await worksheetPermission.unprotect() +``` ### 自訂選區權限程式碼示例 選區的權限同樣支援 API 和命令模式。這裡以選區編輯權限舉例,其他選區功能只需替換權限點位,參考[權限點位列表 - 選區](#range-point)。 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() - - // 設定區域保護權限,允許指定使用者編輯但不允許他人檢視 - const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], - }) - console.log(rule) - - // 如果需要設定權限點位,必須先建立區域保護 - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) - await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) - ``` - - - ```typescript - import { ICommandService, IPermissionService, IUniverInstanceService } from '@univerjs/core' - import { AddRangeProtectionMutation, getSheetCommandTarget, RangeProtectionPermissionEditPoint } from '@univerjs/sheets' - - const accessor = univer.__getInjector() - const commandService = accessor.get(ICommandService) - const univerInstanceService = accessor.get(IUniverInstanceService) - - const target = getSheetCommandTarget(univerInstanceService) - if (!target) { - return - } - - const { unitId, subUnitId } = target - const ranges = [ - { - startRow: 0, - startColumn: 0, - endRow: 2, - endColumn: 1, - }, - { - startRow: 3, - startColumn: 2, - endRow: 4, - endColumn: 3, - }, - ] - - commandService.executeCommand(AddRangeProtectionMutation.id, { - unitId, - subUnitId, - rules: [{ - permissionId: '3xtfxG1', - name: 'sheet1', - unitType: 3, - unitId, - subUnitId, - ranges, - id: 'rule1', - }], - }) +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - const permissionService = accessor.get(IPermissionService) - // 這裡 RangeProtectionPermissionEditPoint 的第三個參數就是上面生成的 permissionId,false 表示不可編輯 - permissionService.updatePermissionPoint(new RangeProtectionPermissionEditPoint(unitId, subUnitId, '3xtfxG1').id, false) - ``` - - +// 設定區域保護權限,允許指定使用者編輯但不允許他人檢視 +const rule = await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], +}) +console.log(rule) -參數說明: -- `ranges`:要設定權限的區域陣列。 -- `id`:規則的唯一 id,用於刪除該規則。 -- 其餘參數含義與上方工作表示例一致。 +// 如果需要設定權限點位,必須先建立區域保護 +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) +await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +``` #### 刪除區域保護權限 - - - ```typescript - const fWorkbook = univerAPI.getActiveWorkbook() - const fWorksheet = fWorkbook.getActiveSheet() - const fRange = fWorksheet.getRange('A1:B2') - const rangePermission = fRange.getRangePermission() +```typescript +const fWorkbook = univerAPI.getActiveWorkbook() +const fWorksheet = fWorkbook.getActiveSheet() +const fRange = fWorksheet.getRange('A1:B2') +const rangePermission = fRange.getRangePermission() - // 刪除區域保護 - await rangePermission.unprotect() - ``` - - - ```typescript - import { DeleteRangeProtectionMutation } from '@univerjs/sheets' // [!code ++] +// 刪除區域内所有保護規則 +await rangePermission.unprotect() - commandService.executeCommand(DeleteRangeProtectionMutation.id, { - unitId, - subUnitId, - ruleIds: ['rule1'], - }) - ``` - - +// 或刪除區域内指定規則 +const rules = await rangePermission.listRules() +if (rules.length > 0) { + await rules[0].remove() +} +``` ## 拓展使用 @@ -266,7 +151,8 @@ class YourService { ```typescript import type { IPermissionPoint } from '@univerjs/core' -import { IPermissionService } from '@univerjs/core' +import { IPermissionService, PermissionStatus } from '@univerjs/core' +import { UnitAction, UnitObject } from '@univerjs/protocol' export class CustomPermissionPoint implements IPermissionPoint { type = UnitObject.Unkonwn // your type @@ -779,21 +665,6 @@ console.log('Workbook permission snapshot:', snapshot) - `FWorkbookPermission.canEdit()`:檢查工作簿是否可編輯 -#### 訂閱工作簿權限點位變化 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const workbookPermission = fWorkbook.getWorkbookPermission() - -// 訂閱工作簿權限點位變化 -const unsubscribe = workbookPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// 取消訂閱 -unsubscribe() -``` - #### 協作者管理 @@ -894,34 +765,6 @@ if (isProtected) { } ``` -#### 範圍保護 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// 設定多個保護範圍,A1:B2 不允許編輯但允許他人檢視,C3:D4 允許指定使用者編輯但不允許他人檢視 -const rules = await worksheetPermission.protectRanges([ - { - ranges: [fWorksheet.getRange('A1:B2')], - options: { name: 'Protected Area 1', allowEdit: false, allowViewByOthers: true }, - }, - { - ranges: [fWorksheet.getRange('C3:D4')], - options: { name: 'Protected Area 2', allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1'] }, - }, -]) -console.log(rules) - -// 獲取當前所有保護範圍規則 -const ruleList = await worksheetPermission.listRangeProtectionRules() -console.log(ruleList) - -// 取消第一個保護範圍 -await worksheetPermission.unprotectRules([ruleList[0].id]) -``` - #### 設定工作表權限點位 `WorksheetPermissionPoint` 列舉值列表請參考[權限點位列表-工作表](#worksheet-point)。 @@ -990,24 +833,10 @@ const snapshot = worksheetPermission.getSnapshot() - `FWorksheetPermission.canEdit(): boolean`:檢查工作表是否可編輯 - `FWorksheetPermission.canEditCell(row: number, col: number): boolean`:檢查指定單元格是否可編輯 +- `FWorksheetPermission.canView(): boolean`:檢查工作表是否可檢視 +- `FWorksheetPermission.canViewCell(row: number, col: number): boolean`:檢查指定單元格是否可檢視 - `FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo`:獲取指定單元格的權限除錯資訊 -#### 訂閱工作表權限點位變化 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const worksheetPermission = fWorksheet.getWorksheetPermission() - -// 訂閱工作表權限點位變化 -const unsubscribe = worksheetPermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// 取消訂閱 -unsubscribe() -``` - ### 選區級權限 #### 獲取選區權限例項 @@ -1019,34 +848,40 @@ const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() ``` -#### 設定區域保護權限 +#### 設定範圍保護 + +- 透過工作表級權限設定範圍保護: ```typescript const fWorkbook = univerAPI.getActiveWorkbook() const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() - -// 設定區域保護權限,允許指定使用者編輯但不允許他人檢視 -const rule = await rangePermission.protect({ - name: 'My protected range', - allowEdit: true, - allowViewByOthers: false, - allowedUsers: ['user1', 'user2'], -}) -console.log(rule) +const worksheetPermission = fWorksheet.getWorksheetPermission() -// 獲取當前區域保護規則 -const rules = await rangePermission.listRules() +// 設定多個保護範圍,A1:B2 不允許編輯但允許他人檢視,C3:D4 允許指定使用者編輯但不允許他人檢視 +const rules = await worksheetPermission.protectRanges([ + { + ranges: [fWorksheet.getRange('A1:B2')], + options: { name: 'Protected Area 1', allowViewByOthers: true }, + }, + { + ranges: [fWorksheet.getRange('C3:D4')], + options: { name: 'Protected Area 2', allowViewByOthers: false, allowedUsers: ['user1'] }, + }, +]) console.log(rules) -// 取消區域保護 -await rangePermission.unprotect() -``` +// 獲取當前工作表所有保護範圍規則 +const ruleList = await worksheetPermission.listRangeProtectionRules() +console.log(ruleList) -#### 設定選區權限點位 +// 删除第一個保護範圍規則 +await worksheetPermission.unprotectRules([ruleList[0].id]) -`RangePermissionPoint` 列舉值列表請參考[權限點位列表-區域保護](#range-point)。 +// 或透過 `FRangePermission.unprotect()` 删除保護規則 +await ruleList[0].remove() +``` + +- 透過選區級權限設定範圍保護: ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1054,43 +889,28 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// 如果需要設定權限點位,必須先建立區域保護 -await rangePermission.protect({ +// 設定範圍保護,允許指定使用者編輯但不允許他人檢視 +const rule = await rangePermission.protect({ name: 'My protected range', - allowEdit: true, allowViewByOthers: false, allowedUsers: ['user1', 'user2'], }) +console.log(rule) -// 設定 A1:B2 選區的編輯權限為不可用,檢視權限為可用 -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) -await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) -``` - -#### 獲取選區權限點位狀態 - -```typescript -const fWorkbook = univerAPI.getActiveWorkbook() -const fWorksheet = fWorkbook.getActiveSheet() -const fRange = fWorksheet.getRange('A1:B2') -const rangePermission = fRange.getRangePermission() +// 取得目前範圍內的所有保護規則 +const rules = await rangePermission.listRules() +console.log(rules) -// 獲取選區編輯權限狀態 -const canEdit = rangePermission.getPoint(univerAPI.Enum.RangePermissionPoint.Edit) -console.log(canEdit) +// 刪除目前範圍內的所有保護規則 +await rangePermission.unprotect() -// 獲取選區所有權限點位狀態 -const snapshot = rangePermission.getSnapshot() +// 或透過 `FRangePermission.unprotect()` 删除保護規則 +await rules[0].remove() ``` -使用快捷方法: - -- `FRangePermission.isProtected(): boolean`:檢查選區是否受保護 -- `FRangePermission.canEdit(): boolean`:檢查選區是否可編輯 -- `FRangePermission.canView(): boolean`:檢查選區是否可檢視 -- `FRangePermission.canDelete(): boolean`:檢查選區是否可刪除保護 +#### 設定選區權限點位 -#### 訂閱選區權限點位變化 +`RangePermissionPoint` 列舉值列表請參考[權限點位列表-區域保護](#range-point)。 ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1098,16 +918,44 @@ const fWorksheet = fWorkbook.getActiveSheet() const fRange = fWorksheet.getRange('A1:B2') const rangePermission = fRange.getRangePermission() -// 訂閱選區權限點位變化 -const unsubscribe = rangePermission.subscribe((snapshot) => { - console.log('Permission changed:', snapshot) -}) - -// 取消訂閱 -unsubscribe() +// 如果需要設定權限點位,必須先建立區域保護 +if (rangePermission.isProtected()) { + const rules = await rangePermission.listRules() + + // 設定第一個保護規則的編輯權限為不可用,檢視權限為可用 + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rules[0].setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} else { + await rangePermission.protect({ + name: 'My protected range', + allowViewByOthers: false, + allowedUsers: ['user1', 'user2'], + }) + + // 設定 A1:B2 選區的編輯權限為不可用,檢視權限為可用 + await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false) + await rangePermission.setPoint(univerAPI.Enum.RangePermissionPoint.View, true) +} ``` -### 權限保護規則 +### 範圍權限保護規則 + +以下是 `FRangeProtectionRule` 一些成員方法: + +| 方法 | 描述 | +| --- | --- | +| `id: string` | 保護規則的唯一標識符 | +| `permissionId: string` | 保護規則關聯的權限 ID | +| `ranges: FRange[]` | 保護規則作用的範圍列表 | +| `options: IRangeProtectionOptions` | 保護規則的選項配置 | +| `updateRanges(ranges: FRange[]): Promise` | 更新保護規則的範圍列表 | +| `remove(): Promise` | 刪除保護規則 | +| `setPoint(point: RangePermissionPoint, value: boolean): Promise` | 設定保護規則的權限點位值 | +| `getPoint(point: RangePermissionPoint): boolean` | 獲取保護規則的權限點位值 | +| `canEdit(): boolean` | 檢查保護規則是否允許編輯 | +| `canView(): boolean` | 檢查保護規則是否允許檢視 | +| `canDelete(): boolean` | 檢查保護規則是否允許刪除 | +| `getSnapshot(): RangePermissionSnapshot` | 獲取保護規則的快照資訊 | ```typescript const fWorkbook = univerAPI.getActiveWorkbook() @@ -1137,21 +985,180 @@ await rule?.remove() univerAPI.setPermissionDialogVisible(false) ``` -{/* ### 舊 API 遷移指南 - -| 功能 | 新 API 方法 | 舊 API 方法 | -| --- | --- | --- | -| 獲取權限例項 | 工作簿:`FWorkbook.getWorkbookPermission()`
工作表:`FWorksheet.getWorksheetPermission()`
選區:`FRange.getRangePermission()` | `FWorkbook.getPermission()` | -| 設定工作簿權限點位 | `FWorkbookPermission.setPoint(point: WorkbookPermissionPoint, value: boolean)` | `FPermission.setWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor, value: boolean)` | -| 獲取工作簿權限點位狀態 | `FWorkbookPermission.getPoint(point: WorkbookPermissionPoint): boolean` | `FPermission.checkWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor): boolean` | -| 設定工作簿編輯權限 | `FWorkbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, value: boolean)` | `FPermission.setWorkbookEditPermission(unitId: string, value: boolean)` | -| 設定工作表權限點位 | `FWorksheetPermission.setPoint(point: WorksheetPermissionPoint, value: boolean)` | `FPermission.setWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor, value: boolean)` | -| 獲取工作表權限點位狀態 | `FWorksheetPermission.getPoint(point: WorksheetPermissionPoint): boolean` | `FPermission.checkWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor): boolean` | -| 新增工作表保護 | `FWorksheetPermission.protect(options?: IWorksheetProtectionOptions)` | `FPermission.addWorksheetBasePermission(unitId: string, subUnitId: string)` | -| 刪除工作表保護 | `FWorksheetPermission.unprotect()` | `FPermission.removeWorksheetPermission(unitId: string, subUnitId: string)` | -| 設定選區權限點位 | `FRangePermission.setPoint(point: RangePermissionPoint, value: boolean)` | `FPermission.setRangeProtectionPermissionPoint(unitId: string, subUnitId: string, permissionId: string, FPointClass: RangePermissionPointConstructor, value: boolean)` | -| 設定區域保護權限 | 工作表:`FWorksheetPermission.protectRanges(configs)`
選區:`FRangePermission.protect(options?: IRangeProtectionOptions)` | `FPermission.addRangeBaseProtection(unitId: string, subUnitId: string, ranges: FRange[])` | -| 刪除區域保護權限 | 工作表:`FWorksheetPermission.unprotectRules(ruleIds: string[])`
選區:`FRangePermission.unprotect()` | `FPermission.removeRangeProtection(unitId: string, subUnitId: string, ruleIds: string[])` | -| 更新區域保護權限範圍 | `FRangeProtectionRule.updateRanges(ranges: FRange[])` | `FPermission.setRangeProtectionRanges(unitId: string, subUnitId: string, ruleId: string, ranges: FRange[])` | -| 獲取指定單元格權限資訊 | `FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo` | `FPermission.getPermissionInfoWithCell(unitId: string, subUnitId: string, row: number, column: number)` | -| 去除權限彈窗 | `univerAPI.setPermissionDialogVisible(false)` | `FPermission.setPermissionDialogVisible(false)` | */} +### 舊 API 遷移指南 + + + + + 舊 API: +
+ FWorkbook.getPermission() +
+ + 新 API: +
+
工作簿:FWorkbook.getWorkbookPermission()
+
工作表:FWorksheet.getWorksheetPermission()
+
選區:FRange.getRangePermission()
+
+
+ + + 舊 API: +
+ FPermission.setWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor, value: boolean) +
+ + 新 API: +
+ FWorkbookPermission.setPoint(point: WorkbookPermissionPoint, value: boolean) +
+
+ + + 舊 API: +
+ FPermission.checkWorkbookPermissionPoint(unitId: string, FPointClass: WorkbookPermissionPointConstructor): boolean +
+ + 新 API: +
+ FWorkbookPermission.getPoint(point: WorkbookPermissionPoint): boolean +
+
+ + + 舊 API: +
+ FPermission.setWorkbookEditPermission(unitId: string, value: boolean) +
+ + 新 API: +
+ FWorkbookPermission.setPoint(univerAPI.Enum.WorkbookPermissionPoint.Edit, value: boolean) +
+
+ + + 舊 API: +
+ FPermission.addWorksheetBasePermission(unitId: string, subUnitId: string) +
+ + 新 API: +
+ FWorksheetPermission.protect(options?: IWorksheetProtectionOptions) +
+
+ + + 舊 API: +
+ FPermission.removeWorksheetPermission(unitId: string, subUnitId: string) +
+ + 新 API: +
+ FWorksheetPermission.unprotect() +
+
+ + + 舊 API: +
+ FPermission.setWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor, value: boolean) +
+ + 新 API: +
+ FWorksheetPermission.setPoint(point: WorksheetPermissionPoint, value: boolean) +
+
+ + + 舊 API: +
+ FPermission.checkWorksheetPermissionPoint(unitId: string, subUnitId: string, FPointClass: WorkSheetPermissionPointConstructor): boolean +
+ + 新 API: +
+ FWorksheetPermission.getPoint(point: WorksheetPermissionPoint): boolean +
+
+ + + 舊 API: +
+ FPermission.getPermissionInfoWithCell(unitId: string, subUnitId: string, row: number, column: number) +
+ + 新 API: +
+ FWorksheetPermission.debugCellPermission(row: number, col: number): ICellPermissionDebugInfo +
+
+ + + 舊 API: +
+ FPermission.addRangeBaseProtection(unitId: string, subUnitId: string, ranges: FRange[]) +
+ + 新 API: +
+
工作表:FWorksheetPermission.protectRanges(configs)
+
選區:FRangePermission.protect(options?: IRangeProtectionOptions)
+
+
+ + + 舊 API: +
+ FPermission.removeRangeProtection(unitId: string, subUnitId: string, ruleIds: string[]) +
+ + 新 API: +
+
工作表:FWorksheetPermission.unprotectRules(ruleIds: string[])
+
選區:FRangePermission.unprotect()
+
范围保护规则:FRangeProtectionRule.remove()
+
+
+ + + 舊 API: +
+ FPermission.setRangeProtectionPermissionPoint(unitId: string, subUnitId: string, permissionId: string, FPointClass: RangePermissionPointConstructor, value: boolean) +
+ + 新 API: +
+ FRangeProtectionRule.setPoint(point: RangePermissionPoint, value: boolean) +
+
+ + + 舊 API: +
+ FPermission.setRangeProtectionRanges(unitId: string, subUnitId: string, ruleId: string, ranges: FRange[]) +
+ + 新 API: +
+ FRangeProtectionRule.updateRanges(ranges: FRange[]) +
+
+ + + 舊 API: +
+ FPermission.setPermissionDialogVisible(false) +
+ + 新 API: +
+ univerAPI.setPermissionDialogVisible(false) +
+
+
diff --git a/content/guides/sheets/features/core/worker.ja-JP.mdx b/content/guides/sheets/features/core/worker.ja-JP.mdx index d295e410..d5642771 100644 --- a/content/guides/sheets/features/core/worker.ja-JP.mdx +++ b/content/guides/sheets/features/core/worker.ja-JP.mdx @@ -101,7 +101,7 @@ const { univerAPI } = createUniver({ }), UniverSheetsAdvancedPreset({ useWorker: true, - // 無制限の商用機能を利用したい場合は https://univer.ai/license から 30 日間のトライアルライセンスを取得できます + // 無制限の商用機能を利用したい場合は https://pro.univer.ai/license から 30 日間のトライアルライセンスを取得できます license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), UniverSheetsCollaborationPreset({ @@ -129,7 +129,7 @@ createUniver({ presets: [ UniverSheetsCoreWorkerPreset(), UniverSheetsAdvancedWorkerPreset({ - // 無制限の商用機能を利用したい場合は https://univer.ai/license から 30 日間のトライアルライセンスを取得できます + // 無制限の商用機能を利用したい場合は https://pro.univer.ai/license から 30 日間のトライアルライセンスを取得できます license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), ], diff --git a/content/guides/sheets/features/core/worker.mdx b/content/guides/sheets/features/core/worker.mdx index f004f321..9cc1d3eb 100644 --- a/content/guides/sheets/features/core/worker.mdx +++ b/content/guides/sheets/features/core/worker.mdx @@ -101,7 +101,7 @@ const { univerAPI } = createUniver({ }), UniverSheetsAdvancedPreset({ useWorker: true, - // If you want to use the unlimited commercial features, you can get a 30-day trial license from https://univer.ai/license + // If you want to use the unlimited commercial features, you can get a 30-day trial license from https://pro.univer.ai/license license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), UniverSheetsCollaborationPreset({ @@ -129,7 +129,7 @@ createUniver({ presets: [ UniverSheetsCoreWorkerPreset(), UniverSheetsAdvancedWorkerPreset({ - // If you want to use the unlimited commercial features, you can get a 30-day trial license from https://univer.ai/license + // If you want to use the unlimited commercial features, you can get a 30-day trial license from https://pro.univer.ai/license license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), ], diff --git a/content/guides/sheets/features/core/worker.zh-CN.mdx b/content/guides/sheets/features/core/worker.zh-CN.mdx index d0c1fb67..60582932 100644 --- a/content/guides/sheets/features/core/worker.zh-CN.mdx +++ b/content/guides/sheets/features/core/worker.zh-CN.mdx @@ -101,7 +101,7 @@ const { univerAPI } = createUniver({ }), UniverSheetsAdvancedPreset({ useWorker: true, - // 如果你想使用无限制商业功能,可以从 https://univer.ai/license 获取 30 天试用许可证 + // 如果你想使用无限制商业功能,可以从 https://pro.univer.ai/license 获取 30 天试用许可证 license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), UniverSheetsCollaborationPreset({ @@ -129,7 +129,7 @@ createUniver({ presets: [ UniverSheetsCoreWorkerPreset(), UniverSheetsAdvancedWorkerPreset({ - // 如果你想使用无限制商业功能,可以从 https://univer.ai/license 获取 30 天试用许可证 + // 如果你想使用无限制商业功能,可以从 https://pro.univer.ai/license 获取 30 天试用许可证 license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), ], diff --git a/content/guides/sheets/features/core/worker.zh-TW.mdx b/content/guides/sheets/features/core/worker.zh-TW.mdx index 48f0a394..b97f09c8 100644 --- a/content/guides/sheets/features/core/worker.zh-TW.mdx +++ b/content/guides/sheets/features/core/worker.zh-TW.mdx @@ -101,7 +101,7 @@ const { univerAPI } = createUniver({ }), UniverSheetsAdvancedPreset({ useWorker: true, - // 如果你想使用無限制商業功能,可以從 https://univer.ai/license 獲取 30 天試用許可證 + // 如果你想使用無限制商業功能,可以從 https://pro.univer.ai/license 獲取 30 天試用許可證 license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), UniverSheetsCollaborationPreset({ @@ -129,7 +129,7 @@ createUniver({ presets: [ UniverSheetsCoreWorkerPreset(), UniverSheetsAdvancedWorkerPreset({ - // 如果你想使用無限制商業功能,可以從 https://univer.ai/license 獲取 30 天試用許可證 + // 如果你想使用無限制商業功能,可以從 https://pro.univer.ai/license 獲取 30 天試用許可證 license: process.env.UNIVER_CLIENT_LICENSE || 'your license.txt', }), ], diff --git a/examples/univer-angular/package.json b/examples/univer-angular/package.json index ba7d613d..23084dbb 100644 --- a/examples/univer-angular/package.json +++ b/examples/univer-angular/package.json @@ -23,8 +23,8 @@ "@angular/compiler": "^21.1.1", "@angular/core": "^21.1.1", "@angular/platform-browser": "^21.1.1", - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/presets": "^0.20.1", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/presets": "^0.21.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "^0.16.0" diff --git a/examples/univer-astro/package.json b/examples/univer-astro/package.json index 23d16e6c..7134a107 100644 --- a/examples/univer-astro/package.json +++ b/examples/univer-astro/package.json @@ -10,8 +10,8 @@ "astro": "astro" }, "dependencies": { - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/presets": "^0.20.1", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/presets": "^0.21.0", "astro": "^5.16.15" } } diff --git a/examples/univer-nextjs/package.json b/examples/univer-nextjs/package.json index 9313204d..31c1f19a 100644 --- a/examples/univer-nextjs/package.json +++ b/examples/univer-nextjs/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/presets": "^0.20.1", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/presets": "^0.21.0", "next": "16.1.4", "react": "19.2.3", "react-dom": "19.2.3" diff --git a/examples/univer-react/package.json b/examples/univer-react/package.json index 603d08b1..12c3a78e 100644 --- a/examples/univer-react/package.json +++ b/examples/univer-react/package.json @@ -9,8 +9,8 @@ "preview": "vite preview" }, "dependencies": { - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/presets": "^0.20.1", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/presets": "^0.21.0", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/univer-vue2/package.json b/examples/univer-vue2/package.json index b26fe507..0dda19dd 100644 --- a/examples/univer-vue2/package.json +++ b/examples/univer-vue2/package.json @@ -7,8 +7,8 @@ "build": "vue-cli-service build" }, "dependencies": { - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/presets": "^0.20.1", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/presets": "^0.21.0", "core-js": "^3.48.0", "vue": "2.7.16" }, diff --git a/examples/univer-vue3/package.json b/examples/univer-vue3/package.json index 4dcd0240..64f566aa 100644 --- a/examples/univer-vue3/package.json +++ b/examples/univer-vue3/package.json @@ -9,8 +9,8 @@ "preview": "vite preview" }, "dependencies": { - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/presets": "^0.20.1", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/presets": "^0.21.0", "vue": "^3.5.27" }, "devDependencies": { diff --git a/package.json b/package.json index 64c726e8..0d602fbd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "univer-documentation", - "version": "0.20.1", + "version": "0.21.0", "private": true, "packageManager": "pnpm@10.33.0", "author": "DreamNum Co., Ltd. ", @@ -32,70 +32,70 @@ "@radix-ui/react-switch": "^1.2.6", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-tooltip": "^1.2.8", - "@univerjs-pro/collaboration-client": "^0.20.1", - "@univerjs-pro/collaboration-client-ui": "^0.20.1", - "@univerjs-pro/engine-shape": "^0.20.1", - "@univerjs-pro/exchange-client": "^0.20.1", - "@univerjs-pro/sheets-chart": "^0.20.1", - "@univerjs-pro/sheets-chart-ui": "^0.20.1", - "@univerjs-pro/sheets-pivot": "^0.20.1", - "@univerjs-pro/sheets-pivot-ui": "^0.20.1", - "@univerjs-pro/sheets-print": "^0.20.1", - "@univerjs-pro/sheets-shape": "^0.20.1", - "@univerjs-pro/sheets-shape-ui": "^0.20.1", - "@univerjs-pro/sheets-sparkline": "^0.20.1", - "@univerjs-pro/sheets-sparkline-ui": "^0.20.1", - "@univerjs/core": "^0.20.1", - "@univerjs/design": "^0.20.1", - "@univerjs/docs": "^0.20.1", - "@univerjs/docs-ui": "^0.20.1", - "@univerjs/drawing": "^0.20.1", - "@univerjs/engine-formula": "^0.20.1", - "@univerjs/engine-render": "^0.20.1", - "@univerjs/find-replace": "^0.20.1", + "@univerjs-pro/collaboration-client": "^0.21.0", + "@univerjs-pro/collaboration-client-ui": "^0.21.0", + "@univerjs-pro/engine-shape": "^0.21.0", + "@univerjs-pro/exchange-client": "^0.21.0", + "@univerjs-pro/sheets-chart": "^0.21.0", + "@univerjs-pro/sheets-chart-ui": "^0.21.0", + "@univerjs-pro/sheets-pivot": "^0.21.0", + "@univerjs-pro/sheets-pivot-ui": "^0.21.0", + "@univerjs-pro/sheets-print": "^0.21.0", + "@univerjs-pro/sheets-shape": "^0.21.0", + "@univerjs-pro/sheets-shape-ui": "^0.21.0", + "@univerjs-pro/sheets-sparkline": "^0.21.0", + "@univerjs-pro/sheets-sparkline-ui": "^0.21.0", + "@univerjs/core": "^0.21.0", + "@univerjs/design": "^0.21.0", + "@univerjs/docs": "^0.21.0", + "@univerjs/docs-ui": "^0.21.0", + "@univerjs/drawing": "^0.21.0", + "@univerjs/engine-formula": "^0.21.0", + "@univerjs/engine-render": "^0.21.0", + "@univerjs/find-replace": "^0.21.0", "@univerjs/icons": "^1.1.1", - "@univerjs/preset-docs-advanced": "^0.20.1", - "@univerjs/preset-docs-core": "^0.20.1", - "@univerjs/preset-sheets-advanced": "^0.20.1", - "@univerjs/preset-sheets-conditional-formatting": "^0.20.1", - "@univerjs/preset-sheets-core": "^0.20.1", - "@univerjs/preset-sheets-data-validation": "^0.20.1", - "@univerjs/preset-sheets-drawing": "^0.20.1", - "@univerjs/preset-sheets-filter": "^0.20.1", - "@univerjs/preset-sheets-find-replace": "^0.20.1", - "@univerjs/preset-sheets-hyper-link": "^0.20.1", - "@univerjs/preset-sheets-node-core": "^0.20.1", - "@univerjs/preset-sheets-note": "^0.20.1", - "@univerjs/preset-sheets-sort": "^0.20.1", - "@univerjs/preset-sheets-thread-comment": "^0.20.1", - "@univerjs/presets": "^0.20.1", - "@univerjs/sheets": "^0.20.1", - "@univerjs/sheets-conditional-formatting-ui": "^0.20.1", - "@univerjs/sheets-crosshair-highlight": "^0.20.1", - "@univerjs/sheets-data-validation": "^0.20.1", - "@univerjs/sheets-data-validation-ui": "^0.20.1", - "@univerjs/sheets-filter-ui": "^0.20.1", - "@univerjs/sheets-find-replace": "^0.20.1", - "@univerjs/sheets-formula": "^0.20.1", - "@univerjs/sheets-formula-ui": "^0.20.1", - "@univerjs/sheets-hyper-link": "^0.20.1", - "@univerjs/sheets-hyper-link-ui": "^0.20.1", - "@univerjs/sheets-note-ui": "^0.20.1", - "@univerjs/sheets-numfmt": "^0.20.1", - "@univerjs/sheets-numfmt-ui": "^0.20.1", - "@univerjs/sheets-sort": "^0.20.1", - "@univerjs/sheets-sort-ui": "^0.20.1", - "@univerjs/sheets-table": "^0.20.1", - "@univerjs/sheets-table-ui": "^0.20.1", - "@univerjs/sheets-thread-comment-ui": "^0.20.1", - "@univerjs/sheets-ui": "^0.20.1", - "@univerjs/sheets-zen-editor": "^0.20.1", - "@univerjs/slides": "^0.20.1", - "@univerjs/slides-ui": "^0.20.1", - "@univerjs/themes": "^0.20.1", - "@univerjs/thread-comment-ui": "^0.20.1", - "@univerjs/ui": "^0.20.1", - "@univerjs/watermark": "^0.20.1", + "@univerjs/preset-docs-advanced": "^0.21.0", + "@univerjs/preset-docs-core": "^0.21.0", + "@univerjs/preset-sheets-advanced": "^0.21.0", + "@univerjs/preset-sheets-conditional-formatting": "^0.21.0", + "@univerjs/preset-sheets-core": "^0.21.0", + "@univerjs/preset-sheets-data-validation": "^0.21.0", + "@univerjs/preset-sheets-drawing": "^0.21.0", + "@univerjs/preset-sheets-filter": "^0.21.0", + "@univerjs/preset-sheets-find-replace": "^0.21.0", + "@univerjs/preset-sheets-hyper-link": "^0.21.0", + "@univerjs/preset-sheets-node-core": "^0.21.0", + "@univerjs/preset-sheets-note": "^0.21.0", + "@univerjs/preset-sheets-sort": "^0.21.0", + "@univerjs/preset-sheets-thread-comment": "^0.21.0", + "@univerjs/presets": "^0.21.0", + "@univerjs/sheets": "^0.21.0", + "@univerjs/sheets-conditional-formatting-ui": "^0.21.0", + "@univerjs/sheets-crosshair-highlight": "^0.21.0", + "@univerjs/sheets-data-validation": "^0.21.0", + "@univerjs/sheets-data-validation-ui": "^0.21.0", + "@univerjs/sheets-filter-ui": "^0.21.0", + "@univerjs/sheets-find-replace": "^0.21.0", + "@univerjs/sheets-formula": "^0.21.0", + "@univerjs/sheets-formula-ui": "^0.21.0", + "@univerjs/sheets-hyper-link": "^0.21.0", + "@univerjs/sheets-hyper-link-ui": "^0.21.0", + "@univerjs/sheets-note-ui": "^0.21.0", + "@univerjs/sheets-numfmt": "^0.21.0", + "@univerjs/sheets-numfmt-ui": "^0.21.0", + "@univerjs/sheets-sort": "^0.21.0", + "@univerjs/sheets-sort-ui": "^0.21.0", + "@univerjs/sheets-table": "^0.21.0", + "@univerjs/sheets-table-ui": "^0.21.0", + "@univerjs/sheets-thread-comment-ui": "^0.21.0", + "@univerjs/sheets-ui": "^0.21.0", + "@univerjs/sheets-zen-editor": "^0.21.0", + "@univerjs/slides": "^0.21.0", + "@univerjs/slides-ui": "^0.21.0", + "@univerjs/themes": "^0.21.0", + "@univerjs/thread-comment-ui": "^0.21.0", + "@univerjs/ui": "^0.21.0", + "@univerjs/watermark": "^0.21.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "color": "^5.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c157f64..b1a6c709 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,197 +51,197 @@ importers: specifier: ^1.2.8 version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@univerjs-pro/collaboration-client': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/collaboration-client-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/engine-shape': - specifier: ^0.20.1 - version: 0.20.1 + specifier: ^0.21.0 + version: 0.21.0 '@univerjs-pro/exchange-client': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-chart': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-chart-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-pivot': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-pivot-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-print': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-shape': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-shape-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-sparkline': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs-pro/sheets-sparkline-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/core': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/design': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@univerjs/docs': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/docs-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/drawing': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/engine-formula': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/engine-render': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/find-replace': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': specifier: ^1.1.1 version: 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@univerjs/preset-docs-advanced': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-docs-core': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-advanced': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-conditional-formatting': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-core': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-data-validation': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-drawing': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-filter': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-find-replace': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-hyper-link': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-node-core': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-note': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-sort': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/preset-sheets-thread-comment': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/presets': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-conditional-formatting-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-crosshair-highlight': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-data-validation': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-data-validation-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-filter-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-find-replace': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-formula': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-formula-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-hyper-link': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-hyper-link-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-note-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-numfmt': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-numfmt-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-sort': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-sort-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-table': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-table-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-thread-comment-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/sheets-zen-editor': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/slides': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/slides-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/themes': - specifier: ^0.20.1 - version: 0.20.1 + specifier: ^0.21.0 + version: 0.21.0 '@univerjs/thread-comment-ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/ui': - specifier: ^0.20.1 - version: 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/watermark': - specifier: ^0.20.1 - version: 0.20.1(react@19.2.5)(rxjs@7.8.2) + specifier: ^0.21.0 + version: 0.21.0(react@19.2.5)(rxjs@7.8.2) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -1000,6 +1000,15 @@ packages: tailwindcss: optional: true + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.8.0': + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} + engines: {node: '>=6'} + hasBin: true + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1209,6 +1218,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@lezer/common@1.4.0': resolution: {integrity: sha512-DVeMRoGrgn/k45oQNu189BoW4SZwgZFzJ1+1TV5j2NJ/KFC83oa/enRqZSGshyeMk5cPWMhsKs9nx+8o0unwGg==} @@ -1305,6 +1317,10 @@ packages: cpu: [x64] os: [win32] + '@noble/ciphers@2.2.0': + resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==} + engines: {node: '>= 20.19.0'} + '@noble/ed25519@2.3.0': resolution: {integrity: sha512-M7dvXL2B92/M7dw9+gzuydL8qn/jiqNHaoR3Q+cb1q1GHV7uwE17WCyFMG+Y+TZb5izcaXk5TdJRrDUxHXL78A==} @@ -1623,6 +1639,36 @@ packages: '@posthog/core@1.25.2': resolution: {integrity: sha512-h2FO7ut/BbfwpAXWpwdDHTzQgUo9ibDFEs6ZO+3cI3KPWQt5XwczK1OLAuPprcjm8T/jl0SH8jSFo5XdU4RbTg==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -2745,199 +2791,199 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@univerjs-pro/collaboration-client-ui@0.20.1': - resolution: {integrity: sha512-uPwtmx+/smG/Vcu7tfktNeSMdP6tY1l+o0lsaCJBe5pSaooDEQI6qe8qCX2Ndt7Ij11w/kleKHF3mcQHL2HNbA==} + '@univerjs-pro/collaboration-client-ui@0.21.0': + resolution: {integrity: sha512-n0Zl0p1uaBmYW7NaIxkPegVRBYTJN0lRCddp1Tj0EhZCFmYMkEgvIJqIglHL90WoGsFkdFZs95CebBBBML2Ojg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/collaboration-client@0.20.1': - resolution: {integrity: sha512-nZTtXLtR8mh556HgkHINxVfxZVO72YsN8hIAqgoVJeJFsAavcEypQ+ohlXvuIL9hxGo/Q3YJBnHZmgJmoZGfuA==} + '@univerjs-pro/collaboration-client@0.21.0': + resolution: {integrity: sha512-v3MRhxhwBDf8b+f6cuYR3tqWQdtyligHzxKc5Ux4sDSb1qtm3jDK3S7FzxNFwbKIh+1zUz+p4Qzx3mSFvlpYkA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/collaboration@0.20.1': - resolution: {integrity: sha512-e6DupTLljB2VrQU0qiZI6CeMF3q4/PnBx5pxebsr5EmnJb7z4mZEmFijqccrdX148b7FlfWTmoEF9jEbKvkV/w==} + '@univerjs-pro/collaboration@0.21.0': + resolution: {integrity: sha512-PnWdeWqjXz5uvb6xa55sg0XhuwXHa6/4MUJL2FM57UoY0vvbJHsrfoDexHKDhFAJSr/uHJC6EgMf3Ynire4G5g==} - '@univerjs-pro/docs-exchange-client@0.20.1': - resolution: {integrity: sha512-wAguVjCF5PjpH7AAzrtjRv6Trnxy16iO5cMrlvV5C9ao09LWiz+QGdsDkLGXNqnVX3vSvGzalPquOJD889c10g==} + '@univerjs-pro/docs-exchange-client@0.21.0': + resolution: {integrity: sha512-rWTggO7i0pGHbh5YJHvjII75FMNrzjuig1TGm7lihA9oBlw2TyYKMMrcmGSLv6OD6GFpxDG68Rdx2huZ9tfgMw==} - '@univerjs-pro/docs-print@0.20.1': - resolution: {integrity: sha512-eDBwg/tksTgCsrnX4ylI9WPSXEoylFSSeC4URE8HE9eoypzZcgAVNCgYM++lBR5w6jJl8W78vH6/DnyroAlfRA==} + '@univerjs-pro/docs-print@0.21.0': + resolution: {integrity: sha512-ImPMLEQA5G67qoS60/4Eivo3kQRWtjQblO4PkVS3tlmrMx9t9kyT417VO4bnqJeMyO8HqDCWIDwvg4IwOPqhng==} - '@univerjs-pro/edit-history-loader@0.20.1': - resolution: {integrity: sha512-aIdbPguBNlhcKDWYqESD+XH6qq7VI2iWUhnFEZFe/aVRulJ7cesu2jOt6VrFNxOrEJQ7hdfj9LqKMnOgycS0Kg==} + '@univerjs-pro/edit-history-loader@0.21.0': + resolution: {integrity: sha512-iQJJ7b+mbnDc7B3BPioroC1/a4E2yPERHmLPYpO4G5HEajXC73G6djmlpjFChtAeevyXZ0NIMm5jL5x+frdOHg==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/edit-history-viewer@0.20.1': - resolution: {integrity: sha512-nNS75RTZnqm4LREcj/pm9Bi3F+0wSltStfD+JOtwGxROQfAKDVt2d4xL7zMu0dEYKUee9U9LfD1tC5/cHL/I7w==} + '@univerjs-pro/edit-history-viewer@0.21.0': + resolution: {integrity: sha512-dmm6RzCB3rRV4sCVeWhb5rf1ZyN37ZCoqizZXU7nRZNDZD/DTQPruf+bXBqmEO5/z1V/Y9SnXZf+Zux5T9LfdQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/engine-chart@0.20.1': - resolution: {integrity: sha512-YuX+iVKNcWWbAsV8bGsSzGEQpXvweSwRXLpXzQl7T51eoine/UoBfGuuwWVUDM2mKh+yh9vAJxjewXEzdx129Q==} + '@univerjs-pro/engine-chart@0.21.0': + resolution: {integrity: sha512-PZoIRlbMoKIvWRYqf63BxrWyPtE8N4P35lOxnttQsggoW66ydOwiuiBHeSFJel0OVNJJYiFs9Sd+NExnYrnS9A==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/engine-formula@0.20.1': - resolution: {integrity: sha512-2A90/aox3oBhX8uUwtPRULkKlE0LoimN8Gy59inY1gvuPddsys9OdBBCiuouxlOdGCCypZB/15G6L4NlQrfI/Q==} + '@univerjs-pro/engine-formula@0.21.0': + resolution: {integrity: sha512-6KZ1jhjv4FY8x1mjDIuYc1a1kEkjkmKX52r020AKG+BVDCkTYEOPhFSwjPig5etba+eceO5HLfsmciUN9cESwQ==} - '@univerjs-pro/engine-pivot@0.20.1': - resolution: {integrity: sha512-sULQneX4oAZwr/VlCoeFfvMjPww6mDMXuL5YsqZqQUh/0/hWjXj/XdWOxLh/RBuHeTd52s5NBiVXGoueqCynFQ==} + '@univerjs-pro/engine-pivot@0.21.0': + resolution: {integrity: sha512-4sAMFRCjRwN+Obi9GQ963vap6ZhXLWP7uz94hUWfOEFFPkn4RyaPnxy9khrNesYoFymx/aNOm9AyUKdf1ptF5A==} - '@univerjs-pro/engine-shape@0.20.1': - resolution: {integrity: sha512-XHQZzSBZf+gko9q8gfKg8VXZbndX8/02MqxAbqyGlJzDafBlSQ+o/R/D5C73bpH7EEx7+VVX0EZt+MossG/n1Q==} + '@univerjs-pro/engine-shape@0.21.0': + resolution: {integrity: sha512-LmQmg3VlA2sjzz/2uq7n1d7wMD0yj5MnOFkBrKWKSUTTCMKMT30qHNckvvR/GDxuKLu9LX4QI7ZFN1H9Gj385g==} - '@univerjs-pro/exchange-client@0.20.1': - resolution: {integrity: sha512-N2iPiGk+DLQyORd/uEPJ9lYrBu7unAVIOCqgQmiDKInyj1MXEdaagB2qsoC5b6ZvO7sjevRosdtHC1lYWbDivA==} + '@univerjs-pro/exchange-client@0.21.0': + resolution: {integrity: sha512-moKMYcqrEnvxu7ZPUKffI6bjJUCrt5JgLiWqIdoqDgS0dttep+ZU0yH2dLJL6LUy5cS5+owuMifZmWj3H4t26A==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/license@0.20.1': - resolution: {integrity: sha512-4sRYBA9PH1WnlDaLq1nh7W8q+5gHxkIkjjoMgeXrUK3JSJtLb+BeCR+AmMV5u6eKWwLVtB5ZpSjBFDvzILX0mg==} + '@univerjs-pro/license@0.21.0': + resolution: {integrity: sha512-X09+dAius+S83jDpv7IV0NrYr5I8C+67h1Msk0gRImG3W2kl1gA/Gg7ZMY1H9PbMRewiWKbvyGvUvpazr8FJdw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/print@0.20.1': - resolution: {integrity: sha512-OgS9YkqGe45z7/yFbq+bcp9br4gQxFb/XARrCGU1cdDB8MpSHm+5R0n7XXhz3YkFThPhZMh62FsLkkXagjlaRw==} + '@univerjs-pro/print@0.21.0': + resolution: {integrity: sha512-6jmElf1M7Lna5l/cCBxCsZ0664Ujbv2ioXcFovIMLoFktYtsNMbDgsmw7emwfgab5po2Pgelvat5NBb/GbsJYQ==} - '@univerjs-pro/sheets-chart-ui@0.20.1': - resolution: {integrity: sha512-awHhh5YDFW8+OcD+a0YBsgGRrkmp2srh3Ez9LoNBTHiOiqQoBmL0uL+cpQxww3XsJa2urt4g2RJECw1/05t60A==} + '@univerjs-pro/sheets-chart-ui@0.21.0': + resolution: {integrity: sha512-NVxugXJavWGBv/b/ZgGU4uEbtdDygAR2RYQn0Sauc9iTQQ4vkoT0S4waNTgtgyQCjk3V4IgcIxuqVmh1xCVfHQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/sheets-chart@0.20.1': - resolution: {integrity: sha512-ljEjVlCjMNlJ2gis1MQhedBk0EKaQWiW4LT47Uh7zj8Iir1qxlDVgnGeJwUipxMIt/4387k+c6CwFcrhhNyo+A==} + '@univerjs-pro/sheets-chart@0.21.0': + resolution: {integrity: sha512-uxMG7pqem59zkmUGmdO0Cs6YxS4SCCVFJiyD0d1PiTSt1JfZOzc5mAWq7VFtWKRb5CHF2rRWFy/seyYOBojMDA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/sheets-exchange-client@0.20.1': - resolution: {integrity: sha512-aXxFIMUQi+lO8+HaZvHvmS03YOV9Dg/+gVCTW3v1EeWTMtqr2OjepMmdR/ywOQn9fC0XgAOrIPzL/0F5qls+zw==} + '@univerjs-pro/sheets-exchange-client@0.21.0': + resolution: {integrity: sha512-OQDdq33J2I0DT9+yqLhGT5J4KN2VDQ6FqITIDFL63mR6sOfRPoEfc708tlzJ831gZadGqUEdpZQ7f+mCtTTwrQ==} - '@univerjs-pro/sheets-pivot-ui@0.20.1': - resolution: {integrity: sha512-mBcYiyu0EAZohvkqCOBIVRggGJGTztG6c0A7L8DiY7OinOVx5eHn8vEO1+1SDH3wCYY+uzGRzoFamtXeqw2zww==} + '@univerjs-pro/sheets-pivot-ui@0.21.0': + resolution: {integrity: sha512-Al7M1QCZ5aqipNj3Hv+IYrsg8InivSIJFdusfrkK3geJsCaIj/RRuVeUKbPnWszL+WaidmUqWv9xoYdl6IrmvQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/sheets-pivot@0.20.1': - resolution: {integrity: sha512-GpVV4ORdKvMJR7yJH99LoWAk9ryEDiXEFX45xx0wsG2SKu1yRpJeDYyk63pcOHK19W53EebgRlHxfDoEs4QLqA==} + '@univerjs-pro/sheets-pivot@0.21.0': + resolution: {integrity: sha512-aLtlI4Oy2iw3ZSjgk1Fff69D+VAMe9bXH+Y43E9anjvx5foFSqzGag+mhkw2Vr5DZRCPItfe0EJL03fjykI4+A==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/sheets-print@0.20.1': - resolution: {integrity: sha512-x0u9KoI9ZzOGz9MQYOGkOiaUpOreJG0f4WJ4YqibINBPEEWMN9nXVpytyjK0PfUVv2Y7/8rKk9nvo0f12RqwZQ==} + '@univerjs-pro/sheets-print@0.21.0': + resolution: {integrity: sha512-NxYuTeA4ltQvPslxmY+uC7CkdIbzzGnZsQ/kQKmGszJisgDravmungtXxdWPPpweYEiFb6tZHyZZmj7QIYsPLQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/sheets-shape-ui@0.20.1': - resolution: {integrity: sha512-dyaJ9M/BGAamTnEhRsGfBPoNoIBeIwb+XOKhCjkZcN87Cb4zLWXV6rngiXClIQZTnxphD0B3g74sCFYSVG8j6g==} + '@univerjs-pro/sheets-shape-ui@0.21.0': + resolution: {integrity: sha512-XxFKK+JP7nf3cN1hEd2yxZ2rPxt0ecmKE16OH87joxeR/Jpqnt3RIVpK/JymBGwW03mtjiFcxMJZJQV0WJvSSw==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/sheets-shape@0.20.1': - resolution: {integrity: sha512-HjXIm3uW8KX8zwpVABEQCEipDJgSsUEME9Eud7hiGhG22gBVMTtzmNUuSQWY/WDddrR8eSOus2rDVUqqJLi/tw==} + '@univerjs-pro/sheets-shape@0.21.0': + resolution: {integrity: sha512-XzZw2QjpdsHEpArOrNBGTI4zerHskm6vl2XXqukwia8HhG1Se641I89f2MQe5eE3IT1TGJ1HA2eyAQkXSOUnkQ==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} - '@univerjs-pro/sheets-sparkline-ui@0.20.1': - resolution: {integrity: sha512-KbzL8pIf3kILolzvwaHfGTlQWClMKVRxb6Aart0kI3Qp73Q/Wx+KJd1R8m86bSt0T671MLhoClnwIkC1Qq6KHw==} + '@univerjs-pro/sheets-sparkline-ui@0.21.0': + resolution: {integrity: sha512-xN2XChmOOlGJ3oMepmeBRqkpNhpkY+7WbnDas5J9gvz3Efno1GgdgC/1LIfzL/d5w+3Ct54Mo4mzGvvTJFyjcQ==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs-pro/sheets-sparkline@0.20.1': - resolution: {integrity: sha512-bIvEK/cAf6cyVfPeYE1esa/GgNI0KnWFVfP3qoz2fPVVH8wU+prUounP2I4kHOoStAdiZixjfaGheYpyD5oLKg==} + '@univerjs-pro/sheets-sparkline@0.21.0': + resolution: {integrity: sha512-x5ZcyF/CzoC9tr8Tc22Xxtel0REk+YRrh2S6ikRBFKd9ZqJEKnPQVhmmSsWl4CMDaFAa6BYcDpBmrvD6nDMZxA==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: rxjs: '>=7.0.0' - '@univerjs-pro/thread-comment-datasource@0.20.1': - resolution: {integrity: sha512-pcmSZ+DKrtGDJ/BfQS325jfhpJrCnisJ6XYPttVA1G4y5tBfOmRgG+wBeAmGqXg0IhAelyYEIvqXTxB4YMVaoA==} + '@univerjs-pro/thread-comment-datasource@0.21.0': + resolution: {integrity: sha512-Rs1cJ8mz/scp5z5yLkj+TkZP+JEDX5PrVKZUXCBpKenqkI0Mmh3+AUh+z2Hj0s6JFBWfQjAFpR2I89o7IDeK6w==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/core@0.20.1': - resolution: {integrity: sha512-grP1xH2KO/rmNyzSdmuryEnHI/4jH9Qo2yvvJhTup5950QNSX6UKXA/E3NnVj3TpflKY3kDnwugLJ+1Suw4IxA==} + '@univerjs/core@0.21.0': + resolution: {integrity: sha512-MREXPzsNRv+7kdYV0zLtk/xUhPBdmvMjF7fSUTw9plOJt0HLxK1VqIQNeZKdQHa/hSVSfE4sMb8PNTgq5VKfTA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/data-validation@0.20.1': - resolution: {integrity: sha512-dlrb2kdFjL1sQzRhpluCSfGZsXEcq9UBr/ROhOA6EAQ2pMIP5Ndsj3ooChmGlqwZPwwQyCZ7YWKc9R1zEYEL/w==} + '@univerjs/data-validation@0.21.0': + resolution: {integrity: sha512-GyL+mObrz/u/ZNefNIy8okYEOwdNHoAS7UoRINYTLTYvjlpEahPPCVdD3KpOKk6ZKP3itSzqsXl7+5qWwaiD6g==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/design@0.20.1': - resolution: {integrity: sha512-VN/AQgqKrXzINc7TvTbbU1uTydaohkmhcdoPxdF2Iefh/ERkKiYRwW9hGkzRIzWi8eT/l/LX/nHf9hRo3NJ8xg==} + '@univerjs/design@0.21.0': + resolution: {integrity: sha512-6YmI8oae26vN6T/7gNFO5OUGQfQdRRGJrB7As1B6yDR/6TqJAFc8xP1mqKlJlogG59dCo8vDTvbcvh3KY8FKXA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - '@univerjs/docs-drawing-ui@0.20.1': - resolution: {integrity: sha512-MVeuO1zs5/sqn3exsrOZFZvLtmxuR2rP4bdDZ4WTnymLgMafXXqbeIpAB2KFNO3ybaydWrYyR3kLjVfMixlH/Q==} + '@univerjs/docs-drawing-ui@0.21.0': + resolution: {integrity: sha512-SD9O+Xj8rCNNeKaL1xUO+Y9C/S6KXLtjbL1tH5aY+te97XMQW/yC1KguKHb3CxFU4CVNDhC/zNNDziaJQOYnPA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/docs-drawing@0.20.1': - resolution: {integrity: sha512-xd9aPtA/VsVvItjuxsj2nC1lG0KqpLG7AQxbv/9b6YjGAVNf2Y/UR+4NjW6D0YQ8y9P63ls3rdhNGg0rS7epRg==} + '@univerjs/docs-drawing@0.21.0': + resolution: {integrity: sha512-qlVD1I+0yYs92FsmsQ+7F+r78Te0Wv2xdni47s7fAV5tY+Wvv/nRkRamDXzfWv+sRP+zJq1TIKc6mJd60fdx2Q==} - '@univerjs/docs-hyper-link-ui@0.20.1': - resolution: {integrity: sha512-2z2GX2/CT8LZ/hpN0XHKu9A/5VE8NGHkI8MmlVVNShxmGhxp3763maILC9Wx4Ji/QRz/5BgdL7kH+2ut+zzCpw==} + '@univerjs/docs-hyper-link-ui@0.21.0': + resolution: {integrity: sha512-QwtgWhFBL57IpWNuv9KP4Guf5U6lavZbSZaV/OADBGi7v5AxaK67l59OYDsmqHnJGtY+Km9NYZ/K3/BdnrJnfw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/docs-hyper-link@0.20.1': - resolution: {integrity: sha512-WZF2esfWx3S3W7tj7MS3OvTpei/mpTkxN81ttaoUlHE/m8VfvJXFBIwDaqteRBp2FyOv8cxRWSE2ZCB1KackGw==} + '@univerjs/docs-hyper-link@0.21.0': + resolution: {integrity: sha512-umHeIMoZNjE9B8PHnYsQUuoK5Z8IAF9PbwurfsEGOmUJhTSZwFwPpQ9Sbl217+Je47RPd1szwwBA4Pk+fcFXNw==} - '@univerjs/docs-thread-comment-ui@0.20.1': - resolution: {integrity: sha512-V10nqNEObPjMESjqvTfG7G0LjZBJCExLxN04vWHocupQS8ao48I81D4Bl0j3/BhwCQ/+BRoPaAEU2DftX/iGNA==} + '@univerjs/docs-thread-comment-ui@0.21.0': + resolution: {integrity: sha512-uzUb1akBKCjVn6JdcgBIOOo6PGpsF13LdxWOOvga1oPyL4zVo6rct1Mzsyce3IePVCSoUzkg0t9J7PGnTHn4uw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/docs-ui@0.20.1': - resolution: {integrity: sha512-UoF5mab+qXIiJfXasJKrfSa1Vcg4hdSBOj+xRLk5H3vV65PLoHa5apiA5MHanD46RPXyz58R9iSRplCbB1FCmg==} + '@univerjs/docs-ui@0.21.0': + resolution: {integrity: sha512-Vhp++X5SVCxpTLGuvyzTGR5/SDWzwnX+0qo/935uBaeRDZ/QAOebG4L+PRr8uzTCcUeOZYP0Dgg7J5O3TqSPag==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/docs@0.20.1': - resolution: {integrity: sha512-fHH4U1zGTz7LNjFz2YfyN6ppe19xTsJymsqbe3dvwL5rHp77+s/S2Tm7ObgI5TABN127N7sXZ0HlvulcZUNhhQ==} + '@univerjs/docs@0.21.0': + resolution: {integrity: sha512-APeeso13+zwItFZI1OeV2fjN0xAysyjT8mKu7oP9DQm3NdniUtSPYsimGIQ4cXeNVGxu5a9cKj272jyCuTvmRw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/drawing-ui@0.20.1': - resolution: {integrity: sha512-BL2DkE1OJ/b0k/vl01pLBNl5Z3LNBhoZ+2iBdPvPA05fwIJe0/S6IPuNOQ5JAGneh+y0hwoMr8KKX+yQ6IQxeQ==} + '@univerjs/drawing-ui@0.21.0': + resolution: {integrity: sha512-br7PM6fXcGgnb7o+hhfoX7awe6KnjPluWu18Y6F9NV3M5I4rhGDPou02WYDW9kfm3ZxoGmqn1LDXQJ55kCqq8g==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/drawing@0.20.1': - resolution: {integrity: sha512-7DMc6U4tHGWK37EJS1vIaaFdqBf22WrOlAS4A9tbqyQLlqE+WhJf1nxtiO7EMAPZEfIHbIDsABUAHEDBHBQGVg==} + '@univerjs/drawing@0.21.0': + resolution: {integrity: sha512-VmKH5o6qFgilVtvxQnWVZdT7MzMSsp8i4AciRZrVQm7jw/J9GP1Y5BGcUjDKVqMbX5Z5bOP6fGFLQa3h/o01gA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/engine-formula@0.20.1': - resolution: {integrity: sha512-Fpc6F7PVLhWxlkNY2VMYssWfuc4TT0IcGemzRh12/HYeIEPsyBvDAnBzJ1OCEeFfP2ZvpoEC0QkhQJlv7UY2rA==} + '@univerjs/engine-formula@0.21.0': + resolution: {integrity: sha512-3rRmfZauPZZC18umVciqPPk+B5COaEEdFMpbFJMVIgQQTWc+MLqOsr7lz90O5E+PlMfjqwtosmVofjPgeCSpSw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/engine-render@0.20.1': - resolution: {integrity: sha512-kfPTAfJ7tMrVhLBIkvSZASAfB1m/s+TR0Gv8mv9S5lvUiNd+Thtlku/ZuDC0KFygHFLNXUqmXAOT+MMVJh7iqw==} + '@univerjs/engine-render@0.21.0': + resolution: {integrity: sha512-7VjcCv5MMOanXmlq1CEM13BzW9RyV+vhoDg+qy1TMnzPhwniTAG5K6y92KAJ01W8vyJY+0DZJHqYeBvzDT8dYA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/find-replace@0.20.1': - resolution: {integrity: sha512-ACcZy+w8T/FW6DeGWxeejFY21m52InsO20qELZQqlSZsLaFCqKefYiZ//faq8kXKZiXNJQHVsXEPhHZu6OKsRQ==} + '@univerjs/find-replace@0.21.0': + resolution: {integrity: sha512-HPjEG/A/cz97Ginfv2YPPcoqjl/fk3E6hdVMRRXvK5o3bNU0iZo3jW/QxeDq2moI73SpqofOtb2Uf7cnALKBCw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' @@ -2948,360 +2994,359 @@ packages: react: '*' react-dom: '*' - '@univerjs/network@0.20.1': - resolution: {integrity: sha512-x2ySyo2qhoZ3FTk2L2Emko/kLoikldvTFdTD19iZrIqjReCz+B7lWeo1M7Biag3+AL5SpT1vaHnSjfIzYjeSkw==} + '@univerjs/network@0.21.0': + resolution: {integrity: sha512-/NBTmSIQEBDisXWLGagWVWtOrLMw+ejbNPFHikXpKqYq6pqATCuQdFhu51a62fgQkNubEZQ1RF+nw/Psi7fpSw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/preset-docs-advanced@0.20.1': - resolution: {integrity: sha512-N2F7XVuD8HBOXWpkiowBq+OxE4O74AGx2QXEaj4FLLpOycnzUIiO4vgQLkikgQErSmY6TtqeYO2+u/sfo/dmHA==} + '@univerjs/preset-docs-advanced@0.21.0': + resolution: {integrity: sha512-DnmmytIReR9WmlJyOkc/NnnbwV9sXfyhuxvgWa5OmEMzGiZR2OpA/f1bgkw2HJfEoznIgnMNuK19OUFOuErFtw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-docs-collaboration@0.20.1': - resolution: {integrity: sha512-tnHSWrRsIq99yYNhbHN975V1qXpkoUzyx+pZA+wtDNIxe/eWw9PYgapun7PmuVmcp/LB9D7oliPSQKubAGgbQg==} + '@univerjs/preset-docs-collaboration@0.21.0': + resolution: {integrity: sha512-HR2XyZ4TvVa7lXOyDFpcXvCJvZ3GMJ6gNZ6QqP2A1tEFAasQv+6juJUGtTyPY9XExcYQJebwpZgFh2YI95VbPg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-docs-core@0.20.1': - resolution: {integrity: sha512-qwNEjqIpm6ypuao495YDmxzRIL5hqbZ/eqUCnzGkvy7LBBf8Yseh6wySroSdQ3CiBVAh9MtI/ndslGIlKMvJpg==} + '@univerjs/preset-docs-core@0.21.0': + resolution: {integrity: sha512-DmF4nwHQdV7yrgahPPo5+pGoIUcr+e4v0R8mu9k0Ukl2CqrYxIBBpPS9zgqcYs8yhtWUo5UM2XZxJl9oy2oRyQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-docs-drawing@0.20.1': - resolution: {integrity: sha512-5xTglZKKVxgzjAvzFntyU7ewBk88Wiib2CUiHTYG7/zfbkrv2PguzAB1iqKlZHFp3jnaJEDwKoOVoatTLwHaxQ==} + '@univerjs/preset-docs-drawing@0.21.0': + resolution: {integrity: sha512-2naoOa9qD9n6UZ8HDHvnUiJ7g4Gl2eKi8r4JlpI13kIjZJtp4axati87X9MppyKSl67JoTeIbgFNY3G50MIE2g==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-docs-hyper-link@0.20.1': - resolution: {integrity: sha512-5ZK4ZwD6lEcqWYgs9bgvS73GmKO9bib7pE/X0dwqSwjXI82gZvCa0+46KpaK66dMlb/VC3BzXvOJjSpEwUnUQw==} + '@univerjs/preset-docs-hyper-link@0.21.0': + resolution: {integrity: sha512-tMfRNsm9311iT69pyMveFgJBmyvesRSG/bPZr091PaYhBLeszSLXfRmb9z6SEkQ+z54l8IH9sUz2SqDMLOgrCg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-docs-node-core@0.20.1': - resolution: {integrity: sha512-orRgG/8iz0PkikemuPU6e42qx+pmdfhW0xxJdTLVi4yq1wCt/r8+j4Y3dCS4Be6ktbmCPPrGVVL+0PCSXpQaDg==} + '@univerjs/preset-docs-node-core@0.21.0': + resolution: {integrity: sha512-IXoHeDRRDYR1kD/aRfj5qtNJzvJgtfTzPxIhuTIIbspo4L//mrk9H86Y4/f7kY3QlVGJWQ39f7jnkHh0YL27BQ==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/preset-docs-thread-comment@0.20.1': - resolution: {integrity: sha512-VdWfRyutjpHqnH9uvSkYREeoPQh2B01ptzfDWpyqfsqlDrR9/botv+edlelE7/gmdj2P6sbvz1Bo75ABurmLQw==} + '@univerjs/preset-docs-thread-comment@0.21.0': + resolution: {integrity: sha512-XZzRxorCLLrziM5Qi97lfnSb58tRnZHL4OPaJt/5R9voso168fVvxHRbF7KDeGTXNj82/j+mnmJpq71dzctrMQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-advanced@0.20.1': - resolution: {integrity: sha512-dzFNvkzreLqi1tb5V43GRRsho0qcXT4GLY01O7/L+c7WwwSdbi0gkVWuu/ovXYNj4c5Cg698bE/dYT0818NHrw==} + '@univerjs/preset-sheets-advanced@0.21.0': + resolution: {integrity: sha512-Cugy9hNiSPpArrYLA6vxvnFZWQFQWTfmQxy8PXPWpG/yMgU4g2tplCt4RVL9eIGEH3P6GhcjiIZmAFF1vNslEA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-collaboration@0.20.1': - resolution: {integrity: sha512-+YKa/R8UDjvIzSjYcpVMC6TSxPLctpqoAoCz44vqOF9Ny9qex9Qv4OMbHvHIFoJ3fq6Bztaw9cKZ4tjoJXqf6g==} + '@univerjs/preset-sheets-collaboration@0.21.0': + resolution: {integrity: sha512-TGviZM3Nr3PshaNL1r3Sdq+7iXnwLiiRbRaGCTqc6oGv6plrmfoFuFJ9UMnu3TlbsqHw5HdXuV9U3WW7zYu/TA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-conditional-formatting@0.20.1': - resolution: {integrity: sha512-ziF6RcYBpbPFCPIgnY72PVZzYCfL+NCTQVJY4uN8gEKmGwIVR64q23mL2+WD1a+Xpc8KA3FAOl65YZybDAsdiw==} + '@univerjs/preset-sheets-conditional-formatting@0.21.0': + resolution: {integrity: sha512-GbxjKUjCbiOefmSEedO/7PiusleYXGAUkJNunofg/yWZzuCsnQJnMiwffWjG682yBWOZ+Ad1gFUB8x2zYDcbqQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-core@0.20.1': - resolution: {integrity: sha512-dlY1wvy2IUTo/ij8JkHYl0lBTRGktrtaOVKK3RunO65Fwq5S2EQ6Ub1xKMotrh5Mbk/GkU+qNIkQzdt4vThVjA==} + '@univerjs/preset-sheets-core@0.21.0': + resolution: {integrity: sha512-/1dY4NWoTZdmPnFc9ZMfzahCCdJXNY4YKGMqu5mq+wxinY5hDaHRPj1KKs+rb8IFmKqFjW72ZYcQIPh27nfNCQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-data-validation@0.20.1': - resolution: {integrity: sha512-9AgmEp+25u/H3X7SMJH/nk1NX1jwcXA6DY65UP6giWIT+F9UrrxLN3lrSon+aWnBgrK0BlRYYt7uL5JaBboYpQ==} + '@univerjs/preset-sheets-data-validation@0.21.0': + resolution: {integrity: sha512-o3KHTV+iMKDHgw99wiKxPqvjO1BHGtE7pZB4HLr61lkgaWZqx6Rn6NIaWAViZlvNOQnUglr2F310F4RScolNog==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-drawing@0.20.1': - resolution: {integrity: sha512-MCMPI4QAnAldwqu4td8r60yBJljYBwAzk4qOuFxQ953veizQu8LINg2Af48J4G6Xqrv5u7FWsIznbsfgRKzx9w==} + '@univerjs/preset-sheets-drawing@0.21.0': + resolution: {integrity: sha512-2Qo5Tb2t0ioaRYvqKaxDAbDHDXhJFcLy5B0bu1nhG9xNb2VBHw1x3bGkIf9NiqJ7MiNnfKjvBE8ibvXSVHnj6g==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-filter@0.20.1': - resolution: {integrity: sha512-PJT9T/NmjngvME9p1Ivfrx8Tyc6y7IslGLXewAJNk5AcWKD2VYXvCX8IlDHLcZX4iGD4YhVFtwhn+F7lrXuAOw==} + '@univerjs/preset-sheets-filter@0.21.0': + resolution: {integrity: sha512-eiJ3XKZeegmJL8AtHOmmqpX0Z7VAHkUPNjrFZabUZqkX09xtAKXFYGoUDbDR7H3HufB5rCksQBsAaoY/ZiEa5w==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-find-replace@0.20.1': - resolution: {integrity: sha512-JFLA2yIlc8S1e/VEsuqHGS1EIjiLtXstngEqKOdZX5WzZuP+8v9CwHmV7Bpu9UkGGfz7aMYHFxb2PPWcQI+9lQ==} + '@univerjs/preset-sheets-find-replace@0.21.0': + resolution: {integrity: sha512-8SGVb0fm9ch9rXCnzfHRVnAQy8UqtVbH719JPG5oiu67qXCXfmY3HntEEb956JCj/pOIHmjQnw3n7AsJtRtKrw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-hyper-link@0.20.1': - resolution: {integrity: sha512-W2s7kB7CLxFRWBHmA30QlHo8eUz2GRsHL5eW77D+dpNGgyLmzcQHVGSSwDFtx9z4nl1mjA+VU8HVsvCjElpnpQ==} + '@univerjs/preset-sheets-hyper-link@0.21.0': + resolution: {integrity: sha512-3zdO1DqfCthHtX/Zfsok1ogdOUUC7YinfT2DfsBRv1vdn92+BIdEvu4oC6nY2wXUkQCrvMa5FMeAu1jTF9zewA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-node-core@0.20.1': - resolution: {integrity: sha512-8cAAT3a8tEuPaMUSqvz0f5cacZQ3d4PKG3PGVBnFVo3W/dACfeLj63MR9qUQ69fYckRVdP8mZPe8+czLx8dUaA==} + '@univerjs/preset-sheets-node-core@0.21.0': + resolution: {integrity: sha512-W1Gu7UEopoWFKUCo1VK+I+ot3b2gEz2Qo+sgXmbIFnwEZysytCv29KTBbdjEJC8Zw7G+HXFGzMBOATprI1VB0A==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/preset-sheets-note@0.20.1': - resolution: {integrity: sha512-tmM2J5MN1fdr8nIxY0VWBfJ32osfUxMhTVJCtrs2OdwJhUsecK0Ne2tVZPNhjPbTscO3IXCRAZvTsfBDUQqmuw==} + '@univerjs/preset-sheets-note@0.21.0': + resolution: {integrity: sha512-CC/wQXMySp4Wu2FDDaJW1U4QQnofihagy5UN2E6Z/F2xg03XkYF6k7cLN99YI3LUrCFBvKD1SNYOKa66vEQ9TQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-sort@0.20.1': - resolution: {integrity: sha512-TpPaI64fQyN6a2XQk1Ytgfi6N2Y1hy0H4KYfmdcUTjhfqWwCsu1f+TGvbxCIOaxfkHRKKvWAlQ/sX0+UMGZihg==} + '@univerjs/preset-sheets-sort@0.21.0': + resolution: {integrity: sha512-6SmVgdBI0DYXcEmpkvN3HMk7Y/YxpQU9clLjEly7smgDrlt9KsemMf8xkYdHZj5V58NiwuhEPcoS0TslfBll3w==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-table@0.20.1': - resolution: {integrity: sha512-uvgHLQpvl5n3jhe1jlS8L+ml0RSqBS6Le0V5heFnibxV3s0RL8M+NpeogXtGZAcR1s78RLxwvhL59FVnW45eHA==} + '@univerjs/preset-sheets-table@0.21.0': + resolution: {integrity: sha512-KZ54C75wcPRWjwQTtPHHWlII6Pu6V+/FUctuln6ByWBZDGslE8XXMybQSLGHy/n0KkDexQHY7XVbaiLehrIA3A==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/preset-sheets-thread-comment@0.20.1': - resolution: {integrity: sha512-FXOm89Lx9nYi8ntFUONy1UysDzcfBMth+wGT5iHrQrF8wIMHMAxRuM5fm3Wi6EbaYb4IZZ7g7iyP8+M4f0reTw==} + '@univerjs/preset-sheets-thread-comment@0.21.0': + resolution: {integrity: sha512-o7yUx3cx8D7zax7Zh9sYPEhJ8t7YZb/ZdXITz1a6/2bpRzhXl9v4hEnXqSYUmgixrxV1yvxhQKlU5WhHUy3lsA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/presets@0.20.1': - resolution: {integrity: sha512-t9nsFZxzjr/aQT/7RGPum0SRvI8D8647tL55+Is7D1D9H2J2A0syUt5W55tBZpodl8S3bCMwIGHCR+JYpckqNQ==} + '@univerjs/presets@0.21.0': + resolution: {integrity: sha512-f0SIaJkfNoRXRdlDyUvqgibN55HMErHtz7+2WF37vzofnqGP5i+2lcz8YlVMYSMwEgDqti0igVKKhoeRPq3SqQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/protocol@0.1.48': - resolution: {integrity: sha512-nFHNtGAWOV0u1+IqoznH9K7hV/M9OZ61Vqwy8JMWKlgLLsx12m3vJqodkrVlLkI2YU5WuwjaUT1+J8/nM+kcUg==} - - '@univerjs/protocol@0.1.49': - resolution: {integrity: sha512-xVKSmSCQTElzozs8+zCWDdx3OJU7u/s/O25r7h9r9/Xot5tr0yTOwdjeEpjwjUCn1L1e67iBPKLkqegq9h4U/Q==} + '@univerjs/protocol@0.21.0': + resolution: {integrity: sha512-jcMLFiZQJQx/VvQNg7QLVT/yavH/+dcBfAKE+Fx1A7ahnjaKwzvbAUUkQoHJyQ3iuy3JmFgcRQJLYPKiSly9KQ==} - '@univerjs/rpc-node@0.20.1': - resolution: {integrity: sha512-kR7IDVmeNHw7fk4IHTnXaeSUQJNEKzJ8HeyZu5xv1AcKmq85eCU+AA3ZgF9BPGMhnat9FBTqRfHg61GSTvHKwg==} + '@univerjs/rpc-node@0.21.0': + resolution: {integrity: sha512-dUkfE1On9JgDJNaL6fePM9yPz6/YvNx6s0e/0ccYvS5sgepiugS1nLxYQv5VaBsUsYfELnhCsxF9+cvuK/mGoA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/rpc@0.20.1': - resolution: {integrity: sha512-4l0uyHWKD0dDl1YT+7YaBUxV9DdKRBO+WSpKtPxW2dLIuBgEwN0JAbqnVC7DpXUalrzWtqMUba7MM5p3Z347rw==} + '@univerjs/rpc@0.21.0': + resolution: {integrity: sha512-WnV0ypUZ6WLOohndCwSsBHLXtbjKz8sjvqPX0M+rjd773BzZctKZ3oNtkVx85uOgPH0BDNzPw7lJf3WBbjamqQ==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-conditional-formatting-ui@0.20.1': - resolution: {integrity: sha512-K6Z9e143hjBb0UD2s0v6xnvxYN6mUjt0secNWHbYQDvsPUBISkv+E/wKb5EkwxgFtwTmufzWnMu+CtQhe2On1w==} + '@univerjs/sheets-conditional-formatting-ui@0.21.0': + resolution: {integrity: sha512-4nBXP4pd/bwJ1WlDq73bWTd0skZxpp9/f5wi2jpfOFkuivTK8f0mCp6eJDZl7VJpFbCGFe0fgh0f22ZlMnrWNw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-conditional-formatting@0.20.1': - resolution: {integrity: sha512-Ifo0NqVV8R5uQva7ribBIHzGl8ZPzgHKG1ujHy97+u7tGVX8PgOAi//hGkgbzRyjId2Yyeweb+OZc2FRJML/2Q==} + '@univerjs/sheets-conditional-formatting@0.21.0': + resolution: {integrity: sha512-LA3zR46dQrIvey5WCpVNRhw4wPCoWI44cKtTfzoJO3W88cd9ExssTdDn45VN8EERj9Jpb8UFvRUUAPnvyB0vfw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-crosshair-highlight@0.20.1': - resolution: {integrity: sha512-fcLURsU5MysPmIRdd6B9hpspWsw3D3a0f2NeTM+yYOO/UKc/4S/MAmkpWKIXxfNvrEENIHxYIedjAvW/oDlmOQ==} + '@univerjs/sheets-crosshair-highlight@0.21.0': + resolution: {integrity: sha512-0uf8oj1gfo71bpR2tNwoOMsHiIc69ot3y+OiJFfwsSQWdxdjVdruWNR4oJP5kaPhJuVt+ciziJl09Ysk1aaZWw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-data-validation-ui@0.20.1': - resolution: {integrity: sha512-vvLQ3e/5LjIo9LK9nil0xVHR4yAZcurq4UtUrfk01QumxVcdX2NDiYGidMVSYYotUOn56iWnUtV6oALWeIXSOA==} + '@univerjs/sheets-data-validation-ui@0.21.0': + resolution: {integrity: sha512-p8f1UaDSfoWEZyMSMtEBKQlAvwZjhkNBhFr1ok9W66PZlKQqeKdrleI3veBBrKbKmXn6YXzVsaG6TPcpFpoUNA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-data-validation@0.20.1': - resolution: {integrity: sha512-uryXRc755GB+dIMPA3erBuzH8ZFgLn6hcUjmUJVd/5qJf+Gz7PBbsgq19xqZizuLWAgLnValemtx5+oo9VUszg==} + '@univerjs/sheets-data-validation@0.21.0': + resolution: {integrity: sha512-Dcln+kxdR6saGJ4VL6FqBdOtGBvtnzO8LzdpPx4WnnOS87i9MQCfCKYMteVCRnQG96x/KgOp6Ihu2e9vLlb5eQ==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-drawing-ui@0.20.1': - resolution: {integrity: sha512-dq/1c0kgiK2n5FVYXm1YeWaxgqIZTi+HWANR2KPnWcBq5NkEPk4lqnPjEHllXjJJVzLm2TCH4FapOWk/vT9jTQ==} + '@univerjs/sheets-drawing-ui@0.21.0': + resolution: {integrity: sha512-6kA9JL/OJFfKUs3JrsZeyve7b6nzZ2KMIzPcSZojkSptKgZTdzxkmk+zIS3FW7d73Pn4IjmYZNxkJX1ls3rmEQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-drawing@0.20.1': - resolution: {integrity: sha512-wHV28DPmkDy5r3uRVk+5I0pNciaeUwHQ0OOfHtRRHVZNCyEe1DRMd0UWIbW74dwNOz5Y5v542nSYTGmbBk12tg==} + '@univerjs/sheets-drawing@0.21.0': + resolution: {integrity: sha512-oAUIjCSrjospzsLXvA9uOfjo6AkYmGTiloCa1HQvXDBqsKw2txcnMSm2djIMH6gXW13bCrNpcbKxrpnLAp8rww==} - '@univerjs/sheets-filter-ui@0.20.1': - resolution: {integrity: sha512-7dnrH363+Wjk6YHl7GLiQuPTJZsXtKSYGT8FGnrA0TUmgr787rtsSlzGNLEWlkHut+Xw7+0/mT8hdDpkIbSE7g==} + '@univerjs/sheets-filter-ui@0.21.0': + resolution: {integrity: sha512-lfUrPLYZCXlLHjGwbirWYJOq7j0sJazC+YA5O/MTD9zAf85OowedI6OyJT/Xb8yi++QKKyf6KqyP1xcgSU3eRA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-filter@0.20.1': - resolution: {integrity: sha512-RqSt1TJLYUZTSka6/ypdY/lDVNsrh7fmSNaM1GGR+98D7WSkY3nzeEVcKVovU4Errrr2FmWQADlZj8wKM0ok+w==} + '@univerjs/sheets-filter@0.21.0': + resolution: {integrity: sha512-MZIrQouWVTlzrQkXF0mnHB9DGP0Ap8hmTFJPjGbGMuhT/zGEjVQWEnJiyFUEZSW3w1dqZRxCSlUqz0xkf36KoQ==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-find-replace@0.20.1': - resolution: {integrity: sha512-w0r4JRDr9yXUa6OOm8+CceRNfvOAttPoFCR05FxkkDRwcqrPK3azGZbS4F/Q0LXv7A4E8tFg8OPHtSnHBTpwtA==} + '@univerjs/sheets-find-replace@0.21.0': + resolution: {integrity: sha512-yhrLcEK6ynAYAwQYusH0sgSgqIrG0LDmQ8kOgi3UhNSWHsuk0ZIYdxzEce22Ed4pkL9QwrJGrcZtDyg5RwIHqg==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-formula-ui@0.20.1': - resolution: {integrity: sha512-VhSthFtDXhK/B7cqpu2hxUkAc927U4GOY/vPJQlZoEDq4xM4yq0U719BEr7xI+FKfgYLA1j4USwX2Z2OffO75g==} + '@univerjs/sheets-formula-ui@0.21.0': + resolution: {integrity: sha512-rXOsBkO/Ii9XISaeWjwj52a7Ttws5W7vf/tARU5n3gDyfBO/vgYIqUDJFcMPQz9r3AulEeV7POVSvhN9hjhuEg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-formula@0.20.1': - resolution: {integrity: sha512-AESehaGW0PFaS5x8maEc0WzjmIcM0ZGvO4UPw6841ROSf7yVHpVSxgAfiLrO59yyYc6fQ1P9rF95mrkqpl23yg==} + '@univerjs/sheets-formula@0.21.0': + resolution: {integrity: sha512-vy9zI3BfuO/Siuz8iuf6WYVWYffGxmlhNss01rizSjs8NgV2R7sghrrFxodG2SAmXT8Wj8dT0dlHW21GzSa3tw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-graphics@0.20.1': - resolution: {integrity: sha512-lOkOddCcIddxlc18wjoJQfEVr8IrqMXcZe0jdOM2BIenfa2jo0JzbEGlIBmEHE6yB6YGlE178BqlA+MNKKoRZQ==} + '@univerjs/sheets-graphics@0.21.0': + resolution: {integrity: sha512-vV2jae2/ruE3WSwldPit50Em21IH8GgWCaOfvhfUSlRPPZxVFjd9xJvWvN76nwZjAoNeVyNbHNuVGphR7VxNQQ==} - '@univerjs/sheets-hyper-link-ui@0.20.1': - resolution: {integrity: sha512-1fJxbBhi/E8krAAtdNaE2C+wgVjy4iQNkGHdXxc0UIBw278V32sQ1b9Zp1ezZ8osz3hVNrkvXz0TPBJM8moqVA==} + '@univerjs/sheets-hyper-link-ui@0.21.0': + resolution: {integrity: sha512-zxdGUV5XWQOhNjehXZvyXgwBFq/5P4C5Ei41cs201Sg9+hfBH5S0s0VzceHHJUnZw2GFt/qFSG965ZrfGU+4ng==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-hyper-link@0.20.1': - resolution: {integrity: sha512-qlDaU6ggk1rWkxl+LKHNQnqtMHXpFetoT2xvzgLveCSja6wWDP8HEHWoujtd19S2P3ia4NJutJ+r3QEZZtU4DQ==} + '@univerjs/sheets-hyper-link@0.21.0': + resolution: {integrity: sha512-jz94FapN1uKC7dtEgZEhCKgIWUGSI8CQ6Ec2dvH84byTWzC/67nWDb2Ev+5YQUBK+aLJf9a/T4svdT8/I8s30A==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-note-ui@0.20.1': - resolution: {integrity: sha512-znI7bZ39M7F2oWHOeLKhbf+u3MIOVLUP/MsADH+EllVbVAx4nas+S9RJJogD9LWaTvetcs+jd101iFZBgFPVFQ==} + '@univerjs/sheets-note-ui@0.21.0': + resolution: {integrity: sha512-8YoJtfUzRvxmPtIJYvi+bqOGkSp0ZlyoKoFOuiJtxavO6O7A8SwnLbz6YMKrgQTPG81bZ7pd2OrnTLO78IBazg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-note@0.20.1': - resolution: {integrity: sha512-kPUnkcWlqVthz/2r8A+avEd3XersGZ8GVXgzj+eYr8iPoJXoZBJVABD4iezAOHgt3aM/q8uwWWU86CnoaqaLcw==} + '@univerjs/sheets-note@0.21.0': + resolution: {integrity: sha512-S137ki/WS53StrFYHaGE/2Bzl8wuGzCma4P6pP4skkjBsVohzJqwq498aHbQ1Co97efimTtkgG4LuHblJ/2KFg==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-numfmt-ui@0.20.1': - resolution: {integrity: sha512-VnCMPVI8qgG/sMCMmayG4e7MCf8+v0O5W05U8tuxP1kdJxuBc+RLgllRNLHJ6Ca+Rxm0ONSi6Dqd7A3otxeIFA==} + '@univerjs/sheets-numfmt-ui@0.21.0': + resolution: {integrity: sha512-NUbO7bqHi1zpdkMlNLce+koIBc1ikd/5A+hmKQUU+2bm5OWh7dPmqqSUZaCPA0wkBeHxeuZ9toXdS7F4e9uxfQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-numfmt@0.20.1': - resolution: {integrity: sha512-cugnl9dHrrOhTg0EeKIubQ1wBkbN4qYu5pqM2C1F0/KmyZgnHj10coGxMc6nwvoTrFJxbU+BugR60xA2dDIkoQ==} + '@univerjs/sheets-numfmt@0.21.0': + resolution: {integrity: sha512-gLMYdFbXZbwTrl4ECaYDuIFBieP9Dj85uU3+2aJW+coVXtstbmX7QUii84AeUBxU0p3vvOrxNwpnwaHbLIfWFA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-sort-ui@0.20.1': - resolution: {integrity: sha512-wFPP8gHqbDgtjnCwybr4QMWD3xhkxdgtJq0lCY3IXzrSLutGEoiUyNWIdEFUKx9C9uV39Md3q+MxV13mqewA9g==} + '@univerjs/sheets-sort-ui@0.21.0': + resolution: {integrity: sha512-lCB7BqtuUA2EhLq6S2SAg3VgOxD+gfFjlOeDkt70QSXKG3zD1Fk6ot9hXd8+DeoUZH968rsO6LDYty/8KmBW/Q==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-sort@0.20.1': - resolution: {integrity: sha512-+hqCd9GOcZTSpVpPm+gsVOpE0grV49hgg16mtnlr24Gf1dFcReWEZSVYGtIY2Ha8dfsDfoR8oiiYU0c2LEyQjQ==} + '@univerjs/sheets-sort@0.21.0': + resolution: {integrity: sha512-u5Hw57x/Y6u70qxZDPr9M4STiFifRAWOhApTE4a/ooYvWoeevZZSkGufILWfKntC8nwmqY50oxX9eChP4wU/Qg==} - '@univerjs/sheets-table-ui@0.20.1': - resolution: {integrity: sha512-JcWxA40Q/Fg1YAnMCdc3W9WaIdHu2FElTZ61m6W4EFzrgzefIpOstlqoPdyGg3+76eqyTnxcY5BFYFYeZwxeUA==} + '@univerjs/sheets-table-ui@0.21.0': + resolution: {integrity: sha512-ebDvDB0c/dYkIrAJPQoFKtCbxhsytVctnf1lC5QKmb4unyGe+ySGDgZRpdXE31af08mMdkN4DneXWN8OJ3TIUA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-table@0.20.1': - resolution: {integrity: sha512-pC61Dn6ZChYvC3VNo6TLJ/GmuCtfJ8P/PbWkbygI7KlqxiNmMaGGq7auBTAPbUeDswV7mimeh4/0c1llQntaog==} + '@univerjs/sheets-table@0.21.0': + resolution: {integrity: sha512-mCJY3hc+pg3YT6N0ZnOCX7tarnXCw2t1PyVTblfpZSRuryBHpoOOu1jWphA0KSlPMY/Z2ZkWA+qqOdajo6NxOA==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-thread-comment-ui@0.20.1': - resolution: {integrity: sha512-x+7+LJAftvwbokFdofGU3UwIsMZE+W3koDhthe+tr9MXC23HLOe18nN2XpJtihlxCAOfqUMYvCUziG+Mr4u7Cw==} + '@univerjs/sheets-thread-comment-ui@0.21.0': + resolution: {integrity: sha512-RzJAb76aAx7k7NQCorfv780qW4ayve3C21GM9KvUErPA9tIpXCvHy2S7eDZitvkuNq7IUMauHDndg5exY1RmBQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-thread-comment@0.20.1': - resolution: {integrity: sha512-o24gis9YKsGyX3XkuJ6lZAaH35m3Yti3egMAaXB5FxwrP+G0Y7M14GYEKXvWSCrj0DuDGt/fKfQxAAOh2B4hMg==} + '@univerjs/sheets-thread-comment@0.21.0': + resolution: {integrity: sha512-bcWvpJnrtsBsHd7xFYdHtb4xOXjrJt889QrJ5w5TTyIi20yKNuVtZElxKB1nHLdq4eZ2+630Fhdg8+j2IT0GGQ==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/sheets-ui@0.20.1': - resolution: {integrity: sha512-jZlmCVpPJoXL1v6z0MsGDT0XWgKgcEZvifFr0UaYJsFoTMzu1LkqZw5YCudrQKY+lURprLzkI2lT1T0npSXwkg==} + '@univerjs/sheets-ui@0.21.0': + resolution: {integrity: sha512-ZXNphVMblw5Ht2KESagl5+HSk4+gDU2IU1m8YEKMNDBAsA1Kf56FVn1PjzamZuHlAzqgI5SRCQUYi8aa5/9ITQ==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets-zen-editor@0.20.1': - resolution: {integrity: sha512-RX+IxNyBRTWlfrzA1arc2F6cVn+KuoBgVKvuWoRWibkKyqBiq9vy534z2Mnk3PsaB48RCZrKzJkCUDzt/M0QZg==} + '@univerjs/sheets-zen-editor@0.21.0': + resolution: {integrity: sha512-5KErIoieUHMkdDqCRm28PXrtJ8WL6yCD5vdlVUbeoEBVHB9jEKMzg5G+yFxfvMWe7j7RyfTWiVqTAyjWiL4aVg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/sheets@0.20.1': - resolution: {integrity: sha512-wxEXUJ0hJkkIifzbyxNBUgHiY07v71EIb501ltcnT8d2JUoP6JiS9tLyOvHsLK6OvvBKXNvohN0WbIUHLlXiFg==} + '@univerjs/sheets@0.21.0': + resolution: {integrity: sha512-vpzEQXruF4oB0wbqgdSpu4kKfG8jP01W2tfPavzIASBv4GTyy8+OKMNhp2l706lCWthcHTAKaLE/Qc76AUauSQ==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/slides-ui@0.20.1': - resolution: {integrity: sha512-yj5tnOCKY+aCMGRenPsRQJ8xbgFRiyYgBcWnqDe9k28n2MdSwDJVzBDW4BY07pz/45Wa/VwGlpCxSSHKxnl+kQ==} + '@univerjs/slides-ui@0.21.0': + resolution: {integrity: sha512-Qh+kmwJ/KDjQAngynI7/gNcJdxQy5hzKMgx2S393pBUQWiNIFe6ajOnTQXpRt4ufUG+b13En8UBDC24aJ6yNoA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/slides@0.20.1': - resolution: {integrity: sha512-9rsbc1GmjGaWMwi7V6y+c5tZ0QkRFFnxPPlQrGSI3e/xT/4LRJOuMUYSL2qwgjXtqAspgcweK9OCBYCvh8f0Fg==} + '@univerjs/slides@0.21.0': + resolution: {integrity: sha512-pEdm3bj1K7oIhr9miM3xhRizWjgezHal6+M5zdjsqZJBVTNLdNnvxFescxcibJrXvCACox6F7J6TEtR+uqEC2A==} + peerDependencies: + rxjs: '>=7.0.0' - '@univerjs/telemetry@0.20.1': - resolution: {integrity: sha512-84BYQ80jiKU2sYEdfNMXk+3lANTWjGu4nDYNMeilTOlHLjpL925BnAxM0owAnql7jgzohRG62d6gtfukH/Qp/w==} + '@univerjs/telemetry@0.21.0': + resolution: {integrity: sha512-FwWMp49Pql4cxpl/X8o0AlXIB7YPT0Z7BpkosqaV6JhGcxmmbTqezaSr8p36KiXHKs19zkF1dIXldfUVy/B6eg==} - '@univerjs/themes@0.20.1': - resolution: {integrity: sha512-/CK4jt59WeY+WkpXJxY9eVknGM/yFZOgMvprRyEAS0Vp+VYfV5w9dqLm/Z8zZBdWtgToteU8XfBQNNKYuaefpQ==} + '@univerjs/themes@0.21.0': + resolution: {integrity: sha512-DcIQhSC2EkCzaRxywsq3Eie/sMW9oqV4o0P4RjGCCN5yTyEoztS1zv6uamoPOpqCRgqCFD/ugCqTRndSmMI5vQ==} - '@univerjs/thread-comment-ui@0.20.1': - resolution: {integrity: sha512-Ci8IUblnBRPYzFvngTIpn7sXyeu+tTgoZDp9t+v3UwZTVf+RO0hq63cTKGc1jfLOC9C+3icQGoaEPfgRYw3cuQ==} + '@univerjs/thread-comment-ui@0.21.0': + resolution: {integrity: sha512-DBdl1rwCOjElSR578Ja1OrmiPhf3sG/gBSBJVR6fQJPAGyf1Frd/mucEkmLn1tfFTdDh5N+BslMd08nKk8uXTw==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/thread-comment@0.20.1': - resolution: {integrity: sha512-jiDS+pQ5d1312tz2AO2ry0bLd0qkjjAaqjsSH9a87H4vSYwAVgbrK19m4UrTadYouL6LspxqwylXa7xsf9YXNg==} + '@univerjs/thread-comment@0.21.0': + resolution: {integrity: sha512-p1EDpcrOQVPMXnDpV5Whrc0s9gJKVqTZRZFpNu9fKfG+NAK/SqjtGa+vH/hdCeAmxVZwVMd+ZoTv/RdRjlphbw==} peerDependencies: rxjs: '>=7.0.0' - '@univerjs/ui@0.20.1': - resolution: {integrity: sha512-EsDteeB9G4URTVRt3u5rSC8M5xEnOllHDEq77LCqLY34fZxQX5qpnb3z8IjcRCnQWBFM+aFfzMwqmQ1Y2cqZ0w==} + '@univerjs/ui@0.21.0': + resolution: {integrity: sha512-VwKykkViLiALfMtURi4+WX8ZWSl80OQlSCPgVIASzxFeLKBTSb/ICS6SPKXbqqwGAtExupmQHHNH0tsDQXQSBA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc rxjs: '>=7.0.0' - '@univerjs/watermark@0.20.1': - resolution: {integrity: sha512-mdVc3j2INWN1Gcx6sgkDD3miJPLj9HCZJAPF0KwwtNconqCOtKoIeBFbsVC90LjeJUX9/JUXq9NM8BSIH3/KMg==} + '@univerjs/watermark@0.21.0': + resolution: {integrity: sha512-09TfVDQGtH0CaKlRYxfteaqRZVdD3//JbjDzxPOMK3mfqC+gJhV4rvc8MreU3+1hgneoREVfE7cPXWemwHszkw==} peerDependencies: rxjs: '>=7.0.0' @@ -3687,9 +3732,6 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -4402,6 +4444,9 @@ packages: resolution: {integrity: sha512-hgH6CCb+7+0c8PBlakI2KubG6R+Rb1MhpNcdvqUXZTBwBHf32piwY255diAkAmkGZ6AWlywOU88AkOgP9q8Rdw==} engines: {node: '>=20', pnpm: '>=10'} + fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -5074,6 +5119,9 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -5354,8 +5402,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.7: - resolution: {integrity: sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==} + nanoid@5.1.9: + resolution: {integrity: sha512-ZUvP7KeBLe3OZ1ypw6dI/TzYJuvHP77IM4Ry73waSQTLn8/g8rpdjfyVAh7t1/+FjBtG4lCP42MEbDxOsRpBMw==} engines: {node: ^18 || >=20} hasBin: true @@ -5445,8 +5493,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - numfmt@3.2.3: - resolution: {integrity: sha512-q5vjJSiuomxYNNVhB/TWqjtctZz+fnscUchvwonutXZ/neY2XLw6z4q3DS4ijLDrP5Y/tgrVeP1/7PjgHRoZuw==} + numfmt@3.2.6: + resolution: {integrity: sha512-MXc2KP3j+2usdHTY5/ENUc2S+3BRF/cJqnR6RHeq6LBqKoIZOAQ62DQw974nnaZOencbfkmkTPyTmMnlkCpjzg==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -5509,9 +5557,6 @@ packages: package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -5650,6 +5695,10 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + protobufjs@7.5.5: + resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==} + engines: {node: '>=12.0.0'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -7133,6 +7182,18 @@ snapshots: optionalDependencies: tailwindcss: 4.2.2 + '@grpc/grpc-js@1.14.3': + dependencies: + '@grpc/proto-loader': 0.8.0 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.8.0': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.5 + yargs: 17.7.2 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -7287,6 +7348,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@js-sdsl/ordered-map@4.4.2': {} + '@lezer/common@1.4.0': {} '@lezer/css@1.3.0': @@ -7394,6 +7457,8 @@ snapshots: '@next/swc-win32-x64-msvc@16.2.4': optional: true + '@noble/ciphers@2.2.0': {} + '@noble/ed25519@2.3.0': {} '@noble/hashes@1.8.0': {} @@ -7598,6 +7663,29 @@ snapshots: '@posthog/core@1.25.2': {} + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.3': {} @@ -8827,25 +8915,24 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@univerjs-pro/collaboration-client-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - crypto-js: 4.2.0 + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -8853,46 +8940,46 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/collaboration-client@0.20.1(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/telemetry': 0.20.1(react@19.2.5)(rxjs@7.8.2) - crypto-js: 4.2.0 + '@univerjs-pro/collaboration-client@0.21.0(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@noble/ciphers': 2.2.0 + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/telemetry': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs-pro/collaboration@0.20.1(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-conditional-formatting': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration@0.21.0(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) uuid: 13.0.0 transitivePeerDependencies: - react - rxjs - '@univerjs-pro/docs-exchange-client@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/docs-exchange-client@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/exchange-client': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/exchange-client': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -8900,17 +8987,17 @@ snapshots: - react-dom - rxjs - '@univerjs-pro/docs-print@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/docs-print@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/print': 0.20.1 - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/print': 0.21.0 + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -8918,50 +9005,49 @@ snapshots: - react-dom - rxjs - '@univerjs-pro/edit-history-loader@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/edit-history-viewer': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-chart-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-pivot': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-shape': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-shape-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-sparkline': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-sparkline-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/edit-history-loader@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/edit-history-viewer': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-conditional-formatting': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-conditional-formatting-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-hyper-link-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-numfmt': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-table': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-table': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - '@types/react' @@ -8969,31 +9055,31 @@ snapshots: - react - react-dom - '@univerjs-pro/edit-history-viewer@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-pivot': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-shape': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-sparkline': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/edit-history-viewer@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-conditional-formatting': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-table': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-table': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9001,38 +9087,38 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/engine-chart@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/engine-chart@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs-pro/engine-formula@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/engine-formula@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs-pro/engine-pivot@0.20.1': {} + '@univerjs-pro/engine-pivot@0.21.0': {} - '@univerjs-pro/engine-shape@0.20.1': {} + '@univerjs-pro/engine-shape@0.21.0': {} - '@univerjs-pro/exchange-client@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/exchange-client@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - pako: 2.1.0 + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + fflate: 0.4.8 react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9040,34 +9126,34 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/license@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/license@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: '@noble/ed25519': 2.3.0 '@noble/hashes': 1.8.0 - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs-pro/print@0.20.1': {} + '@univerjs-pro/print@0.21.0': {} - '@univerjs-pro/sheets-chart-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-chart-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/engine-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9075,25 +9161,25 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/sheets-chart@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-chart@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/engine-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs-pro/sheets-exchange-client@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-exchange-client@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/exchange-client': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/exchange-client': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -9101,20 +9187,20 @@ snapshots: - react-dom - rxjs - '@univerjs-pro/sheets-pivot-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-pivot-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/engine-pivot': 0.20.1 - '@univerjs-pro/sheets-pivot': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-pivot': 0.21.0 + '@univerjs-pro/sheets-pivot': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9122,35 +9208,35 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/sheets-pivot@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-pivot@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/engine-pivot': 0.20.1 - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-pivot': 0.21.0 + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs-pro/sheets-print@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-print@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/print': 0.20.1 - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/print': 0.21.0 + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9158,23 +9244,23 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/sheets-shape-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/engine-shape': 0.20.1 - '@univerjs-pro/sheets-shape': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 0.21.0 + '@univerjs-pro/sheets-shape': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9182,31 +9268,31 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/sheets-shape@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-shape@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/engine-shape': 0.20.1 - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 0.21.0 + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs-pro/sheets-sparkline-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-sparkline-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/sheets-sparkline': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-graphics': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-graphics': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9214,24 +9300,24 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs-pro/sheets-sparkline@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/sheets-sparkline@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs-pro/thread-comment-datasource@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs-pro/thread-comment-datasource@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.49 - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - '@types/react' @@ -9239,31 +9325,31 @@ snapshots: - react - react-dom - '@univerjs/core@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/core@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/protocol': 0.1.48 - '@univerjs/themes': 0.20.1 + '@univerjs/protocol': 0.21.0 + '@univerjs/themes': 0.21.0 '@wendellhu/redi': 1.1.1(react@19.2.5) async-lock: 1.4.1 fast-diff: 1.3.0 kdbush: 4.0.2 lodash-es: 4.18.1 - nanoid: 5.1.7 - numfmt: 3.2.3 + nanoid: 5.1.9 + numfmt: 3.2.6 ot-json1: 1.0.2 rbush: 4.0.1 rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/data-validation@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/data-validation@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/design@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@univerjs/design@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -9283,17 +9369,17 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/docs-drawing-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs-drawing-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9301,24 +9387,24 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/docs-drawing@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs-drawing@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs/docs-hyper-link-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs-hyper-link-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9326,23 +9412,23 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/docs-hyper-link@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs-hyper-link@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs/docs-thread-comment-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs-thread-comment-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9350,15 +9436,15 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/docs-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9366,22 +9452,22 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/docs@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/docs@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/drawing-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/drawing-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9389,29 +9475,29 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/drawing@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/drawing@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) ot-json1: 1.0.2 rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/engine-formula@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/engine-formula@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: '@flatten-js/interval-tree': 1.1.3 - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) decimal.js: 10.6.0 rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/engine-render@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/engine-render@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: '@floating-ui/dom': 1.7.4 '@floating-ui/utils': 0.2.10 - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) cjk-regex: 3.4.0 franc-min: 6.2.0 opentype.js: 1.3.4 @@ -9419,13 +9505,13 @@ snapshots: transitivePeerDependencies: - react - '@univerjs/find-replace@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/find-replace@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9438,19 +9524,19 @@ snapshots: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - '@univerjs/network@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/network@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/preset-docs-advanced@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-advanced@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/docs-exchange-client': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/docs-print': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/exchange-client': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/docs-exchange-client': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/docs-print': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/exchange-client': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9458,11 +9544,11 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-docs-collaboration@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-collaboration@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9470,15 +9556,15 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-docs-core@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-core@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9486,12 +9572,12 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-docs-drawing@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-drawing@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/docs-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9499,10 +9585,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-docs-hyper-link@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-hyper-link@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/docs-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-hyper-link-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-hyper-link-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9510,25 +9596,25 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-docs-node-core@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-node-core@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc-node': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc-node': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/preset-docs-thread-comment@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-docs-thread-comment@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/docs-thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9536,24 +9622,24 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-advanced@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs-pro/engine-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/engine-shape': 0.20.1 - '@univerjs-pro/exchange-client': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/license': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-chart': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-chart-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-exchange-client': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-pivot': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-pivot-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-print': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-shape': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-shape-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-sparkline': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/sheets-sparkline-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-graphics': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-advanced@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 0.21.0 + '@univerjs-pro/exchange-client': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/license': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-exchange-client': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-print': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-graphics': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9561,15 +9647,15 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-collaboration@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-collaboration@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs-pro/collaboration': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/collaboration-client-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/edit-history-loader': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/edit-history-viewer': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs-pro/thread-comment-datasource': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-advanced': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/edit-history-loader': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/edit-history-viewer': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs-pro/thread-comment-datasource': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-advanced': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9577,10 +9663,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-conditional-formatting@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-conditional-formatting@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-conditional-formatting': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-conditional-formatting-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9588,22 +9674,22 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-core@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/network': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-numfmt': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-numfmt-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-core@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/network': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-numfmt-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9611,11 +9697,11 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-data-validation@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-data-validation@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9623,13 +9709,13 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-drawing@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-drawing@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/docs-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9637,10 +9723,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-filter@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-filter@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9648,10 +9734,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-find-replace@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-find-replace@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/find-replace': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-find-replace': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/find-replace': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-find-replace': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9659,10 +9745,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-hyper-link@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-hyper-link@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-hyper-link-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9670,30 +9756,30 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-node-core@0.20.1(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc-node': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-numfmt': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-sort': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-node-core@0.21.0(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc-node': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-sort': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/preset-sheets-note@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-note@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-note': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-note-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-note': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-note-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9701,10 +9787,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-sort@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-sort@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-sort': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-sort-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-sort': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-sort-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9712,10 +9798,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-table@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-table@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-table': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-table-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-table': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-table-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9723,12 +9809,12 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/preset-sheets-thread-comment@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/preset-sheets-thread-comment@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/sheets-thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9736,30 +9822,30 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/presets@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': - dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-advanced': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-collaboration': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-core': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-drawing': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-hyper-link': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-node-core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-docs-thread-comment': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-advanced': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-collaboration': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-conditional-formatting': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-core': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-data-validation': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-drawing': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-filter': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-find-replace': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-hyper-link': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-node-core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-note': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-sort': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-table': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/preset-sheets-thread-comment': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/presets@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-advanced': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-collaboration': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-core': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-drawing': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-hyper-link': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-node-core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-docs-thread-comment': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-advanced': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-collaboration': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-conditional-formatting': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-core': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-data-validation': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-drawing': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-filter': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-find-replace': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-hyper-link': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-node-core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-note': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-sort': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-table': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/preset-sheets-thread-comment': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) rxjs: 7.8.2 @@ -9767,38 +9853,38 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/protocol@0.1.48': {} - - '@univerjs/protocol@0.1.49': {} + '@univerjs/protocol@0.21.0': + dependencies: + '@grpc/grpc-js': 1.14.3 - '@univerjs/rpc-node@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/rpc-node@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/rpc@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/rpc@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-conditional-formatting-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-conditional-formatting-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-conditional-formatting': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9806,25 +9892,25 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-conditional-formatting@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-conditional-formatting@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-crosshair-highlight@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-crosshair-highlight@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9832,20 +9918,20 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-data-validation-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-data-validation-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-numfmt': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9853,31 +9939,31 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-data-validation@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-data-validation@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.48 - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-drawing-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-drawing-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9885,27 +9971,27 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-drawing@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-drawing@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs/sheets-filter-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-filter-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-filter': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-filter': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9913,24 +9999,24 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-filter@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-filter@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-find-replace@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-find-replace@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/find-replace': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/find-replace': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - '@types/react' @@ -9938,19 +10024,19 @@ snapshots: - react - react-dom - '@univerjs/sheets-formula-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-formula-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -9958,21 +10044,21 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-formula@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-formula@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-graphics@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-graphics@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -9980,21 +10066,21 @@ snapshots: - react-dom - rxjs - '@univerjs/sheets-hyper-link-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-hyper-link-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-data-validation': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-hyper-link': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10002,26 +10088,26 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-hyper-link@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-hyper-link@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-note-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-note-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-note': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-note': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10029,25 +10115,25 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-note@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-note@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-numfmt-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-numfmt-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-numfmt': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10055,25 +10141,25 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-numfmt@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-numfmt@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-sort-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-sort-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-sort': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-sort': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10081,28 +10167,28 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-sort@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-sort@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs/sheets-table-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-table-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-formula-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-sort': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-table': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-sort': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-table': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10110,27 +10196,27 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-table@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-table@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-thread-comment-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-thread-comment-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10138,29 +10224,29 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-thread-comment@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-thread-comment@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/sheets-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/protocol': 0.1.48 - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/telemetry': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/telemetry': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10168,17 +10254,17 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets-zen-editor@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets-zen-editor@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/sheets': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/sheets-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/sheets-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10186,28 +10272,28 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/sheets@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/sheets@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-formula': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/protocol': 0.1.48 - '@univerjs/rpc': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-formula': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/protocol': 0.21.0 + '@univerjs/rpc': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/slides-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/slides-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) - '@univerjs/drawing': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/drawing': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/slides': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/slides': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10215,31 +10301,31 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/slides@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/slides@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) + rxjs: 7.8.2 transitivePeerDependencies: - react - - rxjs - '@univerjs/telemetry@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/telemetry@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) transitivePeerDependencies: - react - rxjs - '@univerjs/themes@0.20.1': {} + '@univerjs/themes@0.21.0': {} - '@univerjs/thread-comment-ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/thread-comment-ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/docs-ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/docs-ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/thread-comment': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/ui': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) + '@univerjs/thread-comment': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/ui': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2) react: 19.2.5 rxjs: 7.8.2 transitivePeerDependencies: @@ -10247,18 +10333,18 @@ snapshots: - '@types/react-dom' - react-dom - '@univerjs/thread-comment@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/thread-comment@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react - '@univerjs/ui@0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/ui@0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/design': 0.20.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/design': 0.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) '@univerjs/icons': 1.1.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@wendellhu/redi': 1.1.1(react@19.2.5) localforage: 1.10.0 @@ -10269,10 +10355,10 @@ snapshots: - '@types/react' - '@types/react-dom' - '@univerjs/watermark@0.20.1(react@19.2.5)(rxjs@7.8.2)': + '@univerjs/watermark@0.21.0(react@19.2.5)(rxjs@7.8.2)': dependencies: - '@univerjs/core': 0.20.1(react@19.2.5)(rxjs@7.8.2) - '@univerjs/engine-render': 0.20.1(react@19.2.5)(rxjs@7.8.2) + '@univerjs/core': 0.21.0(react@19.2.5)(rxjs@7.8.2) + '@univerjs/engine-render': 0.21.0(react@19.2.5)(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: - react @@ -10644,8 +10730,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crypto-js@4.2.0: {} - cssesc@3.0.0: {} csstype@3.2.3: {} @@ -11589,6 +11673,8 @@ snapshots: dependencies: xml-js: 1.6.11 + fflate@0.4.8: {} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -12256,6 +12342,8 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 + long@5.3.2: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -12815,7 +12903,7 @@ snapshots: nanoid@3.3.11: {} - nanoid@5.1.7: {} + nanoid@5.1.9: {} natural-compare@1.4.0: {} @@ -12902,7 +12990,7 @@ snapshots: dependencies: boolbase: 1.0.0 - numfmt@3.2.3: {} + numfmt@3.2.6: {} object-assign@4.1.1: {} @@ -13005,8 +13093,6 @@ snapshots: package-manager-detector@1.6.0: {} - pako@2.1.0: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -13144,6 +13230,21 @@ snapshots: property-information@7.1.0: {} + protobufjs@7.5.5: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 25.6.0 + long: 5.3.2 + punycode@2.3.1: {} quansync@0.2.11: {} diff --git a/showcase/sheets/permission/code/index.ts b/showcase/sheets/permission/code/index.ts index dad93b47..9f578224 100644 --- a/showcase/sheets/permission/code/index.ts +++ b/showcase/sheets/permission/code/index.ts @@ -1,3 +1,4 @@ +import type { FUniver } from '@univerjs/presets' import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core' import sheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US' import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets' @@ -26,18 +27,18 @@ const { univerAPI } = createUniver({ univerAPI.createWorkbook(WORKBOOK_DATA) -const workbook = univerAPI.getActiveWorkbook()! -const permission = workbook?.getPermission() -if (permission) { - const unitId = workbook.getId() - const subUnitId = workbook.getActiveSheet().getSheetId() - const worksheetEditPermission = permission.permissionPointsDefinition.WorksheetEditPermission - - permission.addWorksheetBasePermission(unitId, subUnitId).then((permissionId) => { - permission.sheetRuleChangedAfterAuth$.subscribe((currentPermissionId) => { - if (currentPermissionId === permissionId) { - permission.setWorksheetPermissionPoint(unitId, subUnitId, worksheetEditPermission, false) - } - }) - }) +async function AddWorksheetProtection(univerAPI: FUniver) { + const fWorkbook = univerAPI.getActiveWorkbook() + if (!fWorkbook) return + + fWorkbook.getWorkbookPermission().setPermissionDialogVisible(false) + + const fWorksheet = fWorkbook.getActiveSheet() + if (!fWorksheet) return + + const permission = fWorksheet.getWorksheetPermission() + await permission.protect() + await permission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) } + +AddWorksheetProtection(univerAPI) diff --git a/showcase/sheets/permission/preview/main.tsx b/showcase/sheets/permission/preview/main.tsx index 602dd32a..ee4d1abe 100644 --- a/showcase/sheets/permission/preview/main.tsx +++ b/showcase/sheets/permission/preview/main.tsx @@ -1,5 +1,6 @@ 'use client' +import type { FUniver } from '@univerjs/presets' import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core' import sheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US' import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets' @@ -14,6 +15,20 @@ export default function Preview() { const { theme } = useTheme() + async function AddWorksheetProtection(univerAPI: FUniver) { + const fWorkbook = univerAPI.getActiveWorkbook() + if (!fWorkbook) return + + fWorkbook.getWorkbookPermission().setPermissionDialogVisible(false) + + const fWorksheet = fWorkbook.getActiveSheet() + if (!fWorksheet) return + + const permission = fWorksheet.getWorksheetPermission() + await permission.protect() + await permission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.Edit, false) + } + useEffect(() => { const { univerAPI } = createUniver({ darkMode: theme === 'dark', @@ -35,21 +50,7 @@ export default function Preview() { univerAPI.createWorkbook(WORKBOOK_DATA) - const workbook = univerAPI.getActiveWorkbook()! - const permission = workbook?.getPermission() - if (permission) { - const unitId = workbook.getId() - const subUnitId = workbook.getActiveSheet().getSheetId() - const worksheetEditPermission = permission.permissionPointsDefinition.WorksheetEditPermission - - permission.addWorksheetBasePermission(unitId, subUnitId).then((permissionId) => { - permission.sheetRuleChangedAfterAuth$.subscribe((currentPermissionId) => { - if (currentPermissionId === permissionId) { - permission.setWorksheetPermissionPoint(unitId, subUnitId, worksheetEditPermission, false) - } - }) - }) - } + AddWorksheetProtection(univerAPI) return () => { univerAPI.dispose() diff --git a/showcase/sheets/read-only/code/index.ts b/showcase/sheets/read-only/code/index.ts index a47f6b46..6e8716a2 100644 --- a/showcase/sheets/read-only/code/index.ts +++ b/showcase/sheets/read-only/code/index.ts @@ -30,14 +30,13 @@ univerAPI.createWorkbook(WORKBOOK_DATA) univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => { if (stage === univerAPI.Enum.LifecycleStages.Rendered) { const fWorkbook = univerAPI.getActiveWorkbook()! - const unitId = fWorkbook.getId() // disable selection fWorkbook.disableSelection() // set read only - const permission = fWorkbook.getPermission() - permission.setWorkbookEditPermission(unitId, false) + const permission = fWorkbook.getWorkbookPermission() + permission.setReadOnly() permission.setPermissionDialogVisible(false) } }) diff --git a/showcase/sheets/read-only/preview/main.tsx b/showcase/sheets/read-only/preview/main.tsx index 4db09f56..b56cf9dd 100644 --- a/showcase/sheets/read-only/preview/main.tsx +++ b/showcase/sheets/read-only/preview/main.tsx @@ -39,14 +39,13 @@ export default function Preview() { univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => { if (stage === univerAPI.Enum.LifecycleStages.Rendered) { const fWorkbook = univerAPI.getActiveWorkbook()! - const unitId = fWorkbook.getId() // disable selection fWorkbook.disableSelection() // set read only - const permission = fWorkbook.getPermission() - permission.setWorkbookEditPermission(unitId, false) + const permission = fWorkbook.getWorkbookPermission() + permission.setReadOnly() permission.setPermissionDialogVisible(false) } }) diff --git a/showcase/slides/basic-via-plugin/code/data.ts b/showcase/slides/basic-via-plugin/code/data.ts index 6be37c84..3890b019 100644 --- a/showcase/slides/basic-via-plugin/code/data.ts +++ b/showcase/slides/basic-via-plugin/code/data.ts @@ -1,5 +1,5 @@ -import type { ISlideData } from '@univerjs/core' -import { BasicShapes } from '@univerjs/core' +import type { ISlideData } from '@univerjs/slides' +import { BasicShapes } from '@univerjs/slides' export const SLIDE_DATA: Partial = { id: 'slide_test',