@hyebook/vue3-adapter 2.3.10 → 2.3.11

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.
@@ -12,6 +12,15 @@ export declare class EBookPlayer implements EBookPlayerHandle {
12
12
  private loadWarningToggleBtn;
13
13
  private loadWarningCloseBtn;
14
14
  private loadWarningMessage;
15
+ private textInputBackdrop;
16
+ private textInputTitle;
17
+ private textInputTextarea;
18
+ private textInputError;
19
+ private textInputCancelBtn;
20
+ private textInputConfirmBtn;
21
+ private pendingTextInputResolver;
22
+ private pendingTextInputMaxLength;
23
+ private backToTopBtn;
15
24
  private highlightBtn;
16
25
  private toolbarDivider;
17
26
  private noteBtn;
@@ -28,6 +37,11 @@ export declare class EBookPlayer implements EBookPlayerHandle {
28
37
  private readonly handleNoteClickBound;
29
38
  private readonly handleLoadWarningToggleBound;
30
39
  private readonly handleLoadWarningCloseBound;
40
+ private readonly handleTextInputCancelBound;
41
+ private readonly handleTextInputConfirmBound;
42
+ private readonly handleTextInputBackdropPointerDownBound;
43
+ private readonly handleTextInputKeyDownBound;
44
+ private readonly handleBackToTopClickBound;
31
45
  constructor(container: HTMLElement, options: EBookPlayerOptions);
32
46
  load(doc?: EbookDoc): Promise<EbookDoc>;
33
47
  destroy(): void;
@@ -97,10 +111,13 @@ export declare class EBookPlayer implements EBookPlayerHandle {
97
111
  private handleHighlightClick;
98
112
  private handleNoteClick;
99
113
  private resolveWidth;
114
+ private updateBackToTopButtonPosition;
100
115
  private resolveSelectionToolbarOptions;
101
116
  private resolveInputLimits;
102
117
  private normalizeLimitValue;
103
118
  private promptTextWithLimit;
119
+ private confirmTextInput;
120
+ private finishTextInput;
104
121
  private normalizeBookmarkContent;
105
122
  private resolveCurrentBlockFromScroll;
106
123
  private extractBlockDataset;
@@ -1 +1 @@
1
- {"version":3,"file":"ebook-player.d.ts","sourceRoot":"","sources":["../../../../../core/src/player/ebook-player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ebook-player.d.ts","sourceRoot":"","sources":["../../../../../core/src/player/ebook-player.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { PlayerEngine } from "./engine";
2
2
  const EBOOK_PLAYER_STYLE_ID = "hy-ebook-lite-player-style";
3
- const EBOOK_PLAYER_STYLE_VERSION = "0.2.1";
3
+ const EBOOK_PLAYER_STYLE_VERSION = "0.2.2";
4
4
  const JUMP_SCROLL_FOCUS_DELAY_MS = 360;
5
5
  const JUMP_FOCUS_ANIMATION_MS = 560;
6
6
  const BOOKMARK_JUMP_REVEAL_TOP_OFFSET_PX = 28;
7
7
  const HIGHLIGHT_ICON_SVG = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 22V12.5H6V8.5H18V12.5H21V22H3Z" stroke="#333333" stroke-width="2" stroke-linejoin="round"/><path d="M8.5 8.5V4L15.5 2V8.5" stroke="#333333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
8
8
  const NOTE_ICON_SVG = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15.4998 4.49951L19.4998 8.4995" stroke="#333333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M3.99977 15.9995L17.9997 2L21.9998 5.9995L7.99975 19.9995L2.99976 20.9995L3.99977 15.9995Z" stroke="#333333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M4.49976 15.9995L7.99975 19.4995" stroke="#333333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M6.49976 17.4995L17.4998 6.4995" stroke="#333333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
9
9
  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>`;
10
+ const BACK_TO_TOP_ICON_SVG = `<svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 18V6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M7 11L12 6L17 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
10
11
  const EBOOK_PLAYER_CSS = `
11
12
  .hyepl-root{position:relative;max-width:100%;margin:0 auto;color:#0f172a;font-size:14px;line-height:1.7}
12
13
  .hyepl-root ::selection{background:#7DE2D3}
@@ -20,6 +21,20 @@ const EBOOK_PLAYER_CSS = `
20
21
  .hyepl-load-warning-close{width:24px;padding:0}
21
22
  .hyepl-load-warning-message{margin:8px 0 0;font-size:12px;line-height:1.5;color:#7f1d1d;white-space:pre-wrap;word-break:break-word;display:none;max-height:180px;overflow:auto}
22
23
  .hyepl-load-warning.expanded .hyepl-load-warning-message{display:block}
24
+ .hyepl-input-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:10090;padding:16px}
25
+ .hyepl-input-backdrop.show{display:flex}
26
+ .hyepl-input-dialog{width:min(520px,100%);background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:14px;display:grid;gap:10px;box-shadow:0 16px 34px rgba(15,23,42,.28)}
27
+ .hyepl-input-title{margin:0;font-size:14px;font-weight:600;color:#0f172a}
28
+ .hyepl-input-textarea{width:100%;min-height:120px;resize:vertical;border:1px solid #94a3b8;border-radius:8px;padding:8px 10px;background:#fff;color:#0f172a;box-sizing:border-box;font-family:inherit;font-size:14px;line-height:1.5}
29
+ .hyepl-input-error{min-height:18px;margin:0;color:#b91c1c;font-size:12px}
30
+ .hyepl-input-actions{display:flex;justify-content:flex-end;gap:8px}
31
+ .hyepl-input-btn{height:34px;padding:0 12px;border-radius:8px;border:1px solid #94a3b8;background:#fff;color:#0f172a;cursor:pointer}
32
+ .hyepl-input-btn.primary{border-color:#0b7285;background:#0b7285;color:#fff}
33
+ .hyepl-back-to-top{position:absolute;right:16px;bottom:16px;z-index:10060;width:52px;height:52px;border:1px solid #d5dde8;border-radius:999px;background:#ffffff;color:#0f172a;box-shadow:0 10px 28px rgba(15,23,42,.2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}
34
+ .hyepl-back-to-top svg{width:22px;height:22px}
35
+ .hyepl-back-to-top:hover{background:#0f172a;color:#ffffff;border-color:#0f172a}
36
+ .hyepl-back-to-top:focus-visible{outline:2px solid #38bdf8;outline-offset:2px}
37
+ .hyepl-back-to-top.hidden{display:none}
23
38
  .hyepl-content{position:relative}
24
39
  .hyepl-page{margin:0 0 16px}
25
40
  .hyepl-page:last-child{margin-bottom:0}
@@ -28,6 +43,7 @@ const EBOOK_PLAYER_CSS = `
28
43
  .hyepl-block-text{position:relative;padding-right:18px;white-space:normal}
29
44
  .hyepl-block-text p,.hyepl-block-text h1,.hyepl-block-text h2,.hyepl-block-text h3,.hyepl-block-text h4,.hyepl-block-text blockquote{margin:0 0 .75em;line-height:1.7}
30
45
  .hyepl-block-text p:last-child,.hyepl-block-text h1:last-child,.hyepl-block-text h2:last-child,.hyepl-block-text h3:last-child,.hyepl-block-text h4:last-child,.hyepl-block-text blockquote:last-child{margin-bottom:0}
46
+ .hyepl-block-text em,.hyepl-block-text i,.hyepl-block-table em,.hyepl-block-table i{font-style:italic}
31
47
  .hyepl-block-text h1{font-size:24px;line-height:1.3}
32
48
  .hyepl-block-text h2{font-size:20px;line-height:1.35}
33
49
  .hyepl-block-text h3{font-size:16px;line-height:1.45}
@@ -83,6 +99,8 @@ const EBOOK_PLAYER_CSS = `
83
99
  export class EBookPlayer {
84
100
  constructor(container, options) {
85
101
  this.runtimeDocument = null;
102
+ this.pendingTextInputResolver = null;
103
+ this.pendingTextInputMaxLength = 0;
86
104
  this.selectionDraft = null;
87
105
  this.loaded = false;
88
106
  this.destroyed = false;
@@ -91,6 +109,7 @@ export class EBookPlayer {
91
109
  };
92
110
  this.handleSelectionRepositionBound = () => {
93
111
  this.updateSelectionToolbarPosition();
112
+ this.updateBackToTopButtonPosition();
94
113
  };
95
114
  this.handleDocumentPointerDownBound = (event) => {
96
115
  this.handleDocumentPointerDown(event);
@@ -110,6 +129,31 @@ export class EBookPlayer {
110
129
  this.handleLoadWarningCloseBound = () => {
111
130
  this.hideLoadWarning();
112
131
  };
132
+ this.handleTextInputCancelBound = () => {
133
+ this.finishTextInput(null);
134
+ };
135
+ this.handleTextInputConfirmBound = () => {
136
+ this.confirmTextInput();
137
+ };
138
+ this.handleTextInputBackdropPointerDownBound = (event) => {
139
+ if (event.target === this.textInputBackdrop) {
140
+ this.finishTextInput(null);
141
+ }
142
+ };
143
+ this.handleTextInputKeyDownBound = (event) => {
144
+ if (event.key === "Escape") {
145
+ event.preventDefault();
146
+ this.finishTextInput(null);
147
+ return;
148
+ }
149
+ if (event.key === "Enter" && (event.metaKey || event.ctrlKey)) {
150
+ event.preventDefault();
151
+ this.confirmTextInput();
152
+ }
153
+ };
154
+ this.handleBackToTopClickBound = () => {
155
+ this.scrollToStoredPosition(0, "smooth");
156
+ };
113
157
  this.container = container;
114
158
  this.options = options;
115
159
  const runtimeProvider = createRuntimeProvider(options.provider, () => this.runtimeDocument);
@@ -149,6 +193,35 @@ export class EBookPlayer {
149
193
  loadWarningHeader.append(loadWarningTitle, loadWarningActions);
150
194
  this.loadWarning.append(loadWarningHeader, this.loadWarningMessage);
151
195
  this.setLoadWarningExpanded(false);
196
+ this.textInputBackdrop = document.createElement("div");
197
+ this.textInputBackdrop.className = "hyepl-input-backdrop";
198
+ const textInputDialog = document.createElement("div");
199
+ textInputDialog.className = "hyepl-input-dialog";
200
+ this.textInputTitle = document.createElement("h4");
201
+ this.textInputTitle.className = "hyepl-input-title";
202
+ this.textInputTextarea = document.createElement("textarea");
203
+ this.textInputTextarea.className = "hyepl-input-textarea";
204
+ this.textInputError = document.createElement("p");
205
+ this.textInputError.className = "hyepl-input-error";
206
+ const textInputActions = document.createElement("div");
207
+ textInputActions.className = "hyepl-input-actions";
208
+ this.textInputCancelBtn = document.createElement("button");
209
+ this.textInputCancelBtn.type = "button";
210
+ this.textInputCancelBtn.className = "hyepl-input-btn";
211
+ this.textInputCancelBtn.textContent = "取消";
212
+ this.textInputConfirmBtn = document.createElement("button");
213
+ this.textInputConfirmBtn.type = "button";
214
+ this.textInputConfirmBtn.className = "hyepl-input-btn primary";
215
+ this.textInputConfirmBtn.textContent = "确认";
216
+ textInputActions.append(this.textInputCancelBtn, this.textInputConfirmBtn);
217
+ textInputDialog.append(this.textInputTitle, this.textInputTextarea, this.textInputError, textInputActions);
218
+ this.textInputBackdrop.append(textInputDialog);
219
+ this.backToTopBtn = document.createElement("button");
220
+ this.backToTopBtn.type = "button";
221
+ this.backToTopBtn.className = "hyepl-back-to-top";
222
+ this.backToTopBtn.innerHTML = BACK_TO_TOP_ICON_SVG;
223
+ this.backToTopBtn.title = "回到顶部";
224
+ this.backToTopBtn.setAttribute("aria-label", "回到顶部");
152
225
  this.highlightBtn = document.createElement("button");
153
226
  this.highlightBtn.type = "button";
154
227
  this.highlightBtn.className = "hyepl-toolbar-btn";
@@ -163,19 +236,29 @@ export class EBookPlayer {
163
236
  this.setToolbarButtonContent(this.noteBtn, NOTE_ICON_SVG, this.selectionOptions.noteButtonText);
164
237
  this.noteBtn.setAttribute("aria-label", this.selectionOptions.noteButtonText);
165
238
  this.selectionToolbar.append(this.highlightBtn, this.toolbarDivider, this.noteBtn);
166
- this.root.append(this.content, this.selectionToolbar, this.loadWarning);
239
+ this.root.append(this.content, this.selectionToolbar, this.loadWarning, this.textInputBackdrop);
167
240
  this.container.innerHTML = "";
168
241
  this.container.append(this.root);
242
+ if (!this.container.style.position) {
243
+ this.container.style.position = "relative";
244
+ }
245
+ this.container.append(this.backToTopBtn);
169
246
  this.highlightBtn.addEventListener("mousedown", this.preserveSelectionOnToolbarMouseDownBound);
170
247
  this.noteBtn.addEventListener("mousedown", this.preserveSelectionOnToolbarMouseDownBound);
171
248
  this.highlightBtn.addEventListener("click", this.handleHighlightClickBound);
172
249
  this.noteBtn.addEventListener("click", this.handleNoteClickBound);
173
250
  this.loadWarningToggleBtn.addEventListener("click", this.handleLoadWarningToggleBound);
174
251
  this.loadWarningCloseBtn.addEventListener("click", this.handleLoadWarningCloseBound);
252
+ this.textInputCancelBtn.addEventListener("click", this.handleTextInputCancelBound);
253
+ this.textInputConfirmBtn.addEventListener("click", this.handleTextInputConfirmBound);
254
+ this.textInputBackdrop.addEventListener("pointerdown", this.handleTextInputBackdropPointerDownBound);
255
+ this.textInputTextarea.addEventListener("keydown", this.handleTextInputKeyDownBound);
256
+ this.backToTopBtn.addEventListener("click", this.handleBackToTopClickBound);
175
257
  document.addEventListener("selectionchange", this.handleSelectionChangeBound);
176
258
  document.addEventListener("pointerdown", this.handleDocumentPointerDownBound);
177
259
  window.addEventListener("scroll", this.handleSelectionRepositionBound, true);
178
260
  window.addEventListener("resize", this.handleSelectionRepositionBound);
261
+ this.updateBackToTopButtonPosition();
179
262
  }
180
263
  async load(doc) {
181
264
  if (doc) {
@@ -215,6 +298,17 @@ export class EBookPlayer {
215
298
  this.noteBtn.removeEventListener("click", this.handleNoteClickBound);
216
299
  this.loadWarningToggleBtn.removeEventListener("click", this.handleLoadWarningToggleBound);
217
300
  this.loadWarningCloseBtn.removeEventListener("click", this.handleLoadWarningCloseBound);
301
+ this.textInputCancelBtn.removeEventListener("click", this.handleTextInputCancelBound);
302
+ this.textInputConfirmBtn.removeEventListener("click", this.handleTextInputConfirmBound);
303
+ this.textInputBackdrop.removeEventListener("pointerdown", this.handleTextInputBackdropPointerDownBound);
304
+ this.textInputTextarea.removeEventListener("keydown", this.handleTextInputKeyDownBound);
305
+ this.backToTopBtn.removeEventListener("click", this.handleBackToTopClickBound);
306
+ if (this.pendingTextInputResolver) {
307
+ this.finishTextInput(null);
308
+ }
309
+ if (this.backToTopBtn.parentNode === this.container) {
310
+ this.container.removeChild(this.backToTopBtn);
311
+ }
218
312
  if (this.root.parentNode === this.container) {
219
313
  this.container.removeChild(this.root);
220
314
  }
@@ -299,7 +393,7 @@ export class EBookPlayer {
299
393
  throw new Error("Bookmark content is required when prompt is disabled.");
300
394
  }
301
395
  else {
302
- content = this.promptTextWithLimit("请输入书签内容", current?.content || "", this.inputLimits.bookmarkMaxLength);
396
+ content = await this.promptTextWithLimit("请输入书签内容", current?.content || "", this.inputLimits.bookmarkMaxLength);
303
397
  }
304
398
  if (content === null) {
305
399
  return null;
@@ -325,7 +419,7 @@ export class EBookPlayer {
325
419
  throw new Error("Bookmark content is required when prompt is disabled.");
326
420
  }
327
421
  else {
328
- content = this.promptTextWithLimit("请输入书签内容", current.content || "", this.inputLimits.bookmarkMaxLength);
422
+ content = await this.promptTextWithLimit("请输入书签内容", current.content || "", this.inputLimits.bookmarkMaxLength);
329
423
  }
330
424
  if (content === null) {
331
425
  return null;
@@ -1205,29 +1299,30 @@ export class EBookPlayer {
1205
1299
  this.hideSelectionToolbar();
1206
1300
  }
1207
1301
  async handleNoteClick() {
1208
- if (!this.selectionDraft) {
1302
+ const selectionDraft = this.selectionDraft;
1303
+ if (!selectionDraft) {
1209
1304
  return;
1210
1305
  }
1211
1306
  const defaultText = "";
1212
- const content = this.promptTextWithLimit("请输入笔记内容", defaultText, this.inputLimits.noteMaxLength);
1307
+ const content = await this.promptTextWithLimit("请输入笔记内容", defaultText, this.inputLimits.noteMaxLength);
1213
1308
  if (content === null) {
1214
1309
  return;
1215
1310
  }
1216
- const segments = this.selectionDraft.segments && this.selectionDraft.segments.length
1217
- ? this.selectionDraft.segments
1311
+ const segments = selectionDraft.segments && selectionDraft.segments.length
1312
+ ? selectionDraft.segments
1218
1313
  : [
1219
1314
  {
1220
- pageId: this.selectionDraft.pageId,
1221
- blockId: this.selectionDraft.blockId,
1222
- range: this.selectionDraft.range,
1223
- text: this.selectionDraft.text,
1315
+ pageId: selectionDraft.pageId,
1316
+ blockId: selectionDraft.blockId,
1317
+ range: selectionDraft.range,
1318
+ text: selectionDraft.text,
1224
1319
  },
1225
1320
  ];
1226
1321
  const firstSegment = segments[0];
1227
1322
  if (!firstSegment) {
1228
1323
  return;
1229
1324
  }
1230
- const mergedSelectedText = this.selectionDraft.text ||
1325
+ const mergedSelectedText = selectionDraft.text ||
1231
1326
  segments
1232
1327
  .map((segment) => segment.text)
1233
1328
  .filter(Boolean)
@@ -1259,6 +1354,41 @@ export class EBookPlayer {
1259
1354
  }
1260
1355
  return Math.max(320, Math.round(width));
1261
1356
  }
1357
+ updateBackToTopButtonPosition() {
1358
+ const hostRect = this.container.getBoundingClientRect();
1359
+ const hostWidth = this.container.clientWidth || hostRect.width;
1360
+ const hostHeight = this.container.clientHeight || hostRect.height;
1361
+ const buttonWidth = this.backToTopBtn.offsetWidth || 52;
1362
+ const buttonHeight = this.backToTopBtn.offsetHeight || 52;
1363
+ const margin = 16;
1364
+ if (hostWidth <= 0 || hostHeight <= 0) {
1365
+ this.backToTopBtn.classList.add("hidden");
1366
+ return;
1367
+ }
1368
+ const viewportLeft = 0;
1369
+ const viewportTop = 0;
1370
+ const viewportRight = window.innerWidth;
1371
+ const viewportBottom = window.innerHeight;
1372
+ const desiredViewportLeft = Math.min(hostRect.right - buttonWidth - margin, viewportRight - buttonWidth - margin);
1373
+ const desiredViewportTop = viewportBottom - buttonHeight - margin;
1374
+ const minViewportLeft = Math.max(viewportLeft + margin, hostRect.left + margin);
1375
+ const maxViewportLeft = Math.min(viewportRight - buttonWidth - margin, hostRect.right - buttonWidth - margin);
1376
+ const minViewportTop = Math.max(viewportTop + margin, hostRect.top + margin);
1377
+ const maxViewportTop = Math.min(viewportBottom - buttonHeight - margin, hostRect.bottom - buttonHeight - margin);
1378
+ if (maxViewportLeft < minViewportLeft || maxViewportTop < minViewportTop) {
1379
+ this.backToTopBtn.classList.add("hidden");
1380
+ return;
1381
+ }
1382
+ const clampedViewportLeft = Math.max(minViewportLeft, Math.min(desiredViewportLeft, maxViewportLeft));
1383
+ const clampedViewportTop = Math.max(minViewportTop, Math.min(desiredViewportTop, maxViewportTop));
1384
+ const localLeft = clampedViewportLeft - hostRect.left;
1385
+ const localTop = clampedViewportTop - hostRect.top;
1386
+ this.backToTopBtn.style.left = `${Math.round(localLeft)}px`;
1387
+ this.backToTopBtn.style.top = `${Math.round(localTop)}px`;
1388
+ this.backToTopBtn.style.right = "auto";
1389
+ this.backToTopBtn.style.bottom = "auto";
1390
+ this.backToTopBtn.classList.remove("hidden");
1391
+ }
1262
1392
  resolveSelectionToolbarOptions(options) {
1263
1393
  const highlightButtonText = typeof options?.highlightButtonText === "string" &&
1264
1394
  options.highlightButtonText.trim()
@@ -1296,24 +1426,43 @@ export class EBookPlayer {
1296
1426
  return Math.max(1, Math.floor(value));
1297
1427
  }
1298
1428
  promptTextWithLimit(title, defaultText, maxLength) {
1299
- let nextDefault = defaultText;
1300
- while (true) {
1301
- const raw = window.prompt(`${title}(最多${maxLength}字)`, nextDefault);
1302
- if (raw === null) {
1303
- return null;
1304
- }
1305
- const trimmed = raw.trim();
1306
- if (!trimmed) {
1307
- window.alert("内容不能为空");
1308
- nextDefault = "";
1309
- continue;
1310
- }
1311
- if (trimmed.length > maxLength) {
1312
- window.alert(`最多输入${maxLength}字,当前${trimmed.length}字。`);
1313
- nextDefault = trimmed.slice(0, maxLength);
1314
- continue;
1315
- }
1316
- return trimmed;
1429
+ if (this.pendingTextInputResolver) {
1430
+ this.finishTextInput(null);
1431
+ }
1432
+ this.pendingTextInputMaxLength = maxLength;
1433
+ this.textInputTitle.textContent = `${title}(最多${maxLength}字)`;
1434
+ this.textInputTextarea.value = defaultText;
1435
+ this.textInputError.textContent = "";
1436
+ this.textInputBackdrop.classList.add("show");
1437
+ window.setTimeout(() => {
1438
+ this.textInputTextarea.focus();
1439
+ this.textInputTextarea.setSelectionRange(this.textInputTextarea.value.length, this.textInputTextarea.value.length);
1440
+ }, 0);
1441
+ return new Promise((resolve) => {
1442
+ this.pendingTextInputResolver = resolve;
1443
+ });
1444
+ }
1445
+ confirmTextInput() {
1446
+ const raw = this.textInputTextarea.value || "";
1447
+ const trimmed = raw.trim();
1448
+ if (!trimmed) {
1449
+ this.textInputError.textContent = "内容不能为空";
1450
+ return;
1451
+ }
1452
+ if (trimmed.length > this.pendingTextInputMaxLength) {
1453
+ this.textInputError.textContent = `最多输入${this.pendingTextInputMaxLength}字,当前${trimmed.length}字。`;
1454
+ return;
1455
+ }
1456
+ this.finishTextInput(trimmed);
1457
+ }
1458
+ finishTextInput(value) {
1459
+ const resolver = this.pendingTextInputResolver;
1460
+ this.pendingTextInputResolver = null;
1461
+ this.pendingTextInputMaxLength = 0;
1462
+ this.textInputBackdrop.classList.remove("show");
1463
+ this.textInputError.textContent = "";
1464
+ if (resolver) {
1465
+ resolver(value);
1317
1466
  }
1318
1467
  }
1319
1468
  normalizeBookmarkContent(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"editor-workbench.d.ts","sourceRoot":"","sources":["../../../../../core/src/workbench/editor-workbench.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-workbench.d.ts","sourceRoot":"","sources":["../../../../../core/src/workbench/editor-workbench.ts"],"names":[],"mappings":"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"}
@@ -2922,6 +2922,26 @@ export function mountEditorWorkbench(container, options = {}) {
2922
2922
  return item !== editorArea && isParagraphElement(item);
2923
2923
  });
2924
2924
  };
2925
+ const ensureEditorHasFocusableParagraph = () => {
2926
+ const paragraphs = getEditorParagraphCandidates();
2927
+ if (paragraphs.length) {
2928
+ return paragraphs[0];
2929
+ }
2930
+ const paragraph = document.createElement("p");
2931
+ paragraph.innerHTML = "<br>";
2932
+ editorArea.append(paragraph);
2933
+ return paragraph;
2934
+ };
2935
+ const isEditorSurfaceEffectivelyEmpty = () => {
2936
+ if (getEditorParagraphCandidates().length > 0) {
2937
+ return false;
2938
+ }
2939
+ const text = (editorArea.textContent || "").replace(/\u00a0/g, " ").trim();
2940
+ if (text.length > 0) {
2941
+ return false;
2942
+ }
2943
+ return !editorArea.querySelector("table,img,video,.inline-media");
2944
+ };
2925
2945
  const rememberActiveParagraphIndex = () => {
2926
2946
  const paragraph = resolveActiveParagraph(editorArea, rememberedRange);
2927
2947
  if (!paragraph) {
@@ -3875,6 +3895,9 @@ export function mountEditorWorkbench(container, options = {}) {
3875
3895
  editorRenderKey = key;
3876
3896
  selectInlineImage(null);
3877
3897
  rememberedParagraphIndex = null;
3898
+ if (isEditorSurfaceEffectivelyEmpty()) {
3899
+ ensureEditorHasFocusableParagraph();
3900
+ }
3878
3901
  }
3879
3902
  if (state.mode === "preview") {
3880
3903
  canvas.style.width = "100%";
@@ -4269,6 +4292,20 @@ export function mountEditorWorkbench(container, options = {}) {
4269
4292
  const image = target.closest("img.inline-image");
4270
4293
  if (!image || !editorArea.contains(image)) {
4271
4294
  selectInlineImage(null);
4295
+ if (target === editorArea && isEditorSurfaceEffectivelyEmpty()) {
4296
+ const paragraph = ensureEditorHasFocusableParagraph();
4297
+ editorArea.focus();
4298
+ const range = document.createRange();
4299
+ range.selectNodeContents(paragraph);
4300
+ range.collapse(false);
4301
+ const selection = window.getSelection();
4302
+ if (selection) {
4303
+ selection.removeAllRanges();
4304
+ selection.addRange(range);
4305
+ rememberedRange = range.cloneRange();
4306
+ rememberActiveParagraphIndex();
4307
+ }
4308
+ }
4272
4309
  return;
4273
4310
  }
4274
4311
  selectInlineImage(image);
@@ -6038,8 +6075,34 @@ function parseLineHeight(value) {
6038
6075
  if (!value) {
6039
6076
  return undefined;
6040
6077
  }
6041
- const number = Number.parseFloat(value);
6042
- return Number.isFinite(number) ? number : undefined;
6078
+ const normalized = value.trim().toLowerCase();
6079
+ if (!normalized || normalized === "normal") {
6080
+ return undefined;
6081
+ }
6082
+ const percentMatch = normalized.match(/^(-?\d+(?:\.\d+)?)%$/);
6083
+ if (percentMatch && percentMatch[1] !== undefined) {
6084
+ const percent = Number.parseFloat(percentMatch[1]);
6085
+ if (!Number.isFinite(percent) || percent <= 0) {
6086
+ return undefined;
6087
+ }
6088
+ return Number.parseFloat((percent / 100).toFixed(4));
6089
+ }
6090
+ const unitlessMatch = normalized.match(/^-?\d+(?:\.\d+)?$/);
6091
+ if (unitlessMatch) {
6092
+ const raw = Number.parseFloat(normalized);
6093
+ if (!Number.isFinite(raw) || raw <= 0) {
6094
+ return undefined;
6095
+ }
6096
+ if (raw >= 100) {
6097
+ return Number.parseFloat((raw / 100).toFixed(4));
6098
+ }
6099
+ return raw;
6100
+ }
6101
+ const number = Number.parseFloat(normalized);
6102
+ if (!Number.isFinite(number) || number <= 0) {
6103
+ return undefined;
6104
+ }
6105
+ return number;
6043
6106
  }
6044
6107
  function parseIndentEm(value) {
6045
6108
  if (!value) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyebook/vue3-adapter",
3
- "version": "2.3.10",
3
+ "version": "2.3.11",
4
4
  "description": "Vue3 adapter for hy-ebook core",
5
5
  "repository": {
6
6
  "type": "git",