zmdms-webui 0.0.181 → 1.0.0
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/es/print/print.js +1 -1
- package/dist/es/watermark/index.css +1 -1
- package/dist/es/watermark/utils.js +29 -21
- package/dist/es/watermark/watermark-shadow.js +116 -0
- package/dist/es/watermark/watermark.js +8 -12
- package/dist/index.dark.css +1 -1
- package/dist/index.default.css +1 -1
- package/package.json +1 -1
package/dist/es/print/print.js
CHANGED
|
@@ -27,7 +27,7 @@ var Print = function (props, ref) {
|
|
|
27
27
|
"ztxk-print--water": headerProps.isWaterBtn,
|
|
28
28
|
});
|
|
29
29
|
var _d = useState(false), spinning = _d[0], setSpinning = _d[1];
|
|
30
|
-
return (jsx(Spin, __assign({ spinning: spinning || outSpinning }, { children: jsxs("div", __assign({ className: classes }, { children: [jsx(PrintHeader, __assign({ setSpinning: setSpinning, waterVisible: waterVisible, setWaterVisible: setWaterVisible }, headerProps)), jsx(WatermarkCom, __assign({ className: "ztxk-print--content", visible: waterVisible,
|
|
30
|
+
return (jsx(Spin, __assign({ spinning: spinning || outSpinning }, { children: jsxs("div", __assign({ className: classes }, { children: [jsx(PrintHeader, __assign({ setSpinning: setSpinning, waterVisible: waterVisible, setWaterVisible: setWaterVisible }, headerProps)), jsx(WatermarkCom, __assign({ className: "ztxk-print--content", visible: waterVisible, isShadow: true }, waterConfig, { children: jsx("div", __assign({ className: "ztxk-print--main" }, { children: children })) }))] })) })));
|
|
31
31
|
};
|
|
32
32
|
var PrintCom = memo(forwardRef(Print));
|
|
33
33
|
PrintCom.displayName = "ZTXK_WEBUI_Print";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ztxk-watermark.ztxk-watermark--hidden>.ztxk-watermark--div{display:none}
|
|
1
|
+
.ztxk-watermark.ztxk-watermark--hidden>.ztxk-watermark--div{display:none}
|
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import { __assign } from '../_virtual/_tslib.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var
|
|
3
|
+
function createWatermark(watermarkText, options, container) {
|
|
4
|
+
var width = options.width, height = options.height, rotate = options.rotate;
|
|
5
|
+
var watermarkWidth = width * 2;
|
|
6
|
+
var watermarkHeight = height * 2;
|
|
7
|
+
// 计算旋转后水印的占用空间
|
|
8
|
+
var radians = (Math.abs(rotate) * Math.PI) / 180;
|
|
9
|
+
var sin = Math.sin(radians);
|
|
10
|
+
var cos = Math.cos(radians);
|
|
11
|
+
var rotatedWidth = cos * watermarkWidth + sin * watermarkHeight;
|
|
12
|
+
var rotatedHeight = sin * watermarkWidth + cos * watermarkHeight;
|
|
13
|
+
// 计算容器可以容纳多少行和列的水印
|
|
14
|
+
var containerWidth = Math.max(container.offsetWidth || 1200, document.body.clientWidth);
|
|
15
|
+
var containerHeight = Math.max(container.offsetHeight || 1200, document.body.clientHeight);
|
|
16
|
+
var cols = Math.ceil(containerWidth / rotatedWidth);
|
|
17
|
+
var rows = Math.ceil(containerHeight / rotatedHeight);
|
|
15
18
|
// 创建一个水印元素
|
|
16
19
|
var fragment = document.createDocumentFragment();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
// 循环创建和定位水印元素
|
|
21
|
+
for (var row = 0; row < rows; row++) {
|
|
22
|
+
for (var col = 0; col < cols; col++) {
|
|
23
|
+
// 克隆水印元素
|
|
24
|
+
var watermark = createWatermarkItem(watermarkText, __assign({}, options));
|
|
25
|
+
// 设置绝对定位
|
|
26
|
+
watermark.style.left = "".concat(col * rotatedWidth, "px");
|
|
27
|
+
watermark.style.top = "".concat(row * rotatedHeight, "px");
|
|
28
|
+
// 将克隆的水印添加到容器中
|
|
29
|
+
fragment.appendChild(watermark);
|
|
30
|
+
}
|
|
20
31
|
}
|
|
21
|
-
|
|
22
|
-
shadowRoot.appendChild(fragment);
|
|
23
|
-
// 将水印容器添加到文档的 body 中
|
|
24
|
-
document.body.appendChild(watermarkDiv);
|
|
32
|
+
return fragment;
|
|
25
33
|
}
|
|
26
34
|
function createWatermarkItem(watermarkText, options) {
|
|
27
35
|
// 创建一个水印元素
|
|
@@ -37,8 +45,8 @@ function createWatermarkItem(watermarkText, options) {
|
|
|
37
45
|
watermark.style.position = "absolute";
|
|
38
46
|
watermark.style.top = "".concat(top || 50, "px");
|
|
39
47
|
watermark.style.left = "".concat(left || 50, "px");
|
|
40
|
-
watermark.style.width = "".concat(width || 200, "px");
|
|
41
|
-
watermark.style.height = "".concat(height || 200, "px");
|
|
48
|
+
watermark.style.width = "".concat((width || 200) * 2, "px");
|
|
49
|
+
watermark.style.height = "".concat((height || 200) * 2, "px");
|
|
42
50
|
watermark.style.color = (font === null || font === void 0 ? void 0 : font.color) || "rgba(0, 0, 0, 0.2)";
|
|
43
51
|
watermark.style.fontFamily = (font === null || font === void 0 ? void 0 : font.fontFamily) || "微软雅黑";
|
|
44
52
|
watermark.style.fontSize = "".concat((font === null || font === void 0 ? void 0 : font.fontSize) || 14, "px");
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { memo, forwardRef, useRef, useMemo, useEffect, useImperativeHandle } from 'react';
|
|
3
|
+
import { createWatermark } from './utils.js';
|
|
4
|
+
import { useMemoizedFn, useMount } from 'ahooks';
|
|
5
|
+
|
|
6
|
+
var WatermarkShadow = function (props, ref) {
|
|
7
|
+
var zIndex = props.zIndex, isMutationObserver = props.isMutationObserver, content = props.content, font = props.font, rotate = props.rotate, width = props.width, height = props.height, containerDomRef = props.containerDomRef;
|
|
8
|
+
var waterDomRef = useRef(null);
|
|
9
|
+
var shadowRootRef = useRef();
|
|
10
|
+
var createWaterMemo = useMemoizedFn(function () {
|
|
11
|
+
if (!content) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
var watermarkFragment = createWatermark(content, {
|
|
15
|
+
font: font,
|
|
16
|
+
rotate: rotate,
|
|
17
|
+
width: width,
|
|
18
|
+
height: height,
|
|
19
|
+
}, containerDomRef === null || containerDomRef === void 0 ? void 0 : containerDomRef.current);
|
|
20
|
+
if (shadowRootRef.current) {
|
|
21
|
+
while (shadowRootRef.current.firstChild) {
|
|
22
|
+
shadowRootRef.current.removeChild(shadowRootRef.current.firstChild);
|
|
23
|
+
}
|
|
24
|
+
shadowRootRef.current.appendChild(watermarkFragment);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// 初始化一个监听器
|
|
28
|
+
var observerMemo = useMemo(function () {
|
|
29
|
+
// 配置观察器的选项
|
|
30
|
+
var config = { childList: true, attributes: true, subtree: true };
|
|
31
|
+
// 创建一个回调函数来处理观察到的变化
|
|
32
|
+
var callback = function (mutationsList) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
console.log("触发子级", mutationsList);
|
|
35
|
+
// 先解除监听
|
|
36
|
+
(_a = observer === null || observer === void 0 ? void 0 : observer.disconnect) === null || _a === void 0 ? void 0 : _a.call(observer);
|
|
37
|
+
createWaterMemo();
|
|
38
|
+
// 等元素挂载后再开始监听
|
|
39
|
+
(_b = observer === null || observer === void 0 ? void 0 : observer.observe) === null || _b === void 0 ? void 0 : _b.call(observer, shadowRootRef.current, config);
|
|
40
|
+
};
|
|
41
|
+
// 创建一个 MutationObserver 实例并传入回调函数
|
|
42
|
+
var observer = new MutationObserver(callback);
|
|
43
|
+
return {
|
|
44
|
+
observer: observer,
|
|
45
|
+
config: config,
|
|
46
|
+
};
|
|
47
|
+
}, [createWaterMemo]);
|
|
48
|
+
// 初始化创建shadow节点
|
|
49
|
+
useMount(function () {
|
|
50
|
+
if (waterDomRef.current) {
|
|
51
|
+
var shadowRoot = waterDomRef.current.attachShadow({
|
|
52
|
+
mode: "open",
|
|
53
|
+
});
|
|
54
|
+
shadowRootRef.current = shadowRoot;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
useEffect(function () {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
if (!content) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
var watermarkFragment = createWatermark(content, {
|
|
63
|
+
font: font,
|
|
64
|
+
rotate: rotate,
|
|
65
|
+
width: width,
|
|
66
|
+
height: height,
|
|
67
|
+
}, containerDomRef === null || containerDomRef === void 0 ? void 0 : containerDomRef.current);
|
|
68
|
+
if (shadowRootRef.current) {
|
|
69
|
+
while (shadowRootRef.current.firstChild) {
|
|
70
|
+
shadowRootRef.current.removeChild(shadowRootRef.current.firstChild);
|
|
71
|
+
}
|
|
72
|
+
shadowRootRef.current.appendChild(watermarkFragment);
|
|
73
|
+
// 是否监听?
|
|
74
|
+
if (isMutationObserver) {
|
|
75
|
+
(_b = (_a = observerMemo.observer) === null || _a === void 0 ? void 0 : _a.observe) === null || _b === void 0 ? void 0 : _b.call(_a, shadowRootRef.current, observerMemo.config);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return function () {
|
|
79
|
+
var _a, _b;
|
|
80
|
+
(_b = (_a = observerMemo.observer) === null || _a === void 0 ? void 0 : _a.disconnect) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
81
|
+
};
|
|
82
|
+
}, [
|
|
83
|
+
content,
|
|
84
|
+
font,
|
|
85
|
+
height,
|
|
86
|
+
rotate,
|
|
87
|
+
width,
|
|
88
|
+
observerMemo,
|
|
89
|
+
isMutationObserver,
|
|
90
|
+
containerDomRef,
|
|
91
|
+
]);
|
|
92
|
+
useImperativeHandle(ref, function () {
|
|
93
|
+
return {
|
|
94
|
+
getWaterDomRef: function () { return waterDomRef.current; },
|
|
95
|
+
toggleVisible: function () {
|
|
96
|
+
if (waterDomRef.current) {
|
|
97
|
+
waterDomRef.current.style.visibility = "hidden";
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
return (jsx("div", { ref: waterDomRef, className: "ztxk-watermark--div", style: {
|
|
103
|
+
zIndex: zIndex,
|
|
104
|
+
position: "absolute",
|
|
105
|
+
visibility: "visible",
|
|
106
|
+
overflow: "hidden",
|
|
107
|
+
left: 0,
|
|
108
|
+
top: 0,
|
|
109
|
+
width: "100%",
|
|
110
|
+
height: "100%",
|
|
111
|
+
pointerEvents: "none",
|
|
112
|
+
} }));
|
|
113
|
+
};
|
|
114
|
+
var WatermarkShadow$1 = memo(forwardRef(WatermarkShadow));
|
|
115
|
+
|
|
116
|
+
export { WatermarkShadow$1 as default };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __rest, __assign } from '../_virtual/_tslib.js';
|
|
2
|
-
import {
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { memo, useRef, useMemo, useEffect } from 'react';
|
|
4
4
|
import classNames from '../node_modules/classnames/index.js';
|
|
5
5
|
import WatermarkDiv from './watermark-div.js';
|
|
6
|
+
import WatermarkShadow from './watermark-shadow.js';
|
|
6
7
|
import { mergeWaterConfig, createWater } from 'zmdms-utils';
|
|
7
8
|
import { useMutationObserver } from 'ahooks';
|
|
8
|
-
import { createWatermark } from './utils.js';
|
|
9
9
|
|
|
10
10
|
var reRendering = function (mutation, isWatermarkEle) {
|
|
11
11
|
var flag = false;
|
|
@@ -52,15 +52,17 @@ var Watermark = function (props) {
|
|
|
52
52
|
};
|
|
53
53
|
}, [content, font, height, image, rotate, width, lineSpacing]);
|
|
54
54
|
useMutationObserver(function (mutationsList) {
|
|
55
|
-
if (!isMutationObserver || isAppendBody
|
|
55
|
+
if (!isMutationObserver || isAppendBody) {
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
console.log("触发父级", mutationsList);
|
|
59
59
|
mutationsList.forEach(function (mutation) {
|
|
60
|
+
var _a, _b;
|
|
60
61
|
if (reRendering(mutation, function (node) {
|
|
61
|
-
|
|
62
|
+
var _a, _b;
|
|
63
|
+
return node === ((_b = (_a = waterDomChildHandleRef.current) === null || _a === void 0 ? void 0 : _a.getWaterDomRef) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
62
64
|
})) {
|
|
63
|
-
waterDomRef.current.appendChild(waterDomChildHandleRef.current.getWaterDomRef());
|
|
65
|
+
waterDomRef.current.appendChild((_b = (_a = waterDomChildHandleRef.current) === null || _a === void 0 ? void 0 : _a.getWaterDomRef) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
64
66
|
}
|
|
65
67
|
});
|
|
66
68
|
}, waterDomRef, {
|
|
@@ -77,14 +79,8 @@ var Watermark = function (props) {
|
|
|
77
79
|
document.body.style.background = "";
|
|
78
80
|
}
|
|
79
81
|
}, [isAppendBody, visible, config.image]);
|
|
80
|
-
useEffect(function () {
|
|
81
|
-
if (!isShadow) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
createWatermark(content, { font: font, rotate: rotate, width: width, height: height });
|
|
85
|
-
}, [content, font, height, isShadow, rotate, width]);
|
|
86
82
|
if (isShadow) {
|
|
87
|
-
return (
|
|
83
|
+
return (jsxs("div", __assign({ className: classes, style: { position: "relative" }, ref: waterDomRef }, { children: [children, jsx(WatermarkShadow, { ref: waterDomChildHandleRef, isMutationObserver: isMutationObserver, content: content, font: font, rotate: rotate, width: width, height: height, containerDomRef: waterDomRef, zIndex: zIndex })] })));
|
|
88
84
|
}
|
|
89
85
|
return isAppendBody ? (jsx("div", __assign({ className: classes, style: { position: "relative" }, ref: waterDomRef }, { children: children }))) : (jsxs("div", __assign({ className: classes, style: { position: "relative" }, ref: waterDomRef }, { children: [children, jsx(WatermarkDiv, { ref: waterDomChildHandleRef, isMutationObserver: isMutationObserver, isAppendBody: isAppendBody, zIndex: zIndex, image: config.image })] })));
|
|
90
86
|
};
|