@cargo-ai/utils 1.0.4

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 (251) hide show
  1. package/build/array.js +52 -0
  2. package/build/collection.js +155 -0
  3. package/build/components.js +56 -0
  4. package/build/cron.js +19 -0
  5. package/build/delay.js +52 -0
  6. package/build/hooks/index.js +35 -0
  7. package/build/hooks/useClickOutside.js +46 -0
  8. package/build/hooks/useCountAnimation.js +34 -0
  9. package/build/hooks/useDeviceType.js +54 -0
  10. package/build/hooks/useEventListener.js +27 -0
  11. package/build/hooks/useHeight.js +26 -0
  12. package/build/hooks/usePictureInPicture.js +126 -0
  13. package/build/hooks/useResizeObserver.js +35 -0
  14. package/build/hooks/useScrollPosition.js +22 -0
  15. package/build/hooks/useStepper.js +138 -0
  16. package/build/hooks/useStorageState.js +110 -0
  17. package/build/hooks/useVideoPlayer/VideoManager.js +78 -0
  18. package/build/hooks/useVideoPlayer/index.js +5 -0
  19. package/build/hooks/useVideoPlayer/useVideoPlayer.js +100 -0
  20. package/build/hooks/useWillUnmountEffect.js +13 -0
  21. package/build/index.js +28 -0
  22. package/build/json.js +81 -0
  23. package/build/random.js +7 -0
  24. package/build/src/array.d.ts +16 -0
  25. package/build/src/array.d.ts.map +1 -0
  26. package/build/src/array.js +81 -0
  27. package/build/src/base64.d.ts +3 -0
  28. package/build/src/base64.d.ts.map +1 -0
  29. package/build/src/base64.js +6 -0
  30. package/build/src/bytes.d.ts +7 -0
  31. package/build/src/bytes.d.ts.map +1 -0
  32. package/build/src/bytes.js +71 -0
  33. package/build/src/collection/deepMergeObjects.d.ts +2 -0
  34. package/build/src/collection/deepMergeObjects.d.ts.map +1 -0
  35. package/build/src/collection/deepMergeObjects.js +30 -0
  36. package/build/src/collection/index.d.ts +2 -0
  37. package/build/src/collection/index.d.ts.map +1 -0
  38. package/build/src/collection/index.js +1 -0
  39. package/build/src/collection.d.ts +22 -0
  40. package/build/src/collection.d.ts.map +1 -0
  41. package/build/src/collection.js +210 -0
  42. package/build/src/colors.d.ts +2 -0
  43. package/build/src/colors.d.ts.map +1 -0
  44. package/build/src/colors.js +14 -0
  45. package/build/src/components.d.ts +4 -0
  46. package/build/src/components.js +45 -0
  47. package/build/src/credits.d.ts +7 -0
  48. package/build/src/credits.d.ts.map +1 -0
  49. package/build/src/credits.js +88 -0
  50. package/build/src/cron.d.ts +3 -0
  51. package/build/src/cron.d.ts.map +1 -0
  52. package/build/src/cron.js +16 -0
  53. package/build/src/date/getContextTimezone.d.ts +2 -0
  54. package/build/src/date/getContextTimezone.d.ts.map +1 -0
  55. package/build/src/date/getContextTimezone.js +3 -0
  56. package/build/src/date/getDate.d.ts +8 -0
  57. package/build/src/date/getDate.d.ts.map +1 -0
  58. package/build/src/date/getDate.js +25 -0
  59. package/build/src/date/getDateString.d.ts +8 -0
  60. package/build/src/date/getDateString.d.ts.map +1 -0
  61. package/build/src/date/getDateString.js +13 -0
  62. package/build/src/date/getDatesDifferenceString.d.ts +2 -0
  63. package/build/src/date/getDatesDifferenceString.d.ts.map +1 -0
  64. package/build/src/date/getDatesDifferenceString.js +17 -0
  65. package/build/src/date/getTimeFromNowString.d.ts +2 -0
  66. package/build/src/date/getTimeFromNowString.d.ts.map +1 -0
  67. package/build/src/date/getTimeFromNowString.js +8 -0
  68. package/build/src/date/getTimezoneHoursOffset.d.ts +2 -0
  69. package/build/src/date/getTimezoneHoursOffset.d.ts.map +1 -0
  70. package/build/src/date/getTimezoneHoursOffset.js +7 -0
  71. package/build/src/date/getTimezoneOffsetString.d.ts +2 -0
  72. package/build/src/date/getTimezoneOffsetString.d.ts.map +1 -0
  73. package/build/src/date/getTimezoneOffsetString.js +8 -0
  74. package/build/src/date/index.d.ts +8 -0
  75. package/build/src/date/index.d.ts.map +1 -0
  76. package/build/src/date/index.js +7 -0
  77. package/build/src/date.d.ts +13 -0
  78. package/build/src/date.d.ts.map +1 -0
  79. package/build/src/date.js +14 -0
  80. package/build/src/delay.d.ts +7 -0
  81. package/build/src/delay.d.ts.map +1 -0
  82. package/build/src/delay.js +19 -0
  83. package/build/src/expression/getExpressionNodesReferences.d.ts +17 -0
  84. package/build/src/expression/getExpressionNodesReferences.d.ts.map +1 -0
  85. package/build/src/expression/getExpressionNodesReferences.js +71 -0
  86. package/build/src/expression/getObjectAccessKeysBeforeCursor.d.ts +17 -0
  87. package/build/src/expression/getObjectAccessKeysBeforeCursor.d.ts.map +1 -0
  88. package/build/src/expression/getObjectAccessKeysBeforeCursor.js +97 -0
  89. package/build/src/expression/index.d.ts +3 -0
  90. package/build/src/expression/index.d.ts.map +1 -0
  91. package/build/src/expression/index.js +2 -0
  92. package/build/src/expression/jsonSchema.d.ts +4 -0
  93. package/build/src/expression/jsonSchema.d.ts.map +1 -0
  94. package/build/src/expression/jsonSchema.js +85 -0
  95. package/build/src/expression/matchIsExpression.d.ts +2 -0
  96. package/build/src/expression/matchIsExpression.d.ts.map +1 -0
  97. package/build/src/expression/matchIsExpression.js +10 -0
  98. package/build/src/expression/matchIsExpressionObject.d.ts +2 -0
  99. package/build/src/expression/matchIsExpressionObject.d.ts.map +1 -0
  100. package/build/src/expression/matchIsExpressionObject.js +10 -0
  101. package/build/src/expression/matchIsExpressionString.d.ts +2 -0
  102. package/build/src/expression/matchIsExpressionString.d.ts.map +1 -0
  103. package/build/src/expression/matchIsExpressionString.js +4 -0
  104. package/build/src/gclid.d.ts +4 -0
  105. package/build/src/gclid.d.ts.map +1 -0
  106. package/build/src/gclid.js +30 -0
  107. package/build/src/hooks/index.d.ts +12 -0
  108. package/build/src/hooks/index.js +12 -0
  109. package/build/src/hooks/useClickOutside.d.ts +4 -0
  110. package/build/src/hooks/useClickOutside.js +42 -0
  111. package/build/src/hooks/useCountAnimation.d.ts +1 -0
  112. package/build/src/hooks/useCountAnimation.js +30 -0
  113. package/build/src/hooks/useDeviceType.d.ts +2 -0
  114. package/build/src/hooks/useDeviceType.js +50 -0
  115. package/build/src/hooks/useEventListener.d.ts +6 -0
  116. package/build/src/hooks/useEventListener.js +23 -0
  117. package/build/src/hooks/useHeight.d.ts +2 -0
  118. package/build/src/hooks/useHeight.js +20 -0
  119. package/build/src/hooks/usePictureInPicture.d.ts +9 -0
  120. package/build/src/hooks/usePictureInPicture.js +60 -0
  121. package/build/src/hooks/useResizeObserver.d.ts +4 -0
  122. package/build/src/hooks/useResizeObserver.js +31 -0
  123. package/build/src/hooks/useScrollPosition.d.ts +5 -0
  124. package/build/src/hooks/useScrollPosition.js +18 -0
  125. package/build/src/hooks/useStepper.d.ts +26 -0
  126. package/build/src/hooks/useStepper.js +136 -0
  127. package/build/src/hooks/useStorageState.d.ts +12 -0
  128. package/build/src/hooks/useStorageState.js +53 -0
  129. package/build/src/hooks/useVideoPlayer/VideoManager.d.ts +18 -0
  130. package/build/src/hooks/useVideoPlayer/VideoManager.js +72 -0
  131. package/build/src/hooks/useVideoPlayer/index.d.ts +1 -0
  132. package/build/src/hooks/useVideoPlayer/index.js +1 -0
  133. package/build/src/hooks/useVideoPlayer/useVideoPlayer.d.ts +15 -0
  134. package/build/src/hooks/useVideoPlayer/useVideoPlayer.js +96 -0
  135. package/build/src/hooks/useWillUnmountEffect.d.ts +1 -0
  136. package/build/src/hooks/useWillUnmountEffect.js +8 -0
  137. package/build/src/index.d.ts +27 -0
  138. package/build/src/index.d.ts.map +1 -0
  139. package/build/src/index.js +26 -0
  140. package/build/src/integration.d.ts +14 -0
  141. package/build/src/integration.d.ts.map +1 -0
  142. package/build/src/integration.js +72 -0
  143. package/build/src/json/castToJsonType.d.ts +5 -0
  144. package/build/src/json/castToJsonType.d.ts.map +1 -0
  145. package/build/src/json/castToJsonType.js +58 -0
  146. package/build/src/json/cleanJson.d.ts +3 -0
  147. package/build/src/json/cleanJson.d.ts.map +1 -0
  148. package/build/src/json/cleanJson.js +18 -0
  149. package/build/src/json/constants.d.ts +3 -0
  150. package/build/src/json/constants.d.ts.map +1 -0
  151. package/build/src/json/constants.js +9 -0
  152. package/build/src/json/getJsonType.d.ts +3 -0
  153. package/build/src/json/getJsonType.d.ts.map +1 -0
  154. package/build/src/json/getJsonType.js +24 -0
  155. package/build/src/json/index.d.ts +8 -0
  156. package/build/src/json/index.d.ts.map +1 -0
  157. package/build/src/json/index.js +7 -0
  158. package/build/src/json/isJson.d.ts +2 -0
  159. package/build/src/json/isJson.d.ts.map +1 -0
  160. package/build/src/json/isJson.js +9 -0
  161. package/build/src/json/isJsonSchemaEmpty.d.ts +3 -0
  162. package/build/src/json/isJsonSchemaEmpty.d.ts.map +1 -0
  163. package/build/src/json/isJsonSchemaEmpty.js +7 -0
  164. package/build/src/json/stringifyJson.d.ts +2 -0
  165. package/build/src/json/stringifyJson.d.ts.map +1 -0
  166. package/build/src/json/stringifyJson.js +6 -0
  167. package/build/src/json/types.d.ts +2 -0
  168. package/build/src/json/types.d.ts.map +1 -0
  169. package/build/src/json/types.js +1 -0
  170. package/build/src/json.d.ts +13 -0
  171. package/build/src/json.d.ts.map +1 -0
  172. package/build/src/json.js +107 -0
  173. package/build/src/jsonSchema/index.d.ts +10 -0
  174. package/build/src/jsonSchema/index.d.ts.map +1 -0
  175. package/build/src/jsonSchema/index.js +198 -0
  176. package/build/src/jsonSchema.d.ts +5 -0
  177. package/build/src/jsonSchema.d.ts.map +1 -0
  178. package/build/src/jsonSchema.js +73 -0
  179. package/build/src/number/formatCredits.d.ts +2 -0
  180. package/build/src/number/formatCredits.d.ts.map +1 -0
  181. package/build/src/number/formatCredits.js +7 -0
  182. package/build/src/number/formatPrice.d.ts +2 -0
  183. package/build/src/number/formatPrice.d.ts.map +1 -0
  184. package/build/src/number/formatPrice.js +8 -0
  185. package/build/src/number/getNumberWithMaxDecimals.d.ts +2 -0
  186. package/build/src/number/getNumberWithMaxDecimals.d.ts.map +1 -0
  187. package/build/src/number/getNumberWithMaxDecimals.js +3 -0
  188. package/build/src/number/index.d.ts +4 -0
  189. package/build/src/number/index.d.ts.map +1 -0
  190. package/build/src/number/index.js +3 -0
  191. package/build/src/poll.d.ts +5 -0
  192. package/build/src/poll.d.ts.map +1 -0
  193. package/build/src/poll.js +30 -0
  194. package/build/src/random.d.ts +2 -0
  195. package/build/src/random.d.ts.map +1 -0
  196. package/build/src/random.js +3 -0
  197. package/build/src/schema.d.ts +24 -0
  198. package/build/src/schema.d.ts.map +1 -0
  199. package/build/src/schema.js +315 -0
  200. package/build/src/searchInTree.d.ts +46 -0
  201. package/build/src/searchInTree.d.ts.map +1 -0
  202. package/build/src/searchInTree.js +67 -0
  203. package/build/src/storage.d.ts +13 -0
  204. package/build/src/storage.d.ts.map +1 -0
  205. package/build/src/storage.js +169 -0
  206. package/build/src/string/capitalizeFirstLetter.d.ts +2 -0
  207. package/build/src/string/capitalizeFirstLetter.d.ts.map +1 -0
  208. package/build/src/string/capitalizeFirstLetter.js +3 -0
  209. package/build/src/string/findAllIndexOf.d.ts +2 -0
  210. package/build/src/string/findAllIndexOf.d.ts.map +1 -0
  211. package/build/src/string/findAllIndexOf.js +13 -0
  212. package/build/src/string/getHash.d.ts +2 -0
  213. package/build/src/string/getHash.d.ts.map +1 -0
  214. package/build/src/string/getHash.js +9 -0
  215. package/build/src/string/index.d.ts +5 -0
  216. package/build/src/string/index.d.ts.map +1 -0
  217. package/build/src/string/index.js +4 -0
  218. package/build/src/string/sentenceCase.d.ts +2 -0
  219. package/build/src/string/sentenceCase.d.ts.map +1 -0
  220. package/build/src/string/sentenceCase.js +38 -0
  221. package/build/src/string.d.ts +2 -0
  222. package/build/src/string.d.ts.map +1 -0
  223. package/build/src/string.js +3 -0
  224. package/build/src/type.d.ts +10 -0
  225. package/build/src/type.js +1 -0
  226. package/build/src/types.d.ts +22 -0
  227. package/build/src/types.d.ts.map +1 -0
  228. package/build/src/types.js +1 -0
  229. package/build/src/user.d.ts +3 -0
  230. package/build/src/user.d.ts.map +1 -0
  231. package/build/src/user.js +7 -0
  232. package/build/src/validation/index.d.ts +2 -0
  233. package/build/src/validation/index.d.ts.map +1 -0
  234. package/build/src/validation/index.js +1 -0
  235. package/build/src/validation/matchIsObjectLike.d.ts +2 -0
  236. package/build/src/validation/matchIsObjectLike.d.ts.map +1 -0
  237. package/build/src/validation/matchIsObjectLike.js +4 -0
  238. package/build/src/vm.d.ts +1 -0
  239. package/build/src/vm.js +32 -0
  240. package/build/src/zod/index.d.ts +14 -0
  241. package/build/src/zod/index.d.ts.map +1 -0
  242. package/build/src/zod/index.js +210 -0
  243. package/build/src/zod.d.ts +8 -0
  244. package/build/src/zod.d.ts.map +1 -0
  245. package/build/src/zod.js +89 -0
  246. package/build/storage.js +285 -0
  247. package/build/string.js +17 -0
  248. package/build/tsconfig.tsbuildinfo +1 -0
  249. package/build/type.js +2 -0
  250. package/build/user.js +12 -0
  251. package/package.json +50 -0
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.usePictureInPicture = void 0;
40
+ var react_1 = require("react");
41
+ function usePictureInPicture(videoRef) {
42
+ var _this = this;
43
+ var _a = react_1.default.useState(false), isPipAvailable = _a[0], setIsPipAvailable = _a[1];
44
+ var _b = react_1.default.useState(false), isPipActive = _b[0], setIsPipActive = _b[1];
45
+ var pipWindowRef = react_1.default.useRef(null);
46
+ react_1.default.useEffect(function () {
47
+ setIsPipAvailable(document.pictureInPictureEnabled === true);
48
+ }, []);
49
+ var enterPip = react_1.default.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
50
+ var videoElement, _a, error_1;
51
+ return __generator(this, function (_b) {
52
+ switch (_b.label) {
53
+ case 0:
54
+ videoElement = videoRef.current;
55
+ if (videoElement === null || isPipAvailable === false) {
56
+ return [2 /*return*/];
57
+ }
58
+ _b.label = 1;
59
+ case 1:
60
+ _b.trys.push([1, 3, , 4]);
61
+ _a = pipWindowRef;
62
+ return [4 /*yield*/, videoElement.requestPictureInPicture()];
63
+ case 2:
64
+ _a.current = _b.sent();
65
+ setIsPipActive(true);
66
+ videoElement.play();
67
+ return [3 /*break*/, 4];
68
+ case 3:
69
+ error_1 = _b.sent();
70
+ console.error("Failed to enter Picture-in-Picture mode:", { error: error_1 });
71
+ return [3 /*break*/, 4];
72
+ case 4: return [2 /*return*/];
73
+ }
74
+ });
75
+ }); }, [isPipAvailable, videoRef]);
76
+ var exitPip = react_1.default.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
77
+ var error_2;
78
+ return __generator(this, function (_a) {
79
+ switch (_a.label) {
80
+ case 0:
81
+ if (document.pictureInPictureElement === null) {
82
+ return [2 /*return*/];
83
+ }
84
+ _a.label = 1;
85
+ case 1:
86
+ _a.trys.push([1, 3, , 4]);
87
+ return [4 /*yield*/, document.exitPictureInPicture()];
88
+ case 2:
89
+ _a.sent();
90
+ setIsPipActive(false);
91
+ return [3 /*break*/, 4];
92
+ case 3:
93
+ error_2 = _a.sent();
94
+ console.error("Failed to exit Picture-in-Picture mode:", { error: error_2 });
95
+ return [3 /*break*/, 4];
96
+ case 4: return [2 /*return*/];
97
+ }
98
+ });
99
+ }); }, []);
100
+ var handlePipChange = react_1.default.useCallback(function () {
101
+ var isPipActive = document.pictureInPictureElement === videoRef.current;
102
+ setIsPipActive(isPipActive);
103
+ }, [videoRef]);
104
+ react_1.default.useEffect(function () {
105
+ var videoElement = videoRef.current;
106
+ if (videoElement === null) {
107
+ return;
108
+ }
109
+ videoElement.addEventListener("enterpictureinpicture", handlePipChange);
110
+ videoElement.addEventListener("leavepictureinpicture", handlePipChange);
111
+ return function () {
112
+ videoElement.removeEventListener("enterpictureinpicture", handlePipChange);
113
+ videoElement.removeEventListener("leavepictureinpicture", handlePipChange);
114
+ };
115
+ }, [handlePipChange, videoRef]);
116
+ var values = react_1.default.useMemo(function () {
117
+ return {
118
+ isPipAvailable: isPipAvailable,
119
+ isPipActive: isPipActive,
120
+ enterPip: enterPip,
121
+ exitPip: exitPip,
122
+ };
123
+ }, [enterPip, exitPip, isPipActive, isPipAvailable]);
124
+ return values;
125
+ }
126
+ exports.usePictureInPicture = usePictureInPicture;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useResizeObserver = void 0;
4
+ var resize_observer_1 = require("@juggle/resize-observer");
5
+ var react_1 = require("react");
6
+ function useResizeObserver(ref, callback) {
7
+ react_1.default.useEffect(function () {
8
+ var element = ref === null ? null : "current" in ref ? ref.current : ref;
9
+ if (element === null || callback === undefined) {
10
+ return;
11
+ }
12
+ var observer = new resize_observer_1.ResizeObserver(function (entries) {
13
+ // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523
14
+ requestAnimationFrame(function () {
15
+ if (!Array.isArray(entries) || !entries.length) {
16
+ return;
17
+ }
18
+ // By the time the animation frame fires, the DOM might have be unmounted already
19
+ if (element === null || callback === undefined) {
20
+ return;
21
+ }
22
+ var entry = entries[0];
23
+ if (entry === undefined) {
24
+ return;
25
+ }
26
+ callback(entry.contentRect);
27
+ });
28
+ });
29
+ observer.observe(element);
30
+ return function () {
31
+ observer.disconnect();
32
+ };
33
+ }, [ref, callback]);
34
+ }
35
+ exports.useResizeObserver = useResizeObserver;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useScrollPosition = void 0;
4
+ var react_1 = require("react");
5
+ var useEventListener_js_1 = require("./useEventListener.js");
6
+ function useScrollPosition() {
7
+ var elementRef = react_1.default.useRef(null);
8
+ var _a = react_1.default.useState(true), isScrollAtStart = _a[0], setIsScrollAtStart = _a[1];
9
+ var _b = react_1.default.useState(false), isScrollAtEnd = _b[0], setIsScrollAtEnd = _b[1];
10
+ var onScroll = react_1.default.useCallback(function () {
11
+ var element = elementRef.current;
12
+ if (element === null) {
13
+ return;
14
+ }
15
+ var scrollTop = element.scrollTop, scrollHeight = element.scrollHeight, clientHeight = element.clientHeight;
16
+ setIsScrollAtStart(scrollTop === 0);
17
+ setIsScrollAtEnd(scrollTop + clientHeight >= scrollHeight);
18
+ }, []);
19
+ (0, useEventListener_js_1.useEventListener)("scroll", onScroll, elementRef);
20
+ return [elementRef, { isScrollAtStart: isScrollAtStart, isScrollAtEnd: isScrollAtEnd }];
21
+ }
22
+ exports.useScrollPosition = useScrollPosition;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.useStepper = void 0;
15
+ var react_1 = require("react");
16
+ function useStepper(props) {
17
+ var steps = props.steps, initialStep = props.initialStep, onStep = props.onStep;
18
+ react_1.default.useEffect(function () {
19
+ checkUniqueKeys(steps);
20
+ }, [steps]);
21
+ var initialIndex = react_1.default.useMemo(function () {
22
+ var stepIndex = steps.findIndex(function (step) {
23
+ return step.key === initialStep;
24
+ });
25
+ if (stepIndex === -1) {
26
+ return 0;
27
+ }
28
+ return stepIndex;
29
+ }, [initialStep, steps]);
30
+ var _a = react_1.default.useState(initialIndex), stepIndex = _a[0], setStepIndex = _a[1];
31
+ var step = react_1.default.useMemo(function () {
32
+ return steps[stepIndex];
33
+ }, [stepIndex, steps]);
34
+ var isFirstStep = react_1.default.useMemo(function () {
35
+ return stepIndex === 0;
36
+ }, [stepIndex]);
37
+ var isLastStep = react_1.default.useMemo(function () {
38
+ return stepIndex === steps.length - 1;
39
+ }, [stepIndex, steps.length]);
40
+ var goToNextStep = react_1.default.useCallback(function () {
41
+ setStepIndex(function (currentStepIndex) {
42
+ var nextIndex = Math.min(currentStepIndex + 1, steps.length - 1);
43
+ var nextStep = steps[nextIndex];
44
+ if (nextStep !== undefined && onStep !== undefined) {
45
+ onStep(nextStep, nextIndex);
46
+ }
47
+ return nextIndex;
48
+ });
49
+ }, [steps, onStep]);
50
+ var goToPreviousStep = react_1.default.useCallback(function () {
51
+ setStepIndex(function (currentStepIndex) {
52
+ var previousIndex = Math.max(currentStepIndex - 1, 0);
53
+ var previousStep = steps[previousIndex];
54
+ if (previousStep !== undefined && onStep !== undefined) {
55
+ onStep(previousStep, previousIndex);
56
+ }
57
+ return previousIndex;
58
+ });
59
+ }, [steps, onStep]);
60
+ var goToStep = react_1.default.useCallback(function (key) {
61
+ var index = steps.findIndex(function (curentStep) {
62
+ return curentStep.key === key;
63
+ });
64
+ if (index === -1) {
65
+ return;
66
+ }
67
+ setStepIndex(index);
68
+ var indexStep = steps[index];
69
+ if (indexStep !== undefined && onStep !== undefined) {
70
+ onStep(indexStep, index);
71
+ }
72
+ }, [steps, onStep]);
73
+ var reset = react_1.default.useCallback(function () {
74
+ setStepIndex(initialIndex);
75
+ var initialIndexStep = steps[initialIndex];
76
+ if (initialIndexStep !== undefined && onStep !== undefined) {
77
+ onStep(initialIndexStep, initialIndex);
78
+ }
79
+ }, [initialIndex, steps, onStep]);
80
+ var ComponentWithInjectedProps = react_1.default.useMemo(function () {
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, react/display-name
82
+ return function (props) {
83
+ if (step === undefined) {
84
+ return null;
85
+ }
86
+ return react_1.default.createElement(step.Component, __assign(__assign({}, props), { step: step, stepIndex: stepIndex, isFirstStep: isFirstStep, isLastStep: isLastStep, goToNextStep: goToNextStep, goToPreviousStep: goToPreviousStep, goToStep: goToStep, reset: reset }));
87
+ };
88
+ }, [
89
+ step,
90
+ goToStep,
91
+ isFirstStep,
92
+ isLastStep,
93
+ goToNextStep,
94
+ goToPreviousStep,
95
+ reset,
96
+ stepIndex,
97
+ ]);
98
+ var currentStep = react_1.default.useMemo(function () {
99
+ if (step === undefined) {
100
+ return undefined;
101
+ }
102
+ return __assign(__assign({}, step), { Component: ComponentWithInjectedProps });
103
+ }, [ComponentWithInjectedProps, step]);
104
+ var values = react_1.default.useMemo(function () {
105
+ return {
106
+ step: currentStep,
107
+ stepIndex: stepIndex,
108
+ isFirstStep: isFirstStep,
109
+ isLastStep: isLastStep,
110
+ goToNextStep: goToNextStep,
111
+ goToPreviousStep: goToPreviousStep,
112
+ goToStep: goToStep,
113
+ reset: reset,
114
+ };
115
+ }, [
116
+ currentStep,
117
+ stepIndex,
118
+ isFirstStep,
119
+ isLastStep,
120
+ goToNextStep,
121
+ goToPreviousStep,
122
+ goToStep,
123
+ reset,
124
+ ]);
125
+ return values;
126
+ }
127
+ exports.useStepper = useStepper;
128
+ function checkUniqueKeys(steps) {
129
+ var keys = steps.map(function (step) {
130
+ return step.key;
131
+ });
132
+ var duplicates = keys.filter(function (key, index) {
133
+ return keys.indexOf(key) !== index;
134
+ });
135
+ if (duplicates.length > 0) {
136
+ throw new Error("Duplicate step keys found: ".concat(duplicates.join(", ")));
137
+ }
138
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.useStorageState = void 0;
40
+ var react_1 = require("react");
41
+ var storage_js_1 = require("../storage.js");
42
+ function useStorageState(options) {
43
+ var _this = this;
44
+ var key = options.key, defaultValue = options.defaultValue, _a = options.storage, storage = _a === void 0 ? "localStorage" : _a, getValueOverrideAfterRestore = options.getValueOverrideAfterRestore, matchIsValueToBeStored = options.matchIsValueToBeStored;
45
+ var _b = react_1.default.useState(defaultValue), storedValue = _b[0], setStoreValue = _b[1];
46
+ var _c = react_1.default.useState(false), hasRestoredValue = _c[0], setHasRestoredValue = _c[1];
47
+ var isRestoringValueRef = react_1.default.useRef(false);
48
+ var lastKeyRestoredRef = react_1.default.useRef(undefined);
49
+ var callbacksAfterRestoreRef = react_1.default.useRef([]);
50
+ react_1.default.useEffect(function () {
51
+ if (key === undefined || key === lastKeyRestoredRef.current) {
52
+ return;
53
+ }
54
+ setHasRestoredValue(false);
55
+ isRestoringValueRef.current = true;
56
+ lastKeyRestoredRef.current = key;
57
+ var updateRestoredStorageValue = function () { return __awaiter(_this, void 0, void 0, function () {
58
+ var storageValue, restoredValue, _a, restoredValueAfterCallbacks, _i, _b, callback;
59
+ return __generator(this, function (_c) {
60
+ switch (_c.label) {
61
+ case 0: return [4 /*yield*/, (0, storage_js_1.getItemFromStorage)(key, { storage: storage })];
62
+ case 1:
63
+ storageValue = _c.sent();
64
+ if (!(getValueOverrideAfterRestore !== undefined)) return [3 /*break*/, 3];
65
+ return [4 /*yield*/, getValueOverrideAfterRestore(storageValue)];
66
+ case 2:
67
+ _a = _c.sent();
68
+ return [3 /*break*/, 4];
69
+ case 3:
70
+ _a = storageValue;
71
+ _c.label = 4;
72
+ case 4:
73
+ restoredValue = _a;
74
+ if (restoredValue !== undefined) {
75
+ restoredValueAfterCallbacks = restoredValue;
76
+ // eslint-disable-next-line no-restricted-syntax
77
+ for (_i = 0, _b = callbacksAfterRestoreRef.current; _i < _b.length; _i++) {
78
+ callback = _b[_i];
79
+ restoredValueAfterCallbacks = callback(restoredValueAfterCallbacks);
80
+ }
81
+ setStoreValue(restoredValueAfterCallbacks);
82
+ }
83
+ setHasRestoredValue(true);
84
+ isRestoringValueRef.current = false;
85
+ callbacksAfterRestoreRef.current = [];
86
+ return [2 /*return*/];
87
+ }
88
+ });
89
+ }); };
90
+ updateRestoredStorageValue();
91
+ }, [defaultValue, getValueOverrideAfterRestore, key, storage]);
92
+ var setValue = react_1.default.useCallback(function (value) {
93
+ if (isRestoringValueRef.current === true) {
94
+ callbacksAfterRestoreRef.current.push(value instanceof Function ? value : function () { return value; });
95
+ return;
96
+ }
97
+ var valueToStore = value instanceof Function ? value(storedValue) : value;
98
+ setStoreValue(valueToStore);
99
+ if (key !== undefined &&
100
+ (matchIsValueToBeStored === undefined ||
101
+ matchIsValueToBeStored(valueToStore))) {
102
+ (0, storage_js_1.setItemInStorage)(key, valueToStore, { storage: storage });
103
+ }
104
+ }, [key, storedValue, matchIsValueToBeStored, storage]);
105
+ var returnValue = react_1.default.useMemo(function () {
106
+ return [storedValue, setValue, hasRestoredValue];
107
+ }, [storedValue, setValue, hasRestoredValue]);
108
+ return returnValue;
109
+ }
110
+ exports.useStorageState = useStorageState;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VideoManager = void 0;
4
+ // Singleton to ensure unique video element
5
+ var VideoManager = /** @class */ (function () {
6
+ function VideoManager() {
7
+ this.videoElement = null;
8
+ this.isPlaying = false;
9
+ this.hasStarted = false;
10
+ this.currentTime = 0;
11
+ }
12
+ VideoManager.getInstance = function () {
13
+ if (VideoManager.instance === null) {
14
+ VideoManager.instance = new VideoManager();
15
+ }
16
+ return VideoManager.instance;
17
+ };
18
+ VideoManager.prototype.setVideoElement = function (video) {
19
+ if (this.videoElement !== null && this.videoElement !== video) {
20
+ this.saveVideoState();
21
+ this.releaseVideo();
22
+ }
23
+ this.videoElement = video;
24
+ this.restoreVideoState();
25
+ };
26
+ VideoManager.prototype.getVideoElement = function () {
27
+ return this.videoElement;
28
+ };
29
+ VideoManager.prototype.play = function () {
30
+ if (this.videoElement === null) {
31
+ return;
32
+ }
33
+ this.videoElement.play();
34
+ this.isPlaying = true;
35
+ this.hasStarted = true;
36
+ };
37
+ VideoManager.prototype.pause = function () {
38
+ if (this.videoElement === null) {
39
+ return;
40
+ }
41
+ this.videoElement.pause();
42
+ this.isPlaying = false;
43
+ };
44
+ VideoManager.prototype.saveVideoState = function () {
45
+ if (this.videoElement === null) {
46
+ return;
47
+ }
48
+ this.currentTime = this.videoElement.currentTime;
49
+ this.isPlaying = this.videoElement.paused === false;
50
+ this.hasStarted = this.isPlaying || this.currentTime > 0;
51
+ };
52
+ VideoManager.prototype.restoreVideoState = function () {
53
+ if (this.videoElement === null) {
54
+ return;
55
+ }
56
+ this.videoElement.currentTime = this.currentTime;
57
+ if (this.isPlaying === true && this.videoElement.paused === true) {
58
+ this.videoElement.play();
59
+ }
60
+ };
61
+ VideoManager.prototype.releaseVideo = function () {
62
+ if (this.videoElement === null) {
63
+ return;
64
+ }
65
+ this.pause();
66
+ this.videoElement = null;
67
+ this.hasStarted = false;
68
+ };
69
+ VideoManager.prototype.isSameVideo = function (video) {
70
+ return this.videoElement === video;
71
+ };
72
+ VideoManager.prototype.getHasStarted = function () {
73
+ return this.hasStarted;
74
+ };
75
+ VideoManager.instance = null;
76
+ return VideoManager;
77
+ }());
78
+ exports.VideoManager = VideoManager;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useVideoPlayer = void 0;
4
+ var useVideoPlayer_js_1 = require("./useVideoPlayer.js");
5
+ Object.defineProperty(exports, "useVideoPlayer", { enumerable: true, get: function () { return useVideoPlayer_js_1.useVideoPlayer; } });
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useVideoPlayer = void 0;
4
+ var react_1 = require("react");
5
+ var VideoManager_js_1 = require("./VideoManager.js");
6
+ function useVideoPlayer() {
7
+ var videoRef = react_1.default.useRef(null);
8
+ var videoManagerRef = react_1.default.useRef(VideoManager_js_1.VideoManager.getInstance());
9
+ var _a = react_1.default.useState(false), isPlaying = _a[0], setIsPlaying = _a[1];
10
+ var _b = react_1.default.useState(videoManagerRef.current.getHasStarted()), hasStarted = _b[0], setHasStarted = _b[1];
11
+ var _c = react_1.default.useState(null), videoDuration = _c[0], setVideoDuration = _c[1];
12
+ var onPlayback = react_1.default.useCallback(function () {
13
+ var videoElement = videoRef.current;
14
+ if (videoElement === null) {
15
+ return;
16
+ }
17
+ var videoManager = videoManagerRef.current;
18
+ videoManager.setVideoElement(videoElement);
19
+ if (videoElement.paused === true || videoElement.ended === true) {
20
+ videoManager.play();
21
+ setIsPlaying(true);
22
+ setHasStarted(true);
23
+ }
24
+ else {
25
+ videoManager.pause();
26
+ setIsPlaying(false);
27
+ }
28
+ }, []);
29
+ var onVideoEnd = react_1.default.useCallback(function () {
30
+ var videoElement = videoRef.current;
31
+ if (videoElement === null) {
32
+ return;
33
+ }
34
+ var videoManager = videoManagerRef.current;
35
+ videoManager.releaseVideo();
36
+ videoManager.saveVideoState();
37
+ videoManager.pause();
38
+ setIsPlaying(false);
39
+ setHasStarted(false);
40
+ }, []);
41
+ react_1.default.useEffect(function () {
42
+ var videoElement = videoRef.current;
43
+ if (videoElement === null) {
44
+ return undefined;
45
+ }
46
+ var videoManager = videoManagerRef.current;
47
+ if (videoManager.isSameVideo(videoElement) === true) {
48
+ videoManager.restoreVideoState();
49
+ setHasStarted(videoManager.getHasStarted());
50
+ setIsPlaying(videoElement.paused === false);
51
+ }
52
+ else {
53
+ videoElement.currentTime = 0;
54
+ setHasStarted(false);
55
+ setIsPlaying(false);
56
+ }
57
+ var handlePlay = function () {
58
+ setIsPlaying(true);
59
+ setHasStarted(true);
60
+ };
61
+ var handlePause = function () {
62
+ setIsPlaying(false);
63
+ };
64
+ var handleEnded = function () {
65
+ setIsPlaying(false);
66
+ setHasStarted(false);
67
+ };
68
+ var handleLoadedMetadata = function () {
69
+ setVideoDuration(videoElement.duration);
70
+ };
71
+ videoElement.addEventListener("play", handlePlay);
72
+ videoElement.addEventListener("pause", handlePause);
73
+ videoElement.addEventListener("ended", handleEnded);
74
+ videoElement.addEventListener("loadedmetadata", handleLoadedMetadata);
75
+ return function () {
76
+ videoElement.removeEventListener("play", handlePlay);
77
+ videoElement.removeEventListener("pause", handlePause);
78
+ videoElement.removeEventListener("ended", handleEnded);
79
+ videoElement.removeEventListener("loadedmetadata", handleLoadedMetadata);
80
+ var videoManager = VideoManager_js_1.VideoManager.getInstance();
81
+ if (videoManager.isSameVideo(videoElement) === true) {
82
+ videoManager.saveVideoState();
83
+ }
84
+ };
85
+ }, []);
86
+ return react_1.default.useMemo(function () {
87
+ return [
88
+ videoRef,
89
+ {
90
+ isPlaying: isPlaying,
91
+ hasStarted: hasStarted,
92
+ onPlayback: onPlayback,
93
+ onVideoEnd: onVideoEnd,
94
+ videoDuration: videoDuration,
95
+ videoManager: videoManagerRef.current,
96
+ },
97
+ ];
98
+ }, [hasStarted, isPlaying, onPlayback, onVideoEnd, videoDuration]);
99
+ }
100
+ exports.useVideoPlayer = useVideoPlayer;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWillUnmountEffect = void 0;
4
+ var react_1 = require("react");
5
+ var useWillUnmountEffect = function (cleanupCallback) {
6
+ if (cleanupCallback === void 0) { cleanupCallback = function () { }; }
7
+ var callbackRef = react_1.default.useRef(cleanupCallback);
8
+ callbackRef.current = cleanupCallback; // always up to date
9
+ react_1.default.useEffect(function () {
10
+ return function () { return callbackRef.current(); };
11
+ }, []);
12
+ };
13
+ exports.useWillUnmountEffect = useWillUnmountEffect;
package/build/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./array.js"), exports);
18
+ __exportStar(require("./collection.js"), exports);
19
+ __exportStar(require("./components.js"), exports);
20
+ __exportStar(require("./cron.js"), exports);
21
+ __exportStar(require("./delay.js"), exports);
22
+ __exportStar(require("./hooks/index.js"), exports);
23
+ __exportStar(require("./json.js"), exports);
24
+ __exportStar(require("./random.js"), exports);
25
+ __exportStar(require("./storage.js"), exports);
26
+ __exportStar(require("./string.js"), exports);
27
+ __exportStar(require("./type.js"), exports);
28
+ __exportStar(require("./user.js"), exports);