@windrun-huaiin/third-ui 5.14.0 → 5.14.2
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/fuma/mdx/index.js +116 -11
- package/dist/fuma/mdx/index.js.map +1 -1
- package/dist/fuma/mdx/index.mjs +116 -11
- package/dist/fuma/mdx/index.mjs.map +1 -1
- package/dist/fuma/server.js.map +1 -1
- package/dist/fuma/server.mjs.map +1 -1
- package/package.json +1 -1
- package/src/fuma/mdx/mermaid.tsx +106 -11
package/dist/fuma/mdx/index.mjs
CHANGED
|
@@ -2744,19 +2744,22 @@ function Mermaid({ chart, title, watermarkEnabled, watermarkText, enablePreview
|
|
|
2744
2744
|
}, [chart, id, resolvedTheme, watermarkEnabled, watermarkText]);
|
|
2745
2745
|
const clamp = (v, min, max) => Math.min(Math.max(v, min), max);
|
|
2746
2746
|
const resetTransform = useCallback(() => {
|
|
2747
|
-
setScale(
|
|
2747
|
+
setScale(4);
|
|
2748
2748
|
setTranslate({ x: 0, y: 0 });
|
|
2749
2749
|
}, []);
|
|
2750
2750
|
const zoomBy = useCallback((delta) => {
|
|
2751
|
-
setScale((prev) => clamp(prev + delta, 0.25,
|
|
2751
|
+
setScale((prev) => clamp(prev + delta, 0.25, 10));
|
|
2752
2752
|
}, []);
|
|
2753
2753
|
const onWheel = useCallback((e) => {
|
|
2754
2754
|
if (e.metaKey || e.ctrlKey) {
|
|
2755
2755
|
e.preventDefault();
|
|
2756
|
+
e.stopPropagation();
|
|
2756
2757
|
const delta = e.deltaY > 0 ? -0.1 : 0.1;
|
|
2757
|
-
setScale((prev) => clamp(prev + delta, 0.25,
|
|
2758
|
+
setScale((prev) => clamp(prev + delta, 0.25, 10));
|
|
2758
2759
|
} else {
|
|
2759
|
-
|
|
2760
|
+
e.preventDefault();
|
|
2761
|
+
e.stopPropagation();
|
|
2762
|
+
setTranslate((prev) => ({ x: prev.x - e.deltaX, y: prev.y - e.deltaY }));
|
|
2760
2763
|
}
|
|
2761
2764
|
}, []);
|
|
2762
2765
|
const onPointerDown = useCallback((e) => {
|
|
@@ -2775,6 +2778,57 @@ function Mermaid({ chart, title, watermarkEnabled, watermarkText, enablePreview
|
|
|
2775
2778
|
isPanningRef.current = false;
|
|
2776
2779
|
e.currentTarget.releasePointerCapture(e.pointerId);
|
|
2777
2780
|
}, []);
|
|
2781
|
+
useEffect(() => {
|
|
2782
|
+
if (!open) return;
|
|
2783
|
+
resetTransform();
|
|
2784
|
+
const onGlobalWheel = (ev) => {
|
|
2785
|
+
if (ev.ctrlKey || ev.metaKey) {
|
|
2786
|
+
ev.preventDefault();
|
|
2787
|
+
}
|
|
2788
|
+
};
|
|
2789
|
+
const onKeyDown = (ev) => {
|
|
2790
|
+
if (!(ev.ctrlKey || ev.metaKey)) return;
|
|
2791
|
+
const k = ev.key;
|
|
2792
|
+
if (k === "=" || k === "+") {
|
|
2793
|
+
ev.preventDefault();
|
|
2794
|
+
setScale((prev) => clamp(prev + 0.2, 0.25, 10));
|
|
2795
|
+
} else if (k === "-") {
|
|
2796
|
+
ev.preventDefault();
|
|
2797
|
+
setScale((prev) => clamp(prev - 0.2, 0.25, 10));
|
|
2798
|
+
} else if (k === "0") {
|
|
2799
|
+
ev.preventDefault();
|
|
2800
|
+
resetTransform();
|
|
2801
|
+
}
|
|
2802
|
+
};
|
|
2803
|
+
window.addEventListener("wheel", onGlobalWheel, { passive: false, capture: true });
|
|
2804
|
+
window.addEventListener("keydown", onKeyDown, { capture: true });
|
|
2805
|
+
return () => {
|
|
2806
|
+
window.removeEventListener("wheel", onGlobalWheel, true);
|
|
2807
|
+
window.removeEventListener("keydown", onKeyDown, true);
|
|
2808
|
+
};
|
|
2809
|
+
}, [open, resetTransform]);
|
|
2810
|
+
useEffect(() => {
|
|
2811
|
+
if (!open) return;
|
|
2812
|
+
const previousPosition = document.body.style.position;
|
|
2813
|
+
const previousTop = document.body.style.top;
|
|
2814
|
+
const previousLeft = document.body.style.left;
|
|
2815
|
+
const previousRight = document.body.style.right;
|
|
2816
|
+
const previousWidth = document.body.style.width;
|
|
2817
|
+
const scrollY = window.scrollY;
|
|
2818
|
+
document.body.style.position = "fixed";
|
|
2819
|
+
document.body.style.top = `-${scrollY}px`;
|
|
2820
|
+
document.body.style.left = "0";
|
|
2821
|
+
document.body.style.right = "0";
|
|
2822
|
+
document.body.style.width = "100%";
|
|
2823
|
+
return () => {
|
|
2824
|
+
document.body.style.position = previousPosition;
|
|
2825
|
+
document.body.style.top = previousTop;
|
|
2826
|
+
document.body.style.left = previousLeft;
|
|
2827
|
+
document.body.style.right = previousRight;
|
|
2828
|
+
document.body.style.width = previousWidth;
|
|
2829
|
+
window.scrollTo(0, scrollY);
|
|
2830
|
+
};
|
|
2831
|
+
}, [open]);
|
|
2778
2832
|
return /* @__PURE__ */ jsxs10("div", { children: [
|
|
2779
2833
|
/* @__PURE__ */ jsxs10(
|
|
2780
2834
|
"div",
|
|
@@ -2805,10 +2859,24 @@ function Mermaid({ chart, title, watermarkEnabled, watermarkText, enablePreview
|
|
|
2805
2859
|
"aria-label": typeof title === "string" ? title : "Mermaid Preview",
|
|
2806
2860
|
className: "fixed inset-0 z-[9999] flex items-center justify-center",
|
|
2807
2861
|
children: [
|
|
2808
|
-
/* @__PURE__ */ jsx33(
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2862
|
+
/* @__PURE__ */ jsx33(
|
|
2863
|
+
"div",
|
|
2864
|
+
{
|
|
2865
|
+
className: "absolute inset-0 bg-black/60",
|
|
2866
|
+
onClick: () => {
|
|
2867
|
+
setOpen(false);
|
|
2868
|
+
resetTransform();
|
|
2869
|
+
},
|
|
2870
|
+
onWheel: (e) => {
|
|
2871
|
+
e.preventDefault();
|
|
2872
|
+
e.stopPropagation();
|
|
2873
|
+
},
|
|
2874
|
+
onTouchMove: (e) => {
|
|
2875
|
+
e.preventDefault();
|
|
2876
|
+
e.stopPropagation();
|
|
2877
|
+
}
|
|
2878
|
+
}
|
|
2879
|
+
),
|
|
2812
2880
|
/* @__PURE__ */ jsxs10("div", { className: "relative z-[1] max-w-[95vw] w-[95vw] h-[88vh] p-0 bg-white dark:bg-neutral-900 border border-neutral-200 dark:border-neutral-700 rounded-md shadow-2xl overflow-hidden", children: [
|
|
2813
2881
|
/* @__PURE__ */ jsxs10("div", { className: "flex items-center justify-between px-3 py-2 border-b border-neutral-200 dark:border-neutral-700", children: [
|
|
2814
2882
|
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-300", children: [
|
|
@@ -2821,7 +2889,7 @@ function Mermaid({ chart, title, watermarkEnabled, watermarkText, enablePreview
|
|
|
2821
2889
|
{
|
|
2822
2890
|
"aria-label": "Zoom out",
|
|
2823
2891
|
className: "flex h-6 w-6 items-center justify-center rounded border border-neutral-300 dark:border-neutral-600 text-[13px]",
|
|
2824
|
-
onClick: () => zoomBy(-0.
|
|
2892
|
+
onClick: () => zoomBy(-0.5),
|
|
2825
2893
|
children: "\uFF0D"
|
|
2826
2894
|
}
|
|
2827
2895
|
),
|
|
@@ -2834,10 +2902,47 @@ function Mermaid({ chart, title, watermarkEnabled, watermarkText, enablePreview
|
|
|
2834
2902
|
{
|
|
2835
2903
|
"aria-label": "Zoom in",
|
|
2836
2904
|
className: "flex h-6 w-6 items-center justify-center rounded border border-neutral-300 dark:border-neutral-600 text-[13px]",
|
|
2837
|
-
onClick: () => zoomBy(0.
|
|
2905
|
+
onClick: () => zoomBy(0.5),
|
|
2838
2906
|
children: "\uFF0B"
|
|
2839
2907
|
}
|
|
2840
2908
|
),
|
|
2909
|
+
/* @__PURE__ */ jsx33("div", { className: "mx-1 h-4 w-px bg-neutral-300 dark:bg-neutral-700" }),
|
|
2910
|
+
/* @__PURE__ */ jsx33(
|
|
2911
|
+
"button",
|
|
2912
|
+
{
|
|
2913
|
+
"aria-label": "Zoom 100%",
|
|
2914
|
+
className: "inline-flex h-6 min-w-8 items-center justify-center rounded border border-neutral-300 dark:border-neutral-600 px-1.5 text-[12px]",
|
|
2915
|
+
onClick: () => setScale(1),
|
|
2916
|
+
children: "X1"
|
|
2917
|
+
}
|
|
2918
|
+
),
|
|
2919
|
+
/* @__PURE__ */ jsx33(
|
|
2920
|
+
"button",
|
|
2921
|
+
{
|
|
2922
|
+
"aria-label": "Zoom 200%",
|
|
2923
|
+
className: "ml-1 inline-flex h-6 min-w-8 items-center justify-center rounded border border-neutral-300 dark:border-neutral-600 px-1.5 text-[12px]",
|
|
2924
|
+
onClick: () => setScale(2),
|
|
2925
|
+
children: "X2"
|
|
2926
|
+
}
|
|
2927
|
+
),
|
|
2928
|
+
/* @__PURE__ */ jsx33(
|
|
2929
|
+
"button",
|
|
2930
|
+
{
|
|
2931
|
+
"aria-label": "Zoom 300%",
|
|
2932
|
+
className: "ml-1 inline-flex h-6 min-w-8 items-center justify-center rounded border border-neutral-300 dark:border-neutral-600 px-1.5 text-[12px]",
|
|
2933
|
+
onClick: () => setScale(3),
|
|
2934
|
+
children: "X3"
|
|
2935
|
+
}
|
|
2936
|
+
),
|
|
2937
|
+
/* @__PURE__ */ jsx33(
|
|
2938
|
+
"button",
|
|
2939
|
+
{
|
|
2940
|
+
"aria-label": "Zoom 1000%",
|
|
2941
|
+
className: "ml-1 inline-flex h-6 min-w-10 items-center justify-center rounded border border-neutral-300 dark:border-neutral-600 px-1.5 text-[12px]",
|
|
2942
|
+
onClick: () => setScale(10),
|
|
2943
|
+
children: "X10"
|
|
2944
|
+
}
|
|
2945
|
+
),
|
|
2841
2946
|
/* @__PURE__ */ jsx33(
|
|
2842
2947
|
"button",
|
|
2843
2948
|
{
|
|
@@ -2864,7 +2969,7 @@ function Mermaid({ chart, title, watermarkEnabled, watermarkText, enablePreview
|
|
|
2864
2969
|
/* @__PURE__ */ jsxs10(
|
|
2865
2970
|
"div",
|
|
2866
2971
|
{
|
|
2867
|
-
className: "relative h-[calc(88vh-40px)] w-full overflow-hidden bg-white dark:bg-neutral-900",
|
|
2972
|
+
className: "relative h-[calc(88vh-40px)] w-full overflow-hidden bg-white dark:bg-neutral-900 touch-none overscroll-contain",
|
|
2868
2973
|
onWheel,
|
|
2869
2974
|
onPointerDown,
|
|
2870
2975
|
onPointerMove,
|