diff --git a/CONTEXT.md b/CONTEXT.md index 756020d..49cd10c 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -35,3 +35,43 @@ _Avoid_: screenshot, inspection result **Review URL**: A Server-scoped URL for viewing a trunk or Worktree Slide deck while the example's Web Server is running. _Avoid_: public URL, permanent share link + +**Typst Source Bundle**: +The author-owned manifest, ordered Typst page sources, optional prelude, and local assets used to create one Univer Doc. +_Avoid_: generated program, output directory + +**Materialized Doc**: +A Univer Doc created by executing the Facade program compiled from a Typst Source Bundle. +_Avoid_: Typst document, preview + +**Local Doc Library**: +A local collection of Generated Artifacts whose Materialized Docs can be discovered for human review. +_Avoid_: Workspace, document database + +**Local Doc Viewer**: +A read-only browser surface for choosing and viewing Materialized Docs from a Local Doc Library. +_Avoid_: editor, Review URL, screenshot viewer + +**Local Doc Identity**: +The `targetUnitId` shared by a Typst Source Bundle and its Materialized Doc inside one example build; it is not an external Workspace identity. +_Avoid_: Workspace ID, remote Unit ID + +**Generated Artifact**: +A replaceable output derived from a Typst Source Bundle, such as a Facade program, diagnostics, Doc UnitData, or PNG. +_Avoid_: source, authored document + +**Typst Preview**: +A PNG rendered directly from a Typst Source Bundle as evidence of the source-side layout. +_Avoid_: Univer Screenshot, final preview + +**Univer Screenshot**: +A PNG rendered from a Materialized Doc as evidence of the resulting Univer layout. +_Avoid_: Typst Preview, source preview + +**Machine Result**: +The single JSON document written to stdout when an example command succeeds in `--json` mode. +_Avoid_: JSON log, success message + +**Machine Failure**: +The single JSON document written to stderr when an example command fails in `--json` mode. +_Avoid_: stdout error, human-readable stack trace diff --git a/README.md b/README.md index c6fc023..af7eb87 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,11 @@ architecture live on the [Univer Office documentation site](https://office.unive | [`03-visual-inspection`](./examples/03-visual-inspection/README.md) | Visually inspect all three Unit types | Render Page, Screenshot, Layout Lint | | [`04-worktree`](./examples/04-worktree/README.md) | Edit in a draft and hand it to a human for review | Worktree, Ready, Merge, Reopen, Discard | | [`slide-gen-cli`](./examples/slide-gen-cli/README.md) | Generate, review, export, and view Slides with an Agent | SVG Compile, Resource Library, Agent Skill | +| [`doc-gen`](./examples/doc-gen/README.md) | Author and visually verify a Doc with Typst | Typst Compile, Doc Materialization | -Read them in numbered order. Each directory has its own `package.json`, lockfile, and dependencies, -so it can be copied and run independently. +Read examples `01` through `04` in numbered order. Unnumbered examples are self-contained. Each +directory has its own `package.json`, lockfile, and dependencies, so it can be copied and run +independently. ## 01 Content Operations diff --git a/README.zh-CN.md b/README.zh-CN.md index e0a68fd..deb5348 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -12,8 +12,10 @@ | [`03-visual-inspection`](./examples/03-visual-inspection/README.zh-CN.md) | 视觉检查前三种 Unit | Render Page、Screenshot、Layout Lint | | [`04-worktree`](./examples/04-worktree/README.zh-CN.md) | 在 draft 编辑并交给人审阅 | Worktree、Ready、Merge、Reopen、Discard | | [`slide-gen-cli`](./examples/slide-gen-cli/README.zh-CN.md) | 借助 Agent 生成、审阅、导出和查看 Slide | SVG Compile、Resource Library、Agent Skill | +| [`doc-gen`](./examples/doc-gen/README.zh-CN.md) | 使用 Typst 创作并视觉检查 Doc | Typst Compile、Doc Materialization | -请按编号阅读。每个目录都有自己的 `package.json`、lockfile 和依赖,可以独立复制和运行。 +请按编号阅读 `01` 至 `04`;无编号 example 各自独立。每个目录都有自己的 `package.json`、lockfile +和依赖,可以独立复制和运行。 ## 01 Content Operations diff --git a/examples/doc-gen/.gitignore b/examples/doc-gen/.gitignore new file mode 100644 index 0000000..16be8f2 --- /dev/null +++ b/examples/doc-gen/.gitignore @@ -0,0 +1 @@ +/output/ diff --git a/examples/doc-gen/README.md b/examples/doc-gen/README.md new file mode 100644 index 0000000..41fbb31 --- /dev/null +++ b/examples/doc-gen/README.md @@ -0,0 +1,172 @@ +# Doc Gen + +English | [简体中文](./README.zh-CN.md) + +This agent-oriented example creates editable local Univer Docs from Typst. For each request, the +agent creates or revises a task-specific Typst Source Bundle, compiles it, materializes the generated +Facade program in headless Univer, saves Doc UnitData, and reviews source-side and Univer-side PNGs. + +## Set up the example + +Requires Node.js 22.12 or later and pnpm 10.32.1. + +```bash +pnpm install --frozen-lockfile +pnpm build +pnpm link-cli +pnpm skill:install +``` + +Open this directory with an Agent and ask it to use `doc-gen`, for example: + +```text +Use doc-gen to create a two-page customer research brief. Keep the source under +authoring/customer-research and generated artifacts under output/customer-research. +``` + +The Agent creates the source instead of editing a bundled document. If you already have a bundle, +give its directory or `typst.json` path in the request. + +## Typst Source Bundle + +The path is caller-selected. A typical bundle looks like: + +```text +authoring/customer-research/ +├── typst.json +├── prelude.typ +├── pages/ +│ ├── 01.typ +│ └── 02.typ +└── assets/ + └── diagram.svg +``` + +`typst.json` declares the Local Doc Identity and ordered page sources: + +```json +{ + "schemaVersion": 1, + "targetUnitId": "customer-research", + "title": "Customer research brief", + "prelude": ["prelude.typ"], + "pages": [ + { "id": "page-01", "source": "pages/01.typ" }, + { "id": "page-02", "source": "pages/02.typ" } + ] +} +``` + +`schemaVersion`, `targetUnitId`, and `pages` are required. `title`, `prelude`, explicit page IDs, +and local `assets/` are optional. All referenced paths must stay inside the bundle. The authored +bundle remains source; generated JavaScript, JSON, and PNG files do not. + +`targetUnitId` connects this bundle to its Materialized Doc inside the local build. It is not a Workspace identity or remote Unit ID. + +Build any bundle directory or manifest path with a separate output directory: + +```bash +doc-gen compile-typst --out --json +``` + +## Generated Artifacts + +The required `--out` directory receives: + +| Path | Meaning | +| ------------------ | ------------------------------------------------ | +| `document.js` | Facade program generated from the current bundle | +| `diagnostics.json` | Structured compiler diagnostics | +| `document.json` | Saved Materialized Doc UnitData | +| `typst/*.png` | Typst Previews for source-side layout review | +| `univer/*.png` | Univer Screenshots for the converted Doc | + +The command replaces only these known artifacts. Other files in the output directory remain untouched, and the example ignores `/output/` in Git. + +In `--json` mode, success writes one Machine Result to stdout. Failure writes one Machine Failure to stderr. Error diagnostics stop before materialization; warnings allow success and remain in the result for review. + +## View generated Docs + +Use `output/` when you want a generated Doc to appear in the repository-local Local Doc +Library: + +```bash +doc-gen compile-typst authoring/customer-research \ + --out output/customer-research --json +pnpm viewer +``` + +The loopback-only page opens in your browser and lists every matching +`output//document.json`. Select an entry in the sidebar to switch Docs. Add or remove a Doc +while the page is running and use the automatic development update or **Refresh** to update the +list without restarting Vite. + +The Viewer loads a disabled in-memory copy and hides Univer's editing ribbon and floating formatting UI. Typing, pasting, +deleting, formatting, saving, and file write-back are unavailable; scrolling, zooming, text +selection, and copying remain available. An +explicit `--out` path outside `output/` still works with every CLI command but does not appear +in the Viewer. + +`pnpm build` records the Local Doc Library visible at build time in `dist/viewer`; rebuild to include +later changes. That directory is a local snapshot, not a published or continuously updated service. +The Viewer supports human inspection only and does not replace Agent review of Typst Previews and +the latest Univer Screenshots. + +## Visual review + +Read both PNG groups after every successful build: + +1. Check Typst Previews for requested text, hierarchy, margins, wrapping, and table geometry. +2. Check Univer Screenshots for the same content, clipping, missing blocks, and conversion differences. +3. Report remaining warnings. Visual verification stays pending if either image group cannot be read by an image-capable model. + +The bundled `doc-gen` skill encodes bundle creation, compilation, and review. Install or remove its +local symlink with: + +```bash +pnpm skill:install +pnpm skill:uninstall +``` + +## Refine the Materialized Doc + +Fix content and layout in the Typst Source Bundle whenever possible, then rebuild. For a native Doc +capability or a final precise adjustment, query the installed offline Facade reference: + +```bash +doc-gen api find paragraph --unit doc +doc-gen api show FDocumentParagraph.setText +``` + +Write the adjustment as a task-local script. `execute` supplies `univerAPI`, `api`, and `doc`; the +script must not redeclare them. Read the script before running it, check mutation return values, and +return JSON-compatible readback explicitly: + +```js +const paragraph = doc.getParagraphs()[0]; +if (!paragraph) throw new Error("paragraph missing"); +const changed = paragraph.setText(`${paragraph.getText()} [reviewed]`); +if (!changed) throw new Error("paragraph update failed"); +return { text: paragraph.getText() }; +``` + +Apply it to the current Materialized Doc, refresh its screenshots, and read every new PNG: + +```bash +doc-gen execute /document.json --file --json +doc-gen screenshot /document.json \ + --out /univer --json +``` + +`execute` changes the Generated Artifact, not the Typst Source Bundle. A later `compile-typst` +rebuild replaces those changes; reapply any still-needed final adjustment afterward. There is no +automatic replay. + +## Runtime boundaries + +- Typst compilation supports the native binding targets published for macOS x64/arm64, Linux glibc x64/arm64, and Windows x64. Linux musl and Windows arm64 are outside this example's supported matrix. +- Univer Screenshots require Chrome, Chromium, or Edge. Set `UNIVER_RENDER_BROWSER` when automatic discovery cannot find the executable. +- The example includes its application-owned 90-day development license for headless execution and screenshots. Replace it on the stated rotation schedule in `src/shared/license.ts`. +- `compile-typst` uses only the package's native Typst binding and executes only the program returned by its current compile. It does not use a system Typst executable. +- `execute` runs trusted local JavaScript supplied with `--file`; it is not sandboxed. Do not run downloaded, unknown, or previously generated `document.js` files. +- `screenshot` reads `document.json` directly through the Render Runtime and does not create a headless Univer, Server, or Worktree. diff --git a/examples/doc-gen/README.zh-CN.md b/examples/doc-gen/README.zh-CN.md new file mode 100644 index 0000000..66e7d5e --- /dev/null +++ b/examples/doc-gen/README.zh-CN.md @@ -0,0 +1,162 @@ +# Doc Gen + +[English](./README.md) | 简体中文 + +这个面向 agent 的示例使用 Typst 创作可编辑的本地 Univer Doc。Agent 为每个请求创建或修改独立的 Typst Source Bundle,编译源稿,在 headless Univer 中物化 Facade program,保存 Doc UnitData,并检查源侧和 Univer 侧两组 PNG。 + +## 设置示例 + +需要 Node.js 22.12 或更高版本,以及 pnpm 10.32.1。 + +```bash +pnpm install --frozen-lockfile +pnpm build +pnpm link-cli +pnpm skill:install +``` + +用 Agent 打开此目录并要求它使用 `doc-gen`,例如: + +```text +使用 doc-gen 创作一份两页的客户研究简报。源稿放在 authoring/customer-research, +生成产物放在 output/customer-research。 +``` + +Agent 会创建源稿,不会修改仓库内置文档。如果你已有 bundle,请在请求中提供其目录或 +`typst.json` 路径。 + +## Typst Source Bundle + +调用者决定 bundle 路径。典型结构如下: + +```text +authoring/customer-research/ +├── typst.json +├── prelude.typ +├── pages/ +│ ├── 01.typ +│ └── 02.typ +└── assets/ + └── diagram.svg +``` + +`typst.json` 声明 Local Doc Identity 和有序页面源文件: + +```json +{ + "schemaVersion": 1, + "targetUnitId": "customer-research", + "title": "客户研究简报", + "prelude": ["prelude.typ"], + "pages": [ + { "id": "page-01", "source": "pages/01.typ" }, + { "id": "page-02", "source": "pages/02.typ" } + ] +} +``` + +`schemaVersion`、`targetUnitId` 和 `pages` 必填;`title`、`prelude`、显式 page ID 和本地 +`assets/` 可选。所有引用路径必须位于 bundle 内。bundle 是创作源;生成的 JavaScript、JSON 和 +PNG 不是源稿。 + +`targetUnitId` 只在本地构建中连接 Typst Source Bundle 与 Materialized Doc。它不是 Workspace identity 或远程 Unit ID。 + +把任意 bundle 目录或 manifest 路径编译到独立输出目录: + +```bash +doc-gen compile-typst --out --json +``` + +## Generated Artifact + +必填的 `--out` 目录包含: + +| 路径 | 含义 | +| ------------------ | ------------------------------------ | +| `document.js` | 从当前 bundle 生成的 Facade program | +| `diagnostics.json` | 结构化 compiler diagnostics | +| `document.json` | 保存后的 Materialized Doc UnitData | +| `typst/*.png` | 用于检查源侧布局的 Typst Preview | +| `univer/*.png` | 用于检查转换结果的 Univer Screenshot | + +命令只替换这些已知 artifact,保留输出目录中的其他文件。示例通过 Git 忽略 `/output/`。 + +在 `--json` 模式下,成功只向 stdout 写一个 Machine Result;失败只向 stderr 写一个 Machine Failure。error diagnostic 会在物化前停止;warning 允许成功,并保留在结果中供检查。 + +## 查看生成的 Doc + +需要让生成结果出现在仓库内 Local Doc Library 时,把输出目录设为 `output/`: + +```bash +doc-gen compile-typst authoring/customer-research \ + --out output/customer-research --json +pnpm viewer +``` + +命令会在浏览器中打开仅监听 loopback 的页面,并列出所有匹配的 +`output//document.json`。通过侧栏可以切换 Doc。页面运行期间新增或删除 Doc 后,开发态 +更新或点击 **Refresh** 即可刷新列表,无需重启 Vite。 + +Viewer 只加载禁用编辑的内存副本,并隐藏 Univer 编辑 ribbon 与浮动格式 UI;不支持键入、粘贴、删除、格式修改、 +保存或文件写回,滚动、缩放、文本选择和复制仍然可用。显式指定到 `output/` 之外的 `--out` +路径仍可用于所有既有 CLI command,但不会出现在 Viewer 中。 + +`pnpm build` 会把构建时可见的 Local Doc Library 保存为 `dist/viewer` 快照;后续内容变化需要 +重新构建。该目录不是发布服务,也不会持续同步磁盘。Viewer 只用于人工查看,不能替代 Agent 对 +Typst Preview 和最新 Univer Screenshot 的检查。 + +## 视觉检查 + +每次成功构建后都要读取两组 PNG: + +1. 检查 Typst Preview 中的文本、层级、边距、换行和表格布局。 +2. 检查 Univer Screenshot 中的相同内容、裁切、缺失 block 和转换差异。 +3. 报告剩余 warnings。如果具备图像能力的模型无法读取任意一组图像,视觉验证保持 pending。 + +内置 `doc-gen` skill 固化了 bundle 创建、编译和检查流程。用以下命令安装或删除本地 symlink: + +```bash +pnpm skill:install +pnpm skill:uninstall +``` + +## 微调 Materialized Doc + +可以用 Typst 表达的文案和版式问题应修改 Typst Source Bundle 后重建。需要原生 Doc 能力或 +最后一步精确调整时,先查询随安装包提供的离线 Facade reference: + +```bash +doc-gen api find paragraph --unit doc +doc-gen api show FDocumentParagraph.setText +``` + +把调整写成当前任务的本地脚本。`execute` 已提供 `univerAPI`、`api` 和 `doc`,脚本不得重复 +声明。运行前先读取脚本,检查 mutation 返回值,并显式返回 JSON-compatible readback: + +```js +const paragraph = doc.getParagraphs()[0]; +if (!paragraph) throw new Error("paragraph missing"); +const changed = paragraph.setText(`${paragraph.getText()} [已复核]`); +if (!changed) throw new Error("paragraph update failed"); +return { text: paragraph.getText() }; +``` + +把脚本应用到当前 Materialized Doc,刷新截图并读取每张新 PNG: + +```bash +doc-gen execute /document.json --file --json +doc-gen screenshot /document.json \ + --out /univer --json +``` + +`execute` 修改 Generated Artifact,不修改 Typst Source Bundle。之后再次运行 `compile-typst` +会覆盖这些调整;仍需要的最终微调必须重新执行。本示例不提供自动 replay。 + +## 运行边界 + +- Typst compile 支持已发布 native binding 的 macOS x64/arm64、Linux glibc x64/arm64 和 Windows x64;Linux musl 与 Windows arm64 不在本示例支持范围内。 +- Univer Screenshot 需要 Chrome、Chromium 或 Edge。自动发现失败时设置 `UNIVER_RENDER_BROWSER`。 +- 示例内置用于 headless 执行和截图的应用自有 90 天开发 License;请按 `src/shared/license.ts` 中注明的轮换周期及时替换。 +- `compile-typst` 只使用 package 自带的 Typst native binding,并只执行当前 compile 返回的 program;不会调用系统 Typst。 +- `execute` 运行 `--file` 指定的可信本地 JavaScript,且不提供 sandbox。不得运行下载、未知或此前生成的 `document.js`。 +- `screenshot` 通过 Render Runtime 直接读取 `document.json`,不创建 headless Univer、Server 或 Worktree。 diff --git a/examples/doc-gen/components.json b/examples/doc-gen/components.json new file mode 100644 index 0000000..bdd7675 --- /dev/null +++ b/examples/doc-gen/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/viewer/styles.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@/viewer/components", + "ui": "@/viewer/components/ui", + "utils": "@/viewer/lib/utils", + "lib": "@/viewer/lib", + "hooks": "@/viewer/hooks" + } +} diff --git a/examples/doc-gen/package.json b/examples/doc-gen/package.json new file mode 100644 index 0000000..ea9b451 --- /dev/null +++ b/examples/doc-gen/package.json @@ -0,0 +1,61 @@ +{ + "name": "@univer-cli-example/doc-gen", + "version": "0.0.0", + "private": true, + "bin": { + "doc-gen": "./dist/cli/main.js" + }, + "type": "module", + "scripts": { + "build": "vite build --config vite.render.config.ts && vite build --config vite.viewer.config.ts && tsc -p tsconfig.json", + "check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm test", + "format": "oxfmt .", + "format:check": "oxfmt --check .", + "link-cli": "pnpm link --global", + "lint": "oxlint .", + "skill:install": "node scripts/skill.mjs install", + "skill:uninstall": "node scripts/skill.mjs uninstall", + "test": "pnpm build && vitest run --root . test", + "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.web.json --noEmit", + "unlink-cli": "pnpm remove --global @univer-cli-example/doc-gen", + "viewer": "vite --config vite.viewer.config.ts --host 127.0.0.1 --open /src/viewer/" + }, + "dependencies": { + "@radix-ui/react-separator": "^1.1.8", + "@radix-ui/react-slot": "^1.2.4", + "@univer-cli/api-reference": "1.0.0-beta.2", + "@univer-cli/api-reference-command": "1.0.0-beta.2", + "@univer-cli/content-execution": "1.0.0-beta.2", + "@univer-cli/doc-typst-facade": "1.0.0-beta.2", + "@univer-cli/headless-univer": "1.0.0-beta.2", + "@univer-cli/unit-screenshot": "1.0.0-beta.2", + "@univer-cli/univer-render-page": "1.0.0-beta.2", + "@univer-cli/univer-render-runtime": "1.0.0-beta.2", + "@univerjs/core": "1.0.0-beta.2", + "@univerjs/ui": "1.0.0-beta.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "commander": "^15.0.0", + "lucide-react": "^1.40.0", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "tailwind-merge": "^3.6.0" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.3.3", + "@types/node": "^24.10.0", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.7", + "@vitejs/plugin-react": "^6.1.1", + "oxfmt": "0.64.0", + "oxlint": "1.79.0", + "tailwindcss": "^4.3.3", + "typescript": "^7.0.2", + "vite": "^8.0.0", + "vitest": "^4.1.10" + }, + "engines": { + "node": ">=22.12.0" + }, + "packageManager": "pnpm@10.32.1" +} diff --git a/examples/doc-gen/pnpm-lock.yaml b/examples/doc-gen/pnpm-lock.yaml new file mode 100644 index 0000000..f0c709b --- /dev/null +++ b/examples/doc-gen/pnpm-lock.yaml @@ -0,0 +1,5883 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@radix-ui/react-separator': + specifier: ^1.1.8 + version: 1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': + specifier: ^1.2.4 + version: 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@univer-cli/api-reference': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2 + '@univer-cli/api-reference-command': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(commander@15.0.0) + '@univer-cli/content-execution': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2 + '@univer-cli/doc-typst-facade': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2 + '@univer-cli/headless-univer': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univer-cli/unit-screenshot': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univer-cli/univer-render-page': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(@univer-cli/univer-render-runtime@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univer-cli/univer-render-runtime': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + commander: + specifier: ^15.0.0 + version: 15.0.0 + lucide-react: + specifier: ^1.40.0 + version: 1.40.0(react@19.2.8) + react: + specifier: ^19.2.8 + version: 19.2.8 + react-dom: + specifier: ^19.2.8 + version: 19.2.8(react@19.2.8) + tailwind-merge: + specifier: ^3.6.0 + version: 3.6.0 + devDependencies: + '@tailwindcss/vite': + specifier: ^4.3.3 + version: 4.3.3(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)) + '@types/node': + specifier: ^24.10.0 + version: 24.13.3 + '@types/react': + specifier: ^19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: ^19.2.7 + version: 19.2.7(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: ^6.1.1 + version: 6.1.1(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)) + oxfmt: + specifier: 0.64.0 + version: 0.64.0 + oxlint: + specifier: 1.79.0 + version: 1.79.0 + tailwindcss: + specifier: ^4.3.3 + version: 4.3.3 + typescript: + specifier: ^7.0.2 + version: 7.0.2 + vite: + specifier: ^8.0.0 + version: 8.2.2(@types/node@24.13.3)(jiti@2.7.0) + vitest: + specifier: ^4.1.10 + version: 4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)) + +packages: + + '@flatten-js/interval-tree@1.1.3': + resolution: {integrity: sha512-xhFWUBoHJFF77cJO1D6REjdgJEMRf2Y2Z+eKEPav8evGKcLSnj1ud5pLXQSbGuxF3VSvT1rWhMfVpXEKJLTL+A==} + + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/react-dom@2.1.9': + resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.8.1': + resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} + engines: {node: '>=6'} + hasBin: true + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@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==} + + '@noble/ciphers@2.4.0': + resolution: {integrity: sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw==} + engines: {node: '>= 20.19.0'} + + '@noble/ed25519@3.1.0': + resolution: {integrity: sha512-pfcObRY3CtvwfaG9Mt5XqZdKmAQppl37tHUeuBhDUbiwJBCVY4/A4lbMvb1xKhMDx96AqAqZpMWuBX1HulhX4g==} + + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} + + '@oxc-project/types@0.147.0': + resolution: {integrity: sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==} + + '@oxfmt/binding-android-arm-eabi@0.64.0': + resolution: {integrity: sha512-o6uzh/jTOQeAY5TdkAeXdqv7MBRcPxiRA08zrcBtkKj5cSu/FMu0Hl7Q6Fi1KCKyCWZ6lJVjBzdsJvsKltUsGQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.64.0': + resolution: {integrity: sha512-jRGSUeeP7p3Gynw2YaCVtjBIA6ZxY6bEB/ES5i54OhqmRTyuVg7ZgstEtzgq6GOAJd+2QZ5pvf+bFfmW5Mp9cw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.64.0': + resolution: {integrity: sha512-JINwtU2lW7nOFSqi+H2qplipNUqah9Gc1jgGmB82kTD4UnZrZIVxCJ9qEmFiKfjNq27gYLFhrUb0to86aCwMjw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.64.0': + resolution: {integrity: sha512-gCmuswrgrOSajV4HCRFkVCGIruPq8bjYuPYgSE2WQB3mD6XrdyZ3JMSRZCkQ8zCxOyGWriBo6QoZ5nmMHQ1BfA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.64.0': + resolution: {integrity: sha512-Ab8g7a38pT0MMImjh7anRSTve6buWBIlcXIFBYa5xl4s6UxEgKSc2xOOhbGtLwvXnEi2PsEDGoJh3oUU7xkehQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.64.0': + resolution: {integrity: sha512-BgvS3CoQ+Xy2deoZqEN8JVKabcCZi2RxA3yant8G9OAv9KuPJ9TCjHkqigzdHUVwErZxEP5d2bzLIEyKYyBDLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.64.0': + resolution: {integrity: sha512-QXpNxwoMj0YvnceCNZadNSden3bIcnvjn/sDp/rwZhRoZoZYGpHvtPyhGsdJz9uvT9GkaMW7SsLddurU56dt8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.64.0': + resolution: {integrity: sha512-BBgH3I1ppDsI5pZ4Pdhw0ceYxwVCfbU/bZEBCeZ6caRS9x0ZabErxubP7riGUn11PXZBhe8DYdjkDKP1FlVQ5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.64.0': + resolution: {integrity: sha512-v19HSjC/BGXdt26qEvKZtwAHgGmQ2Agcap2kQP+KIqoRZqivVzYth3ui2dJA1i+6/fjpjga85lIOaJJjQ/bOOw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.64.0': + resolution: {integrity: sha512-PElLnOo4xFTBZrxPhgTIj0eHqZXwEBQoNWtb7facUV170T0B0FRET0iNbb3LUeLWTybkUW+vsdyv4ihOdyXGyw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.64.0': + resolution: {integrity: sha512-Qzsg15n4F5CH+MorcRW4MkAEMiLzXmeG+DiDSbP/bBTqCmWOH3K9DHryNrve+JHlV0txS+B6Z9P5Xz+cmWeL+g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.64.0': + resolution: {integrity: sha512-/GZ358wnQ/Ez4UVnCcZIi56JkY0sOdZ+B108pqXKqZz3jLS59F4KEAB1Qv3fRlObrFEk+3L2vUQ/xoPx+3vjXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.64.0': + resolution: {integrity: sha512-/C9We3DXegowfLXtVCYHeNiU9azwCDr5cQkEtCVlc74vyn+lLQSPApJ1CZmxAduqeq/Oi3gQ+IVptyhCaTMtkQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.64.0': + resolution: {integrity: sha512-91KM2CeRWscIEHlj1NsW2WSnzGeq1Ehq+39bfDowTdkn+fcvK/x4Y1RcyqT7glyBjZio0ldkeCG6Usj3v7ASog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.64.0': + resolution: {integrity: sha512-gw7uEk9I+7zoT1EYLra1eWArIzNcz8e3jkv+Noo2+o2T7wPvsNSQbfoa4DSfZlvn1i6mJ05RiZ4/omaXPDNhQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.64.0': + resolution: {integrity: sha512-HYHFf616FHSPSO07c09mjmXBfQ73wIVM3m0txOiooa5XZkGoxFd6B14PVj0LB0DXIqJ6wAO/dDR/NX/5UUaqnw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.64.0': + resolution: {integrity: sha512-uQjFp081IZSWD6VAofX2iO2z01awAdHmfC+NrieWIPKrT2hZKQDyq/U18M7ifC0sm0Wz8aHY/p6+FDYIzs/CrQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.64.0': + resolution: {integrity: sha512-lNM6byTAQ881jugzFu8juJTbNRgsUTlswMA6pJmwi1XDvmIqnnb49lcUAs5gz94fCJLrVN+/X3s3jOKqx23WIQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.64.0': + resolution: {integrity: sha512-BtmbtL/QjMtF1a6C3CqoDluH2IfB6fJt62E+B9RFfUPtFk4Iz9PFS6+y/SzzOvSxc7aUk2Kphwg7Dh8lMbwu6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.79.0': + resolution: {integrity: sha512-TebFaaMklO/RXzTv7PucaCq9l3X6D1gA+C8H6K4njtjFOV+zWE9MKLpulcJZN9bzytbUbQIY0mZuz12nQ5Kv4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.79.0': + resolution: {integrity: sha512-KqqnOtAVgNsPPF0YSodkFZA1O80jcKoCZCTu3bgsszxA+MrMP9TLzfXitKjEj1FmrPprKDMdRDMmY3weESO9sg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.79.0': + resolution: {integrity: sha512-BVC2nsMzqQzRDPc5RhixkZ+m1p7iH4bxRRvqkbwDXX0PlQKm1BPy8J8cRjnAFafOq2QzI+BfO3vE8w2GZ3CBag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.79.0': + resolution: {integrity: sha512-p6Lm+snmhGuLKL1+CpCV8L6ijkE/qJzK2H2jG9+eKJT0n31RbY4FLsdhexekgP3bLpw4Kgde+9DZuDZQ4yIInA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.79.0': + resolution: {integrity: sha512-qDMm0dXZnoHyRqSL4N4xUq82T4sqK5cbKSjvd/dF/YbMUXc2R1wEPf+vmA5S0qUmi0nwXfNbjXBtZaIqzQLIMg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.79.0': + resolution: {integrity: sha512-2od7s0nuKPzqyUZAWk9KkCyGg7eI9dwFPZg+20lB15fKFkVZ0c9ZFxqPfiBAyDTlTkh9stPI0t+JlPCqMbItVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.79.0': + resolution: {integrity: sha512-ZOQUjkzDnvlhSE3+tWC3YXx94MMl+sYMlwH+u1+YGApGHOJP/YAc8ZBRFOXZ6eOBmxtXAWuS/fBcdZr8qqNO1A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.79.0': + resolution: {integrity: sha512-lu158FR4nGqGeRS3BQvtG85wRgU/Fy4MD5Cxp1hzJXizGiLo6u2742wJSCDKh8cFcZntvX7fcxlq4mMmfryH1g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.79.0': + resolution: {integrity: sha512-mbpKQeE2aflTjddaHK7MP8KP/OFbUM++lt5M635ENM8IyIdK0jm2t9pb+2v9mVVIvhF6TqA4l7F79Pll1mi+uw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.79.0': + resolution: {integrity: sha512-WpGNua7gaxaHnpSDeog2ji8IDHn/QLPl9LPzwkR/FvVv58vT5BcXjRXnU+wbu3N75cpeha8CdC7ho/U2OIsB4g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.79.0': + resolution: {integrity: sha512-tK1E93A5LVzISg4ngpKJnfTs7EqtIUceGI7MQ4GyDjJiLi8wPCkEyKlj2xkyKWZ1yzkDJyLHTBJ5/iFWRdnJvg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.79.0': + resolution: {integrity: sha512-qhQvUIrngXivA2A9pQ+xPCychztn/5qUv7yS3gDwXv3w7Rag+eTeeXWmRyx+t7XsW5x6LuY/8AsTq36UgFIblg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.79.0': + resolution: {integrity: sha512-sv6AaVgU/eE6u+6WFiQVDcPPwTxP6IJMSB9k701W2r/r6Tx465e8vPvVyRxquNH4Vy6KwRNu90mVbxXJN8+5gg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.79.0': + resolution: {integrity: sha512-iFZL02deziHslb3jEX9KdqlAkYoo4fGyotchKDzdfK1f5mxlIBeiQeHhvK3iFpuEJSB4ma/qeFn9oxPiwnhUPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.79.0': + resolution: {integrity: sha512-3DtZR2raqObnh7wXZoFYFd0Fw7skBvcb3f7A+/lkEiDuh8hrE6vv9b/62Qxao1a9/OeHLw/FcXlXzgsW9wTRFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.79.0': + resolution: {integrity: sha512-Oatt4GuA1WJkqzk2ozx4HrWROOi7opV3AKDw/U8qDIqeTqzsjn5K2x3REJMNjU3/KU/Bkq96Zi3CknaiDTaC/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.79.0': + resolution: {integrity: sha512-NAgZr9Qp8nIA9rpo0JEvwiabTF/2UVqBNnupBG9X4kxXcQoScJUTi+qHhvabb9s/thgj5wQ4XcIaJvb+ZMgoKw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.79.0': + resolution: {integrity: sha512-+KyXjIvcpaXmWW/j9NNY5yWjrIVxaX18VyIheQy3jwc2GSYgpCr7MGI/HxIGQ/shAL5IWEKbhsqoMpAO5Stiog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.79.0': + resolution: {integrity: sha512-mEelcCMMBS57sIXh2veGMNy+pQwuGtcMxHxGIZWQ5Ba9pJ5jCCUFOZB9E2JhBaxGsURe+WGe0zJp4RVre52gpQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@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.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} + + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} + + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@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.2': + resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} + + '@puppeteer/browsers@3.2.1': + resolution: {integrity: sha512-KDz+3qDRdBAlRlMjmKyj6dEs33YHTk/xRHEENSXq6TNnhgoU15ruSHtEBeVF6OZ9tBDY55Se4P0nFMNsipzU9A==} + engines: {node: '>=22.12.0'} + hasBin: true + peerDependencies: + proxy-agent: '>=8.0.1' + yauzl: ^2.10.0 || ^3.4.0 + peerDependenciesMeta: + proxy-agent: + optional: true + yauzl: + optional: true + + '@radix-ui/primitive@1.1.7': + resolution: {integrity: sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==} + + '@radix-ui/react-arrow@1.1.15': + resolution: {integrity: sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.15': + resolution: {integrity: sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.5': + resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.2.2': + resolution: {integrity: sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.23': + resolution: {integrity: sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.4': + resolution: {integrity: sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.19': + resolution: {integrity: sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.24': + resolution: {integrity: sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.6': + resolution: {integrity: sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.16': + resolution: {integrity: sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.23': + resolution: {integrity: sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.4': + resolution: {integrity: sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.24': + resolution: {integrity: sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.23': + resolution: {integrity: sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.3.7': + resolution: {integrity: sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.17': + resolution: {integrity: sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.10': + resolution: {integrity: sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.10': + resolution: {integrity: sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.19': + resolution: {integrity: sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.1.15': + resolution: {integrity: sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.3.3': + resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.4': + resolution: {integrity: sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.6': + resolution: {integrity: sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.5': + resolution: {integrity: sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-is-hydrated@0.1.3': + resolution: {integrity: sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.4': + resolution: {integrity: sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.4': + resolution: {integrity: sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.4': + resolution: {integrity: sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/rect@1.1.3': + resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==} + + '@rolldown/binding-android-arm-eabi@1.2.6': + resolution: {integrity: sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.6': + resolution: {integrity: sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.6': + resolution: {integrity: sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.6': + resolution: {integrity: sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.6': + resolution: {integrity: sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.6': + resolution: {integrity: sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.6': + resolution: {integrity: sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.2.6': + resolution: {integrity: sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.2.6': + resolution: {integrity: sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.2.6': + resolution: {integrity: sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.2.6': + resolution: {integrity: sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.2.6': + resolution: {integrity: sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.2.6': + resolution: {integrity: sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-win32-arm64-msvc@1.2.6': + resolution: {integrity: sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.6': + resolution: {integrity: sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tailwindcss/node@4.3.3': + resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==} + + '@tailwindcss/oxide-android-arm64@4.3.3': + resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.3': + resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.3': + resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==} + engines: {node: '>= 20'} + + '@tailwindcss/vite@4.3.3': + resolution: {integrity: sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} + + '@types/react-dom@19.2.7': + resolution: {integrity: sha512-I8bPpDLcHBv1qiIiXDCy71Rt8eQDKJP0sMSWJphDdAcdqiJ1sGpZamavoEIRZmYzjia9LuEb2HlYdDpmoENpvQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@univer-cli/api-reference-command@1.0.0-beta.2': + resolution: {integrity: sha512-g9dlNMfjfotDqTi55xCaunGVBnzKRavAtCkHwo4bSs8h/fY3IasPRojXFQ3LbITMUEDvA+pGywpkFavfBSYMkg==} + peerDependencies: + commander: ^15.0.0 + + '@univer-cli/api-reference@1.0.0-beta.2': + resolution: {integrity: sha512-fwKOziQV4d3+b95EY8PP2LercK55H6q6z6yU+Dy7l/vZVsxHXXz9YAFI0WJQiDkZj7TJXjFYoRIQrb2tlyI93w==} + + '@univer-cli/content-execution@1.0.0-beta.2': + resolution: {integrity: sha512-jL2koTK9BkkzTEGmvWnVyvikk6BsQP6tP9n8V6xf4nCfUXoGrAT+A5BsHoJURIFmVOMArdnJxz43liHEcARy8Q==} + + '@univer-cli/doc-typst-facade@1.0.0-beta.2': + resolution: {integrity: sha512-PWPbtIn1PTwcttVbK83Bk14Bw9QEnOFzM71JG2ya6klIrK5epcs8Quf3bund5289qyOmc16yLayXwZCvq5/UPw==} + + '@univer-cli/headless-univer@1.0.0-beta.2': + resolution: {integrity: sha512-JGVMUn5lALimpNpsK3iPhaWVoqV2z7LPnVoVS+NdxeJuokPocaxfChCFOUxydKQYnIUA4AXvUXCfVLcjvVL+sw==} + + '@univer-cli/unit-screenshot@1.0.0-beta.2': + resolution: {integrity: sha512-ewAaMcu66QRsFrxLcSe9mfYcGUQZpDimhrQNpBMerUStdL+uaPVbaXX/2rzlBIdL1nCm9KKDFfY0PF3EQ6ubcQ==} + + '@univer-cli/univer-render-page@1.0.0-beta.2': + resolution: {integrity: sha512-tahlWyYHF769bMu4d5F8iPtUzZazvyTpDEAiAO10BXHuWEZ7fUFVh90nqfsOa3N1mprKK9ZhnYhvJAq6atXUIw==} + peerDependencies: + '@univer-cli/univer-render-runtime': 1.0.0-beta.2 + + '@univer-cli/univer-render-runtime@1.0.0-beta.2': + resolution: {integrity: sha512-zoX/zLgQALfBrXCZxsCU5NaBbald7/WSDC98yYBZd5x/Y+tqHAXs/gXoA5Hnywr3dGCG+0scbulajDOPRZNLTg==} + + '@univerjs-pro/bases-ui@1.0.0-beta.2': + resolution: {integrity: sha512-qxK7M7gVGymTcR3TZBTVjHfQrdY2Pn9oA7vopQuK/qb3dx/V5P6ixBvxzf+/YpqZ8trzlLBOGFqfkTKtuZbE2Q==} + 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-pro/bases@1.0.0-beta.2': + resolution: {integrity: sha512-HhIvSA3UWSvDeY2AxTk19Y2LgKpadLQaMZ+j0dVjNXpf/vD9UGUKNqTzHQcEBdmpImJUaq5OCFaNqNV1q/dx0Q==} + + '@univerjs-pro/boards-chart-ui@1.0.0-beta.2': + resolution: {integrity: sha512-Qr78rhMHxt4hbbCoaI2lSsxuCbl5jqRF8p0MJ8MgDeQaO+6pSMTJkCtEzYS3VvJL3XwOAbbW7LpSMf7cR2nDTA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/boards-chart@1.0.0-beta.2': + resolution: {integrity: sha512-CaiP6jPr5cCqQZ8R0GWp+fxUxtUNJMI3cVCuTGSpDSctnjNBqbmucJVrSh03XxtgP6udGlFeehDE2DmbDJriPg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/boards-mind-ui@1.0.0-beta.2': + resolution: {integrity: sha512-hEQTQdur8s/3obyl+39bn1N112QKumuSPIl7x7cTFC86lFhL5dP/VQMYs8v/u6NthvZOj4qWKIMnJhZbMprB1Q==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/boards-mind@1.0.0-beta.2': + resolution: {integrity: sha512-2UX04hlAvml598Rb4o3klQ7mxfon6AgSlO3h2ekXBIQGFUo3jC81M/7CBp0ukNeE2unIReeKXJAKnq0FtN7yIQ==} + + '@univerjs-pro/boards-print@1.0.0-beta.2': + resolution: {integrity: sha512-vrm9DCNtdm0TiUJ+B5s2nb4XMLzOEgh7NsdCv4j/zM5tcilHei1sYpEpyj69JD3JUiw495+DrMIHlkcFhIyX1Q==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/boards-table-ui@1.0.0-beta.2': + resolution: {integrity: sha512-TmsImiAzBWaFEAcHXY4VA8OdVNYqe5sZ2VqPYYio6sDi+T2S45EbeoY20y2CqP8GEK5HiGife5QvOEI7uSRZLQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + '@univerjs-pro/boards-table@1.0.0-beta.2': + resolution: {integrity: sha512-4YGpyqGdjEJEDCF8hpO2TnALw+XTJ4erPZpAwonytlw2z4TaeydOaBBxux8v05uVS7dTpRn0bRjdfiDB02jDDw==} + + '@univerjs-pro/boards-ui@1.0.0-beta.2': + resolution: {integrity: sha512-bcJ6dg89SI8dDseQUFtXm0Wxj2THKcYCc7QvkjPj7xBDy2g/abGVSB+g/1ySngcf3xWsXbZ7G2N28JYsPWhcYg==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/boards@1.0.0-beta.2': + resolution: {integrity: sha512-tUEWBIbINtvsUrDJ45xbDMO2tkB37FBYl3HC1jYs4pbKzvyg+eyucS21n66UJbCvSselheulC40jl8N4jPLajw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/chart-ui@1.0.0-beta.2': + resolution: {integrity: sha512-SJPXdRkzNw70ucjuqSrQL0oO+oog8jlzTgrNOUkkHktLqD6ZdiYY5piYit2C+mFdOYUThSN6hMkHYRYiD6UEbA==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-9tXRLkjab+sgCROoIPKA0OgtbN0oo6hc1GLH9ccgfmHlt840wYa6THZIko+NICSNxRnlircTLClHF2Tyczw5BA==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/collaboration@1.0.0-beta.2': + resolution: {integrity: sha512-lJRRRvPzspxsnPon6g1eb1b7qwa5RsiSKfpN2qLr4ctCHtlPj96W0TPTRfGSaRpHjXpYkM/1ohFGQEAceQEiHg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/doc-typst-native-binding-darwin-arm64@1.0.0-insiders.20260723-c21613b': + resolution: {integrity: sha512-minb6rFjJNHvFF8DpuWFAAYcH2prelrfkpqYeYYWzjajBbdB911eSUNHcToPPiiUNYRAA4S+A2axcnJPtnHN7A==} + cpu: [arm64] + os: [darwin] + + '@univerjs-pro/doc-typst-native-binding-darwin-x64@1.0.0-insiders.20260723-c21613b': + resolution: {integrity: sha512-kkjuhKHd6BenslxpDfRJl+93V1JpYhFPZQuWnCMvbJQ05X3OEZzJrM9DakpM1c0o07EvqG5RPI2x7VgCFU/gpA==} + cpu: [x64] + os: [darwin] + + '@univerjs-pro/doc-typst-native-binding-linux-arm64-gnu@1.0.0-insiders.20260723-c21613b': + resolution: {integrity: sha512-74261peO1VLe54tA8h27v5ySfr2Oad7OYwhkUcjhrfyPQA3CyTxXF6Dd3sBO72iZr7SUhWNLUD4sXIRvTxyneg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@univerjs-pro/doc-typst-native-binding-linux-x64-gnu@1.0.0-insiders.20260723-c21613b': + resolution: {integrity: sha512-4ot4wDNCkI1r6pXK6WW0hRPTgmqPoZ1P2I4Y3SbZQQA/4ycvCOR82uGsj7Xe5zSIxH52WT8NBb0IN1Y5Px1vFA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@univerjs-pro/doc-typst-native-binding-win32-x64-msvc@1.0.0-insiders.20260723-c21613b': + resolution: {integrity: sha512-zOM5XI9Zu5tpv0EavpkqPcaAZ/b86HAamcLh0+SiGmlxbobWftNaWIhFDiRb8XEeK942/1gamsrb+4MboTHXcQ==} + cpu: [x64] + os: [win32] + + '@univerjs-pro/doc-typst-native-binding@1.0.0-insiders.20260723-c21613b': + resolution: {integrity: sha512-Zo4aCepdEnCzM1h/utV5HS8qcGWz/QlwAq7V0HavyufEXNdxsueda9K72YiUAn+KvGwJNcI7ntGcTOuNubQcqA==} + + '@univerjs-pro/docs-callout-ui@1.0.0-beta.2': + resolution: {integrity: sha512-WRCJjCUerp8rItPQAjKvbgwwY8dHoLty+gXEqE4MfLR+FMczU9oTnJ9ESjAWmP3YCbo5xFiDh+z1FVMLsU9V8w==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-callout@1.0.0-beta.2': + resolution: {integrity: sha512-jUfJbx/5B/zXzOpHufsdAkjD98h1umWwj8i2uArzKUIq+oG0tbyVXn6r/km/ggbNmYErDH9HetUNRcnPsethSQ==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-chart-ui@1.0.0-beta.2': + resolution: {integrity: sha512-A6BIT/TQOm8ltl7bw9TBv+G/PrrOo+RLDOZZD7OBeofVg1zYeGzj6Rk9j1ZugsnF7KcXTEe0rIPX5Ut0nDY1YQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-chart@1.0.0-beta.2': + resolution: {integrity: sha512-Ret6oVuoOo/+7SJPkvgH0+TobuTcs2P6q8RbTpQasuiX/HsHcoWYEUUlptMILt7ZC4kApR9UnSWAOhmhuLOg4A==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-code-ui@1.0.0-beta.2': + resolution: {integrity: sha512-UBhIk9hRYXTYPbivRAdRYoOioMD+gUTX+OPaRgJB/+7A7Fr5P2K1oymhXGGosnZ8I0BQw2PjESTzWduwMzzo4A==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-code@1.0.0-beta.2': + resolution: {integrity: sha512-U0g2iuLgrBdkb8htYS1XfCNdzU8WoUhxjnGpx+i6PWm6r1IyXdwWPwoJX9afvGyoGYEP6iKOJbkT4VFnfbA6kA==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-column-ui@1.0.0-beta.2': + resolution: {integrity: sha512-hyuNIYOHQGP1BH9g/1thxAPhpYqalpDGFDncx9z8jBf16IJDZTvhQCEvHa/yd1/3CNW4Vo3KgATJpgIJg/nYQQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-column@1.0.0-beta.2': + resolution: {integrity: sha512-w98btG7jJrjKshQoKYvvbUKPNESI92o2Z9j1N6pcy5iUsPiHS834pH/MWMDXHmTaE7zo5H5n9UYoHJoFN6b9Yw==} + + '@univerjs-pro/docs-latex-ui@1.0.0-beta.2': + resolution: {integrity: sha512-Xdj9bb+HFfN9vWa7tVXfyrtRc9BlLa6R2R9utBVT+GGovpTsG7piMIwY2FGv5E3YjTU86J4kwNcrYVYLqVeRMw==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-latex@1.0.0-beta.2': + resolution: {integrity: sha512-ktq3N5Jwb6HeoANWlKW0MtXcpPp2FrGTRxDbeTiepeSWvAWhI8wfM1Xg2XVM3COdVASKmlxgIz2jA6FOU3z/2w==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-list-ui@1.0.0-beta.2': + resolution: {integrity: sha512-x4GM/fys1EBl93OIaMT5WkW3viryRUQLw4oaFmw1uVHw2hVTylb3dBqN7W8Ksr/jkk8rBXx7IEsO1Krcxn7wRA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-list@1.0.0-beta.2': + resolution: {integrity: sha512-Oy5mJOBf6LZxyzjV0GMFvHPGeoyTRT66EkT1Qr/F/at8T2AY9gq9tsmUMqHvhDYiD9hC0lu11TdTRKa7qamoGA==} + + '@univerjs-pro/docs-quote-ui@1.0.0-beta.2': + resolution: {integrity: sha512-wHMowv4KWqADgXHsyIe7uLVu9GzLew6gJay5pBHF49KtptkKFRdezAiqMCLq5Yz3vkIpl2SYnpNd3/ZDXMT6gQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-quote@1.0.0-beta.2': + resolution: {integrity: sha512-ajbs3dzLtzvHUjXV0TTG9sWzds5q7w7ALrEdyMQkGHGNABRtM7bUAQDDL+U27z45WzGAkwJER5Os2jD+vicTdQ==} + + '@univerjs-pro/docs-shape-ui@1.0.0-beta.2': + resolution: {integrity: sha512-aP7BPVha6KP3GB1q7SMaA1II/e0SX60nEEELV8WoKCQCQg7cM442EoKwcSwEdbVhl5ReN+dba8BJFnRWjGX6cQ==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-shape@1.0.0-beta.2': + resolution: {integrity: sha512-je0AN+19BnPbpJUlTY4KcHAhct6XfK87KjjX10WvEuH8+mmzn1yBpPH6xBuI+BcJyhWZN2/4yiin+0MJI+3rQw==} + + '@univerjs-pro/docs-table-ui@1.0.0-beta.2': + resolution: {integrity: sha512-crEEM3X3w7k7fijx9F9B8+6F0/XnqWvwrmMjVACTPWDAY0F+zyOJXfP15pbbt3nobHo9HEZwXjqnaxwz5Qwgig==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/docs-table@1.0.0-beta.2': + resolution: {integrity: sha512-5C1Py2vBNwLJ0iJdsb/Dpc5W+cEMDyB2TZM3B/4aaIDziKeLOtWtydVxfydmZajS9YAjScJcUjYs8zNy7Lb1Nw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/embed-ui@1.0.0-beta.2': + resolution: {integrity: sha512-lhinsVE9qh30bY/xoTaFOn88QA3hooRRSaxQdYCb26wI8kYExRcnkKioFDnK5IxklnaedPx7AuucnT2jQYFGQg==} + 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-pro/embed-unit-ui@1.0.0-beta.2': + resolution: {integrity: sha512-vCvgQU4aIm8zidiEzj3REnmrY9n0ZwiCNAyYXsdzDBUCUTwGuZsA6VCft7I+ndv7ivhjALt4Kcpb2OUCjJj8mw==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/embed@1.0.0-beta.2': + resolution: {integrity: sha512-+9hDqtjit9pt9bqW6bPGVkaa/bzGjpQ/zbDDVypzRcP3otuKEvKYPrJOz5Lcy/ixEhPSClXQ5vQjJpa5Mg2mAQ==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/engine-chart@1.0.0-beta.2': + resolution: {integrity: sha512-Q8bI63vcx3Rn1OvAADPh7tGXoRBDZ7jKqJoPh5HvS4rnzhov5yLcbnlhE/cOFpIK0he1oc8FYztj8Euu/Kidow==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/engine-formula-rust-binding-darwin-arm64@1.0.0-insiders.20260819-8209aa8': + resolution: {integrity: sha512-VdR/QlBfvXPQ+0BcHYhtZhIAQgEssfSV0v76WvbJbJbUvYQ2y6XXBlfB6PBFr1qwvv8djF1EaCoy9A/FCYCp8A==} + cpu: [arm64] + os: [darwin] + + '@univerjs-pro/engine-formula-rust-binding-linux-arm64-gnu@1.0.0-insiders.20260819-8209aa8': + resolution: {integrity: sha512-hfgkeHmoMUGql8qfTkUFTC447BBxubHUsRmOI1HHcXAjDDXsTufTrq2XJjmQRbgXjJ0IDHAH9zdJGoDDKNJwMA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@univerjs-pro/engine-formula-rust-binding-linux-x64-gnu@1.0.0-insiders.20260819-8209aa8': + resolution: {integrity: sha512-O4eg3s4JAxj22frK/or7SyIVnSLr7RD0WN+0Q2qb/Id5kcrkGRggN5NYDoq8o+x2cvn1ODC1a0xWRMRlyhNQ4A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@univerjs-pro/engine-formula-rust-binding-win32-x64-msvc@1.0.0-insiders.20260819-8209aa8': + resolution: {integrity: sha512-kvveICZOiFnvBmkKh769e6E912+q82kWC1bdxZL2GtSYUcROY1MKv4ZQ8bwed4WX9d4ei4hYdtPUDxzVjPyGjA==} + cpu: [x64] + os: [win32] + + '@univerjs-pro/engine-formula-rust-binding@1.0.0-insiders.20260819-8209aa8': + resolution: {integrity: sha512-ZYEgg21fgW0XvCjAZgyvzquZk1jZtKXnk5Aa7N0WgV73iLIhwOtfqhsnrG+J8RKh/ps9V2BXnDDHR/9x52W6UA==} + + '@univerjs-pro/engine-formula-rust@1.0.0-beta.2': + resolution: {integrity: sha512-V/AlBShtaermpi7bnxCR8hILy8liJTHRfW0XXd6qAH87hp+qdEb1ewSNvWo6vSWmWYnMmlXdnwr79xv3DvS4ng==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/engine-formula@1.0.0-beta.2': + resolution: {integrity: sha512-QituoxlG0+cQN3wIUzShnpCFHkF3lO9C2rZ/6G0Phbxwfefosg054r0w626r0I+f4MnmwaHCX9XZVdQlBI9Z+Q==} + + '@univerjs-pro/engine-pivot@1.0.0-beta.2': + resolution: {integrity: sha512-Ge87optcgz7CCXyHCY9V4eCASU7lP864MRcxYeqAMh+Su1U/l8LVzLaT2hVKV4fryMrI2NXd4Qjvbp5T1/ylpA==} + + '@univerjs-pro/engine-shape@1.0.0-beta.2': + resolution: {integrity: sha512-noUtKkIruRuCSBq3OWSl9yCfaCVN8K0EE8GMjtyONKZTTquh5PZ1G2616HOutwaJRvWvtBZBbRfHJW1GUlgJgQ==} + + '@univerjs-pro/exchange-client@1.0.0-beta.2': + resolution: {integrity: sha512-liWCn4iPo6vk3K9s8PyjacXmOEi5IS04d3PC35nWH/PqUN7gXOW3NN0kq37YOjYQFHQhrrXcKcSVNmyF3fp9eA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/ink-ui@1.0.0-beta.2': + resolution: {integrity: sha512-ygkWJC69LYYqkzepgYpYx4Qe6GaSSFdP5Vv5htJ8KdTISeXSD5mb1LiHEPg8wANktSjIkOTq0TltFyr2xA4h6g==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/ink@1.0.0-beta.2': + resolution: {integrity: sha512-4nPo63AoibC0LOIlKC6FUcpwZvpFP75vFovpCDF6pPelPJmn0Odc7JPHklkCOX2dW7Yki5X+w4nx/Hu/yKUtXA==} + + '@univerjs-pro/license@1.0.0-beta.2': + resolution: {integrity: sha512-qCik5unIiqYKODtqgiTBB/e3bDbIUUArrZ9tqAPxVHtjDQnBfOgBXjMAKzPDemt8R2kcf9YzEHL8UIkcuV2oCA==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/pdfs@1.0.0-beta.2': + resolution: {integrity: sha512-43cg1GqJG2Um0+54pksoz/WIWkXvU47JgZ/hpAq6z88GJI3MAjl28KRchM/ry35RSSDc83SXkP4emTeUj+yaaA==} + + '@univerjs-pro/print@1.0.0-beta.2': + resolution: {integrity: sha512-upCKgMgKSfQ2teoLB7NK30Cdaw4qJf1EBIhKPeMAPjQKKVTHz3gbdvKcu+28tDGkmQaeSf85KP1wjh8cMZsMjw==} + + '@univerjs-pro/range-preprocess@1.0.0-beta.2': + resolution: {integrity: sha512-dXRimiWTw7wE0P92GeiElNalstpbuRdmfYTcdJnjMX7JbWAQrQGAwbxQL5L/pL5RXAQWMT4k6YV0dLl7cXri4g==} + + '@univerjs-pro/shape-editor-ui@1.0.0-beta.2': + resolution: {integrity: sha512-V27WxjYN6IYWyJAGH1nKGCC59VO3W0lAycbSUpEUPab8a/eK7dPcB3Z4nbnHhN8YQCynZ3buddCyaYCVEnufwg==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/shape-editor@1.0.0-beta.2': + resolution: {integrity: sha512-JbVX1JTk/vie7iFNkOiu+dzfL7Sh+AAAP7RKRwymBFUc8AdF3I/Ws8TP8oNXi0NgaM6A+/2n7YzwwfSY6GnUng==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/sheets-chart-ui@1.0.0-beta.2': + resolution: {integrity: sha512-pORJc5jICis8SoUGh8v52/dpw8tSDb/rvAU0nLqru0uDD38KIpkKJEQ5G58kEHX+ntiwssbNGkem8/9mrUyKPw==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-nYTm/2k4j+LV0saikDHbw1LfuVXGodlB7TQuuNx7z2GBAmr1NC2k2hxgL6V8PBd3spU4KHh+Z3ttZwNAmRMZXw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/sheets-outline-ui@1.0.0-beta.2': + resolution: {integrity: sha512-ZU+I5V6G/9HPg4UUAW8NR9VboF5OrqJfWg/HjwWA2ywRsr1vI5BgRwJ5QHYnCeClYIiJGJsAgVC6X7No7DV4Pw==} + 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-outline@1.0.0-beta.2': + resolution: {integrity: sha512-7Bjvic/OC+qeYHjS77pkg6jOdUwitjFacDb4K5jy6gwAQ/oFVwtjfJSBMQGUjuVa6CPiZZAejcEOXHxRIGmarA==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/sheets-pivot-ui@1.0.0-beta.2': + resolution: {integrity: sha512-spK7ugiPpO88wuazqk2zTYSG+oQaoJk7Rkw7cOPEbKNM5U5neDQj/rz2L0I0yndrbAkxEhZZsNoiSBp36roj/A==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-mNcOzTV7L9edt6OQhtYAmzDUQddSJxUug/QLi57o8vLQXMv8WiYZ8/ccWObGX/PfbwYy4D+i0gsesBidBUKcjQ==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/sheets-print@1.0.0-beta.2': + resolution: {integrity: sha512-OC1WcXhOarbXnqER+lPsFZB5FEDpzS/UKc7RPluJ3V0UshbWESxNgK3n8SguYrxhPdEfHHexBWYUiJRsJaa6mQ==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-nsOBga01+W56BZvvCEohVnte4Pl4ld6b0zJ5fdN0GuzyBA9pQl6MVUqdWZw6cWIhIaims+I1kX2ydiAFNM9wSg==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-CyP6EoiaQyoXz3cUNqSYqM4wCCv1C/B0dATQ9/k4XG6K+JzrUjiM/bvAsrjShGWpuG1YoKCu5I0/xcXzuuHpDA==} + + '@univerjs-pro/sheets-sparkline-ui@1.0.0-beta.2': + resolution: {integrity: sha512-sGj+5UbNarDnt4HIQXmN9wY2b3FfowMn6mbcKY8SxqsFEX1RVTEfQO51EbRPmih5MmuXPPBUZVbGUc5GeVB3eg==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-AWD4KvXW75/i3cOeWEx0HSnF2RJorLT0yB9kWBeFMt2k1QUMM27cdGRksvyn2rtvXWPKgAO4+d2/vHc2rUUc8A==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/slides-chart-ui@1.0.0-beta.2': + resolution: {integrity: sha512-CKVzHHQYbT4ecqiRe6udS8DYhvNr+oeOSXxQwBX0zE89rbfUYdlTYzcd5IuzsBJmRLI7DcjrItHANOjhWQcVxA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/slides-chart@1.0.0-beta.2': + resolution: {integrity: sha512-ndQoMXzbO6mHhH4UtjO9TjDj2rgwfVS18/IQm4m1f9/Tv+ttOI12Td1D1+lCg2LqIZeAfWKmGCMyaka/jOrg1w==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs-pro/slides-print@1.0.0-beta.2': + resolution: {integrity: sha512-UTN9tnyk3b+bLKuDRCxRAAVN0CVTN0mFpCBXQNUaMuWOoiCvrEd6jNVNEVFvabH7FIZl2VeP/T+SL2UkPvJgAw==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/slides-table-ui@1.0.0-beta.2': + resolution: {integrity: sha512-mzzglLT7o/eG9KoViNQGhUZktlz2sStWYZaANTI5g8thxydqO96IVKhNZqPcW9hy0aui3D0AT01gl8yhf4CTxA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + '@univerjs-pro/slides-table@1.0.0-beta.2': + resolution: {integrity: sha512-Qdo/JYAFYsGTRUzJ56NIJu9npyk1vFL+p/MK3EKyq6airIbpQRU76Pqc1aZIGwUGJnB4hZwwbV90DUNM4bZhiA==} + + '@univerjs-pro/slides-ui@1.0.0-beta.2': + resolution: {integrity: sha512-+k0Y+jV7BNcIaz8ptqV2nxHFoqO8y2AjminJJUrGHrsb3mBnWTPDYofe736iS8NywQ9tV3p8sMFZCRFqzNUCbA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs-pro/slides@1.0.0-beta.2': + resolution: {integrity: sha512-XCxIplz7YjzAct1nPHfzDUUC6XL7EKEWcawNuRXI9VYZH/7bYuFyhXDSdFSZl386GIUziAx+9DKSjSJSXNudHA==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/core@1.0.0-beta.2': + resolution: {integrity: sha512-fUpg+fdkYSGaiAo/a/m8Rgt2xMqhBlgOBx1pJrUtPvZN70ZtazCP5uNG0GCgHSyuYLnN/2Sjh4/EYkJC4Ow1Wg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/data-validation@1.0.0-beta.2': + resolution: {integrity: sha512-49OW0vKXMGZdUlIhwl1eAwXMTvNrgC8MEfVZVCDcSi6Pmxm9Gj6CY1GkHFGreNLuGpCPffdXPALlOQ3TSiq/rQ==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/design@1.0.0-beta.2': + resolution: {integrity: sha512-hI4zzzjZJ0Hi/xfLKb/K8syTinjvNio8F9wm+K87zxsEKTpYqL0deO4ab//cgtYFo/eUl0Ri1t2aEVeypNBbIw==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-XoP1aljn0dhho+HRH076tgYmr2o4RIQaL5pLVoCCLqOy4JAFWnsjmigMO32lJvbcBTDRl9I90F1dnT0zw4uYwA==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-lTB6FlodE0IYT42A/LPrlP2px5OgG1IuiyHBY3mLfE4tCk4cbgxo1ErH+fz6o8vulBET25DvPzwr7ZeUwqAlNg==} + + '@univerjs/docs-hyper-link-ui@1.0.0-beta.2': + resolution: {integrity: sha512-L2S/655ppKd3oqebIMioeIXrufq7SO+kGJgi8ElDy00T0Udzi93VT4qezRMSc1OuKjzOtKlpenpWPT1qDpxUYA==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-5jyBx3EX6PyDPBFXEgeQDhbk1JXU2lttaL/EfcVNjRgpf33+DseVkRbyYYgieUplWN6mC4NQvEIFOCxpjK6PAQ==} + + '@univerjs/docs-thread-comment-ui@1.0.0-beta.2': + resolution: {integrity: sha512-dcrzPQQIk7KqO0W+6yfD9n7Sk5l+lYnMcBDWTuV1yZ0eOBEpaw2SUiP1OK1UknZk6sdLKzAvLnrXPK8ttlDdyw==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-Rl/t6WNwGzHh7kbTqrrlnLzqqQPAKLWcRLX5tI4xJtrH63KK3CW/hgdPfkhQwOcbb2Mib0mgFENItXtqdocpYA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs/docs@1.0.0-beta.2': + resolution: {integrity: sha512-Y9mXi4QOw+dO6bkHJoo8zyylMPTTiZJyx6+fqwuUiz8CNjb7BxEbSsdClYTOqOG9KwVrdzoOSNSJIkWZGLimxg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/drawing-ui@1.0.0-beta.2': + resolution: {integrity: sha512-ETYODwGOxMvjsVugGZTEKoaB/+QdI2JZwfR5gdzowdwnWYxPSxGu4sgjCp5i1t75o0lumr4KaYLYrxaaxr3oSg==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs/drawing@1.0.0-beta.2': + resolution: {integrity: sha512-1ahMF3VkQuRpZdOeNniahggqhAH/5+aIETeEM65oBKmTb0SEHvET7k3sN+Y5N8Q+/F0L0k+B64GdNA/c42Cscw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/engine-formula@1.0.0-beta.2': + resolution: {integrity: sha512-ZNfd68cS8OHmaV1DnSmHGV4Zw3EhXrvJRlcJ9FS+pNCgsQZacLF5dfmm4RF/h7ws6cjeeNjZRf7RkU8yiwQ9Gw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/engine-render@1.0.0-beta.2': + resolution: {integrity: sha512-07HJEUiP6FHHyy1SC8BmLSBJlENyenlPtRDYr3Oiw36CeX+srBYhIj0hWH9wBPAlZQgfbdd7EBY4v71ReiMrew==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/find-replace@1.0.0-beta.2': + resolution: {integrity: sha512-glT6i+j4iKXPv+Vv3qwasJagICpQyAhZ35Jip8Vdvyef593IScr9T8GlX1hupebuyadfZucPY82rWdFI2+6+YA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs/icons@1.38.0': + resolution: {integrity: sha512-Le8+JkhtfyQ7W/Vrd3Aqlj86FogOemnnDFtp98UwLhgj2BR6oKm4HFCW8d1L/geHw9eJemu3zugY98tK4+hsOw==} + peerDependencies: + react: '*' + react-dom: '*' + + '@univerjs/network@1.0.0-beta.2': + resolution: {integrity: sha512-5x/JP9fvyYtcooXg0rxY6q2ag0SDCMVpcMz7iFuN93aQwaS1zAG2G1NaSIJTRUFZ66I6QuQen1+YpJr1voZemA==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/protocol@1.0.0-beta.2': + resolution: {integrity: sha512-IVe3PZsQ5ZizQPSVQlMZQkcZVURmYEXTw2Q8q95jVXyM9sPutRVnpUM4eWaSMPQ53QIzZgngMzo9wTTuSQ1tAw==} + + '@univerjs/rpc@1.0.0-beta.2': + resolution: {integrity: sha512-NTRIP3w3/ZW1aej29LbjKzQ3AifkiXZ3LlwmlauptNTSmIbD8XvFi1Ru09BLZQ41PW2hL3TkAxJfr1SXgaS9PQ==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-conditional-formatting-ui@1.0.0-beta.2': + resolution: {integrity: sha512-ZmZofVP9c4zedsvpGqiZOjvyAdpYrJ7RdWwVXtdMoIyiEfvM/0eje99+YZE1dlJLXVenZ3QqDkLqHKsNveOD6w==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-mXjLNcqYEV+eDDVzz43oTKne8u1Lvu/Kox2sCD/vyxdJwBL1vtTdscJ0Zdmy75yUDxDM7XTh1t7eugdsm93zZg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-crosshair-highlight@1.0.0-beta.2': + resolution: {integrity: sha512-R6aeDDdDRDEjbUTZXbQZ4o+/ARBL85pepXYoSgo/Datbo+e1As6sQKvEgOv4VIypLbQPdJNELPyPGJbNVtVU2w==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-AYZtunnxP9UfjV46spDpqFdmIgBMYIF7okzWLXqukMDqDdQrURQPCtB013IaRq5LAXBl7YCsHerAOJfY1ZK+fQ==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-jYpMo0xg78SvfvkI8e4DIKSli5yeNdzGCmQmASXPfRBBg0y6REkIzXy9aq6vvyefQGzyj1mi7cnu6F62dAWfAw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-drawing-ui@1.0.0-beta.2': + resolution: {integrity: sha512-Mur7qrfC/4XRQUzq1eGO4zEfEC1HSAK0MWKSJ9iOpt78NaWaY1ixlq3O67fzKYIgiOy+ZMMOdYgGWQxySD7C6w==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-bXzWXQRE4S2GAawztgHQBUR0H7Oisp6EIxgAqLm9WelZSDRXHOivT4nz8ek68OGg87K6xDoClxOEy5S5/jsZtw==} + + '@univerjs/sheets-filter-ui@1.0.0-beta.2': + resolution: {integrity: sha512-if1gH+v5ZhF2P4IRaJn5XTKMIKa0z918LSrzQWTkSPBc3aBYce/8Kh12cG1OusCd0j1XGG8wAD3ee4aqJut0CA==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-QKIbdpjIibRpvNq0QtvFGGfNyMQIiYacQ4abLdLNUUrJ8mb4mRkUVw109lkKEVxr2/hk7W+nwGyUeQWaabAh0w==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-find-replace@1.0.0-beta.2': + resolution: {integrity: sha512-jeuIqzCYN2I7PuPVYRuIIYzG4aUU5xfzVByxkSGq8K3HJKCDWZZqoMk8nFpxD9Yjgo/3/GET6eCvfhHNvOy2jg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-formula-ui@1.0.0-beta.2': + resolution: {integrity: sha512-jo1yz9rUWMJjWJZU1OSd17us9FBaZxOzYQU0YSzK+p0jVWCTz/oVlttgPculanYtHO5FT6l09u5yV1xjTXqw+w==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-QXJ13Didb2yOlS4L4xxLRp+4fLEU/Z9EqxK+Soxjkslk+m3CWk2TEjGzua8M8FiiHdOFiQe0hFRiqUvjPUgLdg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-hyper-link-ui@1.0.0-beta.2': + resolution: {integrity: sha512-mnu/F6Lj8xjvQONTtwf9YmkUNy+6DPhQ3/Pi5CO9KhhryMLc563GH5nGjcoameYBnXQupSTTM6NxOi2HFfHyxQ==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-X7Uw90iMO8eYefwd6g0tDkFak2RvAt3BhfUz7GO5NdDLIjQDLcjJjGO7JB9uN6D5sZGuzUGOS/ABmQXL4lHSIw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-note-ui@1.0.0-beta.2': + resolution: {integrity: sha512-o4gjuWxV6RDGg4lryOSsxSzZFuBgyVgwpBftXFqJwYaL3HN87i0eUGdTG4u5UgDYTyff1mB+JVEWAA6JpDXTfQ==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-yX8Li0iCEbyPH8S9XnasNU/2ppZuFwGcWzmHljS6VpPUxDWQ/ihSQ/s40lz4jCKRogBkxl1M55i1M5YwPFF+Wg==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-numfmt-ui@1.0.0-beta.2': + resolution: {integrity: sha512-ekGBArImyIPV/EQbd1YtriypX7iQ7XFTpeRh6T6WXbqmHzWg1modqjhvjJ+KHv189Rh6J/+HZg006nXDzZW30g==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-EX5SWLd61Ilqh9W8yZ/1FhiPy8hL45WZC/mVYrgXt+rt+pAC39bDuOI/9k/5s254dazLmMUQT+JvVfR6lP2T+g==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-sort-ui@1.0.0-beta.2': + resolution: {integrity: sha512-MbkUJ7TDaXUE7FlzxLg3SiNP32WJ2aJswEbi2ZoDbE9yRNilsC1IPpq7qK4bg05BBHTBk8CEeHJhVMS8sCWzKg==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-gqQQr9vr+V0Mj9Nw4PvYKkiA7IQH8gWYqMFgSulZ0x0ClEYemF8OwNSXUdeGR65dgc6dvH5WmK/ogbAvFNG1vA==} + + '@univerjs/sheets-table-ui@1.0.0-beta.2': + resolution: {integrity: sha512-viuRY0OAcT+LKXrt24zZ8JtqEustDZpv8EKavFJu13nHBtHxlEJ646ztcXz+haiyr2+gkaJsrnmy5+icwf3EtQ==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-h+PI6HPxdXcUpJhnUEZ5wNIemUmVM1W3JX6z2gUkpfgihwwMH9Q4Yy2ccIq3gjEYoHMSVuMIiIJ6Hn/XO1YFXw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-thread-comment-ui@1.0.0-beta.2': + resolution: {integrity: sha512-JDeJU608RPOaOXbSNb+DEeU6wBsV8e8W1JIjQn+MCSag5xaX2Zx+POsLF84mAKOWsLBJZxCnpI8LBpEmYLAwng==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-ti8jaklHoHGWHrBTYgJA/ZOvRPKBjuXaefHDGXTOJ2KcZl/kfe20fS1eB/gN9DXEaDuB67pSAhcHp4n+UaXiAQ==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/sheets-ui@1.0.0-beta.2': + resolution: {integrity: sha512-4jotwzaj127sWIIbjenxYUSeiSH6JQNfUY481QRpqPGFuA8gzc5UXGQhTSH0ZcFOFJiTrJze39XO9WiM1rohWg==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + rxjs: '>=7.0.0' + + '@univerjs/sheets@1.0.0-beta.2': + resolution: {integrity: sha512-wkJ5qzbIXNwyntyiL8rvLK5A7bNtQLD417gb9+YV0dbGj4B0VQNJiOjYuBWftq6Y5E6rxj33loZm93EXtv6aGw==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/telemetry@1.0.0-beta.2': + resolution: {integrity: sha512-8VAira1id1TEocOuasbJkd3BrcCMANLM4yN6P68YdFmjlki2/jV4WYnOYz2ahYEp04E0eJROUIfvaEpVRkKErA==} + + '@univerjs/themes@1.0.0-beta.2': + resolution: {integrity: sha512-wutno0G6pRyw/7B4KK/Z+XQmFVOXeeiATiPEpMVKsrcGGPxc7hM1xdFC2gvHao+XNPszyezUh87zKZws3/3C7A==} + + '@univerjs/thread-comment-ui@1.0.0-beta.2': + resolution: {integrity: sha512-gCjAxwAblhsRmXCCu/4TtVExA5tc1dVUiL7HctPQlYpqnAjluLBk1w1KMHCT9LKJTUt7t2N2LnCyD7UjAGqFRg==} + 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@1.0.0-beta.2': + resolution: {integrity: sha512-kjAQFXdu9EomCoy8s/O820hgnLEGEi4dQ6AUyVs8D7ChEnYFqbGMbqvnzUoOXlpmtFAte/Kc+KZqEtUMwhI7Ug==} + peerDependencies: + rxjs: '>=7.0.0' + + '@univerjs/ui@1.0.0-beta.2': + resolution: {integrity: sha512-12GluN0MuwDemuLkbZYqz53fYoxIXmeXNYnK2jT0G3dDQHdSJChD+Cb3dNKCaMrmW5sdeQcHaEDsmxkghee69w==} + 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' + + '@vitejs/plugin-react@6.1.1': + resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.145.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + oxc-transform-react: + optional: true + + '@vitest/expect@4.1.11': + resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + + '@vitest/mocker@4.1.11': + resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.11': + resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} + + '@vitest/runner@4.1.11': + resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} + + '@vitest/snapshot@4.1.11': + resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} + + '@vitest/spy@4.1.11': + resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} + + '@vitest/utils@4.1.11': + resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} + + '@wendellhu/redi@1.1.2': + resolution: {integrity: sha512-RLcCzJNIPP14RePbxXulvH4o/XI3Lw5IT3d3rzwR1UDD8ry1UMhr+YNAiqv8EzkihWanmoLkHAjV4LC9Z8amLQ==} + peerDependencies: + react: '>=16.8.0' + peerDependenciesMeta: + react: + optional: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.3.0: + resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chromium-bidi@17.0.2: + resolution: {integrity: sha512-5v9GQFhTktFvotn/OFNJBmKLKRAb6n9r0bVCwf7sHgWc3/JryK0bj1nn93L3pHFrfgcsu6Be6EWsDi+1XHTGDg==} + engines: {node: '>=20.19.0 <22.0.0 || >=22.12.0'} + peerDependencies: + devtools-protocol: '*' + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devtools-protocol@0.0.1666840: + resolution: {integrity: sha512-gCcO42XCHKEs7Ag0S7aGYsnJ7hlgrO3qderYqeiY0Eqk+0GFfuvT13IA0hHreJTa2KCdDVyGMeOhdMNmrrTjVg==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + enhanced-resolve@5.24.5: + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} + engines: {node: '>=10.13.0'} + + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + + franc-min@6.2.0: + resolution: {integrity: sha512-1uDIEUSlUZgvJa2AKYR/dmJC66v/PvGQ9mWfI9nOr/kPpMFyvswK0gPXOwpYJYiYD008PpHLkGfG58SPjQJFxw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + kdbush@4.1.0: + resolution: {integrity: sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + lucide-react@1.40.0: + resolution: {integrity: sha512-MaG+8WnOXkDWz9XeElj7TnQ890tTZUB0a36i03aRRCKGWE6e7jJpmdCvtxxuxcjjdqyN6m4sL6qlHVuSUDtYgg==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + modern-tar@0.8.4: + resolution: {integrity: sha512-gN54ddmyzEg10orwZ2u4OOv+bjpMWdIl5jIkodK97bMq8QBSL5c0D7YX0lT1Ooz+99S7+PvFbnxzdjgHo1r41g==} + engines: {node: '>=18.0.0'} + + n-gram@2.0.2: + resolution: {integrity: sha512-S24aGsn+HLBxUGVAUFOwGpKs7LBcG4RudKU//eWzt/mQ97/NMKQxDWHyHx63UNWk/OOdihgmzoETn1tf5nQDzQ==} + + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + + ot-json1@1.0.2: + resolution: {integrity: sha512-IhxkqVWQqlkWULoi/Q2AdzKk0N5vQRbUMUwubFXFCPcY4TsOZjmp2YKrk0/z1TeiECPadWEK060sdFdQ3Grokg==} + + ot-text-unicode@4.0.0: + resolution: {integrity: sha512-W7ZLU8QXesY2wagYFv47zErXud3E93FGImmSGJsQnBzE+idcPPyo2u2KMilIrTwBh4pbCizy71qRjmmV6aDhcQ==} + + oxfmt@0.64.0: + resolution: {integrity: sha512-XZ4GFBN/PLbXKq+0zrgpQfPKYuJlUuj+nzZJY7UpIbFMNyefNLCdN9EwViycNqnYcv0wrn0jXcQLlqJp8RCKBg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + + oxlint@1.79.0: + resolution: {integrity: sha512-hVJ9hq9m2unPS+Of4eJJgCPdIeCC+3DHEUX3tkmrPJr3OK2hz7PhXwgC+ZP71ZcYu8cCDEtQrqLxWNvxBppBVg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=7.0.2001' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + protobufjs@7.6.6: + resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==} + engines: {node: '>=12.0.0'} + + puppeteer-core@25.9.0: + resolution: {integrity: sha512-U61rCwSMha62CA/Opy6tCx2Fx+ck7ouiKnbpEApzSoLYMoEu9F71nuFpHL55vmIt33/GYm6eKZVhH2ev0nAIeg==} + engines: {node: '>=22.12.0'} + + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + + rbush@4.0.1: + resolution: {integrity: sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==} + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + rolldown@1.2.6: + resolution: {integrity: sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + sonner@2.0.8: + resolution: {integrity: sha512-UM/ByIoFra8yzV75n1o0Puu0bw5U/9UNnDacrJNspekBewIfsQ3D6ez1nvlWpt7aTsO6rujQtifBpycwIivqlg==} + peerDependencies: + '@types/react': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + + tailwindcss@4.3.3: + resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + engines: {node: '>=14.0.0'} + + trigram-utils@2.0.1: + resolution: {integrity: sha512-nfWIXHEaB+HdyslAfMxSqWKDdmqY9I32jS7GnqpdWQnLH89r6A5sdk3fDVYqGAZ0CrT8ovAFSAo6HRiWcWNIGQ==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typed-query-selector@2.12.2: + resolution: {integrity: sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + + unicount@1.1.0: + resolution: {integrity: sha512-RlwWt1ywVW4WErPGAVHw/rIuJ2+MxvTME0siJ6lk9zBhpDfExDbspe6SRlWT3qU6AucNjotPl9qAJRVjP7guCQ==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + uuid@14.0.2: + resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} + hasBin: true + + vite@8.2.2: + resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.4.0 || ^0.5.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.11: + resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.11 + '@vitest/browser-preview': 4.1.11 + '@vitest/browser-webdriverio': 4.1.11 + '@vitest/coverage-istanbul': 4.1.11 + '@vitest/coverage-v8': 4.1.11 + '@vitest/ui': 4.1.11 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + webdriver-bidi-protocol@0.4.2: + resolution: {integrity: sha512-VSV+fzfChirL3e7jay2yUC7B4HQCGtEWEg/MSSQbK+qWbqeGlRLlXTzPpYr3XGUvbpDHumWZBJxgesg4N7dbtA==} + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yargs@18.1.0: + resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + +snapshots: + + '@flatten-js/interval-tree@1.1.3': {} + + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@floating-ui/utils@0.2.12': {} + + '@grpc/grpc-js@1.14.4': + dependencies: + '@grpc/proto-loader': 0.8.1 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.8.1': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.6.6 + yargs: 17.7.3 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@js-sdsl/ordered-map@4.4.2': {} + + '@noble/ciphers@2.4.0': {} + + '@noble/ed25519@3.1.0': {} + + '@noble/hashes@2.2.0': {} + + '@oxc-project/types@0.147.0': {} + + '@oxfmt/binding-android-arm-eabi@0.64.0': + optional: true + + '@oxfmt/binding-android-arm64@0.64.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.64.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.64.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.64.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.64.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.64.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.64.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.64.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.64.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.64.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.64.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.64.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.64.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.64.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.64.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.64.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.64.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.64.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.79.0': + optional: true + + '@oxlint/binding-android-arm64@1.79.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.79.0': + optional: true + + '@oxlint/binding-darwin-x64@1.79.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.79.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.79.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.79.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.79.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.79.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.79.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.79.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.79.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.79.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.79.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.79.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.79.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.79.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.79.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.79.0': + optional: true + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.5': {} + + '@protobufjs/eventemitter@1.1.1': {} + + '@protobufjs/fetch@1.1.1': + dependencies: + '@protobufjs/aspromise': 1.1.2 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.2': {} + + '@puppeteer/browsers@3.2.1': + dependencies: + modern-tar: 0.8.4 + yargs: 18.1.0 + + '@radix-ui/primitive@1.1.7': {} + + '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-context@1.2.2(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-direction@1.1.4(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-id@1.1.4(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/rect': 1.1.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + '@types/react-dom': 19.2.7(@types/react@19.2.18) + + '@radix-ui/react-slot@1.3.3(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/rect': 1.1.3 + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-use-size@1.1.4(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/rect@1.1.3': {} + + '@rolldown/binding-android-arm-eabi@1.2.6': + optional: true + + '@rolldown/binding-android-arm64@1.2.6': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.6': + optional: true + + '@rolldown/binding-darwin-x64@1.2.6': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.6': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.6': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.6': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.6': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.6': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.6': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.6': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.6': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.6': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.6': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.6': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@standard-schema/spec@1.1.0': {} + + '@tailwindcss/node@4.3.3': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.24.5 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.3 + + '@tailwindcss/oxide-android-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide@4.3.3': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-x64': 4.3.3 + '@tailwindcss/oxide-freebsd-x64': 4.3.3 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.3 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-x64-musl': 4.3.3 + '@tailwindcss/oxide-wasm32-wasi': 4.3.3 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 + + '@tailwindcss/vite@4.3.3(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0))': + dependencies: + '@tailwindcss/node': 4.3.3 + '@tailwindcss/oxide': 4.3.3 + tailwindcss: 4.3.3 + vite: 8.2.2(@types/node@24.13.3)(jiti@2.7.0) + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.9': {} + + '@types/node@24.13.3': + dependencies: + undici-types: 7.18.2 + + '@types/react-dom@19.2.7(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + + '@types/react@19.2.18': + dependencies: + csstype: 3.2.3 + + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@univer-cli/api-reference-command@1.0.0-beta.2(commander@15.0.0)': + dependencies: + '@univer-cli/api-reference': 1.0.0-beta.2 + commander: 15.0.0 + + '@univer-cli/api-reference@1.0.0-beta.2': {} + + '@univer-cli/content-execution@1.0.0-beta.2': {} + + '@univer-cli/doc-typst-facade@1.0.0-beta.2': + dependencies: + '@univerjs-pro/doc-typst-native-binding': 1.0.0-insiders.20260723-c21613b + typescript: 5.9.3 + + '@univer-cli/headless-univer@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-mind': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-callout': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-code': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-latex': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-list': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-quote': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula-rust': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-pivot': 1.0.0-beta.2 + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/ink': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/range-preprocess': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-outline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/network': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-note': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-sort': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univer-cli/unit-screenshot@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univer-cli/univer-render-runtime': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - bufferutil + - proxy-agent + - react + - rxjs + - utf-8-validate + - yauzl + + '@univer-cli/univer-render-page@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(@univer-cli/univer-render-runtime@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univer-cli/univer-render-runtime': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/bases-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-mind': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-mind-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-callout': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-callout-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-code': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-code-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-column-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-latex': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-latex-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-list': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-list-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-quote': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-quote-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-shape-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/exchange-client': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/ink': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/ink-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/range-preprocess': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-outline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-outline-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs-pro/slides-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs-pro/slides-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-hyper-link-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-thread-comment-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-crosshair-highlight': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-data-validation-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-find-replace': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-note': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-note-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-sort': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-sort-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react + - react-dom + - rxjs + + '@univer-cli/univer-render-runtime@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@puppeteer/browsers': 3.2.1 + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + puppeteer-core: 25.9.0 + transitivePeerDependencies: + - bufferutil + - proxy-agent + - react + - rxjs + - utf-8-validate + - yauzl + + '@univerjs-pro/bases-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@univerjs-pro/bases@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/boards-chart-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/boards-chart@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/boards-mind-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-mind': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/boards-mind@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/boards-print@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/print': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/boards-table-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs-pro/slides-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs-pro/slides-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + - rxjs + + '@univerjs-pro/boards-table@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/boards-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/ink': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/ink-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/boards@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/chart-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed-unit-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/collaboration-client@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@noble/ciphers': 2.4.0 + '@univerjs-pro/collaboration': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/network': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/telemetry': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/collaboration@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-mind': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/pdfs': 1.0.0-beta.2(react@19.2.8) + '@univerjs-pro/sheets-outline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + uuid: 14.0.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/doc-typst-native-binding-darwin-arm64@1.0.0-insiders.20260723-c21613b': + optional: true + + '@univerjs-pro/doc-typst-native-binding-darwin-x64@1.0.0-insiders.20260723-c21613b': + optional: true + + '@univerjs-pro/doc-typst-native-binding-linux-arm64-gnu@1.0.0-insiders.20260723-c21613b': + optional: true + + '@univerjs-pro/doc-typst-native-binding-linux-x64-gnu@1.0.0-insiders.20260723-c21613b': + optional: true + + '@univerjs-pro/doc-typst-native-binding-win32-x64-msvc@1.0.0-insiders.20260723-c21613b': + optional: true + + '@univerjs-pro/doc-typst-native-binding@1.0.0-insiders.20260723-c21613b': + optionalDependencies: + '@univerjs-pro/doc-typst-native-binding-darwin-arm64': 1.0.0-insiders.20260723-c21613b + '@univerjs-pro/doc-typst-native-binding-darwin-x64': 1.0.0-insiders.20260723-c21613b + '@univerjs-pro/doc-typst-native-binding-linux-arm64-gnu': 1.0.0-insiders.20260723-c21613b + '@univerjs-pro/doc-typst-native-binding-linux-x64-gnu': 1.0.0-insiders.20260723-c21613b + '@univerjs-pro/doc-typst-native-binding-win32-x64-msvc': 1.0.0-insiders.20260723-c21613b + + '@univerjs-pro/docs-callout-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-callout': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-callout@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/docs-chart-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-chart@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/docs-code-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-code': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + prismjs: 1.30.0 + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-code@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/docs-column-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-column@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/docs-latex-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-latex': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-latex@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/docs-list-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-list': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-list@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/docs-quote-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-quote': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-quote@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/docs-shape-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-shape@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/docs-table-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/docs-column': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/docs-table@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/embed-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/bases-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-print': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/docs-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/print': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-outline-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-print': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-print': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-data-validation-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-note-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-sort-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-table-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@univerjs-pro/embed-unit-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/bases-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/collaboration-client': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/embed@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/bases': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/engine-chart@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/engine-formula-rust-binding-darwin-arm64@1.0.0-insiders.20260819-8209aa8': + optional: true + + '@univerjs-pro/engine-formula-rust-binding-linux-arm64-gnu@1.0.0-insiders.20260819-8209aa8': + optional: true + + '@univerjs-pro/engine-formula-rust-binding-linux-x64-gnu@1.0.0-insiders.20260819-8209aa8': + optional: true + + '@univerjs-pro/engine-formula-rust-binding-win32-x64-msvc@1.0.0-insiders.20260819-8209aa8': + optional: true + + '@univerjs-pro/engine-formula-rust-binding@1.0.0-insiders.20260819-8209aa8': + optionalDependencies: + '@univerjs-pro/engine-formula-rust-binding-darwin-arm64': 1.0.0-insiders.20260819-8209aa8 + '@univerjs-pro/engine-formula-rust-binding-linux-arm64-gnu': 1.0.0-insiders.20260819-8209aa8 + '@univerjs-pro/engine-formula-rust-binding-linux-x64-gnu': 1.0.0-insiders.20260819-8209aa8 + '@univerjs-pro/engine-formula-rust-binding-win32-x64-msvc': 1.0.0-insiders.20260819-8209aa8 + + '@univerjs-pro/engine-formula-rust@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula-rust-binding': 1.0.0-insiders.20260819-8209aa8 + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/protocol': 1.0.0-beta.2 + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/engine-formula@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/engine-pivot@1.0.0-beta.2': {} + + '@univerjs-pro/engine-shape@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/exchange-client@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/collaboration': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/network': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + fflate: 0.8.3 + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/ink-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/ink': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/ink@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/boards': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/license@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@noble/ed25519': 3.1.0 + '@noble/hashes': 2.2.0 + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/pdfs@1.0.0-beta.2(react@19.2.8)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/print@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/range-preprocess@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/shape-editor-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/embed': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/embed-unit-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/shape-editor@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/sheets-chart-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/sheets-chart@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/sheets-outline-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-outline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/sheets-outline@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/sheets-pivot-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-pivot': 1.0.0-beta.2 + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-pivot': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/sheets-pivot@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-pivot': 1.0.0-beta.2 + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/sheets-print@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/collaboration-client': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/print': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/sheets-shape-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/sheets-shape@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs-pro/sheets-sparkline-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/sheets-sparkline': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/sheets-sparkline@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/slides-chart-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/chart-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/slides-chart@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-chart': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/slides-print@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/print': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/slides-table-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs-pro/slides-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/slides-table@1.0.0-beta.2(react@19.2.8)': + dependencies: + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs-pro/slides-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/shape-editor-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/slides-table': 1.0.0-beta.2(react@19.2.8) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs-pro/slides@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs-pro/engine-shape': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs-pro/license': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/core@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/themes': 1.0.0-beta.2 + '@wendellhu/redi': 1.1.2(react@19.2.8) + async-lock: 1.4.1 + fast-diff: 1.3.0 + kdbush: 4.1.0 + lodash-es: 4.18.1 + ot-json1: 1.0.2 + rbush: 4.0.1 + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/data-validation@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/design@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + class-variance-authority: 0.7.1 + clsx: 2.1.1 + cmdk: 1.1.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + sonner: 2.0.8(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + tailwind-merge: 2.6.0 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@univerjs/docs-drawing-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/docs-drawing@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs/docs-hyper-link-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/docs-hyper-link@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs/docs-thread-comment-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/docs-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/docs@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/drawing-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/drawing@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + ot-json1: 1.0.2 + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/engine-formula@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@flatten-js/interval-tree': 1.1.3 + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + decimal.js: 10.6.0 + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/engine-render@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@floating-ui/dom': 1.8.0 + '@floating-ui/utils': 0.2.12 + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + franc-min: 6.2.0 + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/find-replace@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/icons@1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@univerjs/network@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/protocol@1.0.0-beta.2': + dependencies: + '@grpc/grpc-js': 1.14.4 + + '@univerjs/rpc@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-conditional-formatting-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-conditional-formatting': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-conditional-formatting@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-crosshair-highlight@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-data-validation-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-data-validation@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-drawing-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-drawing@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/drawing': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs/sheets-filter-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-filter': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-filter@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-find-replace@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/find-replace': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react + - react-dom + + '@univerjs/sheets-formula-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-formula@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-hyper-link-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-data-validation': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-hyper-link': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-hyper-link@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-note-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-note': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-note@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-numfmt-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-numfmt': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-numfmt@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-sort-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-sort': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-sort@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs/sheets-table-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-formula-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-sort': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-table': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-table@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-thread-comment-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets-thread-comment@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/sheets-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/sheets': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/telemetry': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/sheets@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-formula': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/protocol': 1.0.0-beta.2 + '@univerjs/rpc': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/telemetry@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + transitivePeerDependencies: + - react + - rxjs + + '@univerjs/themes@1.0.0-beta.2': {} + + '@univerjs/thread-comment-ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/docs-ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/thread-comment': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/ui': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2) + react: 19.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - react-dom + + '@univerjs/thread-comment@1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - react + + '@univerjs/ui@1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rxjs@7.8.2)': + dependencies: + '@univerjs/core': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/design': 1.0.0-beta.2(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@univerjs/engine-render': 1.0.0-beta.2(react@19.2.8)(rxjs@7.8.2) + '@univerjs/icons': 1.38.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@wendellhu/redi': 1.1.2(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + rxjs: 7.8.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + '@vitejs/plugin-react@6.1.1(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.2.2(@types/node@24.13.3)(jiti@2.7.0) + + '@vitest/expect@4.1.11': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + chai: 6.2.2 + tinyrainbow: 3.1.1 + + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0))': + dependencies: + '@vitest/spy': 4.1.11 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.2.2(@types/node@24.13.3)(jiti@2.7.0) + + '@vitest/pretty-format@4.1.11': + dependencies: + tinyrainbow: 3.1.1 + + '@vitest/runner@4.1.11': + dependencies: + '@vitest/utils': 4.1.11 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.11': + dependencies: + '@vitest/pretty-format': 4.1.11 + '@vitest/utils': 4.1.11 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.11': {} + + '@vitest/utils@4.1.11': + dependencies: + '@vitest/pretty-format': 4.1.11 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 + + '@wendellhu/redi@1.1.2(react@19.2.8)': + optionalDependencies: + react: 19.2.8 + + ansi-regex@5.0.1: {} + + ansi-regex@6.3.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + assertion-error@2.0.1: {} + + async-lock@1.4.1: {} + + chai@6.2.2: {} + + chromium-bidi@17.0.2(devtools-protocol@0.0.1666840): + dependencies: + devtools-protocol: 0.0.1666840 + mitt: 3.0.1 + zod: 3.25.76 + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + clsx@2.1.1: {} + + cmdk@1.1.1(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.7(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@15.0.0: {} + + convert-source-map@2.0.0: {} + + csstype@3.2.3: {} + + decimal.js@10.6.0: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + devtools-protocol@0.0.1666840: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + enhanced-resolve@5.24.5: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + es-module-lexer@2.3.2: {} + + escalade@3.2.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + expect-type@1.4.0: {} + + fast-diff@1.3.0: {} + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + fflate@0.8.3: {} + + franc-min@6.2.0: + dependencies: + trigram-utils: 2.0.1 + + fsevents@2.3.3: + optional: true + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-nonce@1.0.1: {} + + graceful-fs@4.2.11: {} + + is-fullwidth-code-point@3.0.0: {} + + jiti@2.7.0: {} + + kdbush@4.1.0: {} + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + lodash-es@4.18.1: {} + + lodash.camelcase@4.3.0: {} + + long@5.3.2: {} + + lucide-react@1.40.0(react@19.2.8): + dependencies: + react: 19.2.8 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + mitt@3.0.1: {} + + modern-tar@0.8.4: {} + + n-gram@2.0.2: {} + + nanoid@3.3.18: {} + + obug@2.1.4: {} + + ot-json1@1.0.2: + dependencies: + ot-text-unicode: 4.0.0 + + ot-text-unicode@4.0.0: + dependencies: + unicount: 1.1.0 + + oxfmt@0.64.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.64.0 + '@oxfmt/binding-android-arm64': 0.64.0 + '@oxfmt/binding-darwin-arm64': 0.64.0 + '@oxfmt/binding-darwin-x64': 0.64.0 + '@oxfmt/binding-freebsd-x64': 0.64.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.64.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.64.0 + '@oxfmt/binding-linux-arm64-gnu': 0.64.0 + '@oxfmt/binding-linux-arm64-musl': 0.64.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.64.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.64.0 + '@oxfmt/binding-linux-riscv64-musl': 0.64.0 + '@oxfmt/binding-linux-s390x-gnu': 0.64.0 + '@oxfmt/binding-linux-x64-gnu': 0.64.0 + '@oxfmt/binding-linux-x64-musl': 0.64.0 + '@oxfmt/binding-openharmony-arm64': 0.64.0 + '@oxfmt/binding-win32-arm64-msvc': 0.64.0 + '@oxfmt/binding-win32-ia32-msvc': 0.64.0 + '@oxfmt/binding-win32-x64-msvc': 0.64.0 + + oxlint@1.79.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.79.0 + '@oxlint/binding-android-arm64': 1.79.0 + '@oxlint/binding-darwin-arm64': 1.79.0 + '@oxlint/binding-darwin-x64': 1.79.0 + '@oxlint/binding-freebsd-x64': 1.79.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.79.0 + '@oxlint/binding-linux-arm-musleabihf': 1.79.0 + '@oxlint/binding-linux-arm64-gnu': 1.79.0 + '@oxlint/binding-linux-arm64-musl': 1.79.0 + '@oxlint/binding-linux-ppc64-gnu': 1.79.0 + '@oxlint/binding-linux-riscv64-gnu': 1.79.0 + '@oxlint/binding-linux-riscv64-musl': 1.79.0 + '@oxlint/binding-linux-s390x-gnu': 1.79.0 + '@oxlint/binding-linux-x64-gnu': 1.79.0 + '@oxlint/binding-linux-x64-musl': 1.79.0 + '@oxlint/binding-openharmony-arm64': 1.79.0 + '@oxlint/binding-win32-arm64-msvc': 1.79.0 + '@oxlint/binding-win32-ia32-msvc': 1.79.0 + '@oxlint/binding-win32-x64-msvc': 1.79.0 + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@4.0.7: {} + + postcss@8.5.26: + dependencies: + nanoid: 3.3.18 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prismjs@1.30.0: {} + + protobufjs@7.6.6: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 + '@protobufjs/float': 1.0.2 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.2 + '@types/node': 24.13.3 + long: 5.3.2 + + puppeteer-core@25.9.0: + dependencies: + '@puppeteer/browsers': 3.2.1 + chromium-bidi: 17.0.2(devtools-protocol@0.0.1666840) + devtools-protocol: 0.0.1666840 + typed-query-selector: 2.12.2 + webdriver-bidi-protocol: 0.4.2 + ws: 8.21.3 + transitivePeerDependencies: + - bufferutil + - proxy-agent + - utf-8-validate + - yauzl + + quickselect@3.0.0: {} + + rbush@4.0.1: + dependencies: + quickselect: 3.0.0 + + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react-remove-scroll-bar@2.3.8(@types/react@19.2.18)(react@19.2.8): + dependencies: + react: 19.2.8 + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + react-remove-scroll@2.7.2(@types/react@19.2.18)(react@19.2.8): + dependencies: + react: 19.2.8 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.18)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.18)(react@19.2.8) + use-sidecar: 1.1.3(@types/react@19.2.18)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + + react-style-singleton@2.2.3(@types/react@19.2.18)(react@19.2.8): + dependencies: + get-nonce: 1.0.1 + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + react@19.2.8: {} + + require-directory@2.1.1: {} + + rolldown@1.2.6: + dependencies: + '@oxc-project/types': 0.147.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.6 + '@rolldown/binding-android-arm64': 1.2.6 + '@rolldown/binding-darwin-arm64': 1.2.6 + '@rolldown/binding-darwin-x64': 1.2.6 + '@rolldown/binding-freebsd-x64': 1.2.6 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.6 + '@rolldown/binding-linux-arm64-gnu': 1.2.6 + '@rolldown/binding-linux-arm64-musl': 1.2.6 + '@rolldown/binding-linux-ppc64-gnu': 1.2.6 + '@rolldown/binding-linux-s390x-gnu': 1.2.6 + '@rolldown/binding-linux-x64-gnu': 1.2.6 + '@rolldown/binding-linux-x64-musl': 1.2.6 + '@rolldown/binding-openharmony-arm64': 1.2.6 + '@rolldown/binding-win32-arm64-msvc': 1.2.6 + '@rolldown/binding-win32-x64-msvc': 1.2.6 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + scheduler@0.27.0: {} + + siginfo@2.0.0: {} + + sonner@2.0.8(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@4.2.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string-width@8.2.2: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.3.0 + + tailwind-merge@2.6.0: {} + + tailwind-merge@3.6.0: {} + + tailwindcss@4.3.3: {} + + tapable@2.3.3: {} + + tinybench@2.9.0: {} + + tinyexec@1.3.0: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + tinypool@2.1.0: {} + + tinyrainbow@3.1.1: {} + + trigram-utils@2.0.1: + dependencies: + collapse-white-space: 2.1.0 + n-gram: 2.0.2 + + tslib@2.8.1: {} + + typed-query-selector@2.12.2: {} + + typescript@5.9.3: {} + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + undici-types@7.18.2: {} + + unicount@1.1.0: {} + + use-callback-ref@1.3.3(@types/react@19.2.18)(react@19.2.8): + dependencies: + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + use-sidecar@1.1.3(@types/react@19.2.18)(react@19.2.8): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + uuid@14.0.2: {} + + vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.26 + rolldown: 1.2.6 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.13.3 + fsevents: 2.3.3 + jiti: 2.7.0 + + vitest@4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)): + dependencies: + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.7 + std-env: 4.2.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 8.2.2(@types/node@24.13.3)(jiti@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.13.3 + transitivePeerDependencies: + - msw + + webdriver-bidi-protocol@0.4.2: {} + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + ws@8.21.3: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs-parser@22.0.0: {} + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yargs@18.1.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 8.2.2 + y18n: 5.0.8 + yargs-parser: 22.0.0 + + zod@3.25.76: {} diff --git a/examples/doc-gen/scripts/skill.mjs b/examples/doc-gen/scripts/skill.mjs new file mode 100644 index 0000000..d9564b5 --- /dev/null +++ b/examples/doc-gen/scripts/skill.mjs @@ -0,0 +1,52 @@ +import { mkdir, readlink, rmdir, symlink, unlink } from "node:fs/promises"; +import { dirname, relative, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +const action = process.argv[2]; +const root = fileURLToPath(new URL("..", import.meta.url)); +const source = resolve(root, "skills/doc-gen"); +const link = resolve(root, ".agents/skills/doc-gen"); +const target = relative(dirname(link), source); + +if (action === "install") { + await mkdir(dirname(link), { recursive: true }); + await createLink(); + process.stdout.write("Installed doc-gen for Agents opened in this directory.\n"); +} else if (action === "uninstall") { + await removeLink(); + await removeEmptyDirectory(dirname(link)); + await removeEmptyDirectory(resolve(root, ".agents")); +} else { + throw new Error("Choose install or uninstall"); +} + +async function createLink() { + const current = await currentTarget(); + if (current === target) return; + if (current !== undefined) throw new Error(`${link} already points to ${current}`); + await symlink(target, link); +} + +async function removeLink() { + const current = await currentTarget(); + if (current === undefined) return; + if (current !== target) throw new Error(`${link} points to ${current}, not ${target}`); + await unlink(link); +} + +async function currentTarget() { + try { + return await readlink(link); + } catch (error) { + if (error.code === "ENOENT") return undefined; + throw error; + } +} + +async function removeEmptyDirectory(path) { + try { + await rmdir(path); + } catch (error) { + if (error.code !== "ENOENT" && error.code !== "ENOTEMPTY") throw error; + } +} diff --git a/examples/doc-gen/skills/doc-gen/SKILL.md b/examples/doc-gen/skills/doc-gen/SKILL.md new file mode 100644 index 0000000..c50b929 --- /dev/null +++ b/examples/doc-gen/skills/doc-gen/SKILL.md @@ -0,0 +1,124 @@ +--- +name: doc-gen +description: Create or revise polished local Univer Docs by authoring a Typst Source Bundle and compiling it with the doc-gen example. +--- + +# Create a Univer Doc with Typst + +Create the Typst Source Bundle for the user's document. Do not assume a fixed `paper/` directory or +an existing template. + +## Choose the paths + +- If the user supplies a bundle directory or `typst.json`, read that bundle and continue there. +- Otherwise create a new task-specific bundle. Under this example, prefer + `authoring//` for source and `output//` for Generated Artifacts. +- Keep the bundle and output directories distinct. Do not overwrite an unrelated existing bundle. + +A bundle has this structure; `prelude.typ` and `assets/` are optional: + +```text +/ +├── typst.json +├── prelude.typ +├── pages/ +│ ├── 01.typ +│ └── 02.typ +└── assets/ + └── image.png +``` + +Create `typst.json` with paths relative to the bundle root: + +```json +{ + "schemaVersion": 1, + "targetUnitId": "document-slug", + "title": "Document title", + "prelude": ["prelude.typ"], + "pages": [ + { "id": "page-01", "source": "pages/01.typ" }, + { "id": "page-02", "source": "pages/02.typ" } + ] +} +``` + +`schemaVersion`, `targetUnitId`, and a non-empty ordered `pages` list are required. `title`, +`prelude`, and explicit page IDs are optional. `targetUnitId` is the Local Doc Identity for this +build, not a Workspace ID. Every referenced file must remain inside the bundle; do not use absolute +paths, parent traversal, external URLs, or escaping symlinks. + +## Author the source + +- Treat `typst.json` and its referenced Typst files and local assets as the only Authoring Source. + Never hand-edit `document.js`, `diagnostics.json`, `document.json`, or generated PNGs as source. +- Put shared page geometry, typography, spacing, colors, headers, and footers in the manifest + prelude. Do not use `#import` or `#include`. +- Start with one page source. Add ordered page sources when the requested content needs more + physical pages; do not use `#pagebreak` or mixed page geometry. +- Declare font family, size, leading, paragraph spacing, page margins, and heading spacing + explicitly. Prefer normal and bold weights; fractional point sizes are supported. +- Give data tables explicit columns, header rows, fills, and borders. Use a borderless table for a + fixed left/right layout. +- Put referenced PNG, JPEG, GIF, WebP, or SVG files in `assets/` and give images deterministic width + and height. Typst lowering does not create native chart objects. + +## Build, inspect, and refine + +Run one complete build per iteration: + +```bash +doc-gen compile-typst --out --json +``` + +1. If compilation fails or reports an `error`, use its `sourcePath` and span to fix the Authoring + Source, then rebuild. Never execute or edit a failed generated program. +2. Treat warnings as review evidence. Simplify a construct when a warning identifies visible + fidelity loss; otherwise retain it and report the limitation. +3. Read every `typst/*.png` and `univer/*.png` from the Machine Result with image input. Check the + requested content, hierarchy, margins, wrapping, clipping, table geometry, images, and missing + blocks. Fix source-to-Typst defects before diagnosing Typst-to-Univer differences. +4. If the Typst Preview is wrong, fix the Typst Source Bundle and rebuild. Do not use a Facade + adjustment to hide a source defect. If the Typst Preview is correct but the Univer Screenshot + differs in a way Typst can express, prefer fixing Typst and rebuilding. +5. For a native Doc capability or final precise adjustment, discover the installed API by intent, + then inspect the exact symbol: + + ```bash + doc-gen api find --unit doc + doc-gen api show + ``` + +6. Write one task-local JavaScript file for the adjustment and read it before execution. `execute` + provides `univerAPI`, `api`, and the selected `doc`; do not redeclare them. Prefer stable + paragraph IDs across multi-step edits, check boolean/null mutation results, and explicitly + `return` JSON-compatible readback instead of relying on `console.log`. +7. Execute the reviewed script against the current Materialized Doc, refresh its screenshots, and + read every returned PNG: + + ```bash + doc-gen execute /document.json --file --json + doc-gen screenshot /document.json --out /univer --json + ``` + + Fix the script or return to the Typst branch until the refreshed Univer Screenshot passes. + +8. A later `compile-typst` rebuild replaces every Facade adjustment in `document.json`. Reapply any + still-needed final adjustment after the last rebuild; there is no automatic replay. +9. Complete visual verification only after reading the applicable Typst Preview and latest Univer + Screenshot. If image input is unavailable, return their paths and mark visual verification + `pending`. +10. Return the title, `targetUnitId`, Doc JSON path, both PNG groups, remaining warnings, executed + script path when used, and visual verification result. + +After the applicable Typst Preview and latest Univer Screenshot pass, optionally tell the user to +run `pnpm viewer` from this example for human inspection. The Local Doc Viewer automatically lists +only `output//document.json`, so prefer `output/` when the user wants this +handoff. It is read-only and supports switching, scrolling, zooming, selection, and copying. It does +not replace image-based Agent verification, and output paths outside that convention remain valid +but are not listed. + +`compile-typst` only executes the Facade program produced by its current local compile. `execute` +runs trusted JavaScript without a sandbox: only run a task-local script you wrote and reread for the +current request. Never execute downloaded or unknown code, or a previously generated `document.js`. +Do not install another compiler or fall back to a system Typst executable. diff --git a/examples/doc-gen/src/cli/document.ts b/examples/doc-gen/src/cli/document.ts new file mode 100644 index 0000000..723394c --- /dev/null +++ b/examples/doc-gen/src/cli/document.ts @@ -0,0 +1,153 @@ +import { prepareContentExecutionProgram } from "@univer-cli/content-execution"; +import { + createStandardHeadlessUniverFacade, + createStandardHeadlessUniverFactory, +} from "@univer-cli/headless-univer"; +import { randomUUID } from "node:crypto"; +import { readFile, rename, rm, writeFile } from "node:fs/promises"; +import { basename, dirname, join, resolve } from "node:path"; +import { UniverInstanceType, type IDocumentData } from "@univerjs/core"; +import { UNIVER_LICENSE } from "../shared/license.js"; + +export interface LoadedDocument { + readonly data: IDocumentData; + readonly path: string; +} + +export interface ExecuteResult { + readonly ok: true; + readonly targetUnitId: string; + readonly document: string; + readonly value: unknown; +} + +export interface OperationFailure { + readonly ok: false; + readonly code: "ARGUMENT_ERROR" | "EXECUTE_ERROR" | "IO_ERROR" | "RENDER_ERROR"; + readonly message: string; +} + +export async function loadDocument(path: string): Promise { + const location = resolve(path); + let text: string; + try { + text = await readFile(location, "utf8"); + } catch (error) { + throw codedError("IO_ERROR", `Cannot read Doc JSON ${location}: ${message(error)}`); + } + + let value: unknown; + try { + value = JSON.parse(text); + } catch (error) { + throw codedError("ARGUMENT_ERROR", `Invalid Doc JSON ${location}: ${message(error)}`); + } + if (!isRecord(value) || typeof value.id !== "string" || value.id.trim().length === 0) { + throw codedError("ARGUMENT_ERROR", `Doc JSON ${location} must contain a non-empty id`); + } + return { data: value as unknown as IDocumentData, path: location }; +} + +export async function executeDocument( + documentPath: string, + scriptPath: string, +): Promise { + try { + const loaded = await loadDocument(documentPath); + let source: string; + try { + source = await readFile(resolve(scriptPath), "utf8"); + } catch (error) { + throw codedError("IO_ERROR", `Cannot read script ${resolve(scriptPath)}: ${message(error)}`); + } + const program = prepareContentExecutionProgram({ + code: source, + unitId: loaded.data.id, + unitType: "doc", + }); + const createUniver = createStandardHeadlessUniverFactory({ + license: UNIVER_LICENSE, + }); + const univer = await createUniver({ + unitId: loaded.data.id, + unitType: UniverInstanceType.UNIVER_DOC, + }); + let saved: IDocumentData; + let value: unknown; + try { + univer.createUnit(UniverInstanceType.UNIVER_DOC, loaded.data); + const univerAPI = createStandardHeadlessUniverFacade(univer); + // Trusted task-local Facade code is the explicit input of this command. + // oxlint-disable-next-line no-new-func -- content-execution prepares an async function body. + const execute = new Function( + "univerAPI", + `"use strict"; return (async () => { ${program}\n})();`, + ) as (api: typeof univerAPI) => Promise; + value = jsonValue(await execute(univerAPI)); + const document = univerAPI.getDocument(loaded.data.id); + if (document === null) throw new Error(`Cannot find Doc ${loaded.data.id}`); + saved = document.save(); + if (saved.id !== loaded.data.id) throw new Error("Saved Doc changed its Local Doc Identity"); + } catch (error) { + throw codedError("EXECUTE_ERROR", message(error)); + } finally { + univer.dispose(); + } + await writeJsonAtomically(loaded.path, saved); + return { ok: true, targetUnitId: saved.id, document: loaded.path, value }; + } catch (error) { + return failure(error, "EXECUTE_ERROR"); + } +} + +export function failure(error: unknown, fallback: OperationFailure["code"]): OperationFailure { + const code = Reflect.get(Object(error), "code"); + return { + ok: false, + code: isFailureCode(code) ? code : fallback, + message: message(error), + }; +} + +function jsonValue(value: unknown): unknown { + if (value === undefined) return null; + let encoded: string | undefined; + try { + encoded = JSON.stringify(value); + } catch (error) { + throw new Error(`Script return value is not JSON-compatible: ${message(error)}`); + } + if (encoded === undefined) throw new Error("Script return value is not JSON-compatible"); + return JSON.parse(encoded) as unknown; +} + +async function writeJsonAtomically(path: string, value: IDocumentData): Promise { + const temporary = join(dirname(path), `.${basename(path)}.${randomUUID()}.tmp`); + try { + await writeFile(temporary, `${JSON.stringify(value, null, 2)}\n`, { + encoding: "utf8", + flag: "wx", + }); + await rename(temporary, path); + } catch (error) { + throw codedError("IO_ERROR", `Cannot save Doc JSON ${path}: ${message(error)}`); + } finally { + await rm(temporary, { force: true }); + } +} + +function codedError(code: OperationFailure["code"], text: string): Error { + return Object.assign(new Error(text), { code }); +} + +function isFailureCode(value: unknown): value is OperationFailure["code"] { + return ["ARGUMENT_ERROR", "EXECUTE_ERROR", "IO_ERROR", "RENDER_ERROR"].includes(String(value)); +} + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function message(error: unknown): string { + return error instanceof Error ? error.message : String(error); +} diff --git a/examples/doc-gen/src/cli/main.ts b/examples/doc-gen/src/cli/main.ts new file mode 100644 index 0000000..c1ea35e --- /dev/null +++ b/examples/doc-gen/src/cli/main.ts @@ -0,0 +1,5 @@ +#!/usr/bin/env node + +import { createProgram } from "./program.js"; + +await createProgram().parseAsync(process.argv); diff --git a/examples/doc-gen/src/cli/program.ts b/examples/doc-gen/src/cli/program.ts new file mode 100644 index 0000000..7c6d112 --- /dev/null +++ b/examples/doc-gen/src/cli/program.ts @@ -0,0 +1,149 @@ +import { createStandardApiReference } from "@univer-cli/api-reference"; +import { createApiCommand } from "@univer-cli/api-reference-command"; +import { Command } from "commander"; +import { + executeDocument, + failure, + loadDocument, + type ExecuteResult, + type OperationFailure, +} from "./document.js"; +import { + buildTypstDocument, + renderDocument, + type MachineFailure, + type MachineResult, +} from "./typst.js"; + +interface CompileTypstOptions { + readonly json?: boolean; + readonly out?: string; +} + +interface ExecuteOptions { + readonly file?: string; + readonly json?: boolean; +} + +interface ScreenshotOptions { + readonly json?: boolean; + readonly out?: string; +} + +interface ScreenshotResult { + readonly ok: true; + readonly targetUnitId: string; + readonly screenshots: readonly string[]; +} + +type CliResult = + | MachineResult + | MachineFailure + | ExecuteResult + | ScreenshotResult + | OperationFailure; + +export function createProgram(): Command { + const program = new Command("doc-gen").description( + "Author a local Univer Doc from a Typst Source Bundle", + ); + program.addCommand(createApiCommand({ reference: createStandardApiReference() })); + program.addCommand(createCompileTypstCommand()); + program.addCommand(createExecuteCommand()); + program.addCommand(createScreenshotCommand()); + return program; +} + +function createCompileTypstCommand(): Command { + const command = new Command("compile-typst") + .description("Compile, materialize, and render a Typst Source Bundle") + .argument("", "bundle directory or typst.json path") + .option("--out ", "directory for Generated Artifacts") + .option("--json", "write one machine-readable result") + .action(async (bundle: string, options: CompileTypstOptions) => { + const result = + options.out === undefined + ? argumentFailure("compile-typst requires --out ") + : await buildTypstDocument(bundle, options.out); + writeResult(result, options.json === true); + if (!result.ok) process.exitCode = 1; + }); + return command; +} + +function createExecuteCommand(): Command { + return new Command("execute") + .description("Execute trusted Facade JavaScript against a local Materialized Doc") + .argument("", "document.json path") + .option("--file ", "trusted task-local Facade JavaScript") + .option("--json", "write one machine-readable result") + .action(async (document: string, options: ExecuteOptions) => { + const result = + options.file === undefined + ? operationArgumentFailure("execute requires --file ") + : await executeDocument(document, options.file); + writeResult(result, options.json === true); + if (!result.ok) process.exitCode = 1; + }); +} + +function createScreenshotCommand(): Command { + return new Command("screenshot") + .description("Render a local Materialized Doc as PNG images") + .argument("", "document.json path") + .option("--out ", "directory for Univer Screenshots") + .option("--json", "write one machine-readable result") + .action(async (document: string, options: ScreenshotOptions) => { + const result = + options.out === undefined + ? operationArgumentFailure("screenshot requires --out ") + : await screenshotDocument(document, options.out); + writeResult(result, options.json === true); + if (!result.ok) process.exitCode = 1; + }); +} + +async function screenshotDocument( + document: string, + destination: string, +): Promise { + try { + const loaded = await loadDocument(document); + const screenshots = await renderDocument(loaded.data, destination, true); + return { ok: true, targetUnitId: loaded.data.id, screenshots }; + } catch (error) { + return failure(error, "RENDER_ERROR"); + } +} + +function argumentFailure(message: string): MachineFailure { + return { ok: false, code: "ARGUMENT_ERROR", message, diagnostics: [], artifacts: {} }; +} + +function operationArgumentFailure(message: string): OperationFailure { + return { ok: false, code: "ARGUMENT_ERROR", message }; +} + +function writeResult(result: CliResult, json: boolean): void { + if (json) { + const stream = result.ok ? process.stdout : process.stderr; + stream.write(`${JSON.stringify(result, null, 2)}\n`); + return; + } + if (result.ok) { + if ("artifacts" in result) { + process.stdout.write( + `Created Doc ${result.targetUnitId} (${String(result.diagnostics.length)} diagnostics)\n` + + `Document: ${result.artifacts.document}\n` + + `Typst previews: ${result.artifacts.typstPreviews.join(", ")}\n` + + `Univer screenshots: ${result.artifacts.univerScreenshots.join(", ")}\n`, + ); + } else if ("screenshots" in result) { + process.stdout.write(`${result.screenshots.join("\n")}\n`); + } else { + process.stdout.write(`Updated Doc ${result.targetUnitId}: ${result.document}\n`); + } + } else { + process.stderr.write(`${result.code}: ${result.message}\n`); + } +} diff --git a/examples/doc-gen/src/cli/typst.ts b/examples/doc-gen/src/cli/typst.ts new file mode 100644 index 0000000..a59817f --- /dev/null +++ b/examples/doc-gen/src/cli/typst.ts @@ -0,0 +1,273 @@ +import { + compileDocTypstBundle, + type CompileDocTypstBundleResult, + type DocTypstDiagnostic, +} from "@univer-cli/doc-typst-facade"; +import { + createStandardHeadlessUniverFacade, + createStandardHeadlessUniverFactory, +} from "@univer-cli/headless-univer"; +import { createUnitScreenshot } from "@univer-cli/unit-screenshot"; +import { createUniverRenderRuntime } from "@univer-cli/univer-render-runtime"; +import { mkdir, readdir, rm, stat, writeFile } from "node:fs/promises"; +import { basename, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { UniverInstanceType, type IDocumentData } from "@univerjs/core"; +import { UNIVER_LICENSE } from "../shared/license.js"; + +export type FailureCode = + | "ARGUMENT_ERROR" + | "COMPILE_ERROR" + | "IO_ERROR" + | "MATERIALIZE_ERROR" + | "RENDER_ERROR"; + +interface ArtifactPaths { + readonly program?: string; + readonly diagnostics?: string; + readonly document?: string; + readonly typstPreviews?: readonly string[]; + readonly univerScreenshots?: readonly string[]; +} + +export interface MachineResult { + readonly ok: true; + readonly title: string; + readonly targetUnitId: string; + readonly diagnostics: readonly DocTypstDiagnostic[]; + readonly artifacts: Required; + readonly visualReviewRequired: true; +} + +export interface MachineFailure { + readonly ok: false; + readonly code: FailureCode; + readonly message: string; + readonly diagnostics: readonly DocTypstDiagnostic[]; + readonly artifacts: ArtifactPaths; +} + +export async function buildTypstDocument( + bundle: string, + destination: string, +): Promise { + const outputDirectory = resolve(destination); + let code: FailureCode = "IO_ERROR"; + let diagnostics: readonly DocTypstDiagnostic[] = []; + + try { + await mkdir(outputDirectory, { recursive: true }); + await cleanKnownArtifacts(outputDirectory); + + code = "COMPILE_ERROR"; + const compiled = await compileDocTypstBundle(resolve(bundle), { + previewDir: join(outputDirectory, "typst"), + }); + diagnostics = compiled.diagnostics; + await writeJson(join(outputDirectory, "diagnostics.json"), { + schemaVersion: 1, + diagnostics, + }); + const errors = diagnostics.filter((diagnostic) => diagnostic.severity === "error"); + if (errors.length > 0) { + throw new Error(`Typst compile returned ${String(errors.length)} error diagnostics`); + } + + code = "IO_ERROR"; + await writeFile(join(outputDirectory, "document.js"), compiled.javascript, "utf8"); + + code = "MATERIALIZE_ERROR"; + const document = await materialize(compiled); + await writeJson(join(outputDirectory, "document.json"), document); + + code = "RENDER_ERROR"; + await renderDocument(document, join(outputDirectory, "univer")); + + const artifacts = await collectArtifacts(outputDirectory); + if ( + artifacts.program === undefined || + artifacts.diagnostics === undefined || + artifacts.document === undefined || + artifacts.typstPreviews === undefined || + artifacts.typstPreviews.length === 0 || + artifacts.univerScreenshots === undefined || + artifacts.univerScreenshots.length === 0 + ) { + throw new Error("Build completed without every required artifact"); + } + return { + ok: true, + title: compiled.title, + targetUnitId: compiled.targetUnitId, + diagnostics, + artifacts: artifacts as Required, + visualReviewRequired: true, + }; + } catch (error) { + const thrownDiagnostics = diagnosticsFrom(error); + if (thrownDiagnostics !== undefined) diagnostics = thrownDiagnostics; + if (code === "COMPILE_ERROR" && diagnostics.length > 0) { + try { + await writeJson(join(outputDirectory, "diagnostics.json"), { + schemaVersion: 1, + diagnostics, + }); + } catch { + code = "IO_ERROR"; + } + } + return { + ok: false, + code, + message: error instanceof Error ? error.message : String(error), + diagnostics, + artifacts: await collectArtifactsSafely(outputDirectory), + }; + } +} + +async function materialize(compiled: CompileDocTypstBundleResult): Promise { + const createUniver = createStandardHeadlessUniverFactory({ + license: UNIVER_LICENSE, + }); + const univer = await createUniver({ + unitId: compiled.targetUnitId, + unitType: UniverInstanceType.UNIVER_DOC, + }); + try { + const univerAPI = createStandardHeadlessUniverFacade(univer); + // The local compiler emits the trusted async body executed by this command. + // oxlint-disable-next-line no-new-func -- no existing JavaScript file is accepted as input. + const execute = new Function( + "univerAPI", + `"use strict"; return (async () => { ${compiled.javascript}\n})();`, + ) as (api: typeof univerAPI) => Promise; + await execute(univerAPI); + const document = univerAPI.getDocument(compiled.targetUnitId); + if (document === null) { + throw new Error(`Generated program did not create Doc ${compiled.targetUnitId}`); + } + return document.save(); + } finally { + univer.dispose(); + } +} + +export async function renderDocument( + document: IDocumentData, + directory: string, + replacePngs = false, +): Promise { + const runtime = await createUniverRenderRuntime({ + renderPageRoot: fileURLToPath(new URL("../render-page", import.meta.url)), + license: UNIVER_LICENSE, + }); + try { + const result = await createUnitScreenshot({ runtime }).capture({ + unitType: "doc", + unitData: document, + target: { kind: "doc-pages" }, + }); + if (result.images.length === 0) throw new Error("Screenshot returned no PNG images"); + const images = result.images.map((image) => { + if (basename(image.name) !== image.name || !image.name.endsWith(".png")) { + throw new Error(`Screenshot returned unsafe image name: ${image.name}`); + } + return { image, location: resolve(directory, image.name) }; + }); + await mkdir(directory, { recursive: true }); + if (replacePngs) { + await Promise.all( + (await readDirectory(directory)) + .filter((entry) => entry.isFile() && entry.name.endsWith(".png")) + .map((entry) => rm(join(directory, entry.name))), + ); + } + for (const { image, location } of images) { + await writeFile(location, image.bytes); + } + return images.map(({ location }) => location); + } finally { + await runtime.close(); + } +} + +async function cleanKnownArtifacts(outputDirectory: string): Promise { + await Promise.all( + ["document.js", "diagnostics.json", "document.json"].map((name) => + rm(join(outputDirectory, name), { force: true }), + ), + ); + await Promise.all( + ["typst", "univer"].map(async (name) => { + const directory = join(outputDirectory, name); + for (const entry of await readDirectory(directory)) { + if (entry.isFile() && entry.name.endsWith(".png")) { + await rm(join(directory, entry.name)); + } + } + }), + ); +} + +async function collectArtifacts(outputDirectory: string): Promise { + const program = join(outputDirectory, "document.js"); + const diagnostics = join(outputDirectory, "diagnostics.json"); + const document = join(outputDirectory, "document.json"); + const typstPreviews = await pngFiles(join(outputDirectory, "typst")); + const univerScreenshots = await pngFiles(join(outputDirectory, "univer")); + return { + ...((await isFile(program)) ? { program } : {}), + ...((await isFile(diagnostics)) ? { diagnostics } : {}), + ...((await isFile(document)) ? { document } : {}), + ...(typstPreviews.length > 0 ? { typstPreviews } : {}), + ...(univerScreenshots.length > 0 ? { univerScreenshots } : {}), + }; +} + +async function collectArtifactsSafely(outputDirectory: string): Promise { + try { + return await collectArtifacts(outputDirectory); + } catch { + return {}; + } +} + +async function pngFiles(directory: string): Promise { + return (await readDirectory(directory)) + .filter((entry) => entry.isFile() && entry.name.endsWith(".png")) + .map((entry) => join(directory, entry.name)) + .sort(); +} + +async function readDirectory(directory: string) { + try { + return await readdir(directory, { withFileTypes: true }); + } catch (error) { + if (isNodeError(error) && error.code === "ENOENT") return []; + throw error; + } +} + +async function isFile(path: string): Promise { + try { + return (await stat(path)).isFile(); + } catch (error) { + if (isNodeError(error) && error.code === "ENOENT") return false; + throw error; + } +} + +async function writeJson(path: string, value: unknown): Promise { + await writeFile(path, `${JSON.stringify(value, null, 2)}\n`, "utf8"); +} + +function diagnosticsFrom(error: unknown): readonly DocTypstDiagnostic[] | undefined { + if (typeof error !== "object" || error === null) return undefined; + const diagnostics = Reflect.get(error, "diagnostics"); + return Array.isArray(diagnostics) ? (diagnostics as readonly DocTypstDiagnostic[]) : undefined; +} + +function isNodeError(error: unknown): error is NodeJS.ErrnoException { + return error instanceof Error; +} diff --git a/examples/doc-gen/src/render-page/index.html b/examples/doc-gen/src/render-page/index.html new file mode 100644 index 0000000..2efc0cf --- /dev/null +++ b/examples/doc-gen/src/render-page/index.html @@ -0,0 +1,21 @@ + + + + + + Univer Render Page + + + +
+ + + diff --git a/examples/doc-gen/src/render-page/main.ts b/examples/doc-gen/src/render-page/main.ts new file mode 100644 index 0000000..b877842 --- /dev/null +++ b/examples/doc-gen/src/render-page/main.ts @@ -0,0 +1,6 @@ +import { createPresetRenderUniver, mountUniverRenderPage } from "@univer-cli/univer-render-page"; + +const container = document.querySelector("#app"); +if (container === null) throw new Error("#app is required"); + +await mountUniverRenderPage({ container, createUniver: createPresetRenderUniver }); diff --git a/examples/doc-gen/src/shared/license.ts b/examples/doc-gen/src/shared/license.ts new file mode 100644 index 0000000..849fafa --- /dev/null +++ b/examples/doc-gen/src/shared/license.ts @@ -0,0 +1,6 @@ +/** + * Application-owned 90-day development license. + * Issued 2026-08-14 and must be replaced on the 90-day rotation. + */ +export const UNIVER_LICENSE = + "2088168239728517120-1-eyJpIjoiMjA4ODE2ODIzOTcyODUxNzEyMCIsInYiOiIxIiwicCI6ImtPN3hWUG5mZVFYSlY2ZjRiSk03MFk5NHdOZTZkR3VRTDNxdklqRFpZblU9IiwiZG0iOlsibG9jYWxob3N0Il0sInJ0IjozLCJmdCI6eyJ1ZiI6eyJtdSI6MjE0NzQ4MzY0NiwiZXQiOjE3OTQ3NTg0MDAsIm1tIjoyMTQ3NDgzNjQ2LCJjdSI6MjE0NzQ4MzY0Nn0sInNmIjp7ImV0IjoxNzk0NzU4NDAwLCJydiI6dHJ1ZSwicHRuIjoyMTQ3NDgzNjQ2LCJtaXMiOjIxNDc0ODM2NDYsIm1wbiI6MjE0NzQ4MzY0NiwibmMiOjIxNDc0ODM2NDYsImllYyI6MCwiZmNjIjowfSwiZGYiOnsiZXQiOjE3OTQ3NTg0MDAsInJ2Ijp0cnVlLCJtaXMiOjIxNDc0ODM2NDYsIm1wbiI6MjE0NzQ4MzY0NiwiaWVjIjowfSwid3NmIjp7ImV0IjoxNzk0NzU4NDAwLCJobiI6MjE0NzQ4MzY0Nn19LCJ1ZCI6MTc5NDc1ODQwMCwiYXQiOjE3ODY2OTMxMTAsImUiOiJkZXZlbG9wZXJAdW5pdmVyLmFpIiwiZCI6OCwibiI6MTl9-ZidzNthAEZRZ13xLQUagdaUsjaMjrr5BDf4JGx9Zzsw1PgmNLak8wuZWQ1le9eMYUyubIa5YI4JpExgdHhN1BA==-1794758400"; diff --git a/examples/doc-gen/src/viewer/components/ui/badge.tsx b/examples/doc-gen/src/viewer/components/ui/badge.tsx new file mode 100644 index 0000000..1644927 --- /dev/null +++ b/examples/doc-gen/src/viewer/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as Slot from "@radix-ui/react-slot"; +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/viewer/lib/utils"; + +const badgeVariants = cva( + "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90", + outline: + "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + link: "text-primary underline-offset-4 [a&]:hover:underline", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Badge({ + className, + variant = "default", + asChild = false, + ...props +}: React.ComponentProps<"span"> & VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot.Root : "span"; + + return ( + + ); +} + +export { Badge, badgeVariants }; diff --git a/examples/doc-gen/src/viewer/components/ui/button.tsx b/examples/doc-gen/src/viewer/components/ui/button.tsx new file mode 100644 index 0000000..2e29343 --- /dev/null +++ b/examples/doc-gen/src/viewer/components/ui/button.tsx @@ -0,0 +1,62 @@ +import * as Slot from "@radix-ui/react-slot"; +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/viewer/lib/utils"; + +const buttonVariants = cva( + "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50", + secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3", + sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3", + "icon-sm": "size-8", + "icon-lg": "size-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +function Button({ + className, + variant = "default", + size = "default", + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean; + }) { + const Comp = asChild ? Slot.Root : "button"; + + return ( + + ); +} + +export { Button, buttonVariants }; diff --git a/examples/doc-gen/src/viewer/components/ui/separator.tsx b/examples/doc-gen/src/viewer/components/ui/separator.tsx new file mode 100644 index 0000000..8883e39 --- /dev/null +++ b/examples/doc-gen/src/viewer/components/ui/separator.tsx @@ -0,0 +1,26 @@ +import * as SeparatorPrimitive from "@radix-ui/react-separator"; +import * as React from "react"; + +import { cn } from "@/viewer/lib/utils"; + +function Separator({ + className, + orientation = "horizontal", + decorative = true, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { Separator }; diff --git a/examples/doc-gen/src/viewer/index.html b/examples/doc-gen/src/viewer/index.html new file mode 100644 index 0000000..67942e8 --- /dev/null +++ b/examples/doc-gen/src/viewer/index.html @@ -0,0 +1,13 @@ + + + + + + + Doc Gen Viewer + + +
+ + + diff --git a/examples/doc-gen/src/viewer/lib/utils.ts b/examples/doc-gen/src/viewer/lib/utils.ts new file mode 100644 index 0000000..a5ef193 --- /dev/null +++ b/examples/doc-gen/src/viewer/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/examples/doc-gen/src/viewer/library.ts b/examples/doc-gen/src/viewer/library.ts new file mode 100644 index 0000000..3317171 --- /dev/null +++ b/examples/doc-gen/src/viewer/library.ts @@ -0,0 +1,32 @@ +import type { IDocumentData } from "@univerjs/core"; + +export type DocumentLoader = () => Promise; + +export interface LibraryEntry { + readonly load: DocumentLoader; + readonly slug: string; +} + +const DOCUMENT_PATH = /^\.\.\/\.\.\/output\/([^/]+)\/document\.json$/; + +export function discoverDocuments( + modules: Readonly>, +): LibraryEntry[] { + return Object.entries(modules) + .flatMap(([path, load]) => { + const match = DOCUMENT_PATH.exec(path); + return match?.[1] === undefined ? [] : [{ load, slug: match[1] }]; + }) + .sort((left, right) => (left.slug < right.slug ? -1 : left.slug > right.slug ? 1 : 0)); +} + +export function toReadOnlyDocument(value: unknown): IDocumentData { + if (!isRecord(value) || typeof value["id"] !== "string" || value["id"].trim() === "") { + throw new Error("document.json must contain a non-empty id"); + } + return { ...(value as unknown as IDocumentData), disabled: true }; +} + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} diff --git a/examples/doc-gen/src/viewer/main.tsx b/examples/doc-gen/src/viewer/main.tsx new file mode 100644 index 0000000..1d16af1 --- /dev/null +++ b/examples/doc-gen/src/viewer/main.tsx @@ -0,0 +1,204 @@ +import { createPresetRenderUniver } from "@univer-cli/univer-render-page"; +import { type Univer, UniverInstanceType } from "@univerjs/core"; +import { FUniver } from "@univerjs/core/facade"; +import "@univerjs/ui/facade"; +import { BookOpenText, Library, LockKeyhole, RefreshCw } from "lucide-react"; +import { flushSync } from "react-dom"; +import { createRoot } from "react-dom/client"; + +import { UNIVER_LICENSE } from "../shared/license"; +import { Badge } from "./components/ui/badge"; +import { Button } from "./components/ui/button"; +import { Separator } from "./components/ui/separator"; +import { discoverDocuments, toReadOnlyDocument, type LibraryEntry } from "./library"; +import "./styles.css"; + +const documentModules = import.meta.glob("../../output/*/document.json", { + import: "default", +}); + +const entries = discoverDocuments(documentModules); +const viewer = requireElement("#viewer"); +const root = createRoot(viewer); +flushSync(() => root.render()); + +const statusText = requireElement("#status-text"); +const error = requireElement("#error"); +const app = requireElement("#app"); +const title = requireElement("#document-title"); +const buttons = [...document.querySelectorAll("#document-list button")]; + +let mountedUniver: Univer | undefined; +let selectedSlug: string | undefined; +let switching = false; + +window.addEventListener("pagehide", disposeMountedUniver); + +for (const eventName of ["beforeinput", "cut", "drop", "paste"]) { + app.addEventListener(eventName, (event) => event.preventDefault(), { capture: true }); +} + +const firstEntry = entries[0]; +if (firstEntry !== undefined) void selectDocument(firstEntry); + +function ViewerShell() { + return ( +
+ + +
+
+
+

+ Choose a document +

+
+ + +
+
+
+
+ ); +} + +async function selectDocument(entry: LibraryEntry): Promise { + if (switching) return; + if (selectedSlug === entry.slug && mountedUniver !== undefined) { + error.hidden = true; + statusText.textContent = "Ready · read only"; + return; + } + + switching = true; + setButtonsDisabled(true); + error.hidden = true; + statusText.textContent = `Loading ${entry.slug}…`; + let nextUniver: Univer | undefined; + + try { + const document = toReadOnlyDocument(await entry.load()); + disposeMountedUniver(); + + nextUniver = await createPresetRenderUniver({ container: app, license: UNIVER_LICENSE }); + const univerAPI = FUniver.newAPI(nextUniver); + univerAPI.setUIVisible(univerAPI.Enum.BuiltInUIPart.TOOLBAR, false); + univerAPI.setUIVisible(univerAPI.Enum.BuiltInUIPart.FLOATING, false); + nextUniver.createUnit(UniverInstanceType.UNIVER_DOC, document); + mountedUniver = nextUniver; + nextUniver = undefined; + selectedSlug = entry.slug; + title.textContent = document.title?.trim() || entry.slug; + statusText.textContent = "Ready · read only"; + for (const button of buttons) { + const active = button.dataset.slug === selectedSlug; + button.dataset.active = String(active); + button.setAttribute("aria-current", active ? "page" : "false"); + } + } catch (cause) { + nextUniver?.dispose(); + if (mountedUniver === undefined) { + selectedSlug = undefined; + title.textContent = "Unable to load document"; + } + error.textContent = cause instanceof Error ? cause.message : String(cause); + error.hidden = false; + statusText.textContent = "Load failed"; + } finally { + switching = false; + setButtonsDisabled(false); + } +} + +function disposeMountedUniver(): void { + mountedUniver?.dispose(); + mountedUniver = undefined; +} + +function setButtonsDisabled(disabled: boolean): void { + for (const button of buttons) button.disabled = disabled; +} + +function requireElement(selector: string): T { + const element = document.querySelector(selector); + if (element === null) throw new Error(`${selector} is required`); + return element; +} diff --git a/examples/doc-gen/src/viewer/styles.css b/examples/doc-gen/src/viewer/styles.css new file mode 100644 index 0000000..6ceb963 --- /dev/null +++ b/examples/doc-gen/src/viewer/styles.css @@ -0,0 +1,77 @@ +@import "tailwindcss"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + color: var(--foreground); + font-family: + Inter, + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + sans-serif; + background: var(--muted); + font-synthesis: none; +} + +html, +body, +#viewer { + width: 100%; + height: 100%; + margin: 0; +} + +body { + overflow: hidden; +} + +#app { + grid-row: 3; +} + +#error[hidden] { + display: none; +} + +code { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; +} diff --git a/examples/doc-gen/test/fixtures/invalid/broken.typ b/examples/doc-gen/test/fixtures/invalid/broken.typ new file mode 100644 index 0000000..b971098 --- /dev/null +++ b/examples/doc-gen/test/fixtures/invalid/broken.typ @@ -0,0 +1 @@ +#table(columns: 3, [unfinished] diff --git a/examples/doc-gen/test/fixtures/invalid/typst.json b/examples/doc-gen/test/fixtures/invalid/typst.json new file mode 100644 index 0000000..bee3998 --- /dev/null +++ b/examples/doc-gen/test/fixtures/invalid/typst.json @@ -0,0 +1,5 @@ +{ + "schemaVersion": 1, + "targetUnitId": "invalid-brief", + "pages": ["broken.typ"] +} diff --git a/examples/doc-gen/test/fixtures/valid/pages/brief.typ b/examples/doc-gen/test/fixtures/valid/pages/brief.typ new file mode 100644 index 0000000..6478eb4 --- /dev/null +++ b/examples/doc-gen/test/fixtures/valid/pages/brief.typ @@ -0,0 +1,46 @@ +#text(size: 8pt, weight: "bold", fill: green)[RELEASE NOTE / 2026.09] + +#text(size: 24pt, weight: "bold", fill: navy)[Univer CLI SDK 发布简报] + +#text(size: 10.5pt, fill: muted)[用可维护的 Typst 源稿,构建漂亮、可编辑、可验证的 Univer Doc。] + +#v(5pt) +#line(length: 100%, stroke: (paint: accent, thickness: 2pt)) +#v(8pt) + +#summary[ + #text(weight: "bold", fill: navy)[本期摘要] `compile-typst` 在一次本地调用中完成编译、Doc 物化与双重视觉验证。源稿保持简洁,生成结果可以交给 Univer 继续编辑。 +] + +#section-title[目标] + +让开发者和 agent 共享同一条清晰路径:直接编辑 Typst Source Bundle,通过结构化 diagnostics 修正问题,再对照源侧预览与最终 Univer 截图确认结果。 + +#section-title[核心能力] + +#table( + columns: (1.2fr, 2.4fr, 1.3fr), + inset: 6pt, + stroke: 0.45pt + rule, + table.header( + table.cell(fill: navy)[#text(weight: "bold", fill: white)[阶段]], + table.cell(fill: navy)[#text(weight: "bold", fill: white)[交付结果]], + table.cell(fill: navy)[#text(weight: "bold", fill: white)[检查重点]], + ), + table.cell(fill: pale)[#text(weight: "bold")[Compile]], + [Facade program、diagnostics 与 Typst Preview], + [语义与源侧排版], + table.cell(fill: pale)[#text(weight: "bold")[Materialize]], + [可保存、可继续编辑的 Materialized Doc], + [Local Doc Identity], + table.cell(fill: pale)[#text(weight: "bold")[Render]], + [逐页 Univer Screenshot 与 Machine Result], + [换行、表格与缺失内容], +) + +#section-title[下一步] + +#text(weight: "bold", fill: green)[01] 创建独立 bundle 源稿 · #text(weight: "bold", fill: green)[02] 运行一次完整命令 · #text(weight: "bold", fill: green)[03] 阅读两类 PNG 后交付 + +#v(6pt) +#text(size: 8.5pt, fill: muted)[同一份源稿,同一条命令,两层证据。] diff --git a/examples/doc-gen/test/fixtures/valid/prelude.typ b/examples/doc-gen/test/fixtures/valid/prelude.typ new file mode 100644 index 0000000..92e7dd4 --- /dev/null +++ b/examples/doc-gen/test/fixtures/valid/prelude.typ @@ -0,0 +1,34 @@ +#let navy = rgb("#173B57") +#let accent = rgb("#00A7A5") +#let green = rgb("#2EAD72") +#let pale = rgb("#EAF7F5") +#let muted = rgb("#5E7180") +#let rule = rgb("#C7D9DF") + +#set page( + paper: "a4", + margin: (x: 46pt, top: 52pt, bottom: 48pt), + header-ascent: 18pt, + footer-descent: 18pt, + header: align(right)[#text(size: 7.5pt, weight: "bold", fill: accent)[UNIVER CLI SDK · PRODUCT BRIEF]], + footer: [ + #line(length: 100%, stroke: (paint: rule, thickness: 0.5pt)) + #v(3pt) + #align(left)[#text(size: 7.5pt, fill: muted)[LOCAL AUTHORING · TYPST → UNIVER DOC]] + ], +) + +#set text( + font: ("Noto Sans CJK SC", "PingFang SC", "Microsoft YaHei", "Arial"), + size: 9.5pt, + fill: navy, +) +#set par(leading: 0.68em, spacing: 0.72em) + +#let section-title(body) = block(above: 8pt, below: 4pt)[ + #text(size: 12pt, weight: "bold", fill: navy)[#body] + #v(2pt) + #line(length: 100%, stroke: (paint: accent, thickness: 0.8pt)) +] + +#let summary(body) = block(width: 100%, fill: pale, inset: 10pt, radius: 3pt)[#body] diff --git a/examples/doc-gen/test/fixtures/valid/typst.json b/examples/doc-gen/test/fixtures/valid/typst.json new file mode 100644 index 0000000..450af8a --- /dev/null +++ b/examples/doc-gen/test/fixtures/valid/typst.json @@ -0,0 +1,7 @@ +{ + "schemaVersion": 1, + "targetUnitId": "univer-cli-sdk-release-brief", + "title": "Univer CLI SDK 发布简报", + "prelude": ["prelude.typ"], + "pages": [{ "id": "release-brief", "source": "pages/brief.typ" }] +} diff --git a/examples/doc-gen/test/smoke.test.ts b/examples/doc-gen/test/smoke.test.ts new file mode 100644 index 0000000..a645149 --- /dev/null +++ b/examples/doc-gen/test/smoke.test.ts @@ -0,0 +1,231 @@ +import { spawnSync } from "node:child_process"; +import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, expect, it } from "vitest"; + +const root = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const entrypoint = join(root, "dist/cli/main.js"); +const temporaryDirectories: string[] = []; + +afterEach(async () => { + await Promise.all(temporaryDirectories.splice(0).map((path) => rm(path, { recursive: true }))); +}); + +it("builds an arbitrary bundle and fails closed on invalid Typst", async () => { + const temporaryDirectory = await mkdtemp(join(tmpdir(), "doc-gen-")); + temporaryDirectories.push(temporaryDirectory); + const output = join(temporaryDirectory, "output"); + const callerFile = join(output, "keep.txt"); + await mkdir(output); + await writeFile(callerFile, "caller-owned\n", "utf8"); + + const success = run([ + "compile-typst", + join(root, "test/fixtures/valid/typst.json"), + "--out", + output, + "--json", + ]); + expect(success.status).toBe(0); + expect(success.stderr).toBe(""); + const result = JSON.parse(success.stdout) as { + readonly ok: boolean; + readonly targetUnitId: string; + readonly diagnostics: readonly { readonly severity?: string }[]; + readonly artifacts: { + readonly program: string; + readonly diagnostics: string; + readonly document: string; + readonly typstPreviews: readonly string[]; + readonly univerScreenshots: readonly string[]; + }; + readonly visualReviewRequired: boolean; + }; + expect(result).toMatchObject({ + ok: true, + targetUnitId: "univer-cli-sdk-release-brief", + visualReviewRequired: true, + }); + expect(result.diagnostics.some((diagnostic) => diagnostic.severity === "error")).toBe(false); + expect(await readFile(result.artifacts.program, "utf8")).toContain( + "Generated by @univer-cli/doc-typst-facade", + ); + expect(JSON.parse(await readFile(result.artifacts.diagnostics, "utf8"))).toMatchObject({ + schemaVersion: 1, + }); + + const document = JSON.parse(await readFile(result.artifacts.document, "utf8")) as { + readonly id: string; + readonly title: string; + readonly body?: { + readonly dataStream?: string; + readonly tables?: readonly unknown[]; + }; + }; + expect(document).toMatchObject({ + id: "univer-cli-sdk-release-brief", + title: "Univer CLI SDK 发布简报", + }); + expect(document.body?.dataStream).toContain("核心能力"); + expect(document.body?.dataStream).toContain("下一步"); + expect(document.body?.tables).toHaveLength(1); + for (const path of [...result.artifacts.typstPreviews, ...result.artifacts.univerScreenshots]) { + expect((await readFile(path)).subarray(0, 8).toString("hex")).toBe("89504e470d0a1a0a"); + } + expect(await readFile(callerFile, "utf8")).toBe("caller-owned\n"); + + const failureRun = run([ + "compile-typst", + join(root, "test/fixtures/invalid"), + "--out", + output, + "--json", + ]); + expect(failureRun.status).toBe(1); + expect(failureRun.stdout).toBe(""); + const failure = JSON.parse(failureRun.stderr) as { + readonly ok: boolean; + readonly code: string; + readonly diagnostics: readonly { readonly severity?: string }[]; + readonly artifacts: Record; + }; + expect(failure).toMatchObject({ ok: false, code: "COMPILE_ERROR" }); + expect(failure.diagnostics.some((diagnostic) => diagnostic.severity === "error")).toBe(true); + expect(failure.artifacts).not.toHaveProperty("program"); + expect(failure.artifacts).not.toHaveProperty("document"); + expect(failure.artifacts).not.toHaveProperty("univerScreenshots"); + await expect(readFile(join(output, "document.js"))).rejects.toMatchObject({ code: "ENOENT" }); + await expect(readFile(join(output, "document.json"))).rejects.toMatchObject({ code: "ENOENT" }); + expect(await readFile(callerFile, "utf8")).toBe("caller-owned\n"); +}, 60_000); + +it("queries APIs, refines a local Doc, and refreshes its screenshot", async () => { + const temporaryDirectory = await mkdtemp(join(tmpdir(), "doc-gen-loop-")); + temporaryDirectories.push(temporaryDirectory); + const output = join(temporaryDirectory, "build"); + const compiled = run([ + "compile-typst", + join(root, "test/fixtures/valid/typst.json"), + "--out", + output, + "--json", + ]); + expect(compiled.status).toBe(0); + const documentPath = join(output, "document.json"); + + const found = run(["api", "find", "paragraph", "--unit", "doc"]); + expect(found.status).toBe(0); + expect(found.stdout).toContain("FDocument.getParagraphs"); + const shown = run(["api", "show", "FDocumentParagraph.setText"]); + expect(shown.status).toBe(0); + expect(shown.stdout).toContain("setText"); + const missing = run(["api", "show", "DefinitelyMissingSymbol"]); + expect(missing.status).toBe(1); + expect(missing.stderr).toContain("Unknown symbol"); + + const script = join(temporaryDirectory, "refine.js"); + await writeFile( + script, + [ + "const paragraph = doc.getParagraphs()[0];", + 'if (!paragraph) throw new Error("paragraph missing");', + "const changed = paragraph.setText(`${paragraph.getText()} [refined]`);", + 'if (!changed) throw new Error("paragraph update failed");', + "return { text: paragraph.getText() };", + ].join("\n"), + ); + const missingScript = run(["execute", documentPath, "--json"]); + expect(missingScript.status).toBe(1); + expect(missingScript.stdout).toBe(""); + expect(JSON.parse(missingScript.stderr)).toMatchObject({ + ok: false, + code: "ARGUMENT_ERROR", + }); + const unreadableScript = run([ + "execute", + documentPath, + "--file", + join(temporaryDirectory, "missing.js"), + "--json", + ]); + expect(JSON.parse(unreadableScript.stderr)).toMatchObject({ ok: false, code: "IO_ERROR" }); + const executed = run(["execute", documentPath, "--file", script, "--json"]); + expect(executed.status).toBe(0); + expect(executed.stderr).toBe(""); + expect(JSON.parse(executed.stdout)).toMatchObject({ + ok: true, + targetUnitId: "univer-cli-sdk-release-brief", + document: documentPath, + value: { text: expect.stringContaining("[refined]") }, + }); + expect(await readFile(documentPath, "utf8")).toContain("[refined]"); + + const beforeFailure = await readFile(documentPath, "utf8"); + const failureScript = join(temporaryDirectory, "fail.js"); + await writeFile(failureScript, 'throw new Error("expected failure");\n'); + const failed = run(["execute", documentPath, "--file", failureScript, "--json"]); + expect(failed.status).toBe(1); + expect(failed.stdout).toBe(""); + expect(JSON.parse(failed.stderr)).toMatchObject({ ok: false, code: "EXECUTE_ERROR" }); + expect(await readFile(documentPath, "utf8")).toBe(beforeFailure); + + const invalidReturn = join(temporaryDirectory, "invalid-return.js"); + await writeFile( + invalidReturn, + 'doc.getParagraphs()[0].setText("must not persist"); return 1n;\n', + ); + const invalid = run(["execute", documentPath, "--file", invalidReturn, "--json"]); + expect(invalid.status).toBe(1); + expect(JSON.parse(invalid.stderr)).toMatchObject({ ok: false, code: "EXECUTE_ERROR" }); + expect(await readFile(documentPath, "utf8")).toBe(beforeFailure); + + const malformed = join(temporaryDirectory, "malformed.json"); + await writeFile(malformed, "{\n"); + const malformedResult = run(["execute", malformed, "--file", script, "--json"]); + expect(JSON.parse(malformedResult.stderr)).toMatchObject({ + ok: false, + code: "ARGUMENT_ERROR", + }); + const missingId = join(temporaryDirectory, "missing-id.json"); + await writeFile(missingId, "{}\n"); + const missingIdResult = run(["execute", missingId, "--file", script, "--json"]); + expect(JSON.parse(missingIdResult.stderr)).toMatchObject({ + ok: false, + code: "ARGUMENT_ERROR", + }); + + const screenshots = join(temporaryDirectory, "screenshots"); + const nested = join(screenshots, "nested"); + await mkdir(nested, { recursive: true }); + await writeFile(join(screenshots, "old.png"), "old"); + await writeFile(join(screenshots, "keep.txt"), "keep\n"); + await writeFile(join(nested, "keep.png"), "nested\n"); + const captured = run(["screenshot", documentPath, "--out", screenshots, "--json"]); + expect(captured.status).toBe(0); + expect(captured.stderr).toBe(""); + const screenshotResult = JSON.parse(captured.stdout) as { + readonly screenshots: readonly string[]; + }; + expect(screenshotResult.screenshots.length).toBeGreaterThan(0); + for (const path of screenshotResult.screenshots) { + expect((await readFile(path)).subarray(0, 8).toString("hex")).toBe("89504e470d0a1a0a"); + } + await expect(readFile(join(screenshots, "old.png"))).rejects.toMatchObject({ code: "ENOENT" }); + expect(await readFile(join(screenshots, "keep.txt"), "utf8")).toBe("keep\n"); + expect(await readFile(join(nested, "keep.png"), "utf8")).toBe("nested\n"); + + const missingOut = run(["screenshot", documentPath, "--json"]); + expect(missingOut.status).toBe(1); + expect(missingOut.stdout).toBe(""); + expect(JSON.parse(missingOut.stderr)).toMatchObject({ ok: false, code: "ARGUMENT_ERROR" }); +}, 120_000); + +function run(args: readonly string[]) { + return spawnSync(process.execPath, [entrypoint, ...args], { + encoding: "utf8", + env: { ...process.env, UNIVER_LICENSE: process.env["UNIVER_LICENSE"] ?? "" }, + timeout: 45_000, + }); +} diff --git a/examples/doc-gen/test/viewer.test.ts b/examples/doc-gen/test/viewer.test.ts new file mode 100644 index 0000000..218b40b --- /dev/null +++ b/examples/doc-gen/test/viewer.test.ts @@ -0,0 +1,27 @@ +import { expect, it } from "vitest"; + +import { discoverDocuments, toReadOnlyDocument, type DocumentLoader } from "../src/viewer/library"; + +it("discovers only one-level Local Doc Library entries in stable order", () => { + const load: DocumentLoader = async () => ({}); + const entries = discoverDocuments({ + "../../elsewhere/gamma/document.json": load, + "../../output/alpha/other.json": load, + "../../output/beta/document.json": load, + "../../output/nested/gamma/document.json": load, + "../../output/alpha/document.json": load, + }); + + expect(entries.map(({ slug }) => slug)).toEqual(["alpha", "beta"]); + expect(entries.every((entry) => entry.load === load)).toBe(true); +}); + +it("validates and disables a Materialized Doc without mutating its source", () => { + const source = { id: "brief", title: "Release brief", disabled: false }; + + expect(toReadOnlyDocument(source)).toEqual({ ...source, disabled: true }); + expect(source.disabled).toBe(false); + expect(() => toReadOnlyDocument({})).toThrow("non-empty id"); + expect(() => toReadOnlyDocument({ id: " " })).toThrow("non-empty id"); + expect(() => toReadOnlyDocument([])).toThrow("non-empty id"); +}); diff --git a/examples/doc-gen/tsconfig.json b/examples/doc-gen/tsconfig.json new file mode 100644 index 0000000..d1360f5 --- /dev/null +++ b/examples/doc-gen/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "types": ["node"], + "strict": true, + "exactOptionalPropertyTypes": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + "verbatimModuleSyntax": true, + "experimentalDecorators": true, + "declaration": false, + "declarationMap": false, + "paths": { + "@/*": ["./src/*"] + }, + "sourceMap": true, + "skipLibCheck": true, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/cli/**/*.ts"] +} diff --git a/examples/doc-gen/tsconfig.web.json b/examples/doc-gen/tsconfig.web.json new file mode 100644 index 0000000..8d3dd1f --- /dev/null +++ b/examples/doc-gen/tsconfig.web.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "Bundler", + "noEmit": true, + "jsx": "react-jsx", + "types": ["vite/client"] + }, + "include": ["src/viewer/**/*.ts", "src/viewer/**/*.tsx", "src/shared/**/*.ts"] +} diff --git a/examples/doc-gen/vite.render.config.ts b/examples/doc-gen/vite.render.config.ts new file mode 100644 index 0000000..b623cb3 --- /dev/null +++ b/examples/doc-gen/vite.render.config.ts @@ -0,0 +1,11 @@ +import { resolve } from "node:path"; +import { defineConfig } from "vite"; + +export default defineConfig({ + root: resolve(import.meta.dirname, "src/render-page"), + build: { + emptyOutDir: true, + outDir: resolve(import.meta.dirname, "dist/render-page"), + target: "es2022", + }, +}); diff --git a/examples/doc-gen/vite.viewer.config.ts b/examples/doc-gen/vite.viewer.config.ts new file mode 100644 index 0000000..4f8c65d --- /dev/null +++ b/examples/doc-gen/vite.viewer.config.ts @@ -0,0 +1,22 @@ +import { resolve } from "node:path"; +import tailwindcss from "@tailwindcss/vite"; +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +export default defineConfig({ + root: import.meta.dirname, + plugins: [react(), tailwindcss()], + resolve: { + alias: { + "@": resolve(import.meta.dirname, "src"), + }, + }, + build: { + emptyOutDir: true, + outDir: resolve(import.meta.dirname, "dist/viewer"), + rollupOptions: { + input: resolve(import.meta.dirname, "src/viewer/index.html"), + }, + target: "es2022", + }, +});