@qy_better_lib/hooks 0.0.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.
Files changed (52) hide show
  1. package/dist/@qy_better_lib/hooks.min.js +1 -0
  2. package/lib/index.d.ts +6 -0
  3. package/lib/index.js +24 -0
  4. package/lib/use-emit/index.d.ts +14 -0
  5. package/lib/use-file/index.d.ts +12 -0
  6. package/lib/use-image/canvastoDataURL.d.ts +12 -0
  7. package/lib/use-image/canvastoDataURL.js +7 -0
  8. package/lib/use-image/canvastoFile.d.ts +12 -0
  9. package/lib/use-image/canvastoFile.js +9 -0
  10. package/lib/use-image/dataURLtoFile.d.ts +11 -0
  11. package/lib/use-image/dataURLtoFile.js +17 -0
  12. package/lib/use-image/dataURLtoImage.d.ts +7 -0
  13. package/lib/use-image/dataURLtoImage.js +9 -0
  14. package/lib/use-image/downloadFile.d.ts +7 -0
  15. package/lib/use-image/downloadFile.js +9 -0
  16. package/lib/use-image/filetoDataURL.d.ts +7 -0
  17. package/lib/use-image/filetoDataURL.js +12 -0
  18. package/lib/use-image/imagetoCanvas.d.ts +27 -0
  19. package/lib/use-image/imagetoCanvas.js +41 -0
  20. package/lib/use-image/index.d.ts +55 -0
  21. package/lib/use-image/index.js +74 -0
  22. package/lib/use-image/type.d.ts +25 -0
  23. package/lib/use-image/type.js +8 -0
  24. package/lib/use-image/urltoBlob.d.ts +8 -0
  25. package/lib/use-image/urltoBlob.js +6 -0
  26. package/lib/use-image/urltoImage.d.ts +7 -0
  27. package/lib/use-image/urltoImage.js +13 -0
  28. package/lib/use-print/index.d.ts +11 -0
  29. package/lib/use-waterMark/index.d.ts +17 -0
  30. package/lib/use-websocket/index.d.ts +15 -0
  31. package/package.json +50 -0
  32. package/src/index.ts +6 -0
  33. package/src/use-emit/index.ts +46 -0
  34. package/src/use-file/index.ts +39 -0
  35. package/src/use-image/canvastoDataURL.ts +21 -0
  36. package/src/use-image/canvastoFile.ts +20 -0
  37. package/src/use-image/dataURLtoFile.ts +29 -0
  38. package/src/use-image/dataURLtoImage.ts +17 -0
  39. package/src/use-image/downloadFile.ts +16 -0
  40. package/src/use-image/filetoDataURL.ts +13 -0
  41. package/src/use-image/imagetoCanvas.ts +107 -0
  42. package/src/use-image/index.ts +200 -0
  43. package/src/use-image/type.ts +31 -0
  44. package/src/use-image/urltoBlob.ts +10 -0
  45. package/src/use-image/urltoImage.ts +19 -0
  46. package/src/use-print/index.ts +128 -0
  47. package/src/use-waterMark/index.ts +101 -0
  48. package/src/use-websocket/index.ts +117 -0
  49. package/tsconfig.json +5 -0
  50. package/types/index.d.ts +1 -0
  51. package/types/json.d.ts +4 -0
  52. package/types/vue.shim.d.ts +5 -0
@@ -0,0 +1,101 @@
1
+ type UseWaterMark = {
2
+ /**
3
+ * 创建水印
4
+ */
5
+ createWaterMark: (
6
+ warper: string | null,
7
+ str1: string,
8
+ str2?: string,
9
+ textColor?: string
10
+ ) => void;
11
+ /**
12
+ * 移除水印
13
+ */
14
+ removeWatermark: () => void;
15
+ };
16
+ /**
17
+ * ==============================================
18
+ * 水印功能
19
+ * ==============================================
20
+ */
21
+ export default function useWaterMark(): UseWaterMark {
22
+ const id: string = "A77B030B-E33D-C656-7642-56D6FEA46059";
23
+
24
+ /**
25
+ * 添加水印方法
26
+ * @param warper 绘制容器DOM
27
+ * @param str1 主标题
28
+ * @param str2 副标题
29
+ * @param textColor 文字颜色
30
+ */
31
+ function createWaterMark(
32
+ warper: string | null = null,
33
+ str1: string,
34
+ str2?: string,
35
+ textColor?: string
36
+ ): void {
37
+ let id: string = setWatermark(warper, str1, str2, textColor);
38
+ if (document.getElementById(id) === null) {
39
+ id = setWatermark(warper, str1, str2);
40
+ }
41
+ }
42
+
43
+ /**
44
+ * 移除水印
45
+ */
46
+ function removeWatermark(): void {
47
+ const element: HTMLElement | null = document.getElementById(id);
48
+ element?.remove();
49
+ }
50
+
51
+ function setWatermark(
52
+ warper: string | null = null,
53
+ str1: string,
54
+ str2?: string,
55
+ textColor: string = "#999"
56
+ ) {
57
+ const warperElement: Element | null =
58
+ warper != null ? document.querySelector(warper) : document.body;
59
+ const element: HTMLElement | null = document.getElementById(id);
60
+ if (element !== null) {
61
+ warperElement?.removeChild(element);
62
+ }
63
+
64
+ let canvas: HTMLCanvasElement | null = document.createElement("canvas");
65
+ // 设置canvas画布大小
66
+ canvas.width = 250;
67
+ canvas.height = 150;
68
+
69
+ let cans: CanvasRenderingContext2D | null = canvas.getContext("2d");
70
+ if (cans) {
71
+ cans.font = "16px Avenir,Helvetica,Arial,sans-serif";
72
+ cans.fillStyle = textColor.replace(/\,\s(1|(0.\d+)\))/, ", 0.1"); //设置水印的颜色
73
+ cans.textAlign = "left";
74
+ cans.textBaseline = "middle";
75
+ cans.rotate((-15 * Math.PI) / 180); // 水印旋转角度
76
+ cans?.fillText(str1, 0, canvas.height); // 水印在画布的位置x,y轴
77
+ str2 &&
78
+ cans?.fillText(str2, cans.measureText(str1).width + 16, canvas.height);
79
+ }
80
+
81
+ let div: HTMLDivElement | null = document.createElement("div");
82
+ div.id = id;
83
+ div.style.pointerEvents = "none";
84
+ div.style.top = "0px";
85
+ div.style.left = "0px";
86
+ div.style.position = "fixed";
87
+ div.style.zIndex = "100000";
88
+ const { clientWidth, clientHeight } = document.documentElement;
89
+ div.style.width = clientWidth + "px";
90
+ div.style.height = clientHeight + "px";
91
+ div.style.background =
92
+ "url(" + canvas.toDataURL("image/png") + ") left top repeat";
93
+ warperElement?.appendChild(div);
94
+ return id;
95
+ }
96
+
97
+ return {
98
+ createWaterMark,
99
+ removeWatermark,
100
+ };
101
+ }
@@ -0,0 +1,117 @@
1
+ export type WebSocketOption = {
2
+ /**服务端地址 */
3
+ server: string;
4
+ /**消息接收处理方法 */
5
+ receive: (res: any) => void;
6
+ };
7
+
8
+ /**
9
+ * WebSocket
10
+ */
11
+ export default function useWebSocket(option: WebSocketOption) {
12
+ /**重连次数 */
13
+ let count = 0;
14
+ /**是否能重连 */
15
+ let lockReconnect = false;
16
+ // const text1 = "您有新的订单,请及时处理!";
17
+ /**WebSocket对象 */
18
+ let ws: WebSocket | undefined = undefined;
19
+
20
+ let reconnectTimer: any;
21
+
22
+ const { server, receive } = option;
23
+
24
+ /**浏览器关闭 */
25
+ window.onbeforeunload = () => {
26
+ ws?.close();
27
+ };
28
+
29
+ /**创建连接 */
30
+ function create() {
31
+ try {
32
+ ws = new WebSocket(server);
33
+ // 连接建立时触发
34
+ initEventHandle();
35
+ } catch (e) {
36
+ console.log("连接建立异常", e);
37
+ }
38
+ }
39
+
40
+ /**重连 */
41
+ function reconnect() {
42
+ // 多次重连失败,关闭
43
+ if (count >= 5) {
44
+ ws?.close();
45
+ return;
46
+ }
47
+ if (lockReconnect) return false;
48
+ lockReconnect = true;
49
+ reconnectTimer = setTimeout(function () {
50
+ create();
51
+ lockReconnect = false;
52
+ count++;
53
+ reconnectTimer && clearTimeout(reconnectTimer);
54
+ }, 5000);
55
+ }
56
+
57
+ /**
58
+ * ws事件
59
+ */
60
+ function initEventHandle() {
61
+ if (!ws) return;
62
+ // 连接报错
63
+ ws.onerror = (e) => {
64
+ console.log("连接错误", e);
65
+ reconnect();
66
+ };
67
+ // 连接关闭
68
+ ws.onclose = () => {
69
+ console.log("连接关闭 - " + new Date().toLocaleTimeString());
70
+ reconnect();
71
+ };
72
+ // 链接成功
73
+ ws.onopen = () => {
74
+ // 心跳检测重置
75
+ // heartReset();
76
+ // heartStart();
77
+ // 重置重连次数
78
+ count = 0;
79
+ console.log("连接成功");
80
+ };
81
+ // 接收消息
82
+ ws.onmessage = (e) => {
83
+ // 如果获取到消息,心跳检测重置
84
+ // heartReset();
85
+ // heartStart();
86
+ // 处理消息
87
+ try {
88
+ // 接收消息给调用者处理
89
+ receive(e);
90
+ } catch {
91
+ console.log("message:" + e.data);
92
+ }
93
+ };
94
+ }
95
+
96
+ /**
97
+ * 发送消息
98
+ * @param msg 发送的消息
99
+ */
100
+ function sendMessage(msg: any) {
101
+ if (ws?.readyState === WebSocket.OPEN) {
102
+ ws?.send(msg);
103
+ }
104
+ }
105
+
106
+ /**关闭ws */
107
+ function socketClose() {
108
+ ws?.close();
109
+ }
110
+
111
+ return {
112
+ ws,
113
+ create,
114
+ socketClose,
115
+ sendMessage,
116
+ };
117
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "compilerOptions": {},
3
+ "extends": "../../tsconfig.json",
4
+ "include": ["./src/**/*.ts"]
5
+ }
@@ -0,0 +1 @@
1
+ declare type $TODO = any
@@ -0,0 +1,4 @@
1
+ declare module "*.json" {
2
+ const value: any;
3
+ export default value;
4
+ }
@@ -0,0 +1,5 @@
1
+ declare module '*.vue' {
2
+ import { ComponentOptions } from 'vue'
3
+ const Component: ComponentOptions
4
+ export default Component
5
+ }