@redocly/api-docs 0.2.0-next.4 → 0.2.0-next.6

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 (136) hide show
  1. package/lib/RedocStandalone.d.ts +38 -0
  2. package/lib/RedocStandalone.js +1 -0
  3. package/lib/RedoclyApiDocs.js +1 -1
  4. package/lib/RedoclyApiDocsStandalone.d.ts +2 -0
  5. package/lib/adapters/asyncapi/items/overview/content.js +1 -1
  6. package/lib/adapters/graphql/utils/createApiItem.js +1 -1
  7. package/lib/adapters/helpers.d.ts +2 -0
  8. package/lib/adapters/helpers.js +1 -1
  9. package/lib/adapters/openapi/build-code-sample-source.d.ts +1 -1
  10. package/lib/adapters/openapi/build-code-sample-source.js +1 -1
  11. package/lib/adapters/openapi/configure/merge-utils.d.ts +1 -1
  12. package/lib/adapters/openapi/index.js +1 -1
  13. package/lib/adapters/openapi/items/operation/content.js +1 -1
  14. package/lib/adapters/openapi/items/operation/item.js +1 -1
  15. package/lib/adapters/openapi/items/overview/content.js +1 -1
  16. package/lib/adapters/openapi/store.js +1 -1
  17. package/lib/adapters/openapi/utils/merge-mock-server.d.ts +2 -2
  18. package/lib/adapters/utils/markdoc.d.ts +4 -1
  19. package/lib/adapters/utils/markdoc.js +1 -1
  20. package/lib/components/ErrorBoundary.d.ts +4 -2
  21. package/lib/components/ErrorBoundary.js +1 -1
  22. package/lib/components/Header/HeaderItem.js +1 -1
  23. package/lib/components/ItemContent/sections/MessagesSection.js +1 -1
  24. package/lib/components/Schema/styled.js +4 -4
  25. package/lib/components/Schema/views/ArrayRenderer.js +1 -1
  26. package/lib/components/Search/index.d.ts +15 -0
  27. package/lib/components/Search/index.js +1 -0
  28. package/lib/components/Security/styled.js +7 -7
  29. package/lib/components/StickySidebar/FloatingButton.d.ts +1 -0
  30. package/lib/components/StickySidebar/FloatingButton.js +32 -0
  31. package/lib/components/StickySidebar/RedoclyAttributionLogo.d.ts +5 -0
  32. package/lib/components/StickySidebar/RedoclyAttributionLogo.js +1 -0
  33. package/lib/components/StickySidebar/StickySidebar.js +33 -9
  34. package/lib/components/common/Breadcrumbs.js +2 -2
  35. package/lib/components/common/ResponseCodeTabs.js +1 -1
  36. package/lib/components/common/Tag.js +1 -1
  37. package/lib/components/common/ViewNested.js +2 -2
  38. package/lib/components/graphql/GraphQLFieldView.js +1 -1
  39. package/lib/components/graphql/RequiresScopesModal.js +3 -3
  40. package/lib/components/graphql/sections/GraphQLArgsSection.js +1 -1
  41. package/lib/components/panels/ExampleItem/CallbackPayloadItem.js +2 -2
  42. package/lib/components/panels/ExampleItem/CodeSampleItem.js +1 -1
  43. package/lib/components/panels/ExampleItem/PayloadExampleItem.js +2 -2
  44. package/lib/components/panels/ExampleItem/ResponseExampleItem.js +1 -1
  45. package/lib/components/panels/ExampleItem/SecuritySchemeSelector.d.ts +9 -0
  46. package/lib/components/panels/ExampleItem/SecuritySchemeSelector.js +1 -0
  47. package/lib/components/panels/ExampleItem/ServerDropdown.js +1 -1
  48. package/lib/components/panels/ExampleItem/generate-request-sample.d.ts +28 -0
  49. package/lib/components/panels/ExampleItem/generate-request-sample.js +1 -0
  50. package/lib/components/panels/ExampleItem/selectors.d.ts +5 -2
  51. package/lib/components/panels/ExampleItem/selectors.js +1 -1
  52. package/lib/components/panels/ExampleItem/styled.d.ts +2 -49
  53. package/lib/components/panels/ExampleItem/styled.js +11 -5
  54. package/lib/components/panels/ExampleItem/useActiveServer.d.ts +17 -0
  55. package/lib/components/panels/ExampleItem/useActiveServer.js +1 -0
  56. package/lib/components/panels/ExampleItem/useCodeSampleLanguages.d.ts +23 -0
  57. package/lib/components/panels/ExampleItem/useCodeSampleLanguages.js +1 -0
  58. package/lib/components/panels/ExampleItem/useReplayRequestState.d.ts +18 -0
  59. package/lib/components/panels/ExampleItem/useReplayRequestState.js +1 -0
  60. package/lib/components/panels/ExampleItem/useTryItFooter.d.ts +3 -0
  61. package/lib/components/panels/ExampleItem/useTryItFooter.js +7 -0
  62. package/lib/components/panels/GroupPanelItem.js +1 -1
  63. package/lib/components/panels/McpPanelItem.js +2 -2
  64. package/lib/components/panels/ServerItem/ServerItem.js +1 -1
  65. package/lib/components/panels/asyncapi/BrokerItem/BrokerModal.js +1 -1
  66. package/lib/components/panels/asyncapi/BrokerItem/BrokerPanelItem.js +1 -1
  67. package/lib/components/panels/shared-panel-styles.js +1 -1
  68. package/lib/components/pluggable/RedocExample.js +5 -2
  69. package/lib/hoc/withStoreProvider.js +1 -1
  70. package/lib/hooks/useInitialTelemetry.d.ts +2 -0
  71. package/lib/hooks/useInitialTelemetry.js +1 -0
  72. package/lib/hooks/useScrollSpyUrlSync.js +1 -1
  73. package/lib/index.d.ts +3 -0
  74. package/lib/index.js +1 -1
  75. package/lib/jotai/app.d.ts +6 -0
  76. package/lib/jotai/app.js +1 -1
  77. package/lib/jotai/examples.js +1 -1
  78. package/lib/jotai/itemStore.d.ts +1 -0
  79. package/lib/jotai/itemStore.js +1 -1
  80. package/lib/options/editionOverrides.d.ts +3 -0
  81. package/lib/options/editionOverrides.js +1 -0
  82. package/lib/options/helpers.d.ts +1 -1
  83. package/lib/options/normalizeOptions.d.ts +1 -1
  84. package/lib/options/normalizeOptions.js +1 -1
  85. package/lib/pages/ItemPage.js +4 -2
  86. package/lib/services/code-samples/apply-env-variables.d.ts +8 -0
  87. package/lib/services/code-samples/apply-env-variables.js +1 -0
  88. package/lib/services/code-samples/builder.d.ts +3 -5
  89. package/lib/services/code-samples/builder.js +1 -1
  90. package/lib/services/code-samples/discriminator.d.ts +16 -10
  91. package/lib/services/code-samples/discriminator.js +1 -1
  92. package/lib/services/code-samples/language-availability.d.ts +4 -0
  93. package/lib/services/code-samples/language-availability.js +1 -0
  94. package/lib/services/code-samples/{replay/normalize-servers.d.ts → normalize-servers.d.ts} +1 -1
  95. package/lib/services/code-samples/normalize-servers.js +1 -0
  96. package/lib/services/code-samples/replay/from-openapi-document.js +1 -1
  97. package/lib/services/code-samples/replay/replay-predefined-env.d.ts +1 -2
  98. package/lib/services/code-samples/replay/replay-predefined-env.js +1 -1
  99. package/lib/services/code-samples/resolvers.js +1 -1
  100. package/lib/services/code-samples/server-env.d.ts +3 -0
  101. package/lib/services/code-samples/server-env.js +1 -0
  102. package/lib/services/code-samples/source.d.ts +3 -3
  103. package/lib/services/operation-samples/index.js +1 -1
  104. package/lib/services/schema/dialects/jsonSchema.d.ts +5 -1
  105. package/lib/services/schema/dialects/jsonSchema.js +1 -1
  106. package/lib/services/schema/propertyTreeBuilder.js +1 -1
  107. package/lib/services/search/indexer.d.ts +9 -0
  108. package/lib/services/search/indexer.js +1 -0
  109. package/lib/services/search/types.d.ts +27 -0
  110. package/lib/services/search/types.js +0 -0
  111. package/lib/standalone.d.ts +19 -0
  112. package/lib/standalone.js +2 -0
  113. package/lib/standaloneThemeConfig.d.ts +3 -0
  114. package/lib/standaloneThemeConfig.js +1 -0
  115. package/lib/telemetry/RedocTelemetry.d.ts +3 -0
  116. package/lib/telemetry/RedocTelemetry.js +1 -1
  117. package/lib/telemetry/defaults.d.ts +2 -0
  118. package/lib/telemetry/defaults.js +1 -0
  119. package/lib/types/code-samples-config.d.ts +68 -0
  120. package/lib/types/code-samples-config.js +0 -0
  121. package/lib/types/common.d.ts +1 -1
  122. package/lib/types/content.d.ts +2 -1
  123. package/lib/types/edition-config.d.ts +4 -0
  124. package/lib/types/edition-config.js +0 -0
  125. package/lib/types/events.d.ts +2 -2
  126. package/lib/types/openapi.d.ts +2 -1
  127. package/lib/types/options.d.ts +27 -85
  128. package/lib/types/store.d.ts +1 -1
  129. package/lib/utils/deep-link.d.ts +1 -0
  130. package/lib/utils/deep-link.js +1 -1
  131. package/lib/utils/extract-extensions.js +1 -1
  132. package/lib/utils/scroll-anchoring.d.ts +2 -1
  133. package/lib/utils/x-logo.d.ts +13 -0
  134. package/lib/utils/x-logo.js +1 -0
  135. package/package.json +28 -7
  136. package/lib/services/code-samples/replay/normalize-servers.js +0 -1
@@ -21,55 +21,7 @@ export declare const PathLabel: import("styled-components/dist/types").IStyledCo
21
21
  export declare const ResponsePanelHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
22
22
  export declare const MediaTypeRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
23
23
  export declare const DisabledMimeSelect: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>, never>>> & string;
24
- export declare const StyledSelectDropdown: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<{
25
- trigger: React.ReactNode;
26
- triggerEvent?: 'click' | 'hover';
27
- placement?: 'top' | 'bottom';
28
- alignment?: 'start' | 'end';
29
- active?: boolean;
30
- closeOnClick?: boolean;
31
- dataAttributes?: Record<string, string>;
32
- className?: string;
33
- withArrow?: boolean;
34
- portalled?: boolean;
35
- onClick?: (event: React.UIEvent) => void;
36
- onClose?: () => void;
37
- onOpen?: () => void;
38
- } & {
39
- children?: React.ReactNode | undefined;
40
- } & import("react").RefAttributes<HTMLDivElement>, never> & Partial<Pick<{
41
- trigger: React.ReactNode;
42
- triggerEvent?: 'click' | 'hover';
43
- placement?: 'top' | 'bottom';
44
- alignment?: 'start' | 'end';
45
- active?: boolean;
46
- closeOnClick?: boolean;
47
- dataAttributes?: Record<string, string>;
48
- className?: string;
49
- withArrow?: boolean;
50
- portalled?: boolean;
51
- onClick?: (event: React.UIEvent) => void;
52
- onClose?: () => void;
53
- onOpen?: () => void;
54
- } & {
55
- children?: React.ReactNode | undefined;
56
- } & import("react").RefAttributes<HTMLDivElement>, never>>> & string & Omit<import("react").ForwardRefExoticComponent<{
57
- trigger: React.ReactNode;
58
- triggerEvent?: 'click' | 'hover';
59
- placement?: 'top' | 'bottom';
60
- alignment?: 'start' | 'end';
61
- active?: boolean;
62
- closeOnClick?: boolean;
63
- dataAttributes?: Record<string, string>;
64
- className?: string;
65
- withArrow?: boolean;
66
- portalled?: boolean;
67
- onClick?: (event: React.UIEvent) => void;
68
- onClose?: () => void;
69
- onOpen?: () => void;
70
- } & {
71
- children?: React.ReactNode | undefined;
72
- } & import("react").RefAttributes<HTMLDivElement>>, keyof import("react").Component<any, {}, any>>;
24
+ export declare const StyledSelectDropdown: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("@redocly/theme").DropdownProps & import("react").RefAttributes<HTMLDivElement>, never> & Partial<Pick<import("@redocly/theme").DropdownProps & import("react").RefAttributes<HTMLDivElement>, never>>> & string & Omit<import("react").ForwardRefExoticComponent<import("@redocly/theme").DropdownProps & import("react").RefAttributes<HTMLDivElement>>, keyof import("react").Component<any, {}, any>>;
73
25
  export declare const SelectDropdownMenu: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("@redocly/theme").DropdownMenuProps & import("styled-components/dist/types").BaseObject, never> & Partial<Pick<import("@redocly/theme").DropdownMenuProps & import("styled-components/dist/types").BaseObject, never>>> & string & Omit<typeof DropdownMenu, keyof import("react").Component<any, {}, any>>;
74
26
  export declare const SelectDropdownMenuItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Partial<Pick<import("@redocly/theme").LinkProps, "external" | "target" | "to">> & {
75
27
  prefix?: import("react").ReactNode;
@@ -161,4 +113,5 @@ export declare const SelectDropdownTriggerButton: import("styled-components/dist
161
113
  }, never>>> & string;
162
114
  export declare const VariablesContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
163
115
  export declare const VariablesTitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
116
+ export declare const ExampleDescriptionWrap: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
164
117
  export declare const TryItPanelFooter: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
@@ -1,4 +1,4 @@
1
- import{styled as e}from"styled-components";import{PanelHeader as r}from"@redocly/theme/components/Panel/PanelHeader";import{Tag as a}from"@redocly/theme/components/Tag/Tag";import{Button as o}from"@redocly/theme/components/Button/Button";import{Dropdown as n}from"@redocly/theme/components/Dropdown/Dropdown";import{DropdownMenu as t}from"@redocly/theme/components/Dropdown/DropdownMenu";import{DropdownMenuItem as i}from"@redocly/theme/components/Dropdown/DropdownMenuItem";import{CheckmarkIcon as d}from"@redocly/theme/icons/CheckmarkIcon/CheckmarkIcon";const x=e(r)`
1
+ import{styled as e}from"styled-components";import{PanelHeader as o}from"@redocly/theme/components/Panel/PanelHeader";import{Tag as a}from"@redocly/theme/components/Tag/Tag";import{Button as r}from"@redocly/theme/components/Button/Button";import{Dropdown as n}from"@redocly/theme/components/Dropdown/Dropdown";import{DropdownMenu as t}from"@redocly/theme/components/Dropdown/DropdownMenu";import{DropdownMenuItem as i}from"@redocly/theme/components/Dropdown/DropdownMenuItem";import{CheckmarkIcon as p}from"@redocly/theme/icons/CheckmarkIcon/CheckmarkIcon";const v=e(o)`
2
2
  flex-wrap: nowrap;
3
3
  column-gap: var(--spacing-xs);
4
4
  padding: var(--spacing-sm) var(--spacing-md) var(--spacing-xs);
@@ -10,7 +10,7 @@ import{styled as e}from"styled-components";import{PanelHeader as r}from"@redocly
10
10
  > :last-child {
11
11
  flex-shrink: 0;
12
12
  }
13
- `,h=e(o)`
13
+ `,x=e(r)`
14
14
  display: inline-flex;
15
15
  overflow-x: hidden;
16
16
  font-weight: var(--font-weight-regular);
@@ -75,6 +75,10 @@ import{styled as e}from"styled-components";import{PanelHeader as r}from"@redocly
75
75
  max-width: 100%;
76
76
  }
77
77
  `,S=e(t)`
78
+ /* The portalled menu wrapper gets the trigger width as an inline min-width;
79
+ width: 0 keeps the menu content from growing the wrapper past it, so the
80
+ menu ends up exactly as wide as the trigger. */
81
+ width: 0;
78
82
  min-width: 100%;
79
83
  `,P=e(i)`
80
84
  --dropdown-menu-item-justify-content: space-between;
@@ -90,12 +94,12 @@ import{styled as e}from"styled-components";import{PanelHeader as r}from"@redocly
90
94
  overflow: hidden;
91
95
  text-overflow: ellipsis;
92
96
  white-space: nowrap;
93
- `,I=e(d)`
97
+ `,T=e(p)`
94
98
  width: 16px;
95
99
  height: 16px;
96
100
  margin-left: auto;
97
101
  flex-shrink: 0;
98
- `,T=e(o)`
102
+ `,I=e(r)`
99
103
  width: 100%;
100
104
  justify-content: space-between;
101
105
  background-color: var(--bg-color);
@@ -120,9 +124,11 @@ import{styled as e}from"styled-components";import{PanelHeader as r}from"@redocly
120
124
  font-weight: var(--font-weight-semibold);
121
125
  color: var(--panel-samples-text-color, #cfd8dc);
122
126
  `,C=e.div`
127
+ margin: 0 var(--spacing-md) var(--spacing-sm);
128
+ `,V=e.div`
123
129
  display: flex;
124
130
  justify-content: flex-end;
125
131
  align-items: center;
126
132
  border-top: var(--panel-border);
127
133
  padding: var(--spacing-xs) var(--spacing-md) var(--spacing-sm) var(--spacing-md);
128
- `;export{z as DisabledMimeSelect,b as HttpVerb,k as MediaTypeRow,u as PathLabel,h as PathWrapper,y as ResponsePanelHeader,I as SelectDropdownCheckmarkIcon,M as SelectDropdownLabel,S as SelectDropdownMenu,P as SelectDropdownMenuItem,T as SelectDropdownTriggerButton,w as StaticPathWrapper,x as StyledPanelHeader,D as StyledSelectDropdown,C as TryItPanelFooter,j as VariablesContainer,H as VariablesTitle};
134
+ `;export{z as DisabledMimeSelect,C as ExampleDescriptionWrap,b as HttpVerb,k as MediaTypeRow,u as PathLabel,x as PathWrapper,y as ResponsePanelHeader,T as SelectDropdownCheckmarkIcon,M as SelectDropdownLabel,S as SelectDropdownMenu,P as SelectDropdownMenuItem,I as SelectDropdownTriggerButton,w as StaticPathWrapper,v as StyledPanelHeader,D as StyledSelectDropdown,V as TryItPanelFooter,j as VariablesContainer,H as VariablesTitle};
@@ -0,0 +1,17 @@
1
+ import type { CodeSamplePanelItem } from '../../../types/content.js';
2
+ type ActiveServer = {
3
+ /** Environment atom value — the first entry holds the active env variables. */
4
+ environment: [Record<string, string>, string];
5
+ /** Variable-substituted URL of the active server. */
6
+ url: string | undefined;
7
+ /** Raw (templated) spec URL — keys `requestValues.serverBody`/`serverEnvVariables`. */
8
+ specUrl: string | undefined;
9
+ };
10
+ /**
11
+ * The active server for the code-sample panel.
12
+ * `requestValues.serverBody`/`serverEnvVariables` are keyed by the raw
13
+ * (templated) spec server URL, while the environment may hold the
14
+ * variable-substituted URL — keep both forms of the active server.
15
+ */
16
+ export declare function useActiveServer(node: CodeSamplePanelItem): ActiveServer;
17
+ export {};
@@ -0,0 +1 @@
1
+ import{useMemo as c}from"react";import{useAtomValue as l}from"jotai";import{environmentAtom as v}from"../../../jotai/app.js";import{replaceServerVariables as m,serverMatchesUrl as i}from"../../../services/code-samples/server-variables.js";function A(e){const t=e.source,r=l(v);return c(()=>{const s=r[0].server,u=s?e.servers?.find(n=>i(n,s)):void 0;if(s&&u)return{environment:r,url:s,specUrl:u.url};const o=e.servers?.[0];return o?{environment:r,url:m(o),specUrl:o.url}:{environment:r,url:t.servers[0]?.url,specUrl:t.servers[0]?.url}},[r,e.servers,t.servers])}export{A as useActiveServer};
@@ -0,0 +1,23 @@
1
+ import type { CodeSamplePanelItem } from '../../../types/content.js';
2
+ export declare const PAYLOAD_LANGUAGE: import("../../../index.js").Language;
3
+ export declare const WEBHOOK_LANGUAGE_SAMPLES: {
4
+ key: string;
5
+ lang: string;
6
+ title: string;
7
+ }[];
8
+ type LanguageTab = {
9
+ key: string;
10
+ lang: string;
11
+ title: string;
12
+ };
13
+ type CodeSampleLanguages = {
14
+ /** Language tabs offered for this panel. */
15
+ languages: LanguageTab[];
16
+ /** `x-codeSamples` limited to the configured languages. */
17
+ filteredDefinitionSamples: CodeSamplePanelItem['definitionSamples'];
18
+ activeLanguage: string;
19
+ setLanguage: (key: string) => void;
20
+ };
21
+ /** Which language tabs the code-sample panel offers and which one is active. */
22
+ export declare function useCodeSampleLanguages(node: CodeSamplePanelItem, hasPayloadData: boolean): CodeSampleLanguages;
23
+ export {};
@@ -0,0 +1 @@
1
+ import{useMemo as c}from"react";import{useAtom as b}from"jotai";import{filterAvailableLanguages as E}from"../../../services/code-samples/language-availability.js";import{DEFAULT_LANGUAGES as A,getLangKey as y}from"../../../utils/languages.js";import{languageAtom as h}from"../../../jotai/app.js";const l=A.find(n=>n.key==="payload")??A[0],f={key:l.key,lang:l.lang,title:l.label},O=[f];function W(n,u){const[{activeLanguage:L,languages:o},k]=b(h),r=n.isWebhook?"payload":L||"curl",i=n.definitionSamples,s=c(()=>{if(!i?.length)return i;const a=new Set((o??[]).map(t=>t.key));return i.filter(t=>a.has(y(t)))},[i,o]),g=c(()=>{const a=(o??[]).map(({key:e,lang:S,title:G})=>({key:e,lang:S,title:G}));let t=u?a:a.filter(e=>e.key!=="payload");const m=new Set(s?.map(e=>y(e))??[]);n.isWebhook&&(t=t.filter(e=>e.key==="payload"||m.has(e.key)));const p=E(t,m);return p.length?p:[a.find(e=>e.key===f.key)??f]},[u,o,n.isWebhook,s]),d=g.some(a=>a.key===r)?r:g[0]?.key??r;return{languages:g,filteredDefinitionSamples:s,activeLanguage:d,setLanguage:k}}export{l as PAYLOAD_LANGUAGE,O as WEBHOOK_LANGUAGE_SAMPLES,W as useCodeSampleLanguages};
@@ -0,0 +1,18 @@
1
+ import type { CodeSampleSource } from '../../../services/code-samples/index.js';
2
+ import type { HARBuildResolvers, HARBuildSelections } from '../../../services/code-samples/index.js';
3
+ type ReplayRequestState = {
4
+ /** Raw body the user edited in Replay — feeds sample generation. */
5
+ body: unknown;
6
+ /** Replay body parsed for PayloadDisplay (JSON strings become objects). */
7
+ displayBody: unknown;
8
+ /** Example the user selected in Replay. */
9
+ exampleName: string | undefined;
10
+ harRequestValues: HARBuildSelections['requestValues'];
11
+ resolvers: HARBuildResolvers;
12
+ };
13
+ /**
14
+ * Request values the user edited in Replay (Try It) for this operation.
15
+ * Excluded from the community edition.
16
+ */
17
+ export declare function useReplayRequestState(source: CodeSampleSource): ReplayRequestState;
18
+ export {};
@@ -0,0 +1 @@
1
+ import{useMemo as m}from"react";import{useAtomValue as p}from"jotai";import{requestValuesAtom as c}from"../../../jotai/app.js";import{mapReplayAtomValuesToHarRequestValues as y,useCodeSampleResolvers as f}from"../../../services/code-samples/index.js";function x(e){const s=p(c),t=f(),i=`${e.method.toLowerCase()}:${e.path}`,r=s[i],a=m(()=>{const l=y(r??{});return e.requestValues?.security?{...l,security:e.requestValues.security}:l},[r,e.requestValues?.security]),o=r?.body,u=r?.activeExampleName,n=typeof u=="string"?u:void 0;return m(()=>({body:o,displayBody:V(o),exampleName:n,harRequestValues:a,resolvers:t}),[o,n,a,t])}function V(e){if(typeof e!="string")return e;const s=e.trim();if(!s)return e;try{const t=JSON.parse(s);if(t!==null&&typeof t=="object")return t}catch{}return e}export{x as useReplayRequestState};
@@ -0,0 +1,3 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { CodeSamplePanelItem } from '../../../types/content.js';
3
+ export declare function useTryItFooter(node: CodeSamplePanelItem): ReactElement | undefined;
@@ -0,0 +1,7 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{useMemo as n}from"react";import{useAtomValue as p}from"jotai";import{styled as a}from"styled-components";import{globalOptionsAtom as s}from"../../../jotai/store.js";import{useOpenApiDefinition as l}from"../../../hoc/withReplayPrefetch.js";import{pickReplayDefinitionDownloadUrl as m}from"../../../utils/fetch-openapi-definition.js";import{Replay as d}from"../../Replay/index.js";function A(o){const e=p(s),t=l(),i=!(e.hideReplay||o.hideReplay)&&!o.isWebhook&&!!(t??m(e.downloadUrls));return n(()=>i?r(f,{children:r(d,{node:o})}):void 0,[i,o])}const f=a.div`
2
+ display: flex;
3
+ justify-content: flex-end;
4
+ align-items: center;
5
+ border-top: var(--panel-border);
6
+ padding: var(--spacing-xs) var(--spacing-md) var(--spacing-sm) var(--spacing-md);
7
+ `;export{A as useTryItFooter};
@@ -53,7 +53,7 @@ import{Fragment as G,jsx as t,jsxs as l}from"react/jsx-runtime";import{styled as
53
53
  margin-left: 0;
54
54
  }
55
55
  `,S=o(z)`
56
- border-radius: var(--border-radius);
56
+ border-radius: var(--border-radius-lg);
57
57
  background: var(--bg-color);
58
58
  justify-content: space-between;
59
59
  width: 100%;
@@ -1,4 +1,4 @@
1
- import{jsx as n,jsxs as s}from"react/jsx-runtime";import{styled as a}from"styled-components";import{memo as v}from"react";import{PageActions as g}from"@redocly/theme/components/PageActions/PageActions";import{panelKind as o}from"../../types/common.js";import{useSpecTranslate as u}from"../../hooks/useTranslate.js";import{resolveText as d}from"../../utils/resolveText.js";import{OverviewPanel as m}from"./styled.js";function K({node:e}){const r=e,l=u(),i=r.children,c=d(l,e.titleTranslationKey,e.title);return n(m,{header:c,className:"panel-api-docs",isExpandable:!1,children:n(y,{children:i.map((t,h)=>n(b,{item:t,translate:l},x(t,h)))})})}function x(e,r){return e.kind===o.ATTRIBUTE?`${e.label}-${r}`:e.kind===o.TAGS?`${e.title||"tags"}-${r}`:e.kind===o.EXTERNAL_LINK?`${e.url}-${r}`:e.kind===o.CONNECT_MCP_BUTTON?`${e.mcpUrl}-${r}`:`mcp-item-${r}`}const b=v(function({item:r,translate:l}){const i=d(l,r.titleTranslationKey,r.title),c="label"in r?d(l,r.labelTranslationKey,r.label):"";return r.kind===o.ATTRIBUTE?s(p,{children:[n(f,{children:r.title||c}),n(k,{children:r.value})]}):r.kind===o.TAGS?s(p,{children:[n(f,{children:i||"Tags"}),n(P,{children:r.tags.map(t=>s(w,{variant:t.color==="green"?"success":void 0,children:[t.icon==="checkmark"&&n(T,{})," ",t.text]},t.text))})]}):r.kind===o.EXTERNAL_LINK?s(p,{children:[n(f,{children:i||"Link"}),n($,{href:r.url,target:"_blank",rel:"noopener noreferrer",children:r.label})]}):r.kind===o.CONNECT_MCP_BUTTON?n(N,{children:n(g,{actions:r.actions,mcpUrl:r.mcpUrl})}):null});function T(){return n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:n("polyline",{points:"20 6 9 17 4 12"})})}const y=a.div`
1
+ import{jsx as n,jsxs as s}from"react/jsx-runtime";import{styled as a}from"styled-components";import{memo as g}from"react";import{PageActions as v}from"@redocly/theme/components/PageActions/PageActions";import{panelKind as o}from"../../types/common.js";import{useSpecTranslate as u}from"../../hooks/useTranslate.js";import{resolveText as d}from"../../utils/resolveText.js";import{OverviewPanel as m}from"./styled.js";function K({node:e}){const r=e,l=u(),i=r.children,c=d(l,e.titleTranslationKey,e.title);return n(m,{header:c,className:"panel-api-docs",isExpandable:!1,children:n(y,{children:i.map((t,h)=>n(b,{item:t,translate:l},x(t,h)))})})}function x(e,r){return e.kind===o.ATTRIBUTE?`${e.label}-${r}`:e.kind===o.TAGS?`${e.title||"tags"}-${r}`:e.kind===o.EXTERNAL_LINK?`${e.url}-${r}`:e.kind===o.CONNECT_MCP_BUTTON?`${e.mcpUrl}-${r}`:`mcp-item-${r}`}const b=g(function({item:r,translate:l}){const i=d(l,r.titleTranslationKey,r.title),c="label"in r?d(l,r.labelTranslationKey,r.label):"";return r.kind===o.ATTRIBUTE?s(p,{children:[n(f,{children:r.title||c}),n(k,{children:r.value})]}):r.kind===o.TAGS?s(p,{children:[n(f,{children:i||"Tags"}),n(P,{children:r.tags.map(t=>s(w,{variant:t.color==="green"?"success":void 0,children:[t.icon==="checkmark"&&n(T,{})," ",t.text]},t.text))})]}):r.kind===o.EXTERNAL_LINK?s(p,{children:[n(f,{children:i||"Link"}),n($,{href:r.url,target:"_blank",rel:"noopener noreferrer",children:r.label})]}):r.kind===o.CONNECT_MCP_BUTTON?n(N,{children:n(v,{actions:r.actions,mcpUrl:r.mcpUrl})}):null});function T(){return n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:n("polyline",{points:"20 6 9 17 4 12"})})}const y=a.div`
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  gap: var(--spacing-sm);
@@ -29,7 +29,7 @@ import{jsx as n,jsxs as s}from"react/jsx-runtime";import{styled as a}from"styled
29
29
  font-size: var(--font-size-sm);
30
30
  line-height: var(--line-height-sm);
31
31
  padding: 0 var(--spacing-xxs);
32
- border-radius: var(--border-radius);
32
+ border-radius: var(--tag-border-radius);
33
33
  font-family: var(--font-family-monospaced);
34
34
  background: ${({variant:e})=>e==="success"?"var(--badge-ok-bg-color, var(--tag-bg-color))":"var(--tag-bg-color, var(--border-color-secondary))"};
35
35
  color: ${({variant:e})=>e==="success"?"var(--badge-ok-text-color, var(--text-color-secondary))":"var(--text-color-secondary)"};
@@ -1,4 +1,4 @@
1
- import{jsx as i,jsxs as t}from"react/jsx-runtime";import{styled as o}from"styled-components";import{CopyButton as f}from"@redocly/theme/components/Buttons/CopyButton";import{PanelItem as x,PanelItemDescription as b,Title as v,ServerTitleWrapper as u,TitleWrap as y}from"../../common/PanelItem.js";import{Tag as h}from"../../common/Tag.js";import{useSpecTranslate as w}from"../../../hooks/useTranslate.js";import{Markdown as S}from"../../common/Markdown.js";import{ViewNested as T}from"../../common/ViewNested.js";import{ServerDescriptionTooltip as D}from"./ServerDescriptionTooltip.js";import{resolveServerUrl as j}from"../../../services/code-samples/replay/normalize-servers.js";function U({server:e}){const n=w(),a=j(e.url),p=Object.keys(e.variables||{}).length,l=p===1?"variable":"variables",d=`${p||""} ${n(l,l)}`,g=!!e.name&&!!e.description;return t(x,{children:[t(u,{children:[i(b,{"data-testid":"server-panel-item-name",children:e.name||e.description}),g&&i(D,{description:e.description})]}),t(y,{children:[i(v,{suppressHydrationWarning:!0,children:a}),i(f,{data:a},a)]}),e.variables&&i(T,{expandText:`${n("actions.show","Show")} ${d}`,hideText:`${n("actions.hide","Hide")} ${d}`,expandByDefault:!1,expandable:!0,hideDivider:!0,children:i($,{children:Object.entries(e.variables||{}).map(([c,r])=>t(z,{children:[i(k,{children:c}),t(s,{children:[n("default","Default")," ",i(h,{className:"tag-grey",children:r.default})]}),r.description&&(typeof r.description=="string"?i("div",{children:r.description}):i(W,{source:r.description})),r.enum&&t(s,{children:[n("enum","Enum")," ",i(C,{children:r.enum.map(m=>i(h,{className:"tag-grey",children:m},m))})]})]},c))})})]},e.url)}const $=o.div`
1
+ import{jsx as i,jsxs as t}from"react/jsx-runtime";import{styled as o}from"styled-components";import{CopyButton as f}from"@redocly/theme/components/Buttons/CopyButton";import{PanelItem as x,PanelItemDescription as b,Title as v,ServerTitleWrapper as u,TitleWrap as y}from"../../common/PanelItem.js";import{Tag as h}from"../../common/Tag.js";import{useSpecTranslate as w}from"../../../hooks/useTranslate.js";import{Markdown as S}from"../../common/Markdown.js";import{ViewNested as T}from"../../common/ViewNested.js";import{ServerDescriptionTooltip as D}from"./ServerDescriptionTooltip.js";import{resolveServerUrl as j}from"../../../services/code-samples/normalize-servers.js";function U({server:e}){const n=w(),a=j(e.url),p=Object.keys(e.variables||{}).length,l=p===1?"variable":"variables",d=`${p||""} ${n(l,l)}`,g=!!e.name&&!!e.description;return t(x,{children:[t(u,{children:[i(b,{"data-testid":"server-panel-item-name",children:e.name||e.description}),g&&i(D,{description:e.description})]}),t(y,{children:[i(v,{suppressHydrationWarning:!0,children:a}),i(f,{data:a},a)]}),e.variables&&i(T,{expandText:`${n("actions.show","Show")} ${d}`,hideText:`${n("actions.hide","Hide")} ${d}`,expandByDefault:!1,expandable:!0,hideDivider:!0,children:i($,{children:Object.entries(e.variables||{}).map(([c,r])=>t(z,{children:[i(k,{children:c}),t(s,{children:[n("default","Default")," ",i(h,{className:"tag-grey",children:r.default})]}),r.description&&(typeof r.description=="string"?i("div",{children:r.description}):i(W,{source:r.description})),r.enum&&t(s,{children:[n("enum","Enum")," ",i(C,{children:r.enum.map(m=>i(h,{className:"tag-grey",children:m},m))})]})]},c))})})]},e.url)}const $=o.div`
2
2
  padding-left: var(--spacing-xxs);
3
3
  & > div {
4
4
  border-bottom: 1px solid var(--border-color-secondary);
@@ -1,4 +1,4 @@
1
- import{jsx as o,jsxs as i}from"react/jsx-runtime";import{styled as e}from"styled-components";import{useState as d,useRef as m}from"react";import{Button as g}from"@redocly/theme/components/Button/Button";import{Typography as f}from"@redocly/theme/components/Typography/Typography";import{Segmented as h}from"@redocly/theme/components/Segmented/Segmented";import{CloseIcon as v}from"@redocly/theme/icons/CloseIcon/CloseIcon";import{DatabaseIcon as u}from"@redocly/theme/icons/DatabaseIcon/DatabaseIcon";import{KafkaIcon as x}from"@redocly/theme/icons/KafkaIcon/KafkaIcon";import{RabbitMQIcon as b}from"@redocly/theme/icons/RabbitMQIcon/RabbitMQIcon";import{useOutsideClick as k}from"@redocly/theme/core/hooks";import{useFocusTrap as w}from"@redocly/theme/core/hooks";import{BrokerOverviewSection as B}from"./BrokerOverviewSection.js";import{BrokerBindingsSection as z}from"./BrokerBindingsSection.js";const y=[{label:"Overview",value:0}],S=({protocol:t})=>{switch(t){case"kafka":return o(x,{size:"24px"});case"amqp":return o(b,{size:"24px"});default:return o(u,{size:"24px"})}},A=({broker:t,onClose:n,panelLabel:l})=>{const[r,p]=d(0),a=m(null);k(a,n),w(a);const s=[...y];return t.bindings&&s.push({label:"Configuration",value:2}),o(I,{"data-component-name":"BrokerModal/BrokerModal",children:i(C,{ref:a,tabIndex:0,children:[o(M,{onClick:n,"data-testid":"close",variant:"ghost",icon:o(v,{})}),i(O,{children:[o(S,{protocol:t.protocol||""}),o(T,{children:t.protocol}),": ",t.name]}),o(h,{value:r,onChange:({value:c})=>p(c),options:s}),i(j,{children:[r===0&&o(B,{broker:t}),r===2&&o(z,{broker:t,panelLabel:l})]})]})})},I=e.div`
1
+ import{jsx as o,jsxs as i}from"react/jsx-runtime";import{styled as e}from"styled-components";import{useState as d,useRef as m}from"react";import{Button as g}from"@redocly/theme/components/Button/Button";import{Typography as f}from"@redocly/theme/components/Typography/Typography";import{Segmented as h}from"@redocly/theme/components/Segmented/Segmented";import{CloseIcon as v}from"@redocly/theme/icons/CloseIcon/CloseIcon";import{DatabaseIcon as u}from"@redocly/theme/icons/DatabaseIcon/DatabaseIcon";import{KafkaIcon as x}from"@redocly/theme/icons/KafkaIcon/KafkaIcon";import{RabbitMQIcon as b}from"@redocly/theme/icons/RabbitMQIcon/RabbitMQIcon";import{useOutsideClick as k}from"@redocly/theme/core/hooks";import{useFocusTrap as w}from"@redocly/theme/core/openapi";import{BrokerOverviewSection as B}from"./BrokerOverviewSection.js";import{BrokerBindingsSection as z}from"./BrokerBindingsSection.js";const y=[{label:"Overview",value:0}],S=({protocol:t})=>{switch(t){case"kafka":return o(x,{size:"24px"});case"amqp":return o(b,{size:"24px"});default:return o(u,{size:"24px"})}},A=({broker:t,onClose:n,panelLabel:l})=>{const[r,p]=d(0),a=m(null);k(a,n),w(a);const s=[...y];return t.bindings&&s.push({label:"Configuration",value:2}),o(I,{"data-component-name":"BrokerModal/BrokerModal",children:i(C,{ref:a,tabIndex:0,children:[o(M,{onClick:n,"data-testid":"close",variant:"ghost",icon:o(v,{})}),i(O,{children:[o(S,{protocol:t.protocol||""}),o(T,{children:t.protocol}),": ",t.name]}),o(h,{value:r,onChange:({value:c})=>p(c),options:s}),i(j,{children:[r===0&&o(B,{broker:t}),r===2&&o(z,{broker:t,panelLabel:l})]})]})})},I=e.div`
2
2
  background: var(--bg-color-modal-overlay);
3
3
  position: fixed;
4
4
  width: 100vw;
@@ -1,4 +1,4 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{styled as o}from"styled-components";import{memo as b,useCallback as h,useState as B}from"react";import{CopyButton as k}from"@redocly/theme/components/Buttons/CopyButton";import{DatabaseIcon as y}from"@redocly/theme/icons/DatabaseIcon/DatabaseIcon";import{KafkaIcon as M}from"@redocly/theme/icons/KafkaIcon/KafkaIcon";import{RabbitMQIcon as w}from"@redocly/theme/icons/RabbitMQIcon/RabbitMQIcon";import{useModalScrollLock as I}from"@redocly/theme/core/hooks";import{Portal as L}from"@redocly/theme/components/Portal/Portal";import{Panel as S}from"@redocly/theme/components/Panel/Panel";import{MoreDetailsButton as j}from"../../../common/MoreDetailsButton.js";import{useSpecTranslate as P}from"../../../../hooks/useTranslate.js";import{useTelemetry as z}from"../../../../hooks/useTelemetry.js";import{resolveText as C}from"../../../../utils/resolveText.js";import{BrokerModal as T}from"./BrokerModal.js";import{HostList as D}from"./BrokerPanel.styled.js";function H(t){switch(t){case"kafka":return e(M,{size:"20px"});case"amqp":return e(w,{size:"20px"});default:return e(y,{size:"20px"})}}const O=b(function({broker:r,showMoreDetailsButton:i,onOpenModal:s}){return a(Q,{"data-component-name":"BrokerPanel/BrokerItem",children:[a(_,{children:[e(W,{children:H(r.protocol)}),e(q,{children:r.name})]}),r.url&&a(E,{children:[e(D,{children:r.url.split(" ").map((l,c)=>e("span",{children:l},c))}),e(k,{data:r.url},r.url)]}),!i&&e(N,{onClick:()=>s(r),children:e(j,{expanded:!1})})]})});function ie({node:t}){const r=t.children[0],i=r?.brokers??[],s=P(),l=z(),c=C(s,t.titleTranslationKey,t.title),v=r?.panelLabel||c||"Brokers",p=!t.title,[d,m]=B(null);I(d!==null);const g=h(n=>{l.sendServerModalOpenedMessage([{id:"serverModalButton",object:"button",uri:"urn:redocly:redoc:ui:button:serverModalButton",server:n.name??n.url??"unknown"}]),m(n)},[l]),x=h(()=>{m(null)},[]),u=e(A,{children:i.map(n=>e(O,{broker:n,showMoreDetailsButton:p,onOpenModal:g},n.name))}),f=d&&e(L,{mountId:"api-content",children:e(T,{broker:d,onClose:x,panelLabel:v})});return p?a(K,{children:[u,f]}):a(R,{header:t.title,className:"panel-api-docs",isExpandable:!1,children:[u,f]})}const R=o(S)`
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{styled as o}from"styled-components";import{memo as b,useCallback as h,useState as B}from"react";import{CopyButton as k}from"@redocly/theme/components/Buttons/CopyButton";import{DatabaseIcon as y}from"@redocly/theme/icons/DatabaseIcon/DatabaseIcon";import{KafkaIcon as M}from"@redocly/theme/icons/KafkaIcon/KafkaIcon";import{RabbitMQIcon as w}from"@redocly/theme/icons/RabbitMQIcon/RabbitMQIcon";import{useModalScrollLock as I}from"@redocly/theme/core/openapi";import{Portal as L}from"@redocly/theme/components/Portal/Portal";import{Panel as S}from"@redocly/theme/components/Panel/Panel";import{MoreDetailsButton as j}from"../../../common/MoreDetailsButton.js";import{useSpecTranslate as P}from"../../../../hooks/useTranslate.js";import{useTelemetry as z}from"../../../../hooks/useTelemetry.js";import{resolveText as C}from"../../../../utils/resolveText.js";import{BrokerModal as T}from"./BrokerModal.js";import{HostList as D}from"./BrokerPanel.styled.js";function H(t){switch(t){case"kafka":return e(M,{size:"20px"});case"amqp":return e(w,{size:"20px"});default:return e(y,{size:"20px"})}}const O=b(function({broker:r,showMoreDetailsButton:i,onOpenModal:s}){return a(Q,{"data-component-name":"BrokerPanel/BrokerItem",children:[a(_,{children:[e(W,{children:H(r.protocol)}),e(q,{children:r.name})]}),r.url&&a(E,{children:[e(D,{children:r.url.split(" ").map((l,c)=>e("span",{children:l},c))}),e(k,{data:r.url},r.url)]}),!i&&e(N,{onClick:()=>s(r),children:e(j,{expanded:!1})})]})});function ie({node:t}){const r=t.children[0],i=r?.brokers??[],s=P(),l=z(),c=C(s,t.titleTranslationKey,t.title),v=r?.panelLabel||c||"Brokers",p=!t.title,[d,m]=B(null);I(d!==null);const g=h(n=>{l.sendServerModalOpenedMessage([{id:"serverModalButton",object:"button",uri:"urn:redocly:redoc:ui:button:serverModalButton",server:n.name??n.url??"unknown"}]),m(n)},[l]),x=h(()=>{m(null)},[]),u=e(A,{children:i.map(n=>e(O,{broker:n,showMoreDetailsButton:p,onOpenModal:g},n.name))}),f=d&&e(L,{mountId:"api-content",children:e(T,{broker:d,onClose:x,panelLabel:v})});return p?a(K,{children:[u,f]}):a(R,{header:t.title,className:"panel-api-docs",isExpandable:!1,children:[u,f]})}const R=o(S)`
2
2
  [data-component-name='Panel/PanelBody'] {
3
3
  padding: 0;
4
4
  }
@@ -1,6 +1,6 @@
1
1
  import{jsx as r,jsxs as e}from"react/jsx-runtime";import{styled as o}from"styled-components";const s=o.div`
2
2
  border: 1px solid var(--border-color-secondary, var(--border-color-primary));
3
- border-radius: var(--border-radius);
3
+ border-radius: var(--panel-border-radius);
4
4
  background-color: var(--panel-bg-color, var(--bg-color));
5
5
  margin-top: var(--spacing-base);
6
6
  `,l=o.div`
@@ -1,7 +1,10 @@
1
- import{Fragment as n,jsx as e}from"react/jsx-runtime";import{useAtomValue as l}from"jotai";import{styled as c}from"styled-components";import{refPointerToStoreId as i}from"../../utils/refPointer.js";import{ContentWrapper as f}from"../common/ContentWrapper.js";import{exampleStoreAtom as u}from"../../jotai/examples.js";import{PayloadDisplay as x}from"../panels/ExampleItem/selectors.js";const A=({pointer:r,value:o,mimeType:p})=>{const a=l(u);if(o===void 0&&!r)return e(n,{});const s=r?i(r):void 0,m=r&&/\/value$/.test(r)?i(r.replace(/\/value$/,"")):void 0,d=a[s??""]??a[m??""],t=o!==void 0?o:d?.value;return t===void 0?e(n,{}):e(f,{children:e(y,{children:e(x,{payload:t,mediaType:p,description:d?.description})})})},y=c.div`
1
+ import{Fragment as i,jsx as e,jsxs as c}from"react/jsx-runtime";import{useAtomValue as u}from"jotai";import{styled as n}from"styled-components";import{refPointerToStoreId as s}from"../../utils/refPointer.js";import{ContentWrapper as f}from"../common/ContentWrapper.js";import{exampleStoreAtom as x}from"../../jotai/examples.js";import{ExampleDescription as b,PayloadDisplay as v}from"../panels/ExampleItem/selectors.js";const _=({pointer:r,value:o,mimeType:p})=>{const t=u(x);if(o===void 0&&!r)return e(i,{});const m=r?s(r):void 0,l=r&&/\/value$/.test(r)?s(r.replace(/\/value$/,"")):void 0,a=t[m??""]??t[l??""],d=o!==void 0?o:a?.value;return d===void 0?e(i,{}):e(f,{children:c(g,{children:[a?.description?e(y,{children:e(b,{description:a.description})}):null,e(v,{payload:d,mediaType:p})]})})},g=n.div`
2
2
  padding: calc(var(--spacing-unit) * 4);
3
3
  border-radius: var(--panel-border-radius);
4
4
  border: var(--panel-samples-border);
5
5
  background-color: var(--panel-samples-bg-color);
6
6
  width: 100%;
7
- `;export{A as RedocExample};
7
+ `,y=n.div`
8
+ border-bottom: 1px solid var(--border-color-primary);
9
+ margin-bottom: var(--spacing-sm);
10
+ `;export{_ as RedocExample};
@@ -1 +1 @@
1
- import{jsx as p}from"react/jsx-runtime";import{memo as x,useMemo as h,useEffect as L}from"react";import{createStore as A,Provider as E,useStore as j,getDefaultStore as N}from"jotai";import{LayoutVariant as _}from"@redocly/config";import{createStoreContext as k,toRecord as M}from"../adapters/helpers.js";import{populateOpenApiStore as T}from"../adapters/openapi/store.js";import{DEFAULT_MAX_DISPLAYED_ENUM_VALUES as F}from"../options/constants.js";import{normalizeOptions as U}from"../options/normalizeOptions.js";import{globalStoreAtom as d}from"../jotai/store.js";import{appStore as O,environmentAtom as V,layoutAtom as v,userClaimsAtom as y}from"../jotai/app.js";import{buildServerEnvValues as w}from"../services/code-samples/replay/replay-predefined-env.js";const z={ignoreNamedSchemas:["java.io.ObjectStreamField"],maxDisplayedEnumValues:F};function P(e,n){const t={...z,...e,basePath:n};return U(t)}const C=new WeakSet;function g(e){C.has(e)||(C.add(e),e.sub(O,()=>{}))}function b(e,n){if(!n?.servers?.length)return;g(e);const t=w(n.servers),i=e.get(O).environments??{},m={};for(const[s,a]of Object.entries(t)){const c=i[s],r=c?Object.fromEntries(Object.entries(a).filter(([o])=>!(o in c))):a;Object.keys(r).length>0&&(m[s]=r)}Object.keys(m).length!==0&&e.set(V,{environments:m})}function Z(e){const n=x(t=>{const{items:i,options:m,store:s,layout:a,basePath:c=""}=t,r=j(),o=r!==N()?r:void 0,u=h(()=>P(m,c),[m,c]),S=a??u.layout;L(()=>{if(o){const f=o.get(d);b(o,s??f.store),o.set(v,S),o.set(y,u.userClaims??{}),o.set(d,{items:i,store:s??f.store,options:u,replayDefinition:f.replayDefinition})}},[S,u,o,i,s]);const D=h(()=>{if(o)return null;const f={items:i,store:s,options:u,replayDefinition:null},l=A();return l.set(d,f),g(l),l.set(v,S),u.userClaims&&l.set(y,u.userClaims),b(l,s),l},[o,i,s,u,S]);return o||!D?p(e,{...t}):p(E,{store:D,children:p(e,{...t})})});return n.displayName=`WithStoreProvider(${I(e)})`,n}function I(e){return e.displayName||e.name||"Component"}function q(e,n){const t=k(M(e));return T(e,t,n),{schemaStore:t.schemaStore,exampleStore:t.exampleStore,securitySchemeStore:t.securitySchemeStore,mcp:t.document["x-mcp"],schemaCatalogLink:t.document["x-schema-catalog-link"]}}const ee=x(function({children:n,definition:t,apiStore:i,options:m}){const s=h(()=>{const a=P({specType:"openapi",...m},m?.basePath??"");let c;if(i)c=i;else if(t)c=q(t,a);else throw new Error("StoreProvider requires either apiStore or definition");const r=A();return r.set(d,{items:[],store:c,options:a,replayDefinition:null}),g(r),r.set(v,_.STACKED),a.userClaims&&r.set(y,a.userClaims),b(r,c),r},[i,t,m]);return p(E,{store:s,children:n})});export{ee as StoreProvider,Z as withStoreProvider};
1
+ import{jsx as p}from"react/jsx-runtime";import{memo as x,useMemo as h,useEffect as L}from"react";import{createStore as A,Provider as E,useStore as j,getDefaultStore as N}from"jotai";import{LayoutVariant as _}from"@redocly/config";import{createStoreContext as k,toRecord as M}from"../adapters/helpers.js";import{populateOpenApiStore as T}from"../adapters/openapi/store.js";import{DEFAULT_MAX_DISPLAYED_ENUM_VALUES as F}from"../options/constants.js";import{normalizeOptions as U}from"../options/normalizeOptions.js";import{globalStoreAtom as d}from"../jotai/store.js";import{appStore as O,environmentAtom as V,layoutAtom as v,userClaimsAtom as y}from"../jotai/app.js";import{buildServerEnvValues as w}from"../services/code-samples/server-env.js";const z={ignoreNamedSchemas:["java.io.ObjectStreamField"],maxDisplayedEnumValues:F};function P(e,n){const t={...z,...e,basePath:n};return U(t)}const C=new WeakSet;function g(e){C.has(e)||(C.add(e),e.sub(O,()=>{}))}function b(e,n){if(!n?.servers?.length)return;g(e);const t=w(n.servers),i=e.get(O).environments??{},m={};for(const[s,a]of Object.entries(t)){const c=i[s],r=c?Object.fromEntries(Object.entries(a).filter(([o])=>!(o in c))):a;Object.keys(r).length>0&&(m[s]=r)}Object.keys(m).length!==0&&e.set(V,{environments:m})}function Z(e){const n=x(t=>{const{items:i,options:m,store:s,layout:a,basePath:c=""}=t,r=j(),o=r!==N()?r:void 0,u=h(()=>P(m,c),[m,c]),S=a??u.layout;L(()=>{if(o){const f=o.get(d);b(o,s??f.store),o.set(v,S),o.set(y,u.userClaims??{}),o.set(d,{items:i,store:s??f.store,options:u,replayDefinition:f.replayDefinition})}},[S,u,o,i,s]);const D=h(()=>{if(o)return null;const f={items:i,store:s,options:u,replayDefinition:null},l=A();return l.set(d,f),g(l),l.set(v,S),u.userClaims&&l.set(y,u.userClaims),b(l,s),l},[o,i,s,u,S]);return o||!D?p(e,{...t}):p(E,{store:D,children:p(e,{...t})})});return n.displayName=`WithStoreProvider(${I(e)})`,n}function I(e){return e.displayName||e.name||"Component"}function q(e,n){const t=k(M(e));return T(e,t,n),{schemaStore:t.schemaStore,exampleStore:t.exampleStore,securitySchemeStore:t.securitySchemeStore,mcp:t.document["x-mcp"],schemaCatalogLink:t.document["x-schema-catalog-link"]}}const ee=x(function({children:n,definition:t,apiStore:i,options:m}){const s=h(()=>{const a=P({specType:"openapi",...m},m?.basePath??"");let c;if(i)c=i;else if(t)c=q(t,a);else throw new Error("StoreProvider requires either apiStore or definition");const r=A();return r.set(d,{items:[],store:c,options:a,replayDefinition:null}),g(r),r.set(v,_.STACKED),a.userClaims&&r.set(y,a.userClaims),b(r,c),r},[i,t,m]);return p(E,{store:s,children:n})});export{ee as StoreProvider,Z as withStoreProvider};
@@ -0,0 +1,2 @@
1
+ /** Community-only event; `useInitialTelemetry.ce.ts` replaces this no-op in the CE tree. */
2
+ export declare function useInitialTelemetry(): void;
@@ -0,0 +1 @@
1
+ function e(){}export{e as useInitialTelemetry};
@@ -1 +1 @@
1
- import{useEffect as i}from"react";import{useAtomValue as l,useSetAtom as m}from"jotai";import{useLocation as a}from"react-router";import{IS_BROWSER as s,useActiveSectionId as f}from"@redocly/theme/core/openapi";import{activeScrollSectionAtom as u}from"../jotai/app.js";import{routingBasePathAtom as p}from"../jotai/store.js";import{encodeBackSlashes as S}from"../utils/string.js";import{normalizePath as d}from"../utils/url.js";import{useUserScrollIntent as h}from"./useUserScrollIntent.js";import{URL_REPLACE_EVENT as w}from"./useRouterHashBridge.js";function c(t){window.history.replaceState({},"",t),window.dispatchEvent(new Event(w))}function _(){const t=a(),e=m(u),r=l(p),o=f(t,!1,!1),n=h(t.key);i(()=>{e(null)},[t.pathname,e]),i(()=>{if(!(!s||!o)&&(e(o),!!n.current)){if(o===r){c(r);return}!window.location.pathname.includes(o)&&!window.location.hash.includes(o)&&c(d(S(o)))}},[o,r,e,n])}export{_ as useScrollSpyUrlSync};
1
+ import{useEffect as c}from"react";import{useAtomValue as s,useSetAtom as l}from"jotai";import{useHref as m,useLocation as a}from"react-router";import{IS_BROWSER as f,useActiveSectionId as u}from"@redocly/theme/core/openapi";import{activeScrollSectionAtom as p}from"../jotai/app.js";import{routingBasePathAtom as S}from"../jotai/store.js";import{encodeBackSlashes as d}from"../utils/string.js";import{normalizePath as h}from"../utils/url.js";import{useUserScrollIntent as w}from"./useUserScrollIntent.js";import{URL_REPLACE_EVENT as E}from"./useRouterHashBridge.js";function A(t){window.history.replaceState({},"",t),window.dispatchEvent(new Event(E))}function k(){const t=a(),e=l(p),r=s(S),o=u(t,!1,!1),n=m(h(d(o||"/"))),i=w(t.key);c(()=>{e(null)},[t.pathname,e]),c(()=>{!f||!o||(e(o),i.current&&(o===r||!window.location.pathname.includes(o)&&!window.location.hash.includes(o))&&A(n))},[o,n,r,e,i])}export{k as useScrollSpyUrlSync};
package/lib/index.d.ts CHANGED
@@ -33,6 +33,9 @@ export { RedoclyApiDocs } from './RedoclyApiDocs.js';
33
33
  export type { RedoclyApiDocsProps } from './RedoclyApiDocs.js';
34
34
  export { RedoclyApiDocsStandalone } from './RedoclyApiDocsStandalone.js';
35
35
  export type { RedoclyApiDocsStandaloneProps } from './RedoclyApiDocsStandalone.js';
36
+ export type { RedocStandaloneProps } from './RedocStandalone.js';
37
+ export { ApiDocsSearchIndexer } from './services/search/indexer.js';
38
+ export type { SearchDocument, SearchItemData } from './services/search/types.js';
36
39
  export { RedocTelemetry } from './telemetry/RedocTelemetry.js';
37
40
  export type { RedocTelemetryConfig, SpecType } from './telemetry/RedocTelemetry.js';
38
41
  export { Replay, EmbeddedReplay } from './components/Replay/index.js';
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- export*from"./types/common.js";import{buildItems as t,buildNavItems as p}from"./adapters/build.js";import{buildGraphqlStoreFromSdl as m}from"./adapters/graphql/buildStoreFromSdl.js";import{simplifyAstStructure as d}from"./adapters/utils/simplifyAstStructure.js";import{extractFullText as f}from"./adapters/utils/markdoc.js";import{normalizeOptions as l}from"./options/normalizeOptions.js";import{excludeMockServers as c}from"./adapters/openapi/utils/merge-mock-server.js";import{appendUndeclaredConfigureParameters as S}from"./services/code-samples/replay/merge-configure-into-source.js";import{isGraphqlDocsSidebarHidden as y}from"./options/helpers.js";import{findFirstBinding as g}from"./adapters/asyncapi/build/utils.js";import{resolveRequestValues as M,applyRequestValuesToOperationInfo as P}from"./adapters/openapi/configure/index.js";import{updateObjectProperties as b,isDirectRequestValues as k,getEffectiveRequestValues as A,createSecurityUpdates as E,mergeSecurityIntoScheme as h,applyServerVariableDefaults as O}from"./adapters/openapi/configure/merge-utils.js";import{MarkdownAdapterProvider as I,useMarkdownAdapter as V}from"./contexts/markdownAdapter.js";import{markdocParser as C}from"./components/markdoc/markdocParser.js";import{createMarkdocAdapter as N}from"./components/markdoc/markdocAdapter.js";import{parseMarkdown as B}from"./adapters/utils/parseMarkdown.js";import{isPlainText as H}from"./adapters/utils/isPlainText.js";import{buildMarkdocOptions as J}from"./components/markdoc/buildMarkdocOptions.js";import{apiDocsMarkdocTags as Y,apiDocsMarkdocNodes as j}from"./components/markdoc/defaultMarkdocConfig.js";import{apiDocsMarkdocComponents as K}from"./components/markdoc/apiDocsMarkdocComponents.js";import{RedoclyApiDocs as W}from"./RedoclyApiDocs.js";import{RedoclyApiDocsStandalone as Z}from"./RedoclyApiDocsStandalone.js";import{RedocTelemetry as ee}from"./telemetry/RedocTelemetry.js";import{Replay as re,EmbeddedReplay as te}from"./components/Replay/index.js";import{REPLAY_TRY_IT_LOADING_STATE as ae}from"./services/code-samples/index.js";import{findExampleIdByKey as ie}from"./services/code-samples/example-key.js";import{RedocSchema as se,RedocExample as fe,RedocResponseSamples as xe,RedocCodeSample as le}from"./components/pluggable/index.js";import{StoreProvider as ce}from"./hoc/withStoreProvider.js";import{GraphQLTypeViewByName as Se}from"./components/graphql/GraphQLTypeView.js";import{mcpTagSchemas as ye}from"./components/markdoc/tags/mcp-tag-schemas.js";import{schemaDefinitionTag as ge}from"./components/markdoc/tags/schema-definition-tag.js";import{withReplayPrefetch as Me,useOpenApiDefinition as Pe}from"./hoc/withReplayPrefetch.js";import{mergeEnvData as be}from"./utils/environments.js";import{buildReplayPredefinedEnvValues as Ae}from"./services/code-samples/replay/replay-predefined-env.js";import{encodeJsonPointerSegment as he}from"./utils/refPointer.js";import{JsonPointer as qe}from"./adapters/openapi/utils/JsonPointer.js";import{langFromMime as Ve,encodeExampleForMediaType as we}from"./utils/media-type.js";import{isOperationName as Fe,HTTP_METHODS as Ne}from"./utils/http-methods.js";import{convertSampleToString as Be}from"./services/code-samples/convertSampleToString.js";import{resolveOperationSampleContext as He,buildCodeSamples as Le,getRequestBodySamples as Je,getResponseSamples as Ue}from"./services/operation-samples/index.js";export{te as EmbeddedReplay,Se as GraphQLTypeViewByName,Ne as HTTP_METHODS,qe as JsonPointer,I as MarkdownAdapterProvider,ae as REPLAY_TRY_IT_LOADING_STATE,le as RedocCodeSample,fe as RedocExample,xe as RedocResponseSamples,se as RedocSchema,ee as RedocTelemetry,W as RedoclyApiDocs,Z as RedoclyApiDocsStandalone,re as Replay,ce as StoreProvider,K as apiDocsMarkdocComponents,j as apiDocsMarkdocNodes,Y as apiDocsMarkdocTags,S as appendUndeclaredConfigureParameters,P as applyRequestValuesToOperationInfo,O as applyServerVariableDefaults,Le as buildCodeSamples,m as buildGraphqlStoreFromSdl,t as buildItems,J as buildMarkdocOptions,p as buildNavItems,Ae as buildReplayPredefinedEnvValues,Be as convertSampleToString,N as createMarkdocAdapter,E as createSecurityUpdates,we as encodeExampleForMediaType,he as encodeJsonPointerSegment,c as excludeMockServers,f as extractFullText,ie as findExampleIdByKey,g as findFirstBinding,A as getEffectiveRequestValues,Je as getRequestBodySamples,Ue as getResponseSamples,k as isDirectRequestValues,y as isGraphqlDocsSidebarHidden,Fe as isOperationName,H as isPlainText,Ve as langFromMime,C as markdocParser,ye as mcpTagSchemas,be as mergeEnvData,h as mergeSecurityIntoScheme,l as normalizeOptions,B as parseMarkdown,He as resolveOperationSampleContext,M as resolveRequestValues,ge as schemaDefinitionTag,d as simplifyAstStructure,b as updateObjectProperties,V as useMarkdownAdapter,Pe as useOpenApiDefinition,Me as withReplayPrefetch};
1
+ export*from"./types/common.js";import{buildItems as t,buildNavItems as p}from"./adapters/build.js";import{buildGraphqlStoreFromSdl as m}from"./adapters/graphql/buildStoreFromSdl.js";import{simplifyAstStructure as d}from"./adapters/utils/simplifyAstStructure.js";import{extractFullText as f}from"./adapters/utils/markdoc.js";import{normalizeOptions as l}from"./options/normalizeOptions.js";import{excludeMockServers as c}from"./adapters/openapi/utils/merge-mock-server.js";import{appendUndeclaredConfigureParameters as S}from"./services/code-samples/replay/merge-configure-into-source.js";import{isGraphqlDocsSidebarHidden as y}from"./options/helpers.js";import{findFirstBinding as D}from"./adapters/asyncapi/build/utils.js";import{resolveRequestValues as M,applyRequestValuesToOperationInfo as P}from"./adapters/openapi/configure/index.js";import{updateObjectProperties as A,isDirectRequestValues as b,getEffectiveRequestValues as h,createSecurityUpdates as k,mergeSecurityIntoScheme as E,applyServerVariableDefaults as O}from"./adapters/openapi/configure/merge-utils.js";import{MarkdownAdapterProvider as q,useMarkdownAdapter as V}from"./contexts/markdownAdapter.js";import{markdocParser as C}from"./components/markdoc/markdocParser.js";import{createMarkdocAdapter as N}from"./components/markdoc/markdocAdapter.js";import{parseMarkdown as B}from"./adapters/utils/parseMarkdown.js";import{isPlainText as H}from"./adapters/utils/isPlainText.js";import{buildMarkdocOptions as J}from"./components/markdoc/buildMarkdocOptions.js";import{apiDocsMarkdocTags as Y,apiDocsMarkdocNodes as j}from"./components/markdoc/defaultMarkdocConfig.js";import{apiDocsMarkdocComponents as K}from"./components/markdoc/apiDocsMarkdocComponents.js";import{RedoclyApiDocs as W}from"./RedoclyApiDocs.js";import{RedoclyApiDocsStandalone as Z}from"./RedoclyApiDocsStandalone.js";import{ApiDocsSearchIndexer as ee}from"./services/search/indexer.js";import{RedocTelemetry as oe}from"./telemetry/RedocTelemetry.js";import{Replay as pe,EmbeddedReplay as ae}from"./components/Replay/index.js";import{REPLAY_TRY_IT_LOADING_STATE as ie}from"./services/code-samples/index.js";import{findExampleIdByKey as se}from"./services/code-samples/example-key.js";import{RedocSchema as xe,RedocExample as le,RedocResponseSamples as ne,RedocCodeSample as ce}from"./components/pluggable/index.js";import{StoreProvider as Se}from"./hoc/withStoreProvider.js";import{GraphQLTypeViewByName as ye}from"./components/graphql/GraphQLTypeView.js";import{mcpTagSchemas as De}from"./components/markdoc/tags/mcp-tag-schemas.js";import{schemaDefinitionTag as Me}from"./components/markdoc/tags/schema-definition-tag.js";import{withReplayPrefetch as ve,useOpenApiDefinition as Ae}from"./hoc/withReplayPrefetch.js";import{mergeEnvData as he}from"./utils/environments.js";import{buildReplayPredefinedEnvValues as Ee}from"./services/code-samples/replay/replay-predefined-env.js";import{encodeJsonPointerSegment as Ie}from"./utils/refPointer.js";import{JsonPointer as Ve}from"./adapters/openapi/utils/JsonPointer.js";import{langFromMime as Ce,encodeExampleForMediaType as Fe}from"./utils/media-type.js";import{isOperationName as _e,HTTP_METHODS as Be}from"./utils/http-methods.js";import{convertSampleToString as He}from"./services/code-samples/convertSampleToString.js";import{resolveOperationSampleContext as Je,buildCodeSamples as Ue,getRequestBodySamples as Ye,getResponseSamples as je}from"./services/operation-samples/index.js";export{ee as ApiDocsSearchIndexer,ae as EmbeddedReplay,ye as GraphQLTypeViewByName,Be as HTTP_METHODS,Ve as JsonPointer,q as MarkdownAdapterProvider,ie as REPLAY_TRY_IT_LOADING_STATE,ce as RedocCodeSample,le as RedocExample,ne as RedocResponseSamples,xe as RedocSchema,oe as RedocTelemetry,W as RedoclyApiDocs,Z as RedoclyApiDocsStandalone,pe as Replay,Se as StoreProvider,K as apiDocsMarkdocComponents,j as apiDocsMarkdocNodes,Y as apiDocsMarkdocTags,S as appendUndeclaredConfigureParameters,P as applyRequestValuesToOperationInfo,O as applyServerVariableDefaults,Ue as buildCodeSamples,m as buildGraphqlStoreFromSdl,t as buildItems,J as buildMarkdocOptions,p as buildNavItems,Ee as buildReplayPredefinedEnvValues,He as convertSampleToString,N as createMarkdocAdapter,k as createSecurityUpdates,Fe as encodeExampleForMediaType,Ie as encodeJsonPointerSegment,c as excludeMockServers,f as extractFullText,se as findExampleIdByKey,D as findFirstBinding,h as getEffectiveRequestValues,Ye as getRequestBodySamples,je as getResponseSamples,b as isDirectRequestValues,y as isGraphqlDocsSidebarHidden,_e as isOperationName,H as isPlainText,Ce as langFromMime,C as markdocParser,De as mcpTagSchemas,he as mergeEnvData,E as mergeSecurityIntoScheme,l as normalizeOptions,B as parseMarkdown,Je as resolveOperationSampleContext,M as resolveRequestValues,Me as schemaDefinitionTag,d as simplifyAstStructure,A as updateObjectProperties,V as useMarkdownAdapter,Ae as useOpenApiDefinition,ve as withReplayPrefetch};
@@ -15,6 +15,7 @@ export type AppSessionStore = {
15
15
  export type AppStore = {
16
16
  activeMimeName: string;
17
17
  layout: LayoutVariant;
18
+ colorMode: string;
18
19
  language: string;
19
20
  environment: string;
20
21
  environments: Record<string, Record<string, string>>;
@@ -47,6 +48,11 @@ export declare const allowedEnvironmentsAtom: import("jotai").WritableAtom<strin
47
48
  * appSessionStore saved to session storage
48
49
  */
49
50
  export declare const appSessionStore: import("jotai").WritableAtom<AppSessionStore, [typeof import("jotai/utils").RESET | AppSessionStore | ((prev: AppSessionStore) => typeof import("jotai/utils").RESET | AppSessionStore)], void>;
51
+ /** Mobile sidebar drawer — open state is per-view, never persisted. */
52
+ export declare const isSidebarOpenedAtom: import("jotai").PrimitiveAtom<boolean> & {
53
+ init: boolean;
54
+ };
55
+ export declare const colorModeAtom: import("jotai").WritableAtom<string, string[], void>;
50
56
  export declare const collapsedSidebarAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
51
57
  export declare const languageAtom: import("jotai").WritableAtom<LanguageAtom, [string], void>;
52
58
  export declare const selectedSecuritySchemeIdxAtom: import("jotai").PrimitiveAtom<number> & {
package/lib/jotai/app.js CHANGED
@@ -1 +1 @@
1
- import{atom as r}from"jotai";import{atomWithStorage as v,createJSONStorage as A}from"jotai/utils";import{LayoutVariant as y}from"@redocly/config";import{getCookie as x,removeCookie as k,setCookie as C}from"../utils/cookies.js";import{mergeEnvData as l,IS_BROWSER as E}from"../utils/environments.js";import{keepReadingSectionAnchored as N}from"../utils/scroll-anchoring.js";import{safeJsonParse as g}from"../utils/string.js";import{fromSessionStorage as O,toSessionStorage as b}from"../utils/session-storage.js";import{DEFAULT_LAYOUT as V}from"../options/constants.js";import{globalOptionsAtom as I}from"./store.js";const d={activeMimeName:"",layout:V,language:"",environment:"",environments:{},userClaims:{},allowedEnvironments:null},L={getItem:e=>{const o=g(x(e,globalThis.redoclyCookieStorage?.getStore?.())),t=g(O(e));return{...d,...t,...o}},setItem:(e,o)=>{const{environments:t,...n}=o,a={environments:t};C(e,JSON.stringify(n)),b(e,JSON.stringify(a))},removeItem:e=>{k(e),sessionStorage.removeItem(e)}},s=v("redoc.appStore",d,L),U=r(e=>{const o=e(s);return l(o.environments,{})}),W=r(e=>{const o=e(s),t=l(o.environments,{}),n=o.environment,a=Object.keys(t).find(c=>t[c]?.server===n),i=t[n]?n:a??Object.keys(t)[0];let m=t[i]||{};return!m.server&&a&&(m={...t[a],...m}),[m,i||""]},(e,o,{environment:t,environments:n})=>{const a=e(s);o(s,{...a,environment:t||a.environment,environments:l(a.environments||{},n)})}),_=r(e=>e(s).environment),p=r(e=>e(s).activeMimeName,(e,o,t)=>{const n=e(s);o(s,{...n,activeMimeName:t})}),S=r(void 0),q=r(e=>e(S)??(e(p)||void 0),(e,o,t)=>{o(S,void 0),(t??"")!==e(p)&&N(),o(p,t??"")}),B=r(e=>e(s).layout,(e,o,t=y.STACKED)=>{const n=e(s);o(s,{...n,layout:t})}),P=r(e=>e(s).userClaims,(e,o,t)=>{const n=e(s);o(s,{...n,userClaims:t})}),Y=r(e=>e(s).allowedEnvironments,(e,o,t)=>{const n=e(s);o(s,{...n,allowedEnvironments:t})}),u=v("redoc.appSessionStore",{collapsedSidebar:!1,unsupportedFeatureScreen:!1},E?A(()=>sessionStorage):void 0),z=r(e=>e(u).collapsedSidebar,(e,o,t)=>{const n=e(u);o(u,{...n,collapsedSidebar:t})}),G=r(e=>{const o=e(I),{codeSamples:t}=o;if(!t?.languages)return{languages:[],activeLanguage:e(s).language||""};const n=t.languages.map(({key:i,label:m,lang:c},f)=>({key:i,lang:c,title:m,order:f})),a=e(s).language||n[0]?.key;return{languages:n,activeLanguage:n.find(({key:i})=>i===a)?.key||n[0]?.key}},(e,o,t)=>{const n=e(s);o(s,{...n,language:t})}),H=r(0),Q=r({}),X=r(null),Z=r([]);export{q as activeMediaTypeAtom,p as activeMimeNameAtom,X as activeScrollSectionAtom,Y as allowedEnvironmentsAtom,u as appSessionStore,s as appStore,z as collapsedSidebarAtom,W as environmentAtom,U as environmentsAtom,G as languageAtom,B as layoutAtom,S as mediaTypeOverrideAtom,Q as requestValuesAtom,_ as savedEnvironmentNameAtom,H as selectedSecuritySchemeIdxAtom,P as userClaimsAtom,Z as visitedChannelsAtom};
1
+ import{atom as r}from"jotai";import{atomWithStorage as g,createJSONStorage as y}from"jotai/utils";import{LayoutVariant as O}from"@redocly/config";import{DEFAULT_COLOR_MODES as c}from"@redocly/theme/core/constants";import{getCookie as E,removeCookie as L,setCookie as k}from"../utils/cookies.js";import{mergeEnvData as p,IS_BROWSER as d}from"../utils/environments.js";import{keepReadingSectionAnchored as C}from"../utils/scroll-anchoring.js";import{safeJsonParse as S}from"../utils/string.js";import{fromSessionStorage as M,toSessionStorage as h}from"../utils/session-storage.js";import{DEFAULT_LAYOUT as N}from"../options/constants.js";import{globalOptionsAtom as T}from"./store.js";const f={activeMimeName:"",layout:N,colorMode:"",language:"",environment:"",environments:{},userClaims:{},allowedEnvironments:null},b={getItem:e=>{const o=S(E(e,globalThis.redoclyCookieStorage?.getStore?.())),t=S(M(e));return{...f,...t,...o}},setItem:(e,o)=>{const{environments:t,...n}=o,a={environments:t};k(e,JSON.stringify(n)),h(e,JSON.stringify(a))},removeItem:e=>{L(e),sessionStorage.removeItem(e)}},s=g("redoc.appStore",f,b),H=r(e=>{const o=e(s);return p(o.environments,{})}),W=r(e=>{const o=e(s),t=p(o.environments,{}),n=o.environment,a=Object.keys(t).find(l=>t[l]?.server===n),i=t[n]?n:a??Object.keys(t)[0];let m=t[i]||{};return!m.server&&a&&(m={...t[a],...m}),[m,i||""]},(e,o,{environment:t,environments:n})=>{const a=e(s);o(s,{...a,environment:t||a.environment,environments:p(a.environments||{},n)})}),B=r(e=>e(s).environment),u=r(e=>e(s).activeMimeName,(e,o,t)=>{const n=e(s);o(s,{...n,activeMimeName:t})}),A=r(void 0),P=r(e=>e(A)??(e(u)||void 0),(e,o,t)=>{o(A,void 0),(t??"")!==e(u)&&C(),o(u,t??"")}),Y=r(e=>e(s).layout,(e,o,t=O.STACKED)=>{const n=e(s);o(s,{...n,layout:t})}),z=r(e=>e(s).userClaims,(e,o,t)=>{const n=e(s);o(s,{...n,userClaims:t})}),Q=r(e=>e(s).allowedEnvironments,(e,o,t)=>{const n=e(s);o(s,{...n,allowedEnvironments:t})}),v=g("redoc.appSessionStore",{collapsedSidebar:!1,unsupportedFeatureScreen:!1},d?y(()=>sessionStorage):void 0),X=r(!1),D=[c.LIGHT,c.DARK];function I(e){const o=document.documentElement;D.forEach(t=>o.classList.remove(t)),o.classList.add(e,"notransition"),window.requestAnimationFrame(()=>{o.classList.remove("notransition")})}const Z=r(e=>{const o=e(s).colorMode||(d&&window.matchMedia?.("(prefers-color-scheme: dark)").matches?c.DARK:c.LIGHT);return d&&I(o),o},(e,o,t)=>{const n=e(s);o(s,{...n,colorMode:t})}),$=r(e=>e(v).collapsedSidebar,(e,o,t)=>{const n=e(v);o(v,{...n,collapsedSidebar:t})}),ee=r(e=>{const o=e(T),{codeSamples:t}=o;if(!t?.languages)return{languages:[],activeLanguage:e(s).language||""};const n=t.languages.map(({key:i,label:m,lang:l},x)=>({key:i,lang:l,title:m,order:x})),a=e(s).language||n[0]?.key;return{languages:n,activeLanguage:n.find(({key:i})=>i===a)?.key||n[0]?.key}},(e,o,t)=>{const n=e(s);o(s,{...n,language:t})}),oe=r(0),te=r({}),ne=r(null),se=r([]);export{P as activeMediaTypeAtom,u as activeMimeNameAtom,ne as activeScrollSectionAtom,Q as allowedEnvironmentsAtom,v as appSessionStore,s as appStore,$ as collapsedSidebarAtom,Z as colorModeAtom,W as environmentAtom,H as environmentsAtom,X as isSidebarOpenedAtom,ee as languageAtom,Y as layoutAtom,A as mediaTypeOverrideAtom,te as requestValuesAtom,B as savedEnvironmentNameAtom,oe as selectedSecuritySchemeIdxAtom,z as userClaimsAtom,se as visitedChannelsAtom};
@@ -1 +1 @@
1
- import{atom as m}from"jotai";import{atomFamily as f}from"jotai-family";import*as q from"openapi-sampler";import{schemaKind as g}from"../types/common.js";import{convertSampleToString as y}from"../services/code-samples/index.js";import{applyActiveVariantsToStore as h}from"../services/code-samples/discriminator.js";import{isSequentialMediaType as E}from"../utils/media-type.js";import{storeAtom as M,globalOptionsAtom as j}from"./store.js";import{schemaStoreAtom as l}from"./schema.js";import{activeDiscriminatorSelectAtom as F,activeOneOfSelectAtom as N}from"./itemStore.js";const G=m(t=>t(M).exampleStore??{});function x(t){const e={};for(const[n,r]of Object.entries(t)){const o=n.startsWith("components/schemas/")?n.replace("components/schemas/",""):n;e[o]=r}return{openapi:"3.0.0",info:{title:"",version:""},paths:{},components:{schemas:e}}}function R(t,e){return!!t&&Object.keys(t).length>0||!!e&&Object.keys(e).length>0}const u=m(t=>h(t(l))),A=f(t=>m(e=>{if(!t)return e(u);const n=e(F(t)),r=e(N(t));return R(n,r)?h(e(l),n,r):e(u)})),V=m(t=>x(t(u))),C=f(t=>m(e=>{const n=e(A(t));return n===e(u)?e(V):x(n)})),D="";function Q(t,e,n,r){return t?JSON.stringify({itemId:r??"",schemaId:t,context:e??"",mediaType:n??""}):D}function J(t){if(t)try{const e=JSON.parse(t);if(!e||typeof e.schemaId!="string"||!e.schemaId)return;const n=typeof e.itemId=="string"?e.itemId:"",r=typeof e.context=="string"?e.context:"",o=typeof e.mediaType=="string"?e.mediaType:"";return{itemId:n,schemaId:e.schemaId,context:r==="request"||r==="response"?r:void 0,mediaType:o||void 0}}catch{return}}const U=f(t=>{const e=J(t);return m(n=>{if(!e)return;const{itemId:r,schemaId:o,context:i,mediaType:p}=e,s=n(l)[o];if(!s||s.kind!==g.JSON_SCHEMA)return;const d=n(C(r)),b=n(A(r))[o]??s.data,{onlyRequiredInSamples:v,generatedSamplesMaxDepth:I,unstable_skipSamples:T}=n(j);if(T)return;const a=p?.toLowerCase(),k=a?a.includes("xml"):!1;try{const S={context:i,skipNonRequired:i==="request"&&v,maxSampleDepth:I,isXml:k},c=O(b,d,S);return c==null?c:a&&E(a)?K(s.data,c,d,S,a):c}catch{return}})});function K(t,e,n,r,o){const i=_(t);if(i.length>0){const p=i.map(s=>O(s,n,r)).filter(s=>s!=null);if(p.length>0)return y(p,o,t,!1)}return y(e,o,t,!0)}function _(t){const e=t.oneOf;return Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null):[]}function O(t,e,{context:n,skipNonRequired:r,maxSampleDepth:o,isXml:i}){return q.sample(t,{skipReadOnly:n==="request",skipWriteOnly:n==="response",quiet:!0,skipNonRequired:r,maxSampleDepth:o,...i&&{format:"xml"}},e)}export{Q as buildExampleAtomKey,G as exampleStoreAtom,U as generatedExampleAtom,C as itemSpecForSamplerAtom};
1
+ import{atom as m}from"jotai";import{atomFamily as f}from"jotai-family";import*as E from"openapi-sampler";import{schemaKind as g}from"../types/common.js";import{convertSampleToString as y}from"../services/code-samples/index.js";import{applyActiveVariantsToStore as h}from"../services/code-samples/discriminator.js";import{isSequentialMediaType as M}from"../utils/media-type.js";import{storeAtom as j,globalOptionsAtom as x}from"./store.js";import{schemaStoreAtom as l}from"./schema.js";import{activeDiscriminatorSelectAtom as F,activeOneOfSelectAtom as N}from"./itemStore.js";const G=m(t=>t(j).exampleStore??{});function A(t){const e={};for(const[n,r]of Object.entries(t)){const o=n.startsWith("components/schemas/")?n.replace("components/schemas/",""):n;e[o]=r}return{openapi:"3.0.0",info:{title:"",version:""},paths:{},components:{schemas:e}}}function R(t,e){return!!t&&Object.keys(t).length>0||!!e&&Object.keys(e).length>0}const u=m(t=>h(t(l))),O=f(t=>m(e=>{if(!t)return e(u);const n=e(F(t)),r=e(N(t));return R(n,r)?h(e(l),n,r):e(u)})),V=m(t=>A(t(u))),C=f(t=>m(e=>{const n=e(O(t));return n===e(u)?e(V):A(n)})),D="";function Q(t,e,n,r){return t?JSON.stringify({itemId:r??"",schemaId:t,context:e??"",mediaType:n??""}):D}function J(t){if(t)try{const e=JSON.parse(t);if(!e||typeof e.schemaId!="string"||!e.schemaId)return;const n=typeof e.itemId=="string"?e.itemId:"",r=typeof e.context=="string"?e.context:"",o=typeof e.mediaType=="string"?e.mediaType:"";return{itemId:n,schemaId:e.schemaId,context:r==="request"||r==="response"?r:void 0,mediaType:o||void 0}}catch{return}}const U=f(t=>{const e=J(t);return m(n=>{if(!e)return;const{itemId:r,schemaId:o,context:i,mediaType:p}=e,s=n(l)[o];if(!s||s.kind!==g.JSON_SCHEMA)return;const d=n(C(r)),v=n(O(r))[o]??s.data,{onlyRequiredInSamples:I,generatedSamplesMaxDepth:T}=n(x),{unstable_skipSamples:k}=n(x);if(k)return;const a=p?.toLowerCase(),q=a?a.includes("xml"):!1;try{const S={context:i,skipNonRequired:i==="request"&&I,maxSampleDepth:T,isXml:q},c=b(v,d,S);return c==null?c:a&&M(a)?K(s.data,c,d,S,a):c}catch{return}})});function K(t,e,n,r,o){const i=_(t);if(i.length>0){const p=i.map(s=>b(s,n,r)).filter(s=>s!=null);if(p.length>0)return y(p,o,t,!1)}return y(e,o,t,!0)}function _(t){const e=t.oneOf;return Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null):[]}function b(t,e,{context:n,skipNonRequired:r,maxSampleDepth:o,isXml:i}){return E.sample(t,{skipReadOnly:n==="request",skipWriteOnly:n==="response",quiet:!0,skipNonRequired:r,maxSampleDepth:o,...i&&{format:"xml"}},e)}export{Q as buildExampleAtomKey,G as exampleStoreAtom,U as generatedExampleAtom,C as itemSpecForSamplerAtom};
@@ -3,6 +3,7 @@ export type ItemStore = {
3
3
  activeDiscriminator: Record<string, number>;
4
4
  activeOneOf: Record<string, number>;
5
5
  activeResponseCode: string;
6
+ activeExampleKey: string;
6
7
  activeMessageKey: string;
7
8
  selectedCallback: string;
8
9
  expandableSections: Record<string, boolean | undefined>;
@@ -1 +1 @@
1
- import{atom as p}from"jotai";import{selectAtom as m}from"jotai/utils";import{atomFamily as c}from"jotai-family";import{keepReadingSectionAnchored as x}from"../utils/scroll-anchoring.js";const O=Object.freeze({activeDiscriminator:Object.freeze({}),activeOneOf:Object.freeze({}),activeResponseCode:"",activeMessageKey:"",selectedCallback:"",expandableSections:Object.freeze({}),collapsibles:Object.freeze({})});function u(){return O}const l=p({}),y=["activeResponseCode","activeMessageKey","activeOneOf","activeDiscriminator"],f=c(e=>p(t=>t(l)[e]??u(),(t,n,o)=>{const i=t(l),r=i[e]??u(),a=typeof o=="function"?o(r):o;y.some(s=>s in a&&a[s]!==r[s])&&x(),n(l,{...i,[e]:{...r,...a}})})),A=c(e=>m(f(e.itemId),t=>t[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function S(e){return A(e)}function j(e,t){const n=e?.length?e.join("/"):"";return n?`${n}/${t}`:t}function R(e){return S({itemId:e,key:"activeDiscriminator"})}function D(e){return S({itemId:e,key:"activeOneOf"})}const b=c(e=>m(f(e.itemId),t=>t.expandableSections[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function F(e,t){return b({itemId:e,key:t})}const d="#";function K(e,t){return`${e}${d}${t}`}function T(e){const t=e.indexOf(d);return t===-1?e:e.slice(0,t)}const v=c(e=>m(f(e),t=>Object.keys(t.expandableSections),(t,n)=>t.length===n.length&&t.every((o,i)=>o===n[i])));function _(e){return v(e)}export{R as activeDiscriminatorSelectAtom,D as activeOneOfSelectAtom,K as buildCollapsibleEntryKey,j as buildVariantStateKey,T as collapsibleEntrySection,F as expandableSectionAtom,_ as expandableSectionKeysAtom,f as itemStoreAtom,S as itemStoreFieldAtom};
1
+ import{atom as p}from"jotai";import{selectAtom as s}from"jotai/utils";import{atomFamily as c}from"jotai-family";import{keepReadingSectionAnchored as S}from"../utils/scroll-anchoring.js";const d=Object.freeze({activeDiscriminator:Object.freeze({}),activeOneOf:Object.freeze({}),activeResponseCode:"",activeExampleKey:"",activeMessageKey:"",selectedCallback:"",expandableSections:Object.freeze({}),collapsibles:Object.freeze({})});function u(){return d}const l=p({}),O=["activeResponseCode","activeMessageKey","activeExampleKey","activeOneOf","activeDiscriminator"],f=c(e=>p(t=>t(l)[e]??u(),(t,n,o)=>{const i=t(l),r=i[e]??u(),a=typeof o=="function"?o(r):o;O.some(m=>m in a&&a[m]!==r[m])&&S(),n(l,{...i,[e]:{...r,...a}})})),A=c(e=>s(f(e.itemId),t=>t[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function x(e){return A(e)}function g(e,t){const n=e?.length?e.join("/"):"";return n?`${n}/${t}`:t}function j(e){return x({itemId:e,key:"activeDiscriminator"})}function R(e){return x({itemId:e,key:"activeOneOf"})}const b=c(e=>s(f(e.itemId),t=>t.expandableSections[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function D(e,t){return b({itemId:e,key:t})}const y="#";function F(e,t){return`${e}${y}${t}`}function T(e){const t=e.indexOf(y);return t===-1?e:e.slice(0,t)}const v=c(e=>s(f(e),t=>Object.keys(t.expandableSections),(t,n)=>t.length===n.length&&t.every((o,i)=>o===n[i])));function _(e){return v(e)}export{j as activeDiscriminatorSelectAtom,R as activeOneOfSelectAtom,F as buildCollapsibleEntryKey,g as buildVariantStateKey,T as collapsibleEntrySection,D as expandableSectionAtom,_ as expandableSectionKeysAtom,f as itemStoreAtom,x as itemStoreFieldAtom};
@@ -0,0 +1,3 @@
1
+ import type { RawApiDocsOptions } from '../types/options.js';
2
+ /** Option overrides applied on top of host options in `normalizeOptions`. The community edition forces enterprise options off here. */
3
+ export declare const EDITION_OPTION_OVERRIDES: Partial<RawApiDocsOptions>;
@@ -0,0 +1 @@
1
+ const I={};export{I as EDITION_OPTION_OVERRIDES};
@@ -1,7 +1,7 @@
1
1
  import { LayoutVariant, type RedocConfig } from '@redocly/config';
2
2
  import type { ApiSpecType } from '../types/common.js';
3
3
  import type { RawApiDocsOptions } from '../types/options.js';
4
- import type { CodeSamplesConfig } from '../types/options.js';
4
+ import type { CodeSamplesConfig } from '../types/code-samples-config.js';
5
5
  export declare function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean;
6
6
  export declare function argValueToNumber(value: number | string | undefined, defaultValue?: number): number;
7
7
  export declare function argValueToInt(value: number | string | undefined, defaultValue?: number): number;
@@ -1,2 +1,2 @@
1
1
  import type { ApiDocsOptions, RawApiDocsOptions } from '../types/options.js';
2
- export declare function normalizeOptions(options: RawApiDocsOptions): ApiDocsOptions;
2
+ export declare function normalizeOptions(rawOptions: RawApiDocsOptions): ApiDocsOptions;
@@ -1 +1 @@
1
- import{addTrailingSlash as d}from"@redocly/theme/core/openapi";import{WindowReferenceOptions as m}from"../constants/openapi.js";import{argValueToBoolean as a,argValueToExpandLevel as r,argValueToInt as l,argValueToNumber as S,normalizeCodeSamples as i,normalizeDownloadUrls as n,normalizeIgnoreNamedSchemas as E,normalizeLayout as h,normalizePath as c,normalizeScrollYOffset as u,normalizeShowExtensions as _}from"./helpers.js";import{ASYNCAPI_DEFAULT_JSON_SAMPLES_DEPTH as L,DEFAULT_FEEDBACK as f,DEFAULT_MAX_DISPLAYED_ENUM_VALUES as P,GENERATED_SAMPLES_MAX_DEPTH_DEFAULT as A,GRAPHQL_DEFAULT_FIELD_EXPAND_LEVEL as D,GRAPHQL_DEFAULT_JSON_SAMPLES_DEPTH as t,GRAPHQL_DEFAULT_SAMPLES_MAX_INLINE_ARGS as T,JSON_SAMPLES_EXPAND_LEVEL_DEFAULT as s,MOCK_SERVER_DEFAULT_DESCRIPTION as I,MOCK_SERVER_DEFAULT_POSITION as x,DEFAULT_ROUTING_BASE_PATH as R}from"./constants.js";import{apiSpecType as U}from"../types/common.js";function b(e){return{specType:e.specType,licenseKey:e.licenseKey,metadata:e.metadata??{},downloadUrls:n(e.downloadUrls??[],e.specType),userClaims:e.userClaims,dynamicRequestValues:e.dynamicRequestValues,schemaDefinitionsTagName:e.schemaDefinitionsTagName,corsProxyUrl:e.corsProxyUrl?d(e.corsProxyUrl):void 0,hideSidebar:a(e.hideSidebar,!1),jsonSamplesExpandLevel:r(e.jsonSamplesExpandLevel,s)??s,generatedSamplesMaxDepth:l(e.generatedSamplesMaxDepth,A),hideDownloadButtons:a(e.hideDownloadButtons,!1),hideInfoMetadata:a(e.hideInfoMetadata,!1),hideLoading:a(e.hideLoading,!1),hideSchemaTitles:a(e.hideSchemaTitles,!1),hideSchemaPattern:a(e.hideSchemaPattern,!1),maxDisplayedEnumValues:S(e.maxDisplayedEnumValues,P),mockServer:e.mockServer?.url?{url:e.mockServer.url,position:e.mockServer.position||x,description:e.mockServer.description||I}:void 0,hideReplay:a(e.hideReplay,!1),oAuth2RedirectURI:e.oAuth2RedirectURI,onlyRequiredInSamples:a(e.onlyRequiredInSamples,!1),[m.ON_DEEP_LINK_CLICK]:e.onDeepLinkClick??null,basePath:e.basePath?c(e.basePath):R,schemasExpansionLevel:r(e.schemasExpansionLevel),feedback:e.feedback??f,sortRequiredPropsFirst:a(e.sortRequiredPropsFirst??e.requiredPropsFirst,!1),scrollYOffset:u(e.scrollYOffset),showExtensions:_(e.showExtensions),sanitize:a(e.sanitize,!1),skipBundle:a(e.skipBundle,!1),ignoreNamedSchemas:new Set(E(e.ignoreNamedSchemas)),markdocOptions:e.markdocOptions,markdownParser:e.markdownParser,codeSamples:i(e.codeSamples),layout:h(e.layout),events:e.events??{},unstable_hooks:e.unstable_hooks??{},unstable_skipSamples:a(e.unstable_skipSamples,!1),unstable_externalCodeSamples:e.unstable_externalCodeSamples??[],hidePropertiesPrefix:a(e?.hidePropertiesPrefix,!1),showSchemaCatalogLinks:a(e?.showSchemaCatalogLinks,!1),baseUrlPath:e.baseUrlPath,jsonSamplesDepth:l(e.jsonSamplesDepth,e.specType===U.ASYNCAPI?L:t),samplesMaxInlineArgs:l(e.samplesMaxInlineArgs,T),fieldExpandLevel:l(e.fieldExpandLevel,D),menu:e.menu,sidebar:e.sidebar,showBuiltInScalars:e.showBuiltInScalars,showBuiltInDirectives:e.showBuiltInDirectives,info:e.info,markdown:e.markdown,apiLogo:e.apiLogo,protocol:e.protocol}}export{b as normalizeOptions};
1
+ import{addTrailingSlash as r}from"@redocly/theme/core/openapi";import{WindowReferenceOptions as n}from"../constants/openapi.js";import{argValueToBoolean as a,argValueToExpandLevel as o,argValueToInt as s,argValueToNumber as t,normalizeCodeSamples as d,normalizeDownloadUrls as m,normalizeIgnoreNamedSchemas as p,normalizeLayout as S,normalizePath as E,normalizeScrollYOffset as h,normalizeShowExtensions as c}from"./helpers.js";import{ASYNCAPI_DEFAULT_JSON_SAMPLES_DEPTH as _,DEFAULT_FEEDBACK as u,DEFAULT_MAX_DISPLAYED_ENUM_VALUES as L,GENERATED_SAMPLES_MAX_DEPTH_DEFAULT as f,GRAPHQL_DEFAULT_FIELD_EXPAND_LEVEL as P,GRAPHQL_DEFAULT_JSON_SAMPLES_DEPTH as A,GRAPHQL_DEFAULT_SAMPLES_MAX_INLINE_ARGS as D,JSON_SAMPLES_EXPAND_LEVEL_DEFAULT as i,MOCK_SERVER_DEFAULT_DESCRIPTION as T,MOCK_SERVER_DEFAULT_POSITION as I,DEFAULT_ROUTING_BASE_PATH as R}from"./constants.js";import{apiSpecType as x}from"../types/common.js";import{EDITION_OPTION_OVERRIDES as N}from"./editionOverrides.js";function b(l){const e={...l,...N};return{specType:e.specType,licenseKey:e.licenseKey,metadata:e.metadata??{},downloadUrls:m(e.downloadUrls??[],e.specType),userClaims:e.userClaims,dynamicRequestValues:e.dynamicRequestValues,schemaDefinitionsTagName:e.schemaDefinitionsTagName,corsProxyUrl:e.corsProxyUrl?r(e.corsProxyUrl):void 0,hideSidebar:a(e.hideSidebar,!1),hideSearch:a(e.hideSearch,!1),jsonSamplesExpandLevel:o(e.jsonSamplesExpandLevel,i)??i,generatedSamplesMaxDepth:s(e.generatedSamplesMaxDepth,f),hideDownloadButtons:a(e.hideDownloadButtons,!1),hideInfoMetadata:a(e.hideInfoMetadata,!1),hideLoading:a(e.hideLoading,!1),hideSchemaTitles:a(e.hideSchemaTitles,!1),hideSchemaPattern:a(e.hideSchemaPattern,!1),maxDisplayedEnumValues:t(e.maxDisplayedEnumValues,L),mockServer:e.mockServer?.url?{url:e.mockServer.url,position:e.mockServer.position||I,description:e.mockServer.description||T}:void 0,hideReplay:a(e.hideReplay,!1),oAuth2RedirectURI:e.oAuth2RedirectURI,onlyRequiredInSamples:a(e.onlyRequiredInSamples,!1),[n.ON_DEEP_LINK_CLICK]:e.onDeepLinkClick??null,basePath:e.basePath?E(e.basePath):R,schemasExpansionLevel:o(e.schemasExpansionLevel),feedback:e.feedback??u,sortRequiredPropsFirst:a(e.sortRequiredPropsFirst??e.requiredPropsFirst,!1),scrollYOffset:h(e.scrollYOffset),showExtensions:c(e.showExtensions),sanitize:a(e.sanitize,!1),skipBundle:a(e.skipBundle,!1),ignoreNamedSchemas:new Set(p(e.ignoreNamedSchemas)),markdocOptions:e.markdocOptions,markdownParser:e.markdownParser,codeSamples:d(e.codeSamples),layout:S(e.layout),events:e.events??{},unstable_hooks:e.unstable_hooks??{},unstable_skipSamples:a(e.unstable_skipSamples,!1),unstable_externalCodeSamples:e.unstable_externalCodeSamples??[],hidePropertiesPrefix:a(e?.hidePropertiesPrefix,!1),showSchemaCatalogLinks:a(e?.showSchemaCatalogLinks,!1),baseUrlPath:e.baseUrlPath,jsonSamplesDepth:s(e.jsonSamplesDepth,e.specType===x.ASYNCAPI?_:A),samplesMaxInlineArgs:s(e.samplesMaxInlineArgs,D),fieldExpandLevel:s(e.fieldExpandLevel,P),menu:e.menu,sidebar:e.sidebar,showBuiltInScalars:e.showBuiltInScalars,showBuiltInDirectives:e.showBuiltInDirectives,info:e.info,markdown:e.markdown,apiLogo:e.apiLogo,protocol:e.protocol}}export{b as normalizeOptions};
@@ -1,4 +1,4 @@
1
- import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Fragment as v,memo as u}from"react";import{styled as p}from"styled-components";import{useAtomValue as s}from"jotai";import{ComponentMapper as k}from"../components/Mapper.js";import{SchemaCatalogLink as I}from"../components/SchemaCatalogLink.js";import{RenderHook as c}from"../components/RenderHook.js";import{ContentWrapper as l}from"../components/common/ContentWrapper.js";import{globalOptionsAtom as x,routingBasePathAtom as y}from"../jotai/store.js";import{compose as A}from"../utils/compose.js";import{toElementId as O}from"../utils/url.js";import{withItemId as C}from"../hoc/withItemId.js";import{SECTION_ATTR as T}from"../constants/openapi.js";function j({content:o,itemPath:e,sectionId:a}){const{children:f}=o||{},i=o?.meta?.pointer,{unstable_hooks:n}=s(x),b=s(y),g=a?{[T]:a}:{},h=e?O(e,b):void 0;return m(P,{id:h,...g,"data-item-kind":o.itemVariant,"data-has-divider":o.showDivider||void 0,children:[r(c,{Hook:n?.BeforeOperation,props:{operation:o}}),f?.map((t,d)=>m(v,{children:[r(k,{type:t.nodeType,node:t,itemPath:e}),d===0&&i&&r(l,{children:r(I,{schemaRef:"#"+i})})]},`${e}-${t.nodeType}-${d}`)),r(c,{Hook:n?.AfterOperation,props:{operation:o}}),o.showDivider&&r(l,{children:r(w,{})})]})}const N=A(C,u)(j),w=p.div`
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{Fragment as v,memo as u}from"react";import{styled as p}from"styled-components";import{useAtomValue as s}from"jotai";import{ComponentMapper as k}from"../components/Mapper.js";import{SchemaCatalogLink as y}from"../components/SchemaCatalogLink.js";import{RenderHook as c}from"../components/RenderHook.js";import{ContentWrapper as l}from"../components/common/ContentWrapper.js";import{globalOptionsAtom as I}from"../jotai/store.js";import{routingBasePathAtom as x}from"../jotai/store.js";import{compose as A}from"../utils/compose.js";import{toElementId as O}from"../utils/url.js";import{withItemId as C}from"../hoc/withItemId.js";import{SECTION_ATTR as T}from"../constants/openapi.js";function j({content:o,itemPath:e,sectionId:i}){const{children:f}=o||{},a=o?.meta?.pointer,{unstable_hooks:n}=s(I),g=s(x),b=i?{[T]:i}:{},h=e?O(e,g):void 0;return d(P,{id:h,...b,"data-item-kind":o.itemVariant,"data-has-divider":o.showDivider||void 0,children:[r(c,{Hook:n?.BeforeOperation,props:{operation:o}}),f?.map((t,m)=>d(v,{children:[r(k,{type:t.nodeType,node:t,itemPath:e}),m===0&&a&&r(l,{children:r(y,{schemaRef:"#"+a})})]},`${e}-${t.nodeType}-${m}`)),r(c,{Hook:n?.AfterOperation,props:{operation:o}}),o.showDivider&&r(l,{children:r(w,{})})]})}const q=A(C,u)(j),w=p.div`
2
2
  border-bottom: 1px solid var(--border-color-secondary);
3
3
  `,P=p.div`
4
4
  padding-top: calc(var(--spacing-unit) * 16);
@@ -10,9 +10,11 @@ import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Fragment as v,memo as u
10
10
  padding-top: calc(var(--spacing-unit) * 16);
11
11
  padding-bottom: 0;
12
12
 
13
+ // @community-ignore
13
14
  [data-component-name='FeedbackItem'] {
14
15
  margin: 0;
15
16
  }
17
+ // @community-ignore-end
16
18
  }
17
19
 
18
20
  &[data-item-kind='channel'],
@@ -23,4 +25,4 @@ import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Fragment as v,memo as u
23
25
  &[data-item-kind='channelOperation']:not([data-has-divider]) {
24
26
  border-bottom: 1px solid var(--border-color-secondary);
25
27
  }
26
- `;export{N as ItemPage};
28
+ `;export{q as ItemPage};
@@ -0,0 +1,8 @@
1
+ import type { CodeSampleRequestValues } from './source.js';
2
+ /**
3
+ * Substitutes `{{name}}` environment-variable placeholders in a sample using
4
+ * the base env variables plus the active server's scoped overrides.
5
+ * `requestValues.serverEnvVariables` is keyed by the raw (templated) spec
6
+ * server URL.
7
+ */
8
+ export declare function applyEnvVariables(sample: string, requestValues: CodeSampleRequestValues | undefined, activeServerSpecUrl: string | undefined): string;
@@ -0,0 +1 @@
1
+ function o(a,n,r){const l={...n?.envVariables,...r&&n?.serverEnvVariables?.[r]};let e=a;for(const[s,t]of Object.entries(l))e=e.replaceAll(`{{${s}}}`,t);return e}export{o as applyEnvVariables};