@budarin/use-route 1.3.2 → 1.3.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.
- package/CHANGELOG.md +18 -0
- package/demo/node_modules/.vite/deps/@budarin_use-route.js +34 -22
- package/demo/node_modules/.vite/deps/@budarin_use-route.js.map +2 -2
- package/demo/node_modules/.vite/deps/_metadata.json +10 -10
- package/demo/package.json +1 -1
- package/demo/src/App.tsx +11 -0
- package/demo/src/pages/Home.tsx +3 -0
- package/demo/src/pages/State.tsx +119 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +227 -186
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,24 @@
|
|
|
5
5
|
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
|
|
6
6
|
версионирование — [Semantic Versioning](https://semver.org/lang/ru/).
|
|
7
7
|
|
|
8
|
+
## [1.3.4] - 2025-02-01
|
|
9
|
+
|
|
10
|
+
### Изменено
|
|
11
|
+
|
|
12
|
+
- **Оптимизация производительности:** все методы навигации (`navigate`, `back`, `forward`, `go`, `replace`, `updateState`, `canGoBack`, `canGoForward`) теперь создаются **один раз глобально** вместо создания в каждом компоненте. При 50 компонентах с `useRoute()` экономия ~400 `useCallback` вызовов. Методы кэшируются по `effectiveBase` и переиспользуются между компонентами.
|
|
13
|
+
- **Глобальное хранилище состояния:** `sharedSnapshot` теперь всегда валиден и не очищается при отписке последнего подписчика. Методы читают актуальный snapshot без дополнительных вычислений (O(1)).
|
|
14
|
+
- **Упрощение кода:** удалён fallback на старое API (`window.location`, `window.history.pushState/replaceState`) для браузеров без Navigation API. Хук строго требует Navigation API в браузере; без него возвращает дефолтное состояние и методы работают в режиме no-op. SSR поддержка через `initialLocation` сохранена.
|
|
15
|
+
|
|
16
|
+
### Удалено
|
|
17
|
+
|
|
18
|
+
- **Fallback на window.location/history:** в браузере без Navigation API хук больше не использует `window.location.href` для получения pathname и `window.history` для навигации. Вместо этого возвращается `DEFAULT_SNAPSHOT` (pathname: '/', searchParams: empty), методы навигации — no-op.
|
|
19
|
+
|
|
20
|
+
## [1.3.3] - 2025-02-01
|
|
21
|
+
|
|
22
|
+
### Изменено
|
|
23
|
+
|
|
24
|
+
- **useRoute:** в зависимостях финального `useMemo` вместо перечисления полей `routerState` (location, pathname, searchParams, params, historyIndex, state, matched) используется один объект `routerState`. Поведение не меняется: ссылка на `routerState` обновляется только при изменении этих данных.
|
|
25
|
+
|
|
8
26
|
## [1.3.2] - 2025-01-31
|
|
9
27
|
|
|
10
28
|
### Добавлено
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
require_react
|
|
4
4
|
} from "./chunk-3SNVYWQ3.js";
|
|
5
5
|
|
|
6
|
-
// ../node_modules/.pnpm/@budarin+use-route@1.3.
|
|
6
|
+
// ../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/dist/types.js
|
|
7
7
|
var routerConfig = {
|
|
8
8
|
urlCacheLimit: 50
|
|
9
9
|
};
|
|
@@ -17,7 +17,7 @@ function getLogger() {
|
|
|
17
17
|
return routerConfig.logger ?? console;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
// ../node_modules/.pnpm/@budarin+use-route@1.3.
|
|
20
|
+
// ../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/dist/index.js
|
|
21
21
|
var import_react = __toESM(require_react());
|
|
22
22
|
var isBrowser = typeof window !== "undefined";
|
|
23
23
|
function isValidUrl(url) {
|
|
@@ -88,7 +88,8 @@ var DEFAULT_SNAPSHOT = {
|
|
|
88
88
|
entriesKeys: [],
|
|
89
89
|
urlStr: "/",
|
|
90
90
|
pathname: "/",
|
|
91
|
-
searchParams: new URLSearchParams()
|
|
91
|
+
searchParams: new URLSearchParams(),
|
|
92
|
+
state: void 0
|
|
92
93
|
};
|
|
93
94
|
function getNavigation() {
|
|
94
95
|
return typeof window !== "undefined" && "navigation" in window ? window.navigation : void 0;
|
|
@@ -96,16 +97,19 @@ function getNavigation() {
|
|
|
96
97
|
function computeNavigationSnapshot(nav) {
|
|
97
98
|
if (!nav)
|
|
98
99
|
return DEFAULT_SNAPSHOT;
|
|
99
|
-
const
|
|
100
|
+
const entry = nav.currentEntry;
|
|
101
|
+
const urlStr = entry?.url ?? (isBrowser ? window.location.href : "/");
|
|
100
102
|
const parsed = getCachedParsedUrl(urlStr);
|
|
103
|
+
const state = entry && "getState" in entry && typeof entry.getState === "function" ? entry.getState() : void 0;
|
|
101
104
|
return {
|
|
102
|
-
currentKey:
|
|
105
|
+
currentKey: entry?.key ?? "",
|
|
103
106
|
canGoBackFlag: !!nav.canGoBack,
|
|
104
107
|
canGoForwardFlag: !!nav.canGoForward,
|
|
105
108
|
entriesKeys: nav.entries().map((e) => e.key) ?? [],
|
|
106
109
|
urlStr,
|
|
107
110
|
pathname: parsed.pathname,
|
|
108
|
-
searchParams: parsed.searchParams
|
|
111
|
+
searchParams: parsed.searchParams,
|
|
112
|
+
state
|
|
109
113
|
};
|
|
110
114
|
}
|
|
111
115
|
var sharedSnapshot = null;
|
|
@@ -175,7 +179,8 @@ function getNavigationSnapshot() {
|
|
|
175
179
|
...DEFAULT_SNAPSHOT,
|
|
176
180
|
urlStr,
|
|
177
181
|
pathname: parsed.pathname,
|
|
178
|
-
searchParams: parsed.searchParams
|
|
182
|
+
searchParams: parsed.searchParams,
|
|
183
|
+
state: isBrowser ? window.history.state : void 0
|
|
179
184
|
};
|
|
180
185
|
return noNavSnapshot;
|
|
181
186
|
}
|
|
@@ -251,6 +256,7 @@ function useRoute(patternOrOptions, optionsParam) {
|
|
|
251
256
|
searchParams,
|
|
252
257
|
params,
|
|
253
258
|
historyIndex,
|
|
259
|
+
state: rawState.state,
|
|
254
260
|
matched,
|
|
255
261
|
_entriesKeys: rawState.entriesKeys
|
|
256
262
|
};
|
|
@@ -260,6 +266,7 @@ function useRoute(patternOrOptions, optionsParam) {
|
|
|
260
266
|
rawState.urlStr,
|
|
261
267
|
rawState.pathname,
|
|
262
268
|
rawState.searchParams,
|
|
269
|
+
rawState.state,
|
|
263
270
|
pattern,
|
|
264
271
|
effectiveBase
|
|
265
272
|
]);
|
|
@@ -364,12 +371,30 @@ function useRoute(patternOrOptions, optionsParam) {
|
|
|
364
371
|
}
|
|
365
372
|
}, [navigation, routerState._entriesKeys, routerState.historyIndex]);
|
|
366
373
|
const replace = (0, import_react.useCallback)((to, options2) => navigate(to, { ...options2, history: "replace" }), [navigate]);
|
|
374
|
+
const updateState = (0, import_react.useCallback)((state) => {
|
|
375
|
+
try {
|
|
376
|
+
if (navigation) {
|
|
377
|
+
navigation.updateCurrentEntry({ state });
|
|
378
|
+
sharedSnapshot = computeNavigationSnapshot(navigation);
|
|
379
|
+
storeCallbacks.forEach((cb) => cb());
|
|
380
|
+
} else if (isBrowser) {
|
|
381
|
+
window.history.replaceState(state, "", window.location.href);
|
|
382
|
+
if (noNavSnapshot !== null) {
|
|
383
|
+
noNavSnapshot = { ...noNavSnapshot, state };
|
|
384
|
+
}
|
|
385
|
+
storeCallbacks.forEach((cb) => cb());
|
|
386
|
+
}
|
|
387
|
+
} catch (error) {
|
|
388
|
+
getLogger().error("[useRoute] updateState error:", error);
|
|
389
|
+
}
|
|
390
|
+
}, [navigation]);
|
|
367
391
|
return (0, import_react.useMemo)(() => ({
|
|
368
392
|
navigate,
|
|
369
393
|
back,
|
|
370
394
|
forward,
|
|
371
395
|
go,
|
|
372
396
|
replace,
|
|
397
|
+
updateState,
|
|
373
398
|
canGoBack,
|
|
374
399
|
canGoForward,
|
|
375
400
|
location: routerState.location,
|
|
@@ -377,22 +402,9 @@ function useRoute(patternOrOptions, optionsParam) {
|
|
|
377
402
|
searchParams: routerState.searchParams,
|
|
378
403
|
params: routerState.params,
|
|
379
404
|
historyIndex: routerState.historyIndex,
|
|
405
|
+
state: routerState.state,
|
|
380
406
|
matched: routerState.matched
|
|
381
|
-
}), [
|
|
382
|
-
navigate,
|
|
383
|
-
back,
|
|
384
|
-
forward,
|
|
385
|
-
go,
|
|
386
|
-
replace,
|
|
387
|
-
canGoBack,
|
|
388
|
-
canGoForward,
|
|
389
|
-
routerState.location,
|
|
390
|
-
routerState.pathname,
|
|
391
|
-
routerState.searchParams,
|
|
392
|
-
routerState.params,
|
|
393
|
-
routerState.historyIndex,
|
|
394
|
-
routerState.matched
|
|
395
|
-
]);
|
|
407
|
+
}), [navigate, back, forward, go, replace, updateState, canGoBack, canGoForward, routerState]);
|
|
396
408
|
}
|
|
397
409
|
export {
|
|
398
410
|
clearRouterCaches,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../node_modules/.pnpm/@budarin+use-route@1.3.
|
|
3
|
+
"sources": ["../../../../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/src/types.ts", "../../../../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/src/index.ts"],
|
|
4
4
|
"sourcesContent": [null, null],
|
|
5
|
-
"mappings": ";;;;;;
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["options"]
|
|
7
7
|
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
{
|
|
2
|
-
"hash": "
|
|
2
|
+
"hash": "cb1e6a6b",
|
|
3
3
|
"configHash": "5d40f1b5",
|
|
4
|
-
"lockfileHash": "
|
|
5
|
-
"browserHash": "
|
|
4
|
+
"lockfileHash": "1b741544",
|
|
5
|
+
"browserHash": "8b21f158",
|
|
6
6
|
"optimized": {
|
|
7
7
|
"react": {
|
|
8
8
|
"src": "../../../../node_modules/.pnpm/react@19.2.4/node_modules/react/index.js",
|
|
9
9
|
"file": "react.js",
|
|
10
|
-
"fileHash": "
|
|
10
|
+
"fileHash": "ab23ae70",
|
|
11
11
|
"needsInterop": true
|
|
12
12
|
},
|
|
13
13
|
"react-dom": {
|
|
14
14
|
"src": "../../../../node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/index.js",
|
|
15
15
|
"file": "react-dom.js",
|
|
16
|
-
"fileHash": "
|
|
16
|
+
"fileHash": "8b1b812d",
|
|
17
17
|
"needsInterop": true
|
|
18
18
|
},
|
|
19
19
|
"react/jsx-dev-runtime": {
|
|
20
20
|
"src": "../../../../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-dev-runtime.js",
|
|
21
21
|
"file": "react_jsx-dev-runtime.js",
|
|
22
|
-
"fileHash": "
|
|
22
|
+
"fileHash": "ecc018d4",
|
|
23
23
|
"needsInterop": true
|
|
24
24
|
},
|
|
25
25
|
"react/jsx-runtime": {
|
|
26
26
|
"src": "../../../../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-runtime.js",
|
|
27
27
|
"file": "react_jsx-runtime.js",
|
|
28
|
-
"fileHash": "
|
|
28
|
+
"fileHash": "30888066",
|
|
29
29
|
"needsInterop": true
|
|
30
30
|
},
|
|
31
31
|
"@budarin/use-route": {
|
|
32
|
-
"src": "../../../../node_modules/.pnpm/@budarin+use-route@1.3.
|
|
32
|
+
"src": "../../../../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/dist/index.js",
|
|
33
33
|
"file": "@budarin_use-route.js",
|
|
34
|
-
"fileHash": "
|
|
34
|
+
"fileHash": "9af4966b",
|
|
35
35
|
"needsInterop": false
|
|
36
36
|
},
|
|
37
37
|
"react-dom/client": {
|
|
38
38
|
"src": "../../../../node_modules/.pnpm/react-dom@19.2.4_react@19.2.4/node_modules/react-dom/client.js",
|
|
39
39
|
"file": "react-dom_client.js",
|
|
40
|
-
"fileHash": "
|
|
40
|
+
"fileHash": "2e2e7deb",
|
|
41
41
|
"needsInterop": true
|
|
42
42
|
}
|
|
43
43
|
},
|
package/demo/package.json
CHANGED
package/demo/src/App.tsx
CHANGED
|
@@ -6,6 +6,7 @@ import { UserProfile } from './pages/UserProfile';
|
|
|
6
6
|
import { Posts } from './pages/Posts';
|
|
7
7
|
import { History } from './pages/History';
|
|
8
8
|
import { PushReplace } from './pages/PushReplace';
|
|
9
|
+
import { State } from './pages/State';
|
|
9
10
|
import { CustomMatcher } from './pages/CustomMatcher';
|
|
10
11
|
import { BaseDemo } from './pages/BaseDemo';
|
|
11
12
|
|
|
@@ -69,6 +70,13 @@ function Nav() {
|
|
|
69
70
|
>
|
|
70
71
|
Push/Replace
|
|
71
72
|
</Link>
|
|
73
|
+
<Link
|
|
74
|
+
to={(section || '') + '/state'}
|
|
75
|
+
className={pathname.startsWith((section || '') + '/state') ? 'active' : ''}
|
|
76
|
+
title="State: установка при навигации, чтение, updateState"
|
|
77
|
+
>
|
|
78
|
+
State
|
|
79
|
+
</Link>
|
|
72
80
|
<Link
|
|
73
81
|
to={(section || '') + '/products/books/1'}
|
|
74
82
|
className={pathname.startsWith((section || '') + '/products') ? 'active' : ''}
|
|
@@ -116,6 +124,9 @@ function Router() {
|
|
|
116
124
|
if (pathname.startsWith('/push-replace')) {
|
|
117
125
|
return <PushReplace />;
|
|
118
126
|
}
|
|
127
|
+
if (pathname.startsWith('/state')) {
|
|
128
|
+
return <State />;
|
|
129
|
+
}
|
|
119
130
|
if (pathname.startsWith('/products/')) {
|
|
120
131
|
return <CustomMatcher />;
|
|
121
132
|
}
|
package/demo/src/pages/Home.tsx
CHANGED
|
@@ -30,6 +30,9 @@ export function Home() {
|
|
|
30
30
|
<button type="button" onClick={() => navigate('/push-replace')}>
|
|
31
31
|
Push и Replace — как добавлять или заменять запись в истории
|
|
32
32
|
</button>
|
|
33
|
+
<button type="button" onClick={() => navigate('/state')}>
|
|
34
|
+
State — установка при навигации, чтение, updateState (черновик формы)
|
|
35
|
+
</button>
|
|
33
36
|
<Link to="/products/books/1">Товары — свой разбор пути (PathMatcher)</Link>
|
|
34
37
|
<Link to="/base-demo">Раздел (section)</Link>
|
|
35
38
|
</div>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { useRoute } from '@budarin/use-route';
|
|
2
|
+
import { Link } from '../components/Link';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
export function State() {
|
|
6
|
+
const { pathname, state, navigate, updateState } = useRoute();
|
|
7
|
+
const [draftInput, setDraftInput] = useState('');
|
|
8
|
+
|
|
9
|
+
// Восстанавливаем черновик из state при монтировании (например, после «Назад»)
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (state != null && typeof state === 'object' && 'draft' in state) {
|
|
12
|
+
const value = (state as { draft?: string }).draft;
|
|
13
|
+
if (typeof value === 'string') setDraftInput(value);
|
|
14
|
+
}
|
|
15
|
+
}, [state]);
|
|
16
|
+
|
|
17
|
+
const handleSaveDraft = () => {
|
|
18
|
+
updateState({
|
|
19
|
+
...(state != null && typeof state === 'object' ? (state as object) : {}),
|
|
20
|
+
draft: draftInput,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const isDetail = pathname === '/state/detail';
|
|
25
|
+
|
|
26
|
+
if (isDetail) {
|
|
27
|
+
return (
|
|
28
|
+
<div className="demo-content">
|
|
29
|
+
<h1>State: страница «Детали»</h1>
|
|
30
|
+
<p className="demo-lead">
|
|
31
|
+
Вы перешли сюда с установленным <strong>state</strong> (через{' '}
|
|
32
|
+
<code>
|
|
33
|
+
navigate('/state/detail', { state: { ... } })
|
|
34
|
+
</code>
|
|
35
|
+
). Ниже — то, что лежит в записи истории для этой страницы.
|
|
36
|
+
</p>
|
|
37
|
+
<p>
|
|
38
|
+
<strong>state</strong> текущей записи:{' '}
|
|
39
|
+
<code
|
|
40
|
+
style={{ background: '#f0f0f0', padding: '0.2em 0.4em', borderRadius: 4 }}
|
|
41
|
+
>
|
|
42
|
+
{state != null ? JSON.stringify(state) : '—'}
|
|
43
|
+
</code>
|
|
44
|
+
</p>
|
|
45
|
+
<p>
|
|
46
|
+
<Link to="/state">← Вернуться к примеру State</Link>
|
|
47
|
+
</p>
|
|
48
|
+
</div>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<div className="demo-content">
|
|
54
|
+
<h1>State: установка, чтение и обновление</h1>
|
|
55
|
+
<p className="demo-lead">
|
|
56
|
+
<strong>state</strong> — произвольные данные записи истории. Его можно задать при
|
|
57
|
+
переходе (<code>navigate(to, { state })</code>), прочитать в хуке (
|
|
58
|
+
<code>state</code>) и обновить на текущей странице без навигации (
|
|
59
|
+
<code>updateState(state)</code>). Ниже: переход с state, отображение текущего state
|
|
60
|
+
и черновик формы через updateState.
|
|
61
|
+
</p>
|
|
62
|
+
<p>
|
|
63
|
+
Текущий путь: <code>{pathname}</code>
|
|
64
|
+
</p>
|
|
65
|
+
<p>
|
|
66
|
+
<strong>state</strong> текущей записи:{' '}
|
|
67
|
+
<code style={{ background: '#f0f0f0', padding: '0.2em 0.4em', borderRadius: 4 }}>
|
|
68
|
+
{state != null ? JSON.stringify(state) : '—'}
|
|
69
|
+
</code>
|
|
70
|
+
</p>
|
|
71
|
+
|
|
72
|
+
<h2>Установка state при навигации</h2>
|
|
73
|
+
<p>
|
|
74
|
+
При переходе на «Детали» передаём в state объект — на той странице он будет доступен
|
|
75
|
+
как <code>state</code>.
|
|
76
|
+
</p>
|
|
77
|
+
<div className="demo-buttons">
|
|
78
|
+
<button
|
|
79
|
+
type="button"
|
|
80
|
+
onClick={() =>
|
|
81
|
+
navigate('/state/detail', {
|
|
82
|
+
state: { from: 'state-page', timestamp: Date.now() },
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
>
|
|
86
|
+
Перейти на «Детали» с state
|
|
87
|
+
</button>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<h2>Обновление state на текущей странице (updateState)</h2>
|
|
91
|
+
<p>
|
|
92
|
+
Черновик формы: введите текст и нажмите «Сохранить черновик». State текущей записи
|
|
93
|
+
обновится без навигации. Уйдите на другую страницу и нажмите «Назад» — черновик
|
|
94
|
+
восстановится из state.
|
|
95
|
+
</p>
|
|
96
|
+
<div style={{ display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: '0.5rem' }}>
|
|
97
|
+
<input
|
|
98
|
+
type="text"
|
|
99
|
+
value={draftInput}
|
|
100
|
+
onChange={(e) => setDraftInput(e.target.value)}
|
|
101
|
+
placeholder="Текст черновика"
|
|
102
|
+
style={{
|
|
103
|
+
padding: '0.4em 0.6em',
|
|
104
|
+
border: '1px solid #ccc',
|
|
105
|
+
borderRadius: 4,
|
|
106
|
+
minWidth: 200,
|
|
107
|
+
}}
|
|
108
|
+
/>
|
|
109
|
+
<button type="button" onClick={handleSaveDraft}>
|
|
110
|
+
Сохранить черновик
|
|
111
|
+
</button>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<p>
|
|
115
|
+
<Link to="/">На главную</Link>
|
|
116
|
+
</p>
|
|
117
|
+
</div>
|
|
118
|
+
);
|
|
119
|
+
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKR,WAAW,EAGX,cAAc,EACd,eAAe,EAGlB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKR,WAAW,EAGX,cAAc,EACd,eAAe,EAGlB,MAAM,SAAS,CAAC;AAgQjB,OAAO,EACH,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,WAAW,GACnB,MAAM,SAAS,CAAC;AAEjB,0EAA0E;AAC1E,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAwND,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAAC;AACnE,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,EACnD,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,eAAe,GAC1B,cAAc,CAAC,CAAC,CAAC,CAAC;AACrB,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getRouterConfig, getLogger } from './types';
|
|
2
|
-
import { useSyncExternalStore,
|
|
2
|
+
import { useSyncExternalStore, useMemo } from 'react';
|
|
3
3
|
// Утилита для проверки браузерного окружения
|
|
4
4
|
const isBrowser = typeof window !== 'undefined';
|
|
5
5
|
// Валидация URL: разрешаем только http://, https:// и относительные пути
|
|
@@ -92,8 +92,21 @@ function getNavigation() {
|
|
|
92
92
|
: undefined;
|
|
93
93
|
}
|
|
94
94
|
function computeNavigationSnapshot(nav) {
|
|
95
|
-
if (!nav)
|
|
95
|
+
if (!nav) {
|
|
96
|
+
// SSR fallback: используем initialLocation из конфига
|
|
97
|
+
if (!isBrowser) {
|
|
98
|
+
const urlStr = getRouterConfig().initialLocation ?? '/';
|
|
99
|
+
const parsed = getCachedParsedUrl(urlStr);
|
|
100
|
+
return {
|
|
101
|
+
...DEFAULT_SNAPSHOT,
|
|
102
|
+
urlStr,
|
|
103
|
+
pathname: parsed.pathname,
|
|
104
|
+
searchParams: parsed.searchParams,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// В браузере без Navigation API возвращаем дефолтный snapshot
|
|
96
108
|
return DEFAULT_SNAPSHOT;
|
|
109
|
+
}
|
|
97
110
|
const entry = nav.currentEntry;
|
|
98
111
|
const urlStr = entry?.url ?? (isBrowser ? window.location.href : '/');
|
|
99
112
|
const parsed = getCachedParsedUrl(urlStr);
|
|
@@ -111,7 +124,8 @@ function computeNavigationSnapshot(nav) {
|
|
|
111
124
|
state,
|
|
112
125
|
};
|
|
113
126
|
}
|
|
114
|
-
|
|
127
|
+
// Инициализируем снимок сразу (всегда валидный, не null)
|
|
128
|
+
let sharedSnapshot = computeNavigationSnapshot(getNavigation());
|
|
115
129
|
const storeCallbacks = new Set();
|
|
116
130
|
let unsubscribeNavigation = null;
|
|
117
131
|
function subscribeToNavigation(callback) {
|
|
@@ -119,6 +133,8 @@ function subscribeToNavigation(callback) {
|
|
|
119
133
|
if (storeCallbacks.size === 1) {
|
|
120
134
|
const nav = getNavigation();
|
|
121
135
|
if (nav) {
|
|
136
|
+
// Обновляем snapshot при первой подписке
|
|
137
|
+
sharedSnapshot = computeNavigationSnapshot(nav);
|
|
122
138
|
const interceptListener = (event) => {
|
|
123
139
|
const navEvent = event;
|
|
124
140
|
if (!navEvent.canIntercept || !isBrowser)
|
|
@@ -154,36 +170,21 @@ function subscribeToNavigation(callback) {
|
|
|
154
170
|
unsubscribeNavigation();
|
|
155
171
|
unsubscribeNavigation = null;
|
|
156
172
|
}
|
|
157
|
-
sharedSnapshot
|
|
158
|
-
|
|
159
|
-
noNavSnapshotUrl = null;
|
|
173
|
+
// ✅ Не очищаем sharedSnapshot - он остаётся валидным для глобальных методов
|
|
174
|
+
// Обновляем snapshot при следующем чтении, если нет подписчиков
|
|
160
175
|
}
|
|
161
176
|
};
|
|
162
177
|
}
|
|
163
|
-
let noNavSnapshot = null;
|
|
164
|
-
let noNavSnapshotUrl = null;
|
|
165
178
|
function getNavigationSnapshot() {
|
|
166
|
-
if (sharedSnapshot !== null)
|
|
167
|
-
return sharedSnapshot;
|
|
168
179
|
const nav = getNavigation();
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
180
|
+
// Если нет подписчиков и есть Navigation API, проверяем актуальность
|
|
181
|
+
if (storeCallbacks.size === 0 && nav) {
|
|
182
|
+
const currentUrl = nav.currentEntry?.url ?? (isBrowser ? window.location.href : '/');
|
|
183
|
+
if (currentUrl !== sharedSnapshot.urlStr) {
|
|
184
|
+
sharedSnapshot = computeNavigationSnapshot(nav);
|
|
185
|
+
}
|
|
172
186
|
}
|
|
173
|
-
|
|
174
|
-
const urlStr = isBrowser ? window.location.href : (getRouterConfig().initialLocation ?? '/');
|
|
175
|
-
if (noNavSnapshot !== null && noNavSnapshotUrl === urlStr)
|
|
176
|
-
return noNavSnapshot;
|
|
177
|
-
const parsed = getCachedParsedUrl(urlStr);
|
|
178
|
-
noNavSnapshotUrl = urlStr;
|
|
179
|
-
noNavSnapshot = {
|
|
180
|
-
...DEFAULT_SNAPSHOT,
|
|
181
|
-
urlStr,
|
|
182
|
-
pathname: parsed.pathname,
|
|
183
|
-
searchParams: parsed.searchParams,
|
|
184
|
-
state: isBrowser ? window.history.state : undefined,
|
|
185
|
-
};
|
|
186
|
-
return noNavSnapshot;
|
|
187
|
+
return sharedSnapshot;
|
|
187
188
|
}
|
|
188
189
|
// Один keyToIndexMap на снимок (один на все хуки при общем rawState)
|
|
189
190
|
let lastEntriesKeysRef = null;
|
|
@@ -223,8 +224,192 @@ export function clearRouterCaches() {
|
|
|
223
224
|
URL_CACHE.clear();
|
|
224
225
|
lastEntriesKeysRef = null;
|
|
225
226
|
lastKeyToIndexMap = null;
|
|
226
|
-
|
|
227
|
-
|
|
227
|
+
// Пересоздаём snapshot после очистки
|
|
228
|
+
sharedSnapshot = computeNavigationSnapshot(getNavigation());
|
|
229
|
+
}
|
|
230
|
+
// ============================================================================
|
|
231
|
+
// ГЛОБАЛЬНЫЕ МЕТОДЫ НАВИГАЦИИ (создаются один раз, переиспользуются всеми хуками)
|
|
232
|
+
// ============================================================================
|
|
233
|
+
// Простые глобальные методы без зависимостей
|
|
234
|
+
/** Глобальный метод back() - создаётся один раз */
|
|
235
|
+
function globalBack() {
|
|
236
|
+
try {
|
|
237
|
+
const nav = getNavigation();
|
|
238
|
+
if (nav)
|
|
239
|
+
nav.back();
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
getLogger().error('[useRoute] Back navigation error:', error);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** Глобальный метод forward() - создаётся один раз */
|
|
246
|
+
function globalForward() {
|
|
247
|
+
try {
|
|
248
|
+
const nav = getNavigation();
|
|
249
|
+
if (nav)
|
|
250
|
+
nav.forward();
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
getLogger().error('[useRoute] Forward navigation error:', error);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/** Глобальный метод updateState() - создаётся один раз */
|
|
257
|
+
function globalUpdateState(state) {
|
|
258
|
+
try {
|
|
259
|
+
const nav = getNavigation();
|
|
260
|
+
if (nav) {
|
|
261
|
+
nav.updateCurrentEntry({ state });
|
|
262
|
+
sharedSnapshot = computeNavigationSnapshot(nav);
|
|
263
|
+
storeCallbacks.forEach((cb) => cb());
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// Без Navigation API - no-op с предупреждением
|
|
267
|
+
getLogger().warn('[useRoute] updateState requires Navigation API');
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
getLogger().error('[useRoute] updateState error:', error);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// Кэшированные методы navigate и replace по effectiveBase
|
|
275
|
+
const navigateCache = new Map();
|
|
276
|
+
/** Создаёт navigate для конкретного effectiveBase и кэширует */
|
|
277
|
+
function getNavigateForBase(effectiveBase) {
|
|
278
|
+
const cacheKey = effectiveBase ?? '__root__';
|
|
279
|
+
let cachedNavigate = navigateCache.get(cacheKey);
|
|
280
|
+
if (!cachedNavigate) {
|
|
281
|
+
cachedNavigate = async (to, navOptions = {}) => {
|
|
282
|
+
let targetUrl = typeof to === 'string' ? to : to.toString();
|
|
283
|
+
let baseForCall;
|
|
284
|
+
if (navOptions.base !== undefined) {
|
|
285
|
+
baseForCall =
|
|
286
|
+
navOptions.base === '' || navOptions.base === '/' ? undefined : navOptions.base;
|
|
287
|
+
}
|
|
288
|
+
else if (navOptions.section !== undefined) {
|
|
289
|
+
baseForCall = combineBases(getRouterConfig().base, navOptions.section);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
baseForCall = effectiveBase;
|
|
293
|
+
}
|
|
294
|
+
if (baseForCall &&
|
|
295
|
+
baseForCall !== '/' &&
|
|
296
|
+
typeof to === 'string' &&
|
|
297
|
+
to.startsWith('/') &&
|
|
298
|
+
!to.startsWith('//') &&
|
|
299
|
+
!to.includes(':')) {
|
|
300
|
+
targetUrl = baseForCall + (to === '/' ? '' : to);
|
|
301
|
+
}
|
|
302
|
+
if (!isValidUrl(targetUrl)) {
|
|
303
|
+
getLogger().warn('[useRoute] Invalid URL rejected:', targetUrl);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const nav = getNavigation();
|
|
307
|
+
if (!nav) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const defaultHistory = getRouterConfig().defaultHistory ?? 'auto';
|
|
311
|
+
const navigationOpts = {
|
|
312
|
+
state: navOptions.state,
|
|
313
|
+
history: navOptions.history ?? defaultHistory,
|
|
314
|
+
};
|
|
315
|
+
try {
|
|
316
|
+
await nav.navigate(targetUrl, navigationOpts);
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
getLogger().error('[useRoute] Navigation error:', error);
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
navigateCache.set(cacheKey, cachedNavigate);
|
|
323
|
+
}
|
|
324
|
+
return cachedNavigate;
|
|
325
|
+
}
|
|
326
|
+
/** Создаёт replace для конкретного navigate и кэширует */
|
|
327
|
+
const replaceCache = new Map();
|
|
328
|
+
function getReplaceForBase(effectiveBase) {
|
|
329
|
+
const cacheKey = effectiveBase ?? '__root__';
|
|
330
|
+
let cachedReplace = replaceCache.get(cacheKey);
|
|
331
|
+
if (!cachedReplace) {
|
|
332
|
+
const navigateFn = getNavigateForBase(effectiveBase);
|
|
333
|
+
cachedReplace = (to, options) => navigateFn(to, { ...options, history: 'replace' });
|
|
334
|
+
replaceCache.set(cacheKey, cachedReplace);
|
|
335
|
+
}
|
|
336
|
+
return cachedReplace;
|
|
337
|
+
}
|
|
338
|
+
// Глобальные методы с чтением актуального snapshot
|
|
339
|
+
/** Глобальный метод go() - читает актуальный snapshot */
|
|
340
|
+
function globalGo(delta) {
|
|
341
|
+
// Валидация входных данных
|
|
342
|
+
if (delta === Infinity || delta === -Infinity) {
|
|
343
|
+
getLogger().warn('[useRoute] Delta value too large:', delta);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
if (!Number.isFinite(delta) || delta === 0)
|
|
347
|
+
return;
|
|
348
|
+
if (delta > Number.MAX_SAFE_INTEGER || delta < -Number.MAX_SAFE_INTEGER) {
|
|
349
|
+
getLogger().warn('[useRoute] Delta value too large:', delta);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
const nav = getNavigation();
|
|
353
|
+
if (!nav)
|
|
354
|
+
return;
|
|
355
|
+
try {
|
|
356
|
+
const snapshot = getNavigationSnapshot();
|
|
357
|
+
if (snapshot.entriesKeys.length === 0)
|
|
358
|
+
return;
|
|
359
|
+
const keyToIndexMap = getKeyToIndexMap(snapshot.entriesKeys);
|
|
360
|
+
const idx = keyToIndexMap.get(snapshot.currentKey) ?? -1;
|
|
361
|
+
if (idx === -1)
|
|
362
|
+
return;
|
|
363
|
+
const targetIdx = idx + delta;
|
|
364
|
+
if (targetIdx < 0 || targetIdx >= snapshot.entriesKeys.length) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
const targetKey = snapshot.entriesKeys[targetIdx];
|
|
368
|
+
if (targetKey === undefined)
|
|
369
|
+
return;
|
|
370
|
+
nav.traverseTo(targetKey);
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
getLogger().error('[useRoute] Go navigation error:', error);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
/** Глобальный метод canGoBack() - читает актуальный snapshot */
|
|
377
|
+
function globalCanGoBack(steps = 1) {
|
|
378
|
+
// Валидация входных данных
|
|
379
|
+
if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
const nav = getNavigation();
|
|
383
|
+
if (!nav)
|
|
384
|
+
return false;
|
|
385
|
+
const snapshot = getNavigationSnapshot();
|
|
386
|
+
if (snapshot.entriesKeys.length === 0) {
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
const keyToIndexMap = getKeyToIndexMap(snapshot.entriesKeys);
|
|
390
|
+
const idx = keyToIndexMap.get(snapshot.currentKey) ?? -1;
|
|
391
|
+
if (idx === -1)
|
|
392
|
+
return false;
|
|
393
|
+
return idx - steps >= 0;
|
|
394
|
+
}
|
|
395
|
+
/** Глобальный метод canGoForward() - читает актуальный snapshot */
|
|
396
|
+
function globalCanGoForward(steps = 1) {
|
|
397
|
+
// Валидация входных данных
|
|
398
|
+
if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
const nav = getNavigation();
|
|
402
|
+
if (!nav)
|
|
403
|
+
return false;
|
|
404
|
+
const snapshot = getNavigationSnapshot();
|
|
405
|
+
if (snapshot.entriesKeys.length === 0) {
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
const keyToIndexMap = getKeyToIndexMap(snapshot.entriesKeys);
|
|
409
|
+
const idx = keyToIndexMap.get(snapshot.currentKey) ?? -1;
|
|
410
|
+
if (idx === -1)
|
|
411
|
+
return false;
|
|
412
|
+
return idx + steps < snapshot.entriesKeys.length;
|
|
228
413
|
}
|
|
229
414
|
/**
|
|
230
415
|
* Хук состояния маршрута и навигации (Navigation API + URLPattern).
|
|
@@ -245,11 +430,10 @@ export function useRoute(patternOrOptions, optionsParam) {
|
|
|
245
430
|
pattern = patternOrOptions;
|
|
246
431
|
options = optionsParam;
|
|
247
432
|
}
|
|
248
|
-
const navigation = getNavigation();
|
|
249
433
|
const rawState = useSyncExternalStore(subscribeToNavigation, getNavigationSnapshot, () => DEFAULT_SNAPSHOT);
|
|
250
434
|
const keyToIndexMap = getKeyToIndexMap(rawState.entriesKeys);
|
|
251
435
|
const effectiveBase = combineBases(getRouterConfig().base, options?.section);
|
|
252
|
-
//
|
|
436
|
+
// Производное состояние роутера. pathname/searchParams берём из snapshot (разбор URL один раз в store).
|
|
253
437
|
const routerState = useMemo(() => {
|
|
254
438
|
const { urlStr, pathname: rawPathname, searchParams } = rawState;
|
|
255
439
|
const pathname = pathnameWithoutBase(rawPathname, effectiveBase);
|
|
@@ -277,7 +461,6 @@ export function useRoute(patternOrOptions, optionsParam) {
|
|
|
277
461
|
historyIndex,
|
|
278
462
|
state: rawState.state,
|
|
279
463
|
matched,
|
|
280
|
-
_entriesKeys: rawState.entriesKeys,
|
|
281
464
|
};
|
|
282
465
|
}, [
|
|
283
466
|
rawState.currentKey,
|
|
@@ -289,143 +472,17 @@ export function useRoute(patternOrOptions, optionsParam) {
|
|
|
289
472
|
pattern,
|
|
290
473
|
effectiveBase,
|
|
291
474
|
]);
|
|
292
|
-
//
|
|
293
|
-
const navigate =
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
else {
|
|
304
|
-
baseForCall = effectiveBase;
|
|
305
|
-
}
|
|
306
|
-
if (baseForCall &&
|
|
307
|
-
baseForCall !== '/' &&
|
|
308
|
-
typeof to === 'string' &&
|
|
309
|
-
to.startsWith('/') &&
|
|
310
|
-
!to.startsWith('//') &&
|
|
311
|
-
!to.includes(':')) {
|
|
312
|
-
targetUrl = baseForCall + (to === '/' ? '' : to);
|
|
313
|
-
}
|
|
314
|
-
if (!isValidUrl(targetUrl)) {
|
|
315
|
-
getLogger().warn('[useRoute] Invalid URL rejected:', targetUrl);
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
if (!navigation) {
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
const defaultHistory = getRouterConfig().defaultHistory ?? 'auto';
|
|
322
|
-
const navigationOpts = {
|
|
323
|
-
state: navOptions.state,
|
|
324
|
-
history: navOptions.history ?? defaultHistory,
|
|
325
|
-
};
|
|
326
|
-
try {
|
|
327
|
-
await navigation.navigate(targetUrl, navigationOpts);
|
|
328
|
-
}
|
|
329
|
-
catch (error) {
|
|
330
|
-
getLogger().error('[useRoute] Navigation error:', error);
|
|
331
|
-
}
|
|
332
|
-
}, [navigation, effectiveBase]);
|
|
333
|
-
const back = useCallback(() => {
|
|
334
|
-
try {
|
|
335
|
-
if (navigation)
|
|
336
|
-
navigation.back();
|
|
337
|
-
}
|
|
338
|
-
catch (error) {
|
|
339
|
-
getLogger().error('[useRoute] Back navigation error:', error);
|
|
340
|
-
}
|
|
341
|
-
}, [navigation]);
|
|
342
|
-
const forward = useCallback(() => {
|
|
343
|
-
try {
|
|
344
|
-
if (navigation)
|
|
345
|
-
navigation.forward();
|
|
346
|
-
}
|
|
347
|
-
catch (error) {
|
|
348
|
-
getLogger().error('[useRoute] Forward navigation error:', error);
|
|
349
|
-
}
|
|
350
|
-
}, [navigation]);
|
|
351
|
-
const canGoBack = useCallback((steps = 1) => {
|
|
352
|
-
// Валидация входных данных
|
|
353
|
-
if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
|
|
354
|
-
return false;
|
|
355
|
-
}
|
|
356
|
-
if (!navigation || routerState._entriesKeys.length === 0) {
|
|
357
|
-
return false;
|
|
358
|
-
}
|
|
359
|
-
const idx = routerState.historyIndex;
|
|
360
|
-
if (idx === -1)
|
|
361
|
-
return false;
|
|
362
|
-
return idx - steps >= 0;
|
|
363
|
-
}, [navigation, routerState._entriesKeys.length, routerState.historyIndex]);
|
|
364
|
-
const canGoForward = useCallback((steps = 1) => {
|
|
365
|
-
// Валидация входных данных
|
|
366
|
-
if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
|
|
367
|
-
return false;
|
|
368
|
-
}
|
|
369
|
-
if (!navigation || routerState._entriesKeys.length === 0) {
|
|
370
|
-
return false;
|
|
371
|
-
}
|
|
372
|
-
const idx = routerState.historyIndex;
|
|
373
|
-
if (idx === -1)
|
|
374
|
-
return false;
|
|
375
|
-
return idx + steps < routerState._entriesKeys.length;
|
|
376
|
-
}, [navigation, routerState._entriesKeys.length, routerState.historyIndex]);
|
|
377
|
-
const go = useCallback((delta) => {
|
|
378
|
-
// Валидация входных данных
|
|
379
|
-
if (delta === Infinity || delta === -Infinity) {
|
|
380
|
-
getLogger().warn('[useRoute] Delta value too large:', delta);
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
if (!Number.isFinite(delta) || delta === 0)
|
|
384
|
-
return;
|
|
385
|
-
if (delta > Number.MAX_SAFE_INTEGER || delta < -Number.MAX_SAFE_INTEGER) {
|
|
386
|
-
getLogger().warn('[useRoute] Delta value too large:', delta);
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
try {
|
|
390
|
-
if (navigation && routerState._entriesKeys.length > 0) {
|
|
391
|
-
const idx = routerState.historyIndex;
|
|
392
|
-
if (idx === -1)
|
|
393
|
-
return;
|
|
394
|
-
const targetIdx = idx + delta;
|
|
395
|
-
if (targetIdx < 0 || targetIdx >= routerState._entriesKeys.length) {
|
|
396
|
-
return;
|
|
397
|
-
}
|
|
398
|
-
const targetKey = routerState._entriesKeys[targetIdx];
|
|
399
|
-
if (targetKey === undefined)
|
|
400
|
-
return;
|
|
401
|
-
navigation.traverseTo(targetKey);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
catch (error) {
|
|
405
|
-
getLogger().error('[useRoute] Go navigation error:', error);
|
|
406
|
-
}
|
|
407
|
-
}, [navigation, routerState._entriesKeys, routerState.historyIndex]);
|
|
408
|
-
const replace = useCallback((to, options) => navigate(to, { ...options, history: 'replace' }), [navigate]);
|
|
409
|
-
const updateState = useCallback((state) => {
|
|
410
|
-
try {
|
|
411
|
-
if (navigation) {
|
|
412
|
-
navigation.updateCurrentEntry({ state });
|
|
413
|
-
sharedSnapshot = computeNavigationSnapshot(navigation);
|
|
414
|
-
storeCallbacks.forEach((cb) => cb());
|
|
415
|
-
}
|
|
416
|
-
else if (isBrowser) {
|
|
417
|
-
window.history.replaceState(state, '', window.location.href);
|
|
418
|
-
if (noNavSnapshot !== null) {
|
|
419
|
-
noNavSnapshot = { ...noNavSnapshot, state };
|
|
420
|
-
}
|
|
421
|
-
storeCallbacks.forEach((cb) => cb());
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
catch (error) {
|
|
425
|
-
getLogger().error('[useRoute] updateState error:', error);
|
|
426
|
-
}
|
|
427
|
-
}, [navigation]);
|
|
428
|
-
return useMemo(() => ({
|
|
475
|
+
// ✅ Используем глобальные/кэшированные методы - стабильные ссылки, без useCallback
|
|
476
|
+
const navigate = getNavigateForBase(effectiveBase);
|
|
477
|
+
const replace = getReplaceForBase(effectiveBase);
|
|
478
|
+
const back = globalBack;
|
|
479
|
+
const forward = globalForward;
|
|
480
|
+
const go = globalGo;
|
|
481
|
+
const updateState = globalUpdateState;
|
|
482
|
+
const canGoBack = globalCanGoBack;
|
|
483
|
+
const canGoForward = globalCanGoForward;
|
|
484
|
+
// ✅ Возвращаем объект без useMemo - все методы стабильны, routerState мемоизирован выше
|
|
485
|
+
return {
|
|
429
486
|
navigate,
|
|
430
487
|
back,
|
|
431
488
|
forward,
|
|
@@ -441,22 +498,6 @@ export function useRoute(patternOrOptions, optionsParam) {
|
|
|
441
498
|
historyIndex: routerState.historyIndex,
|
|
442
499
|
state: routerState.state,
|
|
443
500
|
matched: routerState.matched,
|
|
444
|
-
}
|
|
445
|
-
navigate,
|
|
446
|
-
back,
|
|
447
|
-
forward,
|
|
448
|
-
go,
|
|
449
|
-
replace,
|
|
450
|
-
updateState,
|
|
451
|
-
canGoBack,
|
|
452
|
-
canGoForward,
|
|
453
|
-
routerState.location,
|
|
454
|
-
routerState.pathname,
|
|
455
|
-
routerState.searchParams,
|
|
456
|
-
routerState.params,
|
|
457
|
-
routerState.historyIndex,
|
|
458
|
-
routerState.state,
|
|
459
|
-
routerState.matched,
|
|
460
|
-
]);
|
|
501
|
+
};
|
|
461
502
|
}
|
|
462
503
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budarin/use-route",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
"build": "tsc",
|
|
31
31
|
"type-check": "tsc -build --noEmit",
|
|
32
32
|
"lint": "prettier --check .",
|
|
33
|
-
"format": "prettier --write .",
|
|
34
33
|
"test": "vitest",
|
|
35
34
|
"test:ui": "vitest --ui",
|
|
36
35
|
"test:run": "vitest run",
|