@zuzjs/ui 0.8.0 → 0.8.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 (193) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/comps/Accordion/index.js +1 -1
  3. package/dist/cjs/comps/Actionbar/index.js +1 -1
  4. package/dist/cjs/comps/Alert/index.js +1 -1
  5. package/dist/cjs/comps/AutoComplete/index.d.ts +1 -1
  6. package/dist/cjs/comps/AutoComplete/index.js +3 -2
  7. package/dist/cjs/comps/Avatar/index.js +5 -5
  8. package/dist/cjs/comps/Box/index.js +1 -1
  9. package/dist/cjs/comps/Button/index.js +1 -1
  10. package/dist/cjs/comps/CheckBox/index.d.ts +1 -0
  11. package/dist/cjs/comps/CheckBox/index.js +1 -1
  12. package/dist/cjs/comps/CheckBox/types.d.ts +1 -0
  13. package/dist/cjs/comps/ColorScheme/index.js +1 -1
  14. package/dist/cjs/comps/ContextMenu/index.d.ts +2 -0
  15. package/dist/cjs/comps/ContextMenu/index.js +6 -6
  16. package/dist/cjs/comps/ContextMenu/item.js +1 -1
  17. package/dist/cjs/comps/ContextMenu/types.d.ts +3 -1
  18. package/dist/cjs/comps/CookiesConsent/index.js +1 -1
  19. package/dist/cjs/comps/Cover/index.js +1 -1
  20. package/dist/cjs/comps/Cropper/index.d.ts +8 -0
  21. package/dist/cjs/comps/Cropper/index.js +20 -0
  22. package/dist/cjs/comps/Cropper/types.d.ts +14 -0
  23. package/dist/cjs/comps/Cropper/types.js +5 -0
  24. package/dist/cjs/comps/Crumb/index.d.ts +1 -0
  25. package/dist/cjs/comps/Crumb/index.js +13 -3
  26. package/dist/cjs/comps/Crumb/types.d.ts +1 -0
  27. package/dist/cjs/comps/Drawer/index.js +1 -1
  28. package/dist/cjs/comps/Fab/index.js +1 -1
  29. package/dist/cjs/comps/Filters/index.js +1 -1
  30. package/dist/cjs/comps/Form/index.js +22 -6
  31. package/dist/cjs/comps/Icon/index.js +1 -1
  32. package/dist/cjs/comps/Image/index.js +1 -1
  33. package/dist/cjs/comps/Input/index.d.ts +2 -2
  34. package/dist/cjs/comps/Input/index.js +1 -1
  35. package/dist/cjs/comps/KeyboardKeys/index.js +1 -1
  36. package/dist/cjs/comps/Label/index.js +1 -1
  37. package/dist/cjs/comps/List/index.js +1 -1
  38. package/dist/cjs/comps/Network/index.js +1 -1
  39. package/dist/cjs/comps/Overlay/index.js +1 -1
  40. package/dist/cjs/comps/Pagination/index.js +1 -1
  41. package/dist/cjs/comps/Password/index.d.ts +6 -2
  42. package/dist/cjs/comps/Password/index.js +15 -5
  43. package/dist/cjs/comps/PinInput/index.d.ts +1 -1
  44. package/dist/cjs/comps/PinInput/index.js +8 -3
  45. package/dist/cjs/comps/ProgressBar/index.js +2 -2
  46. package/dist/cjs/comps/Radio/index.js +1 -1
  47. package/dist/cjs/comps/ScrollView/index.js +1 -1
  48. package/dist/cjs/comps/Search/index.d.ts +1 -1
  49. package/dist/cjs/comps/Search/index.js +1 -1
  50. package/dist/cjs/comps/Segmented/index.js +1 -1
  51. package/dist/cjs/comps/Select/index.d.ts +1 -0
  52. package/dist/cjs/comps/Select/index.js +3 -3
  53. package/dist/cjs/comps/Select/types.d.ts +6 -1
  54. package/dist/cjs/comps/Sheet/index.js +1 -1
  55. package/dist/cjs/comps/Sidebar/index.js +1 -1
  56. package/dist/cjs/comps/Slider/index.js +1 -1
  57. package/dist/cjs/comps/Span/index.js +1 -1
  58. package/dist/cjs/comps/Spinner/index.js +1 -1
  59. package/dist/cjs/comps/Switch/index.d.ts +1 -0
  60. package/dist/cjs/comps/Switch/index.js +1 -1
  61. package/dist/cjs/comps/TabView/body.js +1 -1
  62. package/dist/cjs/comps/TabView/index.js +1 -1
  63. package/dist/cjs/comps/TabView/tab.js +1 -1
  64. package/dist/cjs/comps/Table/col.js +1 -1
  65. package/dist/cjs/comps/Table/index.js +56 -2
  66. package/dist/cjs/comps/Table/row.js +1 -1
  67. package/dist/cjs/comps/Text/index.js +1 -1
  68. package/dist/cjs/comps/TextArea/index.js +1 -1
  69. package/dist/cjs/comps/TextWheel/index.js +3 -3
  70. package/dist/cjs/comps/Tooltip/index.js +1 -1
  71. package/dist/cjs/comps/Treeview/index.js +1 -1
  72. package/dist/cjs/comps/Treeview/item.js +1 -1
  73. package/dist/cjs/comps/VideoPlayer/index.js +1 -0
  74. package/dist/cjs/comps/index.d.ts +2 -0
  75. package/dist/cjs/comps/index.js +2 -0
  76. package/dist/cjs/funs/events.d.ts +31 -7
  77. package/dist/cjs/funs/events.js +57 -19
  78. package/dist/cjs/funs/index.d.ts +5 -3
  79. package/dist/cjs/funs/index.js +39 -84
  80. package/dist/cjs/hooks/index.d.ts +4 -0
  81. package/dist/cjs/hooks/index.js +4 -0
  82. package/dist/cjs/hooks/useDB.d.ts +5 -1
  83. package/dist/cjs/hooks/useDB.js +52 -4
  84. package/dist/cjs/hooks/useFacebookPixel.d.ts +11 -0
  85. package/dist/cjs/hooks/useFacebookPixel.js +64 -0
  86. package/dist/cjs/hooks/useGoogleTagManager.d.ts +9 -0
  87. package/dist/cjs/hooks/useGoogleTagManager.js +53 -0
  88. package/dist/cjs/hooks/useImage.js +2 -2
  89. package/dist/cjs/hooks/useImageCropper.d.ts +10 -0
  90. package/dist/cjs/hooks/useImageCropper.js +67 -0
  91. package/dist/cjs/hooks/useUploader.d.ts +46 -0
  92. package/dist/cjs/hooks/useUploader.js +101 -0
  93. package/dist/cjs/hooks/useWebSocket.d.ts +2 -2
  94. package/dist/cjs/hooks/useWebSocket.js +13 -2
  95. package/dist/cjs/types/index.d.ts +3 -0
  96. package/dist/css/styles.css +1 -1
  97. package/dist/esm/comps/Accordion/index.js +1 -1
  98. package/dist/esm/comps/Actionbar/index.js +1 -1
  99. package/dist/esm/comps/Alert/index.js +1 -1
  100. package/dist/esm/comps/AutoComplete/index.d.ts +1 -1
  101. package/dist/esm/comps/AutoComplete/index.js +3 -2
  102. package/dist/esm/comps/Avatar/index.js +5 -5
  103. package/dist/esm/comps/Box/index.js +1 -1
  104. package/dist/esm/comps/Button/index.js +1 -1
  105. package/dist/esm/comps/CheckBox/index.d.ts +1 -0
  106. package/dist/esm/comps/CheckBox/index.js +1 -1
  107. package/dist/esm/comps/CheckBox/types.d.ts +1 -0
  108. package/dist/esm/comps/ColorScheme/index.js +1 -1
  109. package/dist/esm/comps/ContextMenu/index.d.ts +2 -0
  110. package/dist/esm/comps/ContextMenu/index.js +6 -6
  111. package/dist/esm/comps/ContextMenu/item.js +1 -1
  112. package/dist/esm/comps/ContextMenu/types.d.ts +3 -1
  113. package/dist/esm/comps/CookiesConsent/index.js +1 -1
  114. package/dist/esm/comps/Cover/index.js +1 -1
  115. package/dist/esm/comps/Cropper/index.d.ts +8 -0
  116. package/dist/esm/comps/Cropper/index.js +20 -0
  117. package/dist/esm/comps/Cropper/types.d.ts +14 -0
  118. package/dist/esm/comps/Cropper/types.js +5 -0
  119. package/dist/esm/comps/Crumb/index.d.ts +1 -0
  120. package/dist/esm/comps/Crumb/index.js +13 -3
  121. package/dist/esm/comps/Crumb/types.d.ts +1 -0
  122. package/dist/esm/comps/Drawer/index.js +1 -1
  123. package/dist/esm/comps/Fab/index.js +1 -1
  124. package/dist/esm/comps/Filters/index.js +1 -1
  125. package/dist/esm/comps/Form/index.js +22 -6
  126. package/dist/esm/comps/Icon/index.js +1 -1
  127. package/dist/esm/comps/Image/index.js +1 -1
  128. package/dist/esm/comps/Input/index.d.ts +2 -2
  129. package/dist/esm/comps/Input/index.js +1 -1
  130. package/dist/esm/comps/KeyboardKeys/index.js +1 -1
  131. package/dist/esm/comps/Label/index.js +1 -1
  132. package/dist/esm/comps/List/index.js +1 -1
  133. package/dist/esm/comps/Network/index.js +1 -1
  134. package/dist/esm/comps/Overlay/index.js +1 -1
  135. package/dist/esm/comps/Pagination/index.js +1 -1
  136. package/dist/esm/comps/Password/index.d.ts +6 -2
  137. package/dist/esm/comps/Password/index.js +15 -5
  138. package/dist/esm/comps/PinInput/index.d.ts +1 -1
  139. package/dist/esm/comps/PinInput/index.js +8 -3
  140. package/dist/esm/comps/ProgressBar/index.js +2 -2
  141. package/dist/esm/comps/Radio/index.js +1 -1
  142. package/dist/esm/comps/ScrollView/index.js +1 -1
  143. package/dist/esm/comps/Search/index.d.ts +1 -1
  144. package/dist/esm/comps/Search/index.js +1 -1
  145. package/dist/esm/comps/Segmented/index.js +1 -1
  146. package/dist/esm/comps/Select/index.d.ts +1 -0
  147. package/dist/esm/comps/Select/index.js +3 -3
  148. package/dist/esm/comps/Select/types.d.ts +6 -1
  149. package/dist/esm/comps/Sheet/index.js +1 -1
  150. package/dist/esm/comps/Sidebar/index.js +1 -1
  151. package/dist/esm/comps/Slider/index.js +1 -1
  152. package/dist/esm/comps/Span/index.js +1 -1
  153. package/dist/esm/comps/Spinner/index.js +1 -1
  154. package/dist/esm/comps/Switch/index.d.ts +1 -0
  155. package/dist/esm/comps/Switch/index.js +1 -1
  156. package/dist/esm/comps/TabView/body.js +1 -1
  157. package/dist/esm/comps/TabView/index.js +1 -1
  158. package/dist/esm/comps/TabView/tab.js +1 -1
  159. package/dist/esm/comps/Table/col.js +1 -1
  160. package/dist/esm/comps/Table/index.js +56 -2
  161. package/dist/esm/comps/Table/row.js +1 -1
  162. package/dist/esm/comps/Text/index.js +1 -1
  163. package/dist/esm/comps/TextArea/index.js +1 -1
  164. package/dist/esm/comps/TextWheel/index.js +3 -3
  165. package/dist/esm/comps/Tooltip/index.js +1 -1
  166. package/dist/esm/comps/Treeview/index.js +1 -1
  167. package/dist/esm/comps/Treeview/item.js +1 -1
  168. package/dist/esm/comps/VideoPlayer/index.js +1 -0
  169. package/dist/esm/comps/index.d.ts +2 -0
  170. package/dist/esm/comps/index.js +2 -0
  171. package/dist/esm/funs/events.d.ts +31 -7
  172. package/dist/esm/funs/events.js +57 -19
  173. package/dist/esm/funs/index.d.ts +5 -3
  174. package/dist/esm/funs/index.js +39 -84
  175. package/dist/esm/hooks/index.d.ts +4 -0
  176. package/dist/esm/hooks/index.js +4 -0
  177. package/dist/esm/hooks/useDB.d.ts +5 -1
  178. package/dist/esm/hooks/useDB.js +52 -4
  179. package/dist/esm/hooks/useFacebookPixel.d.ts +11 -0
  180. package/dist/esm/hooks/useFacebookPixel.js +64 -0
  181. package/dist/esm/hooks/useGoogleTagManager.d.ts +9 -0
  182. package/dist/esm/hooks/useGoogleTagManager.js +53 -0
  183. package/dist/esm/hooks/useImage.js +2 -2
  184. package/dist/esm/hooks/useImageCropper.d.ts +10 -0
  185. package/dist/esm/hooks/useImageCropper.js +67 -0
  186. package/dist/esm/hooks/useUploader.d.ts +46 -0
  187. package/dist/esm/hooks/useUploader.js +101 -0
  188. package/dist/esm/hooks/useWebSocket.d.ts +2 -2
  189. package/dist/esm/hooks/useWebSocket.js +13 -2
  190. package/dist/esm/types/index.d.ts +3 -0
  191. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  192. package/dist/tsconfig.tsbuildinfo +1 -1
  193. package/package.json +2 -2
@@ -0,0 +1,53 @@
1
+ import { useEffect } from 'react';
2
+ /**
3
+ * Custom hook for Google gtag (Global Site Tag) tracking
4
+ * @param id - Google Analytics tracking ID (e.g., 'G-XXXXXXXXXX')
5
+ */
6
+ const useGtag = (id) => {
7
+ // Initialize gtag.js
8
+ useEffect(() => {
9
+ if (!id)
10
+ return;
11
+ // Load gtag.js script if not already loaded
12
+ if (!window.gtag) {
13
+ const script = document.createElement('script');
14
+ script.async = true;
15
+ script.src = `https://www.googletagmanager.com/gtag/js?id=${id}`;
16
+ document.head.appendChild(script);
17
+ window.dataLayer = window.dataLayer || [];
18
+ window.gtag = function () {
19
+ window.dataLayer.push(arguments);
20
+ };
21
+ // Set the current date/time
22
+ window.gtag('js', new Date());
23
+ }
24
+ // Configure the tracker
25
+ window.gtag('config', id);
26
+ }, [id]);
27
+ /**
28
+ * Track a page view
29
+ * @param path - URL path to track (defaults to current location)
30
+ */
31
+ const trackPageView = (path) => {
32
+ if (!id)
33
+ return;
34
+ window.gtag('config', id, {
35
+ page_path: path || window.location.pathname,
36
+ });
37
+ };
38
+ /**
39
+ * Track an event
40
+ * @param eventName - Event name (e.g., 'login', 'sign_up')
41
+ * @param params - Additional event parameters
42
+ */
43
+ const trackEvent = (eventName, params) => {
44
+ if (!id)
45
+ return;
46
+ window.gtag('event', eventName, params);
47
+ };
48
+ return {
49
+ trackPageView,
50
+ trackEvent,
51
+ };
52
+ };
53
+ export default useGtag;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { useEffect, useRef, useState } from "react";
3
3
  const useImage = (url, crossOrigin, referrerPolicy) => {
4
- const img = useRef(null);
5
4
  const [state, setState] = useState({ loaded: false, error: null });
5
+ const img = useRef(null);
6
6
  useEffect(() => {
7
7
  if (url && url !== ``) {
8
8
  var _img = new Image();
@@ -17,7 +17,7 @@ const useImage = (url, crossOrigin, referrerPolicy) => {
17
17
  };
18
18
  _img.src = url;
19
19
  }
20
- }, []);
20
+ }, [url]);
21
21
  return [img.current ? img.current.src : ``, state.loaded, state.error];
22
22
  };
23
23
  export default useImage;
@@ -0,0 +1,10 @@
1
+ import { CropShape } from '..';
2
+ declare const useImageCropper: (imageUrl: string, cropSize: number, cropShape?: CropShape, scale?: number) => {
3
+ canvasRef: import("react").RefObject<HTMLCanvasElement | null>;
4
+ crop: () => string | null;
5
+ setScale: import("react").Dispatch<import("react").SetStateAction<number>>;
6
+ handleMouseDown: () => void;
7
+ handleMouseUp: () => void;
8
+ handleMouseMove: (e: React.MouseEvent<HTMLCanvasElement>) => void;
9
+ };
10
+ export default useImageCropper;
@@ -0,0 +1,67 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { CropShape } from '..';
3
+ const useImageCropper = (imageUrl, cropSize, cropShape = CropShape.Circle, scale = 1) => {
4
+ const [dragging, setDragging] = useState(false);
5
+ const [offset, setOffset] = useState({ x: 0, y: 0 });
6
+ const [_scale, setScale] = useState(scale);
7
+ const imgRef = useRef(null);
8
+ const canvasRef = useRef(null);
9
+ const draw = () => {
10
+ const canvas = canvasRef.current;
11
+ const ctx = canvas?.getContext('2d');
12
+ const img = imgRef.current;
13
+ if (!canvas || !ctx || !img)
14
+ return;
15
+ canvas.width = cropSize;
16
+ canvas.height = cropSize;
17
+ ctx.clearRect(0, 0, cropSize, cropSize);
18
+ ctx.globalAlpha = 0.5;
19
+ ctx.drawImage(img, offset.x, offset.y, img.width * _scale, img.height * _scale);
20
+ ctx.globalAlpha = 1.0;
21
+ ctx.save();
22
+ if (cropShape === CropShape.Circle) {
23
+ ctx.beginPath();
24
+ ctx.arc(cropSize / 2, cropSize / 2, cropSize / 2, 0, Math.PI * 2);
25
+ ctx.closePath();
26
+ ctx.clip();
27
+ }
28
+ ctx.drawImage(img, offset.x, offset.y, img.width * _scale, img.height * _scale);
29
+ ctx.restore();
30
+ };
31
+ useEffect(draw, [_scale]);
32
+ useEffect(() => {
33
+ if (imageUrl) {
34
+ const img = new Image();
35
+ img.onload = () => {
36
+ imgRef.current = img;
37
+ draw();
38
+ };
39
+ img.src = imageUrl;
40
+ }
41
+ }, [imageUrl, offset]);
42
+ const handleMouseDown = () => setDragging(true);
43
+ const handleMouseUp = () => setDragging(false);
44
+ const handleMouseMove = (e) => {
45
+ if (!dragging || !imgRef.current)
46
+ return;
47
+ setOffset(prev => ({
48
+ x: prev.x + e.movementX,
49
+ y: prev.y + e.movementY,
50
+ }));
51
+ };
52
+ const crop = () => {
53
+ const canvas = canvasRef.current;
54
+ if (!canvas)
55
+ return null;
56
+ return canvas.toDataURL('image/png');
57
+ };
58
+ return {
59
+ canvasRef,
60
+ crop,
61
+ setScale,
62
+ handleMouseDown,
63
+ handleMouseUp,
64
+ handleMouseMove,
65
+ };
66
+ };
67
+ export default useImageCropper;
@@ -0,0 +1,46 @@
1
+ import { CancelTokenSource } from "@zuzjs/core";
2
+ import { dynamic } from "..";
3
+ export declare enum Status {
4
+ Error = -1,
5
+ Idle = 0,
6
+ FetchingServer = 1,
7
+ Uploading = 2,
8
+ Saving = 3
9
+ }
10
+ export interface QueItem {
11
+ ID: string;
12
+ file: File;
13
+ dir: string;
14
+ remote: false;
15
+ progress: number;
16
+ speed: number;
17
+ eta: number;
18
+ bytes: number;
19
+ status: Status;
20
+ server?: Server | null;
21
+ }
22
+ export type Server = {
23
+ ID: string;
24
+ uri: string;
25
+ token: string;
26
+ rmf: string | null;
27
+ };
28
+ export type Uploadify = {
29
+ que: QueItem[];
30
+ index: number;
31
+ speed: number;
32
+ stamp: number | null;
33
+ token: string | null;
34
+ status: Status;
35
+ cancelToken?: CancelTokenSource | null;
36
+ };
37
+ export interface Uploader {
38
+ apiUrl: string;
39
+ onChange?: (file: QueItem | null) => void;
40
+ onQueFinished?: () => void;
41
+ }
42
+ declare const useUploader: (conf: Uploader) => {
43
+ getQue: () => QueItem[];
44
+ addToQue: (f: dynamic) => void;
45
+ };
46
+ export default useUploader;
@@ -0,0 +1,101 @@
1
+ import { getCancelToken, withPost } from "@zuzjs/core";
2
+ import { uuid } from "..";
3
+ export var Status;
4
+ (function (Status) {
5
+ Status[Status["Error"] = -1] = "Error";
6
+ Status[Status["Idle"] = 0] = "Idle";
7
+ Status[Status["FetchingServer"] = 1] = "FetchingServer";
8
+ Status[Status["Uploading"] = 2] = "Uploading";
9
+ Status[Status["Saving"] = 3] = "Saving";
10
+ })(Status || (Status = {}));
11
+ const useUploader = (conf) => {
12
+ const { apiUrl, onChange, onQueFinished } = conf;
13
+ const self = {
14
+ que: [],
15
+ index: -1,
16
+ speed: 0,
17
+ stamp: null,
18
+ token: null,
19
+ status: Status.Idle
20
+ };
21
+ const sync = () => onChange?.(currentFile());
22
+ const importFile = () => { };
23
+ const uploadFile = () => {
24
+ self.stamp = Date.now();
25
+ const file = currentFile();
26
+ const formData = new FormData();
27
+ formData.append("ID", file.ID);
28
+ formData.append("dir", file.dir);
29
+ formData.append("server", file.server.ID);
30
+ formData.append("token", file.server.token);
31
+ formData.append('file', file.file);
32
+ formData.append('fs', file.file.size.toString());
33
+ self.cancelToken = getCancelToken();
34
+ withPost(`${self.que[self.index].server.uri}/receive`, formData, 86400, true, (ev) => {
35
+ console.log(ev);
36
+ })
37
+ .catch(resp => {
38
+ console.log(`Uploaded`, resp);
39
+ })
40
+ .catch(err => {
41
+ self.que[self.index].status = Status.Error;
42
+ self.status = Status.Idle;
43
+ sync();
44
+ Que();
45
+ });
46
+ };
47
+ const getServer = (force) => {
48
+ self.que[self.index].status = Status.FetchingServer;
49
+ sync();
50
+ withPost(`${apiUrl}get_server`, { size: currentFile().file.size })
51
+ .then((resp) => {
52
+ self.que[self.index].server = resp.server;
53
+ self.que[self.index].status = Status.Uploading;
54
+ sync();
55
+ uploadFile();
56
+ })
57
+ .catch((err) => {
58
+ self.que[self.index].status = Status.Error;
59
+ self.status = Status.Idle;
60
+ sync();
61
+ Que();
62
+ });
63
+ };
64
+ const currentFile = () => self.que[self.index];
65
+ const getQue = () => self.que;
66
+ const Que = () => {
67
+ if (self.status == Status.Idle &&
68
+ (self.que.length - 1) > self.index) {
69
+ self.status = Status.Uploading;
70
+ self.index++;
71
+ self.que[self.index].status = Status.Uploading;
72
+ sync();
73
+ if (self.que[self.index].remote)
74
+ importFile();
75
+ else
76
+ getServer(true);
77
+ }
78
+ else
79
+ onQueFinished?.();
80
+ };
81
+ const addToQue = (f) => {
82
+ self.que.push({
83
+ ID: uuid(),
84
+ file: f.file,
85
+ dir: f.dir,
86
+ remote: f.remote,
87
+ progress: 0,
88
+ speed: 0,
89
+ eta: 0,
90
+ bytes: 0,
91
+ status: Status.Idle,
92
+ server: null
93
+ });
94
+ Que();
95
+ };
96
+ return {
97
+ getQue,
98
+ addToQue,
99
+ };
100
+ };
101
+ export default useUploader;
@@ -1,9 +1,9 @@
1
- import { dynamicObject } from "..";
1
+ import { dynamic } from "..";
2
2
  export type WebSocketOptions = {
3
3
  onOpen?: (event: Event) => void;
4
4
  onClose?: (event: CloseEvent) => void;
5
5
  onRawMessage?: (event: MessageEvent) => void;
6
- onMessage?: (data: dynamicObject) => void;
6
+ onMessage?: (data: dynamic) => void;
7
7
  onError?: (event: Event) => void;
8
8
  reconnect?: boolean;
9
9
  };
@@ -18,8 +18,19 @@ const useWebSocket = (url, options) => {
18
18
  reconnectIntervals.set(url, 2); // Reset to 1s on successful reconnect
19
19
  };
20
20
  const connect = useCallback(() => {
21
- if (socketInstances.has(url))
21
+ if (socketInstances.has(url)) {
22
+ const Socket = socketInstances.get(url);
23
+ if (Socket) {
24
+ Socket.onmessage = (event) => {
25
+ setMessages((prev) => [...prev, event.data]);
26
+ onRawMessage?.(event);
27
+ const raw = JSON.parse(Buffer.isBuffer(event) ? event.toString(`utf8`) : `string` == typeof event ? event : event.data);
28
+ onMessage?.(raw);
29
+ listenersMap.get(url)?.forEach((listener) => listener(event));
30
+ };
31
+ }
22
32
  return; // Prevent duplicate connection
33
+ }
23
34
  const socket = new WebSocket(url);
24
35
  socketInstances.set(url, socket);
25
36
  listenersMap.set(url, []);
@@ -79,7 +90,7 @@ const useWebSocket = (url, options) => {
79
90
  socket.send(data);
80
91
  }
81
92
  else {
82
- console.warn("WebSocket is not connected.");
93
+ console.log("WebSocket is not connected.");
83
94
  }
84
95
  }, [url]);
85
96
  return { isConnected, messages, sendMessage };
@@ -5,6 +5,9 @@ import { animationProps, Skeleton } from "./interfaces";
5
5
  export type Deprecated<T, M extends string> = T & {
6
6
  __deprecatedMessage?: M;
7
7
  };
8
+ export type dynamic = {
9
+ [x: string]: any;
10
+ };
8
11
  export type dynamicObject = {
9
12
  [x: string]: any;
10
13
  };