@trafica/editor 1.0.25 → 1.0.27
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.js +42 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +42 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1683,7 +1683,7 @@ function serializeBlock(node, idCounts = /* @__PURE__ */ new Map()) {
|
|
|
1683
1683
|
return "<hr />";
|
|
1684
1684
|
case "table": {
|
|
1685
1685
|
const rows = node.children.map((c) => serializeBlock(c)).join("");
|
|
1686
|
-
return `<table><tbody>${rows}</tbody></table>`;
|
|
1686
|
+
return `<div style="overflow-x:auto;margin:0.75em 0;"><table style="border-collapse:collapse;table-layout:fixed;width:100%;font-size:inherit;font-family:inherit;"><tbody>${rows}</tbody></table></div>`;
|
|
1687
1687
|
}
|
|
1688
1688
|
case "table_row": {
|
|
1689
1689
|
const cells = node.children.map((c) => serializeBlock(c)).join("");
|
|
@@ -1693,13 +1693,13 @@ function serializeBlock(node, idCounts = /* @__PURE__ */ new Map()) {
|
|
|
1693
1693
|
if ((_p = node.attrs) == null ? void 0 : _p.covered) return "";
|
|
1694
1694
|
const cs = ((_q = node.attrs) == null ? void 0 : _q.colspan) > 1 ? ` colspan="${(_r = node.attrs) == null ? void 0 : _r.colspan}"` : "";
|
|
1695
1695
|
const rs = ((_s = node.attrs) == null ? void 0 : _s.rowspan) > 1 ? ` rowspan="${(_t = node.attrs) == null ? void 0 : _t.rowspan}"` : "";
|
|
1696
|
-
return `<td${cs}${rs}>${serializeChildren(node.children)}</td>`;
|
|
1696
|
+
return `<td${cs}${rs} style="border:1px solid #d1d5db;padding:0.5em 0.75em;vertical-align:top;min-width:40px;word-break:break-word;">${serializeChildren(node.children)}</td>`;
|
|
1697
1697
|
}
|
|
1698
1698
|
case "table_header": {
|
|
1699
1699
|
if ((_u = node.attrs) == null ? void 0 : _u.covered) return "";
|
|
1700
1700
|
const cs = ((_v = node.attrs) == null ? void 0 : _v.colspan) > 1 ? ` colspan="${(_w = node.attrs) == null ? void 0 : _w.colspan}"` : "";
|
|
1701
1701
|
const rs = ((_x = node.attrs) == null ? void 0 : _x.rowspan) > 1 ? ` rowspan="${(_y = node.attrs) == null ? void 0 : _y.rowspan}"` : "";
|
|
1702
|
-
return `<th${cs}${rs}>${serializeChildren(node.children)}</th>`;
|
|
1702
|
+
return `<th${cs}${rs} style="border:1px solid #d1d5db;padding:0.5em 0.75em;vertical-align:top;min-width:40px;word-break:break-word;background:#f9fafb;font-weight:600;text-align:left;">${serializeChildren(node.children)}</th>`;
|
|
1703
1703
|
}
|
|
1704
1704
|
default:
|
|
1705
1705
|
return `<p>${serializeChildren(node.children)}</p>`;
|
|
@@ -7828,6 +7828,43 @@ function EditorCore({
|
|
|
7828
7828
|
}) {
|
|
7829
7829
|
const containerRef = useRef(null);
|
|
7830
7830
|
const isRenderingRef = useRef(false);
|
|
7831
|
+
const scrollCaretIntoView = useCallback(() => {
|
|
7832
|
+
var _a, _b;
|
|
7833
|
+
const sel = window.getSelection();
|
|
7834
|
+
if (!sel || sel.rangeCount === 0) return;
|
|
7835
|
+
const range = sel.getRangeAt(0).cloneRange();
|
|
7836
|
+
range.collapse(true);
|
|
7837
|
+
const caretRect = range.getBoundingClientRect();
|
|
7838
|
+
let rect = caretRect;
|
|
7839
|
+
if (!rect || rect.top === 0 && rect.bottom === 0 && rect.left === 0) {
|
|
7840
|
+
const node = range.startContainer;
|
|
7841
|
+
const el = node.nodeType === Node.ELEMENT_NODE ? node : node.parentElement;
|
|
7842
|
+
if (el) rect = el.getBoundingClientRect();
|
|
7843
|
+
}
|
|
7844
|
+
if (!rect || rect.bottom === 0) return;
|
|
7845
|
+
let scrollEl = (_b = (_a = containerRef.current) == null ? void 0 : _a.parentElement) != null ? _b : null;
|
|
7846
|
+
while (scrollEl) {
|
|
7847
|
+
const style = window.getComputedStyle(scrollEl);
|
|
7848
|
+
const overflow = style.overflow + style.overflowY;
|
|
7849
|
+
if (/auto|scroll/.test(overflow)) break;
|
|
7850
|
+
scrollEl = scrollEl.parentElement;
|
|
7851
|
+
}
|
|
7852
|
+
const PADDING = 24;
|
|
7853
|
+
if (scrollEl) {
|
|
7854
|
+
const containerRect = scrollEl.getBoundingClientRect();
|
|
7855
|
+
if (rect.bottom > containerRect.bottom - PADDING) {
|
|
7856
|
+
scrollEl.scrollBy({ top: rect.bottom - containerRect.bottom + PADDING, behavior: "smooth" });
|
|
7857
|
+
} else if (rect.top < containerRect.top + PADDING) {
|
|
7858
|
+
scrollEl.scrollBy({ top: rect.top - containerRect.top - PADDING, behavior: "smooth" });
|
|
7859
|
+
}
|
|
7860
|
+
} else {
|
|
7861
|
+
if (rect.bottom > window.innerHeight - PADDING) {
|
|
7862
|
+
window.scrollBy({ top: rect.bottom - window.innerHeight + PADDING, behavior: "smooth" });
|
|
7863
|
+
} else if (rect.top < PADDING) {
|
|
7864
|
+
window.scrollBy({ top: rect.top - PADDING, behavior: "smooth" });
|
|
7865
|
+
}
|
|
7866
|
+
}
|
|
7867
|
+
}, []);
|
|
7831
7868
|
const isComposingRef = useRef(false);
|
|
7832
7869
|
const stateRef = useRef(engine.getState());
|
|
7833
7870
|
const [selectedImagePath, setSelectedImagePath] = useState(null);
|
|
@@ -7890,6 +7927,7 @@ function EditorCore({
|
|
|
7890
7927
|
}
|
|
7891
7928
|
if (state.selection) {
|
|
7892
7929
|
restoreSelection(container, state.selection);
|
|
7930
|
+
scrollCaretIntoView();
|
|
7893
7931
|
}
|
|
7894
7932
|
isRenderingRef.current = false;
|
|
7895
7933
|
if (onHTMLChange) {
|
|
@@ -7903,6 +7941,7 @@ function EditorCore({
|
|
|
7903
7941
|
const container = containerRef.current;
|
|
7904
7942
|
if (!container || !state.selection) return;
|
|
7905
7943
|
restoreSelection(container, state.selection);
|
|
7944
|
+
scrollCaretIntoView();
|
|
7906
7945
|
}, [state.selection]);
|
|
7907
7946
|
useEffect(() => {
|
|
7908
7947
|
const container = containerRef.current;
|