@andre1502/react-utilities 0.9.7 → 1.0.1

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 (125) hide show
  1. package/dist/Config/Config.js +2 -4
  2. package/dist/Config/Config.js.map +1 -1
  3. package/dist/Config/GoogleAuth.js +1 -1
  4. package/dist/Config/GoogleAuth.js.map +1 -1
  5. package/dist/Config/Sitemap.js +1 -1
  6. package/dist/Config/Sitemap.js.map +1 -1
  7. package/dist/EnvironmentEnum-BjXsfSRZ.js.map +1 -1
  8. package/dist/EnvironmentEnum-UcQ6Il1O.js.map +1 -1
  9. package/dist/Format/NumberParser.js.map +1 -1
  10. package/dist/Hooks/useDevice.d.ts +3 -0
  11. package/dist/Hooks/useDevice.js +47 -0
  12. package/dist/Hooks/useDevice.js.map +1 -0
  13. package/dist/Hooks/useSEStore.d.ts +5 -0
  14. package/dist/Hooks/useSound.d.ts +9 -0
  15. package/dist/Hooks/useSound.js +47 -0
  16. package/dist/Hooks/useSound.js.map +1 -0
  17. package/dist/Hooks/useWebSocket.d.ts +9 -0
  18. package/dist/Hooks/useWebSocket.js +120 -0
  19. package/dist/Hooks/useWebSocket.js.map +1 -0
  20. package/dist/I18n/I18n.d.ts +1 -1
  21. package/dist/I18n/I18n.js +9 -5
  22. package/dist/I18n/I18n.js.map +1 -1
  23. package/dist/NumberFormat-CvvBWhHc.js.map +1 -1
  24. package/dist/NumberFormat-glmpbk7E.js.map +1 -1
  25. package/dist/React-BaJ1KfGF.js.map +1 -1
  26. package/dist/React-qUl0CBmE.js.map +1 -1
  27. package/dist/ReactNative-Ckbnh5vm.js +1770 -0
  28. package/dist/ReactNative-Ckbnh5vm.js.map +1 -0
  29. package/dist/ReactNative-DLA9Xwp4.js +1792 -0
  30. package/dist/ReactNative-DLA9Xwp4.js.map +1 -0
  31. package/dist/Sentry/Build.js +1 -1
  32. package/dist/Sentry/Build.js.map +1 -1
  33. package/dist/Sentry/React.js.map +1 -1
  34. package/dist/Sentry/ReactNative.js +3 -3
  35. package/dist/Sentry/ReactNative.js.map +1 -1
  36. package/dist/Utils/Array.d.ts +3 -0
  37. package/dist/Utils/Array.js +26 -0
  38. package/dist/Utils/Array.js.map +1 -0
  39. package/dist/Utils/Files.js +2 -2
  40. package/dist/Utils/Files.js.map +1 -1
  41. package/dist/Utils/Pagination.d.ts +3 -0
  42. package/dist/Utils/Pagination.js +32 -0
  43. package/dist/Utils/Pagination.js.map +1 -0
  44. package/dist/Utils/Utils.d.ts +10 -0
  45. package/dist/Utils/Utils.js +98 -0
  46. package/dist/Utils/Utils.js.map +1 -0
  47. package/dist/Utils-Bnk2KHAB.js +70 -0
  48. package/dist/Utils-Bnk2KHAB.js.map +1 -0
  49. package/dist/Utils-Cq948gfa.js.map +1 -1
  50. package/dist/Utils-DLJ3-s9J.js +61 -0
  51. package/dist/Utils-DLJ3-s9J.js.map +1 -0
  52. package/dist/Utils-Dilye04y.js.map +1 -1
  53. package/dist/config-cli.cjs +2 -3
  54. package/dist/config-cli.cjs.map +1 -1
  55. package/dist/config-cli.js +3 -3
  56. package/dist/config-cli.js.map +1 -1
  57. package/dist/config-cli.mjs +2 -2
  58. package/dist/config-cli.mjs.map +1 -1
  59. package/dist/enums/CurrencySymbolEnum.js +4 -2
  60. package/dist/enums/CurrencySymbolEnum.js.map +1 -1
  61. package/dist/enums/DeviceEnum.d.ts +4 -0
  62. package/dist/enums/DeviceEnum.js +12 -0
  63. package/dist/enums/DeviceEnum.js.map +1 -0
  64. package/dist/hooks.cjs +13 -0
  65. package/dist/hooks.cjs.map +1 -0
  66. package/dist/hooks.d.ts +9 -0
  67. package/dist/hooks.js +87 -0
  68. package/dist/hooks.js.map +1 -0
  69. package/dist/hooks.mjs +4 -0
  70. package/dist/hooks.mjs.map +1 -0
  71. package/dist/i18n.cjs +3104 -6
  72. package/dist/i18n.cjs.map +1 -1
  73. package/dist/i18n.mjs +3104 -2
  74. package/dist/i18n.mjs.map +1 -1
  75. package/dist/index-cli.cjs +1 -1
  76. package/dist/index-cli.mjs +1 -1
  77. package/dist/index-rn.cjs +5 -5
  78. package/dist/index-rn.mjs +3 -3
  79. package/dist/index.cjs +25 -4
  80. package/dist/index.cjs.map +1 -1
  81. package/dist/index.d.ts +2 -0
  82. package/dist/index.js +22 -0
  83. package/dist/index.js.map +1 -1
  84. package/dist/index.mjs +6 -2
  85. package/dist/index.mjs.map +1 -1
  86. package/dist/sentry-cli.cjs.map +1 -1
  87. package/dist/sentry-cli.js +1 -1
  88. package/dist/sentry-cli.js.map +1 -1
  89. package/dist/sentry-cli.mjs.map +1 -1
  90. package/dist/sentry-rn.cjs +1 -1
  91. package/dist/sentry-rn.mjs +1 -1
  92. package/dist/useWebSocket-GlUpioz3.js +168 -0
  93. package/dist/useWebSocket-GlUpioz3.js.map +1 -0
  94. package/dist/useWebSocket-vgu8TAsa.js +163 -0
  95. package/dist/useWebSocket-vgu8TAsa.js.map +1 -0
  96. package/dist/utils.cjs +58 -0
  97. package/dist/utils.cjs.map +1 -0
  98. package/dist/utils.d.ts +3 -0
  99. package/dist/utils.js +39 -0
  100. package/dist/utils.js.map +1 -0
  101. package/dist/utils.mjs +43 -0
  102. package/dist/utils.mjs.map +1 -0
  103. package/package.json +51 -40
  104. package/src/Config/Config.ts +2 -2
  105. package/src/Hooks/useDevice.ts +34 -0
  106. package/src/Hooks/useSEStore.tsx +29 -0
  107. package/src/Hooks/useSound.ts +44 -0
  108. package/src/Hooks/useWebSocket.ts +115 -0
  109. package/src/I18n/I18n.ts +1 -4
  110. package/src/Sentry/ReactNative.ts +2 -5
  111. package/src/Utils/Array.ts +23 -0
  112. package/src/Utils/Pagination.ts +42 -0
  113. package/src/Utils/Utils.ts +75 -0
  114. package/src/enums/DeviceEnum.ts +4 -0
  115. package/src/hooks.ts +11 -0
  116. package/src/index.ts +2 -0
  117. package/src/utils.ts +3 -0
  118. package/dist/I18n-BIBLVzaQ.js +0 -3313
  119. package/dist/I18n-BIBLVzaQ.js.map +0 -1
  120. package/dist/I18n-tdxuTc45.js +0 -3316
  121. package/dist/I18n-tdxuTc45.js.map +0 -1
  122. package/dist/ReactNative-CqUrY2ZJ.js +0 -3856
  123. package/dist/ReactNative-CqUrY2ZJ.js.map +0 -1
  124. package/dist/ReactNative-mNnws-b5.js +0 -3834
  125. package/dist/ReactNative-mNnws-b5.js.map +0 -1
@@ -0,0 +1,163 @@
1
+ import { useState, useEffect, useSyncExternalStore, useRef } from 'react';
2
+ import { Howl } from 'howler';
3
+
4
+ var DeviceEnum;
5
+ (function (DeviceEnum) {
6
+ DeviceEnum["PC"] = "pc";
7
+ DeviceEnum["MOBILE"] = "mobile";
8
+ })(DeviceEnum || (DeviceEnum = {}));
9
+
10
+ const useDevice = () => {
11
+ const [deviceType, setDevice] = useState(DeviceEnum.PC);
12
+ useEffect(() => {
13
+ const isTouchDevice = () => 'ontouchstart' in window || navigator.maxTouchPoints > 0;
14
+ const isPortrait = () => window.screen.orientation?.type.includes('portrait') || window.innerHeight > window.innerWidth;
15
+ const hasMouse = () => 'onmousemove' in window;
16
+ const detectDevice = () => {
17
+ if (isTouchDevice() && isPortrait() && !hasMouse()) {
18
+ setDevice(DeviceEnum.MOBILE);
19
+ } else {
20
+ setDevice(DeviceEnum.PC);
21
+ }
22
+ };
23
+ detectDevice();
24
+ window.addEventListener('resize', detectDevice);
25
+ return () => {
26
+ window.removeEventListener('resize', detectDevice);
27
+ };
28
+ }, []);
29
+ return deviceType;
30
+ };
31
+
32
+ const getDataSEStoreFromLocalStorage = (key) => {
33
+ return window.localStorage.getItem(key) || '';
34
+ };
35
+ const subscribe = (key, callback) => {
36
+ window.addEventListener(key, callback);
37
+ return () => {
38
+ window.removeEventListener(key, callback);
39
+ };
40
+ };
41
+ const useSEStore = (key) => {
42
+ const dataSEStore = useSyncExternalStore((callback) => subscribe(key, callback), () => getDataSEStoreFromLocalStorage(key));
43
+ const setDataSEStore = (key, value) => {
44
+ window.localStorage.setItem(key, value);
45
+ window.dispatchEvent(new Event(key));
46
+ };
47
+ return { dataSEStore, setDataSEStore };
48
+ };
49
+
50
+ const useSound = _ref => {
51
+ let {
52
+ src,
53
+ volume,
54
+ autoplay = false,
55
+ loop = false
56
+ } = _ref;
57
+ const [audio, setAudio] = useState(null);
58
+ useEffect(() => {
59
+ const howl = new Howl({
60
+ src: src,
61
+ onplayerror: (e, d) => {
62
+ console.log('onplayerror', e, d);
63
+ howl.once('unlock', () => {
64
+ // howl.play();
65
+ });
66
+ },
67
+ loop: loop ? true : false,
68
+ volume: volume,
69
+ autoplay: autoplay
70
+ });
71
+ setAudio(howl);
72
+ return () => {
73
+ howl.unload();
74
+ };
75
+ }, []);
76
+ return [audio];
77
+ };
78
+
79
+ const useWebSocket = () => {
80
+ const pingInterval = 30000; // Default ping every 30 seconds
81
+ const [url, setUrl] = useState('');
82
+ const [isConnected, setIsConnected] = useState(false);
83
+ const [isError, setIsError] = useState(false);
84
+ const [messages, setMessages] = useState([]);
85
+ const socketRef = useRef(null);
86
+ const heartbeatIntervalRef = useRef(undefined);
87
+ const connect = newUrl => {
88
+ if (newUrl && url !== newUrl) {
89
+ setUrl(newUrl);
90
+ }
91
+ };
92
+ const clearMessages = () => {
93
+ setMessages([]);
94
+ };
95
+ // Connect WebSocket after login
96
+ useEffect(() => {
97
+ if (url) {
98
+ // Open WebSocket connection
99
+ if (socketRef.current === null) {
100
+ socketRef.current = new WebSocket(url);
101
+ } else if (socketRef.current.url !== url) {
102
+ socketRef.current.close();
103
+ socketRef.current = new WebSocket(url);
104
+ }
105
+ socketRef.current.onopen = event => {
106
+ // console.log('WebSocket onopen', 'event', event);
107
+ setIsError(false);
108
+ setIsConnected(true);
109
+ heartbeatIntervalRef.current = window.setInterval(() => {
110
+ if (socketRef.current?.readyState === WebSocket.OPEN) {
111
+ socketRef.current?.send('ping');
112
+ }
113
+ }, pingInterval);
114
+ };
115
+ socketRef.current.onmessage = event => {
116
+ console.log('WebSocket onmessage', 'event.data', event.data);
117
+ if (event.data === 'ping') {
118
+ socketRef.current?.send('pong');
119
+ return;
120
+ }
121
+ setTimeout(() => {
122
+ setMessages(prev => {
123
+ if (!prev.includes(event.data)) {
124
+ prev.push(event.data);
125
+ }
126
+ return prev;
127
+ });
128
+ }, 1000);
129
+ };
130
+ socketRef.current.onerror = error => {
131
+ console.error('WebSocket onerror:', 'error', error);
132
+ setIsError(true);
133
+ setIsConnected(false);
134
+ };
135
+ socketRef.current.onclose = event => {
136
+ // console.log('WebSocket onclose', 'event', event);
137
+ if (event.wasClean) ; else {
138
+ // e.g. server process killed or network down, event.code is usually 1006 in this case
139
+ console.warn(`[close] Connection died, code=${event.code} reason=${event.reason}`);
140
+ setIsError(true);
141
+ }
142
+ setIsConnected(false);
143
+ };
144
+ }
145
+ // Cleanup on unmount or logout
146
+ return () => {
147
+ if (socketRef.current) {
148
+ socketRef.current.close();
149
+ }
150
+ clearInterval(heartbeatIntervalRef.current);
151
+ };
152
+ }, [url]);
153
+ return {
154
+ isConnected,
155
+ isError,
156
+ connect,
157
+ messages,
158
+ clearMessages
159
+ };
160
+ };
161
+
162
+ export { useSEStore as a, useSound as b, useWebSocket as c, useDevice as u };
163
+ //# sourceMappingURL=useWebSocket-vgu8TAsa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebSocket-vgu8TAsa.js","sources":["../src/enums/DeviceEnum.ts","../src/Hooks/useDevice.ts","../src/Hooks/useSEStore.tsx","../src/Hooks/useSound.ts","../src/Hooks/useWebSocket.ts"],"sourcesContent":[null,null,null,null,null],"names":["DeviceEnum","useDevice","deviceType","setDevice","useState","PC","useEffect","isTouchDevice","window","navigator","maxTouchPoints","isPortrait","screen","orientation","type","includes","innerHeight","innerWidth","hasMouse","detectDevice","MOBILE","addEventListener","removeEventListener","useSound","_ref","src","volume","autoplay","loop","audio","setAudio","howl","Howl","onplayerror","e","d","console","log","once","unload","useWebSocket","pingInterval","url","setUrl","isConnected","setIsConnected","isError","setIsError","messages","setMessages","socketRef","useRef","heartbeatIntervalRef","undefined","connect","newUrl","clearMessages","current","WebSocket","close","onopen","event","setInterval","readyState","OPEN","send","onmessage","data","setTimeout","prev","push","onerror","error","onclose","wasClean","warn","code","reason","clearInterval"],"mappings":"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"}
package/dist/utils.cjs ADDED
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ var Utils = require('./Utils-Bnk2KHAB.js');
4
+
5
+ const padArrayStart = (array, targetLength, padValue) => {
6
+ const padding = Array(Math.max(targetLength - array.length, 0)).fill(padValue);
7
+ return [...padding, ...array];
8
+ };
9
+ const sliceFromEnd = (array, positionFromEnd) => {
10
+ if (positionFromEnd <= 0) return []; // If position is 0 or negative, return an empty array
11
+ return array.slice(-positionFromEnd);
12
+ };
13
+ const joinWithoutFalsy = function (array) {
14
+ let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
15
+ return array.filter(Boolean).join(separator);
16
+ };
17
+
18
+ const getItemRow = (index, page, pageSize) => {
19
+ page = page ?? 0;
20
+ if (page > 0) {
21
+ page = page - 1;
22
+ }
23
+ return (pageSize ?? 0) * page + index + 1;
24
+ };
25
+ const getNextPage = (page, pageSize, totalRecords) => {
26
+ let totalPage = 0;
27
+ page = (page ?? 0) + 1;
28
+ if (pageSize && totalRecords) {
29
+ totalPage = Math.ceil(totalRecords / pageSize);
30
+ }
31
+ if (page > totalPage) {
32
+ page = undefined;
33
+ }
34
+ return page;
35
+ };
36
+ const getTotalPages = (pageSize, totalRecords) => {
37
+ let totalPage = 0;
38
+ if (pageSize && totalRecords) {
39
+ totalPage = Math.ceil(totalRecords / pageSize);
40
+ }
41
+ return totalPage || 1;
42
+ };
43
+
44
+ exports.autoBlur = Utils.autoBlur;
45
+ exports.getKeyByValue = Utils.getKeyByValue;
46
+ exports.getLastPathName = Utils.getLastPathName;
47
+ exports.getUniquePermutations = Utils.getUniquePermutations;
48
+ exports.getV = Utils.getV;
49
+ exports.isValidHttpUrl = Utils.isValidHttpUrl;
50
+ exports.padNumber = Utils.padNumber;
51
+ exports.parseQueryString = Utils.parseQueryString;
52
+ exports.getItemRow = getItemRow;
53
+ exports.getNextPage = getNextPage;
54
+ exports.getTotalPages = getTotalPages;
55
+ exports.joinWithoutFalsy = joinWithoutFalsy;
56
+ exports.padArrayStart = padArrayStart;
57
+ exports.sliceFromEnd = sliceFromEnd;
58
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../src/Utils/Array.ts","../src/Utils/Pagination.ts"],"sourcesContent":[null,null],"names":["padArrayStart","array","targetLength","padValue","padding","Array","Math","max","length","fill","sliceFromEnd","positionFromEnd","slice","joinWithoutFalsy","separator","arguments","undefined","filter","Boolean","join","getItemRow","index","page","pageSize","getNextPage","totalRecords","totalPage","ceil","getTotalPages"],"mappings":";;;;AAAO,MAAMA,aAAa,GAAGA,CAC3BC,KAAe,EACfC,YAAoB,EACpBC,QAAgB,KACJ;EACZ,MAAMC,OAAO,GAAGC,KAAK,CAACC,IAAI,CAACC,GAAG,CAACL,YAAY,GAAGD,KAAK,CAACO,MAAM,EAAE,CAAC,CAAC,CAAC,CAACC,IAAI,CAClEN,QAAQ,CACT;AACD,EAAA,OAAO,CAAC,GAAGC,OAAO,EAAE,GAAGH,KAAK,CAAC;AAC/B;MAEaS,YAAY,GAAGA,CAC1BT,KAAe,EACfU,eAAuB,KACX;AACZ,EAAA,IAAIA,eAAe,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;AAEpC,EAAA,OAAOV,KAAK,CAACW,KAAK,CAAC,CAACD,eAAe,CAAC;AACtC;MAEaE,gBAAgB,GAAG,UAACZ,KAAe,EAA6B;AAAA,EAAA,IAA3Ba,SAAS,GAAAC,SAAA,CAAAP,MAAA,GAAA,CAAA,IAAAO,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,GAAG;EAC/D,OAAOd,KAAK,CAACgB,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAACL,SAAS,CAAC;AAC9C;;ACtBO,MAAMM,UAAU,GAAGA,CAACC,KAAa,EAAEC,IAAa,EAAEC,QAAiB,KAAI;EAC5ED,IAAI,GAAGA,IAAI,IAAI,CAAC;EAEhB,IAAIA,IAAI,GAAG,CAAC,EAAE;IACZA,IAAI,GAAGA,IAAI,GAAG,CAAC;AACjB;EAEA,OAAO,CAACC,QAAQ,IAAI,CAAC,IAAID,IAAI,GAAGD,KAAK,GAAG,CAAC;AAC3C;AAEO,MAAMG,WAAW,GAAGA,CACzBF,IAAa,EACbC,QAAiB,EACjBE,YAAqB,KACC;EACtB,IAAIC,SAAS,GAAG,CAAC;AAEjBJ,EAAAA,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAI,CAAC;EAEtB,IAAIC,QAAQ,IAAIE,YAAY,EAAE;IAC5BC,SAAS,GAAGpB,IAAI,CAACqB,IAAI,CAACF,YAAY,GAAGF,QAAQ,CAAC;AAChD;EAEA,IAAID,IAAI,GAAGI,SAAS,EAAE;AACpBJ,IAAAA,IAAI,GAAGN,SAAS;AAClB;AAEA,EAAA,OAAOM,IAAI;AACb;MAEaM,aAAa,GAAGA,CAC3BL,QAAiB,EACjBE,YAAqB,KACX;EACV,IAAIC,SAAS,GAAG,CAAC;EAEjB,IAAIH,QAAQ,IAAIE,YAAY,EAAE;IAC5BC,SAAS,GAAGpB,IAAI,CAACqB,IAAI,CAACF,YAAY,GAAGF,QAAQ,CAAC;AAChD;EAEA,OAAOG,SAAS,IAAI,CAAC;AACvB;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export * from './Utils/Array';
2
+ export * from './Utils/Pagination';
3
+ export * from './Utils/Utils';
package/dist/utils.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _Array = require("./Utils/Array");
7
+ Object.keys(_Array).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _Array[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _Array[key];
14
+ }
15
+ });
16
+ });
17
+ var _Pagination = require("./Utils/Pagination");
18
+ Object.keys(_Pagination).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _Pagination[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _Pagination[key];
25
+ }
26
+ });
27
+ });
28
+ var _Utils = require("./Utils/Utils");
29
+ Object.keys(_Utils).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _Utils[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _Utils[key];
36
+ }
37
+ });
38
+ });
39
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["_Array","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_Pagination","_Utils"],"sources":["../src/utils.ts"],"sourcesContent":["export * from './Utils/Array';\nexport * from './Utils/Pagination';\nexport * from './Utils/Utils';\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,MAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,MAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,MAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAE,MAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
package/dist/utils.mjs ADDED
@@ -0,0 +1,43 @@
1
+ export { e as autoBlur, d as getKeyByValue, a as getLastPathName, c as getUniquePermutations, g as getV, i as isValidHttpUrl, p as padNumber, b as parseQueryString } from './Utils-DLJ3-s9J.js';
2
+
3
+ const padArrayStart = (array, targetLength, padValue) => {
4
+ const padding = Array(Math.max(targetLength - array.length, 0)).fill(padValue);
5
+ return [...padding, ...array];
6
+ };
7
+ const sliceFromEnd = (array, positionFromEnd) => {
8
+ if (positionFromEnd <= 0) return []; // If position is 0 or negative, return an empty array
9
+ return array.slice(-positionFromEnd);
10
+ };
11
+ const joinWithoutFalsy = function (array) {
12
+ let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
13
+ return array.filter(Boolean).join(separator);
14
+ };
15
+
16
+ const getItemRow = (index, page, pageSize) => {
17
+ page = page ?? 0;
18
+ if (page > 0) {
19
+ page = page - 1;
20
+ }
21
+ return (pageSize ?? 0) * page + index + 1;
22
+ };
23
+ const getNextPage = (page, pageSize, totalRecords) => {
24
+ let totalPage = 0;
25
+ page = (page ?? 0) + 1;
26
+ if (pageSize && totalRecords) {
27
+ totalPage = Math.ceil(totalRecords / pageSize);
28
+ }
29
+ if (page > totalPage) {
30
+ page = undefined;
31
+ }
32
+ return page;
33
+ };
34
+ const getTotalPages = (pageSize, totalRecords) => {
35
+ let totalPage = 0;
36
+ if (pageSize && totalRecords) {
37
+ totalPage = Math.ceil(totalRecords / pageSize);
38
+ }
39
+ return totalPage || 1;
40
+ };
41
+
42
+ export { getItemRow, getNextPage, getTotalPages, joinWithoutFalsy, padArrayStart, sliceFromEnd };
43
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","sources":["../src/Utils/Array.ts","../src/Utils/Pagination.ts"],"sourcesContent":[null,null],"names":["padArrayStart","array","targetLength","padValue","padding","Array","Math","max","length","fill","sliceFromEnd","positionFromEnd","slice","joinWithoutFalsy","separator","arguments","undefined","filter","Boolean","join","getItemRow","index","page","pageSize","getNextPage","totalRecords","totalPage","ceil","getTotalPages"],"mappings":";;AAAO,MAAMA,aAAa,GAAGA,CAC3BC,KAAe,EACfC,YAAoB,EACpBC,QAAgB,KACJ;EACZ,MAAMC,OAAO,GAAGC,KAAK,CAACC,IAAI,CAACC,GAAG,CAACL,YAAY,GAAGD,KAAK,CAACO,MAAM,EAAE,CAAC,CAAC,CAAC,CAACC,IAAI,CAClEN,QAAQ,CACT;AACD,EAAA,OAAO,CAAC,GAAGC,OAAO,EAAE,GAAGH,KAAK,CAAC;AAC/B;MAEaS,YAAY,GAAGA,CAC1BT,KAAe,EACfU,eAAuB,KACX;AACZ,EAAA,IAAIA,eAAe,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;AAEpC,EAAA,OAAOV,KAAK,CAACW,KAAK,CAAC,CAACD,eAAe,CAAC;AACtC;MAEaE,gBAAgB,GAAG,UAACZ,KAAe,EAA6B;AAAA,EAAA,IAA3Ba,SAAS,GAAAC,SAAA,CAAAP,MAAA,GAAA,CAAA,IAAAO,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,GAAG;EAC/D,OAAOd,KAAK,CAACgB,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAACL,SAAS,CAAC;AAC9C;;ACtBO,MAAMM,UAAU,GAAGA,CAACC,KAAa,EAAEC,IAAa,EAAEC,QAAiB,KAAI;EAC5ED,IAAI,GAAGA,IAAI,IAAI,CAAC;EAEhB,IAAIA,IAAI,GAAG,CAAC,EAAE;IACZA,IAAI,GAAGA,IAAI,GAAG,CAAC;AACjB;EAEA,OAAO,CAACC,QAAQ,IAAI,CAAC,IAAID,IAAI,GAAGD,KAAK,GAAG,CAAC;AAC3C;AAEO,MAAMG,WAAW,GAAGA,CACzBF,IAAa,EACbC,QAAiB,EACjBE,YAAqB,KACC;EACtB,IAAIC,SAAS,GAAG,CAAC;AAEjBJ,EAAAA,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAI,CAAC;EAEtB,IAAIC,QAAQ,IAAIE,YAAY,EAAE;IAC5BC,SAAS,GAAGpB,IAAI,CAACqB,IAAI,CAACF,YAAY,GAAGF,QAAQ,CAAC;AAChD;EAEA,IAAID,IAAI,GAAGI,SAAS,EAAE;AACpBJ,IAAAA,IAAI,GAAGN,SAAS;AAClB;AAEA,EAAA,OAAOM,IAAI;AACb;MAEaM,aAAa,GAAGA,CAC3BL,QAAiB,EACjBE,YAAqB,KACX;EACV,IAAIC,SAAS,GAAG,CAAC;EAEjB,IAAIH,QAAQ,IAAIE,YAAY,EAAE;IAC5BC,SAAS,GAAGpB,IAAI,CAACqB,IAAI,CAACF,YAAY,GAAGF,QAAQ,CAAC;AAChD;EAEA,OAAOG,SAAS,IAAI,CAAC;AACvB;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andre1502/react-utilities",
3
- "version": "0.9.7",
3
+ "version": "1.0.1",
4
4
  "description": "module to combine common functions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,6 +30,11 @@
30
30
  "require": "./dist/format.cjs",
31
31
  "import": "./dist/format.mjs"
32
32
  },
33
+ "./hooks": {
34
+ "types": "./dist/hooks.d.ts",
35
+ "require": "./dist/hooks.cjs",
36
+ "import": "./dist/hooks.mjs"
37
+ },
33
38
  "./i18n": {
34
39
  "types": "./dist/i18n.d.ts",
35
40
  "require": "./dist/i18n.cjs",
@@ -45,6 +50,11 @@
45
50
  "require": "./dist/sentry-rn.cjs",
46
51
  "import": "./dist/sentry-rn.mjs"
47
52
  },
53
+ "./utils": {
54
+ "types": "./dist/utils.d.ts",
55
+ "require": "./dist/utils.cjs",
56
+ "import": "./dist/utils.mjs"
57
+ },
48
58
  "./sentry-cli": {
49
59
  "types": "./dist/sentry-cli.d.ts",
50
60
  "require": "./dist/sentry-cli.cjs",
@@ -77,56 +87,57 @@
77
87
  "test": "echo \"Warn: no test specified, ignore it\" && exit 0"
78
88
  },
79
89
  "dependencies": {
80
- "@formatjs/intl-datetimeformat": "^6.12.5",
81
- "@formatjs/intl-displaynames": "^6.6.8",
82
- "@formatjs/intl-getcanonicallocales": "^2.3.0",
83
- "@formatjs/intl-listformat": "^7.5.7",
84
- "@formatjs/intl-locale": "^4.0.0",
85
- "@formatjs/intl-numberformat": "^8.10.3",
86
- "@formatjs/intl-pluralrules": "^5.2.14",
87
- "@formatjs/intl-relativetimeformat": "^11.2.14",
88
- "@sentry/react-native": "^5.26.0",
89
- "@types/lodash": "^4.17.7",
90
+ "@formatjs/intl-datetimeformat": "^6.17.4",
91
+ "@formatjs/intl-displaynames": "^6.8.11",
92
+ "@formatjs/intl-getcanonicallocales": "^2.5.5",
93
+ "@formatjs/intl-listformat": "^7.7.11",
94
+ "@formatjs/intl-locale": "^4.2.11",
95
+ "@formatjs/intl-numberformat": "^8.15.4",
96
+ "@formatjs/intl-pluralrules": "^5.4.4",
97
+ "@formatjs/intl-relativetimeformat": "^11.4.11",
98
+ "@sentry/react-native": "^6.9.1",
99
+ "@types/howler": "^2.2.12",
100
+ "@types/lodash-es": "^4.17.12",
90
101
  "google-auth-library": "^9.11.0",
91
102
  "googleapis": "^140.0.1",
92
- "i18next": "^23.16.5",
103
+ "howler": "^2.2.4",
104
+ "i18next": "^24.2.3",
93
105
  "i18next-chained-backend": "^4.6.2",
94
- "i18next-http-backend": "^2.6.2",
106
+ "i18next-http-backend": "^3.0.2",
95
107
  "i18next-localstorage-backend": "^4.2.0",
96
108
  "i18next-resources-to-backend": "^1.2.1",
97
- "lodash": "^4.17.21",
109
+ "lodash-es": "^4.17.21",
98
110
  "sitemap": "^8.0.0"
99
111
  },
100
112
  "devDependencies": {
101
- "@babel/cli": "^7.24.8",
102
- "@babel/core": "^7.24.9",
103
- "@babel/preset-env": "^7.24.8",
104
- "@babel/preset-react": "^7.24.7",
105
- "@babel/preset-typescript": "^7.24.7",
113
+ "@babel/cli": "^7.26.4",
114
+ "@babel/core": "^7.26.10",
115
+ "@babel/preset-env": "^7.26.9",
116
+ "@babel/preset-react": "^7.26.3",
117
+ "@babel/preset-typescript": "^7.26.0",
106
118
  "@rollup/plugin-babel": "^6.0.4",
107
- "@rollup/plugin-commonjs": "^26.0.1",
119
+ "@rollup/plugin-commonjs": "^28.0.3",
108
120
  "@rollup/plugin-json": "^6.1.0",
109
- "@rollup/plugin-node-resolve": "^15.2.3",
110
- "@rollup/plugin-typescript": "^11.1.6",
111
- "@types/node": "^20.14.11",
112
- "@types/react": "^18.3.3",
113
- "@typescript-eslint/eslint-plugin": "^7.16.1",
114
- "@typescript-eslint/parser": "^7.16.1",
121
+ "@rollup/plugin-node-resolve": "^16.0.1",
122
+ "@rollup/plugin-typescript": "^12.1.2",
123
+ "@types/node": "^22.13.11",
124
+ "@types/react": "^19.0.12",
125
+ "@typescript-eslint/eslint-plugin": "^8.27.0",
126
+ "@typescript-eslint/parser": "^8.27.0",
115
127
  "cross-env": "^7.0.3",
116
- "eslint": "^9.7.0",
117
- "eslint-config-prettier": "^9.1.0",
118
- "eslint-plugin-prettier": "^5.1.3",
119
- "eslint-plugin-react": "^7.34.4",
120
- "eslint-plugin-react-hooks": "^4.6.2",
121
- "eslint-plugin-storybook": "^0.8.0",
122
- "prettier": "^3.3.3",
123
- "prettier-plugin-organize-imports": "^4.0.0",
124
- "prettier-plugin-packagejson": "^2.5.1",
125
- "rollup": "^4.19.1",
128
+ "eslint": "^9.23.0",
129
+ "eslint-config-prettier": "^10.1.1",
130
+ "eslint-plugin-prettier": "^5.2.3",
131
+ "eslint-plugin-react": "^7.37.4",
132
+ "eslint-plugin-react-hooks": "^5.2.0",
133
+ "eslint-plugin-storybook": "^0.11.6",
134
+ "prettier": "^3.5.3",
135
+ "prettier-plugin-organize-imports": "^4.1.0",
136
+ "prettier-plugin-packagejson": "^2.5.10",
137
+ "rollup": "^4.37.0",
126
138
  "rollup-plugin-peer-deps-external": "^2.2.4",
127
- "tslib": "^2.6.3",
128
- "typescript": "^5.5.3",
129
- "yarn-upgrade-all": "^0.7.2"
139
+ "tslib": "^2.8.1",
140
+ "typescript": "^5.8.2"
130
141
  },
131
142
  "peerDependencies": {
132
143
  "react": "*",
@@ -135,7 +146,7 @@
135
146
  "tslib": "*"
136
147
  },
137
148
  "optionalDependencies": {
138
- "@rollup/rollup-linux-x64-gnu": "^4.13.2"
149
+ "@rollup/rollup-linux-x64-gnu": "^4.37.0"
139
150
  },
140
151
  "packageManager": "yarn@4.3.1",
141
152
  "publishConfig": {
@@ -1,4 +1,4 @@
1
- import * as lodash from 'lodash';
1
+ import { isNull } from 'lodash-es';
2
2
  import { EnvironmentEnum } from '../enums/EnvironmentEnum';
3
3
  import { OutputMap } from '../interfaces/Config/OutputMap';
4
4
  import { OutputOptions } from '../interfaces/Config/OutputOptions';
@@ -170,7 +170,7 @@ const contentMap = (key: string, value: any, exportAs: string): string => {
170
170
 
171
171
  switch (exportAs) {
172
172
  case 'ts':
173
- if (lodash.isNull(value)) {
173
+ if (isNull(value)) {
174
174
  content += `export const ${key}: string | null = ${value};\n`;
175
175
  } else if (typeof value === 'boolean') {
176
176
  content += `export const ${key}: boolean = ${value};\n`;
@@ -0,0 +1,34 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { DeviceEnum } from '../enums/DeviceEnum';
3
+
4
+ const useDevice = (): DeviceEnum => {
5
+ const [deviceType, setDevice] = useState<DeviceEnum>(DeviceEnum.PC);
6
+
7
+ useEffect(() => {
8
+ const isTouchDevice = () =>
9
+ 'ontouchstart' in window || navigator.maxTouchPoints > 0;
10
+ const isPortrait = () =>
11
+ window.screen.orientation?.type.includes('portrait') ||
12
+ window.innerHeight > window.innerWidth;
13
+ const hasMouse = () => 'onmousemove' in window;
14
+
15
+ const detectDevice = () => {
16
+ if (isTouchDevice() && isPortrait() && !hasMouse()) {
17
+ setDevice(DeviceEnum.MOBILE);
18
+ } else {
19
+ setDevice(DeviceEnum.PC);
20
+ }
21
+ };
22
+
23
+ detectDevice();
24
+ window.addEventListener('resize', detectDevice);
25
+
26
+ return () => {
27
+ window.removeEventListener('resize', detectDevice);
28
+ };
29
+ }, []);
30
+
31
+ return deviceType;
32
+ };
33
+
34
+ export default useDevice;
@@ -0,0 +1,29 @@
1
+ import { useSyncExternalStore } from 'react';
2
+
3
+ const getDataSEStoreFromLocalStorage = (key: string): string => {
4
+ return window.localStorage.getItem(key) || '';
5
+ };
6
+
7
+ const subscribe = (key: string, callback: () => void): (() => void) => {
8
+ window.addEventListener(key, callback);
9
+
10
+ return () => {
11
+ window.removeEventListener(key, callback);
12
+ };
13
+ };
14
+
15
+ const useSEStore = (key: string) => {
16
+ const dataSEStore = useSyncExternalStore(
17
+ (callback: () => void) => subscribe(key, callback),
18
+ () => getDataSEStoreFromLocalStorage(key),
19
+ );
20
+
21
+ const setDataSEStore = (key: string, value: string) => {
22
+ window.localStorage.setItem(key, value);
23
+ window.dispatchEvent(new Event(key));
24
+ };
25
+
26
+ return { dataSEStore, setDataSEStore };
27
+ };
28
+
29
+ export default useSEStore;
@@ -0,0 +1,44 @@
1
+ import { Howl } from 'howler';
2
+ import { useEffect, useState } from 'react';
3
+
4
+ export interface UseSoundProps {
5
+ src: string;
6
+ volume?: number;
7
+ autoplay?: boolean;
8
+ loop?: boolean;
9
+ }
10
+
11
+ const useSound = ({
12
+ src,
13
+ volume,
14
+ autoplay = false,
15
+ loop = false,
16
+ }: UseSoundProps) => {
17
+ const [audio, setAudio] = useState<Howl | null>(null);
18
+
19
+ useEffect(() => {
20
+ const howl = new Howl({
21
+ src: src,
22
+ onplayerror: (e, d) => {
23
+ console.log('onplayerror', e, d);
24
+
25
+ howl.once('unlock', () => {
26
+ // howl.play();
27
+ });
28
+ },
29
+ loop: loop ? true : false,
30
+ volume: volume,
31
+ autoplay: autoplay,
32
+ });
33
+
34
+ setAudio(howl);
35
+
36
+ return () => {
37
+ howl.unload();
38
+ };
39
+ }, []);
40
+
41
+ return [audio] as const;
42
+ };
43
+
44
+ export default useSound;