@multiplatform.one/router 5.0.26 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/dist/cjs/hooks/index.cjs +31 -0
  2. package/dist/cjs/hooks/index.native.js +34 -0
  3. package/dist/cjs/hooks/index.native.js.map +1 -0
  4. package/dist/cjs/hooks/useUrlState.cjs +185 -0
  5. package/dist/cjs/hooks/useUrlState.native.js +203 -0
  6. package/dist/cjs/hooks/useUrlState.native.js.map +1 -0
  7. package/dist/cjs/hooks/useUrlState.spec.cjs +280 -0
  8. package/dist/cjs/hooks/useUrlState.spec.native.js +315 -0
  9. package/dist/cjs/hooks/useUrlState.spec.native.js.map +1 -0
  10. package/dist/cjs/index.cjs +9 -6
  11. package/dist/cjs/index.native.js +16 -13
  12. package/dist/cjs/index.native.js.map +1 -6
  13. package/dist/cjs/index.storybook.cjs +34 -0
  14. package/dist/cjs/index.storybook.native.js +37 -0
  15. package/dist/cjs/index.storybook.native.js.map +1 -0
  16. package/dist/cjs/router/EmptyRouter.cjs +78 -0
  17. package/dist/cjs/router/EmptyRouter.native.js +106 -0
  18. package/dist/cjs/router/EmptyRouter.native.js.map +1 -0
  19. package/dist/cjs/router/ReactRouter.cjs +107 -0
  20. package/dist/cjs/router/ReactRouter.native.js +135 -0
  21. package/dist/cjs/router/ReactRouter.native.js.map +1 -0
  22. package/dist/cjs/router/index.cjs +17 -67
  23. package/dist/cjs/router/index.native.js +22 -81
  24. package/dist/cjs/router/index.native.js.map +1 -6
  25. package/dist/cjs/router/index.storybook-expo.cjs +8 -6
  26. package/dist/cjs/router/index.storybook-expo.native.js +14 -11
  27. package/dist/cjs/router/index.storybook-expo.native.js.map +1 -6
  28. package/dist/cjs/router/index.storybook.cjs +8 -6
  29. package/dist/cjs/router/index.storybook.native.js +14 -11
  30. package/dist/cjs/router/index.storybook.native.js.map +1 -6
  31. package/dist/cjs/router/index.webext.cjs +8 -6
  32. package/dist/cjs/router/index.webext.native.js +14 -11
  33. package/dist/cjs/router/index.webext.native.js.map +1 -6
  34. package/dist/cjs/types.cjs +7 -5
  35. package/dist/cjs/types.native.js +11 -5
  36. package/dist/cjs/types.native.js.map +1 -6
  37. package/dist/esm/hooks/index.mjs +3 -0
  38. package/dist/esm/hooks/index.mjs.map +1 -0
  39. package/dist/esm/hooks/index.native.js +3 -0
  40. package/dist/esm/hooks/index.native.js.map +1 -0
  41. package/dist/esm/hooks/useUrlState.mjs +157 -0
  42. package/dist/esm/hooks/useUrlState.mjs.map +1 -0
  43. package/dist/esm/hooks/useUrlState.native.js +172 -0
  44. package/dist/esm/hooks/useUrlState.native.js.map +1 -0
  45. package/dist/esm/hooks/useUrlState.spec.mjs +257 -0
  46. package/dist/esm/hooks/useUrlState.spec.mjs.map +1 -0
  47. package/dist/esm/hooks/useUrlState.spec.native.js +289 -0
  48. package/dist/esm/hooks/useUrlState.spec.native.js.map +1 -0
  49. package/dist/esm/index.mjs +1 -0
  50. package/dist/esm/index.mjs.map +1 -1
  51. package/dist/esm/index.native.js +4 -3
  52. package/dist/esm/index.native.js.map +1 -6
  53. package/dist/esm/index.storybook.mjs +5 -0
  54. package/dist/esm/index.storybook.mjs.map +1 -0
  55. package/dist/esm/index.storybook.native.js +5 -0
  56. package/dist/esm/index.storybook.native.js.map +1 -0
  57. package/dist/esm/router/EmptyRouter.mjs +49 -0
  58. package/dist/esm/router/EmptyRouter.mjs.map +1 -0
  59. package/dist/esm/router/EmptyRouter.native.js +74 -0
  60. package/dist/esm/router/EmptyRouter.native.js.map +1 -0
  61. package/dist/esm/router/ReactRouter.mjs +79 -0
  62. package/dist/esm/router/ReactRouter.mjs.map +1 -0
  63. package/dist/esm/router/ReactRouter.native.js +104 -0
  64. package/dist/esm/router/ReactRouter.native.js.map +1 -0
  65. package/dist/esm/router/index.mjs +1 -53
  66. package/dist/esm/router/index.mjs.map +1 -1
  67. package/dist/esm/router/index.native.js +3 -71
  68. package/dist/esm/router/index.native.js.map +1 -6
  69. package/dist/esm/router/index.storybook-expo.mjs +1 -1
  70. package/dist/esm/router/index.storybook-expo.mjs.map +1 -1
  71. package/dist/esm/router/index.storybook-expo.native.js +2 -2
  72. package/dist/esm/router/index.storybook-expo.native.js.map +1 -6
  73. package/dist/esm/router/index.storybook.mjs +1 -1
  74. package/dist/esm/router/index.storybook.mjs.map +1 -1
  75. package/dist/esm/router/index.storybook.native.js +2 -2
  76. package/dist/esm/router/index.storybook.native.js.map +1 -6
  77. package/dist/esm/router/index.webext.mjs +1 -1
  78. package/dist/esm/router/index.webext.mjs.map +1 -1
  79. package/dist/esm/router/index.webext.native.js +2 -2
  80. package/dist/esm/router/index.webext.native.js.map +1 -6
  81. package/dist/esm/types.native.js +2 -1
  82. package/dist/esm/types.native.js.map +1 -6
  83. package/dist/jsx/hooks/index.mjs +3 -0
  84. package/dist/jsx/hooks/index.mjs.map +1 -0
  85. package/dist/jsx/hooks/index.native.js +34 -0
  86. package/dist/jsx/hooks/index.native.js.map +1 -0
  87. package/dist/jsx/hooks/useUrlState.mjs +157 -0
  88. package/dist/jsx/hooks/useUrlState.mjs.map +1 -0
  89. package/dist/jsx/hooks/useUrlState.native.js +203 -0
  90. package/dist/jsx/hooks/useUrlState.native.js.map +1 -0
  91. package/dist/jsx/hooks/useUrlState.spec.mjs +257 -0
  92. package/dist/jsx/hooks/useUrlState.spec.mjs.map +1 -0
  93. package/dist/jsx/hooks/useUrlState.spec.native.js +315 -0
  94. package/dist/jsx/hooks/useUrlState.spec.native.js.map +1 -0
  95. package/dist/jsx/index.js +3 -2
  96. package/dist/jsx/index.js.map +1 -6
  97. package/dist/jsx/index.mjs +1 -0
  98. package/dist/jsx/index.mjs.map +1 -1
  99. package/dist/jsx/index.native.js +25 -3
  100. package/dist/jsx/index.native.js.map +1 -6
  101. package/dist/jsx/index.storybook.mjs +5 -0
  102. package/dist/jsx/index.storybook.mjs.map +1 -0
  103. package/dist/jsx/index.storybook.native.js +37 -0
  104. package/dist/jsx/index.storybook.native.js.map +1 -0
  105. package/dist/jsx/router/EmptyRouter.mjs +49 -0
  106. package/dist/jsx/router/EmptyRouter.mjs.map +1 -0
  107. package/dist/jsx/router/EmptyRouter.native.js +106 -0
  108. package/dist/jsx/router/EmptyRouter.native.js.map +1 -0
  109. package/dist/jsx/router/ReactRouter.mjs +79 -0
  110. package/dist/jsx/router/ReactRouter.mjs.map +1 -0
  111. package/dist/jsx/router/ReactRouter.native.js +135 -0
  112. package/dist/jsx/router/ReactRouter.native.js.map +1 -0
  113. package/dist/jsx/router/index.mjs +1 -53
  114. package/dist/jsx/router/index.mjs.map +1 -1
  115. package/dist/jsx/router/index.native.js +31 -68
  116. package/dist/jsx/router/index.native.js.map +1 -6
  117. package/dist/jsx/router/index.storybook-expo.mjs +1 -1
  118. package/dist/jsx/router/index.storybook-expo.mjs.map +1 -1
  119. package/dist/jsx/router/index.storybook-expo.native.js +23 -2
  120. package/dist/jsx/router/index.storybook-expo.native.js.map +1 -6
  121. package/dist/jsx/router/index.storybook.mjs +1 -1
  122. package/dist/jsx/router/index.storybook.mjs.map +1 -1
  123. package/dist/jsx/router/index.storybook.native.js +23 -2
  124. package/dist/jsx/router/index.storybook.native.js.map +1 -6
  125. package/dist/jsx/router/index.webext.mjs +1 -1
  126. package/dist/jsx/router/index.webext.mjs.map +1 -1
  127. package/dist/jsx/router/index.webext.native.js +23 -2
  128. package/dist/jsx/router/index.webext.native.js.map +1 -6
  129. package/dist/jsx/types.native.js +21 -1
  130. package/dist/jsx/types.native.js.map +1 -6
  131. package/package.json +46 -36
  132. package/src/hooks/README.md +232 -0
  133. package/src/hooks/index.ts +8 -0
  134. package/src/hooks/useUrlState.spec.ts +219 -0
  135. package/src/hooks/useUrlState.ts +231 -0
  136. package/src/index.storybook.ts +3 -0
  137. package/src/index.ts +1 -21
  138. package/src/router/EmptyRouter.tsx +50 -0
  139. package/src/router/{reactRouter.tsx → ReactRouter.tsx} +27 -22
  140. package/src/router/index.storybook-expo.tsx +1 -22
  141. package/src/router/index.storybook.tsx +1 -22
  142. package/src/router/index.tsx +1 -97
  143. package/src/router/index.webext.tsx +1 -22
  144. package/src/types.tsx +3 -24
  145. package/dist/cjs/index.js +0 -16
  146. package/dist/cjs/index.js.map +0 -6
  147. package/dist/cjs/router/emptyRouter.cjs +0 -55
  148. package/dist/cjs/router/emptyRouter.js +0 -47
  149. package/dist/cjs/router/emptyRouter.js.map +0 -6
  150. package/dist/cjs/router/emptyRouter.native.js +0 -77
  151. package/dist/cjs/router/emptyRouter.native.js.map +0 -6
  152. package/dist/cjs/router/index.electron.cjs +0 -18
  153. package/dist/cjs/router/index.electron.js +0 -15
  154. package/dist/cjs/router/index.electron.js.map +0 -6
  155. package/dist/cjs/router/index.electron.native.js +0 -20
  156. package/dist/cjs/router/index.electron.native.js.map +0 -6
  157. package/dist/cjs/router/index.js +0 -63
  158. package/dist/cjs/router/index.js.map +0 -6
  159. package/dist/cjs/router/index.storybook-expo.js +0 -15
  160. package/dist/cjs/router/index.storybook-expo.js.map +0 -6
  161. package/dist/cjs/router/index.storybook.js +0 -15
  162. package/dist/cjs/router/index.storybook.js.map +0 -6
  163. package/dist/cjs/router/index.webext.js +0 -15
  164. package/dist/cjs/router/index.webext.js.map +0 -6
  165. package/dist/cjs/router/reactRouter.cjs +0 -74
  166. package/dist/cjs/router/reactRouter.js +0 -48
  167. package/dist/cjs/router/reactRouter.js.map +0 -6
  168. package/dist/cjs/router/reactRouter.native.js +0 -96
  169. package/dist/cjs/router/reactRouter.native.js.map +0 -6
  170. package/dist/cjs/types.js +0 -14
  171. package/dist/cjs/types.js.map +0 -6
  172. package/dist/esm/index.js +0 -3
  173. package/dist/esm/index.js.map +0 -6
  174. package/dist/esm/router/emptyRouter.js +0 -31
  175. package/dist/esm/router/emptyRouter.js.map +0 -6
  176. package/dist/esm/router/emptyRouter.mjs +0 -29
  177. package/dist/esm/router/emptyRouter.mjs.map +0 -1
  178. package/dist/esm/router/emptyRouter.native.js +0 -54
  179. package/dist/esm/router/emptyRouter.native.js.map +0 -6
  180. package/dist/esm/router/index.electron.js +0 -2
  181. package/dist/esm/router/index.electron.js.map +0 -6
  182. package/dist/esm/router/index.electron.mjs +0 -2
  183. package/dist/esm/router/index.electron.mjs.map +0 -1
  184. package/dist/esm/router/index.electron.native.js +0 -2
  185. package/dist/esm/router/index.electron.native.js.map +0 -6
  186. package/dist/esm/router/index.js +0 -52
  187. package/dist/esm/router/index.js.map +0 -6
  188. package/dist/esm/router/index.storybook-expo.js +0 -2
  189. package/dist/esm/router/index.storybook-expo.js.map +0 -6
  190. package/dist/esm/router/index.storybook.js +0 -2
  191. package/dist/esm/router/index.storybook.js.map +0 -6
  192. package/dist/esm/router/index.webext.js +0 -2
  193. package/dist/esm/router/index.webext.js.map +0 -6
  194. package/dist/esm/router/reactRouter.js +0 -38
  195. package/dist/esm/router/reactRouter.js.map +0 -6
  196. package/dist/esm/router/reactRouter.mjs +0 -48
  197. package/dist/esm/router/reactRouter.mjs.map +0 -1
  198. package/dist/esm/router/reactRouter.native.js +0 -74
  199. package/dist/esm/router/reactRouter.native.js.map +0 -6
  200. package/dist/esm/types.js +0 -1
  201. package/dist/esm/types.js.map +0 -6
  202. package/dist/jsx/router/emptyRouter.js +0 -31
  203. package/dist/jsx/router/emptyRouter.js.map +0 -6
  204. package/dist/jsx/router/emptyRouter.mjs +0 -29
  205. package/dist/jsx/router/emptyRouter.mjs.map +0 -1
  206. package/dist/jsx/router/emptyRouter.native.js +0 -54
  207. package/dist/jsx/router/emptyRouter.native.js.map +0 -6
  208. package/dist/jsx/router/index.electron.js +0 -2
  209. package/dist/jsx/router/index.electron.js.map +0 -6
  210. package/dist/jsx/router/index.electron.mjs +0 -2
  211. package/dist/jsx/router/index.electron.mjs.map +0 -1
  212. package/dist/jsx/router/index.electron.native.js +0 -2
  213. package/dist/jsx/router/index.electron.native.js.map +0 -6
  214. package/dist/jsx/router/index.js +0 -52
  215. package/dist/jsx/router/index.js.map +0 -6
  216. package/dist/jsx/router/index.storybook-expo.js +0 -2
  217. package/dist/jsx/router/index.storybook-expo.js.map +0 -6
  218. package/dist/jsx/router/index.storybook.js +0 -2
  219. package/dist/jsx/router/index.storybook.js.map +0 -6
  220. package/dist/jsx/router/index.webext.js +0 -2
  221. package/dist/jsx/router/index.webext.js.map +0 -6
  222. package/dist/jsx/router/reactRouter.js +0 -38
  223. package/dist/jsx/router/reactRouter.js.map +0 -6
  224. package/dist/jsx/router/reactRouter.mjs +0 -48
  225. package/dist/jsx/router/reactRouter.mjs.map +0 -1
  226. package/dist/jsx/router/reactRouter.native.js +0 -74
  227. package/dist/jsx/router/reactRouter.native.js.map +0 -6
  228. package/dist/jsx/types.js +0 -1
  229. package/dist/jsx/types.js.map +0 -6
  230. package/src/router/emptyRouter.tsx +0 -56
  231. package/src/router/index.electron.tsx +0 -22
  232. package/types/index.d.ts +0 -3
  233. package/types/index.d.ts.map +0 -1
  234. package/types/router/emptyRouter.d.ts +0 -26
  235. package/types/router/emptyRouter.d.ts.map +0 -1
  236. package/types/router/index.d.ts +0 -27
  237. package/types/router/index.d.ts.map +0 -1
  238. package/types/router/index.electron.d.ts +0 -22
  239. package/types/router/index.electron.d.ts.map +0 -1
  240. package/types/router/index.storybook-expo.d.ts +0 -22
  241. package/types/router/index.storybook-expo.d.ts.map +0 -1
  242. package/types/router/index.storybook.d.ts +0 -22
  243. package/types/router/index.storybook.d.ts.map +0 -1
  244. package/types/router/index.webext.d.ts +0 -22
  245. package/types/router/index.webext.d.ts.map +0 -1
  246. package/types/router/reactRouter.d.ts +0 -27
  247. package/types/router/reactRouter.d.ts.map +0 -1
  248. package/types/types.d.ts +0 -60
  249. package/types/types.d.ts.map +0 -1
@@ -0,0 +1,31 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var hooks_exports = {};
24
+ __export(hooks_exports, {
25
+ useSearchParams: () => import_useUrlState.useSearchParams,
26
+ useShareableUrl: () => import_useUrlState.useShareableUrl,
27
+ useTypedSearchParams: () => import_useUrlState.useTypedSearchParams,
28
+ useUrlState: () => import_useUrlState.useUrlState
29
+ });
30
+ module.exports = __toCommonJS(hooks_exports);
31
+ var import_useUrlState = require("./useUrlState.cjs");
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var hooks_exports = {};
26
+ __export(hooks_exports, {
27
+ useSearchParams: () => import_useUrlState.useSearchParams,
28
+ useShareableUrl: () => import_useUrlState.useShareableUrl,
29
+ useTypedSearchParams: () => import_useUrlState.useTypedSearchParams,
30
+ useUrlState: () => import_useUrlState.useUrlState
31
+ });
32
+ module.exports = __toCommonJS(hooks_exports);
33
+ var import_useUrlState = require("./useUrlState.native.js");
34
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","hooks_exports","__export","useSearchParams","import_useUrlState","useShareableUrl","useTypedSearchParams","useUrlState","module","exports"],"sources":["../../../src/hooks/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD,eAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAD,kBAAA,CAAAC,eAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAF,kBAAA,CAAAE,oBAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAH,kBAAA,CAAAG;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAb,YAOO,CAAAK,aAAA","ignoreList":[]}
@@ -0,0 +1,185 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var useUrlState_exports = {};
24
+ __export(useUrlState_exports, {
25
+ useSearchParams: () => useSearchParams,
26
+ useShareableUrl: () => useShareableUrl,
27
+ useTypedSearchParams: () => useTypedSearchParams,
28
+ useUrlState: () => useUrlState
29
+ });
30
+ module.exports = __toCommonJS(useUrlState_exports);
31
+ var import_react = require("react");
32
+ var import_platform = require("@multiplatform.one/platform");
33
+ var import_router = require("../router/index.cjs");
34
+ function useSearchParams() {
35
+ const router = (0, import_router.useRouter)();
36
+ const currentParams = (0, import_router.useParams)();
37
+ const debounceTimerRef = (0, import_react.useRef)(void 0);
38
+ const searchParams = (0, import_react.useMemo)(() => {
39
+ const params = {};
40
+ Object.entries(currentParams).forEach(([key, value]) => {
41
+ if (value !== void 0 && value !== null) {
42
+ params[key] = value;
43
+ }
44
+ });
45
+ return params;
46
+ }, [currentParams]);
47
+ const setSearchParams = (0, import_react.useCallback)((newParams, options = {}) => {
48
+ const {
49
+ replace: _replace = true,
50
+ debounceMs = 0
51
+ } = options;
52
+ const updateParams = () => {
53
+ const updatedParams = typeof newParams === "function" ? newParams(searchParams) : newParams;
54
+ const cleanParams = {};
55
+ Object.entries(updatedParams).forEach(([key, value]) => {
56
+ if (value !== void 0 && value !== null && value !== "") {
57
+ cleanParams[key] = value;
58
+ }
59
+ });
60
+ router.setParams(cleanParams);
61
+ };
62
+ if (debounceMs > 0) {
63
+ if (debounceTimerRef.current) {
64
+ clearTimeout(debounceTimerRef.current);
65
+ }
66
+ debounceTimerRef.current = setTimeout(updateParams, debounceMs);
67
+ } else {
68
+ updateParams();
69
+ }
70
+ }, [router, searchParams]);
71
+ (0, import_react.useEffect)(() => {
72
+ return () => {
73
+ if (debounceTimerRef.current) {
74
+ clearTimeout(debounceTimerRef.current);
75
+ }
76
+ };
77
+ }, []);
78
+ return [searchParams, setSearchParams];
79
+ }
80
+ function useUrlState(defaultValues, options = {}) {
81
+ const {
82
+ debounceMs = 500,
83
+ serialize = value => {
84
+ const params = {};
85
+ Object.entries(value).forEach(([key, val]) => {
86
+ if (val !== void 0 && val !== null && val !== "") {
87
+ if (Array.isArray(val)) {
88
+ params[key] = val.map(String);
89
+ } else if (typeof val === "object") {
90
+ params[key] = JSON.stringify(val);
91
+ } else {
92
+ params[key] = String(val);
93
+ }
94
+ }
95
+ });
96
+ return params;
97
+ },
98
+ deserialize = params => {
99
+ const result = {};
100
+ Object.entries(params).forEach(([key, value]) => {
101
+ if (key in defaultValues) {
102
+ const defaultValue = defaultValues[key];
103
+ if (value === void 0) {
104
+ result[key] = defaultValue;
105
+ } else if (Array.isArray(defaultValue)) {
106
+ result[key] = Array.isArray(value) ? value : [value];
107
+ } else if (typeof defaultValue === "boolean") {
108
+ result[key] = value === "true";
109
+ } else if (typeof defaultValue === "number") {
110
+ result[key] = Number(value);
111
+ } else if (typeof defaultValue === "object" && defaultValue !== null) {
112
+ try {
113
+ result[key] = JSON.parse(String(value));
114
+ } catch {
115
+ result[key] = defaultValue;
116
+ }
117
+ } else {
118
+ result[key] = value;
119
+ }
120
+ }
121
+ });
122
+ Object.keys(defaultValues).forEach(key => {
123
+ if (!(key in result)) {
124
+ result[key] = defaultValues[key];
125
+ }
126
+ });
127
+ return result;
128
+ }
129
+ } = options;
130
+ const [searchParams, setSearchParams] = useSearchParams();
131
+ const currentState = (0, import_react.useMemo)(() => {
132
+ return deserialize(searchParams);
133
+ }, [searchParams, deserialize]);
134
+ const setState = (0, import_react.useCallback)(newState => {
135
+ const updatedState = typeof newState === "function" ? newState(currentState) : newState;
136
+ const mergedState = {
137
+ ...currentState,
138
+ ...updatedState
139
+ };
140
+ const serialized = serialize(mergedState);
141
+ setSearchParams(serialized, {
142
+ debounceMs
143
+ });
144
+ }, [currentState, serialize, setSearchParams, debounceMs]);
145
+ return [currentState, setState];
146
+ }
147
+ function useShareableUrl() {
148
+ const params = (0, import_router.useParams)();
149
+ const shareableUrl = (0, import_react.useMemo)(() => {
150
+ if (!import_platform.isWeb || typeof window === "undefined") {
151
+ return "";
152
+ }
153
+ const url = new URL(window.location.href);
154
+ url.search = "";
155
+ Object.entries(params).forEach(([key, value]) => {
156
+ if (value !== void 0 && value !== null && value !== "") {
157
+ if (Array.isArray(value)) {
158
+ value.forEach(v => url.searchParams.append(key, String(v)));
159
+ } else {
160
+ url.searchParams.set(key, String(value));
161
+ }
162
+ }
163
+ });
164
+ return url.toString();
165
+ }, [params]);
166
+ return shareableUrl;
167
+ }
168
+ function useTypedSearchParams(schema) {
169
+ const params = (0, import_router.useParams)();
170
+ const typedParams = (0, import_react.useMemo)(() => {
171
+ const result = {};
172
+ Object.entries(schema).forEach(([key, config]) => {
173
+ const rawValue = params[key];
174
+ if (config.parse) {
175
+ result[key] = config.parse(rawValue);
176
+ } else if (rawValue === void 0) {
177
+ result[key] = config.default;
178
+ } else {
179
+ result[key] = rawValue;
180
+ }
181
+ });
182
+ return result;
183
+ }, [params, schema]);
184
+ return typedParams;
185
+ }
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var useUrlState_exports = {};
26
+ __export(useUrlState_exports, {
27
+ useSearchParams: () => useSearchParams,
28
+ useShareableUrl: () => useShareableUrl,
29
+ useTypedSearchParams: () => useTypedSearchParams,
30
+ useUrlState: () => useUrlState
31
+ });
32
+ module.exports = __toCommonJS(useUrlState_exports);
33
+ var import_react = require("react");
34
+ var import_platform = require("@multiplatform.one/platform");
35
+ var import_router = require("../router/index.native.js");
36
+ function _type_of(obj) {
37
+ "@swc/helpers - typeof";
38
+
39
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
40
+ }
41
+ function useSearchParams() {
42
+ var router = (0, import_router.useRouter)();
43
+ var currentParams = (0, import_router.useParams)();
44
+ var debounceTimerRef = (0, import_react.useRef)(void 0);
45
+ var searchParams = (0, import_react.useMemo)(function () {
46
+ var params = {};
47
+ Object.entries(currentParams).forEach(function (param) {
48
+ var [key, value] = param;
49
+ if (value !== void 0 && value !== null) {
50
+ params[key] = value;
51
+ }
52
+ });
53
+ return params;
54
+ }, [currentParams]);
55
+ var setSearchParams = (0, import_react.useCallback)(function (newParams) {
56
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
57
+ var {
58
+ replace: _replace = true,
59
+ debounceMs = 0
60
+ } = options;
61
+ var updateParams = function updateParams2() {
62
+ var updatedParams = typeof newParams === "function" ? newParams(searchParams) : newParams;
63
+ var cleanParams = {};
64
+ Object.entries(updatedParams).forEach(function (param) {
65
+ var [key, value] = param;
66
+ if (value !== void 0 && value !== null && value !== "") {
67
+ cleanParams[key] = value;
68
+ }
69
+ });
70
+ router.setParams(cleanParams);
71
+ };
72
+ if (debounceMs > 0) {
73
+ if (debounceTimerRef.current) {
74
+ clearTimeout(debounceTimerRef.current);
75
+ }
76
+ debounceTimerRef.current = setTimeout(updateParams, debounceMs);
77
+ } else {
78
+ updateParams();
79
+ }
80
+ }, [router, searchParams]);
81
+ (0, import_react.useEffect)(function () {
82
+ return function () {
83
+ if (debounceTimerRef.current) {
84
+ clearTimeout(debounceTimerRef.current);
85
+ }
86
+ };
87
+ }, []);
88
+ return [searchParams, setSearchParams];
89
+ }
90
+ function useUrlState(defaultValues) {
91
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
92
+ var {
93
+ debounceMs = 500,
94
+ serialize = function (value) {
95
+ var params = {};
96
+ Object.entries(value).forEach(function (param) {
97
+ var [key, val] = param;
98
+ if (val !== void 0 && val !== null && val !== "") {
99
+ if (Array.isArray(val)) {
100
+ params[key] = val.map(String);
101
+ } else if ((typeof val === "undefined" ? "undefined" : _type_of(val)) === "object") {
102
+ params[key] = JSON.stringify(val);
103
+ } else {
104
+ params[key] = String(val);
105
+ }
106
+ }
107
+ });
108
+ return params;
109
+ },
110
+ deserialize = function (params) {
111
+ var result = {};
112
+ Object.entries(params).forEach(function (param) {
113
+ var [key, value] = param;
114
+ if (key in defaultValues) {
115
+ var defaultValue = defaultValues[key];
116
+ if (value === void 0) {
117
+ result[key] = defaultValue;
118
+ } else if (Array.isArray(defaultValue)) {
119
+ result[key] = Array.isArray(value) ? value : [value];
120
+ } else if (typeof defaultValue === "boolean") {
121
+ result[key] = value === "true";
122
+ } else if (typeof defaultValue === "number") {
123
+ result[key] = Number(value);
124
+ } else if ((typeof defaultValue === "undefined" ? "undefined" : _type_of(defaultValue)) === "object" && defaultValue !== null) {
125
+ try {
126
+ result[key] = JSON.parse(String(value));
127
+ } catch (unused) {
128
+ result[key] = defaultValue;
129
+ }
130
+ } else {
131
+ result[key] = value;
132
+ }
133
+ }
134
+ });
135
+ Object.keys(defaultValues).forEach(function (key) {
136
+ if (!(key in result)) {
137
+ result[key] = defaultValues[key];
138
+ }
139
+ });
140
+ return result;
141
+ }
142
+ } = options;
143
+ var [searchParams, setSearchParams] = useSearchParams();
144
+ var currentState = (0, import_react.useMemo)(function () {
145
+ return deserialize(searchParams);
146
+ }, [searchParams, deserialize]);
147
+ var setState = (0, import_react.useCallback)(function (newState) {
148
+ var updatedState = typeof newState === "function" ? newState(currentState) : newState;
149
+ var mergedState = {
150
+ ...currentState,
151
+ ...updatedState
152
+ };
153
+ var serialized = serialize(mergedState);
154
+ setSearchParams(serialized, {
155
+ debounceMs
156
+ });
157
+ }, [currentState, serialize, setSearchParams, debounceMs]);
158
+ return [currentState, setState];
159
+ }
160
+ function useShareableUrl() {
161
+ var params = (0, import_router.useParams)();
162
+ var shareableUrl = (0, import_react.useMemo)(function () {
163
+ if (!import_platform.isWeb || typeof window === "undefined") {
164
+ return "";
165
+ }
166
+ var url = new URL(window.location.href);
167
+ url.search = "";
168
+ Object.entries(params).forEach(function (param) {
169
+ var [key, value] = param;
170
+ if (value !== void 0 && value !== null && value !== "") {
171
+ if (Array.isArray(value)) {
172
+ value.forEach(function (v) {
173
+ return url.searchParams.append(key, String(v));
174
+ });
175
+ } else {
176
+ url.searchParams.set(key, String(value));
177
+ }
178
+ }
179
+ });
180
+ return url.toString();
181
+ }, [params]);
182
+ return shareableUrl;
183
+ }
184
+ function useTypedSearchParams(schema) {
185
+ var params = (0, import_router.useParams)();
186
+ var typedParams = (0, import_react.useMemo)(function () {
187
+ var result = {};
188
+ Object.entries(schema).forEach(function (param) {
189
+ var [key, config] = param;
190
+ var rawValue = params[key];
191
+ if (config.parse) {
192
+ result[key] = config.parse(rawValue);
193
+ } else if (rawValue === void 0) {
194
+ result[key] = config.default;
195
+ } else {
196
+ result[key] = rawValue;
197
+ }
198
+ });
199
+ return result;
200
+ }, [params, schema]);
201
+ return typedParams;
202
+ }
203
+ //# sourceMappingURL=useUrlState.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useUrlState_exports","__export","useSearchParams","useShareableUrl","useTypedSearchParams","useUrlState","module","exports","import_react","require","import_platform","import_router","_type_of","obj","Symbol","constructor","router","useRouter","currentParams","useParams","debounceTimerRef","useRef","searchParams","useMemo","params","Object","entries","forEach","param","key","setSearchParams","useCallback","newParams","options","arguments","length","replace","_replace","debounceMs","updateParams","updateParams2","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useEffect","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","unused","keys","currentState","setState","newState","updatedState","mergedState","serialized","shareableUrl","isWeb","window","url","URL","location","href","search"],"sources":["../../../src/hooks/useUrlState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}