zudoku 0.3.0-dev.51 → 0.3.0-dev.52
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/app/main.js +2 -2
- package/dist/app/main.js.map +1 -1
- package/dist/lib/authentication/providers/clerk.js +1 -1
- package/dist/lib/authentication/providers/clerk.js.map +1 -1
- package/dist/lib/components/DevPortal.js +1 -1
- package/dist/lib/components/DevPortal.js.map +1 -1
- package/dist/lib/core/DevPortalContext.d.ts +3 -1
- package/dist/lib/core/DevPortalContext.js.map +1 -1
- package/dist/vite/prerender.js +4 -0
- package/dist/vite/prerender.js.map +1 -1
- package/lib/zudoku.auth-clerk.js +5 -4
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.components.js +63 -60
- package/lib/zudoku.components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/main.tsx +2 -2
- package/src/lib/authentication/providers/clerk.tsx +1 -1
- package/src/lib/components/DevPortal.tsx +2 -2
- package/src/lib/core/DevPortalContext.ts +3 -1
package/dist/app/main.js
CHANGED
|
@@ -10,7 +10,7 @@ import { isNavigationPlugin } from "zudoku/internal";
|
|
|
10
10
|
export const convertZudokuConfigToOptions = (config) => {
|
|
11
11
|
return {
|
|
12
12
|
page: {
|
|
13
|
-
logo:
|
|
13
|
+
logo: "https://cdn.zudoku.dev/logos/icon.svg",
|
|
14
14
|
pageTitle: "Developer Portal",
|
|
15
15
|
...config.page,
|
|
16
16
|
},
|
|
@@ -19,7 +19,7 @@ export const convertZudokuConfigToOptions = (config) => {
|
|
|
19
19
|
title: "%s | Developer Portal",
|
|
20
20
|
...config.metadata,
|
|
21
21
|
},
|
|
22
|
-
|
|
22
|
+
mdx: config.mdx,
|
|
23
23
|
navigation: config.navigation ?? [],
|
|
24
24
|
authentication: configuredAuthProvider,
|
|
25
25
|
plugins: [
|
package/dist/app/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/app/main.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAAoB,EACE,EAAE;IACxB,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/app/main.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAAoB,EACE,EAAE;IACxB,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,uCAAuC;YAC7C,SAAS,EAAE,kBAAkB;YAC7B,GAAG,MAAM,CAAC,IAAI;SACf;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,uCAAuC;YAChD,KAAK,EAAE,uBAAuB;YAC9B,GAAG,MAAM,CAAC,QAAQ;SACnB;QACD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;QACnC,cAAc,EAAE,sBAAsB;QACtC,OAAO,EAAE;YACP,GAAG,qBAAqB;YACxB,GAAG,oBAAoB;YACvB,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAoB,EAAiB,EAAE;IACvE,MAAM,OAAO,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;IAEF,MAAM,MAAM,GAAG,UAAU;SACtB,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3E,MAAM,CAAC;QACN,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;KACF,CAAC,CAAC;IAEL,OAAO;QACL;YACE,OAAO,EAAE,CACP,KAAC,SAAS,OAAK,OAAO,YACpB,KAAC,MAAM,KAAG,GACA,CACb;YACD,YAAY,EAAE,CACZ,KAAC,SAAS,OAAK,OAAO,YACpB,KAAC,MAAM,cACL,KAAC,WAAW,KAAG,GACR,GACC,CACb;YACD,QAAQ,EAAE,MAAM;SACjB;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { useAuthState } from "../state.js";
|
|
|
2
2
|
const clerkAuth = ({ clerkPubKey }) => {
|
|
3
3
|
let clerkApi;
|
|
4
4
|
const ensureLoaded = (async () => {
|
|
5
|
-
if (
|
|
5
|
+
if (typeof window === "undefined")
|
|
6
6
|
return;
|
|
7
7
|
const { Clerk } = await import("@clerk/clerk-js");
|
|
8
8
|
clerkApi = new Clerk(clerkPubKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clerk.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/clerk.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,SAAS,GAEX,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IACtB,IAAI,QAAe,CAAC;IAEpB,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"clerk.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/clerk.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,SAAS,GAEX,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IACtB,IAAI,QAAe,CAAC;IAEpB,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC;IAEL,KAAK,UAAU,cAAc;QAC3B,MAAM,YAAY,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,YAAY,CAAC;YAEnB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,QAAQ,CAAC;oBACpB,eAAe,EAAE,IAAI;oBACrB,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE;wBACP,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBAC7B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS;wBACjD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY;wBAC5D,aAAa,EAAE,KAAK,EAAE,mBAAmB;wBACzC,gEAAgE;wBAChE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;qBAC3C;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,QAAQ,CAAC;oBACpB,eAAe,EAAE,KAAK;oBACtB,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,cAAc;QACd,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;KACpB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -17,7 +17,7 @@ export const DevPortalSystemPaths = {
|
|
|
17
17
|
};
|
|
18
18
|
const DevPortalInner = ({ children, ...props }) => {
|
|
19
19
|
const components = useMemo(() => ({ ...DEFAULT_COMPONENTS, ...props.overrides }), [props.overrides]);
|
|
20
|
-
const mdxComponents = useMemo(() => ({ ...MdxComponents, ...props.
|
|
20
|
+
const mdxComponents = useMemo(() => ({ ...MdxComponents, ...props.mdx?.components }), [props.mdx?.components]);
|
|
21
21
|
const devPortalContext = useMemo(() => new DevPortalContext(props), [props]);
|
|
22
22
|
useEffect(() => {
|
|
23
23
|
void devPortalContext.initialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevPortal.js","sourceRoot":"","sources":["../../../src/lib/components/DevPortal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,IAAI,EAEJ,SAAS,EACT,OAAO,GACR,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,WAAW,GAEZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,WAAW;CACb,CAAC;AAMX,MAAM,cAAc,GAAG,CAAC,EACtB,QAAQ,EACR,GAAG,KAAK,EACgC,EAAE,EAAE;IAC5C,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EACrD,CAAC,KAAK,CAAC,SAAS,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"DevPortal.js","sourceRoot":"","sources":["../../../src/lib/components/DevPortal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,9 @@ export type ZudokuContextOptions = {
|
|
|
63
63
|
authentication?: AuthenticationProvider;
|
|
64
64
|
navigation: NavigationItem[];
|
|
65
65
|
plugins?: DevPortalPlugin[];
|
|
66
|
-
|
|
66
|
+
mdx?: {
|
|
67
|
+
components?: MdxComponentsType;
|
|
68
|
+
};
|
|
67
69
|
overrides?: ComponentsContextType;
|
|
68
70
|
};
|
|
69
71
|
export declare class DevPortalContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevPortalContext.js","sourceRoot":"","sources":["../../../src/lib/core/DevPortalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMpD,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AA2CtB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DevPortalContext.js","sourceRoot":"","sources":["../../../src/lib/core/DevPortalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMpD,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AA2CtB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAkC7C,MAAM,OAAO,gBAAgB;IACnB,OAAO,GAAiD,EAAE,CAAC;IAC5D,UAAU,CAAqC;IAC/C,IAAI,CAAmC;IACvC,IAAI,CAA+B;IACnC,cAAc,CAA0C;IACvD,iBAAiB,CAAqB;IAE9C,YAAY,MAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,UAAU,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,OAAO;iBACT,MAAM,CAAC,mBAAmB,CAAC;iBAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,eAAe,GAAG,KAAK,EAAE,GAAwB,EAAE,EAAE;QACnD,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,aAAa,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC1C,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAC7B,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QAE/D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;CACH"}
|
package/dist/vite/prerender.js
CHANGED
|
@@ -40,6 +40,8 @@ export class FileWritingResponse {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
export const prerender = async (html, dir) => {
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.log("Prerendering...");
|
|
43
45
|
const config = await import(path.join(dir, "dist/server/zudoku.config.js")).then((m) => m.default);
|
|
44
46
|
const module = await import(path.join(dir, "dist/server/entry.server.js"));
|
|
45
47
|
const render = module.render;
|
|
@@ -50,6 +52,8 @@ export const prerender = async (html, dir) => {
|
|
|
50
52
|
await render({ template: html, request: req, response, config });
|
|
51
53
|
await response.isSent();
|
|
52
54
|
}
|
|
55
|
+
// eslint-disable-next-line no-console
|
|
56
|
+
console.log(`Prerendered ${paths.length} pages`);
|
|
53
57
|
return paths;
|
|
54
58
|
};
|
|
55
59
|
//# sourceMappingURL=prerender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../src/vite/prerender.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../src/vite/prerender.ts"],"names":[],"mappings":"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"}
|
package/lib/zudoku.auth-clerk.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { u as t } from "./state-DKdaQzvh.js";
|
|
2
|
-
const r = ({ clerkPubKey:
|
|
2
|
+
const r = ({ clerkPubKey: n }) => {
|
|
3
3
|
let e;
|
|
4
4
|
const i = (async () => {
|
|
5
|
+
if (typeof window > "u") return;
|
|
5
6
|
const { Clerk: s } = await import("@clerk/clerk-js");
|
|
6
|
-
e = new s(
|
|
7
|
+
e = new s(n), await e.load({});
|
|
7
8
|
})();
|
|
8
|
-
async function
|
|
9
|
+
async function a() {
|
|
9
10
|
if (await i, !e.session)
|
|
10
11
|
throw new Error("No session available");
|
|
11
12
|
const s = await e.session.getToken();
|
|
@@ -34,7 +35,7 @@ const r = ({ clerkPubKey: a }) => {
|
|
|
34
35
|
profile: void 0
|
|
35
36
|
});
|
|
36
37
|
},
|
|
37
|
-
getAccessToken:
|
|
38
|
+
getAccessToken: a,
|
|
38
39
|
logout: async () => {
|
|
39
40
|
await e.signOut();
|
|
40
41
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.auth-clerk.js","sources":["../src/lib/authentication/providers/clerk.tsx"],"sourcesContent":["import type { Clerk } from \"@clerk/clerk-js\";\nimport { ClerkAuthenticationConfig } from \"../../../config/config.js\";\nimport { AuthenticationProviderInitializer } from \"../authentication.js\";\nimport { useAuthState } from \"../state.js\";\n\nconst clerkAuth: AuthenticationProviderInitializer<\n ClerkAuthenticationConfig\n> = ({ clerkPubKey }) => {\n let clerkApi: Clerk;\n\n const ensureLoaded = (async () => {\n if (
|
|
1
|
+
{"version":3,"file":"zudoku.auth-clerk.js","sources":["../src/lib/authentication/providers/clerk.tsx"],"sourcesContent":["import type { Clerk } from \"@clerk/clerk-js\";\nimport { ClerkAuthenticationConfig } from \"../../../config/config.js\";\nimport { AuthenticationProviderInitializer } from \"../authentication.js\";\nimport { useAuthState } from \"../state.js\";\n\nconst clerkAuth: AuthenticationProviderInitializer<\n ClerkAuthenticationConfig\n> = ({ clerkPubKey }) => {\n let clerkApi: Clerk;\n\n const ensureLoaded = (async () => {\n if (typeof window === \"undefined\") return;\n const { Clerk } = await import(\"@clerk/clerk-js\");\n clerkApi = new Clerk(clerkPubKey);\n\n await clerkApi.load({});\n })();\n\n async function getAccessToken() {\n await ensureLoaded;\n if (!clerkApi.session) {\n throw new Error(\"No session available\");\n }\n const response = await clerkApi.session.getToken();\n if (!response) {\n throw new Error(\"Could not get access token from Clerk\");\n }\n return response;\n }\n\n return {\n initialize: async () => {\n await ensureLoaded;\n\n if (clerkApi.session) {\n useAuthState.setState({\n isAuthenticated: true,\n isPending: false,\n profile: {\n sub: clerkApi.session.user.id,\n name: clerkApi.session.user.fullName ?? undefined,\n email: clerkApi.session.user.emailAddresses[0]?.emailAddress,\n emailVerified: false, // TODO: Check this\n // emailVerified: clerkApi.session.user.hasVerifiedEmailAddress,\n pictureUrl: clerkApi.session.user.imageUrl,\n },\n });\n } else {\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n });\n }\n },\n getAccessToken,\n logout: async () => {\n await clerkApi.signOut();\n },\n login: async () => {\n await clerkApi.redirectToSignIn();\n },\n getRoutes: () => [],\n };\n};\n\nexport default clerkAuth;\n"],"names":["clerkAuth","clerkPubKey","clerkApi","ensureLoaded","Clerk","getAccessToken","response","useAuthState","_a"],"mappings":";AAKA,MAAMA,IAEF,CAAC,EAAE,aAAAC,QAAkB;AACnB,MAAAC;AAEJ,QAAMC,KAAgB,YAAY;AAC5B,QAAA,OAAO,SAAW,IAAa;AACnC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,OAAO,iBAAiB;AACrC,IAAAF,IAAA,IAAIE,EAAMH,CAAW,GAE1B,MAAAC,EAAS,KAAK,CAAA,CAAE;AAAA,EAAA;AAGxB,iBAAeG,IAAiB;AAE1B,QADE,MAAAF,GACF,CAACD,EAAS;AACN,YAAA,IAAI,MAAM,sBAAsB;AAExC,UAAMI,IAAW,MAAMJ,EAAS,QAAQ,SAAS;AACjD,QAAI,CAACI;AACG,YAAA,IAAI,MAAM,uCAAuC;AAElD,WAAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,YAAY,YAAY;;AAChB,YAAAH,GAEFD,EAAS,UACXK,EAAa,SAAS;AAAA,QACpB,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,SAAS;AAAA,UACP,KAAKL,EAAS,QAAQ,KAAK;AAAA,UAC3B,MAAMA,EAAS,QAAQ,KAAK,YAAY;AAAA,UACxC,QAAOM,IAAAN,EAAS,QAAQ,KAAK,eAAe,CAAC,MAAtC,gBAAAM,EAAyC;AAAA,UAChD,eAAe;AAAA;AAAA;AAAA,UAEf,YAAYN,EAAS,QAAQ,KAAK;AAAA,QACpC;AAAA,MAAA,CACD,IAEDK,EAAa,SAAS;AAAA,QACpB,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,SAAS;AAAA,MAAA,CACV;AAAA,IAEL;AAAA,IACA,gBAAAF;AAAA,IACA,QAAQ,YAAY;AAClB,YAAMH,EAAS;IACjB;AAAA,IACA,OAAO,YAAY;AACjB,YAAMA,EAAS;IACjB;AAAA,IACA,WAAW,MAAM,CAAC;AAAA,EAAA;AAEtB;"}
|
package/lib/zudoku.components.js
CHANGED
|
@@ -4,10 +4,10 @@ var ce = (t) => {
|
|
|
4
4
|
};
|
|
5
5
|
var Ve = (t, e, r) => e in t ? $e(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
|
|
6
6
|
var v = (t, e, r) => Ve(t, typeof e != "symbol" ? e + "" : e, r), ue = (t, e, r) => e.has(t) || ce("Cannot " + r);
|
|
7
|
-
var l = (t, e, r) => (ue(t, e, "read from private field"), r ? r.call(t) : e.get(t)), y = (t, e, r) => e.has(t) ? ce("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r),
|
|
7
|
+
var l = (t, e, r) => (ue(t, e, "read from private field"), r ? r.call(t) : e.get(t)), y = (t, e, r) => e.has(t) ? ce("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), f = (t, e, r, a) => (ue(t, e, "write to private field"), a ? a.call(t, r) : e.set(t, r), r);
|
|
8
8
|
var L = (t, e, r, a) => ({
|
|
9
9
|
set _(s) {
|
|
10
|
-
|
|
10
|
+
f(t, e, s, r);
|
|
11
11
|
},
|
|
12
12
|
get _() {
|
|
13
13
|
return l(t, e, a);
|
|
@@ -20,7 +20,7 @@ import { H as Pe, a as je, M as lt, A as ct, u as ut } from "./AnchorLink-CZUp-F
|
|
|
20
20
|
import ht, { StrictMode as Se, createContext as Ne, Component as dt, createElement as he, isValidElement as ft, memo as Ce, useMemo as V, useEffect as I, Fragment as pt, useRef as K, useState as mt, forwardRef as gt, Suspense as vt } from "react";
|
|
21
21
|
import { g as G } from "./_commonjsHelpers-BVfed4GL.js";
|
|
22
22
|
import { r as yt } from "./router-CBw2vqJE.js";
|
|
23
|
-
import { S as Oe, h as Ae, Q as bt, n as
|
|
23
|
+
import { S as Oe, h as Ae, Q as bt, n as m, m as de, a as fe, b as P, e as xt, c as wt, d as Et, f as Pt, o as pe, r as me, g as jt, i as ge, p as ve, s as St, u as Z, j as Nt, D as Ct, k as Ot, l as At } from "./DevPortalProvider-Do9oJqme.js";
|
|
24
24
|
import { M as Rt } from "./index-CXXn0D4E.js";
|
|
25
25
|
import { R as Re, T as ke, C as Me, S as kt } from "./Spinner-BSk0ImmP.js";
|
|
26
26
|
import { c as ee, i as X, j as De, a as Mt } from "./util-_jwUlTBU.js";
|
|
@@ -355,7 +355,7 @@ var w, be, tr = (be = class extends Oe {
|
|
|
355
355
|
constructor(e = {}) {
|
|
356
356
|
super();
|
|
357
357
|
y(this, w);
|
|
358
|
-
this.config = e,
|
|
358
|
+
this.config = e, f(this, w, /* @__PURE__ */ new Map());
|
|
359
359
|
}
|
|
360
360
|
build(e, r, a) {
|
|
361
361
|
const s = r.queryKey, o = r.queryHash ?? Ae(s, r);
|
|
@@ -380,7 +380,7 @@ var w, be, tr = (be = class extends Oe {
|
|
|
380
380
|
r && (e.destroy(), r === e && l(this, w).delete(e.queryHash), this.notify({ type: "removed", query: e }));
|
|
381
381
|
}
|
|
382
382
|
clear() {
|
|
383
|
-
|
|
383
|
+
m.batch(() => {
|
|
384
384
|
this.getAll().forEach((e) => {
|
|
385
385
|
this.remove(e);
|
|
386
386
|
});
|
|
@@ -403,32 +403,32 @@ var w, be, tr = (be = class extends Oe {
|
|
|
403
403
|
return Object.keys(e).length > 0 ? r.filter((a) => de(e, a)) : r;
|
|
404
404
|
}
|
|
405
405
|
notify(e) {
|
|
406
|
-
|
|
406
|
+
m.batch(() => {
|
|
407
407
|
this.listeners.forEach((r) => {
|
|
408
408
|
r(e);
|
|
409
409
|
});
|
|
410
410
|
});
|
|
411
411
|
}
|
|
412
412
|
onFocus() {
|
|
413
|
-
|
|
413
|
+
m.batch(() => {
|
|
414
414
|
this.getAll().forEach((e) => {
|
|
415
415
|
e.onFocus();
|
|
416
416
|
});
|
|
417
417
|
});
|
|
418
418
|
}
|
|
419
419
|
onOnline() {
|
|
420
|
-
|
|
420
|
+
m.batch(() => {
|
|
421
421
|
this.getAll().forEach((e) => {
|
|
422
422
|
e.onOnline();
|
|
423
423
|
});
|
|
424
424
|
});
|
|
425
425
|
}
|
|
426
|
-
}, w = new WeakMap(), be),
|
|
426
|
+
}, w = new WeakMap(), be), p, Q, xe, rr = (xe = class extends Oe {
|
|
427
427
|
constructor(e = {}) {
|
|
428
428
|
super();
|
|
429
|
-
y(this,
|
|
429
|
+
y(this, p);
|
|
430
430
|
y(this, Q);
|
|
431
|
-
this.config = e,
|
|
431
|
+
this.config = e, f(this, p, /* @__PURE__ */ new Map()), f(this, Q, Date.now());
|
|
432
432
|
}
|
|
433
433
|
build(e, r, a) {
|
|
434
434
|
const s = new Rt({
|
|
@@ -440,37 +440,37 @@ var w, be, tr = (be = class extends Oe {
|
|
|
440
440
|
return this.add(s), s;
|
|
441
441
|
}
|
|
442
442
|
add(e) {
|
|
443
|
-
const r = B(e), a = l(this,
|
|
444
|
-
a.push(e), l(this,
|
|
443
|
+
const r = B(e), a = l(this, p).get(r) ?? [];
|
|
444
|
+
a.push(e), l(this, p).set(r, a), this.notify({ type: "added", mutation: e });
|
|
445
445
|
}
|
|
446
446
|
remove(e) {
|
|
447
447
|
var a;
|
|
448
448
|
const r = B(e);
|
|
449
|
-
if (l(this,
|
|
450
|
-
const s = (a = l(this,
|
|
451
|
-
s && (s.length === 0 ? l(this,
|
|
449
|
+
if (l(this, p).has(r)) {
|
|
450
|
+
const s = (a = l(this, p).get(r)) == null ? void 0 : a.filter((o) => o !== e);
|
|
451
|
+
s && (s.length === 0 ? l(this, p).delete(r) : l(this, p).set(r, s));
|
|
452
452
|
}
|
|
453
453
|
this.notify({ type: "removed", mutation: e });
|
|
454
454
|
}
|
|
455
455
|
canRun(e) {
|
|
456
456
|
var a;
|
|
457
|
-
const r = (a = l(this,
|
|
457
|
+
const r = (a = l(this, p).get(B(e))) == null ? void 0 : a.find((s) => s.state.status === "pending");
|
|
458
458
|
return !r || r === e;
|
|
459
459
|
}
|
|
460
460
|
runNext(e) {
|
|
461
461
|
var a;
|
|
462
|
-
const r = (a = l(this,
|
|
462
|
+
const r = (a = l(this, p).get(B(e))) == null ? void 0 : a.find((s) => s !== e && s.state.isPaused);
|
|
463
463
|
return (r == null ? void 0 : r.continue()) ?? Promise.resolve();
|
|
464
464
|
}
|
|
465
465
|
clear() {
|
|
466
|
-
|
|
466
|
+
m.batch(() => {
|
|
467
467
|
this.getAll().forEach((e) => {
|
|
468
468
|
this.remove(e);
|
|
469
469
|
});
|
|
470
470
|
});
|
|
471
471
|
}
|
|
472
472
|
getAll() {
|
|
473
|
-
return [...l(this,
|
|
473
|
+
return [...l(this, p).values()].flat();
|
|
474
474
|
}
|
|
475
475
|
find(e) {
|
|
476
476
|
const r = { exact: !0, ...e };
|
|
@@ -482,7 +482,7 @@ var w, be, tr = (be = class extends Oe {
|
|
|
482
482
|
return this.getAll().filter((r) => fe(e, r));
|
|
483
483
|
}
|
|
484
484
|
notify(e) {
|
|
485
|
-
|
|
485
|
+
m.batch(() => {
|
|
486
486
|
this.listeners.forEach((r) => {
|
|
487
487
|
r(e);
|
|
488
488
|
});
|
|
@@ -490,13 +490,13 @@ var w, be, tr = (be = class extends Oe {
|
|
|
490
490
|
}
|
|
491
491
|
resumePausedMutations() {
|
|
492
492
|
const e = this.getAll().filter((r) => r.state.isPaused);
|
|
493
|
-
return
|
|
493
|
+
return m.batch(
|
|
494
494
|
() => Promise.all(
|
|
495
495
|
e.map((r) => r.continue().catch(P))
|
|
496
496
|
)
|
|
497
497
|
);
|
|
498
498
|
}
|
|
499
|
-
},
|
|
499
|
+
}, p = new WeakMap(), Q = new WeakMap(), xe);
|
|
500
500
|
function B(t) {
|
|
501
501
|
var e;
|
|
502
502
|
return ((e = t.options.scope) == null ? void 0 : e.id) ?? String(t.mutationId);
|
|
@@ -507,16 +507,16 @@ function ar(t) {
|
|
|
507
507
|
const a = async () => {
|
|
508
508
|
var re, ae, se, ne, ie;
|
|
509
509
|
const s = e.options, o = (se = (ae = (re = e.fetchOptions) == null ? void 0 : re.meta) == null ? void 0 : ae.fetchMore) == null ? void 0 : se.direction, i = ((ne = e.state.data) == null ? void 0 : ne.pages) || [], c = ((ie = e.state.data) == null ? void 0 : ie.pageParams) || [], u = { pages: [], pageParams: [] };
|
|
510
|
-
let
|
|
511
|
-
const
|
|
510
|
+
let g = !1;
|
|
511
|
+
const d = (b) => {
|
|
512
512
|
Object.defineProperty(b, "signal", {
|
|
513
513
|
enumerable: !0,
|
|
514
|
-
get: () => (e.signal.aborted ?
|
|
515
|
-
|
|
514
|
+
get: () => (e.signal.aborted ? g = !0 : e.signal.addEventListener("abort", () => {
|
|
515
|
+
g = !0;
|
|
516
516
|
}), e.signal)
|
|
517
517
|
});
|
|
518
518
|
}, Ue = xt(e.options, e.fetchOptions), $ = async (b, S, A) => {
|
|
519
|
-
if (
|
|
519
|
+
if (g)
|
|
520
520
|
return Promise.reject();
|
|
521
521
|
if (S == null && b.pages.length)
|
|
522
522
|
return Promise.resolve(b);
|
|
@@ -526,7 +526,7 @@ function ar(t) {
|
|
|
526
526
|
direction: A ? "backward" : "forward",
|
|
527
527
|
meta: e.options.meta
|
|
528
528
|
};
|
|
529
|
-
|
|
529
|
+
d(H);
|
|
530
530
|
const Ke = await Ue(
|
|
531
531
|
H
|
|
532
532
|
), { maxPages: oe } = e.options, le = A ? wt : Et;
|
|
@@ -600,18 +600,18 @@ var h, N, C, k, M, O, D, _, we, nr = (we = class {
|
|
|
600
600
|
y(this, O);
|
|
601
601
|
y(this, D);
|
|
602
602
|
y(this, _);
|
|
603
|
-
|
|
603
|
+
f(this, h, t.queryCache || new tr()), f(this, N, t.mutationCache || new rr()), f(this, C, t.defaultOptions || {}), f(this, k, /* @__PURE__ */ new Map()), f(this, M, /* @__PURE__ */ new Map()), f(this, O, 0);
|
|
604
604
|
}
|
|
605
605
|
mount() {
|
|
606
|
-
L(this, O)._++, l(this, O) === 1 && (
|
|
606
|
+
L(this, O)._++, l(this, O) === 1 && (f(this, D, Pt.subscribe(async (t) => {
|
|
607
607
|
t && (await this.resumePausedMutations(), l(this, h).onFocus());
|
|
608
|
-
})),
|
|
608
|
+
})), f(this, _, pe.subscribe(async (t) => {
|
|
609
609
|
t && (await this.resumePausedMutations(), l(this, h).onOnline());
|
|
610
610
|
})));
|
|
611
611
|
}
|
|
612
612
|
unmount() {
|
|
613
613
|
var t, e;
|
|
614
|
-
L(this, O)._--, l(this, O) === 0 && ((t = l(this, D)) == null || t.call(this),
|
|
614
|
+
L(this, O)._--, l(this, O) === 0 && ((t = l(this, D)) == null || t.call(this), f(this, D, void 0), (e = l(this, _)) == null || e.call(this), f(this, _, void 0));
|
|
615
615
|
}
|
|
616
616
|
isFetching(t) {
|
|
617
617
|
return l(this, h).findAll({ ...t, fetchStatus: "fetching" }).length;
|
|
@@ -647,7 +647,7 @@ var h, N, C, k, M, O, D, _, we, nr = (we = class {
|
|
|
647
647
|
return l(this, h).build(this, a).setData(i, { ...r, manual: !0 });
|
|
648
648
|
}
|
|
649
649
|
setQueriesData(t, e, r) {
|
|
650
|
-
return
|
|
650
|
+
return m.batch(
|
|
651
651
|
() => l(this, h).findAll(t).map(({ queryKey: a }) => [
|
|
652
652
|
a,
|
|
653
653
|
this.setQueryData(a, e, r)
|
|
@@ -661,7 +661,7 @@ var h, N, C, k, M, O, D, _, we, nr = (we = class {
|
|
|
661
661
|
}
|
|
662
662
|
removeQueries(t) {
|
|
663
663
|
const e = l(this, h);
|
|
664
|
-
|
|
664
|
+
m.batch(() => {
|
|
665
665
|
e.findAll(t).forEach((r) => {
|
|
666
666
|
e.remove(r);
|
|
667
667
|
});
|
|
@@ -672,18 +672,18 @@ var h, N, C, k, M, O, D, _, we, nr = (we = class {
|
|
|
672
672
|
type: "active",
|
|
673
673
|
...t
|
|
674
674
|
};
|
|
675
|
-
return
|
|
675
|
+
return m.batch(() => (r.findAll(t).forEach((s) => {
|
|
676
676
|
s.reset();
|
|
677
677
|
}), this.refetchQueries(a, e)));
|
|
678
678
|
}
|
|
679
679
|
cancelQueries(t = {}, e = {}) {
|
|
680
|
-
const r = { revert: !0, ...e }, a =
|
|
680
|
+
const r = { revert: !0, ...e }, a = m.batch(
|
|
681
681
|
() => l(this, h).findAll(t).map((s) => s.cancel(r))
|
|
682
682
|
);
|
|
683
683
|
return Promise.all(a).then(P).catch(P);
|
|
684
684
|
}
|
|
685
685
|
invalidateQueries(t = {}, e = {}) {
|
|
686
|
-
return
|
|
686
|
+
return m.batch(() => {
|
|
687
687
|
if (l(this, h).findAll(t).forEach((a) => {
|
|
688
688
|
a.invalidate();
|
|
689
689
|
}), t.refetchType === "none")
|
|
@@ -699,7 +699,7 @@ var h, N, C, k, M, O, D, _, we, nr = (we = class {
|
|
|
699
699
|
const r = {
|
|
700
700
|
...e,
|
|
701
701
|
cancelRefetch: (e == null ? void 0 : e.cancelRefetch) ?? !0
|
|
702
|
-
}, a =
|
|
702
|
+
}, a = m.batch(
|
|
703
703
|
() => l(this, h).findAll(t).filter((s) => !s.isDisabled()).map((s) => {
|
|
704
704
|
let o = s.fetch(void 0, r);
|
|
705
705
|
return r.throwOnError || (o = o.catch(P)), s.state.fetchStatus === "paused" ? Promise.resolve() : o;
|
|
@@ -737,7 +737,7 @@ var h, N, C, k, M, O, D, _, we, nr = (we = class {
|
|
|
737
737
|
return l(this, C);
|
|
738
738
|
}
|
|
739
739
|
setDefaultOptions(t) {
|
|
740
|
-
|
|
740
|
+
f(this, C, t);
|
|
741
741
|
}
|
|
742
742
|
setQueryDefaults(t, e) {
|
|
743
743
|
l(this, k).set(ge(t), {
|
|
@@ -932,7 +932,7 @@ const mr = () => {
|
|
|
932
932
|
}
|
|
933
933
|
) }, e.label)) }) });
|
|
934
934
|
}, qe = Ce(function() {
|
|
935
|
-
const [e, r] = We(), { isAuthenticated: a, profile: s, isAuthEnabled: o, login: i, logout: c } = st(), { page: u } = Z(),
|
|
935
|
+
const [e, r] = We(), { isAuthenticated: a, profile: s, isAuthEnabled: o, login: i, logout: c } = st(), { page: u } = Z(), g = e ? _t : Tt;
|
|
936
936
|
return /* @__PURE__ */ n.jsx("header", { className: "fixed top-0 w-full z-10 bg-background/80 backdrop-blur", children: /* @__PURE__ */ n.jsxs("div", { className: "max-w-screen-2xl mx-auto", children: [
|
|
937
937
|
/* @__PURE__ */ n.jsxs("div", { className: "grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b border-border px-12 h-[--top-header-height]", children: [
|
|
938
938
|
/* @__PURE__ */ n.jsxs("div", { className: "flex items-center gap-3.5", children: [
|
|
@@ -969,7 +969,7 @@ const mr = () => {
|
|
|
969
969
|
"aria-label": e ? "Switch to light mode" : "Switch to dark mode",
|
|
970
970
|
className: "cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full",
|
|
971
971
|
onClick: r,
|
|
972
|
-
children: /* @__PURE__ */ n.jsx(
|
|
972
|
+
children: /* @__PURE__ */ n.jsx(g, { size: 18 })
|
|
973
973
|
}
|
|
974
974
|
)
|
|
975
975
|
] })
|
|
@@ -983,20 +983,23 @@ const mr = () => {
|
|
|
983
983
|
children: t,
|
|
984
984
|
...e
|
|
985
985
|
}) => {
|
|
986
|
-
var i;
|
|
986
|
+
var i, c;
|
|
987
987
|
const r = V(
|
|
988
988
|
() => ({ ...He, ...e.overrides }),
|
|
989
989
|
[e.overrides]
|
|
990
990
|
), a = V(
|
|
991
|
-
() =>
|
|
992
|
-
|
|
991
|
+
() => {
|
|
992
|
+
var u;
|
|
993
|
+
return { ...Ge, ...(u = e.mdx) == null ? void 0 : u.components };
|
|
994
|
+
},
|
|
995
|
+
[(i = e.mdx) == null ? void 0 : i.components]
|
|
993
996
|
), s = V(() => new fr(e), [e]);
|
|
994
997
|
I(() => {
|
|
995
998
|
s.initialize();
|
|
996
999
|
}, [s]);
|
|
997
|
-
const o = (
|
|
998
|
-
var
|
|
999
|
-
return /* @__PURE__ */ n.jsx(pt, { children: (
|
|
1000
|
+
const o = (c = e.plugins) == null ? void 0 : c.filter(hr).map((u, g) => {
|
|
1001
|
+
var d;
|
|
1002
|
+
return /* @__PURE__ */ n.jsx(pt, { children: (d = u.getHead) == null ? void 0 : d.call(u) }, g);
|
|
1000
1003
|
});
|
|
1001
1004
|
return /* @__PURE__ */ n.jsxs(Nt, { client: Ie, children: [
|
|
1002
1005
|
/* @__PURE__ */ n.jsx(je, { children: o }),
|
|
@@ -1062,7 +1065,7 @@ const xr = () => {
|
|
|
1062
1065
|
defaultOpen: () => ee(e, i.pathname, o)
|
|
1063
1066
|
});
|
|
1064
1067
|
if (Mt(e)) {
|
|
1065
|
-
const
|
|
1068
|
+
const d = F(
|
|
1066
1069
|
"flex items-center gap-2",
|
|
1067
1070
|
z({
|
|
1068
1071
|
isActive: e.href === i.pathname
|
|
@@ -1071,7 +1074,7 @@ const xr = () => {
|
|
|
1071
1074
|
return e.href.startsWith("http") ? /* @__PURE__ */ n.jsxs(
|
|
1072
1075
|
"a",
|
|
1073
1076
|
{
|
|
1074
|
-
className:
|
|
1077
|
+
className: d,
|
|
1075
1078
|
href: e.href,
|
|
1076
1079
|
target: "_blank",
|
|
1077
1080
|
rel: "noopener noreferrer",
|
|
@@ -1080,9 +1083,9 @@ const xr = () => {
|
|
|
1080
1083
|
/* @__PURE__ */ n.jsx(Dt, { size: 14 })
|
|
1081
1084
|
]
|
|
1082
1085
|
}
|
|
1083
|
-
) : /* @__PURE__ */ n.jsx(J, { className:
|
|
1086
|
+
) : /* @__PURE__ */ n.jsx(J, { className: d, to: e.href, children: e.label });
|
|
1084
1087
|
}
|
|
1085
|
-
const
|
|
1088
|
+
const g = /* @__PURE__ */ n.jsxs("div", { className: "flex justify-between w-full", children: [
|
|
1086
1089
|
/* @__PURE__ */ n.jsxs("div", { className: "flex items-center gap-2 truncate w-full", children: [
|
|
1087
1090
|
e.icon,
|
|
1088
1091
|
typeof e.label != "string" ? e.label : /* @__PURE__ */ n.jsx("span", { className: "truncate", children: e.label })
|
|
@@ -1099,7 +1102,7 @@ const xr = () => {
|
|
|
1099
1102
|
Re,
|
|
1100
1103
|
{
|
|
1101
1104
|
open: c,
|
|
1102
|
-
onOpenChange: () => u((
|
|
1105
|
+
onOpenChange: () => u((d) => !d),
|
|
1103
1106
|
className: "flex flex-col",
|
|
1104
1107
|
children: [
|
|
1105
1108
|
/* @__PURE__ */ n.jsx(
|
|
@@ -1109,19 +1112,19 @@ const xr = () => {
|
|
|
1109
1112
|
"group text-start",
|
|
1110
1113
|
z({ isActive: !1 })
|
|
1111
1114
|
),
|
|
1112
|
-
children:
|
|
1115
|
+
children: g
|
|
1113
1116
|
}
|
|
1114
1117
|
),
|
|
1115
|
-
/* @__PURE__ */ n.jsx(Me, { className: "CollapsibleContent ms-[calc(var(--padding-nav-item)*1.125)]", children: /* @__PURE__ */ n.jsx("ul", { className: "mt-1 border-border border-l ps-1.5", children: e.children.map((
|
|
1118
|
+
/* @__PURE__ */ n.jsx(Me, { className: "CollapsibleContent ms-[calc(var(--padding-nav-item)*1.125)]", children: /* @__PURE__ */ n.jsx("ul", { className: "mt-1 border-border border-l ps-1.5", children: e.children.map((d) => /* @__PURE__ */ n.jsx(
|
|
1116
1119
|
ze,
|
|
1117
1120
|
{
|
|
1118
1121
|
category: t,
|
|
1119
|
-
item:
|
|
1122
|
+
item: d,
|
|
1120
1123
|
activeAnchor: r,
|
|
1121
1124
|
currentTopNavItem: a,
|
|
1122
1125
|
basePath: o
|
|
1123
1126
|
},
|
|
1124
|
-
X(
|
|
1127
|
+
X(d) ? d.path : d.href
|
|
1125
1128
|
)) }) })
|
|
1126
1129
|
]
|
|
1127
1130
|
}
|
|
@@ -1134,14 +1137,14 @@ const xr = () => {
|
|
|
1134
1137
|
isActive: e.path.slice(1) === r,
|
|
1135
1138
|
isMuted: e.muted
|
|
1136
1139
|
}),
|
|
1137
|
-
children:
|
|
1140
|
+
children: g
|
|
1138
1141
|
}
|
|
1139
1142
|
) : /* @__PURE__ */ n.jsx(
|
|
1140
1143
|
J,
|
|
1141
1144
|
{
|
|
1142
|
-
className: ({ isActive:
|
|
1145
|
+
className: ({ isActive: d }) => z({ isActive: d }),
|
|
1143
1146
|
to: o,
|
|
1144
|
-
children:
|
|
1147
|
+
children: g
|
|
1145
1148
|
}
|
|
1146
1149
|
) });
|
|
1147
1150
|
}, Pr = ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.components.js","sources":["../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/chevron-right.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/external-link.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/moon-star.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/sun.js","../src/lib/errors/ServerError.tsx","../../../node_modules/.pnpm/react-router-dom@6.24.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-router-dom/server.js","../src/lib/components/Bootstrap.tsx","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/.pnpm/react-error-boundary@4.0.13_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../src/lib/core/plugins.ts","../src/lib/core/DevPortalContext.ts","../src/lib/errors/TopLevelError.tsx","../src/lib/components/TopNavigation.tsx","../src/lib/components/Header.tsx","../src/lib/components/context/ComponentsContext.tsx","../src/lib/components/DevPortal.tsx","../src/lib/util/useScrollToAnchor.ts","../src/lib/util/useScrollToTop.ts","../src/lib/components/navigation/useNavigationCollapsibleState.ts","../src/lib/components/navigation/SideNavigationItem.tsx","../src/lib/components/navigation/SideNavigationCategory.tsx","../src/lib/components/navigation/SideNavigationWrapper.tsx","../src/lib/components/navigation/SideNavigation.tsx","../src/lib/components/Layout.tsx","../src/lib/components/index.ts"],"sourcesContent":["/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"ChevronRight\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ExternalLink = createLucideIcon(\"ExternalLink\", [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n]);\n\nexport { ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MoonStar = createLucideIcon(\"MoonStar\", [\n [\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9\", key: \"4ay0iu\" }],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }]\n]);\n\nexport { MoonStar as default };\n//# sourceMappingURL=moon-star.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sun = createLucideIcon(\"Sun\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n]);\n\nexport { Sun as default };\n//# sourceMappingURL=sun.js.map\n","import { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function ServerError({ error }: { error: unknown }) {\n return <ErrorAlert error={error} />;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar router = require('@remix-run/router');\nvar reactRouter = require('react-router');\nvar reactRouterDom = require('react-router-dom');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\n/**\n * A `<Router>` that may not navigate to any other location. This is useful\n * on the server where there is no stateful UI.\n */\nfunction StaticRouter({\n basename,\n children,\n location: locationProp = \"/\",\n future\n}) {\n if (typeof locationProp === \"string\") {\n locationProp = reactRouterDom.parsePath(locationProp);\n }\n let action = router.Action.Pop;\n let location = {\n pathname: locationProp.pathname || \"/\",\n search: locationProp.search || \"\",\n hash: locationProp.hash || \"\",\n state: locationProp.state != null ? locationProp.state : null,\n key: locationProp.key || \"default\"\n };\n let staticNavigator = getStatelessNavigator();\n return /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, {\n basename: basename,\n children: children,\n location: location,\n navigationType: action,\n navigator: staticNavigator,\n future: future,\n static: true\n });\n}\n/**\n * A Data Router that may not navigate to any other location. This is useful\n * on the server where there is no stateful UI.\n */\nfunction StaticRouterProvider({\n context,\n router: router$1,\n hydrate = true,\n nonce\n}) {\n !(router$1 && context) ? process.env.NODE_ENV !== \"production\" ? router.UNSAFE_invariant(false, \"You must provide `router` and `context` to <StaticRouterProvider>\") : router.UNSAFE_invariant(false) : void 0;\n let dataRouterContext = {\n router: router$1,\n navigator: getStatelessNavigator(),\n static: true,\n staticContext: context,\n basename: context.basename || \"/\"\n };\n let fetchersContext = new Map();\n let hydrateScript = \"\";\n if (hydrate !== false) {\n let data = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors(context.errors)\n };\n // Use JSON.parse here instead of embedding a raw JS object here to speed\n // up parsing on the client. Dual-stringify is needed to ensure all quotes\n // are properly escaped in the resulting string. See:\n // https://v8.dev/blog/cost-of-javascript-2019#json\n let json = htmlEscape(JSON.stringify(JSON.stringify(data)));\n hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n }\n let {\n state\n } = dataRouterContext.router;\n return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_FetchersContext.Provider, {\n value: fetchersContext\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_ViewTransitionContext.Provider, {\n value: {\n isTransitioning: false\n }\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, {\n basename: dataRouterContext.basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: dataRouterContext.navigator,\n static: dataRouterContext.static,\n future: {\n v7_relativeSplatPath: router$1.future.v7_relativeSplatPath\n }\n }, /*#__PURE__*/React__namespace.createElement(DataRoutes, {\n routes: router$1.routes,\n future: router$1.future,\n state: state\n })))))), hydrateScript ? /*#__PURE__*/React__namespace.createElement(\"script\", {\n suppressHydrationWarning: true,\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: hydrateScript\n }\n }) : null);\n}\nfunction DataRoutes({\n routes,\n future,\n state\n}) {\n return reactRouter.UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\nfunction serializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // deserializeErrors in react-router-dom/index.tsx :)\n if (router.isRouteErrorResponse(val)) {\n serialized[key] = {\n ...val,\n __type: \"RouteErrorResponse\"\n };\n } else if (val instanceof Error) {\n // Do not serialize stack traces from SSR for security reasons\n serialized[key] = {\n message: val.message,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration.\n ...(val.name !== \"Error\" ? {\n __subType: val.name\n } : {})\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction getStatelessNavigator() {\n return {\n createHref,\n encodeLocation,\n push(to) {\n throw new Error(`You cannot use navigator.push() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`);\n },\n replace(to) {\n throw new Error(`You cannot use navigator.replace() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere ` + `in your app.`);\n },\n go(delta) {\n throw new Error(`You cannot use navigator.go() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${delta})\\` somewhere in your app.`);\n },\n back() {\n throw new Error(`You cannot use navigator.back() on the server because it is a stateless ` + `environment.`);\n },\n forward() {\n throw new Error(`You cannot use navigator.forward() on the server because it is a stateless ` + `environment.`);\n }\n };\n}\nfunction createStaticHandler(routes, opts) {\n return router.createStaticHandler(routes, {\n ...opts,\n mapRouteProperties: reactRouter.UNSAFE_mapRouteProperties\n });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n let manifest = {};\n let dataRoutes = router.UNSAFE_convertRoutesToDataRoutes(routes, reactRouter.UNSAFE_mapRouteProperties, undefined, manifest);\n // Because our context matches may be from a framework-agnostic set of\n // routes passed to createStaticHandler(), we update them here with our\n // newly created/enhanced data routes\n let matches = context.matches.map(match => {\n let route = manifest[match.route.id] || match.route;\n return {\n ...match,\n route\n };\n });\n let msg = method => `You cannot use router.${method}() on the server because it is a stateless environment`;\n return {\n get basename() {\n return context.basename;\n },\n get future() {\n return {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: opts.future?.v7_partialHydration === true,\n v7_prependBasename: false,\n v7_relativeSplatPath: opts.future?.v7_relativeSplatPath === true,\n unstable_skipActionErrorRevalidation: false\n };\n },\n get state() {\n return {\n historyAction: router.Action.Pop,\n location: context.location,\n matches,\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: context.errors,\n initialized: true,\n navigation: router.IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n fetchers: new Map(),\n blockers: new Map()\n };\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return undefined;\n },\n initialize() {\n throw msg(\"initialize\");\n },\n subscribe() {\n throw msg(\"subscribe\");\n },\n enableScrollRestoration() {\n throw msg(\"enableScrollRestoration\");\n },\n navigate() {\n throw msg(\"navigate\");\n },\n fetch() {\n throw msg(\"fetch\");\n },\n revalidate() {\n throw msg(\"revalidate\");\n },\n createHref,\n encodeLocation,\n getFetcher() {\n return router.IDLE_FETCHER;\n },\n deleteFetcher() {\n throw msg(\"deleteFetcher\");\n },\n dispose() {\n throw msg(\"dispose\");\n },\n getBlocker() {\n return router.IDLE_BLOCKER;\n },\n deleteBlocker() {\n throw msg(\"deleteBlocker\");\n },\n patchRoutes() {\n throw msg(\"patchRoutes\");\n },\n _internalFetchControllers: new Map(),\n _internalActiveDeferreds: new Map(),\n _internalSetRoutes() {\n throw msg(\"_internalSetRoutes\");\n }\n };\n}\nfunction createHref(to) {\n return typeof to === \"string\" ? to : reactRouterDom.createPath(to);\n}\nfunction encodeLocation(to) {\n let href = typeof to === \"string\" ? to : reactRouterDom.createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n let encoded = ABSOLUTE_URL_REGEX.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n return {\n pathname: encoded.pathname,\n search: encoded.search,\n hash: encoded.hash\n };\n}\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n// This utility is based on https://github.com/zertosh/htmlescape\n// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE\nconst ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction htmlEscape(str) {\n return str.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n}\n\nexports.StaticRouter = StaticRouter;\nexports.StaticRouterProvider = StaticRouterProvider;\nexports.createStaticHandler = createStaticHandler;\nexports.createStaticRouter = createStaticRouter;\n","import { type HelmetData, HelmetProvider } from \"@zudoku/react-helmet-async\";\nimport { StrictMode } from \"react\";\nimport { createBrowserRouter, RouterProvider } from \"react-router-dom\";\nimport {\n type StaticHandlerContext,\n StaticRouterProvider,\n} from \"react-router-dom/server.js\";\n\nconst Bootstrap = ({\n router,\n}: {\n router: ReturnType<typeof createBrowserRouter>;\n}) => (\n <StrictMode>\n <HelmetProvider>\n <RouterProvider router={router} />\n </HelmetProvider>\n </StrictMode>\n);\n\nconst BootstrapStatic = ({\n router,\n context,\n helmetContext,\n}: {\n helmetContext: HelmetData[\"context\"];\n context: StaticHandlerContext;\n router: ReturnType<typeof createBrowserRouter>;\n}) => (\n <StrictMode>\n <HelmetProvider context={helmetContext}>\n <StaticRouterProvider router={router} context={context} />\n </HelmetProvider>\n </StrictMode>\n);\n\nexport { Bootstrap, BootstrapStatic };\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import { type ReactElement } from \"react\";\nimport { type RouteObject } from \"react-router-dom\";\nimport {\n DevPortalContext,\n type ApiIdentity,\n type NavigationCategory,\n} from \"./DevPortalContext.js\";\n\nexport type PluginNavigationCategory = {\n path: string;\n} & NavigationCategory;\n\nexport type DevPortalPlugin =\n | CommonPlugin\n | NavigationPlugin\n | ApiIdentityPlugin;\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getNavigation?: (path: string) => Promise<PluginNavigationCategory[]>;\n}\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: DevPortalContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface CommonPlugin {\n initialize?: (context: DevPortalContext) => Promise<void> | void;\n getHead?: () => ReactElement | undefined;\n}\n\nexport const isNavigationPlugin = (\n obj: DevPortalPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const needsInitialization = (\n obj: DevPortalPlugin,\n): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: DevPortalPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: DevPortalPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { type ReactNode } from \"react\";\nimport { type AuthenticationProvider } from \"../authentication/authentication.js\";\nimport type { ComponentsContextType } from \"../components/context/ComponentsContext.js\";\nimport { type DevPortalPath } from \"../components/DevPortal.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport {\n type DevPortalPlugin,\n isApiIdentityPlugin,\n isNavigationPlugin,\n type NavigationPlugin,\n needsInitialization,\n} from \"./plugins.js\";\n\nexport interface ApiIdentity {\n authorizeRequest: (request: Request) => Request;\n label: string;\n id: string;\n}\n\ntype BaseNavigationCategoryItem = {\n label: ReactNode;\n title?: string;\n muted?: boolean;\n icon?: ReactNode;\n};\n\nexport type PathNavigationCategoryItem = BaseNavigationCategoryItem & {\n path: string;\n children?: NavigationCategoryItem[];\n};\n\nexport type HrefNavigationCategoryItem = BaseNavigationCategoryItem & {\n href: string;\n};\n\nexport type NavigationCategoryItem =\n | PathNavigationCategoryItem\n | HrefNavigationCategoryItem;\n\nexport type NavigationCategory = {\n label: string;\n path?: string;\n expanded?: boolean;\n collapsible?: boolean;\n icon?: ReactNode;\n children: NavigationCategoryItem[];\n};\n\nexport type NavigationItem = {\n label: string;\n path: DevPortalPath;\n categories?: NavigationCategory[];\n};\n\nexport const queryClient = new QueryClient();\n\nexport type ApiKeyCache = \"api-keys\";\nexport type DevPortalCacheKey = ApiKeyCache | string;\n\ntype Metadata = Partial<{\n title: string;\n description: string;\n logo: string;\n favicon: string;\n generator: string;\n applicationName: string;\n referrer: string;\n keywords: string[];\n authors: string[];\n creator: string;\n publisher: string;\n}>;\ntype Page = Partial<{\n pageTitle?: string;\n logo?: string;\n}>;\nexport type ZudokuContextOptions = {\n metadata?: Metadata;\n page?: Page;\n authentication?: AuthenticationProvider;\n navigation: NavigationItem[];\n plugins?: DevPortalPlugin[];\n mdxComponents?: MdxComponentsType;\n overrides?: ComponentsContextType;\n};\n\nexport class DevPortalContext {\n private plugins: NonNullable<ZudokuContextOptions[\"plugins\"]> = [];\n public navigation: ZudokuContextOptions[\"navigation\"];\n public meta: ZudokuContextOptions[\"metadata\"];\n public page: ZudokuContextOptions[\"page\"];\n public authentication?: ZudokuContextOptions[\"authentication\"];\n private navigationPlugins: NavigationPlugin[];\n\n constructor(config: ZudokuContextOptions) {\n this.plugins = config.plugins ?? [];\n this.navigation = config.navigation;\n this.navigationPlugins = this.plugins.filter(isNavigationPlugin);\n this.authentication = config.authentication;\n this.meta = config.metadata;\n this.page = config.page;\n }\n\n initialize = async () => {\n await Promise.all([\n this.plugins\n .filter(needsInitialization)\n .map((plugin) => plugin.initialize?.(this)),\n ]);\n };\n\n invalidateCache = async (key: DevPortalCacheKey[]) => {\n await queryClient.invalidateQueries({ queryKey: key });\n };\n\n getApiIdentities = async () => {\n const keys = await Promise.all(\n this.plugins\n .filter(isApiIdentityPlugin)\n .map((plugin) => plugin.getIdentities(this)),\n );\n\n return keys.flat();\n };\n\n getNavigation = async (path: string) => {\n const navigations = await Promise.all(\n this.navigationPlugins.map(async (plugin) =>\n plugin.getNavigation?.(path),\n ),\n );\n\n return navigations.flatMap((nav) => nav ?? []);\n };\n\n signRequest = async (request: Request) => {\n if (!this.authentication) {\n throw new Error(\"No authentication provider configured\");\n }\n\n const accessToken = await this.authentication.getAccessToken();\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n\n return request;\n };\n}\n","import { FallbackProps } from \"react-error-boundary\";\nimport { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function TopLevelError({ error, resetErrorBoundary }: FallbackProps) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return <ErrorAlert error={error} />;\n}\n","import { cx } from \"class-variance-authority\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\n\nexport const TopNavigation = () => {\n const { navigation } = useDevPortal();\n\n // Hide tope nav if there is only one item\n if (navigation.length <= 1) {\n return null;\n }\n\n return (\n <nav className=\"border-b border-border text-sm px-12 h-[--top-nav-height]\">\n <ul className=\"flex flex-row items-center gap-8\">\n {navigation.map((item) => (\n <li key={item.label}>\n <NavLink\n className={({ isActive }) =>\n cx(\n \"block py-3.5 font-medium -mb-px border-b-2\",\n isActive\n ? \"border-primary text-foreground\"\n : \"border-transparent text-foreground/75 hover:text-foreground hover:border-accent-foreground/25\",\n )\n }\n to={item.path}\n >\n {item.label}\n </NavLink>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import { MoonStarIcon, SunIcon } from \"lucide-react\";\nimport { memo } from \"react\";\n\nimport { useAuth } from \"../authentication/hook.js\";\nimport { TopNavigation } from \"./TopNavigation.js\";\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\nimport { useTheme } from \"./context/ThemeContext.js\";\n\nexport const Header = memo(function HeaderInner() {\n const [isDark, toggleTheme] = useTheme();\n const { isAuthenticated, profile, isAuthEnabled, login, logout } = useAuth();\n const { page } = useDevPortal();\n\n const ThemeIcon = isDark ? MoonStarIcon : SunIcon;\n\n return (\n <header className=\"fixed top-0 w-full z-10 bg-background/80 backdrop-blur\">\n <div className=\"max-w-screen-2xl mx-auto\">\n <div className=\"grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b border-border px-12 h-[--top-header-height]\">\n <div className=\"flex items-center gap-3.5\">\n {page?.logo && (\n <img src={page.logo} alt={page.pageTitle} className=\"h-10\" />\n )}\n <span className=\"font-bold text-2xl text-foreground/85 tracking-wide\">\n {page?.pageTitle}\n </span>\n </div>\n <div className=\"grid grid-cols-[--sidecar-grid-cols] items-center gap-8\">\n <div className=\"w-full max-w-prose\">\n {/*<button className=\"flex items-center border border-input hover:bg-accent hover:text-accent-foreground p-4 relative h-8 justify-start rounded-lg bg-background text-sm text-muted-foreground shadow-none w-40 sm:w-72\">\n <div className=\"flex items-center gap-2 flex-grow\">\n <SearchIcon size={14} />\n Search\n </div>\n <kbd className=\"absolute right-[0.3rem] top-[0.3rem] hidden h-5 select-none items-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[11px] font-medium opacity-100 sm:flex\">\n ⌘K\n </kbd>\n </button>*/}\n </div>\n\n <div className=\"items-center justify-self-end text-sm hidden lg:flex\">\n {isAuthEnabled && (\n <>\n {isAuthenticated ? (\n <button\n type=\"button\"\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded text-nowrap\"\n onClick={logout}\n >\n Logout {profile?.email ? `(${profile.email})` : null}\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded\"\n onClick={login}\n >\n Login\n </button>\n )}\n </>\n )}\n <button\n type=\"button\"\n aria-label={\n isDark ? \"Switch to light mode\" : \"Switch to dark mode\"\n }\n className=\"cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full\"\n onClick={toggleTheme}\n >\n <ThemeIcon size={18} />\n </button>\n </div>\n </div>\n </div>\n <TopNavigation />\n </div>\n </header>\n );\n});\n","import {\n createContext,\n useContext,\n type ComponentProps,\n type ComponentType,\n} from \"react\";\nimport { Header } from \"../Header.js\";\n\nexport const DEFAULT_COMPONENTS = {\n Header,\n};\n\nexport type ComponentsContextType = {\n Header?: ComponentType<ComponentProps<typeof Header>>;\n};\n\nconst ComponentsContext =\n createContext<Required<ComponentsContextType>>(DEFAULT_COMPONENTS);\n\nexport const ComponentsProvider = ComponentsContext.Provider;\n\nexport const useComponents = () => {\n return useContext(ComponentsContext);\n};\n","import { MDXProvider } from \"@mdx-js/react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n Fragment,\n memo,\n type PropsWithChildren,\n useEffect,\n useMemo,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport {\n DevPortalContext,\n queryClient,\n ZudokuContextOptions,\n} from \"../core/DevPortalContext.js\";\nimport { hasHead } from \"../core/plugins.js\";\nimport { TopLevelError } from \"../errors/TopLevelError.js\";\nimport { MdxComponents } from \"../util/MdxComponents.js\";\nimport {\n ComponentsProvider,\n DEFAULT_COMPONENTS,\n} from \"./context/ComponentsContext.js\";\nimport { DevPortalProvider } from \"./context/DevPortalProvider.js\";\nimport { ThemeProvider } from \"./context/ThemeContext.js\";\nimport { ViewportAnchorProvider } from \"./context/ViewportAnchorContext.js\";\n\nexport const DevPortalSystemPaths = {\n Settings: \"/settings\",\n} as const;\n\nexport type DevPortalPath =\n | string\n | (typeof DevPortalSystemPaths)[keyof typeof DevPortalSystemPaths];\n\nconst DevPortalInner = ({\n children,\n ...props\n}: PropsWithChildren<ZudokuContextOptions>) => {\n const components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...props.overrides }),\n [props.overrides],\n );\n\n const mdxComponents = useMemo(\n () => ({ ...MdxComponents, ...props.mdxComponents }),\n [props.mdxComponents],\n );\n\n const devPortalContext = useMemo(() => new DevPortalContext(props), [props]);\n\n useEffect(() => {\n void devPortalContext.initialize();\n }, [devPortalContext]);\n\n const heads = props.plugins\n ?.filter(hasHead)\n // eslint-disable-next-line react/no-array-index-key\n .map((plugin, i) => <Fragment key={i}>{plugin.getHead?.()}</Fragment>);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Helmet>{heads}</Helmet>\n <DevPortalProvider value={devPortalContext}>\n <MDXProvider components={mdxComponents}>\n <ThemeProvider>\n <ComponentsProvider value={components}>\n <ViewportAnchorProvider>{children}</ViewportAnchorProvider>\n </ComponentsProvider>\n </ThemeProvider>\n </MDXProvider>\n </DevPortalProvider>\n </QueryClientProvider>\n );\n};\n\nconst Inner = memo(DevPortalInner);\n\nconst DevPortal = (props: ZudokuContextOptions) => {\n return (\n <ErrorBoundary FallbackComponent={TopLevelError}>\n <Inner {...props} />\n </ErrorBoundary>\n );\n};\nDevPortal.displayName = \"DevPortal\";\n\nexport { DevPortal };\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { useViewportAnchor } from \"../components/context/ViewportAnchorContext.js\";\n\nexport const useScrollToAnchor = () => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n\n useEffect(() => {\n if (!location.hash) return;\n\n const hash = location.hash.split(\"/\")[0].slice(1);\n\n const element = document.getElementById(decodeURIComponent(hash));\n if (element) {\n // on page navigation element might be in DOM but not yet scrollable, so wait for a frame\n requestAnimationFrame(() => {\n element.scrollIntoView();\n requestIdleCallback(() => setActiveAnchor(hash));\n });\n return;\n }\n\n // on page load, the element might not be available yet\n const observer = new MutationObserver((_mutations, obs) => {\n const element = document.getElementById(decodeURIComponent(hash));\n if (!element) return;\n\n element.scrollIntoView();\n requestIdleCallback(() => setActiveAnchor(hash));\n obs.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }, [location.hash, setActiveAnchor]);\n};\n","import { useEffect, useRef } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useScrollToTop = () => {\n const location = useLocation();\n const previousPath = useRef(location.pathname);\n\n useEffect(() => {\n if (previousPath.current === location.pathname) return;\n window.scrollTo(0, 0);\n previousPath.current = location.pathname;\n }, [location.pathname]);\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport type { NavigationNode } from \"../../util/traverseNavigation.js\";\nimport { checkHasActiveItem } from \"./util.js\";\n\nexport const useNavigationCollapsibleState = ({\n item,\n defaultOpen,\n path,\n}: {\n item: NavigationNode;\n defaultOpen: () => boolean;\n path: string;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const location = useLocation();\n const previousLocationPath = useRef(location.pathname);\n\n useEffect(() => {\n if (!isOpen && previousLocationPath.current !== location.pathname) {\n setIsOpen(checkHasActiveItem(item, location.pathname, path));\n }\n previousLocationPath.current = location.pathname;\n }, [isOpen, item, path, location.pathname]);\n\n return [isOpen, setIsOpen] as const;\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronRightIcon, ExternalLinkIcon } from \"lucide-react\";\nimport { NavLink, useLocation } from \"react-router-dom\";\n\nimport type {\n NavigationCategory,\n NavigationCategoryItem,\n NavigationItem,\n} from \"../../core/DevPortalContext.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { AnchorLink } from \"../AnchorLink.js\";\nimport { useNavigationCollapsibleState } from \"./useNavigationCollapsibleState.js\";\nimport { checkHasActiveItem, isLinkItem, isPathItem } from \"./util.js\";\n\nexport const navigationListItem = cva(\n \"flex px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent transition-colors duration-300\",\n {\n variants: {\n isActive: {\n true: \"text-primary font-medium\",\n false: \"text-foreground/80\",\n },\n isMuted: {\n true: \"text-foreground/30\",\n false: \"\",\n },\n },\n },\n);\n\nexport const DATA_ANCHOR_ATTR = \"data-anchor\";\n\nexport const SideNavigationItem = ({\n category,\n item,\n activeAnchor,\n currentTopNavItem,\n basePath = \"\",\n}: {\n category: NavigationCategory;\n item: NavigationCategoryItem;\n activeAnchor?: string;\n currentTopNavItem?: NavigationItem;\n basePath?: string;\n}) => {\n const currentPath = isPathItem(item) ? joinPath(basePath, item.path) : \"\";\n const location = useLocation();\n\n const [isOpen, setIsOpen] = useNavigationCollapsibleState({\n item,\n path: currentPath,\n defaultOpen: () => checkHasActiveItem(item, location.pathname, currentPath),\n });\n\n if (isLinkItem(item)) {\n const classes = cn(\n \"flex items-center gap-2\",\n navigationListItem({\n isActive: item.href === location.pathname,\n }),\n );\n return item.href.startsWith(\"http\") ? (\n <a\n className={classes}\n href={item.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {item.label}\n <ExternalLinkIcon size={14} />\n </a>\n ) : (\n <NavLink className={classes} to={item.href}>\n {item.label}\n </NavLink>\n );\n }\n\n const linkContent = (\n <div className=\"flex justify-between w-full\">\n <div className=\"flex items-center gap-2 truncate w-full\">\n {item.icon}\n {typeof item.label !== \"string\" ? (\n item.label\n ) : (\n <span className=\"truncate\">{item.label}</span>\n )}\n </div>\n {item.children && (\n <ChevronRightIcon\n size={16}\n className=\"transition shrink-0 group-data-[state=open]:rotate-90\"\n />\n )}\n </div>\n );\n\n return (\n <li title={typeof item.label === \"string\" ? item.label : item.title}>\n {item.children ? (\n <Collapsible.Root\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n className=\"flex flex-col\"\n >\n <Collapsible.Trigger\n className={cn(\n \"group text-start\",\n navigationListItem({ isActive: false }),\n )}\n >\n {linkContent}\n </Collapsible.Trigger>\n <Collapsible.Content className=\"CollapsibleContent ms-[calc(var(--padding-nav-item)*1.125)]\">\n <ul className=\"mt-1 border-border border-l ps-1.5\">\n {item.children.map((child) => (\n <SideNavigationItem\n key={isPathItem(child) ? child.path : child.href}\n category={category}\n item={child}\n activeAnchor={activeAnchor}\n currentTopNavItem={currentTopNavItem}\n basePath={currentPath}\n />\n ))}\n </ul>\n </Collapsible.Content>\n </Collapsible.Root>\n ) : item.path.startsWith(\"#\") ? (\n <AnchorLink\n to={item.path}\n {...{ [DATA_ANCHOR_ATTR]: item.path }}\n className={navigationListItem({\n isActive: item.path.slice(1) === activeAnchor,\n isMuted: item.muted,\n })}\n >\n {linkContent}\n </AnchorLink>\n ) : (\n <NavLink\n className={({ isActive }) => navigationListItem({ isActive })}\n to={currentPath}\n >\n {linkContent}\n </NavLink>\n )}\n </li>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { useLocation } from \"react-router-dom\";\nimport type { NavigationCategory } from \"../../core/DevPortalContext.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { useTopNavigationItem } from \"../context/DevPortalProvider.js\";\nimport { useViewportAnchor } from \"../context/ViewportAnchorContext.js\";\nimport { SideNavigationItem } from \"./SideNavigationItem.js\";\nimport { useNavigationCollapsibleState } from \"./useNavigationCollapsibleState.js\";\nimport { checkHasActiveItem, isPathItem } from \"./util.js\";\n\nexport const SideNavigationCategory = ({\n category,\n}: {\n category: NavigationCategory;\n}) => {\n const { activeAnchor } = useViewportAnchor();\n const navItem = useTopNavigationItem();\n const location = useLocation();\n\n const isCollapsible = category.collapsible ?? true;\n\n const [isOpen, setIsOpen] = useNavigationCollapsibleState({\n item: category,\n path: navItem?.path ?? \"\",\n defaultOpen: () =>\n !isCollapsible ||\n category.expanded ||\n checkHasActiveItem(category, location.pathname, navItem?.path ?? \"\"),\n });\n\n return (\n <Collapsible.Root\n key={category.label}\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n >\n {category.label.length > 0 ? (\n <Collapsible.Trigger asChild={isCollapsible} disabled={!isCollapsible}>\n <h5\n className={cn(\n \"flex group items-center justify-between cursor-pointer font-semibold text-foreground/90 px-[--padding-nav-item] py-1.5 rounded-lg transition-colors duration-300 -mx-[--padding-nav-item]\",\n isCollapsible ? \"hover:bg-accent\" : \"cursor-auto\",\n )}\n >\n {category.label}\n {isCollapsible && (\n <ChevronRightIcon\n className=\"group-data-[state=open]:rotate-90 transition\"\n size={16}\n />\n )}\n </h5>\n </Collapsible.Trigger>\n ) : (\n \"Endpoints\"\n )}\n <Collapsible.Content className=\"CollapsibleContent -mx-[--padding-nav-item]\">\n {/* margin on Collapsible.Content will lead jumpiness when animating because it's not added to the calculated height */}\n <ul className=\"space-y-0.5 mt-1.5 mb-4 ms-3\">\n {category.children.map((item) => (\n <SideNavigationItem\n key={isPathItem(item) ? item.path + item.label : item.href}\n category={category}\n item={item}\n activeAnchor={activeAnchor}\n currentTopNavItem={navItem}\n basePath={joinPath(navItem?.path, category.path)}\n />\n ))}\n </ul>\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import { forwardRef, type PropsWithChildren } from \"react\";\nimport { cn } from \"../../util/cn.js\";\n\nexport const SideNavigationWrapper = forwardRef<\n HTMLDivElement,\n PropsWithChildren<{ pushMainContent?: boolean; className?: string }>\n>(function SideNavigation({ children, className, pushMainContent }, ref) {\n return (\n <nav\n // this data attribute is used in `Layout.tsx` to determine if side navigation\n // is present for the current page so the main content is pushed to the right\n // it's also important to set `peer` class here.\n // maybe this could be simplified by adjusting the layout\n data-navigation={String(pushMainContent)}\n className={cn(\n \"peer hidden lg:flex flex-col fixed text-sm overflow-y-auto shrink-0 p-[--padding-nav-item] -mx-[--padding-nav-item] pb-20 pt-[--padding-content-top] w-[--side-nav-width] h-[calc(100%-var(--header-height))] scroll-pt-2 gap-2\",\n className,\n )}\n ref={ref}\n >\n {children}\n </nav>\n );\n});\n","import { useRef } from \"react\";\n\nimport { useNavigation } from \"../context/DevPortalProvider.js\";\nimport { SideNavigationCategory } from \"./SideNavigationCategory.js\";\nimport { SideNavigationWrapper } from \"./SideNavigationWrapper.js\";\n\nexport const SideNavigation = () => {\n const navRef = useRef<HTMLDivElement | null>(null);\n const navigation = useNavigation();\n\n return (\n <SideNavigationWrapper\n ref={navRef}\n pushMainContent={navigation.data.items.length > 0}\n >\n {navigation.data.items.map((category) => (\n <SideNavigationCategory key={category.label} category={category} />\n ))}\n </SideNavigationWrapper>\n );\n};\n","import { Helmet } from \"@zudoku/react-helmet-async\";\nimport { Suspense, useEffect, useRef, type ReactNode } from \"react\";\nimport { Outlet, useLocation } from \"react-router-dom\";\nimport { cn } from \"../util/cn.js\";\nimport { useScrollToAnchor } from \"../util/useScrollToAnchor.js\";\nimport { useScrollToTop } from \"../util/useScrollToTop.js\";\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\nimport { useViewportAnchor } from \"./context/ViewportAnchorContext.js\";\nimport { Header } from \"./Header.js\";\nimport { SideNavigation } from \"./navigation/SideNavigation.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport const Layout = ({ children }: { children?: ReactNode }) => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n const { meta } = useDevPortal();\n\n useScrollToAnchor();\n useScrollToTop();\n\n const previousLocationPath = useRef(location.pathname);\n\n useEffect(() => {\n // always reset on location change\n if (location.pathname !== previousLocationPath.current) {\n setActiveAnchor(\"\");\n }\n previousLocationPath.current = location.pathname;\n }, [location.pathname, setActiveAnchor]);\n\n return (\n <>\n <Helmet titleTemplate={meta?.title}>\n {meta?.description && (\n <meta name=\"description\" content={meta.description} />\n )}\n {meta?.favicon && <link rel=\"icon\" href={meta.favicon} />}\n </Helmet>\n <Header />\n\n <div className=\"max-w-screen-2xl mx-auto pt-[--header-height] px-10 lg:px-12 h-full\">\n <Suspense\n fallback={\n <div className=\"grid h-full place-items-center\">\n <Spinner />\n </div>\n }\n >\n <SideNavigation />\n <main\n className={cn(\n \"dark:border-white/10 translate-x-0 h-full\",\n \"lg:overflow-visible\",\n \"lg:peer-data-[navigation=true]:w-[calc(100%-var(--side-nav-width))]\",\n \"lg:peer-data-[navigation=true]:translate-x-[--side-nav-width] lg:peer-data-[navigation=true]:pl-12\",\n )}\n >\n {children ?? <Outlet />}\n </main>\n </Suspense>\n </div>\n </>\n );\n};\n","import { useMDXComponents as useMDXComponentsImport } from \"@mdx-js/react\";\nimport { Link as LinkImport } from \"react-router-dom\";\nimport { RouterError as RouterErrorImport } from \"../errors/RouterError.js\";\nimport { ServerError as ServerErrorImport } from \"../errors/ServerError.js\";\nimport { Callout as CalloutImport } from \"../ui/Callout.js\";\nimport {\n Bootstrap as BootstrapImport,\n BootstrapStatic as BootstrapStaticImport,\n} from \"./Bootstrap.js\";\nimport { DevPortal as DevPortalImport } from \"./DevPortal.js\";\nimport { Layout as LayoutImport } from \"./Layout.js\";\n\nexport const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;\nexport const Callout = /*@__PURE__*/ CalloutImport;\nexport const DevPortal = /*@__PURE__*/ DevPortalImport;\nexport const Layout = /*@__PURE__*/ LayoutImport;\nexport const Link = /*@__PURE__*/ LinkImport;\nexport const RouterError = /*@__PURE__*/ RouterErrorImport;\nexport const ServerError = /*@__PURE__*/ ServerErrorImport;\nexport const Bootstrap = /*@__PURE__*/ BootstrapImport;\nexport const BootstrapStatic = /*@__PURE__*/ BootstrapStaticImport;\n"],"names":["ChevronRight","createLucideIcon","ExternalLink","MoonStar","Sun","ServerError","error","jsx","ErrorAlert","server","React","require$$0","router","require$$1","reactRouter","require$$2","reactRouterDom","require$$3","_interopNamespace","e","n","k","d","React__namespace","StaticRouter","basename","children","locationProp","future","action","location","staticNavigator","getStatelessNavigator","StaticRouterProvider","context","router$1","hydrate","nonce","dataRouterContext","fetchersContext","hydrateScript","data","serializeErrors","htmlEscape","state","DataRoutes","routes","errors","entries","serialized","key","val","createHref","encodeLocation","to","delta","createStaticHandler","opts","createStaticRouter","manifest","dataRoutes","matches","match","route","msg","method","_a","_b","href","encoded","ABSOLUTE_URL_REGEX","ESCAPE_LOOKUP","ESCAPE_REGEX","str","StaticRouterProvider_1","Bootstrap","StrictMode","HelmetProvider","RouterProvider","BootstrapStatic","helmetContext","QueryCache","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","MutationCache","_mutations","_mutationId","mutation","Mutation","__privateWrapper","scope","scopeFor","mutations","x","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","fetchFn","direction","_c","oldPages","_d","oldPageParams","_e","empty","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","param","previous","queryFnContext","page","maxPages","addTo","addToStart","addToEnd","result","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","i","pageParams","lastIndex","QueryClient","_queryCache","_mutationCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","cachedData","defaultedOptions","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","refetchFilters","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","isNavigationPlugin","obj","needsInitialization","hasHead","isApiIdentityPlugin","queryClient","DevPortalContext","__publicField","plugin","path","nav","request","accessToken","TopLevelError","resetErrorBoundary","TopNavigation","navigation","useDevPortal","NavLink","isActive","cx","Header","memo","isDark","toggleTheme","useTheme","isAuthenticated","profile","isAuthEnabled","login","logout","useAuth","ThemeIcon","MoonStarIcon","SunIcon","jsxs","DEFAULT_COMPONENTS","ComponentsContext","ComponentsProvider","DevPortalInner","components","useMemo","mdxComponents","MdxComponents","devPortalContext","useEffect","heads","Fragment","QueryClientProvider","Helmet","DevPortalProvider","MDXProvider","ThemeProvider","ViewportAnchorProvider","Inner","DevPortal","useScrollToAnchor","useLocation","setActiveAnchor","useViewportAnchor","hash","element","observer","obs","useScrollToTop","previousPath","useRef","useNavigationCollapsibleState","defaultOpen","isOpen","setIsOpen","useState","previousLocationPath","checkHasActiveItem","navigationListItem","cva","DATA_ANCHOR_ATTR","SideNavigationItem","category","activeAnchor","currentTopNavItem","basePath","currentPath","isPathItem","joinPath","isLinkItem","classes","cn","ExternalLinkIcon","linkContent","ChevronRightIcon","Collapsible.Root","prev","Collapsible.Trigger","Collapsible.Content","child","AnchorLink","SideNavigationCategory","navItem","useTopNavigationItem","isCollapsible","SideNavigationWrapper","forwardRef","className","pushMainContent","ref","SideNavigation","navRef","useNavigation","Layout","meta","Suspense","Spinner","Outlet","useMDXComponents","useMDXComponentsImport","Callout","CalloutImport","DevPortalImport","LayoutImport","Link","LinkImport","RouterError","RouterErrorImport","ServerErrorImport","BootstrapImport","BootstrapStaticImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,7,8,9,10,11]}
|
|
1
|
+
{"version":3,"file":"zudoku.components.js","sources":["../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/chevron-right.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/external-link.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/moon-star.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/sun.js","../src/lib/errors/ServerError.tsx","../../../node_modules/.pnpm/react-router-dom@6.24.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-router-dom/server.js","../src/lib/components/Bootstrap.tsx","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/.pnpm/react-error-boundary@4.0.13_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../src/lib/core/plugins.ts","../src/lib/core/DevPortalContext.ts","../src/lib/errors/TopLevelError.tsx","../src/lib/components/TopNavigation.tsx","../src/lib/components/Header.tsx","../src/lib/components/context/ComponentsContext.tsx","../src/lib/components/DevPortal.tsx","../src/lib/util/useScrollToAnchor.ts","../src/lib/util/useScrollToTop.ts","../src/lib/components/navigation/useNavigationCollapsibleState.ts","../src/lib/components/navigation/SideNavigationItem.tsx","../src/lib/components/navigation/SideNavigationCategory.tsx","../src/lib/components/navigation/SideNavigationWrapper.tsx","../src/lib/components/navigation/SideNavigation.tsx","../src/lib/components/Layout.tsx","../src/lib/components/index.ts"],"sourcesContent":["/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"ChevronRight\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ExternalLink = createLucideIcon(\"ExternalLink\", [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n]);\n\nexport { ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MoonStar = createLucideIcon(\"MoonStar\", [\n [\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9\", key: \"4ay0iu\" }],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }]\n]);\n\nexport { MoonStar as default };\n//# sourceMappingURL=moon-star.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sun = createLucideIcon(\"Sun\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n]);\n\nexport { Sun as default };\n//# sourceMappingURL=sun.js.map\n","import { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function ServerError({ error }: { error: unknown }) {\n return <ErrorAlert error={error} />;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar router = require('@remix-run/router');\nvar reactRouter = require('react-router');\nvar reactRouterDom = require('react-router-dom');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\n/**\n * A `<Router>` that may not navigate to any other location. This is useful\n * on the server where there is no stateful UI.\n */\nfunction StaticRouter({\n basename,\n children,\n location: locationProp = \"/\",\n future\n}) {\n if (typeof locationProp === \"string\") {\n locationProp = reactRouterDom.parsePath(locationProp);\n }\n let action = router.Action.Pop;\n let location = {\n pathname: locationProp.pathname || \"/\",\n search: locationProp.search || \"\",\n hash: locationProp.hash || \"\",\n state: locationProp.state != null ? locationProp.state : null,\n key: locationProp.key || \"default\"\n };\n let staticNavigator = getStatelessNavigator();\n return /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, {\n basename: basename,\n children: children,\n location: location,\n navigationType: action,\n navigator: staticNavigator,\n future: future,\n static: true\n });\n}\n/**\n * A Data Router that may not navigate to any other location. This is useful\n * on the server where there is no stateful UI.\n */\nfunction StaticRouterProvider({\n context,\n router: router$1,\n hydrate = true,\n nonce\n}) {\n !(router$1 && context) ? process.env.NODE_ENV !== \"production\" ? router.UNSAFE_invariant(false, \"You must provide `router` and `context` to <StaticRouterProvider>\") : router.UNSAFE_invariant(false) : void 0;\n let dataRouterContext = {\n router: router$1,\n navigator: getStatelessNavigator(),\n static: true,\n staticContext: context,\n basename: context.basename || \"/\"\n };\n let fetchersContext = new Map();\n let hydrateScript = \"\";\n if (hydrate !== false) {\n let data = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors(context.errors)\n };\n // Use JSON.parse here instead of embedding a raw JS object here to speed\n // up parsing on the client. Dual-stringify is needed to ensure all quotes\n // are properly escaped in the resulting string. See:\n // https://v8.dev/blog/cost-of-javascript-2019#json\n let json = htmlEscape(JSON.stringify(JSON.stringify(data)));\n hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n }\n let {\n state\n } = dataRouterContext.router;\n return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_FetchersContext.Provider, {\n value: fetchersContext\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_ViewTransitionContext.Provider, {\n value: {\n isTransitioning: false\n }\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, {\n basename: dataRouterContext.basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: dataRouterContext.navigator,\n static: dataRouterContext.static,\n future: {\n v7_relativeSplatPath: router$1.future.v7_relativeSplatPath\n }\n }, /*#__PURE__*/React__namespace.createElement(DataRoutes, {\n routes: router$1.routes,\n future: router$1.future,\n state: state\n })))))), hydrateScript ? /*#__PURE__*/React__namespace.createElement(\"script\", {\n suppressHydrationWarning: true,\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: hydrateScript\n }\n }) : null);\n}\nfunction DataRoutes({\n routes,\n future,\n state\n}) {\n return reactRouter.UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\nfunction serializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // deserializeErrors in react-router-dom/index.tsx :)\n if (router.isRouteErrorResponse(val)) {\n serialized[key] = {\n ...val,\n __type: \"RouteErrorResponse\"\n };\n } else if (val instanceof Error) {\n // Do not serialize stack traces from SSR for security reasons\n serialized[key] = {\n message: val.message,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration.\n ...(val.name !== \"Error\" ? {\n __subType: val.name\n } : {})\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction getStatelessNavigator() {\n return {\n createHref,\n encodeLocation,\n push(to) {\n throw new Error(`You cannot use navigator.push() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`);\n },\n replace(to) {\n throw new Error(`You cannot use navigator.replace() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere ` + `in your app.`);\n },\n go(delta) {\n throw new Error(`You cannot use navigator.go() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${delta})\\` somewhere in your app.`);\n },\n back() {\n throw new Error(`You cannot use navigator.back() on the server because it is a stateless ` + `environment.`);\n },\n forward() {\n throw new Error(`You cannot use navigator.forward() on the server because it is a stateless ` + `environment.`);\n }\n };\n}\nfunction createStaticHandler(routes, opts) {\n return router.createStaticHandler(routes, {\n ...opts,\n mapRouteProperties: reactRouter.UNSAFE_mapRouteProperties\n });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n let manifest = {};\n let dataRoutes = router.UNSAFE_convertRoutesToDataRoutes(routes, reactRouter.UNSAFE_mapRouteProperties, undefined, manifest);\n // Because our context matches may be from a framework-agnostic set of\n // routes passed to createStaticHandler(), we update them here with our\n // newly created/enhanced data routes\n let matches = context.matches.map(match => {\n let route = manifest[match.route.id] || match.route;\n return {\n ...match,\n route\n };\n });\n let msg = method => `You cannot use router.${method}() on the server because it is a stateless environment`;\n return {\n get basename() {\n return context.basename;\n },\n get future() {\n return {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: opts.future?.v7_partialHydration === true,\n v7_prependBasename: false,\n v7_relativeSplatPath: opts.future?.v7_relativeSplatPath === true,\n unstable_skipActionErrorRevalidation: false\n };\n },\n get state() {\n return {\n historyAction: router.Action.Pop,\n location: context.location,\n matches,\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: context.errors,\n initialized: true,\n navigation: router.IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n fetchers: new Map(),\n blockers: new Map()\n };\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return undefined;\n },\n initialize() {\n throw msg(\"initialize\");\n },\n subscribe() {\n throw msg(\"subscribe\");\n },\n enableScrollRestoration() {\n throw msg(\"enableScrollRestoration\");\n },\n navigate() {\n throw msg(\"navigate\");\n },\n fetch() {\n throw msg(\"fetch\");\n },\n revalidate() {\n throw msg(\"revalidate\");\n },\n createHref,\n encodeLocation,\n getFetcher() {\n return router.IDLE_FETCHER;\n },\n deleteFetcher() {\n throw msg(\"deleteFetcher\");\n },\n dispose() {\n throw msg(\"dispose\");\n },\n getBlocker() {\n return router.IDLE_BLOCKER;\n },\n deleteBlocker() {\n throw msg(\"deleteBlocker\");\n },\n patchRoutes() {\n throw msg(\"patchRoutes\");\n },\n _internalFetchControllers: new Map(),\n _internalActiveDeferreds: new Map(),\n _internalSetRoutes() {\n throw msg(\"_internalSetRoutes\");\n }\n };\n}\nfunction createHref(to) {\n return typeof to === \"string\" ? to : reactRouterDom.createPath(to);\n}\nfunction encodeLocation(to) {\n let href = typeof to === \"string\" ? to : reactRouterDom.createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n let encoded = ABSOLUTE_URL_REGEX.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n return {\n pathname: encoded.pathname,\n search: encoded.search,\n hash: encoded.hash\n };\n}\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n// This utility is based on https://github.com/zertosh/htmlescape\n// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE\nconst ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction htmlEscape(str) {\n return str.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n}\n\nexports.StaticRouter = StaticRouter;\nexports.StaticRouterProvider = StaticRouterProvider;\nexports.createStaticHandler = createStaticHandler;\nexports.createStaticRouter = createStaticRouter;\n","import { type HelmetData, HelmetProvider } from \"@zudoku/react-helmet-async\";\nimport { StrictMode } from \"react\";\nimport { createBrowserRouter, RouterProvider } from \"react-router-dom\";\nimport {\n type StaticHandlerContext,\n StaticRouterProvider,\n} from \"react-router-dom/server.js\";\n\nconst Bootstrap = ({\n router,\n}: {\n router: ReturnType<typeof createBrowserRouter>;\n}) => (\n <StrictMode>\n <HelmetProvider>\n <RouterProvider router={router} />\n </HelmetProvider>\n </StrictMode>\n);\n\nconst BootstrapStatic = ({\n router,\n context,\n helmetContext,\n}: {\n helmetContext: HelmetData[\"context\"];\n context: StaticHandlerContext;\n router: ReturnType<typeof createBrowserRouter>;\n}) => (\n <StrictMode>\n <HelmetProvider context={helmetContext}>\n <StaticRouterProvider router={router} context={context} />\n </HelmetProvider>\n </StrictMode>\n);\n\nexport { Bootstrap, BootstrapStatic };\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import { type ReactElement } from \"react\";\nimport { type RouteObject } from \"react-router-dom\";\nimport {\n DevPortalContext,\n type ApiIdentity,\n type NavigationCategory,\n} from \"./DevPortalContext.js\";\n\nexport type PluginNavigationCategory = {\n path: string;\n} & NavigationCategory;\n\nexport type DevPortalPlugin =\n | CommonPlugin\n | NavigationPlugin\n | ApiIdentityPlugin;\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getNavigation?: (path: string) => Promise<PluginNavigationCategory[]>;\n}\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: DevPortalContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface CommonPlugin {\n initialize?: (context: DevPortalContext) => Promise<void> | void;\n getHead?: () => ReactElement | undefined;\n}\n\nexport const isNavigationPlugin = (\n obj: DevPortalPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const needsInitialization = (\n obj: DevPortalPlugin,\n): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: DevPortalPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: DevPortalPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { type ReactNode } from \"react\";\nimport { type AuthenticationProvider } from \"../authentication/authentication.js\";\nimport type { ComponentsContextType } from \"../components/context/ComponentsContext.js\";\nimport { type DevPortalPath } from \"../components/DevPortal.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport {\n type DevPortalPlugin,\n isApiIdentityPlugin,\n isNavigationPlugin,\n type NavigationPlugin,\n needsInitialization,\n} from \"./plugins.js\";\n\nexport interface ApiIdentity {\n authorizeRequest: (request: Request) => Request;\n label: string;\n id: string;\n}\n\ntype BaseNavigationCategoryItem = {\n label: ReactNode;\n title?: string;\n muted?: boolean;\n icon?: ReactNode;\n};\n\nexport type PathNavigationCategoryItem = BaseNavigationCategoryItem & {\n path: string;\n children?: NavigationCategoryItem[];\n};\n\nexport type HrefNavigationCategoryItem = BaseNavigationCategoryItem & {\n href: string;\n};\n\nexport type NavigationCategoryItem =\n | PathNavigationCategoryItem\n | HrefNavigationCategoryItem;\n\nexport type NavigationCategory = {\n label: string;\n path?: string;\n expanded?: boolean;\n collapsible?: boolean;\n icon?: ReactNode;\n children: NavigationCategoryItem[];\n};\n\nexport type NavigationItem = {\n label: string;\n path: DevPortalPath;\n categories?: NavigationCategory[];\n};\n\nexport const queryClient = new QueryClient();\n\nexport type ApiKeyCache = \"api-keys\";\nexport type DevPortalCacheKey = ApiKeyCache | string;\n\ntype Metadata = Partial<{\n title: string;\n description: string;\n logo: string;\n favicon: string;\n generator: string;\n applicationName: string;\n referrer: string;\n keywords: string[];\n authors: string[];\n creator: string;\n publisher: string;\n}>;\ntype Page = Partial<{\n pageTitle?: string;\n logo?: string;\n}>;\nexport type ZudokuContextOptions = {\n metadata?: Metadata;\n page?: Page;\n authentication?: AuthenticationProvider;\n navigation: NavigationItem[];\n plugins?: DevPortalPlugin[];\n mdx?: {\n components?: MdxComponentsType;\n };\n overrides?: ComponentsContextType;\n};\n\nexport class DevPortalContext {\n private plugins: NonNullable<ZudokuContextOptions[\"plugins\"]> = [];\n public navigation: ZudokuContextOptions[\"navigation\"];\n public meta: ZudokuContextOptions[\"metadata\"];\n public page: ZudokuContextOptions[\"page\"];\n public authentication?: ZudokuContextOptions[\"authentication\"];\n private navigationPlugins: NavigationPlugin[];\n\n constructor(config: ZudokuContextOptions) {\n this.plugins = config.plugins ?? [];\n this.navigation = config.navigation;\n this.navigationPlugins = this.plugins.filter(isNavigationPlugin);\n this.authentication = config.authentication;\n this.meta = config.metadata;\n this.page = config.page;\n }\n\n initialize = async () => {\n await Promise.all([\n this.plugins\n .filter(needsInitialization)\n .map((plugin) => plugin.initialize?.(this)),\n ]);\n };\n\n invalidateCache = async (key: DevPortalCacheKey[]) => {\n await queryClient.invalidateQueries({ queryKey: key });\n };\n\n getApiIdentities = async () => {\n const keys = await Promise.all(\n this.plugins\n .filter(isApiIdentityPlugin)\n .map((plugin) => plugin.getIdentities(this)),\n );\n\n return keys.flat();\n };\n\n getNavigation = async (path: string) => {\n const navigations = await Promise.all(\n this.navigationPlugins.map(async (plugin) =>\n plugin.getNavigation?.(path),\n ),\n );\n\n return navigations.flatMap((nav) => nav ?? []);\n };\n\n signRequest = async (request: Request) => {\n if (!this.authentication) {\n throw new Error(\"No authentication provider configured\");\n }\n\n const accessToken = await this.authentication.getAccessToken();\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n\n return request;\n };\n}\n","import { FallbackProps } from \"react-error-boundary\";\nimport { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function TopLevelError({ error, resetErrorBoundary }: FallbackProps) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return <ErrorAlert error={error} />;\n}\n","import { cx } from \"class-variance-authority\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\n\nexport const TopNavigation = () => {\n const { navigation } = useDevPortal();\n\n // Hide tope nav if there is only one item\n if (navigation.length <= 1) {\n return null;\n }\n\n return (\n <nav className=\"border-b border-border text-sm px-12 h-[--top-nav-height]\">\n <ul className=\"flex flex-row items-center gap-8\">\n {navigation.map((item) => (\n <li key={item.label}>\n <NavLink\n className={({ isActive }) =>\n cx(\n \"block py-3.5 font-medium -mb-px border-b-2\",\n isActive\n ? \"border-primary text-foreground\"\n : \"border-transparent text-foreground/75 hover:text-foreground hover:border-accent-foreground/25\",\n )\n }\n to={item.path}\n >\n {item.label}\n </NavLink>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import { MoonStarIcon, SunIcon } from \"lucide-react\";\nimport { memo } from \"react\";\n\nimport { useAuth } from \"../authentication/hook.js\";\nimport { TopNavigation } from \"./TopNavigation.js\";\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\nimport { useTheme } from \"./context/ThemeContext.js\";\n\nexport const Header = memo(function HeaderInner() {\n const [isDark, toggleTheme] = useTheme();\n const { isAuthenticated, profile, isAuthEnabled, login, logout } = useAuth();\n const { page } = useDevPortal();\n\n const ThemeIcon = isDark ? MoonStarIcon : SunIcon;\n\n return (\n <header className=\"fixed top-0 w-full z-10 bg-background/80 backdrop-blur\">\n <div className=\"max-w-screen-2xl mx-auto\">\n <div className=\"grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b border-border px-12 h-[--top-header-height]\">\n <div className=\"flex items-center gap-3.5\">\n {page?.logo && (\n <img src={page.logo} alt={page.pageTitle} className=\"h-10\" />\n )}\n <span className=\"font-bold text-2xl text-foreground/85 tracking-wide\">\n {page?.pageTitle}\n </span>\n </div>\n <div className=\"grid grid-cols-[--sidecar-grid-cols] items-center gap-8\">\n <div className=\"w-full max-w-prose\">\n {/*<button className=\"flex items-center border border-input hover:bg-accent hover:text-accent-foreground p-4 relative h-8 justify-start rounded-lg bg-background text-sm text-muted-foreground shadow-none w-40 sm:w-72\">\n <div className=\"flex items-center gap-2 flex-grow\">\n <SearchIcon size={14} />\n Search\n </div>\n <kbd className=\"absolute right-[0.3rem] top-[0.3rem] hidden h-5 select-none items-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[11px] font-medium opacity-100 sm:flex\">\n ⌘K\n </kbd>\n </button>*/}\n </div>\n\n <div className=\"items-center justify-self-end text-sm hidden lg:flex\">\n {isAuthEnabled && (\n <>\n {isAuthenticated ? (\n <button\n type=\"button\"\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded text-nowrap\"\n onClick={logout}\n >\n Logout {profile?.email ? `(${profile.email})` : null}\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded\"\n onClick={login}\n >\n Login\n </button>\n )}\n </>\n )}\n <button\n type=\"button\"\n aria-label={\n isDark ? \"Switch to light mode\" : \"Switch to dark mode\"\n }\n className=\"cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full\"\n onClick={toggleTheme}\n >\n <ThemeIcon size={18} />\n </button>\n </div>\n </div>\n </div>\n <TopNavigation />\n </div>\n </header>\n );\n});\n","import {\n createContext,\n useContext,\n type ComponentProps,\n type ComponentType,\n} from \"react\";\nimport { Header } from \"../Header.js\";\n\nexport const DEFAULT_COMPONENTS = {\n Header,\n};\n\nexport type ComponentsContextType = {\n Header?: ComponentType<ComponentProps<typeof Header>>;\n};\n\nconst ComponentsContext =\n createContext<Required<ComponentsContextType>>(DEFAULT_COMPONENTS);\n\nexport const ComponentsProvider = ComponentsContext.Provider;\n\nexport const useComponents = () => {\n return useContext(ComponentsContext);\n};\n","import { MDXProvider } from \"@mdx-js/react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n Fragment,\n memo,\n type PropsWithChildren,\n useEffect,\n useMemo,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport {\n DevPortalContext,\n queryClient,\n ZudokuContextOptions,\n} from \"../core/DevPortalContext.js\";\nimport { hasHead } from \"../core/plugins.js\";\nimport { TopLevelError } from \"../errors/TopLevelError.js\";\nimport { MdxComponents } from \"../util/MdxComponents.js\";\nimport {\n ComponentsProvider,\n DEFAULT_COMPONENTS,\n} from \"./context/ComponentsContext.js\";\nimport { DevPortalProvider } from \"./context/DevPortalProvider.js\";\nimport { ThemeProvider } from \"./context/ThemeContext.js\";\nimport { ViewportAnchorProvider } from \"./context/ViewportAnchorContext.js\";\n\nexport const DevPortalSystemPaths = {\n Settings: \"/settings\",\n} as const;\n\nexport type DevPortalPath =\n | string\n | (typeof DevPortalSystemPaths)[keyof typeof DevPortalSystemPaths];\n\nconst DevPortalInner = ({\n children,\n ...props\n}: PropsWithChildren<ZudokuContextOptions>) => {\n const components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...props.overrides }),\n [props.overrides],\n );\n\n const mdxComponents = useMemo(\n () => ({ ...MdxComponents, ...props.mdx?.components }),\n [props.mdx?.components],\n );\n\n const devPortalContext = useMemo(() => new DevPortalContext(props), [props]);\n\n useEffect(() => {\n void devPortalContext.initialize();\n }, [devPortalContext]);\n\n const heads = props.plugins\n ?.filter(hasHead)\n // eslint-disable-next-line react/no-array-index-key\n .map((plugin, i) => <Fragment key={i}>{plugin.getHead?.()}</Fragment>);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Helmet>{heads}</Helmet>\n <DevPortalProvider value={devPortalContext}>\n <MDXProvider components={mdxComponents}>\n <ThemeProvider>\n <ComponentsProvider value={components}>\n <ViewportAnchorProvider>{children}</ViewportAnchorProvider>\n </ComponentsProvider>\n </ThemeProvider>\n </MDXProvider>\n </DevPortalProvider>\n </QueryClientProvider>\n );\n};\n\nconst Inner = memo(DevPortalInner);\n\nconst DevPortal = (props: ZudokuContextOptions) => {\n return (\n <ErrorBoundary FallbackComponent={TopLevelError}>\n <Inner {...props} />\n </ErrorBoundary>\n );\n};\nDevPortal.displayName = \"DevPortal\";\n\nexport { DevPortal };\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { useViewportAnchor } from \"../components/context/ViewportAnchorContext.js\";\n\nexport const useScrollToAnchor = () => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n\n useEffect(() => {\n if (!location.hash) return;\n\n const hash = location.hash.split(\"/\")[0].slice(1);\n\n const element = document.getElementById(decodeURIComponent(hash));\n if (element) {\n // on page navigation element might be in DOM but not yet scrollable, so wait for a frame\n requestAnimationFrame(() => {\n element.scrollIntoView();\n requestIdleCallback(() => setActiveAnchor(hash));\n });\n return;\n }\n\n // on page load, the element might not be available yet\n const observer = new MutationObserver((_mutations, obs) => {\n const element = document.getElementById(decodeURIComponent(hash));\n if (!element) return;\n\n element.scrollIntoView();\n requestIdleCallback(() => setActiveAnchor(hash));\n obs.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }, [location.hash, setActiveAnchor]);\n};\n","import { useEffect, useRef } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useScrollToTop = () => {\n const location = useLocation();\n const previousPath = useRef(location.pathname);\n\n useEffect(() => {\n if (previousPath.current === location.pathname) return;\n window.scrollTo(0, 0);\n previousPath.current = location.pathname;\n }, [location.pathname]);\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport type { NavigationNode } from \"../../util/traverseNavigation.js\";\nimport { checkHasActiveItem } from \"./util.js\";\n\nexport const useNavigationCollapsibleState = ({\n item,\n defaultOpen,\n path,\n}: {\n item: NavigationNode;\n defaultOpen: () => boolean;\n path: string;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const location = useLocation();\n const previousLocationPath = useRef(location.pathname);\n\n useEffect(() => {\n if (!isOpen && previousLocationPath.current !== location.pathname) {\n setIsOpen(checkHasActiveItem(item, location.pathname, path));\n }\n previousLocationPath.current = location.pathname;\n }, [isOpen, item, path, location.pathname]);\n\n return [isOpen, setIsOpen] as const;\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronRightIcon, ExternalLinkIcon } from \"lucide-react\";\nimport { NavLink, useLocation } from \"react-router-dom\";\n\nimport type {\n NavigationCategory,\n NavigationCategoryItem,\n NavigationItem,\n} from \"../../core/DevPortalContext.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { AnchorLink } from \"../AnchorLink.js\";\nimport { useNavigationCollapsibleState } from \"./useNavigationCollapsibleState.js\";\nimport { checkHasActiveItem, isLinkItem, isPathItem } from \"./util.js\";\n\nexport const navigationListItem = cva(\n \"flex px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent transition-colors duration-300\",\n {\n variants: {\n isActive: {\n true: \"text-primary font-medium\",\n false: \"text-foreground/80\",\n },\n isMuted: {\n true: \"text-foreground/30\",\n false: \"\",\n },\n },\n },\n);\n\nexport const DATA_ANCHOR_ATTR = \"data-anchor\";\n\nexport const SideNavigationItem = ({\n category,\n item,\n activeAnchor,\n currentTopNavItem,\n basePath = \"\",\n}: {\n category: NavigationCategory;\n item: NavigationCategoryItem;\n activeAnchor?: string;\n currentTopNavItem?: NavigationItem;\n basePath?: string;\n}) => {\n const currentPath = isPathItem(item) ? joinPath(basePath, item.path) : \"\";\n const location = useLocation();\n\n const [isOpen, setIsOpen] = useNavigationCollapsibleState({\n item,\n path: currentPath,\n defaultOpen: () => checkHasActiveItem(item, location.pathname, currentPath),\n });\n\n if (isLinkItem(item)) {\n const classes = cn(\n \"flex items-center gap-2\",\n navigationListItem({\n isActive: item.href === location.pathname,\n }),\n );\n return item.href.startsWith(\"http\") ? (\n <a\n className={classes}\n href={item.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {item.label}\n <ExternalLinkIcon size={14} />\n </a>\n ) : (\n <NavLink className={classes} to={item.href}>\n {item.label}\n </NavLink>\n );\n }\n\n const linkContent = (\n <div className=\"flex justify-between w-full\">\n <div className=\"flex items-center gap-2 truncate w-full\">\n {item.icon}\n {typeof item.label !== \"string\" ? (\n item.label\n ) : (\n <span className=\"truncate\">{item.label}</span>\n )}\n </div>\n {item.children && (\n <ChevronRightIcon\n size={16}\n className=\"transition shrink-0 group-data-[state=open]:rotate-90\"\n />\n )}\n </div>\n );\n\n return (\n <li title={typeof item.label === \"string\" ? item.label : item.title}>\n {item.children ? (\n <Collapsible.Root\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n className=\"flex flex-col\"\n >\n <Collapsible.Trigger\n className={cn(\n \"group text-start\",\n navigationListItem({ isActive: false }),\n )}\n >\n {linkContent}\n </Collapsible.Trigger>\n <Collapsible.Content className=\"CollapsibleContent ms-[calc(var(--padding-nav-item)*1.125)]\">\n <ul className=\"mt-1 border-border border-l ps-1.5\">\n {item.children.map((child) => (\n <SideNavigationItem\n key={isPathItem(child) ? child.path : child.href}\n category={category}\n item={child}\n activeAnchor={activeAnchor}\n currentTopNavItem={currentTopNavItem}\n basePath={currentPath}\n />\n ))}\n </ul>\n </Collapsible.Content>\n </Collapsible.Root>\n ) : item.path.startsWith(\"#\") ? (\n <AnchorLink\n to={item.path}\n {...{ [DATA_ANCHOR_ATTR]: item.path }}\n className={navigationListItem({\n isActive: item.path.slice(1) === activeAnchor,\n isMuted: item.muted,\n })}\n >\n {linkContent}\n </AnchorLink>\n ) : (\n <NavLink\n className={({ isActive }) => navigationListItem({ isActive })}\n to={currentPath}\n >\n {linkContent}\n </NavLink>\n )}\n </li>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { useLocation } from \"react-router-dom\";\nimport type { NavigationCategory } from \"../../core/DevPortalContext.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { useTopNavigationItem } from \"../context/DevPortalProvider.js\";\nimport { useViewportAnchor } from \"../context/ViewportAnchorContext.js\";\nimport { SideNavigationItem } from \"./SideNavigationItem.js\";\nimport { useNavigationCollapsibleState } from \"./useNavigationCollapsibleState.js\";\nimport { checkHasActiveItem, isPathItem } from \"./util.js\";\n\nexport const SideNavigationCategory = ({\n category,\n}: {\n category: NavigationCategory;\n}) => {\n const { activeAnchor } = useViewportAnchor();\n const navItem = useTopNavigationItem();\n const location = useLocation();\n\n const isCollapsible = category.collapsible ?? true;\n\n const [isOpen, setIsOpen] = useNavigationCollapsibleState({\n item: category,\n path: navItem?.path ?? \"\",\n defaultOpen: () =>\n !isCollapsible ||\n category.expanded ||\n checkHasActiveItem(category, location.pathname, navItem?.path ?? \"\"),\n });\n\n return (\n <Collapsible.Root\n key={category.label}\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n >\n {category.label.length > 0 ? (\n <Collapsible.Trigger asChild={isCollapsible} disabled={!isCollapsible}>\n <h5\n className={cn(\n \"flex group items-center justify-between cursor-pointer font-semibold text-foreground/90 px-[--padding-nav-item] py-1.5 rounded-lg transition-colors duration-300 -mx-[--padding-nav-item]\",\n isCollapsible ? \"hover:bg-accent\" : \"cursor-auto\",\n )}\n >\n {category.label}\n {isCollapsible && (\n <ChevronRightIcon\n className=\"group-data-[state=open]:rotate-90 transition\"\n size={16}\n />\n )}\n </h5>\n </Collapsible.Trigger>\n ) : (\n \"Endpoints\"\n )}\n <Collapsible.Content className=\"CollapsibleContent -mx-[--padding-nav-item]\">\n {/* margin on Collapsible.Content will lead jumpiness when animating because it's not added to the calculated height */}\n <ul className=\"space-y-0.5 mt-1.5 mb-4 ms-3\">\n {category.children.map((item) => (\n <SideNavigationItem\n key={isPathItem(item) ? item.path + item.label : item.href}\n category={category}\n item={item}\n activeAnchor={activeAnchor}\n currentTopNavItem={navItem}\n basePath={joinPath(navItem?.path, category.path)}\n />\n ))}\n </ul>\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import { forwardRef, type PropsWithChildren } from \"react\";\nimport { cn } from \"../../util/cn.js\";\n\nexport const SideNavigationWrapper = forwardRef<\n HTMLDivElement,\n PropsWithChildren<{ pushMainContent?: boolean; className?: string }>\n>(function SideNavigation({ children, className, pushMainContent }, ref) {\n return (\n <nav\n // this data attribute is used in `Layout.tsx` to determine if side navigation\n // is present for the current page so the main content is pushed to the right\n // it's also important to set `peer` class here.\n // maybe this could be simplified by adjusting the layout\n data-navigation={String(pushMainContent)}\n className={cn(\n \"peer hidden lg:flex flex-col fixed text-sm overflow-y-auto shrink-0 p-[--padding-nav-item] -mx-[--padding-nav-item] pb-20 pt-[--padding-content-top] w-[--side-nav-width] h-[calc(100%-var(--header-height))] scroll-pt-2 gap-2\",\n className,\n )}\n ref={ref}\n >\n {children}\n </nav>\n );\n});\n","import { useRef } from \"react\";\n\nimport { useNavigation } from \"../context/DevPortalProvider.js\";\nimport { SideNavigationCategory } from \"./SideNavigationCategory.js\";\nimport { SideNavigationWrapper } from \"./SideNavigationWrapper.js\";\n\nexport const SideNavigation = () => {\n const navRef = useRef<HTMLDivElement | null>(null);\n const navigation = useNavigation();\n\n return (\n <SideNavigationWrapper\n ref={navRef}\n pushMainContent={navigation.data.items.length > 0}\n >\n {navigation.data.items.map((category) => (\n <SideNavigationCategory key={category.label} category={category} />\n ))}\n </SideNavigationWrapper>\n );\n};\n","import { Helmet } from \"@zudoku/react-helmet-async\";\nimport { Suspense, useEffect, useRef, type ReactNode } from \"react\";\nimport { Outlet, useLocation } from \"react-router-dom\";\nimport { cn } from \"../util/cn.js\";\nimport { useScrollToAnchor } from \"../util/useScrollToAnchor.js\";\nimport { useScrollToTop } from \"../util/useScrollToTop.js\";\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\nimport { useViewportAnchor } from \"./context/ViewportAnchorContext.js\";\nimport { Header } from \"./Header.js\";\nimport { SideNavigation } from \"./navigation/SideNavigation.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport const Layout = ({ children }: { children?: ReactNode }) => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n const { meta } = useDevPortal();\n\n useScrollToAnchor();\n useScrollToTop();\n\n const previousLocationPath = useRef(location.pathname);\n\n useEffect(() => {\n // always reset on location change\n if (location.pathname !== previousLocationPath.current) {\n setActiveAnchor(\"\");\n }\n previousLocationPath.current = location.pathname;\n }, [location.pathname, setActiveAnchor]);\n\n return (\n <>\n <Helmet titleTemplate={meta?.title}>\n {meta?.description && (\n <meta name=\"description\" content={meta.description} />\n )}\n {meta?.favicon && <link rel=\"icon\" href={meta.favicon} />}\n </Helmet>\n <Header />\n\n <div className=\"max-w-screen-2xl mx-auto pt-[--header-height] px-10 lg:px-12 h-full\">\n <Suspense\n fallback={\n <div className=\"grid h-full place-items-center\">\n <Spinner />\n </div>\n }\n >\n <SideNavigation />\n <main\n className={cn(\n \"dark:border-white/10 translate-x-0 h-full\",\n \"lg:overflow-visible\",\n \"lg:peer-data-[navigation=true]:w-[calc(100%-var(--side-nav-width))]\",\n \"lg:peer-data-[navigation=true]:translate-x-[--side-nav-width] lg:peer-data-[navigation=true]:pl-12\",\n )}\n >\n {children ?? <Outlet />}\n </main>\n </Suspense>\n </div>\n </>\n );\n};\n","import { useMDXComponents as useMDXComponentsImport } from \"@mdx-js/react\";\nimport { Link as LinkImport } from \"react-router-dom\";\nimport { RouterError as RouterErrorImport } from \"../errors/RouterError.js\";\nimport { ServerError as ServerErrorImport } from \"../errors/ServerError.js\";\nimport { Callout as CalloutImport } from \"../ui/Callout.js\";\nimport {\n Bootstrap as BootstrapImport,\n BootstrapStatic as BootstrapStaticImport,\n} from \"./Bootstrap.js\";\nimport { DevPortal as DevPortalImport } from \"./DevPortal.js\";\nimport { Layout as LayoutImport } from \"./Layout.js\";\n\nexport const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;\nexport const Callout = /*@__PURE__*/ CalloutImport;\nexport const DevPortal = /*@__PURE__*/ DevPortalImport;\nexport const Layout = /*@__PURE__*/ LayoutImport;\nexport const Link = /*@__PURE__*/ LinkImport;\nexport const RouterError = /*@__PURE__*/ RouterErrorImport;\nexport const ServerError = /*@__PURE__*/ ServerErrorImport;\nexport const Bootstrap = /*@__PURE__*/ BootstrapImport;\nexport const BootstrapStatic = /*@__PURE__*/ BootstrapStaticImport;\n"],"names":["ChevronRight","createLucideIcon","ExternalLink","MoonStar","Sun","ServerError","error","jsx","ErrorAlert","server","React","require$$0","router","require$$1","reactRouter","require$$2","reactRouterDom","require$$3","_interopNamespace","e","n","k","d","React__namespace","StaticRouter","basename","children","locationProp","future","action","location","staticNavigator","getStatelessNavigator","StaticRouterProvider","context","router$1","hydrate","nonce","dataRouterContext","fetchersContext","hydrateScript","data","serializeErrors","htmlEscape","state","DataRoutes","routes","errors","entries","serialized","key","val","createHref","encodeLocation","to","delta","createStaticHandler","opts","createStaticRouter","manifest","dataRoutes","matches","match","route","msg","method","_a","_b","href","encoded","ABSOLUTE_URL_REGEX","ESCAPE_LOOKUP","ESCAPE_REGEX","str","StaticRouterProvider_1","Bootstrap","StrictMode","HelmetProvider","RouterProvider","BootstrapStatic","helmetContext","QueryCache","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","MutationCache","_mutations","_mutationId","mutation","Mutation","__privateWrapper","scope","scopeFor","mutations","x","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","fetchFn","direction","_c","oldPages","_d","oldPageParams","_e","empty","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","param","previous","queryFnContext","page","maxPages","addTo","addToStart","addToEnd","result","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","i","pageParams","lastIndex","QueryClient","_queryCache","_mutationCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","cachedData","defaultedOptions","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","refetchFilters","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","isNavigationPlugin","obj","needsInitialization","hasHead","isApiIdentityPlugin","queryClient","DevPortalContext","__publicField","plugin","path","nav","request","accessToken","TopLevelError","resetErrorBoundary","TopNavigation","navigation","useDevPortal","NavLink","isActive","cx","Header","memo","isDark","toggleTheme","useTheme","isAuthenticated","profile","isAuthEnabled","login","logout","useAuth","ThemeIcon","MoonStarIcon","SunIcon","jsxs","DEFAULT_COMPONENTS","ComponentsContext","ComponentsProvider","DevPortalInner","components","useMemo","mdxComponents","MdxComponents","devPortalContext","useEffect","heads","Fragment","QueryClientProvider","Helmet","DevPortalProvider","MDXProvider","ThemeProvider","ViewportAnchorProvider","Inner","DevPortal","useScrollToAnchor","useLocation","setActiveAnchor","useViewportAnchor","hash","element","observer","obs","useScrollToTop","previousPath","useRef","useNavigationCollapsibleState","defaultOpen","isOpen","setIsOpen","useState","previousLocationPath","checkHasActiveItem","navigationListItem","cva","DATA_ANCHOR_ATTR","SideNavigationItem","category","activeAnchor","currentTopNavItem","basePath","currentPath","isPathItem","joinPath","isLinkItem","classes","cn","ExternalLinkIcon","linkContent","ChevronRightIcon","Collapsible.Root","prev","Collapsible.Trigger","Collapsible.Content","child","AnchorLink","SideNavigationCategory","navItem","useTopNavigationItem","isCollapsible","SideNavigationWrapper","forwardRef","className","pushMainContent","ref","SideNavigation","navRef","useNavigation","Layout","meta","Suspense","Spinner","Outlet","useMDXComponents","useMDXComponentsImport","Callout","CalloutImport","DevPortalImport","LayoutImport","Link","LinkImport","RouterError","RouterErrorImport","ServerErrorImport","BootstrapImport","BootstrapStaticImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,7,8,9,10,11]}
|
package/package.json
CHANGED
package/src/app/main.tsx
CHANGED
|
@@ -15,7 +15,7 @@ export const convertZudokuConfigToOptions = (
|
|
|
15
15
|
): ZudokuContextOptions => {
|
|
16
16
|
return {
|
|
17
17
|
page: {
|
|
18
|
-
logo:
|
|
18
|
+
logo: "https://cdn.zudoku.dev/logos/icon.svg",
|
|
19
19
|
pageTitle: "Developer Portal",
|
|
20
20
|
...config.page,
|
|
21
21
|
},
|
|
@@ -24,7 +24,7 @@ export const convertZudokuConfigToOptions = (
|
|
|
24
24
|
title: "%s | Developer Portal",
|
|
25
25
|
...config.metadata,
|
|
26
26
|
},
|
|
27
|
-
|
|
27
|
+
mdx: config.mdx,
|
|
28
28
|
navigation: config.navigation ?? [],
|
|
29
29
|
authentication: configuredAuthProvider,
|
|
30
30
|
plugins: [
|
|
@@ -9,7 +9,7 @@ const clerkAuth: AuthenticationProviderInitializer<
|
|
|
9
9
|
let clerkApi: Clerk;
|
|
10
10
|
|
|
11
11
|
const ensureLoaded = (async () => {
|
|
12
|
-
if (
|
|
12
|
+
if (typeof window === "undefined") return;
|
|
13
13
|
const { Clerk } = await import("@clerk/clerk-js");
|
|
14
14
|
clerkApi = new Clerk(clerkPubKey);
|
|
15
15
|
|
|
@@ -43,8 +43,8 @@ const DevPortalInner = ({
|
|
|
43
43
|
);
|
|
44
44
|
|
|
45
45
|
const mdxComponents = useMemo(
|
|
46
|
-
() => ({ ...MdxComponents, ...props.
|
|
47
|
-
[props.
|
|
46
|
+
() => ({ ...MdxComponents, ...props.mdx?.components }),
|
|
47
|
+
[props.mdx?.components],
|
|
48
48
|
);
|
|
49
49
|
|
|
50
50
|
const devPortalContext = useMemo(() => new DevPortalContext(props), [props]);
|
|
@@ -81,7 +81,9 @@ export type ZudokuContextOptions = {
|
|
|
81
81
|
authentication?: AuthenticationProvider;
|
|
82
82
|
navigation: NavigationItem[];
|
|
83
83
|
plugins?: DevPortalPlugin[];
|
|
84
|
-
|
|
84
|
+
mdx?: {
|
|
85
|
+
components?: MdxComponentsType;
|
|
86
|
+
};
|
|
85
87
|
overrides?: ComponentsContextType;
|
|
86
88
|
};
|
|
87
89
|
|