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 CHANGED
@@ -10,7 +10,7 @@ import { isNavigationPlugin } from "zudoku/internal";
10
10
  export const convertZudokuConfigToOptions = (config) => {
11
11
  return {
12
12
  page: {
13
- logo: config.page?.logo ?? "https://cdn.zudoku.dev/logos/icon.svg",
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
- mdxComponents: config.mdx?.components,
22
+ mdx: config.mdx,
23
23
  navigation: config.navigation ?? [],
24
24
  authentication: configuredAuthProvider,
25
25
  plugins: [
@@ -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,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,uCAAuC;YAClE,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,aAAa,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU;QACrC,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"}
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 (import.meta.env.SSR)
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,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAO;QAChC,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"}
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.mdxComponents }), [props.mdxComponents]);
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":"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"}
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
- mdxComponents?: MdxComponentsType;
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;AAgC7C,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"}
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"}
@@ -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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"}
@@ -1,11 +1,12 @@
1
1
  import { u as t } from "./state-DKdaQzvh.js";
2
- const r = ({ clerkPubKey: a }) => {
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(a), await e.load({});
7
+ e = new s(n), await e.load({});
7
8
  })();
8
- async function n() {
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: n,
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 (import.meta.env.SSR) 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;AAEhC,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;"}
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;"}
@@ -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), d = (t, e, r, a) => (ue(t, e, "write to private field"), a ? a.call(t, r) : e.set(t, r), 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
- d(t, e, s, r);
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 g, 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";
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, d(this, w, /* @__PURE__ */ new Map());
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
- g.batch(() => {
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
- g.batch(() => {
406
+ m.batch(() => {
407
407
  this.listeners.forEach((r) => {
408
408
  r(e);
409
409
  });
410
410
  });
411
411
  }
412
412
  onFocus() {
413
- g.batch(() => {
413
+ m.batch(() => {
414
414
  this.getAll().forEach((e) => {
415
415
  e.onFocus();
416
416
  });
417
417
  });
418
418
  }
419
419
  onOnline() {
420
- g.batch(() => {
420
+ m.batch(() => {
421
421
  this.getAll().forEach((e) => {
422
422
  e.onOnline();
423
423
  });
424
424
  });
425
425
  }
426
- }, w = new WeakMap(), be), m, Q, xe, rr = (xe = class extends Oe {
426
+ }, w = new WeakMap(), be), p, Q, xe, rr = (xe = class extends Oe {
427
427
  constructor(e = {}) {
428
428
  super();
429
- y(this, m);
429
+ y(this, p);
430
430
  y(this, Q);
431
- this.config = e, d(this, m, /* @__PURE__ */ new Map()), d(this, Q, Date.now());
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, m).get(r) ?? [];
444
- a.push(e), l(this, m).set(r, a), this.notify({ type: "added", mutation: e });
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, m).has(r)) {
450
- const s = (a = l(this, m).get(r)) == null ? void 0 : a.filter((o) => o !== e);
451
- s && (s.length === 0 ? l(this, m).delete(r) : l(this, m).set(r, s));
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, m).get(B(e))) == null ? void 0 : a.find((s) => s.state.status === "pending");
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, m).get(B(e))) == null ? void 0 : a.find((s) => s !== e && s.state.isPaused);
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
- g.batch(() => {
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, m).values()].flat();
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
- g.batch(() => {
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 g.batch(
493
+ return m.batch(
494
494
  () => Promise.all(
495
495
  e.map((r) => r.continue().catch(P))
496
496
  )
497
497
  );
498
498
  }
499
- }, m = new WeakMap(), Q = new WeakMap(), xe);
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 f = !1;
511
- const p = (b) => {
510
+ let g = !1;
511
+ const d = (b) => {
512
512
  Object.defineProperty(b, "signal", {
513
513
  enumerable: !0,
514
- get: () => (e.signal.aborted ? f = !0 : e.signal.addEventListener("abort", () => {
515
- f = !0;
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 (f)
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
- p(H);
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
- d(this, h, t.queryCache || new tr()), d(this, N, t.mutationCache || new rr()), d(this, C, t.defaultOptions || {}), d(this, k, /* @__PURE__ */ new Map()), d(this, M, /* @__PURE__ */ new Map()), d(this, O, 0);
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 && (d(this, D, Pt.subscribe(async (t) => {
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
- })), d(this, _, pe.subscribe(async (t) => {
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), d(this, D, void 0), (e = l(this, _)) == null || e.call(this), d(this, _, void 0));
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 g.batch(
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
- g.batch(() => {
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 g.batch(() => (r.findAll(t).forEach((s) => {
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 = g.batch(
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 g.batch(() => {
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 = g.batch(
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
- d(this, C, t);
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(), f = e ? _t : Tt;
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(f, { size: 18 })
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
- () => ({ ...Ge, ...e.mdxComponents }),
992
- [e.mdxComponents]
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 = (i = e.plugins) == null ? void 0 : i.filter(hr).map((c, u) => {
998
- var f;
999
- return /* @__PURE__ */ n.jsx(pt, { children: (f = c.getHead) == null ? void 0 : f.call(c) }, u);
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 p = F(
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: p,
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: p, to: e.href, children: e.label });
1086
+ ) : /* @__PURE__ */ n.jsx(J, { className: d, to: e.href, children: e.label });
1084
1087
  }
1085
- const f = /* @__PURE__ */ n.jsxs("div", { className: "flex justify-between w-full", children: [
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((p) => !p),
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: f
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((p) => /* @__PURE__ */ n.jsx(
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: p,
1122
+ item: d,
1120
1123
  activeAnchor: r,
1121
1124
  currentTopNavItem: a,
1122
1125
  basePath: o
1123
1126
  },
1124
- X(p) ? p.path : p.href
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: f
1140
+ children: g
1138
1141
  }
1139
1142
  ) : /* @__PURE__ */ n.jsx(
1140
1143
  J,
1141
1144
  {
1142
- className: ({ isActive: p }) => z({ isActive: p }),
1145
+ className: ({ isActive: d }) => z({ isActive: d }),
1143
1146
  to: o,
1144
- children: f
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zudoku",
3
- "version": "0.3.0-dev.51",
3
+ "version": "0.3.0-dev.52",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
package/src/app/main.tsx CHANGED
@@ -15,7 +15,7 @@ export const convertZudokuConfigToOptions = (
15
15
  ): ZudokuContextOptions => {
16
16
  return {
17
17
  page: {
18
- logo: config.page?.logo ?? "https://cdn.zudoku.dev/logos/icon.svg",
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
- mdxComponents: config.mdx?.components,
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 (import.meta.env.SSR) return;
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.mdxComponents }),
47
- [props.mdxComponents],
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
- mdxComponents?: MdxComponentsType;
84
+ mdx?: {
85
+ components?: MdxComponentsType;
86
+ };
85
87
  overrides?: ComponentsContextType;
86
88
  };
87
89