zudoku 0.3.0-dev.83 → 0.3.0-dev.84

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 (185) hide show
  1. package/cli.js +5 -1
  2. package/dist/app/demo.js +5 -4
  3. package/dist/app/demo.js.map +1 -1
  4. package/dist/app/main.js +3 -1
  5. package/dist/app/main.js.map +1 -1
  6. package/dist/app/standalone.js +5 -4
  7. package/dist/app/standalone.js.map +1 -1
  8. package/dist/config/validators/ResolvedSidebarSchema.d.ts +18 -0
  9. package/dist/config/validators/ResolvedSidebarSchema.js +76 -0
  10. package/dist/config/validators/ResolvedSidebarSchema.js.map +1 -0
  11. package/dist/config/validators/SidebarSchema.d.ts +177 -0
  12. package/dist/config/validators/SidebarSchema.js +71 -0
  13. package/dist/config/validators/SidebarSchema.js.map +1 -0
  14. package/dist/config/validators/validate.d.ts +411 -59
  15. package/dist/config/validators/validate.js +22 -4
  16. package/dist/config/validators/validate.js.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/lib/components/DevPortal.js +1 -1
  19. package/dist/lib/components/DevPortal.js.map +1 -1
  20. package/dist/lib/components/Header.js.map +1 -1
  21. package/dist/lib/components/Heading.d.ts +1 -1
  22. package/dist/lib/components/Layout.js +2 -2
  23. package/dist/lib/components/Layout.js.map +1 -1
  24. package/dist/lib/components/TopNavigation.js +5 -5
  25. package/dist/lib/components/TopNavigation.js.map +1 -1
  26. package/dist/lib/components/context/DevPortalProvider.d.ts +9 -3
  27. package/dist/lib/components/context/DevPortalProvider.js +11 -23
  28. package/dist/lib/components/context/DevPortalProvider.js.map +1 -1
  29. package/dist/lib/components/context/ThemeContext.d.ts +1 -4
  30. package/dist/lib/components/context/ThemeContext.js +3 -29
  31. package/dist/lib/components/context/ThemeContext.js.map +1 -1
  32. package/dist/lib/components/context/ThemeProvider.d.ts +4 -0
  33. package/dist/lib/components/context/ThemeProvider.js +23 -0
  34. package/dist/lib/components/context/ThemeProvider.js.map +1 -0
  35. package/dist/lib/components/navigation/Sidebar.d.ts +1 -0
  36. package/dist/lib/components/navigation/Sidebar.js +12 -0
  37. package/dist/lib/components/navigation/Sidebar.js.map +1 -0
  38. package/dist/lib/components/navigation/SidebarBadge.d.ts +22 -0
  39. package/dist/lib/components/navigation/SidebarBadge.js +24 -0
  40. package/dist/lib/components/navigation/SidebarBadge.js.map +1 -0
  41. package/dist/lib/components/navigation/SidebarCategory.d.ts +5 -0
  42. package/dist/lib/components/navigation/SidebarCategory.js +33 -0
  43. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -0
  44. package/dist/lib/components/navigation/SidebarItem.d.ts +12 -0
  45. package/dist/lib/components/navigation/SidebarItem.js +42 -0
  46. package/dist/lib/components/navigation/SidebarItem.js.map +1 -0
  47. package/dist/lib/components/navigation/{SideNavigationWrapper.d.ts → SidebarWrapper.d.ts} +1 -1
  48. package/dist/lib/components/navigation/{SideNavigationWrapper.js → SidebarWrapper.js} +2 -2
  49. package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -0
  50. package/dist/lib/components/navigation/utils.d.ts +16 -0
  51. package/dist/lib/components/navigation/utils.js +85 -0
  52. package/dist/lib/components/navigation/utils.js.map +1 -0
  53. package/dist/lib/core/DevPortalContext.d.ts +9 -32
  54. package/dist/lib/core/DevPortalContext.js +8 -5
  55. package/dist/lib/core/DevPortalContext.js.map +1 -1
  56. package/dist/lib/core/plugins.d.ts +6 -8
  57. package/dist/lib/core/plugins.js.map +1 -1
  58. package/dist/lib/plugins/markdown/MdxPage.js +5 -36
  59. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  60. package/dist/lib/plugins/markdown/generateRoutes.js +20 -43
  61. package/dist/lib/plugins/markdown/generateRoutes.js.map +1 -1
  62. package/dist/lib/plugins/openapi/Sidecar.js +12 -2
  63. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  64. package/dist/lib/plugins/openapi/index.js +14 -11
  65. package/dist/lib/plugins/openapi/index.js.map +1 -1
  66. package/dist/lib/plugins/openapi/interfaces.d.ts +1 -1
  67. package/dist/lib/util/useScrollToAnchor.js +31 -17
  68. package/dist/lib/util/useScrollToAnchor.js.map +1 -1
  69. package/dist/vite/plugin-sidebar.d.ts +3 -0
  70. package/dist/vite/plugin-sidebar.js +23 -0
  71. package/dist/vite/plugin-sidebar.js.map +1 -0
  72. package/dist/vite/plugin.js +2 -0
  73. package/dist/vite/plugin.js.map +1 -1
  74. package/lib/{AuthenticationPlugin-XS0DoAhE.js → AuthenticationPlugin-DgwV0hVu.js} +7 -7
  75. package/lib/{AuthenticationPlugin-XS0DoAhE.js.map → AuthenticationPlugin-DgwV0hVu.js.map} +1 -1
  76. package/lib/{CategoryHeading-DCmchnA1.js → CategoryHeading-BWq12Bfa.js} +3 -3
  77. package/lib/{CategoryHeading-DCmchnA1.js.map → CategoryHeading-BWq12Bfa.js.map} +1 -1
  78. package/lib/{Combination-C442XfGG.js → Combination-DkycFHkm.js} +4 -4
  79. package/lib/{Combination-C442XfGG.js.map → Combination-DkycFHkm.js.map} +1 -1
  80. package/lib/{DevPortalProvider-BWeAysxF.js → DevPortalProvider-CTxoCHIT.js} +375 -417
  81. package/lib/DevPortalProvider-CTxoCHIT.js.map +1 -0
  82. package/lib/DeveloperHint-BQSFXH01.js +10 -0
  83. package/lib/{DeveloperHint-DQVwIery.js.map → DeveloperHint-BQSFXH01.js.map} +1 -1
  84. package/lib/{Input-3IEt27jb.js → Input-BclXSY0g.js} +5 -5
  85. package/lib/{Input-3IEt27jb.js.map → Input-BclXSY0g.js.map} +1 -1
  86. package/lib/{Markdown-QsZ-PHET.js → Markdown-B_Gax7at.js} +1136 -1152
  87. package/lib/{Markdown-QsZ-PHET.js.map → Markdown-B_Gax7at.js.map} +1 -1
  88. package/lib/{MdxPage-CA1WmW14.js → MdxPage-Crlr0GmN.js} +67 -81
  89. package/lib/MdxPage-Crlr0GmN.js.map +1 -0
  90. package/lib/{OperationList-CHK_erYP.js → OperationList-nQ0bd8TU.js} +8 -8
  91. package/lib/{OperationList-CHK_erYP.js.map → OperationList-nQ0bd8TU.js.map} +1 -1
  92. package/lib/Route-CNvxEBnR.js +14 -0
  93. package/lib/{Route-D70pGn9n.js.map → Route-CNvxEBnR.js.map} +1 -1
  94. package/lib/{SlotletProvider-B71hNEUL.js → SlotletProvider-CzMAO73_.js} +12 -12
  95. package/lib/{SlotletProvider-B71hNEUL.js.map → SlotletProvider-CzMAO73_.js.map} +1 -1
  96. package/lib/Spinner-fF-Xv-gw.js +274 -0
  97. package/lib/Spinner-fF-Xv-gw.js.map +1 -0
  98. package/lib/index-7kcHaXD6.js +1771 -0
  99. package/lib/index-7kcHaXD6.js.map +1 -0
  100. package/lib/{index-Bl6YeerK.js → index-CgCPw6Jn.js} +1026 -1043
  101. package/lib/index-CgCPw6Jn.js.map +1 -0
  102. package/lib/{index-BH-Ub36F.js → index-DkuZvRNP.js} +4 -4
  103. package/lib/{index-BH-Ub36F.js.map → index-DkuZvRNP.js.map} +1 -1
  104. package/lib/joinPath-VeNuJa7y.js +8 -0
  105. package/lib/joinPath-VeNuJa7y.js.map +1 -0
  106. package/lib/jsx-runtime-B6kdoens.js +635 -0
  107. package/lib/jsx-runtime-B6kdoens.js.map +1 -0
  108. package/lib/{AnchorLink-BZcpTwOs.js → utils-CzT_9Tsn.js} +258 -214
  109. package/lib/utils-CzT_9Tsn.js.map +1 -0
  110. package/lib/zudoku.auth-clerk.js +1 -1
  111. package/lib/zudoku.auth-openid.js +2 -2
  112. package/lib/zudoku.components.js +1229 -1227
  113. package/lib/zudoku.components.js.map +1 -1
  114. package/lib/zudoku.plugin-api-keys.js +19 -19
  115. package/lib/zudoku.plugin-custom-page.js +2 -2
  116. package/lib/zudoku.plugin-markdown.js +21 -38
  117. package/lib/zudoku.plugin-markdown.js.map +1 -1
  118. package/lib/zudoku.plugin-openapi.js +8 -6
  119. package/lib/zudoku.plugin-openapi.js.map +1 -1
  120. package/package.json +4 -1
  121. package/src/app/demo.tsx +5 -4
  122. package/src/app/main.css +2 -2
  123. package/src/app/main.tsx +3 -1
  124. package/src/app/standalone.tsx +5 -4
  125. package/src/lib/components/DevPortal.tsx +1 -1
  126. package/src/lib/components/Header.tsx +2 -2
  127. package/src/lib/components/Layout.tsx +2 -2
  128. package/src/lib/components/TopNavigation.tsx +5 -5
  129. package/src/lib/components/context/DevPortalProvider.ts +11 -28
  130. package/src/lib/components/context/ThemeContext.tsx +3 -41
  131. package/src/lib/components/context/ThemeProvider.tsx +27 -0
  132. package/src/lib/components/navigation/{SideNavigation.tsx → Sidebar.tsx} +7 -7
  133. package/src/lib/components/navigation/SidebarBadge.tsx +40 -0
  134. package/src/lib/components/navigation/SidebarCategory.tsx +105 -0
  135. package/src/lib/components/navigation/SidebarItem.tsx +96 -0
  136. package/src/lib/components/navigation/{SideNavigationWrapper.tsx → SidebarWrapper.tsx} +1 -1
  137. package/src/lib/components/navigation/utils.ts +120 -0
  138. package/src/lib/core/DevPortalContext.ts +12 -44
  139. package/src/lib/core/plugins.ts +6 -13
  140. package/src/lib/plugins/markdown/MdxPage.tsx +14 -50
  141. package/src/lib/plugins/markdown/generateRoutes.tsx +29 -57
  142. package/src/lib/plugins/openapi/Sidecar.tsx +15 -2
  143. package/src/lib/plugins/openapi/index.tsx +17 -23
  144. package/src/lib/plugins/openapi/interfaces.ts +1 -1
  145. package/src/lib/util/useScrollToAnchor.ts +39 -18
  146. package/dist/lib/components/navigation/SideNavigation.d.ts +0 -1
  147. package/dist/lib/components/navigation/SideNavigation.js +0 -12
  148. package/dist/lib/components/navigation/SideNavigation.js.map +0 -1
  149. package/dist/lib/components/navigation/SideNavigationCategory.d.ts +0 -4
  150. package/dist/lib/components/navigation/SideNavigationCategory.js +0 -26
  151. package/dist/lib/components/navigation/SideNavigationCategory.js.map +0 -1
  152. package/dist/lib/components/navigation/SideNavigationItem.d.ts +0 -9
  153. package/dist/lib/components/navigation/SideNavigationItem.js +0 -44
  154. package/dist/lib/components/navigation/SideNavigationItem.js.map +0 -1
  155. package/dist/lib/components/navigation/SideNavigationWrapper.js.map +0 -1
  156. package/dist/lib/components/navigation/useNavigationCollapsibleState.d.ts +0 -9
  157. package/dist/lib/components/navigation/useNavigationCollapsibleState.js +0 -28
  158. package/dist/lib/components/navigation/useNavigationCollapsibleState.js.map +0 -1
  159. package/dist/lib/components/navigation/util.d.ts +0 -8
  160. package/dist/lib/components/navigation/util.js +0 -15
  161. package/dist/lib/components/navigation/util.js.map +0 -1
  162. package/dist/lib/plugins/openapi/MethodBadge.d.ts +0 -13
  163. package/dist/lib/plugins/openapi/MethodBadge.js +0 -26
  164. package/dist/lib/plugins/openapi/MethodBadge.js.map +0 -1
  165. package/dist/lib/util/traverseNavigation.d.ts +0 -6
  166. package/dist/lib/util/traverseNavigation.js +0 -30
  167. package/dist/lib/util/traverseNavigation.js.map +0 -1
  168. package/lib/AnchorLink-BZcpTwOs.js.map +0 -1
  169. package/lib/DevPortalProvider-BWeAysxF.js.map +0 -1
  170. package/lib/DeveloperHint-DQVwIery.js +0 -10
  171. package/lib/MdxPage-CA1WmW14.js.map +0 -1
  172. package/lib/Route-D70pGn9n.js +0 -13
  173. package/lib/Spinner-Coi7ORUV.js +0 -244
  174. package/lib/Spinner-Coi7ORUV.js.map +0 -1
  175. package/lib/index-Bl6YeerK.js.map +0 -1
  176. package/lib/index-Dt-pU7Vu.js +0 -916
  177. package/lib/index-Dt-pU7Vu.js.map +0 -1
  178. package/lib/jsx-runtime-CJBdjYYx.js +0 -1526
  179. package/lib/jsx-runtime-CJBdjYYx.js.map +0 -1
  180. package/src/lib/components/navigation/SideNavigationCategory.tsx +0 -72
  181. package/src/lib/components/navigation/SideNavigationItem.tsx +0 -148
  182. package/src/lib/components/navigation/useNavigationCollapsibleState.ts +0 -42
  183. package/src/lib/components/navigation/util.ts +0 -38
  184. package/src/lib/plugins/openapi/MethodBadge.tsx +0 -36
  185. package/src/lib/util/traverseNavigation.ts +0 -55
@@ -1,13 +1,13 @@
1
1
  import { HTTPSnippet } from "@zudoku/httpsnippet";
2
2
  import { Fragment, useMemo, useTransition } from "react";
3
3
  import { useSearchParams } from "react-router-dom";
4
+ import { TextColorMap } from "../../components/navigation/SidebarBadge.js";
4
5
  import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
5
6
  import type { SchemaObject } from "../../oas/parser/index.js";
6
7
  import { cn } from "../../util/cn.js";
7
8
  import { ColorizedParam } from "./ColorizedParam.js";
8
9
  import { useOasConfig } from "./context.js";
9
10
  import { graphql } from "./graphql/index.js";
10
- import { MethodTextColorMap } from "./MethodBadge.js";
11
11
  import type { OperationListItemResult } from "./OperationList.js";
12
12
  import { PlaygroundDialogWrapper } from "./PlaygroundDialogWrapper.js";
13
13
  import { RequestBodySidecarBox } from "./RequestBodySidecarBox.js";
@@ -71,6 +71,17 @@ export const GetServerQuery = graphql(/* GraphQL */ `
71
71
 
72
72
  const context = { suspense: true };
73
73
 
74
+ const methodToColor = {
75
+ get: TextColorMap.green,
76
+ post: TextColorMap.blue,
77
+ put: TextColorMap.yellow,
78
+ delete: TextColorMap.red,
79
+ patch: TextColorMap.purple,
80
+ options: TextColorMap.indigo,
81
+ head: TextColorMap.gray,
82
+ trace: TextColorMap.gray,
83
+ };
84
+
74
85
  export const Sidecar = ({
75
86
  operation,
76
87
  }: {
@@ -83,7 +94,9 @@ export const Sidecar = ({
83
94
  context,
84
95
  });
85
96
  const methodTextColor =
86
- MethodTextColorMap[operation.method as keyof typeof MethodTextColorMap];
97
+ methodToColor[
98
+ operation.method.toLocaleLowerCase() as keyof typeof methodToColor
99
+ ] ?? TextColorMap.gray;
87
100
 
88
101
  const [searchParams, setSearchParams] = useSearchParams();
89
102
  const [, startTransition] = useTransition();
@@ -1,10 +1,6 @@
1
1
  import { matchPath, useRouteError, type RouteObject } from "react-router-dom";
2
- import {
3
- type DevPortalPlugin,
4
- type PluginNavigationCategory,
5
- } from "../../core/plugins.js";
2
+ import { type DevPortalPlugin } from "../../core/plugins.js";
6
3
  import { graphql } from "./graphql/index.js";
7
- import { MethodBadge } from "./MethodBadge.js";
8
4
  import {
9
5
  Client as UrqlClient,
10
6
  cacheExchange,
@@ -14,10 +10,12 @@ import {
14
10
  import { useQuery } from "@tanstack/react-query";
15
11
  import { CirclePlayIcon, LogInIcon } from "lucide-react";
16
12
  import { createClient } from "zudoku/openapi-worker";
13
+ import type { ResolvedSidebarItem } from "../../../config/validators/ResolvedSidebarSchema.js";
17
14
  import { useAuth } from "../../authentication/hook.js";
18
15
  import { ErrorPage } from "../../components/ErrorPage.js";
19
16
  import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
20
17
  import { Button } from "../../ui/Button.js";
18
+ import { joinPath } from "../../util/joinPath.js";
21
19
  import { OasPluginConfig } from "./interfaces.js";
22
20
  import type { PlaygroundContentProps } from "./playground/Playground.js";
23
21
  import { PlaygroundDialog } from "./playground/PlaygroundDialog.js";
@@ -62,7 +60,7 @@ type InternalOasPluginConfig = { inMemory?: boolean };
62
60
  export const openApiPlugin = (
63
61
  config: OasPluginConfig & InternalOasPluginConfig,
64
62
  ): DevPortalPlugin => {
65
- const basePath = config.path ?? "/reference";
63
+ const basePath = joinPath(config.navigationId ?? "/reference");
66
64
 
67
65
  const client = config.server
68
66
  ? new UrqlClient({
@@ -152,30 +150,26 @@ export const openApiPlugin = (
152
150
 
153
151
  const categories = data.schema.tags
154
152
  .filter((tag) => tag.operations.length > 0)
155
- .map<PluginNavigationCategory>((tag) => ({
156
- path,
153
+ .map<ResolvedSidebarItem>((tag) => ({
154
+ type: "category",
157
155
  label: tag.name ?? "",
158
156
  collapsible: false,
159
- children: tag.operations.map((operation) => ({
160
- path: `#${operation.slug}`,
161
- muted: !!operation.deprecated,
162
- title: operation.summary ?? operation.path,
163
- label: (
164
- <div className="flex flex-1 min-w-0 justify-between gap-2">
165
- <span className="truncate">
166
- {operation.summary ?? operation.path}
167
- </span>
168
- <MethodBadge method={operation.method} />
169
- </div>
170
- ),
157
+ collapsed: false,
158
+ items: tag.operations.map((operation) => ({
159
+ type: "link",
160
+ label: operation.summary ?? operation.path,
161
+ href: `#${operation.slug}`,
162
+ badge: {
163
+ label: operation.method,
164
+ color: "green",
165
+ },
171
166
  })),
172
167
  }));
173
168
 
174
169
  categories.unshift({
175
- path,
170
+ type: "link",
176
171
  label: "Overview",
177
- collapsible: false,
178
- children: [{ path: "#description", label: "Description" }],
172
+ href: "#description",
179
173
  });
180
174
 
181
175
  return categories;
@@ -5,5 +5,5 @@ type OasSource =
5
5
 
6
6
  export type OasPluginConfig = {
7
7
  server?: string;
8
- path?: string;
8
+ navigationId?: string;
9
9
  } & OasSource;
@@ -1,6 +1,26 @@
1
1
  import { useEffect } from "react";
2
2
  import { useLocation } from "react-router-dom";
3
3
  import { useViewportAnchor } from "../components/context/ViewportAnchorContext.js";
4
+ import { DATA_ANCHOR_ATTR } from "../components/navigation/SidebarItem.js";
5
+
6
+ const scrollIntoViewIfNeeded = (
7
+ element: Element | null,
8
+ options: ScrollIntoViewOptions = { block: "center" },
9
+ ) => {
10
+ if (!element) return;
11
+
12
+ const rect = element.getBoundingClientRect();
13
+ const isInView =
14
+ rect.top >= 0 &&
15
+ rect.left >= 0 &&
16
+ rect.bottom <=
17
+ (window.innerHeight || document.documentElement.clientHeight) &&
18
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth);
19
+
20
+ if (isInView) return;
21
+
22
+ element.scrollIntoView(options);
23
+ };
4
24
 
5
25
  export const useScrollToAnchor = () => {
6
26
  const location = useLocation();
@@ -9,30 +29,31 @@ export const useScrollToAnchor = () => {
9
29
  useEffect(() => {
10
30
  if (!location.hash) return;
11
31
 
12
- const hash = location.hash.split("/")[0].slice(1);
32
+ const hash = decodeURIComponent(location.hash.split("/")[0].slice(1));
13
33
 
14
- const element = document.getElementById(decodeURIComponent(hash));
15
- if (element) {
16
- // on page navigation element might be in DOM but not yet scrollable, so wait for a frame
17
- requestAnimationFrame(() => {
34
+ const scrollToElement = () => {
35
+ const element = document.getElementById(hash);
36
+ const link = document.querySelector(`[${DATA_ANCHOR_ATTR}="${hash}"]`);
37
+
38
+ if (element) {
18
39
  element.scrollIntoView();
40
+ scrollIntoViewIfNeeded(link);
19
41
  requestIdleCallback(() => setActiveAnchor(hash));
20
- });
21
- return;
22
- }
42
+ return true;
43
+ }
23
44
 
24
- // on page load, the element might not be available yet
25
- const observer = new MutationObserver((_mutations, obs) => {
26
- const element = document.getElementById(decodeURIComponent(hash));
27
- if (!element) return;
45
+ return false;
46
+ };
28
47
 
29
- element.scrollIntoView();
30
- requestIdleCallback(() => setActiveAnchor(hash));
31
- obs.disconnect();
32
- });
48
+ if (!scrollToElement()) {
49
+ const observer = new MutationObserver((_, obs) => {
50
+ if (!scrollToElement()) return;
51
+ obs.disconnect();
52
+ });
33
53
 
34
- observer.observe(document.body, { childList: true, subtree: true });
54
+ observer.observe(document.body, { childList: true, subtree: true });
35
55
 
36
- return () => observer.disconnect();
56
+ return () => observer.disconnect();
57
+ }
37
58
  }, [location.hash, setActiveAnchor]);
38
59
  };
@@ -1 +0,0 @@
1
- export declare const SideNavigation: () => import("react/jsx-runtime").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef } from "react";
3
- import { useNavigation } from "../context/DevPortalProvider.js";
4
- import { Slotlet } from "../SlotletProvider.js";
5
- import { SideNavigationCategory } from "./SideNavigationCategory.js";
6
- import { SideNavigationWrapper } from "./SideNavigationWrapper.js";
7
- export const SideNavigation = () => {
8
- const navRef = useRef(null);
9
- const navigation = useNavigation();
10
- return (_jsxs(SideNavigationWrapper, { ref: navRef, pushMainContent: navigation.data.items.length > 0, children: [_jsx(Slotlet, { name: "zudoku-before-navigation" }), navigation.data.items.map((category) => (_jsx(SideNavigationCategory, { category: category }, category.label))), _jsx(Slotlet, { name: "zudoku-after-navigation" })] }));
11
- };
12
- //# sourceMappingURL=SideNavigation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SideNavigation.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,OAAO,CACL,MAAC,qBAAqB,IACpB,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,aAEjD,KAAC,OAAO,IAAC,IAAI,EAAC,0BAA0B,GAAG,EAC1C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACvC,KAAC,sBAAsB,IAAsB,QAAQ,EAAE,QAAQ,IAAlC,QAAQ,CAAC,KAAK,CAAwB,CACpE,CAAC,EACF,KAAC,OAAO,IAAC,IAAI,EAAC,yBAAyB,GAAG,IACpB,CACzB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { NavigationCategory } from "../../core/DevPortalContext.js";
2
- export declare const SideNavigationCategory: ({ category, }: {
3
- category: NavigationCategory;
4
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as Collapsible from "@radix-ui/react-collapsible";
3
- import { ChevronRightIcon } from "lucide-react";
4
- import { useLocation } from "react-router-dom";
5
- import { cn } from "../../util/cn.js";
6
- import { joinPath } from "../../util/joinPath.js";
7
- import { useTopNavigationItem } from "../context/DevPortalProvider.js";
8
- import { useViewportAnchor } from "../context/ViewportAnchorContext.js";
9
- import { SideNavigationItem } from "./SideNavigationItem.js";
10
- import { useNavigationCollapsibleState } from "./useNavigationCollapsibleState.js";
11
- import { checkHasActiveItem } from "./util.js";
12
- export const SideNavigationCategory = ({ category, }) => {
13
- const { activeAnchor } = useViewportAnchor();
14
- const navItem = useTopNavigationItem();
15
- const location = useLocation();
16
- const isCollapsible = category.collapsible ?? true;
17
- const collapsibleProps = useNavigationCollapsibleState({
18
- item: category,
19
- path: navItem?.path ?? "",
20
- defaultOpen: () => !isCollapsible ||
21
- category.expanded ||
22
- checkHasActiveItem(category, location.pathname, navItem?.path ?? ""),
23
- });
24
- return (_jsxs(Collapsible.Root, { ...collapsibleProps, children: [category.label.length > 0 ? (_jsx(Collapsible.Trigger, { asChild: isCollapsible, disabled: !isCollapsible, children: _jsxs("h5", { className: cn("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]", isCollapsible ? "hover:bg-accent" : "cursor-auto"), children: [category.label, isCollapsible && (_jsx(ChevronRightIcon, { className: "group-data-[state=open]:rotate-90 transition", size: 16 }))] }) })) : ("Endpoints"), _jsx(Collapsible.Content, { className: "CollapsibleContent -mx-[--padding-nav-item]", children: _jsx("ul", { className: "space-y-0.5 mt-1.5 mb-4 ms-3", children: category.children.map((item, i) => (_jsx(SideNavigationItem, { category: category, item: item, activeAnchor: activeAnchor, currentTopNavItem: navItem, basePath: joinPath(navItem?.path, category.path) }, i))) }) })] }, category.label));
25
- };
26
- //# sourceMappingURL=SideNavigationCategory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SideNavigationCategory.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigationCategory.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,GAGT,EAAE,EAAE;IACH,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC;IAEnD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;QACrD,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;QACzB,WAAW,EAAE,GAAG,EAAE,CAChB,CAAC,aAAa;YACd,QAAQ,CAAC,QAAQ;YACjB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;KACvE,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,WAAW,CAAC,IAAI,OAA0B,gBAAgB,aACxD,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3B,KAAC,WAAW,CAAC,OAAO,IAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,aAAa,YACnE,cACE,SAAS,EAAE,EAAE,CACX,2LAA2L,EAC3L,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAClD,aAEA,QAAQ,CAAC,KAAK,EACd,aAAa,IAAI,CAChB,KAAC,gBAAgB,IACf,SAAS,EAAC,8CAA8C,EACxD,IAAI,EAAE,EAAE,GACR,CACH,IACE,GACe,CACvB,CAAC,CAAC,CAAC,CACF,WAAW,CACZ,EACD,KAAC,WAAW,CAAC,OAAO,IAAC,SAAS,EAAC,6CAA6C,YAE1E,aAAI,SAAS,EAAC,8BAA8B,YACzC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAClC,KAAC,kBAAkB,IAEjB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAL3C,CAAC,CAMN,CACH,CAAC,GACC,GACe,KAnCD,QAAQ,CAAC,KAAK,CAoClB,CACpB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { NavigationCategory, NavigationCategoryItem, NavigationItem } from "../../core/DevPortalContext.js";
2
- export declare const DATA_ANCHOR_ATTR = "data-anchor";
3
- export declare const SideNavigationItem: ({ category, item, activeAnchor, currentTopNavItem, basePath, }: {
4
- category: NavigationCategory;
5
- item: NavigationCategoryItem;
6
- activeAnchor?: string;
7
- currentTopNavItem?: NavigationItem;
8
- basePath?: string;
9
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as Collapsible from "@radix-ui/react-collapsible";
3
- import { cva } from "class-variance-authority";
4
- import { ChevronRightIcon, ExternalLinkIcon } from "lucide-react";
5
- import { NavLink, useLocation } from "react-router-dom";
6
- import { cn } from "../../util/cn.js";
7
- import { joinPath } from "../../util/joinPath.js";
8
- import { AnchorLink } from "../AnchorLink.js";
9
- import { useNavigationCollapsibleState } from "./useNavigationCollapsibleState.js";
10
- import { checkHasActiveItem, isLinkItem, isPathItem } from "./util.js";
11
- const navigationListItem = cva("flex px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent transition-colors duration-300", {
12
- variants: {
13
- isActive: {
14
- true: "text-primary font-medium",
15
- false: "text-foreground/80",
16
- },
17
- isMuted: {
18
- true: "text-foreground/30",
19
- false: "",
20
- },
21
- },
22
- });
23
- export const DATA_ANCHOR_ATTR = "data-anchor";
24
- export const SideNavigationItem = ({ category, item, activeAnchor, currentTopNavItem, basePath = "", }) => {
25
- const currentPath = isPathItem(item) ? joinPath(basePath, item.path) : "";
26
- const location = useLocation();
27
- const collapsibleProps = useNavigationCollapsibleState({
28
- item,
29
- path: currentPath,
30
- defaultOpen: () => checkHasActiveItem(item, location.pathname, basePath),
31
- });
32
- if (isLinkItem(item)) {
33
- const classes = cn("flex items-center gap-2", navigationListItem({
34
- isActive: item.href === location.pathname,
35
- }));
36
- return item.href.startsWith("http") ? (_jsxs("a", { className: classes, href: item.href, target: "_blank", rel: "noopener noreferrer", children: [item.label, _jsx(ExternalLinkIcon, { size: 14 })] })) : (_jsx(NavLink, { className: classes, to: item.href, children: item.label }));
37
- }
38
- const linkContent = (_jsxs("div", { className: "flex justify-between w-full", children: [_jsxs("div", { className: "flex items-center gap-2 truncate w-full", children: [item.icon, typeof item.label !== "string" ? (item.label) : (_jsx("span", { className: "truncate", children: item.label }))] }), item.children && (_jsx(ChevronRightIcon, { size: 16, className: "transition shrink-0 group-data-[state=open]:rotate-90" }))] }));
39
- return (_jsx("li", { title: typeof item.label === "string" ? item.label : item.title, children: item.children ? (_jsxs(Collapsible.Root, { ...collapsibleProps, className: "flex flex-col", children: [_jsx(Collapsible.Trigger, { className: cn("group text-start", navigationListItem({ isActive: false })), children: linkContent }), _jsx(Collapsible.Content, { className: "CollapsibleContent ms-[calc(var(--padding-nav-item)*1.125)]", children: _jsx("ul", { className: "mt-1 border-l ps-1.5", children: item.children.map((child) => (_jsx(SideNavigationItem, { category: category, item: child, activeAnchor: activeAnchor, currentTopNavItem: currentTopNavItem, basePath: currentPath }, isPathItem(child) ? child.path : child.href))) }) })] })) : item.path.startsWith("#") ? (_jsx(AnchorLink, { to: item.path, [DATA_ANCHOR_ATTR]: item.path, className: navigationListItem({
40
- isActive: item.path.slice(1) === activeAnchor,
41
- isMuted: item.muted,
42
- }), children: linkContent })) : (_jsx(NavLink, { className: ({ isActive }) => navigationListItem({ isActive }), to: currentPath, children: linkContent })) }));
43
- };
44
- //# sourceMappingURL=SideNavigationItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SideNavigationItem.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigationItem.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SideNavigationWrapper.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SideNavigationWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAG7C,SAAS,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,GAAG;IACrE,OAAO,CACL,iCAKmB,MAAM,CAAC,eAAe,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,iOAAiO,EACjO,SAAS,CACV,EACD,GAAG,EAAE,GAAG,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { CollapsibleProps } from "@radix-ui/react-collapsible";
2
- import type { NavigationNode } from "../../util/traverseNavigation.js";
3
- export declare const useNavigationCollapsibleState: ({ item, defaultOpen, path, }: {
4
- item: NavigationNode;
5
- defaultOpen: () => boolean;
6
- path: string;
7
- }) => Partial<CollapsibleProps> & {
8
- "data-animate": boolean;
9
- };
@@ -1,28 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { useLocation } from "react-router-dom";
3
- import { checkHasActiveItem } from "./util.js";
4
- export const useNavigationCollapsibleState = ({ item, defaultOpen, path, }) => {
5
- const [open, setOpen] = useState(defaultOpen);
6
- const location = useLocation();
7
- const previousLocationPath = useRef(location.pathname);
8
- const [shouldAnimate, setShouldAnimate] = useState(false);
9
- useEffect(() => {
10
- if (!open && previousLocationPath.current !== location.pathname) {
11
- setOpen(checkHasActiveItem(item, location.pathname, path));
12
- }
13
- previousLocationPath.current = location.pathname;
14
- }, [open, item, path, location.pathname]);
15
- const onOpenChange = () => {
16
- setShouldAnimate(true);
17
- setOpen((prev) => !prev);
18
- };
19
- useEffect(() => {
20
- setShouldAnimate(false);
21
- }, []);
22
- return {
23
- open,
24
- onOpenChange,
25
- "data-animate": shouldAnimate,
26
- };
27
- };
28
- //# sourceMappingURL=useNavigationCollapsibleState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useNavigationCollapsibleState.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/useNavigationCollapsibleState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,IAAI,EACJ,WAAW,EACX,IAAI,GAKL,EAA2D,EAAE;IAC5D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAChE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,oBAAoB,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,cAAc,EAAE,aAAa;KAC9B,CAAC;AACJ,CAAC,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { HrefNavigationCategoryItem, PathNavigationCategoryItem } from "../../core/DevPortalContext.js";
2
- import { type NavigationNode } from "../../util/traverseNavigation.js";
3
- export declare const isPathItem: (item: NavigationNode) => item is PathNavigationCategoryItem;
4
- export declare const isLinkItem: (item: NavigationNode) => item is HrefNavigationCategoryItem;
5
- /**
6
- * Recursively checks if the current item or any of its children are active.
7
- */
8
- export declare const checkHasActiveItem: (item: NavigationNode, locationPath: string, basePath: string) => boolean;
@@ -1,15 +0,0 @@
1
- import { matchPath } from "react-router-dom";
2
- import { traverseNavigationNode, } from "../../util/traverseNavigation.js";
3
- export const isPathItem = (item) => "path" in item;
4
- export const isLinkItem = (item) => "href" in item;
5
- /**
6
- * Recursively checks if the current item or any of its children are active.
7
- */
8
- export const checkHasActiveItem = (item, locationPath, basePath) => {
9
- return Boolean(traverseNavigationNode(item, (node, fullPath) => {
10
- if (isPathItem(node) && matchPath(fullPath, locationPath)) {
11
- return true;
12
- }
13
- }, basePath));
14
- };
15
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EACL,sBAAsB,GAEvB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAoB,EACgB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAoB,EACgB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAoB,EACpB,YAAoB,EACpB,QAAgB,EAChB,EAAE;IACF,OAAO,OAAO,CACZ,sBAAsB,CACpB,IAAI,EACJ,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QACjB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EACD,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- export declare const MethodTextColorMap: {
2
- get: string;
3
- post: string;
4
- put: string;
5
- delete: string;
6
- patch: string;
7
- options: string;
8
- head: string;
9
- trace: string;
10
- };
11
- export declare const MethodBadge: ({ method }: {
12
- method: string;
13
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../../util/cn.js";
3
- export const MethodTextColorMap = {
4
- get: "text-green-600",
5
- post: "text-sky-600",
6
- put: "text-yellow-600",
7
- delete: "text-red-600",
8
- patch: "text-purple-600",
9
- options: "text-indigo-600",
10
- head: "text-gray-600",
11
- trace: "text-gray-600",
12
- };
13
- const MethodColorMap = {
14
- get: "bg-green-400 dark:bg-green-800",
15
- post: "bg-sky-400 dark:bg-sky-800",
16
- put: "bg-yellow-400 dark:bg-yellow-800",
17
- delete: "bg-red-400 dark:bg-red-800",
18
- patch: "bg-purple-400 dark:bg-purple-600",
19
- options: "bg-indigo-400 dark:bg-indigo-600",
20
- head: "bg-gray-400 dark:bg-gray-600",
21
- trace: "bg-gray-400 dark:bg-gray-600",
22
- };
23
- export const MethodBadge = ({ method }) => {
24
- return (_jsx("span", { className: cn("mt-0.5 flex items-center duration-200 transition-opacity text-center uppercase font-mono text-[0.65rem] font-bold rounded text-background dark:text-zinc-50 h-4 px-1", MethodColorMap[method]), children: method }));
25
- };
26
- //# sourceMappingURL=MethodBadge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MethodBadge.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/MethodBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,eAAe;CACvB,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,GAAG,EAAE,gCAAgC;IACrC,IAAI,EAAE,4BAA4B;IAClC,GAAG,EAAE,kCAAkC;IACvC,MAAM,EAAE,4BAA4B;IACpC,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,8BAA8B;IACpC,KAAK,EAAE,8BAA8B;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE;IAC5D,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,sKAAsK,EACtK,cAAc,CAAC,MAAqC,CAAC,CACtD,YAEA,MAAM,GACF,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { NavigationCategory, NavigationCategoryItem, NavigationItem } from "../core/DevPortalContext.js";
2
- export type NavigationNode = NavigationCategoryItem | NavigationCategory;
3
- type Callback<T> = (node: NavigationNode, fullPath: string, parentNodes: NavigationNode[]) => T | undefined;
4
- export declare const traverseNavigationNode: <T>(node: NavigationNode, callback: Callback<T>, parentPath: string, parentNodes?: NavigationNode[]) => T | undefined;
5
- export declare const traverseNavigation: <T>(navItem: NavigationItem, callback: Callback<T>) => T | undefined;
6
- export {};
@@ -1,30 +0,0 @@
1
- import { isPathItem } from "../components/navigation/util.js";
2
- import { joinPath } from "./joinPath.js";
3
- export const traverseNavigationNode = (node, callback, parentPath, parentNodes = []) => {
4
- const newPath = isPathItem(node)
5
- ? joinPath(parentPath, node.path)
6
- : parentPath;
7
- const result = callback(node, newPath, parentNodes);
8
- if (result !== undefined)
9
- return result;
10
- if ("children" in node && node.children) {
11
- const newParentNodes = [...parentNodes, node];
12
- for (const child of node.children) {
13
- const childResult = traverseNavigationNode(child, callback, newPath, newParentNodes);
14
- if (childResult !== undefined)
15
- return childResult;
16
- }
17
- }
18
- return undefined;
19
- };
20
- export const traverseNavigation = (navItem, callback) => {
21
- if (navItem.categories) {
22
- for (const category of navItem.categories) {
23
- const result = traverseNavigationNode(category, callback, navItem.path);
24
- if (result !== undefined)
25
- return result;
26
- }
27
- }
28
- return undefined;
29
- };
30
- //# sourceMappingURL=traverseNavigation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverseNavigation.js","sourceRoot":"","sources":["../../../src/lib/util/traverseNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAM9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAoB,EACpB,QAAqB,EACrB,UAAkB,EAClB,cAAgC,EAAE,EACnB,EAAE;IACjB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;QACjC,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAEpD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,sBAAsB,CACxC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,cAAc,CACf,CAAC;YACF,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,WAAW,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAuB,EACvB,QAAqB,EACN,EAAE;IACjB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}