@zero-library/common 2.4.1 → 2.4.3
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.cjs.js +74 -12
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.mts +11 -7
- package/dist/index.d.ts +11 -7
- package/dist/index.esm.js +74 -12
- package/dist/index.esm.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -1521,7 +1521,7 @@ var RenderMarkdown_default = ({ content = "", searchValue, customComponents, ...
|
|
|
1521
1521
|
}, [content, searchValue]);
|
|
1522
1522
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ns-markdown", children: reactContent });
|
|
1523
1523
|
};
|
|
1524
|
-
var MarkdownPreview_default = ({ fileUrl, searchValue }) => {
|
|
1524
|
+
var MarkdownPreview_default = ({ fileUrl, searchValue, asPlainText }) => {
|
|
1525
1525
|
const [content, setContent] = React.useState("");
|
|
1526
1526
|
const [error, setError] = React.useState("");
|
|
1527
1527
|
const fetchMarkdown = async () => {
|
|
@@ -1529,29 +1529,41 @@ var MarkdownPreview_default = ({ fileUrl, searchValue }) => {
|
|
|
1529
1529
|
if (res.status !== 200) {
|
|
1530
1530
|
throw new Error(`\u8BF7\u6C42\u5931\u8D25\uFF0C\u72B6\u6001\u7801: ${res.status}`);
|
|
1531
1531
|
}
|
|
1532
|
-
const
|
|
1533
|
-
if (!
|
|
1532
|
+
const content2 = await res.text();
|
|
1533
|
+
if (!content2) {
|
|
1534
1534
|
throw new Error("\u8FD4\u56DE\u5185\u5BB9\u4E3A\u7A7A");
|
|
1535
1535
|
}
|
|
1536
|
-
|
|
1536
|
+
return content2;
|
|
1537
1537
|
};
|
|
1538
1538
|
const init = async () => {
|
|
1539
1539
|
setContent("");
|
|
1540
1540
|
setError("");
|
|
1541
1541
|
if (fileUrl) {
|
|
1542
1542
|
try {
|
|
1543
|
-
await fetchMarkdown();
|
|
1544
|
-
|
|
1545
|
-
|
|
1543
|
+
const content2 = await fetchMarkdown();
|
|
1544
|
+
setContent(content2);
|
|
1545
|
+
} catch {
|
|
1546
|
+
setError("\u52A0\u8F7D\u6216\u89E3\u6790\u6587\u4EF6\u5931\u8D25");
|
|
1546
1547
|
}
|
|
1547
1548
|
} else {
|
|
1548
|
-
setError("
|
|
1549
|
+
setError("\u6587\u4EF6\u5730\u5740\u9519\u8BEF");
|
|
1549
1550
|
}
|
|
1550
1551
|
};
|
|
1551
1552
|
React.useEffect(() => {
|
|
1552
1553
|
init();
|
|
1553
1554
|
}, [fileUrl]);
|
|
1554
|
-
|
|
1555
|
+
const wrapInCodeFence = (text) => {
|
|
1556
|
+
const matches = text.match(/`+/g) ?? [];
|
|
1557
|
+
const maxRun = matches.reduce((max, run) => Math.max(max, run.length), 0);
|
|
1558
|
+
const fence = "`".repeat(Math.max(3, maxRun + 1));
|
|
1559
|
+
return `${fence}
|
|
1560
|
+
${text}
|
|
1561
|
+
${fence}`;
|
|
1562
|
+
};
|
|
1563
|
+
const newContent = React.useMemo(() => {
|
|
1564
|
+
return content ? asPlainText ? wrapInCodeFence(content) : content : "";
|
|
1565
|
+
}, [content, asPlainText]);
|
|
1566
|
+
return error ? /* @__PURE__ */ jsxRuntime.jsx(antd.Result, { status: "error", title: error }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "height-full width-full", children: /* @__PURE__ */ jsxRuntime.jsx(RenderMarkdown_default, { content: newContent, searchValue }) });
|
|
1555
1567
|
};
|
|
1556
1568
|
|
|
1557
1569
|
// src/hooks/iframe/iframeRelay.ts
|
|
@@ -2388,6 +2400,8 @@ var FilePreview_default = ({ suffix, fileUrl, pdfParams, password, searchValue,
|
|
|
2388
2400
|
case "MD":
|
|
2389
2401
|
case "MARKDOWN":
|
|
2390
2402
|
return /* @__PURE__ */ jsxRuntime.jsx(MarkdownPreview_default, { fileUrl, searchValue });
|
|
2403
|
+
case "TXT":
|
|
2404
|
+
return /* @__PURE__ */ jsxRuntime.jsx(MarkdownPreview_default, { fileUrl, searchValue, asPlainText: true });
|
|
2391
2405
|
case "DOCX":
|
|
2392
2406
|
return /* @__PURE__ */ jsxRuntime.jsx(DocxPreview_default, { fileUrl });
|
|
2393
2407
|
default:
|
|
@@ -8512,6 +8526,55 @@ var SearchAndReplace = core.Extension.create({
|
|
|
8512
8526
|
}
|
|
8513
8527
|
});
|
|
8514
8528
|
var searchAndReplace_default = SearchAndReplace;
|
|
8529
|
+
var usePageNo = (pageNoConfig) => {
|
|
8530
|
+
const [editor, setEditor] = React.useState(null);
|
|
8531
|
+
const lastScrollToPageNoRef = React.useRef(void 0);
|
|
8532
|
+
const setPageNoEditor = (newEditor) => {
|
|
8533
|
+
setEditor(newEditor);
|
|
8534
|
+
};
|
|
8535
|
+
const onPageChange = useDebounce_default((pageNo = 0) => {
|
|
8536
|
+
lastScrollToPageNoRef.current = pageNo;
|
|
8537
|
+
pageNoConfig?.onScrollPage?.(pageNo);
|
|
8538
|
+
}, 300);
|
|
8539
|
+
React.useEffect(() => {
|
|
8540
|
+
if (!editor) return;
|
|
8541
|
+
if (!pageNoConfig?.enabled) return;
|
|
8542
|
+
const targetPageNo = pageNoConfig?.pageNo;
|
|
8543
|
+
if (isNullOrUnDef(targetPageNo)) return;
|
|
8544
|
+
if (lastScrollToPageNoRef.current === targetPageNo) return;
|
|
8545
|
+
let rafId = 0;
|
|
8546
|
+
const targetPageNoStr = String(targetPageNo);
|
|
8547
|
+
const findTargetPos = () => {
|
|
8548
|
+
let foundPos = null;
|
|
8549
|
+
editor.state.doc.descendants((node, pos) => {
|
|
8550
|
+
if (!isNullOrUnDef(foundPos)) return false;
|
|
8551
|
+
if (node.type.name !== PAGE_NO_KEY) return true;
|
|
8552
|
+
if (String(node.attrs?.[PAGE_NO_TAG]) === targetPageNoStr) {
|
|
8553
|
+
foundPos = pos;
|
|
8554
|
+
return false;
|
|
8555
|
+
}
|
|
8556
|
+
return true;
|
|
8557
|
+
});
|
|
8558
|
+
return foundPos;
|
|
8559
|
+
};
|
|
8560
|
+
let tries = 0;
|
|
8561
|
+
const tryScroll = () => {
|
|
8562
|
+
const foundPos = findTargetPos();
|
|
8563
|
+
if (!isNullOrUnDef(foundPos)) {
|
|
8564
|
+
scrollEditorViewToPosInNextFrame(editor.view, foundPos, { align: "start", behavior: "smooth" });
|
|
8565
|
+
return;
|
|
8566
|
+
}
|
|
8567
|
+
tries += 1;
|
|
8568
|
+
if (tries < 10) rafId = requestAnimationFrame(tryScroll);
|
|
8569
|
+
};
|
|
8570
|
+
rafId = requestAnimationFrame(tryScroll);
|
|
8571
|
+
return () => cancelAnimationFrame(rafId);
|
|
8572
|
+
}, [editor, pageNoConfig?.enabled, pageNoConfig?.pageNo]);
|
|
8573
|
+
return {
|
|
8574
|
+
setPageNoEditor,
|
|
8575
|
+
onPageChange
|
|
8576
|
+
};
|
|
8577
|
+
};
|
|
8515
8578
|
var MarkdownEditor_default = ({
|
|
8516
8579
|
value = ``,
|
|
8517
8580
|
onChange,
|
|
@@ -8528,9 +8591,7 @@ var MarkdownEditor_default = ({
|
|
|
8528
8591
|
}) => {
|
|
8529
8592
|
const isMobile = useIsBreakpoint();
|
|
8530
8593
|
const lastContentRef = React.useRef("");
|
|
8531
|
-
const onPageChange =
|
|
8532
|
-
pageNoConfig?.onScrollPage?.(pageIndex ?? 0);
|
|
8533
|
-
}, 300);
|
|
8594
|
+
const { setPageNoEditor, onPageChange } = usePageNo(pageNoConfig);
|
|
8534
8595
|
const {
|
|
8535
8596
|
setAnnotationEditor,
|
|
8536
8597
|
annotations,
|
|
@@ -8666,6 +8727,7 @@ var MarkdownEditor_default = ({
|
|
|
8666
8727
|
if (!editor) return;
|
|
8667
8728
|
setAnnotationEditor(editor);
|
|
8668
8729
|
setCollectionEditor(editor);
|
|
8730
|
+
setPageNoEditor(editor);
|
|
8669
8731
|
}, [editor]);
|
|
8670
8732
|
React.useEffect(() => {
|
|
8671
8733
|
if (!editor) return;
|