docusaurus-theme-openapi-docs 0.0.0-1241 → 0.0.0-1249

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.
@@ -0,0 +1,113 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ .openapi-schema-expansion {
9
+ position: relative;
10
+ display: inline-flex;
11
+ align-items: center;
12
+ margin-left: auto;
13
+ }
14
+
15
+ .openapi-schema-expansion__trigger {
16
+ appearance: none;
17
+ background: transparent;
18
+ border: none;
19
+ border-radius: var(--ifm-global-radius);
20
+ padding: 0;
21
+ width: 22px;
22
+ height: 22px;
23
+ flex: 0 0 22px;
24
+ display: inline-flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ color: var(--ifm-color-emphasis-600);
28
+ line-height: 0;
29
+ opacity: 0.7;
30
+ transition:
31
+ opacity 0.12s ease,
32
+ background-color 0.12s ease,
33
+ color 0.12s ease;
34
+
35
+ &:hover {
36
+ opacity: 1;
37
+ background-color: var(--ifm-color-emphasis-200);
38
+ color: var(--ifm-color-emphasis-900);
39
+ }
40
+
41
+ &:focus-visible {
42
+ outline: 2px solid var(--ifm-color-primary);
43
+ outline-offset: 2px;
44
+ opacity: 1;
45
+ }
46
+
47
+ &[aria-expanded="true"] {
48
+ opacity: 1;
49
+ background-color: var(--ifm-color-emphasis-200);
50
+ color: var(--ifm-color-emphasis-900);
51
+ }
52
+ }
53
+
54
+ .openapi-schema-expansion__popover {
55
+ position: fixed;
56
+ z-index: 1000;
57
+ display: inline-flex;
58
+ align-items: center;
59
+ gap: 2px;
60
+ padding: 3px;
61
+ background-color: var(--ifm-background-surface-color);
62
+ border: 1px solid var(--ifm-color-emphasis-300);
63
+ border-radius: var(--ifm-global-radius);
64
+ box-shadow: var(--ifm-global-shadow-md);
65
+ white-space: nowrap;
66
+ }
67
+
68
+ .openapi-schema-expansion__option {
69
+ appearance: none;
70
+ background: transparent;
71
+ border: none;
72
+ border-radius: calc(var(--ifm-global-radius) - 2px);
73
+ padding: 2px 8px;
74
+ font-size: 0.8rem;
75
+ line-height: 1.4;
76
+ color: var(--ifm-color-emphasis-800);
77
+ transition:
78
+ background-color 0.12s ease,
79
+ color 0.12s ease;
80
+
81
+ &:hover {
82
+ background-color: var(--ifm-color-emphasis-200);
83
+ }
84
+
85
+ &:focus-visible {
86
+ outline: 2px solid var(--ifm-color-primary);
87
+ outline-offset: 1px;
88
+ }
89
+ }
90
+
91
+ .openapi-schema-expansion__option--active {
92
+ background-color: var(--ifm-color-primary);
93
+ color: var(--ifm-color-white);
94
+
95
+ &:hover {
96
+ background-color: var(--ifm-color-primary-dark);
97
+ }
98
+ }
99
+
100
+ .openapi-markdown__details-summary--with-control {
101
+ display: flex !important;
102
+ align-items: center;
103
+ gap: 0.5rem;
104
+
105
+ > h3,
106
+ > strong {
107
+ margin-bottom: 0;
108
+ display: inline-flex;
109
+ align-items: center;
110
+ flex-wrap: wrap;
111
+ gap: 0.4rem;
112
+ }
113
+ }
@@ -0,0 +1,154 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ import React, {
9
+ createContext,
10
+ useCallback,
11
+ useContext,
12
+ useEffect,
13
+ useMemo,
14
+ useState,
15
+ } from "react";
16
+
17
+ import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
18
+ import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types";
19
+
20
+ export const SCHEMA_EXPANSION_STORAGE_KEY =
21
+ "docusaurus-openapi-schema-expansion-level";
22
+
23
+ export interface SchemaExpansionConfig {
24
+ enabled: boolean;
25
+ defaultLevel: number;
26
+ max: number;
27
+ persist: boolean;
28
+ }
29
+
30
+ interface SchemaExpansionContextValue {
31
+ config: SchemaExpansionConfig;
32
+ level: number;
33
+ setLevel: (next: number) => void;
34
+ }
35
+
36
+ const DEFAULT_CONFIG: SchemaExpansionConfig = {
37
+ enabled: false,
38
+ defaultLevel: 0,
39
+ max: 4,
40
+ persist: true,
41
+ };
42
+
43
+ const SchemaExpansionContext = createContext<SchemaExpansionContextValue>({
44
+ config: DEFAULT_CONFIG,
45
+ level: 0,
46
+ setLevel: () => {},
47
+ });
48
+
49
+ const SchemaDepthContext = createContext<number>(0);
50
+
51
+ export function normalizeLevel(value: number | "all" | undefined): number {
52
+ if (value === "all") return Infinity;
53
+ if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
54
+ return Math.floor(value);
55
+ }
56
+ return 0;
57
+ }
58
+
59
+ function readConfig(
60
+ themeConfig: ThemeConfig | undefined
61
+ ): SchemaExpansionConfig {
62
+ const raw = themeConfig?.api?.schemaExpansion;
63
+ if (!raw) return DEFAULT_CONFIG;
64
+ const enabled = raw.enabled ?? false;
65
+ return {
66
+ enabled,
67
+ defaultLevel: normalizeLevel(raw.default),
68
+ max: typeof raw.max === "number" && raw.max > 0 ? Math.floor(raw.max) : 4,
69
+ // Persistence only matters when the reader can change the level via the
70
+ // UI control. When the control is hidden, fall back to the configured
71
+ // default on every visit so it isn't shadowed by a stale localStorage
72
+ // value from a session where the control used to be enabled.
73
+ persist: enabled ? (raw.persist ?? true) : false,
74
+ };
75
+ }
76
+
77
+ function readPersistedLevel(): number | undefined {
78
+ if (typeof window === "undefined") return undefined;
79
+ try {
80
+ const stored = window.localStorage.getItem(SCHEMA_EXPANSION_STORAGE_KEY);
81
+ if (stored === null) return undefined;
82
+ if (stored === "all") return Infinity;
83
+ const parsed = parseInt(stored, 10);
84
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;
85
+ } catch {
86
+ return undefined;
87
+ }
88
+ }
89
+
90
+ function writePersistedLevel(level: number): void {
91
+ if (typeof window === "undefined") return;
92
+ try {
93
+ const value = level === Infinity ? "all" : String(level);
94
+ window.localStorage.setItem(SCHEMA_EXPANSION_STORAGE_KEY, value);
95
+ } catch {
96
+ // ignore quota / disabled storage
97
+ }
98
+ }
99
+
100
+ export const SchemaExpansionProvider: React.FC<{
101
+ children: React.ReactNode;
102
+ }> = ({ children }) => {
103
+ const { siteConfig } = useDocusaurusContext();
104
+ const themeConfig = siteConfig.themeConfig as ThemeConfig | undefined;
105
+ const config = useMemo(() => readConfig(themeConfig), [themeConfig]);
106
+
107
+ const [level, setLevelState] = useState<number>(config.defaultLevel);
108
+
109
+ useEffect(() => {
110
+ if (!config.persist) return;
111
+ const persisted = readPersistedLevel();
112
+ if (persisted !== undefined) {
113
+ setLevelState(persisted);
114
+ }
115
+ }, [config.persist]);
116
+
117
+ const setLevel = useCallback(
118
+ (next: number) => {
119
+ setLevelState(next);
120
+ if (config.persist) {
121
+ writePersistedLevel(next);
122
+ }
123
+ },
124
+ [config.persist]
125
+ );
126
+
127
+ const value = useMemo(
128
+ () => ({ config, level, setLevel }),
129
+ [config, level, setLevel]
130
+ );
131
+
132
+ return (
133
+ <SchemaExpansionContext.Provider value={value}>
134
+ {children}
135
+ </SchemaExpansionContext.Provider>
136
+ );
137
+ };
138
+
139
+ export const SchemaDepthProvider: React.FC<{
140
+ depth: number;
141
+ children: React.ReactNode;
142
+ }> = ({ depth, children }) => (
143
+ <SchemaDepthContext.Provider value={depth}>
144
+ {children}
145
+ </SchemaDepthContext.Provider>
146
+ );
147
+
148
+ export function useSchemaExpansion(): SchemaExpansionContextValue {
149
+ return useContext(SchemaExpansionContext);
150
+ }
151
+
152
+ export function useSchemaDepth(): number {
153
+ return useContext(SchemaDepthContext);
154
+ }
@@ -0,0 +1,237 @@
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ * ========================================================================== */
7
+
8
+ import React, {
9
+ useCallback,
10
+ useEffect,
11
+ useId,
12
+ useLayoutEffect,
13
+ useMemo,
14
+ useRef,
15
+ useState,
16
+ } from "react";
17
+
18
+ import { translate } from "@docusaurus/Translate";
19
+ import { OPENAPI_SCHEMA_EXPANSION } from "@theme/translationIds";
20
+ import clsx from "clsx";
21
+
22
+ import { useSchemaExpansion } from "./context";
23
+
24
+ export {
25
+ SchemaExpansionProvider,
26
+ SchemaDepthProvider,
27
+ useSchemaExpansion,
28
+ useSchemaDepth,
29
+ normalizeLevel,
30
+ SCHEMA_EXPANSION_STORAGE_KEY,
31
+ } from "./context";
32
+
33
+ const ALL_VALUE = Number.POSITIVE_INFINITY;
34
+
35
+ const ExpandIcon: React.FC = () => (
36
+ <svg
37
+ aria-hidden="true"
38
+ focusable="false"
39
+ width="14"
40
+ height="14"
41
+ viewBox="0 0 16 16"
42
+ fill="none"
43
+ stroke="currentColor"
44
+ strokeWidth="1.6"
45
+ strokeLinecap="round"
46
+ strokeLinejoin="round"
47
+ >
48
+ <polyline points="4 6 8 2 12 6" />
49
+ <polyline points="4 10 8 14 12 10" />
50
+ </svg>
51
+ );
52
+
53
+ const SchemaExpansionControl: React.FC = () => {
54
+ const { config, level, setLevel } = useSchemaExpansion();
55
+ const [open, setOpen] = useState(false);
56
+ const [coords, setCoords] = useState<{ top: number; right: number } | null>(
57
+ null
58
+ );
59
+ const buttonRef = useRef<HTMLButtonElement | null>(null);
60
+ const popoverRef = useRef<HTMLDivElement | null>(null);
61
+ const optionRefs = useRef<Array<HTMLButtonElement | null>>([]);
62
+ const popoverId = useId();
63
+
64
+ const options = useMemo(() => {
65
+ const numbers = Array.from({ length: config.max + 1 }, (_, i) => i);
66
+ return [...numbers, ALL_VALUE];
67
+ }, [config.max]);
68
+
69
+ const activeIndex = useMemo(() => {
70
+ const idx = options.indexOf(level);
71
+ return idx >= 0 ? idx : 0;
72
+ }, [options, level]);
73
+
74
+ const updatePosition = useCallback(() => {
75
+ if (!buttonRef.current || typeof window === "undefined") return;
76
+ const rect = buttonRef.current.getBoundingClientRect();
77
+ setCoords({
78
+ top: rect.bottom + 4,
79
+ right: window.innerWidth - rect.right,
80
+ });
81
+ }, []);
82
+
83
+ useLayoutEffect(() => {
84
+ if (!open) return;
85
+ updatePosition();
86
+ const handleScroll = () => setOpen(false);
87
+ window.addEventListener("scroll", handleScroll, true);
88
+ window.addEventListener("resize", updatePosition);
89
+ return () => {
90
+ window.removeEventListener("scroll", handleScroll, true);
91
+ window.removeEventListener("resize", updatePosition);
92
+ };
93
+ }, [open, updatePosition]);
94
+
95
+ useEffect(() => {
96
+ if (!open) return;
97
+ optionRefs.current[activeIndex]?.focus();
98
+ }, [open, activeIndex]);
99
+
100
+ useEffect(() => {
101
+ if (!open) return;
102
+ const handlePointer = (event: MouseEvent) => {
103
+ const target = event.target as Node;
104
+ if (buttonRef.current?.contains(target)) return;
105
+ if (popoverRef.current?.contains(target)) return;
106
+ setOpen(false);
107
+ };
108
+ const handleKey = (event: KeyboardEvent) => {
109
+ if (event.key === "Escape") {
110
+ event.stopPropagation();
111
+ setOpen(false);
112
+ buttonRef.current?.focus();
113
+ }
114
+ };
115
+ document.addEventListener("mousedown", handlePointer);
116
+ document.addEventListener("keydown", handleKey);
117
+ return () => {
118
+ document.removeEventListener("mousedown", handlePointer);
119
+ document.removeEventListener("keydown", handleKey);
120
+ };
121
+ }, [open]);
122
+
123
+ const choose = useCallback(
124
+ (next: number) => {
125
+ setLevel(next);
126
+ setOpen(false);
127
+ buttonRef.current?.focus();
128
+ },
129
+ [setLevel]
130
+ );
131
+
132
+ const onMenuKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
133
+ if (event.key !== "ArrowRight" && event.key !== "ArrowLeft") return;
134
+ event.preventDefault();
135
+ const current = optionRefs.current.findIndex(
136
+ (el) => el === document.activeElement
137
+ );
138
+ if (current < 0) return;
139
+ const next =
140
+ event.key === "ArrowRight"
141
+ ? (current + 1) % options.length
142
+ : (current - 1 + options.length) % options.length;
143
+ optionRefs.current[next]?.focus();
144
+ };
145
+
146
+ if (!config.enabled) return null;
147
+
148
+ const buttonLabel = translate({
149
+ id: OPENAPI_SCHEMA_EXPANSION.BUTTON_LABEL,
150
+ message: "Schema expansion depth",
151
+ description: "Aria/title tooltip for the schema expansion icon button",
152
+ });
153
+ const menuLabel = translate({
154
+ id: OPENAPI_SCHEMA_EXPANSION.MENU_LABEL,
155
+ message: "Schema expansion depth options",
156
+ description: "Accessible label for the expansion options menu",
157
+ });
158
+ const allLabel = translate({
159
+ id: OPENAPI_SCHEMA_EXPANSION.ALL,
160
+ message: "All",
161
+ description: "Label for the expand-all option",
162
+ });
163
+
164
+ return (
165
+ <span className="openapi-schema-expansion">
166
+ <button
167
+ ref={buttonRef}
168
+ type="button"
169
+ className="openapi-schema-expansion__trigger"
170
+ aria-haspopup="menu"
171
+ aria-expanded={open}
172
+ aria-controls={open ? popoverId : undefined}
173
+ aria-label={buttonLabel}
174
+ title={buttonLabel}
175
+ onClick={(event) => {
176
+ event.preventDefault();
177
+ event.stopPropagation();
178
+ setOpen((prev) => !prev);
179
+ }}
180
+ >
181
+ <ExpandIcon />
182
+ </button>
183
+ {open && coords && (
184
+ <div
185
+ ref={popoverRef}
186
+ id={popoverId}
187
+ role="menu"
188
+ aria-label={menuLabel}
189
+ className="openapi-schema-expansion__popover"
190
+ style={{ top: coords.top, right: coords.right }}
191
+ onKeyDown={onMenuKeyDown}
192
+ onClick={(event) => {
193
+ event.preventDefault();
194
+ event.stopPropagation();
195
+ }}
196
+ >
197
+ {options.map((value, index) => {
198
+ const isAll = value === ALL_VALUE;
199
+ const label = isAll ? allLabel : String(value);
200
+ const optionAriaLabel = isAll
201
+ ? allLabel
202
+ : translate(
203
+ {
204
+ id: OPENAPI_SCHEMA_EXPANSION.DEPTH_OPTION,
205
+ message: "Expand to depth {depth}",
206
+ description: "Accessible label for a depth option",
207
+ },
208
+ { depth: value }
209
+ );
210
+ const isActive = level === value;
211
+ return (
212
+ <button
213
+ key={isAll ? "all" : value}
214
+ ref={(el) => {
215
+ optionRefs.current[index] = el;
216
+ }}
217
+ type="button"
218
+ role="menuitemradio"
219
+ aria-checked={isActive}
220
+ aria-label={optionAriaLabel}
221
+ tabIndex={index === activeIndex ? 0 : -1}
222
+ className={clsx("openapi-schema-expansion__option", {
223
+ "openapi-schema-expansion__option--active": isActive,
224
+ })}
225
+ onClick={() => choose(value)}
226
+ >
227
+ {label}
228
+ </button>
229
+ );
230
+ })}
231
+ </div>
232
+ )}
233
+ </span>
234
+ );
235
+ };
236
+
237
+ export default SchemaExpansionControl;
@@ -32,6 +32,7 @@
32
32
  /* Schema Styling */
33
33
  @use "./ParamsItem/ParamsItem";
34
34
  @use "./SchemaItem/SchemaItem";
35
+ @use "./SchemaExpansion/SchemaExpansion";
35
36
  /* Tabs Styling */
36
37
  @use "./ApiTabs/ApiTabs";
37
38
  @use "./DiscriminatorTabs/DiscriminatorTabs";
@@ -78,6 +78,13 @@ export const OPENAPI_SCHEMA = {
78
78
  NO_SCHEMA: "theme.openapi.schema.noSchema",
79
79
  };
80
80
 
81
+ export const OPENAPI_SCHEMA_EXPANSION = {
82
+ BUTTON_LABEL: "theme.openapi.schema.expansion.button",
83
+ MENU_LABEL: "theme.openapi.schema.expansion.menu",
84
+ ALL: "theme.openapi.schema.expansion.all",
85
+ DEPTH_OPTION: "theme.openapi.schema.expansion.depthOption",
86
+ };
87
+
81
88
  export const OPENAPI_SCHEMA_ITEM = {
82
89
  CHARACTERS: "theme.openapi.schemaItem.characters",
83
90
  NON_EMPTY: "theme.openapi.schemaItem.nonEmpty",
package/src/types.d.ts CHANGED
@@ -34,6 +34,24 @@ export interface ThemeConfig {
34
34
  * - `"include"`: Always send cookies, even for cross-origin requests
35
35
  */
36
36
  requestCredentials?: "omit" | "same-origin" | "include";
37
+ /**
38
+ * Controls automatic expansion of nested schema trees in request/response
39
+ * documentation. Inspired by Redoc's `schemaExpansionLevel`.
40
+ *
41
+ * `default` applies whether or not `enabled` is `true` — set
42
+ * `{ default: 1 }` alone to auto-expand the first level on every page
43
+ * without rendering the depth control.
44
+ */
45
+ schemaExpansion?: {
46
+ /** Render an interactive depth control next to each schema header so readers can change the depth at view time. Defaults to `false`. */
47
+ enabled?: boolean;
48
+ /** Initial expansion depth applied on every page load. Use `"all"` to expand everything. Defaults to `0` (all collapsed). */
49
+ default?: number | "all";
50
+ /** Highest numeric depth offered by the UI control. Ignored when `enabled` is `false`. Defaults to `4`. */
51
+ max?: number;
52
+ /** Persist the reader's selected depth in `localStorage`. Only meaningful when `enabled` is `true`; defaults to `true` in that case. */
53
+ persist?: boolean;
54
+ };
37
55
  };
38
56
  }
39
57
 
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/plugin-content-docs.d.ts","./src/postman-code-generators.d.ts","./src/react-magic-dropzone.d.ts","./src/theme-classic.d.ts","./src/theme-openapi.d.ts","./src/types.d.ts","./src/markdown/createDescription.ts","./src/markdown/schema.ts","./src/markdown/utils.test.ts","./src/markdown/utils.ts","./src/theme/translationIds.ts","./src/theme/ApiExplorer/buildPostmanRequest.ts","./src/theme/ApiExplorer/index.tsx","./src/theme/ApiExplorer/persistenceMiddleware.ts","./src/theme/ApiExplorer/storage-utils.ts","./src/theme/ApiExplorer/Accept/index.tsx","./src/theme/ApiExplorer/Accept/slice.ts","./src/theme/ApiExplorer/ApiCodeBlock/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx","./src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx","./src/theme/ApiExplorer/Authorization/auth-types.ts","./src/theme/ApiExplorer/Authorization/index.tsx","./src/theme/ApiExplorer/Authorization/slice.ts","./src/theme/ApiExplorer/Body/index.tsx","./src/theme/ApiExplorer/Body/json2xml.d.ts","./src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts","./src/theme/ApiExplorer/Body/slice.ts","./src/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.tsx","./src/theme/ApiExplorer/Body/FormBodyItem/index.tsx","./src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts","./src/theme/ApiExplorer/CodeSnippets/index.tsx","./src/theme/ApiExplorer/CodeSnippets/languages.ts","./src/theme/ApiExplorer/CodeTabs/index.tsx","./src/theme/ApiExplorer/ContentType/index.tsx","./src/theme/ApiExplorer/ContentType/slice.ts","./src/theme/ApiExplorer/EncodingSelection/slice.ts","./src/theme/ApiExplorer/EncodingSelection/useResolvedEncoding.ts","./src/theme/ApiExplorer/Export/index.tsx","./src/theme/ApiExplorer/FloatingButton/index.tsx","./src/theme/ApiExplorer/FormFileUpload/index.tsx","./src/theme/ApiExplorer/FormItem/index.tsx","./src/theme/ApiExplorer/FormLabel/index.tsx","./src/theme/ApiExplorer/FormMultiSelect/index.tsx","./src/theme/ApiExplorer/FormSelect/index.tsx","./src/theme/ApiExplorer/FormTextInput/index.tsx","./src/theme/ApiExplorer/LiveEditor/index.tsx","./src/theme/ApiExplorer/MethodEndpoint/index.tsx","./src/theme/ApiExplorer/ParamOptions/index.tsx","./src/theme/ApiExplorer/ParamOptions/slice.ts","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx","./src/theme/ApiExplorer/Request/index.tsx","./src/theme/ApiExplorer/Request/makeRequest.ts","./src/theme/ApiExplorer/Response/index.tsx","./src/theme/ApiExplorer/Response/slice.ts","./src/theme/ApiExplorer/SchemaSelection/index.ts","./src/theme/ApiExplorer/SchemaSelection/slice.ts","./src/theme/ApiExplorer/SecuritySchemes/index.tsx","./src/theme/ApiExplorer/Server/index.tsx","./src/theme/ApiExplorer/Server/slice.ts","./src/theme/ApiItem/hooks.ts","./src/theme/ApiItem/index.tsx","./src/theme/ApiItem/store.ts","./src/theme/ApiItem/Layout/index.tsx","./src/theme/ApiLogo/index.tsx","./src/theme/ApiTabs/index.tsx","./src/theme/ArrayBrackets/index.tsx","./src/theme/CodeSamples/index.tsx","./src/theme/DiscriminatorTabs/index.tsx","./src/theme/Example/index.tsx","./src/theme/Markdown/index.d.ts","./src/theme/MimeTabs/index.tsx","./src/theme/OperationTabs/index.tsx","./src/theme/ParamsDetails/index.tsx","./src/theme/ParamsItem/index.tsx","./src/theme/RequestSchema/index.tsx","./src/theme/ResponseExamples/index.tsx","./src/theme/ResponseHeaders/index.tsx","./src/theme/ResponseSchema/index.tsx","./src/theme/Schema/index.tsx","./src/theme/SchemaItem/index.tsx","./src/theme/SchemaTabs/index.tsx","./src/theme/SkeletonLoader/index.tsx","./src/theme/StatusCodes/index.tsx"],"version":"5.9.3"}
1
+ {"root":["./src/index.ts","./src/plugin-content-docs.d.ts","./src/postman-code-generators.d.ts","./src/react-magic-dropzone.d.ts","./src/theme-classic.d.ts","./src/theme-openapi.d.ts","./src/types.d.ts","./src/markdown/createDescription.ts","./src/markdown/schema.ts","./src/markdown/utils.test.ts","./src/markdown/utils.ts","./src/theme/translationIds.ts","./src/theme/ApiExplorer/buildPostmanRequest.ts","./src/theme/ApiExplorer/index.tsx","./src/theme/ApiExplorer/persistenceMiddleware.ts","./src/theme/ApiExplorer/storage-utils.ts","./src/theme/ApiExplorer/Accept/index.tsx","./src/theme/ApiExplorer/Accept/slice.ts","./src/theme/ApiExplorer/ApiCodeBlock/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Container/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/Element.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Content/String.tsx","./src/theme/ApiExplorer/ApiCodeBlock/CopyButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExitButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/ExpandButton/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/Line/index.tsx","./src/theme/ApiExplorer/ApiCodeBlock/WordWrapButton/index.tsx","./src/theme/ApiExplorer/Authorization/auth-types.ts","./src/theme/ApiExplorer/Authorization/index.tsx","./src/theme/ApiExplorer/Authorization/slice.ts","./src/theme/ApiExplorer/Body/index.tsx","./src/theme/ApiExplorer/Body/json2xml.d.ts","./src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts","./src/theme/ApiExplorer/Body/slice.ts","./src/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.tsx","./src/theme/ApiExplorer/Body/FormBodyItem/index.tsx","./src/theme/ApiExplorer/CodeSnippets/code-snippets-types.ts","./src/theme/ApiExplorer/CodeSnippets/index.tsx","./src/theme/ApiExplorer/CodeSnippets/languages.ts","./src/theme/ApiExplorer/CodeTabs/index.tsx","./src/theme/ApiExplorer/ContentType/index.tsx","./src/theme/ApiExplorer/ContentType/slice.ts","./src/theme/ApiExplorer/EncodingSelection/slice.ts","./src/theme/ApiExplorer/EncodingSelection/useResolvedEncoding.ts","./src/theme/ApiExplorer/Export/index.tsx","./src/theme/ApiExplorer/FloatingButton/index.tsx","./src/theme/ApiExplorer/FormFileUpload/index.tsx","./src/theme/ApiExplorer/FormItem/index.tsx","./src/theme/ApiExplorer/FormLabel/index.tsx","./src/theme/ApiExplorer/FormMultiSelect/index.tsx","./src/theme/ApiExplorer/FormSelect/index.tsx","./src/theme/ApiExplorer/FormTextInput/index.tsx","./src/theme/ApiExplorer/LiveEditor/index.tsx","./src/theme/ApiExplorer/MethodEndpoint/index.tsx","./src/theme/ApiExplorer/ParamOptions/index.tsx","./src/theme/ApiExplorer/ParamOptions/slice.ts","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx","./src/theme/ApiExplorer/ParamOptions/ParamFormItems/ParamTextFormItem.tsx","./src/theme/ApiExplorer/Request/index.tsx","./src/theme/ApiExplorer/Request/makeRequest.ts","./src/theme/ApiExplorer/Response/index.tsx","./src/theme/ApiExplorer/Response/slice.ts","./src/theme/ApiExplorer/SchemaSelection/index.ts","./src/theme/ApiExplorer/SchemaSelection/slice.ts","./src/theme/ApiExplorer/SecuritySchemes/index.tsx","./src/theme/ApiExplorer/Server/index.tsx","./src/theme/ApiExplorer/Server/slice.ts","./src/theme/ApiItem/hooks.ts","./src/theme/ApiItem/index.tsx","./src/theme/ApiItem/store.ts","./src/theme/ApiItem/Layout/index.tsx","./src/theme/ApiLogo/index.tsx","./src/theme/ApiTabs/index.tsx","./src/theme/ArrayBrackets/index.tsx","./src/theme/CodeSamples/index.tsx","./src/theme/DiscriminatorTabs/index.tsx","./src/theme/Example/index.tsx","./src/theme/Markdown/index.d.ts","./src/theme/MimeTabs/index.tsx","./src/theme/OperationTabs/index.tsx","./src/theme/ParamsDetails/index.tsx","./src/theme/ParamsItem/index.tsx","./src/theme/RequestSchema/index.tsx","./src/theme/ResponseExamples/index.tsx","./src/theme/ResponseHeaders/index.tsx","./src/theme/ResponseSchema/index.tsx","./src/theme/Schema/index.tsx","./src/theme/SchemaExpansion/context.tsx","./src/theme/SchemaExpansion/index.tsx","./src/theme/SchemaItem/index.tsx","./src/theme/SchemaTabs/index.tsx","./src/theme/SkeletonLoader/index.tsx","./src/theme/StatusCodes/index.tsx"],"version":"5.9.3"}