@redocly/openapi-docs 3.0.0-alpha.40 → 3.0.0-alpha.42

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 (64) hide show
  1. package/dist/console.redocly-openapi-docs.min.js +53 -53
  2. package/dist/oauth2-redirect.js +1 -1
  3. package/dist/redocly-openapi-docs.min.js +1133 -858
  4. package/lib/components/ApiInfo/ApiInfo.js +1 -1
  5. package/lib/components/ContentItems/ContentItems.js +1 -1
  6. package/lib/components/OperationItem/OperationItem.js +2 -2
  7. package/lib/components/PageFooter/PageFooter.d.ts +14 -0
  8. package/lib/components/PageFooter/PageFooter.js +2 -0
  9. package/lib/components/PageFooter/index.d.ts +1 -0
  10. package/lib/components/PageFooter/index.js +2 -0
  11. package/lib/components/Panel/MiddlePanelWrapper.d.ts +1 -0
  12. package/lib/components/Panel/{MiddleFooterWrapper.js → MiddlePanelWrapper.js} +2 -2
  13. package/lib/components/Panel/index.d.ts +1 -1
  14. package/lib/components/Panel/index.js +1 -1
  15. package/lib/components/RedoclyOpenAPIDocs/styled.js +2 -2
  16. package/lib/components/Samples/SamplesTabs.d.ts +1 -1
  17. package/lib/components/Samples/SamplesTabs.js +1 -1
  18. package/lib/components/SectionContent/SectionContent.d.ts +2 -3
  19. package/lib/components/SectionContent/SectionContent.js +1 -1
  20. package/lib/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
  21. package/lib/components/TagItems/TagItems.d.ts +1 -2
  22. package/lib/components/TagItems/TagItems.js +1 -1
  23. package/lib/components/index.d.ts +1 -1
  24. package/lib/components/index.js +1 -1
  25. package/lib/components/rightPanel/CodemirrorInput/types.d.ts +1 -1
  26. package/lib/components/rightPanel/Console/Request.js +1 -1
  27. package/lib/components/rightPanel/utils.d.ts +1 -1
  28. package/lib/models/callback.d.ts +1 -2
  29. package/lib/models/mediaType.d.ts +1 -2
  30. package/lib/models/response.d.ts +1 -2
  31. package/lib/models/schema.d.ts +1 -2
  32. package/lib/services/types.d.ts +1 -0
  33. package/lib-esm/components/ApiInfo/ApiInfo.js +1 -1
  34. package/lib-esm/components/ContentItems/ContentItems.js +1 -1
  35. package/lib-esm/components/OperationItem/OperationItem.js +2 -2
  36. package/lib-esm/components/PageFooter/PageFooter.d.ts +14 -0
  37. package/lib-esm/components/PageFooter/PageFooter.js +2 -0
  38. package/lib-esm/components/PageFooter/index.d.ts +1 -0
  39. package/lib-esm/components/PageFooter/index.js +2 -0
  40. package/lib-esm/components/Panel/MiddlePanelWrapper.d.ts +1 -0
  41. package/lib-esm/components/Panel/{MiddleFooterWrapper.js → MiddlePanelWrapper.js} +2 -2
  42. package/lib-esm/components/Panel/index.d.ts +1 -1
  43. package/lib-esm/components/Panel/index.js +1 -1
  44. package/lib-esm/components/RedoclyOpenAPIDocs/styled.js +2 -2
  45. package/lib-esm/components/Samples/SamplesTabs.d.ts +1 -1
  46. package/lib-esm/components/Samples/SamplesTabs.js +1 -1
  47. package/lib-esm/components/SectionContent/SectionContent.d.ts +2 -3
  48. package/lib-esm/components/SectionContent/SectionContent.js +1 -1
  49. package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
  50. package/lib-esm/components/TagItems/TagItems.d.ts +1 -2
  51. package/lib-esm/components/TagItems/TagItems.js +1 -1
  52. package/lib-esm/components/index.d.ts +1 -1
  53. package/lib-esm/components/index.js +1 -1
  54. package/lib-esm/components/rightPanel/CodemirrorInput/types.d.ts +1 -1
  55. package/lib-esm/components/rightPanel/Console/Request.js +1 -1
  56. package/lib-esm/components/rightPanel/utils.d.ts +1 -1
  57. package/lib-esm/models/callback.d.ts +1 -2
  58. package/lib-esm/models/mediaType.d.ts +1 -2
  59. package/lib-esm/models/response.d.ts +1 -2
  60. package/lib-esm/models/schema.d.ts +1 -2
  61. package/lib-esm/services/types.d.ts +1 -0
  62. package/package.json +3 -3
  63. package/lib/components/Panel/MiddleFooterWrapper.d.ts +0 -1
  64. package/lib-esm/components/Panel/MiddleFooterWrapper.d.ts +0 -1
@@ -1,4 +1,4 @@
1
- import{LayoutVariant}from"@redocly/theme";import styled,{createGlobalStyle,css}from"styled-components";import{SamplesMiddlePanel,SamplesPanel}from"../common/panels";import{MiddleFooterWrapper}from"../Panel/MiddleFooterWrapper";export const RedocWrap=styled.div`
1
+ import{LayoutVariant}from"@redocly/theme";import styled,{createGlobalStyle,css}from"styled-components";import{SamplesMiddlePanel,SamplesPanel}from"../common/panels";import{MiddlePanelWrapper}from"../Panel/MiddlePanelWrapper";export const RedocWrap=styled.div`
2
2
  display: flex;
3
3
  position: relative;
4
4
  text-align: left;
@@ -128,7 +128,7 @@ import{LayoutVariant}from"@redocly/theme";import styled,{createGlobalStyle,css}f
128
128
  `}}
129
129
  }
130
130
 
131
- ${SamplesMiddlePanel}, ${MiddleFooterWrapper} {
131
+ ${SamplesMiddlePanel}, ${MiddlePanelWrapper} {
132
132
  ${({showRightPanelToggle:a,layout:e})=>a&&e===LayoutVariant.THREE_PANEL?css`
133
133
  margin: 0;
134
134
  ${({theme:a})=>a.mediaQueries.small} {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { TabProps, TabsProps } from '../Tabs';
2
+ import type { TabsProps, TabProps } from '../Tabs';
3
3
  interface SampleProps extends TabProps {
4
4
  lang: string;
5
5
  key: string;
@@ -1,2 +1,2 @@
1
- import React,{memo}from"react";import{useRecoilState}from"recoil";import{CollapsingTabsBase}from"../Tabs";import{WarnMessage}from"../shared";import{LoadingWrapper}from"./LoadingWrapper";import{activeSampleLanguageSelector}from"../../recoil/app";function SamplesTabsComponent({children:e,onChange:a,defaultLanguage:t,id:n,tabs:o}){const[c,s]=useRecoilState(activeSampleLanguageSelector),[r,i]=React.useState(t),[l,m]=React.useState(),d=React.useMemo((()=>{const e=o.findIndex((e=>[c,r].includes(e.key)||e.lang===c));return-1===e?0:e}),[o,r,c]),u=React.useMemo((()=>o.map((({lang:e})=>e))),[o]);React.useLayoutEffect((()=>{var e;const a=null===(e=document.getElementById(n))||void 0===e?void 0:e.getBoundingClientRect().y;if(a&&l&&a!==l){const e=a-l;window.requestAnimationFrame((()=>window.scrollBy(0,e))),m(void 0)}}),[u,l,n]),React.useEffect((()=>{r&&s(r)}),[r,t,s]);const p=React.useCallback((e=>{var t;const c=o[e];m(null===(t=document.getElementById(n))||void 0===t?void 0:t.getBoundingClientRect().y),i(c.key),a&&a(c)}),[n,a,o]);return React.createElement(LoadingWrapper,{className:r&&"updated",id:n},React.createElement(CollapsingTabsBase,{tabs:o,activeIndex:d,onChange:p},t&&-1===u.indexOf(t)&&React.createElement(WarnMessage,null,"Provided language is not supported"),e))}export const SamplesTabs=memo(SamplesTabsComponent);
1
+ import React,{memo,useEffect,useLayoutEffect,useMemo,useState}from"react";import{useRecoilState}from"recoil";import{CollapsingTabsBase}from"../Tabs";import{WarnMessage}from"../shared";import{LoadingWrapper}from"./LoadingWrapper";import{activeSampleLanguageSelector}from"../../recoil/app";function SamplesTabsComponent({children:e,onChange:a,defaultLanguage:t="",id:o,tabs:n}){const[s,r]=useRecoilState(activeSampleLanguageSelector),[l,i]=useState(),[c,m]=useState((()=>{const e=n.findIndex((e=>[e.lang,e.key].some((e=>e.toLowerCase()===t.toLowerCase()))));return-1!==e?e:0}));useEffect((()=>{const e=n.findIndex((e=>e.lang.toLocaleLowerCase()===s.toLocaleLowerCase()||e.key.toLocaleLowerCase()===s.toLocaleLowerCase()));if(-1!==e)return m(e)}),[s,n]);const u=useMemo((()=>n.map((({lang:e})=>e))),[n]);useLayoutEffect((()=>{var e;const a=null===(e=document.getElementById(o))||void 0===e?void 0:e.getBoundingClientRect().y;if(a&&l&&a!==l){const e=a-l;window.requestAnimationFrame((()=>window.scrollBy(0,e))),i(void 0)}}),[u,l,o]);return React.createElement(LoadingWrapper,{className:s&&"updated",id:o},React.createElement(CollapsingTabsBase,{tabs:n,activeIndex:c,onChange:e=>{var t;const s=n[e];i(null===(t=document.getElementById(o))||void 0===t?void 0:t.getBoundingClientRect().y),r(s.lang),null==a||a(s)}},t&&-1===u.indexOf(t)&&React.createElement(WarnMessage,null,"Provided language is not supported"),e))}export const SamplesTabs=memo(SamplesTabsComponent);
2
2
  //# sourceMappingURL=SamplesTabs.js.map
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import type { ContentItemModel } from 'src/models';
2
+ import type { ContentItemModel } from '../../models';
3
3
  import type { Options } from '../../services';
4
4
  import { Pagination } from '../../services';
5
5
  interface SectionContentProps {
@@ -10,7 +10,6 @@ interface SectionContentProps {
10
10
  href?: string;
11
11
  };
12
12
  showNextButton: Options['showNextButton'];
13
- footerHook?: Options['hooks']['MiddlePanelFooter'];
14
13
  }
15
- export declare function SectionContent({ items, pagination, nextSectionLink, showNextButton, footerHook, }: SectionContentProps): JSX.Element;
14
+ export declare function SectionContent({ items, pagination, nextSectionLink, showNextButton, }: SectionContentProps): JSX.Element;
16
15
  export {};
@@ -1,2 +1,2 @@
1
- import React,{useMemo}from"react";import{ContentItem}from"../ContentItem";import{NextSectionButton}from"../NextSectionButton";import{Pagination}from"../../services";import{MiddleFooterWrapper}from"../Panel";import{RenderHook}from"../RenderHook";export function SectionContent({items:e,pagination:t,nextSectionLink:o,showNextButton:n,footerHook:r}){const i=useMemo((()=>t===Pagination.None?e:null==e?void 0:e.filter((e=>"section"===e.type))),[e,t]),a=useMemo((()=>r||n&&o?React.createElement(MiddleFooterWrapper,null,r?React.createElement(RenderHook,{Hook:r,props:void 0}):n&&o&&React.createElement(NextSectionButton,{href:(null==o?void 0:o.href)||"",label:null==o?void 0:o.name,pagination:t})):null),[r,o,t,n]);return React.createElement(React.Fragment,null,i.map((e=>React.createElement(ContentItem,{key:e.id,item:e}))),a)}
1
+ import React,{useMemo}from"react";import{OpenApiHeader}from"@redocly/theme";import{ContentItem}from"../ContentItem";import{Pagination}from"../../services";import{MiddlePanelWrapper}from"../Panel";import{PageFooter}from"../PageFooter";export function SectionContent({items:e,pagination:t,nextSectionLink:n,showNextButton:o}){const a=useMemo((()=>t===Pagination.None?e:null==e?void 0:e.filter((e=>"section"===e.type))),[e,t]),r=useMemo((()=>React.createElement(MiddlePanelWrapper,null,React.createElement(PageFooter,{showNextButton:o,pagination:t,nextSectionLink:n}))),[n,t,o]),i=useMemo((()=>OpenApiHeader?React.createElement(MiddlePanelWrapper,null,React.createElement(OpenApiHeader,null)):null),[]);return React.createElement(React.Fragment,null,i,a.map((e=>React.createElement(ContentItem,{key:e.id,item:e}))),r)}
2
2
  //# sourceMappingURL=SectionContent.js.map
@@ -1,2 +1,2 @@
1
- import React from"react";import{Tabs}from"react-tabs";import{useRecoilValue}from"recoil";import{CollapsingDropdown}from"../../common/Dropdown";import{CollapsingTabList}from"./CollapsingTabList";import{CollapsingTab}from"./CollapsingTab";import{globalOptionsSelector}from"../../../recoil/store";function CollapsingTabsBaseComponent({tabs:e,children:o,hidden:t,activeIndex:a,onChange:l}){const{samplesTabsMaxCount:n}=useRecoilValue(globalOptionsSelector),i=React.useMemo((()=>e.slice(n).map((({title:e},o)=>({idx:o,value:e})))),[e,n]),s=`${i.length} more`,[c,r]=React.useState(s),p=React.useCallback((()=>{var o;const t=a>=n;c!==s&&c===e[a].title||!t?c===s||t||r(s):r(null===(o=e[a])||void 0===o?void 0:o.title)}),[a,n,c,s,e]);React.useEffect((()=>{setTimeout(p,0)}),[a,n,p]);return React.createElement(Tabs,{selectedIndex:a,onSelect:l},React.createElement(CollapsingTabList,{hidden:t},e.map(((e,o)=>React.createElement(CollapsingTab,{key:null==e?void 0:e.key,disabled:o>=n},null==e?void 0:e.title))),i.length?React.createElement(CollapsingDropdown,{options:i,onChange:e=>{l(n+e.idx)},placeholder:s,value:c,active:a>=n}):null),o)}export const CollapsingTabsBase=React.memo(CollapsingTabsBaseComponent);
1
+ import React,{memo,useCallback,useEffect,useMemo,useState}from"react";import{Tabs}from"react-tabs";import{useRecoilValue}from"recoil";import{CollapsingDropdown}from"../../common/Dropdown";import{CollapsingTabList}from"./CollapsingTabList";import{CollapsingTab}from"./CollapsingTab";import{globalOptionsSelector}from"../../../recoil/store";function CollapsingTabsBaseComponent({tabs:e,children:o,hidden:l,activeIndex:t,onChange:a}){const{samplesTabsMaxCount:n}=useRecoilValue(globalOptionsSelector),s=useMemo((()=>e.slice(n).map((({title:e},o)=>({idx:o,value:e})))),[e,n]),i=`${s.length} more`,[r,c]=useState(i),m=useCallback((()=>{var o;const l=t>=n;r!==i&&r===e[t].title||!l?r===i||l||c(i):c(null===(o=e[t])||void 0===o?void 0:o.title)}),[t,n,r,i,e]);useEffect((()=>{setTimeout(m,0)}),[t,n,m]);return React.createElement(Tabs,{selectedIndex:t,onSelect:a},React.createElement(CollapsingTabList,{hidden:l},e.map(((e,o)=>React.createElement(CollapsingTab,{key:null==e?void 0:e.key,disabled:o>=n},null==e?void 0:e.title))),s.length?React.createElement(CollapsingDropdown,{options:s,onChange:e=>{a(n+e.idx)},placeholder:i,value:r,active:t>=n}):null),o)}export const CollapsingTabsBase=memo(CollapsingTabsBaseComponent);
2
2
  //# sourceMappingURL=CollapsingTabsBase.js.map
@@ -9,7 +9,6 @@ interface TagItemsProps {
9
9
  };
10
10
  pagination: Options['pagination'];
11
11
  showNextButton?: boolean;
12
- footerHook?: Options['hooks']['MiddlePanelFooter'];
13
12
  }
14
- export declare function TagItems({ tag, nextSectionLink, pagination, showNextButton, footerHook, }: TagItemsProps): JSX.Element;
13
+ export declare function TagItems({ tag, nextSectionLink, pagination, showNextButton, }: TagItemsProps): JSX.Element;
15
14
  export {};
@@ -1,2 +1,2 @@
1
- import React,{useMemo}from"react";import{Pagination}from"../../services";import{ContentItem}from"../ContentItem";import{NextSectionButton}from"../NextSectionButton";import{SectionContent}from"../SectionContent";import{MiddleFooterWrapper}from"../Panel";import{RenderHook}from"../RenderHook";export function TagItems({tag:e,nextSectionLink:t,pagination:o,showNextButton:n,footerHook:i}){const r=useMemo((()=>i||n&&t?React.createElement(MiddleFooterWrapper,null,i?React.createElement(RenderHook,{Hook:i,props:void 0}):n&&t&&React.createElement(NextSectionButton,{href:(null==t?void 0:t.href)||"",label:null==t?void 0:t.name,pagination:o})):null),[i,t,o,n]);return React.createElement(React.Fragment,null,React.createElement(ContentItem,{key:e.id,item:e,withChildren:o!==Pagination.Item}),o===Pagination.Item&&React.createElement(SectionContent,{items:e.items||[],pagination:o,showNextButton:!1}),r)}
1
+ import React,{useMemo}from"react";import{OpenApiHeader}from"@redocly/theme";import{Pagination}from"../../services";import{ContentItem}from"../ContentItem";import{MiddlePanelWrapper}from"../Panel";import{PageFooter}from"../PageFooter";import{SectionContent}from"../SectionContent";export function TagItems({tag:e,nextSectionLink:t,pagination:n,showNextButton:o}){const a=useMemo((()=>{const e=React.createElement(PageFooter,{showNextButton:o,pagination:n,nextSectionLink:t});return e?React.createElement(MiddlePanelWrapper,null,e):null}),[t,n,o]),r=useMemo((()=>OpenApiHeader?React.createElement(MiddlePanelWrapper,null,React.createElement(OpenApiHeader,null)):null),[]);return React.createElement(React.Fragment,null,r,React.createElement(ContentItem,{key:e.id,item:e,withChildren:n!==Pagination.Item}),n===Pagination.Item&&React.createElement(SectionContent,{items:e.items||[],pagination:n,showNextButton:!1}),a)}
2
2
  //# sourceMappingURL=TagItems.js.map
@@ -3,7 +3,7 @@ export * from './RedoclyOpenAPIDocs';
3
3
  export * from './pluggable';
4
4
  export * from './rightPanel/Console';
5
5
  export { BackgroundStub, ApiContentWrap, BackgroundStubFix } from './RedoclyOpenAPIDocs/styled';
6
- export { MiddleFooterWrapper } from './Panel/MiddleFooterWrapper';
6
+ export { MiddlePanelWrapper } from './Panel/MiddlePanelWrapper';
7
7
  export * from './common';
8
8
  export * from './ApiInfo';
9
9
  export { SectionItem } from './SectionItem';
@@ -1,2 +1,2 @@
1
- export*from"./NextSectionButton";export*from"./RedoclyOpenAPIDocs";export*from"./pluggable";export*from"./rightPanel/Console";export{BackgroundStub,ApiContentWrap,BackgroundStubFix}from"./RedoclyOpenAPIDocs/styled";export{MiddleFooterWrapper}from"./Panel/MiddleFooterWrapper";export*from"./common";export*from"./ApiInfo";export{SectionItem}from"./SectionItem";export{ContentItem}from"./ContentItem";export{ContentItems}from"./ContentItems";export{DiscriminatorDropdown}from"./DiscriminatorDropdown";export*from"./Schema/";export{OperationItem}from"./OperationItem";export*from"./Loading/Loading";export*from"./Markdown";export{OAuthFlow}from"./SecuritySchemes/OAuthFlow";export*from"./Responses";export*from"./ResponseSamples/ResponseSamples";export{PayloadSamples,ExampleValue,Example,DropdownWrapper}from"./PayloadSamples";export*from"./MediaTypeSwitch";export*from"./Parameters";export*from"./DropdownOrLabel";export*from"./ErrorBoundary";export*from"./SideMenu/";export*from"./StickySidebar/StickyResponsiveSidebar";export*from"./SchemaDefinition/SchemaDefinition";export*from"./SourceCodeWithFile/SourceCodeWithFile";export*from"./RequestSamples/RequestSamples";export{ShelfIcon,LockIcon,CrossIcon}from"./icons";
1
+ export*from"./NextSectionButton";export*from"./RedoclyOpenAPIDocs";export*from"./pluggable";export*from"./rightPanel/Console";export{BackgroundStub,ApiContentWrap,BackgroundStubFix}from"./RedoclyOpenAPIDocs/styled";export{MiddlePanelWrapper}from"./Panel/MiddlePanelWrapper";export*from"./common";export*from"./ApiInfo";export{SectionItem}from"./SectionItem";export{ContentItem}from"./ContentItem";export{ContentItems}from"./ContentItems";export{DiscriminatorDropdown}from"./DiscriminatorDropdown";export*from"./Schema/";export{OperationItem}from"./OperationItem";export*from"./Loading/Loading";export*from"./Markdown";export{OAuthFlow}from"./SecuritySchemes/OAuthFlow";export*from"./Responses";export*from"./ResponseSamples/ResponseSamples";export{PayloadSamples,ExampleValue,Example,DropdownWrapper}from"./PayloadSamples";export*from"./MediaTypeSwitch";export*from"./Parameters";export*from"./DropdownOrLabel";export*from"./ErrorBoundary";export*from"./SideMenu/";export*from"./StickySidebar/StickyResponsiveSidebar";export*from"./SchemaDefinition/SchemaDefinition";export*from"./SourceCodeWithFile/SourceCodeWithFile";export*from"./RequestSamples/RequestSamples";export{ShelfIcon,LockIcon,CrossIcon}from"./icons";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  import type { Controlled as CodeMirror } from 'react-codemirror2-react-17';
2
2
  import type { FieldApi, FieldState } from 'informed';
3
3
  import type { LegacyRef } from 'react';
4
- import type { OpenAPISchema, Referenced } from 'src/types/open-api';
4
+ import type { OpenAPISchema, Referenced } from '../../../types';
5
5
  export interface CodemirrorInputBase {
6
6
  forwardedRef?: LegacyRef<CodeMirror>;
7
7
  mode?: string;
@@ -1,2 +1,2 @@
1
- import React,{memo}from"react";import{Form,useField}from"informed";import{useRecoilValue}from"recoil";import{requiredValidator}from"../utils";import{JsonPointer}from"../../../utils";import{OAuth2}from"../../../services/OAuth2";import{l}from"../../../services";import{Accordion}from"../../Panel";import{ServersDropdown}from"../ServersDropdown";import{TryItPanel}from"../TryItPanel";import{RequestBody}from"../RequestBody";import{RenderHook}from"../../RenderHook";import{OperationParameters}from"../../OperationParameters";import{AuthPanel}from"../AuthPanel";import{globalOptionsSelector}from"../../../recoil/store";function RequestComponent({operation:e,properties:r,securityDefaults:t,form:o,resolvedRawSpec:a,server:n,formApi:i,setFormApi:s,handleChange:u,handleServerChange:c}){const d=o.errors||{},m=d.path||d.cookie||d.header||d.query,{hooks:p,authCorsProxyUrl:h}=useRecoilValue(globalOptionsSelector),y=a&&JsonPointer.get(a,e.pointer);let v=o.values&&o.values.auth&&Object.keys(o.values.auth)[0];v&&o.values.auth[v]||(v=void 0),!v||void 0===o.values.auth[v].token&&void 0===o.values.auth[v].client_id&&void 0===o.values.auth[v].client_secret||o.values.auth[v].token&&o.values.auth[v].token.access_token||(v=void 0),v&&null!=o.values.auth[v].username&&(o.values.auth[v].username&&o.values.auth[v].password||(v=void 0));const f=e.parameters||[];return!a&&React.createElement(React.Fragment,null,"Loading...")||React.createElement(Form,{onChange:u,getApi:s,style:{flex:1,display:"flex",flexDirection:"column",margin:0}},React.createElement(ServersDropdown,{operation:e,onChange:c}),React.createElement(Accordion,{initialActiveIdx:e.security.length&&v?1:0},e.security.length&&i&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",error:!v&&!!d.auth,success:!!v,renderChildrenHidden:!0},(null==p?void 0:p.ReplaceTryItSecurityPanel)?React.createElement(AuthPanelWrapper,{field:"auth",validate:requiredValidator},(r=>React.createElement(RenderHook,{Hook:null==p?void 0:p.ReplaceTryItSecurityPanel,props:{server:n,operation:e,onChange:r,OAuth2:OAuth2}}))):React.createElement(AuthPanel,{formApi:i,form:o,operation:e,activeServer:n.url,authCorsProxyUrl:h,securityDefaults:t}))||null,e.requestBody&&i&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",error:!!d.body,renderChildrenHidden:!0},React.createElement(RequestBody,{validate:allowBodyErrors,formApi:i,body:e.requestBody,pointer:e.pointer,id:e.id,resolvedBody:null==y?void 0:y.requestBody,properties:r}))||null,f.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:m,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:e,values:o.values,errors:o.errors||{}}))||null))}function AuthPanelWrapper(e){const{fieldApi:r,render:t,userProps:o}=useField(Object.assign({},e)),{setValue:a}=r,{children:l}=o;return t(React.createElement(React.Fragment,null,l(a)))}function allowBodyErrors(){}export const Request=memo(RequestComponent);
1
+ import React,{memo}from"react";import{Form,useField}from"informed";import{useRecoilValue}from"recoil";import{OpenApiTryItSecurityPanel}from"@redocly/theme";import{requiredValidator}from"../utils";import{JsonPointer}from"../../../utils";import{OAuth2}from"../../../services/OAuth2";import{l}from"../../../services";import{Accordion}from"../../Panel";import{ServersDropdown}from"../ServersDropdown";import{TryItPanel}from"../TryItPanel";import{RequestBody}from"../RequestBody";import{OperationParameters}from"../../OperationParameters";import{AuthPanel}from"../AuthPanel";import{globalOptionsSelector}from"../../../recoil/store";import{RenderHook}from"../../RenderHook";function RequestComponent({operation:e,properties:r,securityDefaults:t,form:o,resolvedRawSpec:a,server:n,formApi:i,setFormApi:s,handleChange:u,handleServerChange:c}){const m=o.errors||{},d=m.path||m.cookie||m.header||m.query,{hooks:p,authCorsProxyUrl:h}=useRecoilValue(globalOptionsSelector),y=a&&JsonPointer.get(a,e.pointer);let v=o.values&&o.values.auth&&Object.keys(o.values.auth)[0];v&&o.values.auth[v]||(v=void 0),!v||void 0===o.values.auth[v].token&&void 0===o.values.auth[v].client_id&&void 0===o.values.auth[v].client_secret||o.values.auth[v].token&&o.values.auth[v].token.access_token||(v=void 0),v&&null!=o.values.auth[v].username&&(o.values.auth[v].username&&o.values.auth[v].password||(v=void 0));const f=e.parameters||[];return!a&&React.createElement(React.Fragment,null,"Loading...")||React.createElement(Form,{onChange:u,getApi:s,style:{flex:1,display:"flex",flexDirection:"column",margin:0}},React.createElement(ServersDropdown,{operation:e,onChange:c}),React.createElement(Accordion,{initialActiveIdx:e.security.length&&v?1:0},e.security.length&&i&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",error:!v&&!!m.auth,success:!!v,renderChildrenHidden:!0},React.createElement((({formApi:r})=>!0===Boolean(OpenApiTryItSecurityPanel||(null==p?void 0:p.ReplaceTryItSecurityPanel))?React.createElement(AuthPanelWrapper,{field:"auth",validate:requiredValidator},(r=>React.createElement(RenderHook,{Hook:OpenApiTryItSecurityPanel||(null==p?void 0:p.ReplaceTryItSecurityPanel),props:{server:n,operation:e,onChange:r,OAuth2:OAuth2}}))):React.createElement(AuthPanel,{formApi:r,form:o,operation:e,activeServer:n.url,authCorsProxyUrl:h,securityDefaults:t})),{formApi:i}))||null,e.requestBody&&i&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",error:!!m.body,renderChildrenHidden:!0},React.createElement(RequestBody,{validate:allowBodyErrors,formApi:i,body:e.requestBody,pointer:e.pointer,id:e.id,resolvedBody:null==y?void 0:y.requestBody,properties:r}))||null,f.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:d,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:e,values:o.values,errors:o.errors||{}}))||null))}function AuthPanelWrapper(e){const{fieldApi:r,render:t,userProps:o}=useField(Object.assign({},e)),{setValue:a}=r,{children:n}=o;return t(React.createElement(React.Fragment,null,n(a)))}function allowBodyErrors(){}export const Request=memo(RequestComponent);
2
2
  //# sourceMappingURL=Request.js.map
@@ -1,7 +1,7 @@
1
1
  import type { OpenAPIServer, Server, ServerVariables } from '../../types';
2
2
  import type { FieldModel, ExtendedOpenAPISecurityScheme, OperationModel, ExampleModel } from '../../models';
3
3
  import type { RequestBodyProps } from './RequestBody';
4
- import type { Options } from 'src/services/Options';
4
+ import type { Options } from '../../services';
5
5
  export declare function normalizeUrlProtocol(url: string): string;
6
6
  export declare function updateStorage(state: GenericObject): void;
7
7
  export declare const getParameters: (parameters: FieldModel[], type: string) => GenericObject;
@@ -1,5 +1,4 @@
1
- import type { Options } from 'src/services/Options';
2
- import type { OpenAPIParser } from 'src/services/OpenAPIParser';
1
+ import type { Options, OpenAPIParser } from '../services';
3
2
  import type { OpenAPICallback, Referenced } from '../types';
4
3
  import type { CallbackModel, GroupModel } from './types';
5
4
  export declare function getCallback(parser: OpenAPIParser, name: string, infoOrRef: Referenced<OpenAPICallback>, parentPointer: string, options: Options, href: string, parent?: GroupModel): CallbackModel;
@@ -1,6 +1,5 @@
1
1
  import type { OpenAPIMediaType } from '../types';
2
- import type { OpenAPIParser } from '../services';
3
- import type { Options } from 'src/services/Options/types';
2
+ import type { OpenAPIParser, Options } from '../services';
4
3
  import type { MediaTypeModel, ResponseModel, OperationModel } from './types';
5
4
  /**
6
5
  * @param parser
@@ -1,6 +1,5 @@
1
1
  import type { OpenAPIResponse, Referenced } from '../types';
2
- import type { OpenAPIParser } from '../services';
3
- import type { Options } from 'src/services/Options';
2
+ import type { OpenAPIParser, Options } from '../services';
4
3
  import type { ResponseModel, OperationModel } from './types';
5
4
  type ResponseProps = {
6
5
  parser: OpenAPIParser;
@@ -1,7 +1,6 @@
1
1
  import type { OpenAPISchema, Referenced } from '../types';
2
- import type { OpenAPIParser } from '../services';
2
+ import type { OpenAPIParser, Options } from '../services';
3
3
  import type { Deps, SchemaModel } from './types';
4
- import type { Options } from 'src/services/Options';
5
4
  export declare function getSchema({ parser, schemaOrRef, pointer, options, isChild, baseRefsStack, deps, absolutePointer, }: {
6
5
  parser: OpenAPIParser;
7
6
  schemaOrRef: Referenced<OpenAPISchema>;
@@ -134,6 +134,7 @@ export interface HooksConfig {
134
134
  }) => string;
135
135
  sanitize?: (raw: string) => string;
136
136
  MiddlePanelFooter?: HookConfig<undefined>;
137
+ MiddlePanelHeader?: HookConfig<undefined>;
137
138
  /** @deprecated Use ReplaceTryItSecurityPanel instead */
138
139
  ReplaceTryItAuthPanel?: HookConfig<SecurityPanelHookProps>;
139
140
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.0.0-alpha.40",
3
+ "version": "3.0.0-alpha.42",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -48,7 +48,7 @@
48
48
  "prismjs": "^1.22.0",
49
49
  "query-string": "^6.13.6",
50
50
  "react-codemirror2-react-17": "1.0.0",
51
- "react-router-dom": "^6.4.4",
51
+ "react-router-dom": "^6.10.0",
52
52
  "react-tabs": "^3.1.1",
53
53
  "recoil": "^0.7.6",
54
54
  "recoil-nexus": "^0.4.0",
@@ -119,7 +119,7 @@
119
119
  "webpack-dev-server": "^4.9.3",
120
120
  "workerize-loader": "github:redocly/workerize-loader#webpack-5-dist",
121
121
  "js-yaml": "4.1.0",
122
- "@redocly/theme": "0.13.1"
122
+ "@redocly/theme": "0.15.0"
123
123
  },
124
124
  "scripts": {
125
125
  "start": "webpack serve --mode=development --hot",
@@ -1 +0,0 @@
1
- export declare const MiddleFooterWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1 +0,0 @@
1
- export declare const MiddleFooterWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;