@syntrologie/runtime-sdk 0.2.12 → 0.2.13
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/SmartCanvasApp.js +57 -2
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +3 -1
- package/dist/hooks/useShadowCanvasConfig.js +1 -0
- package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
- package/dist/smart-canvas.esm.js +11 -11
- package/dist/smart-canvas.esm.js.map +3 -3
- package/dist/smart-canvas.js +44 -2
- package/dist/smart-canvas.js.map +2 -2
- package/dist/smart-canvas.min.js +11 -11
- package/dist/smart-canvas.min.js.map +3 -3
- package/dist/types.d.ts +8 -0
- package/package.json +1 -1
package/dist/SmartCanvasApp.js
CHANGED
|
@@ -5,9 +5,62 @@ import { useShadowCanvasConfig } from "./hooks/useShadowCanvasConfig";
|
|
|
5
5
|
import { createCanvasConfigFetcher } from "./configFetcher";
|
|
6
6
|
import { useCanvasOverlays } from "./hooks/useCanvasOverlays";
|
|
7
7
|
import { useHostPatches } from "./hooks/useHostPatches";
|
|
8
|
+
/**
|
|
9
|
+
* Check if current route is allowed based on routes config
|
|
10
|
+
*/
|
|
11
|
+
function isRouteAllowed(routes, pathname) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
if (!routes)
|
|
14
|
+
return true;
|
|
15
|
+
// If include is specified, route must match one of the patterns
|
|
16
|
+
if ((_a = routes.include) === null || _a === void 0 ? void 0 : _a.length) {
|
|
17
|
+
return routes.include.some(pattern => matchRoute(pattern, pathname));
|
|
18
|
+
}
|
|
19
|
+
// If exclude is specified, route must NOT match any patterns
|
|
20
|
+
if ((_b = routes.exclude) === null || _b === void 0 ? void 0 : _b.length) {
|
|
21
|
+
return !routes.exclude.some(pattern => matchRoute(pattern, pathname));
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Simple route matching - supports exact match and wildcard suffix
|
|
27
|
+
* Examples: "/login" matches "/login", "/admin/*" matches "/admin/users"
|
|
28
|
+
*/
|
|
29
|
+
function matchRoute(pattern, pathname) {
|
|
30
|
+
if (pattern.endsWith("/*")) {
|
|
31
|
+
const prefix = pattern.slice(0, -2);
|
|
32
|
+
return pathname === prefix || pathname.startsWith(prefix + "/");
|
|
33
|
+
}
|
|
34
|
+
return pathname === pattern;
|
|
35
|
+
}
|
|
8
36
|
export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatureKey = "smart-canvas-config-uri", configFeatureKey = "smart-canvas-config", fetchCredentials = "include", pollIntervalMs, experiments, telemetry, overlayFetcher, overlayConfigUri, overlayConfigFeatureKey = "smart-canvas-overlay-uri", overlayFetchCredentials = "include", footerSlot, launcherLabel, canvasHost, customRenderers, theme, }) {
|
|
9
37
|
var _a, _b, _c;
|
|
10
38
|
const [open, setOpen] = useState(controller.getState().open);
|
|
39
|
+
const [pathname, setPathname] = useState(() => typeof window !== "undefined" ? window.location.pathname : "/");
|
|
40
|
+
// Track route changes (for SPAs)
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (typeof window === "undefined")
|
|
43
|
+
return;
|
|
44
|
+
const updatePathname = () => setPathname(window.location.pathname);
|
|
45
|
+
// Listen for popstate (back/forward navigation)
|
|
46
|
+
window.addEventListener("popstate", updatePathname);
|
|
47
|
+
// Intercept pushState/replaceState for SPA navigation
|
|
48
|
+
const originalPushState = history.pushState;
|
|
49
|
+
const originalReplaceState = history.replaceState;
|
|
50
|
+
history.pushState = function (...args) {
|
|
51
|
+
originalPushState.apply(this, args);
|
|
52
|
+
updatePathname();
|
|
53
|
+
};
|
|
54
|
+
history.replaceState = function (...args) {
|
|
55
|
+
originalReplaceState.apply(this, args);
|
|
56
|
+
updatePathname();
|
|
57
|
+
};
|
|
58
|
+
return () => {
|
|
59
|
+
window.removeEventListener("popstate", updatePathname);
|
|
60
|
+
history.pushState = originalPushState;
|
|
61
|
+
history.replaceState = originalReplaceState;
|
|
62
|
+
};
|
|
63
|
+
}, []);
|
|
11
64
|
const derivedFetcher = useMemo(() => {
|
|
12
65
|
if (fetcher)
|
|
13
66
|
return fetcher;
|
|
@@ -76,9 +129,11 @@ export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatur
|
|
|
76
129
|
...theme, // any direct overrides from theme prop
|
|
77
130
|
};
|
|
78
131
|
}, [configState.theme, theme]);
|
|
79
|
-
//
|
|
132
|
+
// Check if current route is allowed
|
|
133
|
+
const routeAllowed = isRouteAllowed(configState.routes, pathname);
|
|
134
|
+
// Only return null after loading completes with no content or excluded route
|
|
80
135
|
// (Don't return null while loading - that causes a flash of nothing)
|
|
81
|
-
if (!configState.isLoading && !hasContent) {
|
|
136
|
+
if (!configState.isLoading && (!hasContent || !routeAllowed)) {
|
|
82
137
|
return null;
|
|
83
138
|
}
|
|
84
139
|
return (_jsx(ShadowCanvasOverlay, { tiles: configState.tiles, isLoading: configState.isLoading, error: configState.error, canvasTitle: configState.canvasTitle, telemetry: telemetry, launcherLabel: launcherLabel !== null && launcherLabel !== void 0 ? launcherLabel : (_a = configState.launcher) === null || _a === void 0 ? void 0 : _a.label, launcherAnimate: (_b = configState.launcher) === null || _b === void 0 ? void 0 : _b.animate, launcherAnimationStyle: (_c = configState.launcher) === null || _c === void 0 ? void 0 : _c.animationStyle, footerSlot: footerSlot, isOpen: open, onToggle: () => controller.toggle(), customRenderers: customRenderers, displayMode: configState.displayMode, theme: mergedTheme }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CanvasConfigFetcher, TileConfig, CanvasThemeConfig, LauncherConfig } from "../types";
|
|
1
|
+
import type { CanvasConfigFetcher, TileConfig, CanvasThemeConfig, LauncherConfig, RoutesConfig } from "../types";
|
|
2
2
|
import type { Patch } from "../hostPatcher/core/types";
|
|
3
3
|
import type { ExperimentClient } from "../experiments/types";
|
|
4
4
|
export interface UseShadowCanvasConfigOptions {
|
|
@@ -23,5 +23,7 @@ export interface ShadowCanvasConfigState {
|
|
|
23
23
|
theme?: CanvasThemeConfig;
|
|
24
24
|
/** Launcher button configuration */
|
|
25
25
|
launcher?: LauncherConfig;
|
|
26
|
+
/** Route filtering configuration */
|
|
27
|
+
routes?: RoutesConfig;
|
|
26
28
|
}
|
|
27
29
|
export declare function useShadowCanvasConfig({ fetcher, pollIntervalMs, experiments, }: UseShadowCanvasConfigOptions): ShadowCanvasConfigState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useShadowCanvasConfig.js","sourceRoot":"","sources":["../../src/hooks/useShadowCanvasConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useShadowCanvasConfig.js","sourceRoot":"","sources":["../../src/hooks/useShadowCanvasConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAgClE,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE,CACxC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AAE7D,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,cAAc,GAAG,KAAK,EACtB,WAAW,GACkB;IAC7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA0B;QAC1D,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC;YACH,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC;YACjC,IAAI,KAAK,GAAiB,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,QAAQ,CAAC;gBACP,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;gBACvB,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClB,GAAG,IAAI;gBACP,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAC5D,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
|