@hyebook/vue3-adapter 0.2.5 → 2.2.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-workbench.d.ts","sourceRoot":"","sources":["../../../../../core/src/workbench/editor-workbench.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EAKR,kBAAkB,EAWnB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"editor-workbench.d.ts","sourceRoot":"","sources":["../../../../../core/src/workbench/editor-workbench.ts"],"names":[],"mappings":"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"}
|
|
@@ -144,6 +144,14 @@ const WORKBENCH_CSS = `
|
|
|
144
144
|
.hyewb-upload-progress{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}
|
|
145
145
|
.hyewb-upload-progress > span{display:block;height:100%;width:0;background:#0b7285;transition:width .18s ease}
|
|
146
146
|
.hyewb-upload-error{min-height:18px;font-size:12px;color:#b91c1c;margin:0}
|
|
147
|
+
.hyewb-preview-note-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:10080;padding:16px}
|
|
148
|
+
.hyewb-preview-note-backdrop.show{display:flex}
|
|
149
|
+
.hyewb-preview-note-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)}
|
|
150
|
+
.hyewb-preview-note-title{margin:0;font-size:14px;font-weight:600;color:#0f172a}
|
|
151
|
+
.hyewb-preview-note-input{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}
|
|
152
|
+
.hyewb-preview-note-actions{display:flex;justify-content:flex-end;gap:8px}
|
|
153
|
+
.hyewb-preview-note-btn{height:34px;padding:0 12px;border-radius:8px;border:1px solid #94a3b8;background:#fff;color:#0f172a;cursor:pointer}
|
|
154
|
+
.hyewb-preview-note-btn.primary{border-color:#0b7285;background:#0b7285;color:#fff}
|
|
147
155
|
.hyewb-preview-highlight-mark{background:var(--hyewb-highlight-color,#fff59d);color:inherit;padding:0 .08em;border-radius:.2em}
|
|
148
156
|
.hyewb-preview-note-mark{background:rgba(14,116,144,.14);border-bottom:2px solid #0e7490;color:inherit;padding:0 .04em;border-radius:.2em}
|
|
149
157
|
.hyewb-preview-annotation-panel{display:none;align-content:start;gap:10px;border:1px solid #d8e0ea;border-radius:10px;background:#ffffff;padding:12px;max-height:100%;overflow:auto}
|
|
@@ -779,6 +787,35 @@ export function mountEditorWorkbench(container, options = {}) {
|
|
|
779
787
|
previewNoteBtn.setAttribute("aria-label", "创建笔记");
|
|
780
788
|
previewNoteBtn.append(createIconPlaceholder("notebook-pen"));
|
|
781
789
|
previewSelectionToolbar.append(previewHighlightBtn, previewNoteBtn);
|
|
790
|
+
const preservePreviewSelectionOnToolbarPointerDown = (event) => {
|
|
791
|
+
// Keep native text selection active while clicking toolbar actions.
|
|
792
|
+
event.preventDefault();
|
|
793
|
+
event.stopPropagation();
|
|
794
|
+
};
|
|
795
|
+
previewSelectionToolbar.addEventListener("mousedown", preservePreviewSelectionOnToolbarPointerDown);
|
|
796
|
+
const previewNoteBackdrop = document.createElement("div");
|
|
797
|
+
previewNoteBackdrop.className = "hyewb-preview-note-backdrop";
|
|
798
|
+
const previewNoteDialog = document.createElement("div");
|
|
799
|
+
previewNoteDialog.className = "hyewb-preview-note-dialog";
|
|
800
|
+
const previewNoteTitle = document.createElement("h4");
|
|
801
|
+
previewNoteTitle.className = "hyewb-preview-note-title";
|
|
802
|
+
previewNoteTitle.textContent = "新增笔记";
|
|
803
|
+
const previewNoteInput = document.createElement("textarea");
|
|
804
|
+
previewNoteInput.className = "hyewb-preview-note-input";
|
|
805
|
+
previewNoteInput.placeholder = "请输入笔记内容";
|
|
806
|
+
const previewNoteActions = document.createElement("div");
|
|
807
|
+
previewNoteActions.className = "hyewb-preview-note-actions";
|
|
808
|
+
const previewNoteCancelBtn = document.createElement("button");
|
|
809
|
+
previewNoteCancelBtn.type = "button";
|
|
810
|
+
previewNoteCancelBtn.className = "hyewb-preview-note-btn";
|
|
811
|
+
previewNoteCancelBtn.textContent = "取消";
|
|
812
|
+
const previewNoteConfirmBtn = document.createElement("button");
|
|
813
|
+
previewNoteConfirmBtn.type = "button";
|
|
814
|
+
previewNoteConfirmBtn.className = "hyewb-preview-note-btn primary";
|
|
815
|
+
previewNoteConfirmBtn.textContent = "保存";
|
|
816
|
+
previewNoteActions.append(previewNoteCancelBtn, previewNoteConfirmBtn);
|
|
817
|
+
previewNoteDialog.append(previewNoteTitle, previewNoteInput, previewNoteActions);
|
|
818
|
+
previewNoteBackdrop.append(previewNoteDialog);
|
|
782
819
|
const floatingToolbar = document.createElement("div");
|
|
783
820
|
floatingToolbar.className = "hyewb-float";
|
|
784
821
|
const floatBoldBtn = createButton("bold");
|
|
@@ -853,7 +890,7 @@ export function mountEditorWorkbench(container, options = {}) {
|
|
|
853
890
|
const colorGrid = document.createElement("div");
|
|
854
891
|
colorGrid.className = "hyewb-color-grid";
|
|
855
892
|
colorPalette.append(colorGrid);
|
|
856
|
-
root.append(header, toolbar, pageRow, previewLayout, status, colorPalette, tablePicker, tableTools, tableRowDeleteBtn, tableMoveHandle, tableScaleHandle, tableColEdgeLayer, tableRowEdgeLayer, tableRowGapInsertBtn, tableColGapInsertBtn, tableDropIndicator, tableContextMenu, uploadBackdrop, docxInput, previewSelectionToolbar);
|
|
893
|
+
root.append(header, toolbar, pageRow, previewLayout, status, colorPalette, tablePicker, tableTools, tableRowDeleteBtn, tableMoveHandle, tableScaleHandle, tableColEdgeLayer, tableRowEdgeLayer, tableRowGapInsertBtn, tableColGapInsertBtn, tableDropIndicator, tableContextMenu, uploadBackdrop, previewNoteBackdrop, docxInput, previewSelectionToolbar);
|
|
857
894
|
container.innerHTML = "";
|
|
858
895
|
root.append(floatingToolbar);
|
|
859
896
|
container.append(root);
|
|
@@ -882,6 +919,7 @@ export function mountEditorWorkbench(container, options = {}) {
|
|
|
882
919
|
let selectedTableColIndex = null;
|
|
883
920
|
let annotationActiveTab = previewAnnotationOptions.annotationListDefaultTab;
|
|
884
921
|
let previewSelectionDraft = null;
|
|
922
|
+
let previewNoteDialogDraft = null;
|
|
885
923
|
const isTableGapInsertTarget = (node) => {
|
|
886
924
|
if (!node) {
|
|
887
925
|
return false;
|
|
@@ -1029,6 +1067,48 @@ export function mountEditorWorkbench(container, options = {}) {
|
|
|
1029
1067
|
uploadProgressBar.style.width = `${formatUploadProgress(uploadState.progress)}%`;
|
|
1030
1068
|
uploadError.textContent = uploadState.error || "";
|
|
1031
1069
|
};
|
|
1070
|
+
const closePreviewNoteDialog = () => {
|
|
1071
|
+
previewNoteDialogDraft = null;
|
|
1072
|
+
previewNoteInput.value = "";
|
|
1073
|
+
previewNoteBackdrop.classList.remove("show");
|
|
1074
|
+
previewNoteInput.blur();
|
|
1075
|
+
};
|
|
1076
|
+
const openPreviewNoteDialog = (draft) => {
|
|
1077
|
+
previewNoteDialogDraft = { ...draft };
|
|
1078
|
+
previewNoteInput.value = draft.text || "";
|
|
1079
|
+
previewNoteBackdrop.classList.add("show");
|
|
1080
|
+
window.setTimeout(() => {
|
|
1081
|
+
previewNoteInput.focus();
|
|
1082
|
+
previewNoteInput.select();
|
|
1083
|
+
}, 0);
|
|
1084
|
+
};
|
|
1085
|
+
const savePreviewNoteFromDialog = () => {
|
|
1086
|
+
if (!previewNoteDialogDraft) {
|
|
1087
|
+
return;
|
|
1088
|
+
}
|
|
1089
|
+
const noteText = previewNoteInput.value.trim();
|
|
1090
|
+
if (!noteText) {
|
|
1091
|
+
status.textContent = "请输入笔记内容";
|
|
1092
|
+
previewNoteInput.focus();
|
|
1093
|
+
return;
|
|
1094
|
+
}
|
|
1095
|
+
const current = normalizePreviewAnnotations(state.doc.meta.previewAnnotations);
|
|
1096
|
+
current.notes = mergeNoteRecords(current.notes, {
|
|
1097
|
+
id: `note-${Date.now()}-${Math.round(Math.random() * 10000)}`,
|
|
1098
|
+
pageId: previewNoteDialogDraft.pageId,
|
|
1099
|
+
start: previewNoteDialogDraft.start,
|
|
1100
|
+
end: previewNoteDialogDraft.end,
|
|
1101
|
+
text: noteText,
|
|
1102
|
+
selectedText: previewNoteDialogDraft.text,
|
|
1103
|
+
color: "#0e7490",
|
|
1104
|
+
createdAt: new Date().toISOString(),
|
|
1105
|
+
});
|
|
1106
|
+
annotationActiveTab = "notes";
|
|
1107
|
+
savePreviewAnnotations(current);
|
|
1108
|
+
window.getSelection()?.removeAllRanges();
|
|
1109
|
+
closePreviewNoteDialog();
|
|
1110
|
+
hidePreviewSelectionToolbar();
|
|
1111
|
+
};
|
|
1032
1112
|
const closeUploadDialog = () => {
|
|
1033
1113
|
if (uploadState.uploading) {
|
|
1034
1114
|
return;
|
|
@@ -3735,26 +3815,25 @@ export function mountEditorWorkbench(container, options = {}) {
|
|
|
3735
3815
|
if (!previewSelectionDraft) {
|
|
3736
3816
|
return;
|
|
3737
3817
|
}
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
|
|
3818
|
+
openPreviewNoteDialog(previewSelectionDraft);
|
|
3819
|
+
});
|
|
3820
|
+
previewNoteConfirmBtn.addEventListener("click", () => {
|
|
3821
|
+
savePreviewNoteFromDialog();
|
|
3822
|
+
});
|
|
3823
|
+
previewNoteCancelBtn.addEventListener("click", () => {
|
|
3824
|
+
closePreviewNoteDialog();
|
|
3825
|
+
});
|
|
3826
|
+
previewNoteBackdrop.addEventListener("click", () => {
|
|
3827
|
+
closePreviewNoteDialog();
|
|
3828
|
+
});
|
|
3829
|
+
previewNoteDialog.addEventListener("click", (event) => {
|
|
3830
|
+
event.stopPropagation();
|
|
3831
|
+
});
|
|
3832
|
+
previewNoteInput.addEventListener("keydown", (event) => {
|
|
3833
|
+
if ((event.ctrlKey || event.metaKey) && event.key === "Enter") {
|
|
3834
|
+
event.preventDefault();
|
|
3835
|
+
savePreviewNoteFromDialog();
|
|
3742
3836
|
}
|
|
3743
|
-
const current = normalizePreviewAnnotations(state.doc.meta.previewAnnotations);
|
|
3744
|
-
current.notes = mergeNoteRecords(current.notes, {
|
|
3745
|
-
id: `note-${Date.now()}-${Math.round(Math.random() * 10000)}`,
|
|
3746
|
-
pageId: previewSelectionDraft.pageId,
|
|
3747
|
-
start: previewSelectionDraft.start,
|
|
3748
|
-
end: previewSelectionDraft.end,
|
|
3749
|
-
text: noteText,
|
|
3750
|
-
selectedText: previewSelectionDraft.text,
|
|
3751
|
-
color: "#0e7490",
|
|
3752
|
-
createdAt: new Date().toISOString(),
|
|
3753
|
-
});
|
|
3754
|
-
annotationActiveTab = "notes";
|
|
3755
|
-
savePreviewAnnotations(current);
|
|
3756
|
-
window.getSelection()?.removeAllRanges();
|
|
3757
|
-
hidePreviewSelectionToolbar();
|
|
3758
3837
|
});
|
|
3759
3838
|
floatLeftBtn.addEventListener("click", () => updateAlign("left"));
|
|
3760
3839
|
floatCenterBtn.addEventListener("click", () => updateAlign("center"));
|
|
@@ -4526,6 +4605,9 @@ export function mountEditorWorkbench(container, options = {}) {
|
|
|
4526
4605
|
const handleDocumentKeyDown = (event) => {
|
|
4527
4606
|
if (event.key === "Escape") {
|
|
4528
4607
|
hideTableContextMenu();
|
|
4608
|
+
if (previewNoteBackdrop.classList.contains("show")) {
|
|
4609
|
+
closePreviewNoteDialog();
|
|
4610
|
+
}
|
|
4529
4611
|
}
|
|
4530
4612
|
};
|
|
4531
4613
|
document.addEventListener("pointerdown", handleDocumentPointerDownForPalette);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyebook/vue3-adapter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.2.6",
|
|
4
4
|
"description": "Vue3 adapter for hy-ebook core",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@hyebook/core": "^
|
|
20
|
+
"@hyebook/core": "^2.2.6"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tsc -p tsconfig.json",
|
|
24
24
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
25
25
|
"lint": "echo 'No lint configured for @hyebook/vue3-adapter'"
|
|
26
26
|
}
|
|
27
|
-
}
|
|
27
|
+
}
|