Spaces:
Running
Running
Upload 2 files
Browse files- static/app.js +22 -5
- static/style.css +2 -0
static/app.js
CHANGED
|
@@ -1390,6 +1390,8 @@ async function renderPDFViewer(viewer) {
|
|
| 1390 |
const context = canvas.getContext("2d");
|
| 1391 |
canvas.width = Math.ceil(viewport.width);
|
| 1392 |
canvas.height = Math.ceil(viewport.height);
|
|
|
|
|
|
|
| 1393 |
await page.render({ canvasContext: context, viewport }).promise;
|
| 1394 |
if (pageInput) {
|
| 1395 |
pageInput.value = String(pageNumber);
|
|
@@ -1632,10 +1634,22 @@ function openProofread(item, focusPart = null, restoring = false) {
|
|
| 1632 |
if (grid) grid.classList.add("proofread-grid-no-source");
|
| 1633 |
}
|
| 1634 |
const sourceImage = DOM.previewPanel.querySelector("[data-proofread-source-image]");
|
| 1635 |
-
if (sourceImage)
|
| 1636 |
-
const
|
| 1637 |
-
|
| 1638 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1639 |
const form = DOM.previewPanel.querySelector("[data-proofread-form]");
|
| 1640 |
const pdfViewer = DOM.previewPanel.querySelector("[data-pdf-viewer]");
|
| 1641 |
if (pdfViewer) renderPDFViewer(pdfViewer);
|
|
@@ -2241,7 +2255,10 @@ function attachEvents() {
|
|
| 2241 |
? 1
|
| 2242 |
: Math.min(4, Math.max(0.25, current + (zoomButton.dataset.imageZoom === "in" ? 0.25 : -0.25)));
|
| 2243 |
image.dataset.imageScale = String(next);
|
| 2244 |
-
|
|
|
|
|
|
|
|
|
|
| 2245 |
return;
|
| 2246 |
}
|
| 2247 |
if (event.target.closest("[data-fulltext-apply]")) {
|
|
|
|
| 1390 |
const context = canvas.getContext("2d");
|
| 1391 |
canvas.width = Math.ceil(viewport.width);
|
| 1392 |
canvas.height = Math.ceil(viewport.height);
|
| 1393 |
+
canvas.style.width = `${Math.ceil(viewport.width)}px`;
|
| 1394 |
+
canvas.style.height = `${Math.ceil(viewport.height)}px`;
|
| 1395 |
await page.render({ canvasContext: context, viewport }).promise;
|
| 1396 |
if (pageInput) {
|
| 1397 |
pageInput.value = String(pageNumber);
|
|
|
|
| 1634 |
if (grid) grid.classList.add("proofread-grid-no-source");
|
| 1635 |
}
|
| 1636 |
const sourceImage = DOM.previewPanel.querySelector("[data-proofread-source-image]");
|
| 1637 |
+
if (sourceImage) {
|
| 1638 |
+
const fitImage = () => {
|
| 1639 |
+
const stage = sourceImage.closest(".proofread-image-stage");
|
| 1640 |
+
if (!stage || !sourceImage.naturalWidth) return;
|
| 1641 |
+
const baseWidth = Math.min(sourceImage.naturalWidth, Math.max(1, stage.clientWidth - 32));
|
| 1642 |
+
sourceImage.dataset.imageBaseWidth = String(baseWidth);
|
| 1643 |
+
sourceImage.style.maxWidth = "none";
|
| 1644 |
+
sourceImage.style.width = `${baseWidth}px`;
|
| 1645 |
+
};
|
| 1646 |
+
sourceImage.addEventListener("load", fitImage, { once: true });
|
| 1647 |
+
if (sourceImage.complete) fitImage();
|
| 1648 |
+
sourceImage.addEventListener("error", () => {
|
| 1649 |
+
const stage = sourceImage.closest("[data-image-stage], .proofread-image-stage");
|
| 1650 |
+
if (stage) stage.innerHTML = `<div class="proofread-no-source"><strong>图片无法在线显示</strong><a class="text-btn-sm" href="${sourceDownloadURL(item, STATE.proofreadFile || 0)}">下载原文件</a></div>`;
|
| 1651 |
+
}, { once: true });
|
| 1652 |
+
}
|
| 1653 |
const form = DOM.previewPanel.querySelector("[data-proofread-form]");
|
| 1654 |
const pdfViewer = DOM.previewPanel.querySelector("[data-pdf-viewer]");
|
| 1655 |
if (pdfViewer) renderPDFViewer(pdfViewer);
|
|
|
|
| 2255 |
? 1
|
| 2256 |
: Math.min(4, Math.max(0.25, current + (zoomButton.dataset.imageZoom === "in" ? 0.25 : -0.25)));
|
| 2257 |
image.dataset.imageScale = String(next);
|
| 2258 |
+
const baseWidth = Number(image.dataset.imageBaseWidth) || image.naturalWidth;
|
| 2259 |
+
image.style.maxWidth = "none";
|
| 2260 |
+
image.style.width = `${Math.max(1, baseWidth * next)}px`;
|
| 2261 |
+
image.style.transform = "none";
|
| 2262 |
return;
|
| 2263 |
}
|
| 2264 |
if (event.target.closest("[data-fulltext-apply]")) {
|
static/style.css
CHANGED
|
@@ -626,6 +626,8 @@ ul, li {
|
|
| 626 |
}
|
| 627 |
|
| 628 |
.proofread-image-stage img {
|
|
|
|
|
|
|
| 629 |
max-width: 100%;
|
| 630 |
height: auto;
|
| 631 |
transform-origin: top left;
|
|
|
|
| 626 |
}
|
| 627 |
|
| 628 |
.proofread-image-stage img {
|
| 629 |
+
display: block;
|
| 630 |
+
flex: 0 0 auto;
|
| 631 |
max-width: 100%;
|
| 632 |
height: auto;
|
| 633 |
transform-origin: top left;
|