zudoku 0.0.0-e09234c → 0.0.0-e259486

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.
Files changed (35) hide show
  1. package/dist/config/validators/SidebarSchema.d.ts +24 -1
  2. package/dist/config/validators/SidebarSchema.js +73 -32
  3. package/dist/config/validators/SidebarSchema.js.map +1 -1
  4. package/dist/config/validators/validate.d.ts +264 -254
  5. package/dist/config/validators/validate.js +4 -0
  6. package/dist/config/validators/validate.js.map +1 -1
  7. package/dist/lib/components/Heading.d.ts +1 -1
  8. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  9. package/dist/lib/components/TopNavigation.js +8 -1
  10. package/dist/lib/components/TopNavigation.js.map +1 -1
  11. package/dist/lib/components/context/ZudokuContext.d.ts +1 -0
  12. package/dist/lib/plugins/openapi/playground/Playground.js +1 -0
  13. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  14. package/dist/lib/ui/Button.d.ts +1 -1
  15. package/dist/vite/plugin-frontmatter.d.ts +2 -1
  16. package/dist/vite/plugin-frontmatter.js +27 -24
  17. package/dist/vite/plugin-frontmatter.js.map +1 -1
  18. package/dist/vite/plugin-sidebar.js +4 -6
  19. package/dist/vite/plugin-sidebar.js.map +1 -1
  20. package/dist/vite/plugin.js +1 -1
  21. package/dist/vite/plugin.js.map +1 -1
  22. package/lib/{OperationList-yuVHI6ul.js → OperationList-ulcORU8G.js} +2 -2
  23. package/lib/{OperationList-yuVHI6ul.js.map → OperationList-ulcORU8G.js.map} +1 -1
  24. package/lib/{Route-BaAjY0N-.js → Route-CwldVMgy.js} +2 -2
  25. package/lib/{Route-BaAjY0N-.js.map → Route-CwldVMgy.js.map} +1 -1
  26. package/lib/{index-vPSN3k3e.js → index-DDQnHcw-.js} +94 -93
  27. package/lib/index-DDQnHcw-.js.map +1 -0
  28. package/lib/zudoku.components.js +122 -120
  29. package/lib/zudoku.components.js.map +1 -1
  30. package/lib/zudoku.plugin-openapi.js +1 -1
  31. package/package.json +1 -1
  32. package/src/lib/components/MobileTopNavigation.tsx +1 -0
  33. package/src/lib/components/TopNavigation.tsx +11 -1
  34. package/src/lib/plugins/openapi/playground/Playground.tsx +1 -0
  35. package/lib/index-vPSN3k3e.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { type LucideIcon } from "lucide-react";
2
2
  import type { BaseInputSidebarItemCategoryLinkDoc, BaseInputSidebarItemDoc, InputSidebarItem, InputSidebarItemCategory, InputSidebarItemLink } from "./InputSidebarSchema.js";
3
+ import type { ZudokuConfig } from "./validate.js";
3
4
  export type SidebarItemDoc = Omit<BaseInputSidebarItemDoc, "icon"> & {
4
5
  label: string;
5
6
  categoryLabel?: string;
@@ -18,6 +19,28 @@ export type SidebarItemCategory = Omit<InputSidebarItemCategory, "items" | "link
18
19
  icon?: LucideIcon | string;
19
20
  };
20
21
  export type SidebarItem = SidebarItemDoc | SidebarItemLink | SidebarItemCategory;
21
- export declare const resolveSidebar: (rootDir: string, sidebar: InputSidebarItem[]) => Promise<SidebarItem[]>;
22
+ export declare class SidebarManager {
23
+ sidebars: SidebarClass[];
24
+ private switchQueue;
25
+ constructor(rootDir: string, sidebarConfig: ZudokuConfig["sidebar"]);
26
+ resolveSidebars(): Promise<{
27
+ [k: string]: SidebarItem[];
28
+ }>;
29
+ switchSidebar(from: string, to: string, item: SidebarItem): void;
30
+ }
31
+ export declare class SidebarClass {
32
+ private manager;
33
+ rootDir: string;
34
+ parent: string;
35
+ private items;
36
+ resolvedItems: SidebarItem[];
37
+ constructor(manager: SidebarManager, rootDir: string, parent: string, items: InputSidebarItem[]);
38
+ resolve(): Promise<void>;
39
+ private resolveDoc;
40
+ private resolveLink;
41
+ private resolveItemCategoryLinkDoc;
42
+ private resolveSidebarItemDoc;
43
+ private resolveItem;
44
+ }
22
45
  export type Sidebar = SidebarItem[];
23
46
  export type SidebarConfig = Record<string, Sidebar>;
@@ -2,11 +2,51 @@ import { glob } from "glob";
2
2
  import matter from "gray-matter";
3
3
  import fs from "node:fs/promises";
4
4
  const extractTitleFromContent = (content) => content.match(/^\s*#\s(.*)$/m)?.at(1);
5
- export const resolveSidebar = async (rootDir, sidebar) => {
6
- const resolveDoc = async (id, categoryLabel) => {
5
+ const isSidebarItem = (item) => item !== undefined;
6
+ export class SidebarManager {
7
+ sidebars;
8
+ switchQueue = [];
9
+ constructor(rootDir, sidebarConfig) {
10
+ this.sidebars = Object.entries(sidebarConfig ?? {}).map(([parent, items]) => new SidebarClass(this, rootDir, parent, items));
11
+ }
12
+ async resolveSidebars() {
13
+ await Promise.all(this.sidebars.map((sidebar) => sidebar.resolve()));
14
+ // switch all collected items
15
+ for (const { from, to, item } of this.switchQueue) {
16
+ const fromSidebar = this.sidebars.find((s) => s.parent === from);
17
+ const toSidebar = this.sidebars.find((s) => s.parent === to);
18
+ if (!fromSidebar || !toSidebar) {
19
+ throw new Error(`Sidebar ${from} or ${to} not found`);
20
+ }
21
+ fromSidebar.resolvedItems = fromSidebar.resolvedItems.filter((resolvedItem) => resolvedItem !== item);
22
+ toSidebar.resolvedItems.push(item);
23
+ }
24
+ return Object.fromEntries(this.sidebars.map((sidebar) => [sidebar.parent, sidebar.resolvedItems]));
25
+ }
26
+ switchSidebar(from, to, item) {
27
+ this.switchQueue.push({ from, to, item });
28
+ }
29
+ }
30
+ export class SidebarClass {
31
+ manager;
32
+ rootDir;
33
+ parent;
34
+ items;
35
+ resolvedItems = [];
36
+ constructor(manager, rootDir, parent, items) {
37
+ this.manager = manager;
38
+ this.rootDir = rootDir;
39
+ this.parent = parent;
40
+ this.items = items;
41
+ }
42
+ async resolve() {
43
+ const resolvedSidebar = (await Promise.all(this.items.map((item) => this.resolveItem(item)))).filter(isSidebarItem);
44
+ this.resolvedItems = resolvedSidebar;
45
+ }
46
+ async resolveDoc(id, categoryLabel) {
7
47
  const foundMatches = await glob(`/**/${id}.{md,mdx}`, {
8
48
  ignore: ["**/node_modules/**", "**/.git/**", "**/dist/**"],
9
- root: rootDir,
49
+ root: this.rootDir,
10
50
  });
11
51
  if (foundMatches.length === 0) {
12
52
  throw new Error(`File not found for document '${id}'. Check your sidebar configuration.`);
@@ -18,51 +58,53 @@ export const resolveSidebar = async (rootDir, sidebar) => {
18
58
  extractTitleFromContent(content) ??
19
59
  id;
20
60
  const icon = data.sidebar_icon;
21
- return {
61
+ const doc = {
22
62
  type: "doc",
23
63
  id,
24
64
  label,
25
65
  icon,
26
66
  categoryLabel,
27
67
  };
28
- };
29
- const resolveLink = async (id) => {
30
- const doc = await resolveDoc(id);
31
- return {
32
- type: "doc",
33
- id: id,
34
- label: doc.label,
35
- icon: doc.icon,
36
- };
37
- };
38
- const resolveSidebarItemCategoryLinkDoc = async (item) => {
68
+ if (data.sidebar && data.sidebar !== this.parent) {
69
+ this.manager.switchSidebar(this.parent, data.sidebar, doc);
70
+ return undefined;
71
+ }
72
+ return doc;
73
+ }
74
+ async resolveLink(id) {
75
+ const doc = await this.resolveDoc(id);
76
+ return doc
77
+ ? { type: "doc", id: id, label: doc.label, icon: doc.icon }
78
+ : undefined;
79
+ }
80
+ async resolveItemCategoryLinkDoc(item) {
39
81
  if (typeof item === "string") {
40
- return resolveLink(item);
82
+ return this.resolveLink(item);
41
83
  }
42
- const { label, icon } = await resolveDoc(item.id);
43
- return { ...item, label, icon };
44
- };
45
- const resolveSidebarItemDoc = async (item, categoryLabel) => {
84
+ const doc = await this.resolveDoc(item.id);
85
+ return doc ? { ...item, label: doc.label, icon: doc.icon } : undefined;
86
+ }
87
+ async resolveSidebarItemDoc(item, categoryLabel) {
46
88
  if (typeof item === "string") {
47
- return resolveDoc(item, categoryLabel);
89
+ return this.resolveDoc(item, categoryLabel);
48
90
  }
49
- const doc = await resolveDoc(item.id, categoryLabel);
50
- return { ...doc, ...item };
51
- };
52
- const resolveSidebarItem = async (item, categoryLabel) => {
91
+ const doc = await this.resolveDoc(item.id, categoryLabel);
92
+ return doc ? { ...doc, ...item } : undefined;
93
+ }
94
+ async resolveItem(item, categoryLabel) {
53
95
  if (typeof item === "string") {
54
- return resolveDoc(item, categoryLabel);
96
+ return this.resolveDoc(item, categoryLabel);
55
97
  }
56
98
  switch (item.type) {
57
99
  case "doc":
58
- return resolveSidebarItemDoc(item, categoryLabel);
100
+ return this.resolveSidebarItemDoc(item, categoryLabel);
59
101
  case "link":
60
102
  return item;
61
103
  case "category": {
62
104
  const categoryItem = item;
63
- const items = await Promise.all(categoryItem.items.map((subItem) => resolveSidebarItem(subItem, categoryItem.label)));
105
+ const items = (await Promise.all(categoryItem.items.map((subItem) => this.resolveItem(subItem, categoryItem.label)))).filter((item) => item !== undefined);
64
106
  const resolvedLink = categoryItem.link
65
- ? await resolveSidebarItemCategoryLinkDoc(categoryItem.link)
107
+ ? await this.resolveItemCategoryLinkDoc(categoryItem.link)
66
108
  : undefined;
67
109
  return {
68
110
  ...categoryItem,
@@ -71,7 +113,6 @@ export const resolveSidebar = async (rootDir, sidebar) => {
71
113
  };
72
114
  }
73
115
  }
74
- };
75
- return Promise.all(sidebar.map((item) => resolveSidebarItem(item)));
76
- };
116
+ }
117
+ }
77
118
  //# sourceMappingURL=SidebarSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarSchema.js","sourceRoot":"","sources":["../../../src/config/validators/SidebarSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SidebarSchema.js","sourceRoot":"","sources":["../../../src/config/validators/SidebarSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAuClC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAsB,EAAE,CACtE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAExC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAuB,EAAE,CAC3D,IAAI,KAAK,SAAS,CAAC;AAErB,MAAM,OAAO,cAAc;IACzB,QAAQ,CAAiB;IACjB,WAAW,GACjB,EAAE,CAAC;IACL,YAAY,OAAe,EAAE,aAAsC;QACjE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CACrD,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAErE,6BAA6B;QAC7B,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;YAE7D,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,EAAE,YAAY,CAAC,CAAC;YACxD,CAAC;YAED,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAC1D,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,IAAI,CACxC,CAAC;YACF,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,EAAU,EAAE,IAAiB;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IAIb;IACD;IACA;IACC;IANV,aAAa,GAAkB,EAAE,CAAC;IAElC,YACU,OAAuB,EACxB,OAAe,EACf,MAAc,EACb,KAAyB;QAHzB,YAAO,GAAP,OAAO,CAAgB;QACxB,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QACb,UAAK,GAAL,KAAK,CAAoB;IAChC,CAAC;IAEJ,KAAK,CAAC,OAAO;QACX,MAAM,eAAe,GAAG,CACtB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CACpE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAExB,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,EAAU,EACV,aAAsB;QAEtB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;YACpD,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,YAAY,CAAC;YAC1D,IAAI,EAAE,IAAI,CAAC,OAAO;SACnB,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,gCAAgC,EAAE,sCAAsC,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;QAEpD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,KAAK,GACT,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,KAAK;YACV,uBAAuB,CAAC,OAAO,CAAC;YAChC,EAAE,CAAC;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,GAAG,GAAmB;YAC1B,IAAI,EAAE,KAAK;YACX,EAAE;YACF,KAAK;YACL,IAAI;YACJ,aAAa;SACd,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,EAAU;QAEV,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEtC,OAAO,GAAG;YACR,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;YAC3D,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACtC,IAAkD;QAElD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,IAAsC,EACtC,aAAsB;QAEtB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,IAAsB,EACtB,aAAsB;QAEtB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACzD,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC;YACd,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,YAAY,GAAG,IAAI,CAAC;gBAE1B,MAAM,KAAK,GAAG,CACZ,MAAM,OAAO,CAAC,GAAG,CACf,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAC9C,CACF,CACF,CAAC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;gBAE5D,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI;oBACpC,CAAC,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC1D,CAAC,CAAC,SAAS,CAAC;gBAEd,OAAO;oBACL,GAAG,YAAY;oBACf,KAAK;oBACL,IAAI,EAAE,YAAY;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}