@embedpdf-editor/vue3-chapter-viewer 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -60,6 +60,11 @@ declare interface BookmarkMarkerUiConfig_2 {
60
60
  iconSize?: number;
61
61
  }
62
62
 
63
+ export declare function buildChapterViewerCatalog(nodes: ChapterTreeInput[]): {
64
+ tree: ChapterTreeNode_2[];
65
+ manifest: ChapterManifest;
66
+ };
67
+
63
68
  export declare function buildParagraphBookmarkAnchor(chapterId: string, localPageIndex: number, rectsPdfCoord: Rect[], virtualPage?: {
64
69
  globalPageIndex: number;
65
70
  globalPageNumber: number;
@@ -134,6 +139,8 @@ export declare interface ChapterDescriptor {
134
139
  ownedGlobalPages?: number[];
135
140
  }
136
141
 
142
+ export declare function chapterDescriptorFromTreeNode(node: ChapterTreeInput): ChapterDescriptor;
143
+
137
144
  /**
138
145
  * 章节级加载状态。区别于 `@embedpdf/core` 的 DocumentState:
139
146
  * - `idle` = manifest 已注册但尚未触发 open
@@ -280,7 +287,9 @@ export declare type ChapterSource = {
280
287
  url: string;
281
288
  } | {
282
289
  buffer: ArrayBuffer;
283
- } | {
290
+ }
291
+ /** 按章预处理:拉取、解密、转换后返回 url 或 buffer */
292
+ | {
284
293
  load: () => Promise<ChapterPdfPayload>;
285
294
  };
286
295
 
@@ -294,8 +303,31 @@ declare interface ChapterStatusEvent {
294
303
  };
295
304
  }
296
305
 
306
+ /**
307
+ * 业务目录树输入:父节点页范围可覆盖子节点;flatten 后每条对应一个可加载的 PDF 章节。
308
+ * 父节点若仅作分组、无独立 PDF,请勿放入 manifest(不要 flatten 该节点)。
309
+ */
310
+ export declare type ChapterTreeInput = {
311
+ chapterId: string;
312
+ title: string;
313
+ startPage: number;
314
+ endPage: number;
315
+ source?: ChapterSource;
316
+ encrypted?: boolean;
317
+ children?: ChapterTreeInput[];
318
+ };
319
+
297
320
  export { ChapterTreeNode }
298
321
 
322
+ /** 侧栏目录树节点(仅 UI;渲染以 flatten 后的 manifest 为准) */
323
+ declare type ChapterTreeNode_2 = {
324
+ id: string;
325
+ title: string;
326
+ startPage: number;
327
+ endPage: number;
328
+ children?: ChapterTreeNode_2[];
329
+ };
330
+
299
331
  export { ChapterTreePanel }
300
332
 
301
333
  export { ChapterViewerCatalog }
@@ -354,6 +386,13 @@ export declare interface ChapterViewerOptions {
354
386
  /** 书签持久化与删除回调 */
355
387
  bookmarks: ParagraphBookmarkCallbacks;
356
388
  chapterPdfLoader?: IChapterPdfLoader;
389
+ /**
390
+ * 同一全局页被多个章节条目覆盖时,用哪一个章节的 PDF 渲染(非 owner 的章节在该页不绘制真实 PDF)。
391
+ * - `{ kind: 'first-wins' }`:manifest 中先出现的章节(默认)
392
+ * - `{ kind: 'last-wins' }`:后出现的章节(目录 flatten 后常用于「以当前页最后一节为准」)
393
+ * 亦可用 `overlapStrategyForSamePageOwner('first' | 'last')`(chapter-core 包)
394
+ */
395
+ overlapStrategy?: OverlapOwnerStrategy;
357
396
  /** 功能开关与样式;省略则全开 */
358
397
  features?: ChapterViewerConfig;
359
398
  }
@@ -445,6 +484,8 @@ export declare const DEFAULT_CHAPTER_VIEWER_CONFIG: ChapterViewerConfig;
445
484
  /** 默认全开的功能配置(内部规范化结果) */
446
485
  export declare const DEFAULT_CHAPTER_VIEWER_FEATURES: ChapterViewerFeaturesConfig;
447
486
 
487
+ export declare const defaultOverlapStrategy: OverlapOwnerStrategy;
488
+
448
489
  export declare function downloadChapterAnnotationsArchive(archive: ChapterAnnotationsArchive, filename?: string): void;
449
490
 
450
491
  export declare function downloadChapterAnnotationsSnapshot(snapshot: ChapterAnnotationsSnapshot, filename?: string): void;
@@ -476,6 +517,9 @@ export declare type ExportChapterAnnotationsOptions = ChapterAnnotationsContentF
476
517
  ensureChapterLoaded?: boolean;
477
518
  };
478
519
 
520
+ /** 深度优先展开目录树为 manifest.chapters(含父、子各一条,与 demo flatten 一致) */
521
+ export declare function flattenChapterTree(nodes: ChapterTreeInput[]): ChapterDescriptor[];
522
+
479
523
  declare interface HoverBookmarkUiConfig {
480
524
  /** 悬停行末「添加书签」自定义图标;无背景 */
481
525
  renderAddIcon?: () => unknown;
@@ -488,8 +532,14 @@ declare interface HoverBookmarkUiConfig_2 {
488
532
  }
489
533
 
490
534
  /**
491
- * 全局章节 PDF 加载器:当 `ChapterDescriptor.source` 未提供 url/buffer/load 时使用。
492
- * 适合统一走业务 API、鉴权下载等场景。
535
+ * 全局章节 PDF 加载器:在打开章节前由引擎调用,用于预处理/拉取 PDF。
536
+ *
537
+ * 优先级(`ChapterManagerPlugin.resolvePdfPayload`):
538
+ * 1. `chapter.source.url` / `source.buffer` — 直接使用
539
+ * 2. `chapter.source.load()` — 按章异步,返回 `{ url }` 或 `{ buffer }`
540
+ * 3. `chapterPdfLoader.loadPdf(chapter)` — 全局统一逻辑(鉴权、解密、转 blob URL 等)
541
+ *
542
+ * 适合:所有章节走同一套 API、在内存中解密后再以 buffer 打开、动态签名 URL 等。
493
543
  */
494
544
  export declare interface IChapterPdfLoader {
495
545
  loadPdf(chapter: ChapterDescriptor): Promise<ChapterPdfPayload>;
@@ -660,12 +710,17 @@ declare interface OperationSpec {
660
710
  }
661
711
 
662
712
  /**
663
- * 决定相邻章节在重叠页上谁拥有该页(owner)。
664
- * - first-wins / last-wins:按 manifest 顺序的先到/后到
665
- * - explicit:依赖 `ChapterDescriptor.ownedGlobalPages`
666
- * - custom:开发者完全接管
713
+ * 决定同一全局页被多个章节 manifest 条目覆盖时,用哪一个章节的 PDF 渲染(owner)。
714
+ * owner 章节在该页仅占位/不绘制真实 PDF,避免重复。
715
+ *
716
+ * - **first-wins**:manifest 中**先**出现的章节(默认)
717
+ * - **last-wins**:**后**出现的章节(目录 flatten 后,重叠页常以「当前页最后一节」为准)
718
+ * - **explicit**:`ChapterDescriptor.ownedGlobalPages` 声明归属
719
+ * - **custom**:`resolve(globalPage, candidates)` 完全自定义
720
+ *
721
+ * 简写:`overlapStrategyForSamePageOwner('first' | 'last')`(chapter-core)
667
722
  */
668
- declare type OverlapOwnerStrategy = {
723
+ export declare type OverlapOwnerStrategy = {
669
724
  kind: 'first-wins';
670
725
  } | {
671
726
  kind: 'last-wins';
@@ -676,6 +731,8 @@ declare type OverlapOwnerStrategy = {
676
731
  resolve: (globalPage: number, candidates: ChapterDescriptor[]) => string;
677
732
  };
678
733
 
734
+ export declare function overlapStrategyForSamePageOwner(owner: SamePageOverlapOwner): OverlapOwnerStrategy;
735
+
679
736
  export declare interface ParagraphBookmark {
680
737
  id: string;
681
738
  label: string;
@@ -744,6 +801,9 @@ declare interface PdfChapterEditorToolbarConfig extends CreateEditorUiSchemaOpti
744
801
 
745
802
  export { PdfChapterViewport }
746
803
 
804
+ /** 同一全局页多章节重叠时,选用 manifest 中先/后出现的章节 PDF */
805
+ export declare type SamePageOverlapOwner = 'first' | 'last';
806
+
747
807
  /** 划线类型 */
748
808
  declare type SelectionMarkupKind = 'highlight' | 'underline' | 'squiggly' | 'strikeout';
749
809
 
@@ -773,6 +833,8 @@ export declare interface SerializableAnnotationTransferItem {
773
833
  };
774
834
  }
775
835
 
836
+ export declare function toChapterTreeNodes(nodes: ChapterTreeInput[]): ChapterTreeNode_2[];
837
+
776
838
  export { useCapability }
777
839
 
778
840
  export { usePdfiumEngine }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,+BAA+B,EAC/B,6BAA6B,EAC7B,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,EACxB,QAAQ,EACR,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,+BAA+B,EAC/B,+BAA+B,EAC/B,kCAAkC,EAClC,gCAAgC,EAChC,mCAAmC,EACnC,iCAAiC,EACjC,kCAAkC,EAClC,gBAAgB,EAChB,mCAAmC,EACnC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,GACrC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,2BAA2B,EAC3B,qCAAqC,EACrC,6BAA6B,EAC7B,2BAA2B,EAC3B,+BAA+B,EAC/B,aAAa,EACb,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,+BAA+B,EAC/B,6BAA6B,EAC7B,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,EACxB,QAAQ,EACR,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,+BAA+B,EAC/B,+BAA+B,EAC/B,kCAAkC,EAClC,gCAAgC,EAChC,mCAAmC,EACnC,iCAAiC,EACjC,kCAAkC,EAClC,gBAAgB,EAChB,mCAAmC,EACnC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,GACrC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,2BAA2B,EAC3B,qCAAqC,EACrC,6BAA6B,EAC7B,2BAA2B,EAC3B,+BAA+B,EAC/B,aAAa,EACb,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC"}