@flowsterix/react 0.8.0 → 0.9.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.
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Helper utilities for programmatically controlling Radix Dialog components
3
+ * in tour lifecycle hooks (onEnter, onResume, onExit).
4
+ */
5
+ /**
6
+ * Wait for next animation frame + microtask flush.
7
+ * Use this to ensure DOM updates have completed after triggering UI changes.
8
+ */
9
+ export declare const waitForDom: () => Promise<void>;
10
+ export interface CreateRadixDialogHelpersParams {
11
+ /** Selector for the dialog content element (visible when open) */
12
+ contentSelector: string;
13
+ /** Selector for the trigger button that opens the dialog */
14
+ triggerSelector: string;
15
+ }
16
+ export interface RadixDialogHelpers {
17
+ /** Check if the dialog is currently open */
18
+ isOpen: () => boolean;
19
+ /** Open the dialog if not already open */
20
+ open: () => Promise<void>;
21
+ /** Close the dialog if currently open */
22
+ close: () => Promise<void>;
23
+ }
24
+ /**
25
+ * Create helpers for programmatically controlling a Radix Dialog.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * const settingsDialog = createRadixDialogHelpers({
30
+ * contentSelector: '[data-tour-target="settings-dialog"]',
31
+ * triggerSelector: '[data-tour-target="settings-trigger"]',
32
+ * })
33
+ *
34
+ * // In flow step:
35
+ * {
36
+ * id: 'settings-panel',
37
+ * target: { selector: '[data-tour-target="settings-dialog"]' },
38
+ * onEnter: settingsDialog.open,
39
+ * onResume: settingsDialog.open,
40
+ * onExit: settingsDialog.close,
41
+ * content: <p>Configure your settings here</p>,
42
+ * }
43
+ * ```
44
+ */
45
+ export declare const createRadixDialogHelpers: (params: CreateRadixDialogHelpersParams) => RadixDialogHelpers;
46
+ //# sourceMappingURL=radixDialogHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radixDialogHelpers.d.ts","sourceRoot":"","sources":["../../src/adapters/radixDialogHelpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,IAAI,CAGvC,CAAA;AAEH,MAAM,WAAW,8BAA8B;IAC7C,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,OAAO,CAAA;IACrB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,yCAAyC;IACzC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,8BAA8B,KACrC,kBA+BF,CAAA"}
package/dist/index.cjs CHANGED
@@ -26,6 +26,7 @@ __export(index_exports, {
26
26
  TourPopoverPortal: () => TourPopoverPortal,
27
27
  TourProvider: () => TourProvider,
28
28
  createPathString: () => createPathString,
29
+ createRadixDialogHelpers: () => createRadixDialogHelpers,
29
30
  createWaitForPredicateController: () => createWaitForPredicateController,
30
31
  defaultAnimationAdapter: () => defaultAnimationAdapter,
31
32
  defaultLabels: () => defaultLabels,
@@ -53,7 +54,8 @@ __export(index_exports, {
53
54
  useTourLabels: () => useTourLabels,
54
55
  useTourOverlay: () => useTourOverlay,
55
56
  useTourTarget: () => useTourTarget,
56
- useViewportRect: () => useViewportRect
57
+ useViewportRect: () => useViewportRect,
58
+ waitForDom: () => waitForDom
57
59
  });
58
60
  module.exports = __toCommonJS(index_exports);
59
61
 
@@ -2872,6 +2874,34 @@ var useRadixDialogAdapter = (options = {}) => {
2872
2874
  };
2873
2875
  };
2874
2876
 
2877
+ // src/adapters/radixDialogHelpers.ts
2878
+ var waitForDom = () => new Promise(
2879
+ (resolve) => requestAnimationFrame(() => setTimeout(resolve, 0))
2880
+ );
2881
+ var createRadixDialogHelpers = (params) => {
2882
+ const { contentSelector, triggerSelector } = params;
2883
+ const isOpen = () => {
2884
+ if (typeof document === "undefined") return false;
2885
+ return document.querySelector(contentSelector) !== null;
2886
+ };
2887
+ const open = async () => {
2888
+ if (typeof document === "undefined") return;
2889
+ if (isOpen()) return;
2890
+ await waitForDom();
2891
+ if (isOpen()) return;
2892
+ const trigger = document.querySelector(triggerSelector);
2893
+ trigger?.click();
2894
+ await waitForDom();
2895
+ };
2896
+ const close = async () => {
2897
+ if (typeof document === "undefined") return;
2898
+ if (!isOpen()) return;
2899
+ document.dispatchEvent(new KeyboardEvent("keydown", { key: "Escape" }));
2900
+ await waitForDom();
2901
+ };
2902
+ return { isOpen, open, close };
2903
+ };
2904
+
2875
2905
  // src/hooks/useDelayAdvance.ts
2876
2906
  var import_react18 = require("react");
2877
2907
  var getTimestamp = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
@@ -4286,6 +4316,7 @@ var useHudMotion = () => {
4286
4316
  TourPopoverPortal,
4287
4317
  TourProvider,
4288
4318
  createPathString,
4319
+ createRadixDialogHelpers,
4289
4320
  createWaitForPredicateController,
4290
4321
  defaultAnimationAdapter,
4291
4322
  defaultLabels,
@@ -4313,5 +4344,6 @@ var useHudMotion = () => {
4313
4344
  useTourLabels,
4314
4345
  useTourOverlay,
4315
4346
  useTourTarget,
4316
- useViewportRect
4347
+ useViewportRect,
4348
+ waitForDom
4317
4349
  });
package/dist/index.d.ts CHANGED
@@ -18,6 +18,8 @@ export { useHudTargetIssue } from './hooks/useHudTargetIssue';
18
18
  export type { HudTargetIssue, UseHudTargetIssueOptions, UseHudTargetIssueResult, } from './hooks/useHudTargetIssue';
19
19
  export { useRadixDialogAdapter } from './adapters/radixDialog';
20
20
  export type { RadixDialogAdapterResult, UseRadixDialogAdapterOptions, } from './adapters/radixDialog';
21
+ export { createRadixDialogHelpers, waitForDom } from './adapters/radixDialogHelpers';
22
+ export type { CreateRadixDialogHelpersParams, RadixDialogHelpers, } from './adapters/radixDialogHelpers';
21
23
  export { useTourFocusDominance } from './hooks/useTourFocusDominance';
22
24
  export type { UseTourFocusDominanceOptions, UseTourFocusDominanceResult, } from './hooks/useTourFocusDominance';
23
25
  export { useTourControls } from './hooks/useTourControls';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
- import "./chunk-WCLT3A6G.mjs";
2
- import "./chunk-2ZX2Y3JL.mjs";
1
+ import "./chunk-Y5EAQSU3.mjs";
3
2
  import {
4
3
  createPathString,
5
4
  expandRect,
@@ -2570,6 +2569,34 @@ var useRadixDialogAdapter = (options = {}) => {
2570
2569
  };
2571
2570
  };
2572
2571
 
2572
+ // src/adapters/radixDialogHelpers.ts
2573
+ var waitForDom = () => new Promise(
2574
+ (resolve) => requestAnimationFrame(() => setTimeout(resolve, 0))
2575
+ );
2576
+ var createRadixDialogHelpers = (params) => {
2577
+ const { contentSelector, triggerSelector } = params;
2578
+ const isOpen = () => {
2579
+ if (typeof document === "undefined") return false;
2580
+ return document.querySelector(contentSelector) !== null;
2581
+ };
2582
+ const open = async () => {
2583
+ if (typeof document === "undefined") return;
2584
+ if (isOpen()) return;
2585
+ await waitForDom();
2586
+ if (isOpen()) return;
2587
+ const trigger = document.querySelector(triggerSelector);
2588
+ trigger?.click();
2589
+ await waitForDom();
2590
+ };
2591
+ const close = async () => {
2592
+ if (typeof document === "undefined") return;
2593
+ if (!isOpen()) return;
2594
+ document.dispatchEvent(new KeyboardEvent("keydown", { key: "Escape" }));
2595
+ await waitForDom();
2596
+ };
2597
+ return { isOpen, open, close };
2598
+ };
2599
+
2573
2600
  // src/hooks/useDelayAdvance.ts
2574
2601
  import { useEffect as useEffect13, useMemo as useMemo10, useState as useState10 } from "react";
2575
2602
  var getTimestamp = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
@@ -3989,6 +4016,7 @@ export {
3989
4016
  TourPopoverPortal,
3990
4017
  TourProvider,
3991
4018
  createPathString,
4019
+ createRadixDialogHelpers,
3992
4020
  createWaitForPredicateController,
3993
4021
  defaultAnimationAdapter,
3994
4022
  defaultLabels,
@@ -4016,5 +4044,6 @@ export {
4016
4044
  useTourLabels,
4017
4045
  useTourOverlay,
4018
4046
  useTourTarget,
4019
- useViewportRect
4047
+ useViewportRect,
4048
+ waitForDom
4020
4049
  };
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,31 +15,17 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
 
30
20
  // src/router/index.ts
31
21
  var router_exports = {};
32
22
  __export(router_exports, {
33
- TanStackRouterSync: () => TanStackRouterSync,
34
23
  createPathString: () => createPathString,
35
24
  getCurrentRoutePath: () => getCurrentRoutePath,
36
- getTanStackRouter: () => getTanStackRouter,
37
- getTourRouter: () => getTourRouter,
38
25
  matchRoute: () => matchRoute,
39
26
  notifyRouteChange: () => notifyRouteChange,
40
27
  routeGatingChannel: () => routeGatingChannel,
41
- setTanStackRouter: () => setTanStackRouter,
42
- setTourRouter: () => setTourRouter,
43
- subscribeToRouteChanges: () => subscribeToRouteChanges,
44
- useTanStackRouterTourAdapter: () => useTanStackRouterTourAdapter
28
+ subscribeToRouteChanges: () => subscribeToRouteChanges
45
29
  });
46
30
  module.exports = __toCommonJS(router_exports);
47
31
 
@@ -211,75 +195,12 @@ var createPathString = (pathname, search, hash) => {
211
195
  const hashPart = toHashString(hash);
212
196
  return `${normalizedPath}${searchPart}${hashPart}`;
213
197
  };
214
-
215
- // src/router/tanstackRouterAdapter.tsx
216
- var import_react_router = require("@tanstack/react-router");
217
- var import_react2 = require("react");
218
-
219
- // src/router/tanstackRouterSync.tsx
220
- var TanStackRouter = __toESM(require("@tanstack/react-router"), 1);
221
- var import_react = require("react");
222
- var currentRouter = null;
223
- var setTourRouter = (router) => {
224
- currentRouter = router;
225
- };
226
- var setTanStackRouter = setTourRouter;
227
- var getTourRouter = () => {
228
- return currentRouter;
229
- };
230
- var getTanStackRouter = getTourRouter;
231
- var TanStackRouterSync = ({
232
- onRouterAvailable
233
- }) => {
234
- const useRouter2 = TanStackRouter.useRouter;
235
- if (typeof useRouter2 !== "function") {
236
- if (typeof console !== "undefined") {
237
- console.warn(
238
- "[tour][router] TanStackRouterSync requires @tanstack/react-router. Call this component only inside TanStack Router environments."
239
- );
240
- }
241
- return null;
242
- }
243
- useTanStackRouterTourAdapter();
244
- const router = useRouter2();
245
- (0, import_react.useEffect)(() => {
246
- setTourRouter(router);
247
- onRouterAvailable?.(router);
248
- return () => {
249
- if (getTourRouter() === router) {
250
- setTourRouter(null);
251
- }
252
- onRouterAvailable?.(null);
253
- };
254
- }, [router, onRouterAvailable]);
255
- return null;
256
- };
257
-
258
- // src/router/tanstackRouterAdapter.tsx
259
- var useTanStackRouterTourAdapter = () => {
260
- const location = (0, import_react_router.useRouterState)({
261
- select: (state) => state.location
262
- });
263
- (0, import_react2.useEffect)(() => {
264
- const resolvedPathname = typeof location.pathname === "string" && location.pathname.length > 0 ? location.pathname : "/";
265
- const resolvedSearch = "searchStr" in location && typeof location.searchStr === "string" ? location.searchStr : typeof location.search === "string" ? location.search : "";
266
- const resolvedHash = typeof location.hash === "string" ? location.hash : "";
267
- const path = typeof location.href === "string" && location.href.length > 0 ? location.href : createPathString(resolvedPathname, resolvedSearch, resolvedHash);
268
- notifyRouteChange(path);
269
- }, [location]);
270
- };
271
198
  // Annotate the CommonJS export names for ESM import in node:
272
199
  0 && (module.exports = {
273
- TanStackRouterSync,
274
200
  createPathString,
275
201
  getCurrentRoutePath,
276
- getTanStackRouter,
277
- getTourRouter,
278
202
  matchRoute,
279
203
  notifyRouteChange,
280
204
  routeGatingChannel,
281
- setTanStackRouter,
282
- setTourRouter,
283
- subscribeToRouteChanges,
284
- useTanStackRouterTourAdapter
205
+ subscribeToRouteChanges
285
206
  });
@@ -1,5 +1,3 @@
1
1
  export { getCurrentRoutePath, matchRoute, notifyRouteChange, routeGatingChannel, subscribeToRouteChanges, } from './routeGating';
2
2
  export { createPathString } from './utils';
3
- export { useTanStackRouterTourAdapter } from './tanstackRouterAdapter';
4
- export { getTanStackRouter, getTourRouter, setTanStackRouter, setTourRouter, TanStackRouterSync, } from './tanstackRouterSync';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA"}
@@ -1,12 +1,4 @@
1
- import "../chunk-WCLT3A6G.mjs";
2
- import {
3
- TanStackRouterSync,
4
- getTanStackRouter,
5
- getTourRouter,
6
- setTanStackRouter,
7
- setTourRouter,
8
- useTanStackRouterTourAdapter
9
- } from "../chunk-2ZX2Y3JL.mjs";
1
+ import "../chunk-Y5EAQSU3.mjs";
10
2
  import {
11
3
  createPathString,
12
4
  getCurrentRoutePath,
@@ -16,16 +8,10 @@ import {
16
8
  subscribeToRouteChanges
17
9
  } from "../chunk-B44EX7YT.mjs";
18
10
  export {
19
- TanStackRouterSync,
20
11
  createPathString,
21
12
  getCurrentRoutePath,
22
- getTanStackRouter,
23
- getTourRouter,
24
13
  matchRoute,
25
14
  notifyRouteChange,
26
15
  routeGatingChannel,
27
- setTanStackRouter,
28
- setTourRouter,
29
- subscribeToRouteChanges,
30
- useTanStackRouterTourAdapter
16
+ subscribeToRouteChanges
31
17
  };
@@ -1,12 +1,64 @@
1
1
  import {
2
- TanStackRouterSync,
3
- getTanStackRouter,
4
- getTourRouter,
5
- setTanStackRouter,
6
- setTourRouter,
7
- useTanStackRouterTourAdapter
8
- } from "../chunk-2ZX2Y3JL.mjs";
9
- import "../chunk-B44EX7YT.mjs";
2
+ createPathString,
3
+ notifyRouteChange
4
+ } from "../chunk-B44EX7YT.mjs";
5
+
6
+ // src/router/tanstackRouterAdapter.tsx
7
+ import { useRouterState } from "@tanstack/react-router";
8
+ import { useEffect as useEffect2 } from "react";
9
+
10
+ // src/router/tanstackRouterSync.tsx
11
+ import * as TanStackRouter from "@tanstack/react-router";
12
+ import { useEffect } from "react";
13
+ var currentRouter = null;
14
+ var setTourRouter = (router) => {
15
+ currentRouter = router;
16
+ };
17
+ var setTanStackRouter = setTourRouter;
18
+ var getTourRouter = () => {
19
+ return currentRouter;
20
+ };
21
+ var getTanStackRouter = getTourRouter;
22
+ var TanStackRouterSync = ({
23
+ onRouterAvailable
24
+ }) => {
25
+ const useRouter2 = TanStackRouter.useRouter;
26
+ if (typeof useRouter2 !== "function") {
27
+ if (typeof console !== "undefined") {
28
+ console.warn(
29
+ "[tour][router] TanStackRouterSync requires @tanstack/react-router. Call this component only inside TanStack Router environments."
30
+ );
31
+ }
32
+ return null;
33
+ }
34
+ useTanStackRouterTourAdapter();
35
+ const router = useRouter2();
36
+ useEffect(() => {
37
+ setTourRouter(router);
38
+ onRouterAvailable?.(router);
39
+ return () => {
40
+ if (getTourRouter() === router) {
41
+ setTourRouter(null);
42
+ }
43
+ onRouterAvailable?.(null);
44
+ };
45
+ }, [router, onRouterAvailable]);
46
+ return null;
47
+ };
48
+
49
+ // src/router/tanstackRouterAdapter.tsx
50
+ var useTanStackRouterTourAdapter = () => {
51
+ const location = useRouterState({
52
+ select: (state) => state.location
53
+ });
54
+ useEffect2(() => {
55
+ const resolvedPathname = typeof location.pathname === "string" && location.pathname.length > 0 ? location.pathname : "/";
56
+ const resolvedSearch = "searchStr" in location && typeof location.searchStr === "string" ? location.searchStr : typeof location.search === "string" ? location.search : "";
57
+ const resolvedHash = typeof location.hash === "string" ? location.hash : "";
58
+ const path = typeof location.href === "string" && location.href.length > 0 ? location.href : createPathString(resolvedPathname, resolvedSearch, resolvedHash);
59
+ notifyRouteChange(path);
60
+ }, [location]);
61
+ };
10
62
  export {
11
63
  TanStackRouterSync,
12
64
  getTanStackRouter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowsterix/react",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "React bindings for Flowsterix - guided tours and onboarding flows",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,70 +0,0 @@
1
- import {
2
- createPathString,
3
- notifyRouteChange
4
- } from "./chunk-B44EX7YT.mjs";
5
-
6
- // src/router/tanstackRouterAdapter.tsx
7
- import { useRouterState } from "@tanstack/react-router";
8
- import { useEffect as useEffect2 } from "react";
9
-
10
- // src/router/tanstackRouterSync.tsx
11
- import * as TanStackRouter from "@tanstack/react-router";
12
- import { useEffect } from "react";
13
- var currentRouter = null;
14
- var setTourRouter = (router) => {
15
- currentRouter = router;
16
- };
17
- var setTanStackRouter = setTourRouter;
18
- var getTourRouter = () => {
19
- return currentRouter;
20
- };
21
- var getTanStackRouter = getTourRouter;
22
- var TanStackRouterSync = ({
23
- onRouterAvailable
24
- }) => {
25
- const useRouter2 = TanStackRouter.useRouter;
26
- if (typeof useRouter2 !== "function") {
27
- if (typeof console !== "undefined") {
28
- console.warn(
29
- "[tour][router] TanStackRouterSync requires @tanstack/react-router. Call this component only inside TanStack Router environments."
30
- );
31
- }
32
- return null;
33
- }
34
- useTanStackRouterTourAdapter();
35
- const router = useRouter2();
36
- useEffect(() => {
37
- setTourRouter(router);
38
- onRouterAvailable?.(router);
39
- return () => {
40
- if (getTourRouter() === router) {
41
- setTourRouter(null);
42
- }
43
- onRouterAvailable?.(null);
44
- };
45
- }, [router, onRouterAvailable]);
46
- return null;
47
- };
48
-
49
- // src/router/tanstackRouterAdapter.tsx
50
- var useTanStackRouterTourAdapter = () => {
51
- const location = useRouterState({
52
- select: (state) => state.location
53
- });
54
- useEffect2(() => {
55
- const resolvedPathname = typeof location.pathname === "string" && location.pathname.length > 0 ? location.pathname : "/";
56
- const resolvedSearch = "searchStr" in location && typeof location.searchStr === "string" ? location.searchStr : typeof location.search === "string" ? location.search : "";
57
- const resolvedHash = typeof location.hash === "string" ? location.hash : "";
58
- const path = typeof location.href === "string" && location.href.length > 0 ? location.href : createPathString(resolvedPathname, resolvedSearch, resolvedHash);
59
- notifyRouteChange(path);
60
- }, [location]);
61
- };
62
-
63
- export {
64
- setTourRouter,
65
- setTanStackRouter,
66
- getTourRouter,
67
- getTanStackRouter,
68
- TanStackRouterSync,
69
- useTanStackRouterTourAdapter
70
- };
File without changes