@flowsterix/react 0.11.0 → 0.11.1

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,289 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/utils/dom.ts
2
+ var isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
3
+ var createRect = ({
4
+ top,
5
+ left,
6
+ width,
7
+ height
8
+ }) => ({
9
+ top,
10
+ left,
11
+ width,
12
+ height,
13
+ right: left + width,
14
+ bottom: top + height
15
+ });
16
+ var toClientRect = (rect) => createRect({
17
+ top: rect.top,
18
+ left: rect.left,
19
+ width: rect.width,
20
+ height: rect.height
21
+ });
22
+ var getViewportRect = () => {
23
+ if (!isBrowser) {
24
+ return createRect({ top: 0, left: 0, width: 0, height: 0 });
25
+ }
26
+ const clientWidth = document.documentElement.clientWidth;
27
+ const clientHeight = document.documentElement.clientHeight;
28
+ const width = clientWidth > 0 ? clientWidth : window.innerWidth;
29
+ const height = clientHeight > 0 ? clientHeight : window.innerHeight;
30
+ return createRect({
31
+ top: 0,
32
+ left: 0,
33
+ width,
34
+ height
35
+ });
36
+ };
37
+ var expandRect = (rect, padding) => {
38
+ if (!isBrowser) return rect;
39
+ const viewport = getViewportRect();
40
+ const spaceTop = rect.top;
41
+ const spaceBottom = viewport.height - rect.bottom;
42
+ const spaceLeft = rect.left;
43
+ const spaceRight = viewport.width - rect.right;
44
+ const verticalPadding = Math.min(padding, spaceTop, spaceBottom);
45
+ const horizontalPadding = Math.min(padding, spaceLeft, spaceRight);
46
+ return createRect({
47
+ top: rect.top - verticalPadding,
48
+ left: rect.left - horizontalPadding,
49
+ width: rect.width + horizontalPadding * 2,
50
+ height: rect.height + verticalPadding * 2
51
+ });
52
+ };
53
+ var getClientRect = (element) => toClientRect(element.getBoundingClientRect());
54
+ var SCROLLABLE_OVERFLOW = /(auto|scroll|overlay)/i;
55
+ var isElementScrollable = (node) => {
56
+ if (!isBrowser) return false;
57
+ const style = window.getComputedStyle(node);
58
+ if (style.position === "fixed") return false;
59
+ return SCROLLABLE_OVERFLOW.test(style.overflow) || SCROLLABLE_OVERFLOW.test(style.overflowX) || SCROLLABLE_OVERFLOW.test(style.overflowY);
60
+ };
61
+ var getScrollParents = (element) => {
62
+ if (!isBrowser) return [];
63
+ const parents = [];
64
+ const seen = /* @__PURE__ */ new Set();
65
+ let current = element.parentElement;
66
+ while (current && current !== document.documentElement) {
67
+ if (current !== document.body && isElementScrollable(current)) {
68
+ if (!seen.has(current)) {
69
+ parents.push(current);
70
+ seen.add(current);
71
+ }
72
+ }
73
+ current = current.parentElement;
74
+ }
75
+ const scrollingElement = document.scrollingElement;
76
+ if (scrollingElement && scrollingElement instanceof Element && !seen.has(scrollingElement) && isElementScrollable(scrollingElement)) {
77
+ parents.push(scrollingElement);
78
+ seen.add(scrollingElement);
79
+ }
80
+ return parents;
81
+ };
82
+ var portalHost = () => isBrowser ? document.body : null;
83
+ var cachedMaskSupport = null;
84
+ var detectMaskSupport = () => {
85
+ if (!isBrowser) return false;
86
+ if ("CSS" in window) {
87
+ try {
88
+ if (window.CSS.supports("mask-image", "linear-gradient(#000,#000)")) {
89
+ return true;
90
+ }
91
+ if (window.CSS.supports("-webkit-mask-image", "linear-gradient(#000,#000)")) {
92
+ return true;
93
+ }
94
+ } catch (error) {
95
+ if (typeof console !== "undefined") {
96
+ console.warn("Flowsterix: CSS.supports check failed", error);
97
+ }
98
+ }
99
+ }
100
+ const probe = document.createElement("div");
101
+ return "maskImage" in probe.style || "webkitMaskImage" in probe.style;
102
+ };
103
+ var supportsMasking = () => {
104
+ if (!isBrowser) return false;
105
+ if (cachedMaskSupport === null) {
106
+ cachedMaskSupport = detectMaskSupport();
107
+ }
108
+ return cachedMaskSupport;
109
+ };
110
+
111
+ // src/router/routeGating.ts
112
+ var DEFAULT_POLL_MS = 150;
113
+ var normalizePathname = (pathname) => {
114
+ if (typeof pathname !== "string" || pathname.length === 0) {
115
+ return "/";
116
+ }
117
+ return pathname.startsWith("/") ? pathname : `/${pathname}`;
118
+ };
119
+ var normalizePrefixedSegment = (value, prefix) => {
120
+ if (typeof value !== "string" || value.length === 0) {
121
+ return "";
122
+ }
123
+ return value.startsWith(prefix) ? value : `${prefix}${value}`;
124
+ };
125
+ var getWindowPath = () => {
126
+ if (!isBrowser) return "/";
127
+ const { pathname, search, hash } = window.location;
128
+ return normalizePathname(pathname) + normalizePrefixedSegment(search, "?") + normalizePrefixedSegment(hash, "#");
129
+ };
130
+ var normalizeExternalPath = (path) => {
131
+ if (path.length === 0) {
132
+ return "/";
133
+ }
134
+ try {
135
+ const parsed = new URL(path, "http://flowsterix.local");
136
+ return normalizePathname(parsed.pathname) + normalizePrefixedSegment(parsed.search, "?") + normalizePrefixedSegment(parsed.hash, "#");
137
+ } catch (e) {
138
+ const [withoutHash, hash = ""] = path.split("#");
139
+ const [base, search = ""] = withoutHash.split("?");
140
+ return normalizePathname(base) + normalizePrefixedSegment(search ? `?${search}` : "", "?") + normalizePrefixedSegment(hash ? `#${hash}` : "", "#");
141
+ }
142
+ };
143
+ var RouteGatingChannel = class {
144
+ #listeners = /* @__PURE__ */ new Set();
145
+ #currentPath = getWindowPath();
146
+ #teardown = null;
147
+ #attachDefaultListeners() {
148
+ if (!isBrowser) return;
149
+ if (this.#teardown) return;
150
+ let lastPath = getWindowPath();
151
+ const emitIfChanged = () => {
152
+ const nextPath = getWindowPath();
153
+ if (nextPath === lastPath) return;
154
+ lastPath = nextPath;
155
+ this.notify(nextPath);
156
+ };
157
+ const handler = () => emitIfChanged();
158
+ window.addEventListener("popstate", handler);
159
+ window.addEventListener("hashchange", handler);
160
+ const pollId = window.setInterval(emitIfChanged, DEFAULT_POLL_MS);
161
+ this.#teardown = () => {
162
+ window.removeEventListener("popstate", handler);
163
+ window.removeEventListener("hashchange", handler);
164
+ window.clearInterval(pollId);
165
+ this.#teardown = null;
166
+ };
167
+ }
168
+ #detachDefaultListeners() {
169
+ if (this.#listeners.size > 0) return;
170
+ _optionalChain([this, 'access', _ => _.#teardown, 'optionalCall', _2 => _2()]);
171
+ this.#teardown = null;
172
+ }
173
+ getCurrentPath() {
174
+ if (isBrowser) {
175
+ this.#currentPath = getWindowPath();
176
+ }
177
+ return this.#currentPath;
178
+ }
179
+ notify(path) {
180
+ const resolved = typeof path === "string" && path.length > 0 ? normalizeExternalPath(path) : this.getCurrentPath();
181
+ if (resolved === this.#currentPath) {
182
+ this.#currentPath = resolved;
183
+ return;
184
+ }
185
+ this.#currentPath = resolved;
186
+ for (const listener of Array.from(this.#listeners)) {
187
+ try {
188
+ listener(resolved);
189
+ } catch (error) {
190
+ console.warn("[tour][route-gating] listener error", error);
191
+ }
192
+ }
193
+ }
194
+ subscribe(listener) {
195
+ if (this.#listeners.has(listener)) {
196
+ return () => {
197
+ this.#listeners.delete(listener);
198
+ this.#detachDefaultListeners();
199
+ };
200
+ }
201
+ this.#listeners.add(listener);
202
+ if (this.#listeners.size === 1) {
203
+ this.#attachDefaultListeners();
204
+ }
205
+ const current = this.getCurrentPath();
206
+ try {
207
+ listener(current);
208
+ } catch (error) {
209
+ console.warn("[tour][route-gating] listener error", error);
210
+ }
211
+ return () => {
212
+ this.#listeners.delete(listener);
213
+ this.#detachDefaultListeners();
214
+ };
215
+ }
216
+ };
217
+ var routeGatingChannel = new RouteGatingChannel();
218
+ var getCurrentRoutePath = () => routeGatingChannel.getCurrentPath();
219
+ var notifyRouteChange = (path) => {
220
+ routeGatingChannel.notify(path);
221
+ };
222
+ var subscribeToRouteChanges = (listener) => {
223
+ return routeGatingChannel.subscribe(listener);
224
+ };
225
+ var matchRoute = (params) => {
226
+ const { pattern, path } = params;
227
+ if (!pattern) return true;
228
+ if (typeof pattern === "string") return path === pattern;
229
+ return pattern.test(path);
230
+ };
231
+
232
+ // src/router/utils.ts
233
+ var ensurePrefix = (value, prefix) => value.startsWith(prefix) ? value : `${prefix}${value}`;
234
+ var isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
235
+ var toSearchString = (value) => {
236
+ if (!isNonEmptyString(value)) {
237
+ if (value instanceof URLSearchParams) {
238
+ const serialized = value.toString();
239
+ return serialized.length > 0 ? `?${serialized}` : "";
240
+ }
241
+ if (typeof value === "object" && value !== null) {
242
+ try {
243
+ const params = new URLSearchParams();
244
+ for (const [key, raw] of Object.entries(
245
+ value
246
+ )) {
247
+ if (raw === void 0 || raw === null) continue;
248
+ params.set(key, String(raw));
249
+ }
250
+ const serialized = params.toString();
251
+ return serialized.length > 0 ? `?${serialized}` : "";
252
+ } catch (e2) {
253
+ return "";
254
+ }
255
+ }
256
+ return "";
257
+ }
258
+ if (value === "?") return "";
259
+ return value.startsWith("?") ? value : ensurePrefix(value, "?");
260
+ };
261
+ var toHashString = (value) => {
262
+ if (!isNonEmptyString(value)) {
263
+ return "";
264
+ }
265
+ if (value === "#") return "";
266
+ return value.startsWith("#") ? value : ensurePrefix(value, "#");
267
+ };
268
+ var createPathString = (pathname, search, hash) => {
269
+ const normalizedPath = isNonEmptyString(pathname) ? pathname.startsWith("/") ? pathname : `/${pathname}` : "/";
270
+ const searchPart = toSearchString(search);
271
+ const hashPart = toHashString(hash);
272
+ return `${normalizedPath}${searchPart}${hashPart}`;
273
+ };
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+ exports.isBrowser = isBrowser; exports.getViewportRect = getViewportRect; exports.expandRect = expandRect; exports.getClientRect = getClientRect; exports.getScrollParents = getScrollParents; exports.portalHost = portalHost; exports.supportsMasking = supportsMasking; exports.routeGatingChannel = routeGatingChannel; exports.getCurrentRoutePath = getCurrentRoutePath; exports.notifyRouteChange = notifyRouteChange; exports.subscribeToRouteChanges = subscribeToRouteChanges; exports.matchRoute = matchRoute; exports.createPathString = createPathString;
@@ -0,0 +1,21 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/devtools/DevToolsContext.tsx
2
+ var _react = require('react');
3
+ var DevToolsContext = _react.createContext.call(void 0, null);
4
+ function useDevToolsContext() {
5
+ return _react.useContext.call(void 0, DevToolsContext);
6
+ }
7
+ function useDevToolsContextRequired() {
8
+ const context = _react.useContext.call(void 0, DevToolsContext);
9
+ if (!context) {
10
+ throw new Error(
11
+ "useDevToolsContext must be used within a TourProvider with devtools enabled"
12
+ );
13
+ }
14
+ return context;
15
+ }
16
+
17
+
18
+
19
+
20
+
21
+ exports.DevToolsContext = DevToolsContext; exports.useDevToolsContext = useDevToolsContext; exports.useDevToolsContextRequired = useDevToolsContextRequired;
@@ -0,0 +1 @@
1
+ "use strict";
@@ -57,6 +57,6 @@ export interface TourPopoverPortalProps {
57
57
  */
58
58
  isInGracePeriod?: boolean;
59
59
  }
60
- export declare const TourPopoverPortal: ({ target, children, offset, width, maxWidth, zIndex, placement, role, ariaLabel, ariaDescribedBy, ariaModal, descriptionId, descriptionText, onContainerChange, layoutId, containerComponent, contentComponent, transitionsOverride, }: TourPopoverPortalProps) => import("react").ReactPortal | null;
60
+ export declare const TourPopoverPortal: ({ target, children, offset, width, maxWidth, zIndex, placement, role, ariaLabel, ariaDescribedBy, ariaModal, descriptionId, descriptionText, onContainerChange, layoutId, containerComponent, contentComponent, transitionsOverride, isInGracePeriod, }: TourPopoverPortalProps) => import("react").ReactPortal | null;
61
61
  export {};
62
62
  //# sourceMappingURL=TourPopoverPortal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TourPopoverPortal.d.ts","sourceRoot":"","sources":["../../src/components/TourPopoverPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,WAAW,EACZ,MAAM,OAAO,CAAA;AAYd,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAc,MAAM,cAAc,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAuB7E,KAAK,kBAAkB,GAAG,WAAW,GACnC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IAC3C,KAAK,CAAC,EAAE,aAAa,GAAG,WAAW,CAAA;CACpC,CAAA;AAEH,KAAK,sBAAsB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA;AAoB/D,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE/E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,sBAAsB,CAAA;IACjC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,cAAc,EAAE,kBAAkB,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACxB,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;QAC7B,KAAK,EAAE,aAAa,CAAA;KACrB,CAAA;IACH,YAAY,EAAE,kBAAkB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACnD,UAAU,EAAE,qBAAqB,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ,CAAA;QACd,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,aAAa,CAAA;QACpB,aAAa,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAA;KACtD,CAAA;IACD,gBAAgB,EAAE;QAChB,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,SAAS,CAAA;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,sBAAsB,CAAA;IAC3C,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC1D;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,iBAAiB,GAAI,wOAmB/B,sBAAsB,uCAotBxB,CAAA"}
1
+ {"version":3,"file":"TourPopoverPortal.d.ts","sourceRoot":"","sources":["../../src/components/TourPopoverPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,WAAW,EACZ,MAAM,OAAO,CAAA;AAYd,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAc,MAAM,cAAc,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAuB7E,KAAK,kBAAkB,GAAG,WAAW,GACnC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IAC3C,KAAK,CAAC,EAAE,aAAa,GAAG,WAAW,CAAA;CACpC,CAAA;AAEH,KAAK,sBAAsB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAA;AAoB/D,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE/E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,sBAAsB,CAAA;IACjC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,cAAc,EAAE,kBAAkB,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACxB,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;QAC7B,KAAK,EAAE,aAAa,CAAA;KACrB,CAAA;IACH,YAAY,EAAE,kBAAkB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACnD,UAAU,EAAE,qBAAqB,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ,CAAA;QACd,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,aAAa,CAAA;QACpB,aAAa,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAA;KACtD,CAAA;IACD,gBAAgB,EAAE;QAChB,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,SAAS,CAAA;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,sBAAsB,CAAA;IAC3C,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC1D;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,iBAAiB,GAAI,yPAoB/B,sBAAsB,uCAstBxB,CAAA"}
package/dist/context.d.ts CHANGED
@@ -51,6 +51,12 @@ export interface TourContextValue {
51
51
  setDelayInfo: Dispatch<SetStateAction<DelayAdvanceInfo | null>>;
52
52
  backdropInteraction: BackdropInteractionMode;
53
53
  lockBodyScroll: boolean;
54
+ /** @internal - DevTools: get flow state from storage */
55
+ getFlowState: (flowId: string) => Promise<FlowState | null>;
56
+ /** @internal - DevTools: delete flow storage entry */
57
+ deleteFlowStorage: (flowId: string) => Promise<void>;
58
+ /** @internal - DevTools: update flow storage entry */
59
+ updateFlowStorage: (flowId: string, state: FlowState) => Promise<void>;
54
60
  }
55
61
  export declare const TourProvider: ({ flows, children, storageAdapter, storageNamespace, persistOnChange, defaultDebug, animationAdapter: animationAdapterProp, reducedMotionAdapter, autoDetectReducedMotion, analytics, backdropInteraction: backdropInteractionProp, lockBodyScroll: lockBodyScrollProp, labels: labelsProp, onVersionMismatch, }: PropsWithChildren<TourProviderProps>) => import("react/jsx-runtime").JSX.Element;
56
62
  export declare const useTour: () => TourContextValue;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Global bridge for sharing TourProvider state with DevTools.
3
+ *
4
+ * This is needed because Vite pre-bundles entry points separately,
5
+ * creating different React context instances. Using window as a
6
+ * shared namespace bypasses this issue.
7
+ */
8
+ import type { FlowDefinition, FlowState } from '@flowsterix/core';
9
+ import type { ReactNode } from 'react';
10
+ export interface DevToolsBridgeValue {
11
+ flows: Map<string, FlowDefinition<ReactNode>>;
12
+ activeFlowId: string | null;
13
+ state: FlowState | null;
14
+ cancel: () => void;
15
+ getFlowState: (flowId: string) => Promise<FlowState | null>;
16
+ deleteFlowStorage: (flowId: string) => Promise<void>;
17
+ updateFlowStorage: (flowId: string, state: FlowState) => Promise<void>;
18
+ }
19
+ type Listener = (value: DevToolsBridgeValue | null) => void;
20
+ export declare function setDevToolsBridge(value: DevToolsBridgeValue | null): void;
21
+ export declare function getDevToolsBridge(): DevToolsBridgeValue | null;
22
+ export declare function subscribeDevToolsBridge(listener: Listener): () => void;
23
+ export {};
24
+ //# sourceMappingURL=globalBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalBridge.d.ts","sourceRoot":"","sources":["../../src/devtools/globalBridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC3D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACvE;AAED,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAA;AAqB3D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAMzE;AAED,wBAAgB,iBAAiB,IAAI,mBAAmB,GAAG,IAAI,CAE9D;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAMtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFlowsData.d.ts","sourceRoot":"","sources":["../../../src/devtools/hooks/useFlowsData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACrC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AAED,wBAAgB,YAAY,IAAI,kBAAkB,CAkFjD"}
1
+ {"version":3,"file":"useFlowsData.d.ts","sourceRoot":"","sources":["../../../src/devtools/hooks/useFlowsData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACrC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AAWD,wBAAgB,YAAY,IAAI,kBAAkB,CA4EjD"}