sv-router 0.10.4 → 0.10.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sv-router",
3
- "version": "0.10.4",
3
+ "version": "0.10.5",
4
4
  "description": "Modern Svelte Routing",
5
5
  "keywords": [
6
6
  "svelte",
@@ -26,7 +26,17 @@ export const base = {
26
26
  /** @type {{ value: import('svelte').Component[] }} */
27
27
  export let componentTree = $state({ value: [] });
28
28
 
29
- export let location = $state(updatedLocation());
29
+ export let location = $state({ pathname: '/', search: '', state: null, hash: '' });
30
+
31
+ if (BROWSER) {
32
+ queueMicrotask(() => {
33
+ const updated = updatedLocation();
34
+ location.pathname = updated.pathname;
35
+ location.search = updated.search;
36
+ location.state = updated.state;
37
+ location.hash = updated.hash;
38
+ });
39
+ }
30
40
 
31
41
  /** @type {{ value: Record<string, string> }} */
32
42
  let params = $state({ value: {} });
@@ -247,7 +257,8 @@ export function onGlobalClick(event) {
247
257
  if (
248
258
  anchor.hasAttribute('target') ||
249
259
  anchor.hasAttribute('download') ||
250
- !anchor.hasAttribute('href')
260
+ !anchor.hasAttribute('href') ||
261
+ anchor.getAttribute('href')?.startsWith('#')
251
262
  )
252
263
  return;
253
264
 
@@ -260,10 +271,20 @@ export function onGlobalClick(event) {
260
271
 
261
272
  event.preventDefault();
262
273
  const { replace, state, scrollToTop, viewTransition } = anchor.dataset;
274
+
275
+ let parsedState;
276
+ if (state) {
277
+ try {
278
+ parsedState = JSON.parse(state);
279
+ } catch {
280
+ parsedState = state;
281
+ }
282
+ }
283
+
263
284
  onNavigate(path, {
264
285
  replace: replace === '' || replace === 'true',
265
286
  search: url.search,
266
- state,
287
+ state: parsedState,
267
288
  hash,
268
289
  scrollToTop: scrollToTop === 'false' ? false : /** @type ScrollBehavior */ (scrollToTop),
269
290
  viewTransition: viewTransition === '' || viewTransition === 'true',
package/src/index.d.ts CHANGED
@@ -241,14 +241,14 @@ export type HooksContext = {
241
241
  pathname: string;
242
242
  replace?: boolean;
243
243
  search: Record<string, string | number | boolean>;
244
- state?: string;
244
+ state?: unknown;
245
245
  };
246
246
 
247
247
  export type NavigateOptions =
248
248
  | {
249
249
  replace?: boolean;
250
250
  search?: Search;
251
- state?: string;
251
+ state?: unknown;
252
252
  hash?: string;
253
253
  scrollToTop?: ScrollBehavior | false;
254
254
  viewTransition?: boolean;