@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.
- package/dist/cjs/hooks/index.cjs +31 -0
- package/dist/cjs/hooks/index.native.js +34 -0
- package/dist/cjs/hooks/index.native.js.map +1 -0
- package/dist/cjs/hooks/useUrlState.cjs +185 -0
- package/dist/cjs/hooks/useUrlState.native.js +203 -0
- package/dist/cjs/hooks/useUrlState.native.js.map +1 -0
- package/dist/cjs/hooks/useUrlState.spec.cjs +280 -0
- package/dist/cjs/hooks/useUrlState.spec.native.js +315 -0
- package/dist/cjs/hooks/useUrlState.spec.native.js.map +1 -0
- package/dist/cjs/index.cjs +9 -6
- package/dist/cjs/index.native.js +16 -13
- package/dist/cjs/index.native.js.map +1 -6
- package/dist/cjs/index.storybook.cjs +34 -0
- package/dist/cjs/index.storybook.native.js +37 -0
- package/dist/cjs/index.storybook.native.js.map +1 -0
- package/dist/cjs/router/EmptyRouter.cjs +78 -0
- package/dist/cjs/router/EmptyRouter.native.js +106 -0
- package/dist/cjs/router/EmptyRouter.native.js.map +1 -0
- package/dist/cjs/router/ReactRouter.cjs +107 -0
- package/dist/cjs/router/ReactRouter.native.js +135 -0
- package/dist/cjs/router/ReactRouter.native.js.map +1 -0
- package/dist/cjs/router/index.cjs +17 -67
- package/dist/cjs/router/index.native.js +22 -81
- package/dist/cjs/router/index.native.js.map +1 -6
- package/dist/cjs/router/index.storybook-expo.cjs +8 -6
- package/dist/cjs/router/index.storybook-expo.native.js +14 -11
- package/dist/cjs/router/index.storybook-expo.native.js.map +1 -6
- package/dist/cjs/router/index.storybook.cjs +8 -6
- package/dist/cjs/router/index.storybook.native.js +14 -11
- package/dist/cjs/router/index.storybook.native.js.map +1 -6
- package/dist/cjs/router/index.webext.cjs +8 -6
- package/dist/cjs/router/index.webext.native.js +14 -11
- package/dist/cjs/router/index.webext.native.js.map +1 -6
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/types.native.js +11 -5
- package/dist/cjs/types.native.js.map +1 -6
- package/dist/esm/hooks/index.mjs +3 -0
- package/dist/esm/hooks/index.mjs.map +1 -0
- package/dist/esm/hooks/index.native.js +3 -0
- package/dist/esm/hooks/index.native.js.map +1 -0
- package/dist/esm/hooks/useUrlState.mjs +157 -0
- package/dist/esm/hooks/useUrlState.mjs.map +1 -0
- package/dist/esm/hooks/useUrlState.native.js +172 -0
- package/dist/esm/hooks/useUrlState.native.js.map +1 -0
- package/dist/esm/hooks/useUrlState.spec.mjs +257 -0
- package/dist/esm/hooks/useUrlState.spec.mjs.map +1 -0
- package/dist/esm/hooks/useUrlState.spec.native.js +289 -0
- package/dist/esm/hooks/useUrlState.spec.native.js.map +1 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +4 -3
- package/dist/esm/index.native.js.map +1 -6
- package/dist/esm/index.storybook.mjs +5 -0
- package/dist/esm/index.storybook.mjs.map +1 -0
- package/dist/esm/index.storybook.native.js +5 -0
- package/dist/esm/index.storybook.native.js.map +1 -0
- package/dist/esm/router/EmptyRouter.mjs +49 -0
- package/dist/esm/router/EmptyRouter.mjs.map +1 -0
- package/dist/esm/router/EmptyRouter.native.js +74 -0
- package/dist/esm/router/EmptyRouter.native.js.map +1 -0
- package/dist/esm/router/ReactRouter.mjs +79 -0
- package/dist/esm/router/ReactRouter.mjs.map +1 -0
- package/dist/esm/router/ReactRouter.native.js +104 -0
- package/dist/esm/router/ReactRouter.native.js.map +1 -0
- package/dist/esm/router/index.mjs +1 -53
- package/dist/esm/router/index.mjs.map +1 -1
- package/dist/esm/router/index.native.js +3 -71
- package/dist/esm/router/index.native.js.map +1 -6
- package/dist/esm/router/index.storybook-expo.mjs +1 -1
- package/dist/esm/router/index.storybook-expo.mjs.map +1 -1
- package/dist/esm/router/index.storybook-expo.native.js +2 -2
- package/dist/esm/router/index.storybook-expo.native.js.map +1 -6
- package/dist/esm/router/index.storybook.mjs +1 -1
- package/dist/esm/router/index.storybook.mjs.map +1 -1
- package/dist/esm/router/index.storybook.native.js +2 -2
- package/dist/esm/router/index.storybook.native.js.map +1 -6
- package/dist/esm/router/index.webext.mjs +1 -1
- package/dist/esm/router/index.webext.mjs.map +1 -1
- package/dist/esm/router/index.webext.native.js +2 -2
- package/dist/esm/router/index.webext.native.js.map +1 -6
- package/dist/esm/types.native.js +2 -1
- package/dist/esm/types.native.js.map +1 -6
- package/dist/jsx/hooks/index.mjs +3 -0
- package/dist/jsx/hooks/index.mjs.map +1 -0
- package/dist/jsx/hooks/index.native.js +34 -0
- package/dist/jsx/hooks/index.native.js.map +1 -0
- package/dist/jsx/hooks/useUrlState.mjs +157 -0
- package/dist/jsx/hooks/useUrlState.mjs.map +1 -0
- package/dist/jsx/hooks/useUrlState.native.js +203 -0
- package/dist/jsx/hooks/useUrlState.native.js.map +1 -0
- package/dist/jsx/hooks/useUrlState.spec.mjs +257 -0
- package/dist/jsx/hooks/useUrlState.spec.mjs.map +1 -0
- package/dist/jsx/hooks/useUrlState.spec.native.js +315 -0
- package/dist/jsx/hooks/useUrlState.spec.native.js.map +1 -0
- package/dist/jsx/index.js +3 -2
- package/dist/jsx/index.js.map +1 -6
- package/dist/jsx/index.mjs +1 -0
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +25 -3
- package/dist/jsx/index.native.js.map +1 -6
- package/dist/jsx/index.storybook.mjs +5 -0
- package/dist/jsx/index.storybook.mjs.map +1 -0
- package/dist/jsx/index.storybook.native.js +37 -0
- package/dist/jsx/index.storybook.native.js.map +1 -0
- package/dist/jsx/router/EmptyRouter.mjs +49 -0
- package/dist/jsx/router/EmptyRouter.mjs.map +1 -0
- package/dist/jsx/router/EmptyRouter.native.js +106 -0
- package/dist/jsx/router/EmptyRouter.native.js.map +1 -0
- package/dist/jsx/router/ReactRouter.mjs +79 -0
- package/dist/jsx/router/ReactRouter.mjs.map +1 -0
- package/dist/jsx/router/ReactRouter.native.js +135 -0
- package/dist/jsx/router/ReactRouter.native.js.map +1 -0
- package/dist/jsx/router/index.mjs +1 -53
- package/dist/jsx/router/index.mjs.map +1 -1
- package/dist/jsx/router/index.native.js +31 -68
- package/dist/jsx/router/index.native.js.map +1 -6
- package/dist/jsx/router/index.storybook-expo.mjs +1 -1
- package/dist/jsx/router/index.storybook-expo.mjs.map +1 -1
- package/dist/jsx/router/index.storybook-expo.native.js +23 -2
- package/dist/jsx/router/index.storybook-expo.native.js.map +1 -6
- package/dist/jsx/router/index.storybook.mjs +1 -1
- package/dist/jsx/router/index.storybook.mjs.map +1 -1
- package/dist/jsx/router/index.storybook.native.js +23 -2
- package/dist/jsx/router/index.storybook.native.js.map +1 -6
- package/dist/jsx/router/index.webext.mjs +1 -1
- package/dist/jsx/router/index.webext.mjs.map +1 -1
- package/dist/jsx/router/index.webext.native.js +23 -2
- package/dist/jsx/router/index.webext.native.js.map +1 -6
- package/dist/jsx/types.native.js +21 -1
- package/dist/jsx/types.native.js.map +1 -6
- package/package.json +46 -36
- package/src/hooks/README.md +232 -0
- package/src/hooks/index.ts +8 -0
- package/src/hooks/useUrlState.spec.ts +219 -0
- package/src/hooks/useUrlState.ts +231 -0
- package/src/index.storybook.ts +3 -0
- package/src/index.ts +1 -21
- package/src/router/EmptyRouter.tsx +50 -0
- package/src/router/{reactRouter.tsx → ReactRouter.tsx} +27 -22
- package/src/router/index.storybook-expo.tsx +1 -22
- package/src/router/index.storybook.tsx +1 -22
- package/src/router/index.tsx +1 -97
- package/src/router/index.webext.tsx +1 -22
- package/src/types.tsx +3 -24
- package/dist/cjs/index.js +0 -16
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/router/emptyRouter.cjs +0 -55
- package/dist/cjs/router/emptyRouter.js +0 -47
- package/dist/cjs/router/emptyRouter.js.map +0 -6
- package/dist/cjs/router/emptyRouter.native.js +0 -77
- package/dist/cjs/router/emptyRouter.native.js.map +0 -6
- package/dist/cjs/router/index.electron.cjs +0 -18
- package/dist/cjs/router/index.electron.js +0 -15
- package/dist/cjs/router/index.electron.js.map +0 -6
- package/dist/cjs/router/index.electron.native.js +0 -20
- package/dist/cjs/router/index.electron.native.js.map +0 -6
- package/dist/cjs/router/index.js +0 -63
- package/dist/cjs/router/index.js.map +0 -6
- package/dist/cjs/router/index.storybook-expo.js +0 -15
- package/dist/cjs/router/index.storybook-expo.js.map +0 -6
- package/dist/cjs/router/index.storybook.js +0 -15
- package/dist/cjs/router/index.storybook.js.map +0 -6
- package/dist/cjs/router/index.webext.js +0 -15
- package/dist/cjs/router/index.webext.js.map +0 -6
- package/dist/cjs/router/reactRouter.cjs +0 -74
- package/dist/cjs/router/reactRouter.js +0 -48
- package/dist/cjs/router/reactRouter.js.map +0 -6
- package/dist/cjs/router/reactRouter.native.js +0 -96
- package/dist/cjs/router/reactRouter.native.js.map +0 -6
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +0 -6
- package/dist/esm/router/emptyRouter.js +0 -31
- package/dist/esm/router/emptyRouter.js.map +0 -6
- package/dist/esm/router/emptyRouter.mjs +0 -29
- package/dist/esm/router/emptyRouter.mjs.map +0 -1
- package/dist/esm/router/emptyRouter.native.js +0 -54
- package/dist/esm/router/emptyRouter.native.js.map +0 -6
- package/dist/esm/router/index.electron.js +0 -2
- package/dist/esm/router/index.electron.js.map +0 -6
- package/dist/esm/router/index.electron.mjs +0 -2
- package/dist/esm/router/index.electron.mjs.map +0 -1
- package/dist/esm/router/index.electron.native.js +0 -2
- package/dist/esm/router/index.electron.native.js.map +0 -6
- package/dist/esm/router/index.js +0 -52
- package/dist/esm/router/index.js.map +0 -6
- package/dist/esm/router/index.storybook-expo.js +0 -2
- package/dist/esm/router/index.storybook-expo.js.map +0 -6
- package/dist/esm/router/index.storybook.js +0 -2
- package/dist/esm/router/index.storybook.js.map +0 -6
- package/dist/esm/router/index.webext.js +0 -2
- package/dist/esm/router/index.webext.js.map +0 -6
- package/dist/esm/router/reactRouter.js +0 -38
- package/dist/esm/router/reactRouter.js.map +0 -6
- package/dist/esm/router/reactRouter.mjs +0 -48
- package/dist/esm/router/reactRouter.mjs.map +0 -1
- package/dist/esm/router/reactRouter.native.js +0 -74
- package/dist/esm/router/reactRouter.native.js.map +0 -6
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
- package/dist/jsx/router/emptyRouter.js +0 -31
- package/dist/jsx/router/emptyRouter.js.map +0 -6
- package/dist/jsx/router/emptyRouter.mjs +0 -29
- package/dist/jsx/router/emptyRouter.mjs.map +0 -1
- package/dist/jsx/router/emptyRouter.native.js +0 -54
- package/dist/jsx/router/emptyRouter.native.js.map +0 -6
- package/dist/jsx/router/index.electron.js +0 -2
- package/dist/jsx/router/index.electron.js.map +0 -6
- package/dist/jsx/router/index.electron.mjs +0 -2
- package/dist/jsx/router/index.electron.mjs.map +0 -1
- package/dist/jsx/router/index.electron.native.js +0 -2
- package/dist/jsx/router/index.electron.native.js.map +0 -6
- package/dist/jsx/router/index.js +0 -52
- package/dist/jsx/router/index.js.map +0 -6
- package/dist/jsx/router/index.storybook-expo.js +0 -2
- package/dist/jsx/router/index.storybook-expo.js.map +0 -6
- package/dist/jsx/router/index.storybook.js +0 -2
- package/dist/jsx/router/index.storybook.js.map +0 -6
- package/dist/jsx/router/index.webext.js +0 -2
- package/dist/jsx/router/index.webext.js.map +0 -6
- package/dist/jsx/router/reactRouter.js +0 -38
- package/dist/jsx/router/reactRouter.js.map +0 -6
- package/dist/jsx/router/reactRouter.mjs +0 -48
- package/dist/jsx/router/reactRouter.mjs.map +0 -1
- package/dist/jsx/router/reactRouter.native.js +0 -74
- package/dist/jsx/router/reactRouter.native.js.map +0 -6
- package/dist/jsx/types.js +0 -1
- package/dist/jsx/types.js.map +0 -6
- package/src/router/emptyRouter.tsx +0 -56
- package/src/router/index.electron.tsx +0 -22
- package/types/index.d.ts +0 -3
- package/types/index.d.ts.map +0 -1
- package/types/router/emptyRouter.d.ts +0 -26
- package/types/router/emptyRouter.d.ts.map +0 -1
- package/types/router/index.d.ts +0 -27
- package/types/router/index.d.ts.map +0 -1
- package/types/router/index.electron.d.ts +0 -22
- package/types/router/index.electron.d.ts.map +0 -1
- package/types/router/index.storybook-expo.d.ts +0 -22
- package/types/router/index.storybook-expo.d.ts.map +0 -1
- package/types/router/index.storybook.d.ts +0 -22
- package/types/router/index.storybook.d.ts.map +0 -1
- package/types/router/index.webext.d.ts +0 -22
- package/types/router/index.webext.d.ts.map +0 -1
- package/types/router/reactRouter.d.ts +0 -27
- package/types/router/reactRouter.d.ts.map +0 -1
- package/types/types.d.ts +0 -60
- package/types/types.d.ts.map +0 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { act, renderHook, waitFor } from "@testing-library/react";
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
import * as router from "../router/index.native.js";
|
|
4
|
+
import { useSearchParams, useTypedSearchParams, useUrlState } from "./useUrlState.native.js";
|
|
5
|
+
vi.mock("../router", function () {
|
|
6
|
+
var mockSetParams = vi.fn();
|
|
7
|
+
return {
|
|
8
|
+
useParams: vi.fn(function () {
|
|
9
|
+
return {};
|
|
10
|
+
}),
|
|
11
|
+
useRouter: vi.fn(function () {
|
|
12
|
+
return {
|
|
13
|
+
setParams: mockSetParams
|
|
14
|
+
};
|
|
15
|
+
})
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
var mockUseParams = router.useParams;
|
|
19
|
+
var mockUseRouter = router.useRouter;
|
|
20
|
+
describe("useUrlState", function () {
|
|
21
|
+
beforeEach(function () {
|
|
22
|
+
vi.clearAllMocks();
|
|
23
|
+
});
|
|
24
|
+
describe("useSearchParams", function () {
|
|
25
|
+
it("should return current search params", function () {
|
|
26
|
+
mockUseParams.mockReturnValue({
|
|
27
|
+
foo: "bar",
|
|
28
|
+
baz: "qux"
|
|
29
|
+
});
|
|
30
|
+
var {
|
|
31
|
+
result
|
|
32
|
+
} = renderHook(function () {
|
|
33
|
+
return useSearchParams();
|
|
34
|
+
});
|
|
35
|
+
var [params] = result.current;
|
|
36
|
+
expect(params).toEqual({
|
|
37
|
+
foo: "bar",
|
|
38
|
+
baz: "qux"
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it("should update search params", function () {
|
|
42
|
+
var setParamsMock = vi.fn();
|
|
43
|
+
mockUseRouter.mockReturnValue({
|
|
44
|
+
setParams: setParamsMock
|
|
45
|
+
});
|
|
46
|
+
var {
|
|
47
|
+
result
|
|
48
|
+
} = renderHook(function () {
|
|
49
|
+
return useSearchParams();
|
|
50
|
+
});
|
|
51
|
+
var [, setParams] = result.current;
|
|
52
|
+
act(function () {
|
|
53
|
+
setParams({
|
|
54
|
+
foo: "bar"
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
expect(setParamsMock).toHaveBeenCalledWith({
|
|
58
|
+
foo: "bar"
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
it("should support function updates", function () {
|
|
62
|
+
var setParamsMock = vi.fn();
|
|
63
|
+
mockUseParams.mockReturnValue({
|
|
64
|
+
existing: "value"
|
|
65
|
+
});
|
|
66
|
+
mockUseRouter.mockReturnValue({
|
|
67
|
+
setParams: setParamsMock
|
|
68
|
+
});
|
|
69
|
+
var {
|
|
70
|
+
result
|
|
71
|
+
} = renderHook(function () {
|
|
72
|
+
return useSearchParams();
|
|
73
|
+
});
|
|
74
|
+
var [, setParams] = result.current;
|
|
75
|
+
act(function () {
|
|
76
|
+
setParams(function (prev) {
|
|
77
|
+
return {
|
|
78
|
+
...prev,
|
|
79
|
+
new: "param"
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
expect(setParamsMock).toHaveBeenCalledWith({
|
|
84
|
+
existing: "value",
|
|
85
|
+
new: "param"
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
it("should debounce updates when specified", async function () {
|
|
89
|
+
var setParamsMock = vi.fn();
|
|
90
|
+
mockUseRouter.mockReturnValue({
|
|
91
|
+
setParams: setParamsMock
|
|
92
|
+
});
|
|
93
|
+
var {
|
|
94
|
+
result
|
|
95
|
+
} = renderHook(function () {
|
|
96
|
+
return useSearchParams();
|
|
97
|
+
});
|
|
98
|
+
var [, setParams] = result.current;
|
|
99
|
+
act(function () {
|
|
100
|
+
setParams({
|
|
101
|
+
foo: "bar"
|
|
102
|
+
}, {
|
|
103
|
+
debounceMs: 100
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
expect(setParamsMock).not.toHaveBeenCalled();
|
|
107
|
+
await waitFor(function () {
|
|
108
|
+
expect(setParamsMock).toHaveBeenCalledWith({
|
|
109
|
+
foo: "bar"
|
|
110
|
+
});
|
|
111
|
+
}, {
|
|
112
|
+
timeout: 200
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
describe("useUrlState", function () {
|
|
117
|
+
it("should initialize with default values", function () {
|
|
118
|
+
mockUseParams.mockReturnValue({});
|
|
119
|
+
var defaultValues = {
|
|
120
|
+
name: "",
|
|
121
|
+
age: 0,
|
|
122
|
+
active: false
|
|
123
|
+
};
|
|
124
|
+
var {
|
|
125
|
+
result
|
|
126
|
+
} = renderHook(function () {
|
|
127
|
+
return useUrlState(defaultValues);
|
|
128
|
+
});
|
|
129
|
+
var [state] = result.current;
|
|
130
|
+
expect(state).toEqual(defaultValues);
|
|
131
|
+
});
|
|
132
|
+
it("should deserialize URL params", function () {
|
|
133
|
+
mockUseParams.mockReturnValue({
|
|
134
|
+
name: "John",
|
|
135
|
+
age: "25",
|
|
136
|
+
active: "true"
|
|
137
|
+
});
|
|
138
|
+
var defaultValues = {
|
|
139
|
+
name: "",
|
|
140
|
+
age: 0,
|
|
141
|
+
active: false
|
|
142
|
+
};
|
|
143
|
+
var {
|
|
144
|
+
result
|
|
145
|
+
} = renderHook(function () {
|
|
146
|
+
return useUrlState(defaultValues);
|
|
147
|
+
});
|
|
148
|
+
var [state] = result.current;
|
|
149
|
+
expect(state).toEqual({
|
|
150
|
+
name: "John",
|
|
151
|
+
age: 25,
|
|
152
|
+
active: true
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
it("should serialize state to URL params", function () {
|
|
156
|
+
var setParamsMock = vi.fn();
|
|
157
|
+
mockUseParams.mockReturnValue({});
|
|
158
|
+
mockUseRouter.mockReturnValue({
|
|
159
|
+
setParams: setParamsMock
|
|
160
|
+
});
|
|
161
|
+
var defaultValues = {
|
|
162
|
+
name: "",
|
|
163
|
+
age: 0,
|
|
164
|
+
active: false
|
|
165
|
+
};
|
|
166
|
+
var {
|
|
167
|
+
result
|
|
168
|
+
} = renderHook(function () {
|
|
169
|
+
return useUrlState(defaultValues, {
|
|
170
|
+
debounceMs: 0
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
var [, setState] = result.current;
|
|
174
|
+
act(function () {
|
|
175
|
+
setState({
|
|
176
|
+
name: "John",
|
|
177
|
+
age: 25,
|
|
178
|
+
active: true
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
expect(setParamsMock).toHaveBeenCalledWith({
|
|
182
|
+
name: "John",
|
|
183
|
+
age: "25",
|
|
184
|
+
active: "true"
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
it("should handle arrays", function () {
|
|
188
|
+
mockUseParams.mockReturnValue({
|
|
189
|
+
tags: ["react", "typescript"]
|
|
190
|
+
});
|
|
191
|
+
var defaultValues = {
|
|
192
|
+
tags: []
|
|
193
|
+
};
|
|
194
|
+
var {
|
|
195
|
+
result
|
|
196
|
+
} = renderHook(function () {
|
|
197
|
+
return useUrlState(defaultValues);
|
|
198
|
+
});
|
|
199
|
+
var [state] = result.current;
|
|
200
|
+
expect(state).toEqual({
|
|
201
|
+
tags: ["react", "typescript"]
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
it("should handle objects with JSON serialization", function () {
|
|
205
|
+
mockUseParams.mockReturnValue({
|
|
206
|
+
config: '{"theme":"dark","lang":"en"}'
|
|
207
|
+
});
|
|
208
|
+
var defaultValues = {
|
|
209
|
+
config: {
|
|
210
|
+
theme: "light",
|
|
211
|
+
lang: "en"
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
var {
|
|
215
|
+
result
|
|
216
|
+
} = renderHook(function () {
|
|
217
|
+
return useUrlState(defaultValues);
|
|
218
|
+
});
|
|
219
|
+
var [state] = result.current;
|
|
220
|
+
expect(state).toEqual({
|
|
221
|
+
config: {
|
|
222
|
+
theme: "dark",
|
|
223
|
+
lang: "en"
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
describe("useTypedSearchParams", function () {
|
|
229
|
+
it("should parse params with schema", function () {
|
|
230
|
+
mockUseParams.mockReturnValue({
|
|
231
|
+
page: "2",
|
|
232
|
+
limit: "50",
|
|
233
|
+
search: "test"
|
|
234
|
+
});
|
|
235
|
+
var schema = {
|
|
236
|
+
page: {
|
|
237
|
+
default: 1,
|
|
238
|
+
parse: function parse(value) {
|
|
239
|
+
return value ? Number.parseInt(String(value), 10) : 1;
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
limit: {
|
|
243
|
+
default: 20,
|
|
244
|
+
parse: function parse(value) {
|
|
245
|
+
return value ? Number.parseInt(String(value), 10) : 20;
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
search: {
|
|
249
|
+
default: ""
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
var {
|
|
253
|
+
result
|
|
254
|
+
} = renderHook(function () {
|
|
255
|
+
return useTypedSearchParams(schema);
|
|
256
|
+
});
|
|
257
|
+
expect(result.current).toEqual({
|
|
258
|
+
page: 2,
|
|
259
|
+
limit: 50,
|
|
260
|
+
search: "test"
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
it("should use defaults for missing params", function () {
|
|
264
|
+
mockUseParams.mockReturnValue({});
|
|
265
|
+
var schema = {
|
|
266
|
+
page: {
|
|
267
|
+
default: 1
|
|
268
|
+
},
|
|
269
|
+
limit: {
|
|
270
|
+
default: 20
|
|
271
|
+
},
|
|
272
|
+
search: {
|
|
273
|
+
default: ""
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
var {
|
|
277
|
+
result
|
|
278
|
+
} = renderHook(function () {
|
|
279
|
+
return useTypedSearchParams(schema);
|
|
280
|
+
});
|
|
281
|
+
expect(result.current).toEqual({
|
|
282
|
+
page: 1,
|
|
283
|
+
limit: 20,
|
|
284
|
+
search: ""
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
//# sourceMappingURL=useUrlState.spec.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["act","renderHook","waitFor","beforeEach","describe","expect","it","vi","router","useSearchParams","useTypedSearchParams","useUrlState","mock","mockSetParams","fn","useParams","useRouter","setParams","mockUseParams","mockUseRouter","clearAllMocks","mockReturnValue","foo","baz","result","params","current","toEqual","setParamsMock","toHaveBeenCalledWith","existing","prev","new","debounceMs","not","toHaveBeenCalled","timeout","defaultValues","name","age","active","state","setState"],"sources":["../../../src/hooks/useUrlState.spec.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.mjs
CHANGED
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export * from "./router/index";
|
|
2
|
-
export * from "./types";
|
|
3
|
-
|
|
1
|
+
export * from "./router/index.native.js";
|
|
2
|
+
export * from "./types.native.js";
|
|
3
|
+
export * from "./hooks/index.native.js";
|
|
4
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/home/clayrisser/Projects/bitspur/multiplatform.one/multiplatform.one/packages/router/src/index.ts"],
|
|
4
|
-
"mappings": "AAqBA,cAAc;AACd,cAAc;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useRouter","usePathname","useParams","Link"],"sources":["../../src/index.storybook.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,WAAA,EAAaC,SAAA,EAAWC,IAAA,QAAY;AACxD,cAAc;AACd,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { useRouter, usePathname, useParams, Link } from "./router/EmptyRouter.native.js";
|
|
2
|
+
export * from "./types.native.js";
|
|
3
|
+
export * from "./hooks/index.native.js";
|
|
4
|
+
export { Link, useParams, usePathname, useRouter };
|
|
5
|
+
//# sourceMappingURL=index.storybook.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useRouter","usePathname","useParams","Link"],"sources":["../../src/index.storybook.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,WAAA,EAAaC,SAAA,EAAWC,IAAA,QAAY;AACxD,cAAc;AACd,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
const prefix = "[router]";
|
|
3
|
+
const useRouter = () => {
|
|
4
|
+
return {
|
|
5
|
+
back: () => console.log(prefix, "back()"),
|
|
6
|
+
canGoBack: () => false,
|
|
7
|
+
push: href => console.log(prefix, "push", String(href)),
|
|
8
|
+
navigate: href => console.log(prefix, "navigate", String(href)),
|
|
9
|
+
replace: href => console.log(prefix, "replace", String(href)),
|
|
10
|
+
dismiss: count => console.log(prefix, "dismiss", count ?? 1),
|
|
11
|
+
dismissAll: () => console.log(prefix, "dismissAll()"),
|
|
12
|
+
canDismiss: () => false,
|
|
13
|
+
setParams: params => console.log(prefix, "setParams", params),
|
|
14
|
+
subscribe: listener => {
|
|
15
|
+
listener("success");
|
|
16
|
+
return () => {};
|
|
17
|
+
},
|
|
18
|
+
onLoadState: listener => {
|
|
19
|
+
listener("loaded");
|
|
20
|
+
return () => {};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
const usePathname = () => "/";
|
|
25
|
+
const useParams = () => ({});
|
|
26
|
+
const Link = ({
|
|
27
|
+
href,
|
|
28
|
+
replace,
|
|
29
|
+
children,
|
|
30
|
+
...props
|
|
31
|
+
}) => {
|
|
32
|
+
const handleClick = e => {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
console.log(prefix, replace ? "replace" : "push", String(href));
|
|
35
|
+
};
|
|
36
|
+
return /* @__PURE__ */jsx("a", {
|
|
37
|
+
href,
|
|
38
|
+
onClick: handleClick,
|
|
39
|
+
...props,
|
|
40
|
+
children
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
Link.resolveHref = href => href.toString();
|
|
44
|
+
function useUrlState(defaultValues) {
|
|
45
|
+
const setState = () => {};
|
|
46
|
+
return [defaultValues, setState];
|
|
47
|
+
}
|
|
48
|
+
export { Link, useParams, usePathname, useRouter, useUrlState };
|
|
49
|
+
//# sourceMappingURL=EmptyRouter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","prefix","useRouter","back","console","log","canGoBack","push","href","String","navigate","replace","dismiss","count","dismissAll","canDismiss","setParams","params","subscribe","listener","onLoadState","usePathname","useParams","Link","children","props","handleClick","e","preventDefault","onClick","resolveHref","toString","useUrlState","defaultValues","setState"],"sources":["../../../src/router/EmptyRouter.tsx"],"sourcesContent":[null],"mappings":"AAoCI,SAAAA,GAAA;AAlCJ,MAAMC,MAAA,GAAS;AAER,MAAMC,SAAA,GAAYA,CAAA,KAAc;EACrC,OAAO;IACLC,IAAA,EAAMA,CAAA,KAAMC,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,QAAQ;IACxCK,SAAA,EAAWA,CAAA,KAAM;IACjBC,IAAA,EAAOC,IAAA,IAAeJ,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,QAAQQ,MAAA,CAAOD,IAAI,CAAC;IAC9DE,QAAA,EAAWF,IAAA,IAAeJ,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,YAAYQ,MAAA,CAAOD,IAAI,CAAC;IACtEG,OAAA,EAAUH,IAAA,IAAeJ,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,WAAWQ,MAAA,CAAOD,IAAI,CAAC;IACpEI,OAAA,EAAUC,KAAA,IAAmBT,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,WAAWY,KAAA,IAAS,CAAC;IACtEC,UAAA,EAAYA,CAAA,KAAMV,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,cAAc;IACpDc,UAAA,EAAYA,CAAA,KAAM;IAClBC,SAAA,EAAYC,MAAA,IAAWb,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQ,aAAagB,MAAM;IAC9DC,SAAA,EAAYC,QAAA,IAAa;MACvBA,QAAA,CAAS,SAAS;MAClB,OAAO,MAAM,CAAC;IAChB;IACAC,WAAA,EAAcD,QAAA,IAAa;MACzBA,QAAA,CAAS,QAAQ;MACjB,OAAO,MAAM,CAAC;IAChB;EACF;AACF;AAEO,MAAME,WAAA,GAAcA,CAAA,KAAc;AAElC,MAAMC,SAAA,GAAYA,CAAA,MAAO,CAAC;AAE1B,MAAMC,IAAA,GAAsBA,CAAC;EAAEf,IAAA;EAAMG,OAAA;EAASa,QAAA;EAAU,GAAGC;AAAM,MAAM;EAC5E,MAAMC,WAAA,GAAeC,CAAA,IAAwB;IAC3CA,CAAA,CAAEC,cAAA,CAAe;IACjBxB,OAAA,CAAQC,GAAA,CAAIJ,MAAA,EAAQU,OAAA,GAAU,YAAY,QAAQF,MAAA,CAAOD,IAAI,CAAC;EAChE;EACA,OACE,eAAAR,GAAA,CAAC;IAAEQ,IAAA;IAAsBqB,OAAA,EAASH,WAAA;IAAc,GAAGD,KAAA;IAChDD;EAAA,CACH;AAEJ;AAEAD,IAAA,CAAKO,WAAA,GAAetB,IAAA,IAAeA,IAAA,CAAKuB,QAAA,CAAS;AAE1C,SAASC,YACdC,aAAA,EACiE;EACjE,MAAMC,QAAA,GAAWA,CAAA,KAAM,CAAC;EACxB,OAAO,CAACD,aAAA,EAAeC,QAAQ;AACjC","ignoreList":[]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
var prefix = "[router]";
|
|
3
|
+
var useRouter = function useRouter2() {
|
|
4
|
+
return {
|
|
5
|
+
back: function back() {
|
|
6
|
+
return console.log(prefix, "back()");
|
|
7
|
+
},
|
|
8
|
+
canGoBack: function canGoBack() {
|
|
9
|
+
return false;
|
|
10
|
+
},
|
|
11
|
+
push: function push(href) {
|
|
12
|
+
return console.log(prefix, "push", String(href));
|
|
13
|
+
},
|
|
14
|
+
navigate: function navigate(href) {
|
|
15
|
+
return console.log(prefix, "navigate", String(href));
|
|
16
|
+
},
|
|
17
|
+
replace: function replace(href) {
|
|
18
|
+
return console.log(prefix, "replace", String(href));
|
|
19
|
+
},
|
|
20
|
+
dismiss: function dismiss(count) {
|
|
21
|
+
return console.log(prefix, "dismiss", count !== null && count !== void 0 ? count : 1);
|
|
22
|
+
},
|
|
23
|
+
dismissAll: function dismissAll() {
|
|
24
|
+
return console.log(prefix, "dismissAll()");
|
|
25
|
+
},
|
|
26
|
+
canDismiss: function canDismiss() {
|
|
27
|
+
return false;
|
|
28
|
+
},
|
|
29
|
+
setParams: function setParams(params) {
|
|
30
|
+
return console.log(prefix, "setParams", params);
|
|
31
|
+
},
|
|
32
|
+
subscribe: function subscribe(listener) {
|
|
33
|
+
listener("success");
|
|
34
|
+
return function () {};
|
|
35
|
+
},
|
|
36
|
+
onLoadState: function onLoadState(listener) {
|
|
37
|
+
listener("loaded");
|
|
38
|
+
return function () {};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
var usePathname = function usePathname2() {
|
|
43
|
+
return "/";
|
|
44
|
+
};
|
|
45
|
+
var useParams = function useParams2() {
|
|
46
|
+
return {};
|
|
47
|
+
};
|
|
48
|
+
var Link = function Link2(param) {
|
|
49
|
+
var {
|
|
50
|
+
href,
|
|
51
|
+
replace,
|
|
52
|
+
children,
|
|
53
|
+
...props
|
|
54
|
+
} = param;
|
|
55
|
+
var handleClick = function handleClick2(e) {
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
console.log(prefix, replace ? "replace" : "push", String(href));
|
|
58
|
+
};
|
|
59
|
+
return /* @__PURE__ */_jsx("a", {
|
|
60
|
+
href,
|
|
61
|
+
onClick: handleClick,
|
|
62
|
+
...props,
|
|
63
|
+
children
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
Link.resolveHref = function (href) {
|
|
67
|
+
return href.toString();
|
|
68
|
+
};
|
|
69
|
+
function useUrlState(defaultValues) {
|
|
70
|
+
var setState = function setState2() {};
|
|
71
|
+
return [defaultValues, setState];
|
|
72
|
+
}
|
|
73
|
+
export { Link, useParams, usePathname, useRouter, useUrlState };
|
|
74
|
+
//# sourceMappingURL=EmptyRouter.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","prefix","useRouter","useRouter2","back","console","log","canGoBack","push","href","String","navigate","replace","dismiss","count","dismissAll","canDismiss","setParams","params","subscribe","listener","onLoadState"],"sources":["../../../src/router/EmptyRouter.tsx"],"sourcesContent":[null],"mappings":"AAoCI,SAAAA,GAAA,IAAAC,IAAA;AAlCJ,IAAAC,MAAM,aAAS;AAER,IAAAC,SAAM,YAA0BC,WAAA;EACrC,OAAO;IACLC,IAAA,EAAM,SAAMA,KAAA,EAAQ;MACpB,OAAAC,OAAW,CAAMC,GAAA,CAAAL,MAAA;IACjB;IACAM,SAAA,EAAW,SAAeA,SAAQA,CAAA,EAAI;MACtC,OAAS,KAAC;IACV;IACAC,IAAA,WAAYA,IAAMA,CAAAC,IAAA,EAAQ;MAC1B,OAAAJ,OAAY,CAAAC,GAAM,CAAAL,MAAA,UAAAS,MAAA,CAAAD,IAAA;IAClB;IACAE,QAAA,WAAYA,QAAaA,CAAAF,IAAA;MACvB,OAAAJ,OAAS,CAAAC,GAAS,CAAAL,MAAA,cAAAS,MAAA,CAAAD,IAAA;IAClB;IAAaG,OAAC,WAAAA,QAAAH,IAAA;MAChB,OAAAJ,OAAA,CAAAC,GAAA,CAAAL,MAAA,aAAAS,MAAA,CAAAD,IAAA;IACA;IACEI,OAAA,WAASA,OAAQA,CAAAC,KAAA;MACjB,OAAOT,OAAM,CAAAC,GAAA,CAAAL,MAAA,aAAAa,KAAA,aAAAA,KAAA,cAAAA,KAAA;IAAA;IACfC,UAAA,WAAAA,WAAA;MACF,OAAAV,OAAA,CAAAC,GAAA,CAAAL,MAAA;IACF;IAEOe,UAAM,WAAcA,UAAcA,CAAA;MAE5B,YAAY;IAElB;IACLC,SAAM,WAAeA,SAAwBA,CAAAC,MAAA;MACzC,OAAAb,OAAA,CAAeC,GAAA,CAAAL,MAAA,eAAAiB,MAAA;IACjB;IACFC,SAAA,WAAAA,UAAAC,QAAA;MACAA,QACE;MAIJ,oBAEK;IAEE;IAGLC,WAAM,WAAiBA,YAAAD,QAAA;MAACA,QAAA;MACxB,OAAQ,aACV","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Link as ReactRouterLink, useLocation, useNavigate, useParams as useReactParams, useSearchParams as useReactSearchParams } from "react-router-dom";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
const useRouter = () => {
|
|
4
|
+
const location = useLocation();
|
|
5
|
+
const navigate = useNavigate();
|
|
6
|
+
return {
|
|
7
|
+
back: () => navigate(-1),
|
|
8
|
+
canGoBack: () => true,
|
|
9
|
+
push: href => navigate(href, {
|
|
10
|
+
replace: false
|
|
11
|
+
}),
|
|
12
|
+
navigate: href => navigate(href, {
|
|
13
|
+
replace: false
|
|
14
|
+
}),
|
|
15
|
+
replace: href => navigate(href, {
|
|
16
|
+
replace: true
|
|
17
|
+
}),
|
|
18
|
+
dismiss: count => navigate(-1 * (count || 1)),
|
|
19
|
+
dismissAll: () => navigate("/"),
|
|
20
|
+
canDismiss: () => true,
|
|
21
|
+
setParams: params => {
|
|
22
|
+
const searchParams = new URLSearchParams(location.search);
|
|
23
|
+
if (params) {
|
|
24
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
25
|
+
if (value === void 0 || value === null) {
|
|
26
|
+
searchParams.delete(key);
|
|
27
|
+
} else {
|
|
28
|
+
searchParams.set(key, String(value));
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
navigate({
|
|
33
|
+
search: searchParams.toString()
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
subscribe: listener => {
|
|
37
|
+
listener("success");
|
|
38
|
+
return () => {};
|
|
39
|
+
},
|
|
40
|
+
onLoadState: listener => {
|
|
41
|
+
listener("loaded");
|
|
42
|
+
return () => {};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const usePathname = () => useLocation().pathname;
|
|
47
|
+
const useParams = () => {
|
|
48
|
+
const routeParams = useReactParams();
|
|
49
|
+
const [searchParams] = useReactSearchParams();
|
|
50
|
+
const params = {};
|
|
51
|
+
Object.entries(routeParams).forEach(([key, value]) => {
|
|
52
|
+
if (value !== void 0) {
|
|
53
|
+
params[key] = value;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
searchParams.forEach((value, key) => {
|
|
57
|
+
if (params[key]) {
|
|
58
|
+
const existing = params[key];
|
|
59
|
+
params[key] = Array.isArray(existing) ? [...existing, value] : [existing, value];
|
|
60
|
+
} else {
|
|
61
|
+
params[key] = value;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return params;
|
|
65
|
+
};
|
|
66
|
+
const Link = ({
|
|
67
|
+
href,
|
|
68
|
+
replace,
|
|
69
|
+
children,
|
|
70
|
+
...props
|
|
71
|
+
}) => /* @__PURE__ */jsx(ReactRouterLink, {
|
|
72
|
+
to: href,
|
|
73
|
+
replace,
|
|
74
|
+
...props,
|
|
75
|
+
children
|
|
76
|
+
});
|
|
77
|
+
Link.resolveHref = href => href.toString();
|
|
78
|
+
export { Link, useParams, usePathname, useRouter };
|
|
79
|
+
//# sourceMappingURL=ReactRouter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Link","ReactRouterLink","useLocation","useNavigate","useParams","useReactParams","useSearchParams","useReactSearchParams","jsx","useRouter","location","navigate","back","canGoBack","push","href","replace","dismiss","count","dismissAll","canDismiss","setParams","params","searchParams","URLSearchParams","search","Object","entries","forEach","key","value","delete","set","String","toString","subscribe","listener","onLoadState","usePathname","pathname","routeParams","existing","Array","isArray","children","props","to","resolveHref"],"sources":["../../../src/router/ReactRouter.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Link as ReactRouterLink, useLocation, useNavigate, useParams as useReactParams, useSearchParams as useReactSearchParams } from "react-router-dom";
|
|
3
|
+
var useRouter = function useRouter2() {
|
|
4
|
+
var location = useLocation();
|
|
5
|
+
var navigate = useNavigate();
|
|
6
|
+
return {
|
|
7
|
+
back: function back() {
|
|
8
|
+
return navigate(-1);
|
|
9
|
+
},
|
|
10
|
+
canGoBack: function canGoBack() {
|
|
11
|
+
return true;
|
|
12
|
+
},
|
|
13
|
+
push: function push(href) {
|
|
14
|
+
return navigate(href, {
|
|
15
|
+
replace: false
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
navigate: function navigate1(href) {
|
|
19
|
+
return navigate(href, {
|
|
20
|
+
replace: false
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
replace: function replace(href) {
|
|
24
|
+
return navigate(href, {
|
|
25
|
+
replace: true
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
dismiss: function dismiss(count) {
|
|
29
|
+
return navigate(-1 * (count || 1));
|
|
30
|
+
},
|
|
31
|
+
dismissAll: function dismissAll() {
|
|
32
|
+
return navigate("/");
|
|
33
|
+
},
|
|
34
|
+
canDismiss: function canDismiss() {
|
|
35
|
+
return true;
|
|
36
|
+
},
|
|
37
|
+
setParams: function setParams(params) {
|
|
38
|
+
var searchParams = new URLSearchParams(location.search);
|
|
39
|
+
if (params) {
|
|
40
|
+
Object.entries(params).forEach(function (param) {
|
|
41
|
+
var [key, value] = param;
|
|
42
|
+
if (value === void 0 || value === null) {
|
|
43
|
+
searchParams.delete(key);
|
|
44
|
+
} else {
|
|
45
|
+
searchParams.set(key, String(value));
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
navigate({
|
|
50
|
+
search: searchParams.toString()
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
subscribe: function subscribe(listener) {
|
|
54
|
+
listener("success");
|
|
55
|
+
return function () {};
|
|
56
|
+
},
|
|
57
|
+
onLoadState: function onLoadState(listener) {
|
|
58
|
+
listener("loaded");
|
|
59
|
+
return function () {};
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
var usePathname = function usePathname2() {
|
|
64
|
+
return useLocation().pathname;
|
|
65
|
+
};
|
|
66
|
+
var useParams = function useParams2() {
|
|
67
|
+
var routeParams = useReactParams();
|
|
68
|
+
var [searchParams] = useReactSearchParams();
|
|
69
|
+
var params = {};
|
|
70
|
+
Object.entries(routeParams).forEach(function (param) {
|
|
71
|
+
var [key, value] = param;
|
|
72
|
+
if (value !== void 0) {
|
|
73
|
+
params[key] = value;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
searchParams.forEach(function (value, key) {
|
|
77
|
+
if (params[key]) {
|
|
78
|
+
var existing = params[key];
|
|
79
|
+
params[key] = Array.isArray(existing) ? [...existing, value] : [existing, value];
|
|
80
|
+
} else {
|
|
81
|
+
params[key] = value;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return params;
|
|
85
|
+
};
|
|
86
|
+
var Link = function Link2(param) {
|
|
87
|
+
var {
|
|
88
|
+
href,
|
|
89
|
+
replace,
|
|
90
|
+
children,
|
|
91
|
+
...props
|
|
92
|
+
} = param;
|
|
93
|
+
return /* @__PURE__ */_jsx(ReactRouterLink, {
|
|
94
|
+
to: href,
|
|
95
|
+
replace,
|
|
96
|
+
...props,
|
|
97
|
+
children
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
Link.resolveHref = function (href) {
|
|
101
|
+
return href.toString();
|
|
102
|
+
};
|
|
103
|
+
export { Link, useParams, usePathname, useRouter };
|
|
104
|
+
//# sourceMappingURL=ReactRouter.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","Link","ReactRouterLink","useLocation","useNavigate","useParams","useReactParams","useSearchParams","useReactSearchParams","useRouter","useRouter2","location","navigate","back","canGoBack","push","href","replace","navigate1","dismiss","count","dismissAll","canDismiss","setParams","params","searchParams","URLSearchParams","search","Object","entries","forEach","param","key","value","delete","set","String","toString","subscribe","listener","onLoadState","usePathname","usePathname2","pathname"],"sources":["../../../src/router/ReactRouter.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,GAAA,IAAAC,IAAA;AAAA,SACEC,IAAQ,IAAAC,eAAA,EAAAC,WAAA,EAAAC,WAAA,EAAAC,SAAA,IAAAC,cAAA,EAAAC,eAAA,IAAAC,oBAAA;AAAA,IACRC,SAAA,YAAAC,WAAA;EACA,IAAAC,QAAA,GAAAR,WAAA;EACA,IAAAS,QAAA,GAAaR,WAAA;EACb;IAAmBS,IACd,WAAAA,KAAA;MA6EL,OAAAD,QAAA;IApEK;IACLE,SAAM,WAAWA,SAAYA,CAAA;MAC7B,OAAM;IACN;IACEC,IAAA,EAAM,SAAMA,KAAAC,IAAW;MACvB,OAAAJ,QAAiB,CAAAI,IAAA;QACjBC,OAAO;MACP;IACA;IACAL,QAAA,EAAU,SAAAM,SAAmBA,CAASF,IAAA,EAAM;MAC5C,OAAAJ,QAAY,CAAMI,IAAA;QAClBC,OAAA,EAAY;MACZ;IAGE;IACAA,OAAI,WAAQA,QAAAD,IAAA;MACV,OAAAJ,QAAO,CAAAI,IAAQ;QACbC,OAAI;MACF;IAAuB;IAEvBE,OAAA,WAAAA,OAAiBA,CAAAC,KAAK;MAAa,OACrCR,QAAA,OAAAQ,KAAA;IAAA;IACDC,UACH,WAAAA,WAAA;MACA,OAAAT,QAAW,IAAQ;IACrB;IACAU,UAAA,EAAY,SAAAA,UAAaA,CAAA;MACvB,WAAS;IACT;IAAaC,SAAC,WAAAA,UAAAC,MAAA;MAChB,IAAAC,YAAA,OAAAC,eAAA,CAAAf,QAAA,CAAAgB,MAAA;MACA,IAAAH,MAAA,EAAc;QACZI,MAAA,CAASC,OAAA,CAAQL,MAAA,EAAAM,OAAA,WAAAC,KAAA;UACjB,IAAO,CAAAC,GAAA,EAAMC,KAAA,IAAAF,KAAA;UAAC,IAAAE,KAAA,eAAAA,KAAA;YAChBR,YAAA,CAAAS,MAAA,CAAAF,GAAA;UACF;YACFP,YAAA,CAAAU,GAAA,CAAAH,GAAA,EAAAI,MAAA,CAAAH,KAAA;UAEa;QAGA;MACX;MACArB,QAAO;QACDe,MAAA,EAAAF,YAAyD,CAAAY,QAAA;MAG/D;IACE;IACEC,SAAO,WAAOA,UAAAC,QAAA;MAChBA,QAAA;MACD,oBAGD;IACE;IAEEC,WAAM,WAAWA,WAAUA,CAAAD,QAAA;MAC3BA,QAAO,SAAO;MAChB,OAAO,aACL;IACF;EACF,CAAC;AAED;AACF,IAAAE,WAAA,YAAAC,aAAA;EAEO,OAAMvC,WAAyB,EAAM,CAAAwC,QAAS;AAMrD","ignoreList":[]}
|