@hyebook/vue3-adapter 2.3.4 → 2.3.6
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/core/src/player/ebook-player.d.ts +19 -4
- package/dist/core/src/player/ebook-player.d.ts.map +1 -1
- package/dist/core/src/player/ebook-player.js +257 -29
- package/dist/core/src/player/engine.d.ts +1 -1
- package/dist/core/src/player/engine.d.ts.map +1 -1
- package/dist/core/src/player/engine.js +20 -2
- package/dist/core/src/types/player.d.ts +8 -1
- package/dist/core/src/types/player.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EbookDoc } from "../types/ebook";
|
|
2
|
-
import type { EBookPlayerHandle, EBookPlayerOptions, ReaderAnnotationCreateEvent, ReaderAnnotationDeleteEvent, ReaderAnnotations, ReaderAnnotationsChangeEvent, ReaderAnnotationUpdateEvent, ReaderBookmark, ReaderHighlight, ReaderNote } from "../types/player";
|
|
2
|
+
import type { EBookPlayerHandle, EBookPlayerOptions, EBookPlayerSetBookmarkOptions, ReaderAnnotationCreateEvent, ReaderAnnotationDeleteEvent, ReaderAnnotations, ReaderAnnotationsChangeEvent, ReaderAnnotationUpdateEvent, ReaderBookmark, ReaderHighlight, ReaderNote } from "../types/player";
|
|
3
3
|
export declare class EBookPlayer implements EBookPlayerHandle {
|
|
4
4
|
private container;
|
|
5
5
|
private options;
|
|
@@ -17,6 +17,7 @@ export declare class EBookPlayer implements EBookPlayerHandle {
|
|
|
17
17
|
private loaded;
|
|
18
18
|
private destroyed;
|
|
19
19
|
private readonly handleSelectionChangeBound;
|
|
20
|
+
private readonly handleSelectionRepositionBound;
|
|
20
21
|
private readonly handleDocumentPointerDownBound;
|
|
21
22
|
private readonly preserveSelectionOnToolbarMouseDownBound;
|
|
22
23
|
private readonly handleHighlightClickBound;
|
|
@@ -37,8 +38,10 @@ export declare class EBookPlayer implements EBookPlayerHandle {
|
|
|
37
38
|
createNote(note: Omit<ReaderNote, "id" | "createdAt" | "updatedAt" | "bookId">, source?: "api" | "user"): Promise<ReaderNote>;
|
|
38
39
|
updateNote(noteId: string, patch: Partial<Omit<ReaderNote, "id" | "bookId" | "createdAt">>, source?: "api" | "user"): Promise<ReaderNote | null>;
|
|
39
40
|
deleteNote(noteId: string, source?: "api" | "user"): Promise<boolean>;
|
|
40
|
-
setBookmark(
|
|
41
|
+
setBookmark(options?: EBookPlayerSetBookmarkOptions, source?: "api" | "user"): Promise<ReaderBookmark | null>;
|
|
41
42
|
deleteBookmark(bookmarkId: string, source?: "api" | "user"): Promise<boolean>;
|
|
43
|
+
goToHighlight(highlightId: string): number | null;
|
|
44
|
+
goToNote(noteId: string): number | null;
|
|
42
45
|
goToBookmark(bookmarkId: string): number | null;
|
|
43
46
|
onAnnotationCreate(listener: (event: ReaderAnnotationCreateEvent) => void): () => void;
|
|
44
47
|
onAnnotationUpdate(listener: (event: ReaderAnnotationUpdateEvent) => void): () => void;
|
|
@@ -47,7 +50,6 @@ export declare class EBookPlayer implements EBookPlayerHandle {
|
|
|
47
50
|
private renderDocument;
|
|
48
51
|
private renderPage;
|
|
49
52
|
private renderTextBlock;
|
|
50
|
-
private renderNonTextBlock;
|
|
51
53
|
private getTextBlockContent;
|
|
52
54
|
private textBlockToHTML;
|
|
53
55
|
private paragraphTypeToTag;
|
|
@@ -56,17 +58,21 @@ export declare class EBookPlayer implements EBookPlayerHandle {
|
|
|
56
58
|
private inlineImageAlignStyleParts;
|
|
57
59
|
private renderImageBlock;
|
|
58
60
|
private renderVideoBlock;
|
|
61
|
+
private renderNonTextBlock;
|
|
59
62
|
private renderTableBlock;
|
|
60
63
|
private createAnnotationBuckets;
|
|
61
64
|
private toBlockKey;
|
|
62
65
|
private resolveAnnotationSegments;
|
|
63
66
|
private applyHighlightMarks;
|
|
64
67
|
private applyNoteMarks;
|
|
68
|
+
private resolveTableCell;
|
|
69
|
+
private isRangeInsideSingleTableCell;
|
|
65
70
|
private applyBookmarkMarker;
|
|
66
71
|
private wrapRangeWithMark;
|
|
67
72
|
private createRangeFromOffsets;
|
|
68
73
|
private normalizeOffsetRange;
|
|
69
74
|
private handleSelectionChange;
|
|
75
|
+
private updateSelectionToolbarPosition;
|
|
70
76
|
private resolveTextContainer;
|
|
71
77
|
private getSelectionOffsets;
|
|
72
78
|
private collectSelectionSegments;
|
|
@@ -84,7 +90,16 @@ export declare class EBookPlayer implements EBookPlayerHandle {
|
|
|
84
90
|
private resolveInputLimits;
|
|
85
91
|
private normalizeLimitValue;
|
|
86
92
|
private promptTextWithLimit;
|
|
87
|
-
private
|
|
93
|
+
private normalizeBookmarkContent;
|
|
94
|
+
private resolveCurrentBlockFromScroll;
|
|
95
|
+
private extractBlockDataset;
|
|
96
|
+
private scrollToBlock;
|
|
97
|
+
private getCurrentScrollTop;
|
|
98
|
+
private scrollToStoredPosition;
|
|
99
|
+
private resolveScrollHost;
|
|
100
|
+
private isWindowScrollHost;
|
|
101
|
+
private escapeSelectorValue;
|
|
102
|
+
private ensureBookmarkBlockExists;
|
|
88
103
|
private findBookmarkByBlock;
|
|
89
104
|
private setToolbarButtonContent;
|
|
90
105
|
private ensureLoaded;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ebook-player.d.ts","sourceRoot":"","sources":["../../../../../core/src/player/ebook-player.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EAST,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EAEjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ebook-player.d.ts","sourceRoot":"","sources":["../../../../../core/src/player/ebook-player.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ const NOTE_ICON_SVG = `<svg width="24" height="24" viewBox="0 0 24 24" fill="non
|
|
|
6
6
|
const BOOKMARK_ICON_SVG = `<svg width="30" height="40" viewBox="0 0 30 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 3C0 1.34315 1.34315 0 3 0H27C28.6569 0 30 1.34315 30 3V38.1989C30 38.9837 29.1374 39.4627 28.4713 39.0477L15 30.6562L1.52873 39.0477C0.862627 39.4627 0 38.9837 0 38.1989L0 3Z" fill="#4FCEBB"/></svg>`;
|
|
7
7
|
const EBOOK_PLAYER_CSS = `
|
|
8
8
|
.hyepl-root{position:relative;max-width:100%;margin:0 auto;color:#0f172a;font-size:14px;line-height:1.7}
|
|
9
|
+
.hyepl-root ::selection{background:#7DE2D3}
|
|
10
|
+
.hyepl-root ::-moz-selection{background:#7DE2D3}
|
|
9
11
|
.hyepl-content{position:relative}
|
|
10
12
|
.hyepl-page{margin:0 0 16px}
|
|
11
13
|
.hyepl-page:last-child{margin-bottom:0}
|
|
@@ -27,7 +29,7 @@ const EBOOK_PLAYER_CSS = `
|
|
|
27
29
|
.hyepl-inline-video{border-radius:8px;background:#000}
|
|
28
30
|
.hyepl-block-image img,.hyepl-block-video video{display:block;max-width:100%;width:100%;height:auto;border-radius:8px}
|
|
29
31
|
.hyepl-block-image figcaption,.hyepl-block-video figcaption{margin-top:6px;font-size:12px;color:#64748b}
|
|
30
|
-
.hyepl-block-table{overflow:auto}
|
|
32
|
+
.hyepl-block-table{position:relative;overflow:auto;padding-right:18px}
|
|
31
33
|
.hyepl-block-table table{width:100%;border-collapse:collapse;table-layout:fixed}
|
|
32
34
|
.hyepl-block-table th,.hyepl-block-table td{border:1px solid #cbd5e1;padding:6px 8px;vertical-align:top;min-width:68px}
|
|
33
35
|
.hyepl-block-muted{color:#64748b}
|
|
@@ -56,6 +58,9 @@ export class EBookPlayer {
|
|
|
56
58
|
this.handleSelectionChangeBound = () => {
|
|
57
59
|
this.handleSelectionChange();
|
|
58
60
|
};
|
|
61
|
+
this.handleSelectionRepositionBound = () => {
|
|
62
|
+
this.updateSelectionToolbarPosition();
|
|
63
|
+
};
|
|
59
64
|
this.handleDocumentPointerDownBound = (event) => {
|
|
60
65
|
this.handleDocumentPointerDown(event);
|
|
61
66
|
};
|
|
@@ -105,6 +110,8 @@ export class EBookPlayer {
|
|
|
105
110
|
this.noteBtn.addEventListener("click", this.handleNoteClickBound);
|
|
106
111
|
document.addEventListener("selectionchange", this.handleSelectionChangeBound);
|
|
107
112
|
document.addEventListener("pointerdown", this.handleDocumentPointerDownBound);
|
|
113
|
+
window.addEventListener("scroll", this.handleSelectionRepositionBound, true);
|
|
114
|
+
window.addEventListener("resize", this.handleSelectionRepositionBound);
|
|
108
115
|
}
|
|
109
116
|
async load(doc) {
|
|
110
117
|
if (doc) {
|
|
@@ -129,6 +136,8 @@ export class EBookPlayer {
|
|
|
129
136
|
this.hideSelectionToolbar();
|
|
130
137
|
document.removeEventListener("selectionchange", this.handleSelectionChangeBound);
|
|
131
138
|
document.removeEventListener("pointerdown", this.handleDocumentPointerDownBound);
|
|
139
|
+
window.removeEventListener("scroll", this.handleSelectionRepositionBound, true);
|
|
140
|
+
window.removeEventListener("resize", this.handleSelectionRepositionBound);
|
|
132
141
|
this.highlightBtn.removeEventListener("mousedown", this.preserveSelectionOnToolbarMouseDownBound);
|
|
133
142
|
this.noteBtn.removeEventListener("mousedown", this.preserveSelectionOnToolbarMouseDownBound);
|
|
134
143
|
this.highlightBtn.removeEventListener("click", this.handleHighlightClickBound);
|
|
@@ -200,15 +209,30 @@ export class EBookPlayer {
|
|
|
200
209
|
this.renderDocument();
|
|
201
210
|
return deleted;
|
|
202
211
|
}
|
|
203
|
-
async setBookmark(
|
|
212
|
+
async setBookmark(options = {}, source = "api") {
|
|
204
213
|
this.ensureLoaded();
|
|
205
|
-
this.
|
|
214
|
+
const target = this.resolveCurrentBlockFromScroll();
|
|
215
|
+
if (!target) {
|
|
216
|
+
throw new Error("Cannot resolve current block for bookmark.");
|
|
217
|
+
}
|
|
218
|
+
this.ensureBookmarkBlockExists(target.pageId, target.blockId);
|
|
219
|
+
const { pageId, blockId } = target;
|
|
206
220
|
const current = this.findBookmarkByBlock(pageId, blockId);
|
|
207
|
-
|
|
221
|
+
let content = null;
|
|
222
|
+
if (typeof options.content === "string" && options.content.trim()) {
|
|
223
|
+
content = this.normalizeBookmarkContent(options.content);
|
|
224
|
+
}
|
|
225
|
+
else if (options.prompt === false) {
|
|
226
|
+
throw new Error("Bookmark content is required when prompt is disabled.");
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
content = this.promptTextWithLimit("请输入书签内容", current?.content || "", this.inputLimits.bookmarkMaxLength);
|
|
230
|
+
}
|
|
208
231
|
if (content === null) {
|
|
209
232
|
return null;
|
|
210
233
|
}
|
|
211
|
-
const
|
|
234
|
+
const scrollTop = this.getCurrentScrollTop();
|
|
235
|
+
const bookmark = await this.engine.setBookmark(pageId, blockId, content, source, scrollTop);
|
|
212
236
|
this.renderDocument();
|
|
213
237
|
return bookmark;
|
|
214
238
|
}
|
|
@@ -218,9 +242,52 @@ export class EBookPlayer {
|
|
|
218
242
|
this.renderDocument();
|
|
219
243
|
return deleted;
|
|
220
244
|
}
|
|
245
|
+
goToHighlight(highlightId) {
|
|
246
|
+
this.ensureLoaded();
|
|
247
|
+
const target = this.engine
|
|
248
|
+
.getHighlights()
|
|
249
|
+
.find((item) => item.id === highlightId);
|
|
250
|
+
if (!target) {
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
const pageIndex = this.engine.goToHighlight(highlightId);
|
|
254
|
+
if (pageIndex === null) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
this.scrollToBlock(target.pageId, target.blockId);
|
|
258
|
+
return pageIndex;
|
|
259
|
+
}
|
|
260
|
+
goToNote(noteId) {
|
|
261
|
+
this.ensureLoaded();
|
|
262
|
+
const target = this.engine.getNotes().find((item) => item.id === noteId);
|
|
263
|
+
if (!target) {
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
const pageIndex = this.engine.goToNote(noteId);
|
|
267
|
+
if (pageIndex === null) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
this.scrollToBlock(target.pageId, target.blockId);
|
|
271
|
+
return pageIndex;
|
|
272
|
+
}
|
|
221
273
|
goToBookmark(bookmarkId) {
|
|
222
274
|
this.ensureLoaded();
|
|
223
|
-
|
|
275
|
+
const target = this.engine
|
|
276
|
+
.getBookmarks()
|
|
277
|
+
.find((item) => item.id === bookmarkId);
|
|
278
|
+
if (!target) {
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
const pageIndex = this.engine.goToBookmark(bookmarkId);
|
|
282
|
+
if (pageIndex === null) {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
if (Number.isFinite(target.scrollTop)) {
|
|
286
|
+
this.scrollToStoredPosition(target.scrollTop);
|
|
287
|
+
return pageIndex;
|
|
288
|
+
}
|
|
289
|
+
this.scrollToBlock(target.pageId, target.blockId);
|
|
290
|
+
return pageIndex;
|
|
224
291
|
}
|
|
225
292
|
onAnnotationCreate(listener) {
|
|
226
293
|
return this.engine.onAnnotationCreate(listener);
|
|
@@ -257,7 +324,7 @@ export class EBookPlayer {
|
|
|
257
324
|
pageSection.append(this.renderTextBlock(page.id, block, buckets));
|
|
258
325
|
return;
|
|
259
326
|
}
|
|
260
|
-
pageSection.append(this.renderNonTextBlock(block));
|
|
327
|
+
pageSection.append(this.renderNonTextBlock(page.id, block, buckets));
|
|
261
328
|
});
|
|
262
329
|
return pageSection;
|
|
263
330
|
}
|
|
@@ -278,21 +345,6 @@ export class EBookPlayer {
|
|
|
278
345
|
}
|
|
279
346
|
return blockTextNode;
|
|
280
347
|
}
|
|
281
|
-
renderNonTextBlock(block) {
|
|
282
|
-
if (block.type === "image") {
|
|
283
|
-
return this.renderImageBlock(block);
|
|
284
|
-
}
|
|
285
|
-
if (block.type === "video") {
|
|
286
|
-
return this.renderVideoBlock(block);
|
|
287
|
-
}
|
|
288
|
-
if (block.type === "table") {
|
|
289
|
-
return this.renderTableBlock(block);
|
|
290
|
-
}
|
|
291
|
-
const node = document.createElement("div");
|
|
292
|
-
node.className = "hyepl-block hyepl-block-muted";
|
|
293
|
-
node.textContent = "[内容块]";
|
|
294
|
-
return node;
|
|
295
|
-
}
|
|
296
348
|
getTextBlockContent(block) {
|
|
297
349
|
return block.content.paragraphs
|
|
298
350
|
.map((paragraph) => {
|
|
@@ -455,9 +507,26 @@ export class EBookPlayer {
|
|
|
455
507
|
figure.append(video);
|
|
456
508
|
return figure;
|
|
457
509
|
}
|
|
458
|
-
|
|
510
|
+
renderNonTextBlock(pageId, block, buckets) {
|
|
511
|
+
if (block.type === "image") {
|
|
512
|
+
return this.renderImageBlock(block);
|
|
513
|
+
}
|
|
514
|
+
if (block.type === "video") {
|
|
515
|
+
return this.renderVideoBlock(block);
|
|
516
|
+
}
|
|
517
|
+
if (block.type === "table") {
|
|
518
|
+
return this.renderTableBlock(pageId, block, buckets);
|
|
519
|
+
}
|
|
520
|
+
const node = document.createElement("div");
|
|
521
|
+
node.className = "hyepl-block hyepl-block-muted";
|
|
522
|
+
node.textContent = "[内容块]";
|
|
523
|
+
return node;
|
|
524
|
+
}
|
|
525
|
+
renderTableBlock(pageId, block, buckets) {
|
|
459
526
|
const wrapper = document.createElement("div");
|
|
460
527
|
wrapper.className = "hyepl-block hyepl-block-table";
|
|
528
|
+
wrapper.dataset.pageId = pageId;
|
|
529
|
+
wrapper.dataset.blockId = block.id;
|
|
461
530
|
const table = document.createElement("table");
|
|
462
531
|
if (block.style) {
|
|
463
532
|
table.setAttribute("style", block.style);
|
|
@@ -514,6 +583,15 @@ export class EBookPlayer {
|
|
|
514
583
|
}
|
|
515
584
|
table.append(tbody);
|
|
516
585
|
wrapper.append(table);
|
|
586
|
+
const blockKey = this.toBlockKey(pageId, block.id);
|
|
587
|
+
const highlights = buckets.highlightsByBlock.get(blockKey) || [];
|
|
588
|
+
const notes = buckets.notesByBlock.get(blockKey) || [];
|
|
589
|
+
const bookmark = buckets.bookmarksByBlock.get(blockKey) || null;
|
|
590
|
+
this.applyHighlightMarks(wrapper, highlights);
|
|
591
|
+
this.applyNoteMarks(wrapper, notes);
|
|
592
|
+
if (bookmark) {
|
|
593
|
+
this.applyBookmarkMarker(wrapper, bookmark);
|
|
594
|
+
}
|
|
517
595
|
return wrapper;
|
|
518
596
|
}
|
|
519
597
|
createAnnotationBuckets(annotations) {
|
|
@@ -597,6 +675,10 @@ export class EBookPlayer {
|
|
|
597
675
|
if (!range || range.collapsed) {
|
|
598
676
|
return;
|
|
599
677
|
}
|
|
678
|
+
if (container.classList.contains("hyepl-block-table") &&
|
|
679
|
+
!this.isRangeInsideSingleTableCell(range)) {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
600
682
|
const mark = document.createElement("mark");
|
|
601
683
|
mark.className = "hyepl-highlight";
|
|
602
684
|
if (item.color) {
|
|
@@ -617,12 +699,33 @@ export class EBookPlayer {
|
|
|
617
699
|
if (!range || range.collapsed) {
|
|
618
700
|
return;
|
|
619
701
|
}
|
|
702
|
+
if (container.classList.contains("hyepl-block-table") &&
|
|
703
|
+
!this.isRangeInsideSingleTableCell(range)) {
|
|
704
|
+
return;
|
|
705
|
+
}
|
|
620
706
|
const mark = document.createElement("mark");
|
|
621
707
|
mark.className = "hyepl-note";
|
|
622
708
|
mark.dataset.noteId = item.id;
|
|
623
709
|
this.wrapRangeWithMark(range, mark);
|
|
624
710
|
});
|
|
625
711
|
}
|
|
712
|
+
resolveTableCell(node) {
|
|
713
|
+
if (!node) {
|
|
714
|
+
return null;
|
|
715
|
+
}
|
|
716
|
+
const baseElement = node.nodeType === Node.ELEMENT_NODE
|
|
717
|
+
? node
|
|
718
|
+
: node.parentElement;
|
|
719
|
+
if (!baseElement) {
|
|
720
|
+
return null;
|
|
721
|
+
}
|
|
722
|
+
return baseElement.closest("td,th");
|
|
723
|
+
}
|
|
724
|
+
isRangeInsideSingleTableCell(range) {
|
|
725
|
+
const startCell = this.resolveTableCell(range.startContainer);
|
|
726
|
+
const endCell = this.resolveTableCell(range.endContainer);
|
|
727
|
+
return Boolean(startCell && endCell && startCell === endCell);
|
|
728
|
+
}
|
|
626
729
|
applyBookmarkMarker(container, bookmark) {
|
|
627
730
|
const marker = document.createElement("span");
|
|
628
731
|
marker.className = "hyepl-bookmark-flag";
|
|
@@ -731,9 +834,28 @@ export class EBookPlayer {
|
|
|
731
834
|
text: selection.toString().trim(),
|
|
732
835
|
segments,
|
|
733
836
|
};
|
|
837
|
+
this.updateSelectionToolbarPosition(range);
|
|
838
|
+
if (this.selectionDraft) {
|
|
839
|
+
this.selectionToolbar.classList.add("show");
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
updateSelectionToolbarPosition(range) {
|
|
843
|
+
if (!this.selectionDraft) {
|
|
844
|
+
return;
|
|
845
|
+
}
|
|
846
|
+
const selection = window.getSelection();
|
|
847
|
+
if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {
|
|
848
|
+
this.hideSelectionToolbar();
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
const activeRange = range ?? selection.getRangeAt(0);
|
|
852
|
+
const rect = activeRange.getBoundingClientRect();
|
|
853
|
+
if (!rect.width && !rect.height) {
|
|
854
|
+
this.hideSelectionToolbar();
|
|
855
|
+
return;
|
|
856
|
+
}
|
|
734
857
|
this.selectionToolbar.style.left = `${Math.round(rect.left + rect.width / 2)}px`;
|
|
735
858
|
this.selectionToolbar.style.top = `${Math.round(rect.top - 20)}px`;
|
|
736
|
-
this.selectionToolbar.classList.add("show");
|
|
737
859
|
}
|
|
738
860
|
resolveTextContainer(node) {
|
|
739
861
|
if (!node) {
|
|
@@ -745,7 +867,7 @@ export class EBookPlayer {
|
|
|
745
867
|
if (!baseElement) {
|
|
746
868
|
return null;
|
|
747
869
|
}
|
|
748
|
-
const textContainer = baseElement.closest(".hyepl-block-text");
|
|
870
|
+
const textContainer = baseElement.closest(".hyepl-block-text, .hyepl-block-table");
|
|
749
871
|
if (!textContainer || !this.content.contains(textContainer)) {
|
|
750
872
|
return null;
|
|
751
873
|
}
|
|
@@ -772,7 +894,13 @@ export class EBookPlayer {
|
|
|
772
894
|
if (!startContainer || !endContainer) {
|
|
773
895
|
return null;
|
|
774
896
|
}
|
|
775
|
-
|
|
897
|
+
if (startContainer.classList.contains("hyepl-block-table") ||
|
|
898
|
+
endContainer.classList.contains("hyepl-block-table")) {
|
|
899
|
+
if (!this.isRangeInsideSingleTableCell(range)) {
|
|
900
|
+
return null;
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
const textContainers = Array.from(this.content.querySelectorAll(".hyepl-block-text, .hyepl-block-table"));
|
|
776
904
|
const startIndex = textContainers.indexOf(startContainer);
|
|
777
905
|
const endIndex = textContainers.indexOf(endContainer);
|
|
778
906
|
if (startIndex < 0 || endIndex < 0) {
|
|
@@ -1042,7 +1170,107 @@ export class EBookPlayer {
|
|
|
1042
1170
|
return trimmed;
|
|
1043
1171
|
}
|
|
1044
1172
|
}
|
|
1045
|
-
|
|
1173
|
+
normalizeBookmarkContent(raw) {
|
|
1174
|
+
const trimmed = raw.trim();
|
|
1175
|
+
if (!trimmed) {
|
|
1176
|
+
throw new Error("Bookmark content cannot be empty.");
|
|
1177
|
+
}
|
|
1178
|
+
if (trimmed.length > this.inputLimits.bookmarkMaxLength) {
|
|
1179
|
+
throw new Error(`Bookmark content exceeds max length ${this.inputLimits.bookmarkMaxLength}.`);
|
|
1180
|
+
}
|
|
1181
|
+
return trimmed;
|
|
1182
|
+
}
|
|
1183
|
+
resolveCurrentBlockFromScroll() {
|
|
1184
|
+
const rootRect = this.root.getBoundingClientRect();
|
|
1185
|
+
const x = Math.round(Math.min(window.innerWidth - 1, Math.max(0, rootRect.left + rootRect.width / 2)));
|
|
1186
|
+
const y = Math.round(Math.min(window.innerHeight - 1, Math.max(0, rootRect.top + 24)));
|
|
1187
|
+
const hit = document.elementFromPoint(x, y);
|
|
1188
|
+
const hitBlock = hit instanceof Element
|
|
1189
|
+
? hit.closest?.(".hyepl-block-text[data-page-id][data-block-id], .hyepl-block-table[data-page-id][data-block-id]")
|
|
1190
|
+
: null;
|
|
1191
|
+
const fromHit = this.extractBlockDataset(hitBlock);
|
|
1192
|
+
if (fromHit) {
|
|
1193
|
+
return fromHit;
|
|
1194
|
+
}
|
|
1195
|
+
const blocks = Array.from(this.content.querySelectorAll(".hyepl-block-text[data-page-id][data-block-id], .hyepl-block-table[data-page-id][data-block-id]"));
|
|
1196
|
+
if (!blocks.length) {
|
|
1197
|
+
return null;
|
|
1198
|
+
}
|
|
1199
|
+
let best = null;
|
|
1200
|
+
for (const el of blocks) {
|
|
1201
|
+
const rect = el.getBoundingClientRect();
|
|
1202
|
+
if (rect.bottom <= 0 || rect.top >= window.innerHeight) {
|
|
1203
|
+
continue;
|
|
1204
|
+
}
|
|
1205
|
+
const score = Math.abs(rect.top);
|
|
1206
|
+
if (!best || score < best.score) {
|
|
1207
|
+
best = { el, score };
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
return this.extractBlockDataset(best?.el ?? blocks[0] ?? null);
|
|
1211
|
+
}
|
|
1212
|
+
extractBlockDataset(el) {
|
|
1213
|
+
const pageId = el?.dataset?.pageId;
|
|
1214
|
+
const blockId = el?.dataset?.blockId;
|
|
1215
|
+
if (typeof pageId !== "string" || !pageId) {
|
|
1216
|
+
return null;
|
|
1217
|
+
}
|
|
1218
|
+
if (typeof blockId !== "string" || !blockId) {
|
|
1219
|
+
return null;
|
|
1220
|
+
}
|
|
1221
|
+
return { pageId, blockId };
|
|
1222
|
+
}
|
|
1223
|
+
scrollToBlock(pageId, blockId) {
|
|
1224
|
+
const page = this.escapeSelectorValue(pageId);
|
|
1225
|
+
const block = this.escapeSelectorValue(blockId);
|
|
1226
|
+
const node = this.content.querySelector(`[data-page-id="${page}"][data-block-id="${block}"]`);
|
|
1227
|
+
if (!node) {
|
|
1228
|
+
return false;
|
|
1229
|
+
}
|
|
1230
|
+
node.scrollIntoView({ block: "start" });
|
|
1231
|
+
return true;
|
|
1232
|
+
}
|
|
1233
|
+
getCurrentScrollTop() {
|
|
1234
|
+
const scrollHost = this.resolveScrollHost();
|
|
1235
|
+
if (this.isWindowScrollHost(scrollHost)) {
|
|
1236
|
+
return Math.max(0, Math.floor(window.scrollY || 0));
|
|
1237
|
+
}
|
|
1238
|
+
return Math.max(0, Math.floor(scrollHost.scrollTop || 0));
|
|
1239
|
+
}
|
|
1240
|
+
scrollToStoredPosition(scrollTop) {
|
|
1241
|
+
const safeTop = Math.max(0, Math.floor(scrollTop || 0));
|
|
1242
|
+
const scrollHost = this.resolveScrollHost();
|
|
1243
|
+
if (this.isWindowScrollHost(scrollHost)) {
|
|
1244
|
+
window.scrollTo({ top: safeTop, behavior: "auto" });
|
|
1245
|
+
return;
|
|
1246
|
+
}
|
|
1247
|
+
scrollHost.scrollTo({ top: safeTop, behavior: "auto" });
|
|
1248
|
+
}
|
|
1249
|
+
resolveScrollHost() {
|
|
1250
|
+
let current = this.container;
|
|
1251
|
+
while (current && current !== document.body) {
|
|
1252
|
+
const style = window.getComputedStyle(current);
|
|
1253
|
+
const overflowY = style.overflowY;
|
|
1254
|
+
const scrollableByStyle = overflowY === "auto" ||
|
|
1255
|
+
overflowY === "scroll" ||
|
|
1256
|
+
overflowY === "overlay";
|
|
1257
|
+
if (scrollableByStyle && current.scrollHeight > current.clientHeight) {
|
|
1258
|
+
return current;
|
|
1259
|
+
}
|
|
1260
|
+
current = current.parentElement;
|
|
1261
|
+
}
|
|
1262
|
+
return window;
|
|
1263
|
+
}
|
|
1264
|
+
isWindowScrollHost(host) {
|
|
1265
|
+
return host === window;
|
|
1266
|
+
}
|
|
1267
|
+
escapeSelectorValue(value) {
|
|
1268
|
+
if (typeof CSS !== "undefined" && typeof CSS.escape === "function") {
|
|
1269
|
+
return CSS.escape(value);
|
|
1270
|
+
}
|
|
1271
|
+
return value.replace(/["\\]/g, "\\$&");
|
|
1272
|
+
}
|
|
1273
|
+
ensureBookmarkBlockExists(pageId, blockId) {
|
|
1046
1274
|
const doc = this.engine.getDocument();
|
|
1047
1275
|
const page = doc.pages.find((item) => item.id === pageId);
|
|
1048
1276
|
if (!page) {
|
|
@@ -1052,8 +1280,8 @@ export class EBookPlayer {
|
|
|
1052
1280
|
if (!block) {
|
|
1053
1281
|
throw new Error(`Block not found: ${blockId}`);
|
|
1054
1282
|
}
|
|
1055
|
-
if (block.type !== "text") {
|
|
1056
|
-
throw new Error("Bookmark is only supported on text blocks.");
|
|
1283
|
+
if (block.type !== "text" && block.type !== "table") {
|
|
1284
|
+
throw new Error("Bookmark is only supported on text/table blocks.");
|
|
1057
1285
|
}
|
|
1058
1286
|
}
|
|
1059
1287
|
findBookmarkByBlock(pageId, blockId) {
|
|
@@ -48,7 +48,7 @@ export declare class PlayerEngine {
|
|
|
48
48
|
createNote(note: Omit<ReaderNote, "id" | "createdAt" | "updatedAt" | "bookId">, source?: "api" | "user"): Promise<ReaderNote>;
|
|
49
49
|
updateNote(noteId: string, patch: Partial<Omit<ReaderNote, "id" | "bookId" | "createdAt">>, source?: "api" | "user"): Promise<ReaderNote | null>;
|
|
50
50
|
deleteNote(noteId: string, source?: "api" | "user"): Promise<boolean>;
|
|
51
|
-
setBookmark(pageId: string, blockId: string, content: string, source?: "api" | "user"): Promise<ReaderBookmark>;
|
|
51
|
+
setBookmark(pageId: string, blockId: string, content: string, source?: "api" | "user", scrollTop?: number): Promise<ReaderBookmark>;
|
|
52
52
|
deleteBookmark(bookmarkId: string, source?: "api" | "user"): Promise<boolean>;
|
|
53
53
|
onAnnotationCreate(listener: AnnotationCreateListener): () => void;
|
|
54
54
|
onAnnotationUpdate(listener: AnnotationUpdateListener): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../../core/src/player/engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../../core/src/player/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -264,19 +264,26 @@ export class PlayerEngine {
|
|
|
264
264
|
this.emitAnnotationDelete("note", removedNote, source);
|
|
265
265
|
return true;
|
|
266
266
|
}
|
|
267
|
-
async setBookmark(pageId, blockId, content, source = "api") {
|
|
267
|
+
async setBookmark(pageId, blockId, content, source = "api", scrollTop) {
|
|
268
268
|
const doc = this.getDocument();
|
|
269
269
|
const now = Date.now();
|
|
270
270
|
const normalizedContent = content.trim();
|
|
271
|
+
const normalizedScrollTop = Number.isFinite(scrollTop)
|
|
272
|
+
? Math.max(0, Math.floor(scrollTop))
|
|
273
|
+
: undefined;
|
|
271
274
|
const index = this.state.bookmarks.findIndex((item) => item.pageId === pageId && item.blockId === blockId);
|
|
272
275
|
if (index >= 0) {
|
|
273
276
|
const current = this.state.bookmarks[index];
|
|
274
277
|
if (!current) {
|
|
275
278
|
throw new Error("Bookmark update failed.");
|
|
276
279
|
}
|
|
280
|
+
const nextScrollTop = normalizedScrollTop !== undefined
|
|
281
|
+
? normalizedScrollTop
|
|
282
|
+
: current.scrollTop;
|
|
277
283
|
const updatedBookmark = {
|
|
278
284
|
...current,
|
|
279
285
|
content: normalizedContent,
|
|
286
|
+
...(nextScrollTop !== undefined ? { scrollTop: nextScrollTop } : {}),
|
|
280
287
|
updatedAt: now,
|
|
281
288
|
};
|
|
282
289
|
this.state.bookmarks[index] = updatedBookmark;
|
|
@@ -290,6 +297,9 @@ export class PlayerEngine {
|
|
|
290
297
|
pageId,
|
|
291
298
|
blockId,
|
|
292
299
|
content: normalizedContent,
|
|
300
|
+
...(normalizedScrollTop !== undefined
|
|
301
|
+
? { scrollTop: normalizedScrollTop }
|
|
302
|
+
: {}),
|
|
293
303
|
createdAt: now,
|
|
294
304
|
updatedAt: now,
|
|
295
305
|
};
|
|
@@ -469,7 +479,9 @@ export class PlayerEngine {
|
|
|
469
479
|
bookId: item.bookId || bookId || "",
|
|
470
480
|
pageId: item.pageId || firstSegment?.pageId || "",
|
|
471
481
|
blockId: item.blockId || firstSegment?.blockId || "preview-flow-text",
|
|
472
|
-
...(resolvedRange
|
|
482
|
+
...(resolvedRange
|
|
483
|
+
? { range: this.normalizeRange(resolvedRange) }
|
|
484
|
+
: {}),
|
|
473
485
|
...(segments ? { segments } : {}),
|
|
474
486
|
content: item.content || "",
|
|
475
487
|
createdAt,
|
|
@@ -480,6 +492,9 @@ export class PlayerEngine {
|
|
|
480
492
|
const fallbackId = `bookmark-${Date.now()}-${index}`;
|
|
481
493
|
const createdAt = toTimestamp(item.createdAt, now);
|
|
482
494
|
const updatedAt = toTimestamp(item.updatedAt, createdAt);
|
|
495
|
+
const normalizedScrollTop = Number.isFinite(item.scrollTop)
|
|
496
|
+
? Math.max(0, Math.floor(item.scrollTop))
|
|
497
|
+
: undefined;
|
|
483
498
|
return {
|
|
484
499
|
...clone(item),
|
|
485
500
|
id: item.id || fallbackId,
|
|
@@ -487,6 +502,9 @@ export class PlayerEngine {
|
|
|
487
502
|
pageId: item.pageId || "",
|
|
488
503
|
blockId: item.blockId || "",
|
|
489
504
|
content: item.content || "",
|
|
505
|
+
...(normalizedScrollTop !== undefined
|
|
506
|
+
? { scrollTop: normalizedScrollTop }
|
|
507
|
+
: {}),
|
|
490
508
|
createdAt,
|
|
491
509
|
updatedAt,
|
|
492
510
|
};
|
|
@@ -46,6 +46,7 @@ export interface ReaderBookmark {
|
|
|
46
46
|
pageId: string;
|
|
47
47
|
blockId: string;
|
|
48
48
|
content: string;
|
|
49
|
+
scrollTop?: number;
|
|
49
50
|
createdAt: number;
|
|
50
51
|
updatedAt: number;
|
|
51
52
|
}
|
|
@@ -101,6 +102,10 @@ export interface EBookPlayerInputLimitsOptions {
|
|
|
101
102
|
noteMaxLength?: number;
|
|
102
103
|
bookmarkMaxLength?: number;
|
|
103
104
|
}
|
|
105
|
+
export interface EBookPlayerSetBookmarkOptions {
|
|
106
|
+
content?: string;
|
|
107
|
+
prompt?: boolean;
|
|
108
|
+
}
|
|
104
109
|
export interface PlayerDataProvider {
|
|
105
110
|
getData: () => Promise<EbookDoc>;
|
|
106
111
|
loadProgress?: (bookId: string) => Promise<ReaderProgress | null>;
|
|
@@ -137,8 +142,10 @@ export interface EBookPlayerHandle {
|
|
|
137
142
|
createNote: (note: Omit<ReaderNote, "id" | "createdAt" | "updatedAt" | "bookId">, source?: "api" | "user") => Promise<ReaderNote>;
|
|
138
143
|
updateNote: (noteId: string, patch: Partial<Omit<ReaderNote, "id" | "bookId" | "createdAt">>, source?: "api" | "user") => Promise<ReaderNote | null>;
|
|
139
144
|
deleteNote: (noteId: string, source?: "api" | "user") => Promise<boolean>;
|
|
140
|
-
setBookmark: (
|
|
145
|
+
setBookmark: (options?: EBookPlayerSetBookmarkOptions, source?: "api" | "user") => Promise<ReaderBookmark | null>;
|
|
141
146
|
deleteBookmark: (bookmarkId: string, source?: "api" | "user") => Promise<boolean>;
|
|
147
|
+
goToHighlight: (highlightId: string) => number | null;
|
|
148
|
+
goToNote: (noteId: string) => number | null;
|
|
142
149
|
goToBookmark: (bookmarkId: string) => number | null;
|
|
143
150
|
onAnnotationCreate: (listener: (event: ReaderAnnotationCreateEvent) => void) => () => void;
|
|
144
151
|
onAnnotationUpdate: (listener: (event: ReaderAnnotationUpdateEvent) => void) => () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../../../../../core/src/types/player.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../../../../../core/src/types/player.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AACrE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,CAAC;AAE7E,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,GAAG,EAAE,iBAAiB,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,GAAG,EAAE,iBAAiB,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,GAAG,EAAE,iBAAiB,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,kCAAkC;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAClE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACxE,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,iBAAiB,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,cAAc,EAAE,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC,gBAAgB,CAAC,EAAE,kCAAkC,CAAC;IACtD,WAAW,CAAC,EAAE,6BAA6B,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,cAAc,EAAE,MAAM,iBAAiB,CAAC;IACxC,aAAa,EAAE,MAAM,eAAe,EAAE,CAAC;IACvC,QAAQ,EAAE,MAAM,UAAU,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,cAAc,EAAE,CAAC;IACrC,cAAc,EAAE,CACd,WAAW,EAAE,iBAAiB,EAC9B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,iBAAiB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,CACf,SAAS,EAAE,IAAI,CACb,eAAe,EACf,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAC5C,EACD,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9B,eAAe,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EACpE,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACrC,eAAe,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,UAAU,EAAE,CACV,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC,EACnE,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,UAAU,EAAE,CACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EAC/D,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAChC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,WAAW,EAAE,CACX,OAAO,CAAC,EAAE,6BAA6B,EACvC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpC,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KACpB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACpD,kBAAkB,EAAE,CAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,KACnD,MAAM,IAAI,CAAC;IAChB,kBAAkB,EAAE,CAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,KACnD,MAAM,IAAI,CAAC;IAChB,kBAAkB,EAAE,CAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,KACnD,MAAM,IAAI,CAAC;IAChB,mBAAmB,EAAE,CACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,IAAI,KACpD,MAAM,IAAI,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyebook/vue3-adapter",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.6",
|
|
4
4
|
"description": "Vue3 adapter for hy-ebook core",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@hyebook/core": "^2.3.
|
|
20
|
+
"@hyebook/core": "^2.3.5"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tsc -p tsconfig.json",
|