feat: 增加 ECharts 渲染与预览交互增强
- 新增可复用的 markdown-echarts 工作区,支持安全的 YAML 围栏、默认值、语义校验、错误占位和 SVG 渲染 - 将 ECharts 接入统一 Markdown、快速预览、精确预览与 PDF 链路,并复用 Mermaid 的不可跨页和超高图单页适配策略 - 默认示例加入 ECharts,增加源文本折叠、顶部文档状态、页码输入跳转与滚动同步 - 快速预览改用外层容器滚动,使滚动条与精确预览统一贴在预览区域右侧,并兼容显示缩放 - 完善 Docker 工作区复制、可配置 Compose 镜像、测试覆盖和进度文档
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { getNearestPageNumber } from "../src/preview-page";
|
||||
import {
|
||||
getNearestPageNumber,
|
||||
getPreviewPageScrollTop,
|
||||
normalizePreviewPageNumber
|
||||
} from "../src/preview-page";
|
||||
|
||||
const pages = [
|
||||
{ top: 0, bottom: 100 },
|
||||
@@ -22,3 +26,35 @@ describe("getNearestPageNumber", () => {
|
||||
expect(getNearestPageNumber(Number.NaN, pages)).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe("normalizePreviewPageNumber", () => {
|
||||
it("保留有效的整数页码", () => {
|
||||
expect(normalizePreviewPageNumber("12", 3, 65)).toBe(12);
|
||||
});
|
||||
|
||||
it("将越界页码限制在有效范围", () => {
|
||||
expect(normalizePreviewPageNumber("0", 3, 65)).toBe(1);
|
||||
expect(normalizePreviewPageNumber("99", 3, 65)).toBe(65);
|
||||
});
|
||||
|
||||
it("无效输入恢复当前页", () => {
|
||||
expect(normalizePreviewPageNumber("", 7, 65)).toBe(7);
|
||||
expect(normalizePreviewPageNumber("3.5", 7, 65)).toBe(7);
|
||||
expect(normalizePreviewPageNumber("abc", 7, 65)).toBe(7);
|
||||
});
|
||||
|
||||
it("没有可用页面时返回 0", () => {
|
||||
expect(normalizePreviewPageNumber("1", 0, 0)).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe("getPreviewPageScrollTop", () => {
|
||||
it("按目标页相对滚动容器的位置计算滚动量", () => {
|
||||
expect(getPreviewPageScrollTop(200, 900, 120)).toBe(980);
|
||||
});
|
||||
|
||||
it("避免返回负数或无效滚动量", () => {
|
||||
expect(getPreviewPageScrollTop(20, 10, 100)).toBe(0);
|
||||
expect(getPreviewPageScrollTop(Number.NaN, 10, 0)).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user