@redocly/openapi-docs 3.0.0-alpha.35 → 3.0.0-alpha.37

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 +1 -1
  2. package/dist/oauth2-redirect.js +1 -1
  3. package/dist/redocly-openapi-docs.min.js +990 -989
  4. package/lib/components/ContentItems/ContentItems.js +1 -1
  5. package/lib/components/ContentItems/helpers.d.ts +8 -10
  6. package/lib/components/ContentItems/helpers.js +1 -1
  7. package/lib/components/NextSectionButton/NextSectionButton.js +1 -1
  8. package/lib/components/Panel/MiddleFooterWrapper.d.ts +1 -0
  9. package/lib/components/{NextSectionButton/styled.js → Panel/MiddleFooterWrapper.js} +3 -3
  10. package/lib/components/Panel/index.d.ts +1 -0
  11. package/lib/components/Panel/index.js +1 -1
  12. package/lib/components/RedoclyOpenAPIDocs/Providers.js +1 -1
  13. package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
  14. package/lib/components/RedoclyOpenAPIDocs/styled.js +2 -2
  15. package/lib/components/SectionContent/SectionContent.d.ts +2 -1
  16. package/lib/components/SectionContent/SectionContent.js +1 -1
  17. package/lib/components/SideMenu/MenuItem.d.ts +2 -0
  18. package/lib/components/SideMenu/MenuItem.js +1 -1
  19. package/lib/components/TagItems/TagItems.d.ts +2 -1
  20. package/lib/components/TagItems/TagItems.js +1 -1
  21. package/lib/components/index.d.ts +1 -1
  22. package/lib/components/index.js +1 -1
  23. package/lib/hoc/types.d.ts +2 -0
  24. package/lib/hoc/withStore.js +1 -1
  25. package/lib/hooks/useContentItems.js +1 -1
  26. package/lib/recoil/app.d.ts +7 -2
  27. package/lib/recoil/app.js +1 -1
  28. package/lib/services/OpenAPIParser.d.ts +4 -1
  29. package/lib/services/OpenAPIParser.js +1 -1
  30. package/lib/services/menu/builder.js +1 -1
  31. package/lib/services/types.d.ts +1 -0
  32. package/lib/types/app.d.ts +5 -0
  33. package/lib-esm/components/ContentItems/ContentItems.js +1 -1
  34. package/lib-esm/components/ContentItems/helpers.d.ts +8 -10
  35. package/lib-esm/components/ContentItems/helpers.js +1 -1
  36. package/lib-esm/components/NextSectionButton/NextSectionButton.js +1 -1
  37. package/lib-esm/components/Panel/MiddleFooterWrapper.d.ts +1 -0
  38. package/lib-esm/components/{NextSectionButton/styled.js → Panel/MiddleFooterWrapper.js} +2 -2
  39. package/lib-esm/components/Panel/index.d.ts +1 -0
  40. package/lib-esm/components/Panel/index.js +1 -1
  41. package/lib-esm/components/RedoclyOpenAPIDocs/Providers.js +1 -1
  42. package/lib-esm/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
  43. package/lib-esm/components/RedoclyOpenAPIDocs/styled.js +2 -2
  44. package/lib-esm/components/SectionContent/SectionContent.d.ts +2 -1
  45. package/lib-esm/components/SectionContent/SectionContent.js +1 -1
  46. package/lib-esm/components/SideMenu/MenuItem.d.ts +2 -0
  47. package/lib-esm/components/SideMenu/MenuItem.js +1 -1
  48. package/lib-esm/components/TagItems/TagItems.d.ts +2 -1
  49. package/lib-esm/components/TagItems/TagItems.js +1 -1
  50. package/lib-esm/components/index.d.ts +1 -1
  51. package/lib-esm/components/index.js +1 -1
  52. package/lib-esm/hoc/types.d.ts +2 -0
  53. package/lib-esm/hoc/withStore.js +1 -1
  54. package/lib-esm/hooks/useContentItems.js +1 -1
  55. package/lib-esm/recoil/app.d.ts +7 -2
  56. package/lib-esm/recoil/app.js +1 -1
  57. package/lib-esm/services/OpenAPIParser.d.ts +4 -1
  58. package/lib-esm/services/OpenAPIParser.js +1 -1
  59. package/lib-esm/services/menu/builder.js +1 -1
  60. package/lib-esm/services/types.d.ts +1 -0
  61. package/lib-esm/types/app.d.ts +5 -0
  62. package/package.json +2 -2
  63. package/lib/components/NextSectionButton/styled.d.ts +0 -1
  64. package/lib-esm/components/NextSectionButton/styled.d.ts +0 -1
@@ -1,4 +1,4 @@
1
- import styled from"styled-components";export const NextSectionButtonWrap=styled.div`
1
+ import styled from"styled-components";export const MiddleFooterWrapper=styled.div`
2
2
  padding-top: calc(var(--spacing-unit) * 4);
3
3
  padding-bottom: calc(var(--spacing-unit) * 4);
4
4
  padding-left: var(--spacing-horizontal);
@@ -15,4 +15,4 @@ import styled from"styled-components";export const NextSectionButtonWrap=styled.
15
15
  padding-right: var(--panel-gap-vertical, var(--panel-gap-horizontal));
16
16
  }
17
17
  `;
18
- //# sourceMappingURL=styled.js.map
18
+ //# sourceMappingURL=MiddleFooterWrapper.js.map
@@ -5,3 +5,4 @@ export * from './CodeHeader';
5
5
  export * from './ContentPanel';
6
6
  export * from './ResponsePanel';
7
7
  export * from './Accordion';
8
+ export * from './MiddleFooterWrapper';
@@ -1,2 +1,2 @@
1
- export*from"./Trigger";export*from"./Description";export*from"./CodePanel";export*from"./CodeHeader";export*from"./ContentPanel";export*from"./ResponsePanel";export*from"./Accordion";
1
+ export*from"./Trigger";export*from"./Description";export*from"./CodePanel";export*from"./CodeHeader";export*from"./ContentPanel";export*from"./ResponsePanel";export*from"./Accordion";export*from"./MiddleFooterWrapper";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(e,t,o,i){return new(o||(o=Promise))((function(n,r){function a(e){try{s(i.next(e))}catch(e){r(e)}}function l(e){try{s(i.throw(e))}catch(e){r(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,l)}s((i=i.apply(e,t||[])).next())}))};import{ThemeProvider}from"styled-components";import React,{memo,useEffect,useMemo,useState}from"react";import{Tag}from"@markdoc/markdoc";import{Heading}from"@redocly/theme";import{RecoilRoot}from"recoil";import RecoilNexus from"recoil-nexus";import{normalizeOptions,OpenAPIParser}from"../../services";import{getMarkdownHeaderId,loadMany,loadSingle,useDeepCompareMemoize}from"./utils";import{argValueToBoolean,fromLocalStorage,fromSessionStorage}from"../../utils";import{Loading}from"../Loading";import{defaultTheme}from"../../constants";import{SecurityDefs}from"../SecurityRequirement";import{SchemaDefinition}from"../SchemaDefinition";import{PullRight,RedocResponse}from"../pluggable";import{appLocalStore,appSessionStore,appStore}from"../../recoil/app";import{globalStore}from"../../recoil/store";import{operationStore}from"../../recoil/operation";export const ThemeProviders=({options:e,children:t,customOptions:o={}})=>{const i=Object.assign(Object.assign({},e),o),n=useMemo((()=>({mediaQueries:i.mediaQueries,showAtBreakpoint:i.showAtBreakpoint})),[i.mediaQueries,i.showAtBreakpoint]);return React.createElement(ThemeProvider,{theme:n},t)};export const AppProvider=({definitions:e,options:t,definitionUrl:o,definition:i,activeSampleLanguage:n,children:r})=>{const[,a]=useState(),[l,s]=useState(!0),[p,c]=useState(null);useEffect((()=>{!function(){__awaiter(this,void 0,void 0,(function*(){s(!0);try{c(e?yield loadMany(e):yield loadSingle(i,o,t))}catch(e){a((()=>{throw e}))}}))}()}),[e,i,o,t]);const m=useMemo((()=>{var e,i,r;if(p)return(null===(e=null==t?void 0:t.hooks)||void 0===e?void 0:e.onInit)&&(null===(r=null===(i=t.hooks)||void 0===i?void 0:i.onInit)||void 0===r||r.call(i,{store:{definition:p,options:t,definitionUrl:o,activeSampleLanguage:n}})),{definition:p,options:t,definitionUrl:o,activeSampleLanguage:n}}),useDeepCompareMemoize([p,t,o]));return useEffect((()=>{m&&s(!1)}),[m]),m?l?argValueToBoolean(null==t?void 0:t.hideLoading,!1)?null:React.createElement(Loading,{color:"--loading-spinner-color"}):React.isValidElement(r)?React.cloneElement(r,{store:m}):null:null};const DEFAULT_OPTIONS={ignoreNamedSchemas:["java.io.ObjectStreamField"],breakpoints:defaultTheme.breakpoints,showAtBreakpoint:defaultTheme.showAtBreakpoint,allowedMdComponents:{tags:{securityDefinitions:{render:"SecurityDefinitions",attributes:{htmlWrap:{type:String,default:!0}}},redocResponse:{render:"RedocResponse",attributes:{pointer:{type:String},hideSamples:{type:Boolean},htmlWrap:{type:String,default:!1}}},pullRight:{render:"PullRight",attributes:{htmlWrap:{type:String,default:!1}}},schemaDefinition:{render:"SchemaDefinition",attributes:{schemaRef:{type:String},exampleRef:{type:String},showReadOnly:{type:Boolean},showWriteOnly:{type:Boolean},htmlWrap:{type:String,default:!1}}}},nodes:{heading:{children:["inline"],attributes:{id:{type:String},level:{type:Number,required:!0,default:1}},transform(e,t){const o=e.transformAttributes(t),i=e.transformChildren(t),n="string"==typeof o.id?o.id:getMarkdownHeaderId(i);return new Tag("Heading",Object.assign(Object.assign({},o),{id:n,level:e.attributes.level}),i)}}},components:{SecurityDefinitions:SecurityDefs,SchemaDefinition:SchemaDefinition,RedocResponse:RedocResponse,PullRight:PullRight,Heading:Heading}}};export const StoreProvider=memo((({children:e,options:t,definitionUrl:o,definition:i,activeSampleLanguage:n,portalOptions:r})=>{const a=React.useRef(),l=React.useCallback((()=>{var e;const n=normalizeOptions(Object.assign({},t),DEFAULT_OPTIONS),r=isVersioned(i)?(null===(e=i.versions)||void 0===e?void 0:e.map((({spec:e,id:t,title:o,url:i},r)=>{if(e)return{id:t||`Definition_${r}`,title:o||`Definition_${r}`,url:i,parser:new OpenAPIParser(e,void 0,n)}})).filter(Boolean))||[]:[{url:o,parser:new OpenAPIParser(i,o,n)}];return{options:n,versions:r}}),[i,o,t]);return useEffect((()=>{a.current&&setTimeout((()=>{a.current(globalStore,l())}),0)}),[l,i]),React.createElement(RecoilRoot,{initializeState:({set:e})=>{a.current=e;const t=l(),o=t.options,i=JSON.parse(fromLocalStorage("appLocalStore")||"{}"),s=JSON.parse(fromSessionStorage("appSessionStore")||"{}");if(e(appSessionStore,{showRightPanelToggle:s.showRightPanelToggle||o.showRightPanelToggle,activeVersionIdx:0}),e(appLocalStore,{layout:i.layout||o.layout,activeSampleLanguage:n||i.activeSampleLanguage||o.defaultSampleLanguage}),e(globalStore,t),e(appStore,{isSidebarOpened:!1,tryItOperation:void 0,isLoading:!1,activeMimeName:(null==r?void 0:r.defaultMimeType)||""}),null==r?void 0:r.operation){const{pointer:t,activeExampleName:o,activeServer:i}=r.operation;e(operationStore(t),{activeExampleName:o,activeOneOf:0,activeServer:i,requestValues:{}})}},key:(null==r?void 0:r.definitionId)||"openapi"},React.createElement(RecoilNexus,null),e)}));const isVersioned=e=>"versions"in e;
1
+ var __awaiter=this&&this.__awaiter||function(e,t,o,i){return new(o||(o=Promise))((function(n,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};import{ThemeProvider}from"styled-components";import React,{memo,useEffect,useMemo,useState}from"react";import{Tag}from"@markdoc/markdoc";import{Heading}from"@redocly/theme";import{RecoilRoot}from"recoil";import RecoilNexus from"recoil-nexus";import{normalizeOptions,OpenAPIParser}from"../../services";import{getMarkdownHeaderId,loadMany,loadSingle,useDeepCompareMemoize}from"./utils";import{argValueToBoolean,fromLocalStorage,fromSessionStorage}from"../../utils";import{Loading}from"../Loading";import{defaultTheme}from"../../constants";import{SecurityDefs}from"../SecurityRequirement";import{SchemaDefinition}from"../SchemaDefinition";import{PullRight,RedocResponse}from"../pluggable";import{appLocalStore,appSessionStore,appStore}from"../../recoil/app";import{globalStore}from"../../recoil/store";import{operationStore}from"../../recoil/operation";export const ThemeProviders=({options:e,children:t,customOptions:o={}})=>{const i=Object.assign(Object.assign({},e),o),n=useMemo((()=>({mediaQueries:i.mediaQueries,showAtBreakpoint:i.showAtBreakpoint})),[i.mediaQueries,i.showAtBreakpoint]);return React.createElement(ThemeProvider,{theme:n},t)};export const AppProvider=({definitions:e,options:t,definitionUrl:o,definition:i,activeSampleLanguage:n,children:r})=>{const[,a]=useState(),[s,l]=useState(!0),[p,c]=useState(null);useEffect((()=>{!function(){__awaiter(this,void 0,void 0,(function*(){l(!0);try{c(e?yield loadMany(e):yield loadSingle(i,o,t))}catch(e){a((()=>{throw e}))}}))}()}),[e,i,o,t]);const m=useMemo((()=>{var e,i,r;if(p)return(null===(e=null==t?void 0:t.hooks)||void 0===e?void 0:e.onInit)&&(null===(r=null===(i=t.hooks)||void 0===i?void 0:i.onInit)||void 0===r||r.call(i,{store:{definition:p,options:t,definitionUrl:o,activeSampleLanguage:n}})),{definition:p,options:t,definitionUrl:o,activeSampleLanguage:n}}),useDeepCompareMemoize([p,t,o]));return useEffect((()=>{m&&l(!1)}),[m]),m?s?argValueToBoolean(null==t?void 0:t.hideLoading,!1)?null:React.createElement(Loading,{color:"--loading-spinner-color"}):React.isValidElement(r)?React.cloneElement(r,{store:m}):null:null};const DEFAULT_OPTIONS={ignoreNamedSchemas:["java.io.ObjectStreamField"],breakpoints:defaultTheme.breakpoints,showAtBreakpoint:defaultTheme.showAtBreakpoint,allowedMdComponents:{tags:{securityDefinitions:{render:"SecurityDefinitions",attributes:{htmlWrap:{type:String,default:!0}}},redocResponse:{render:"RedocResponse",attributes:{pointer:{type:String},hideSamples:{type:Boolean},htmlWrap:{type:String,default:!1}}},pullRight:{render:"PullRight",attributes:{htmlWrap:{type:String,default:!1}}},schemaDefinition:{render:"SchemaDefinition",attributes:{schemaRef:{type:String},exampleRef:{type:String},showReadOnly:{type:Boolean},showWriteOnly:{type:Boolean},htmlWrap:{type:String,default:!1}}}},nodes:{heading:{children:["inline"],attributes:{id:{type:String},level:{type:Number,required:!0,default:1}},transform(e,t){const o=e.transformAttributes(t),i=e.transformChildren(t),n="string"==typeof o.id?o.id:getMarkdownHeaderId(i);return new Tag("Heading",Object.assign(Object.assign({},o),{id:n,level:e.attributes.level}),i)}}},components:{SecurityDefinitions:SecurityDefs,SchemaDefinition:SchemaDefinition,RedocResponse:RedocResponse,PullRight:PullRight,Heading:Heading}}};export const StoreProvider=memo((({children:e,options:t,definitionUrl:o,definition:i,activeSampleLanguage:n,portalOptions:r})=>{const a=React.useRef(),s=React.useCallback((()=>{var e;const n=normalizeOptions(Object.assign({},t),DEFAULT_OPTIONS),r=isVersioned(i)?(null===(e=i.versions)||void 0===e?void 0:e.map((({spec:e,id:t,title:o,url:i},r)=>{if(e){const a=t||`Definition_${r}`;return{id:a,title:o||`Definition_${r}`,url:i,parser:new OpenAPIParser(e,void 0,Object.assign(Object.assign({},n),{versionId:a}))}}})).filter(Boolean))||[]:[{url:o,parser:new OpenAPIParser(i,o,n)}];return{options:n,versions:r}}),[i,o,t]);return useEffect((()=>{a.current&&setTimeout((()=>{a.current(globalStore,s())}),0)}),[s,i]),React.createElement(RecoilRoot,{initializeState:({set:e})=>{a.current=e;const t=s(),o=t.options,i=JSON.parse(fromLocalStorage("appLocalStore")||"{}"),l=JSON.parse(fromSessionStorage("appSessionStore")||"{}");if(e(appSessionStore,{showRightPanelToggle:l.showRightPanelToggle||o.showRightPanelToggle,activeVersionIdx:0}),e(appLocalStore,{layout:i.layout||o.layout,activeSampleLanguage:n||i.activeSampleLanguage||o.defaultSampleLanguage}),e(globalStore,t),e(appStore,{isSidebarOpened:!1,tryItOperation:void 0,isLoading:!1,activeMimeName:(null==r?void 0:r.defaultMimeType)||"",menuNextLinks:[]}),null==r?void 0:r.operation){const{pointer:t,activeExampleName:o,activeServer:i}=r.operation;e(operationStore(t),{activeExampleName:o,activeOneOf:0,activeServer:i,requestValues:{}})}},key:(null==r?void 0:r.definitionId)||"openapi"},React.createElement(RecoilNexus,null),e)}));const isVersioned=e=>"versions"in e;
2
2
  //# sourceMappingURL=Providers.js.map
@@ -1,2 +1,2 @@
1
- import React,{useRef,memo}from"react";import{SidebarLogo,GlobalStyle,useMount,LayoutVariant}from"@redocly/theme";import{Search}from"../Search";import{ThemeProviders,AppProvider,StoreProvider}from"./Providers";import{Overlay}from"../Overlay";import{VersionSwitcher}from"../VersionSwitcher";import{BackgroundStub,BackgroundStubFix,ApiContentWrap,RedocWrapStyled,CssFixes}from"./styled";import{StickyResponsiveSidebar}from"../StickySidebar";import{ErrorBoundary}from"../ErrorBoundary";import{SideMenu}from"../SideMenu";import{ContentItems}from"../ContentItems";import{useContentItems}from"../../hooks";import{withRouter}from"../../hoc/withRouter";import{withStore}from"../../hoc/withStore";import{compose}from"../../utils";import{useLicense}from"../../hooks/useLicense";const RedoclyOpenAPIDocsComponent=compose(withRouter,withStore,memo)((({licenseKey:e,onLoaded:t,children:o,options:n,versions:r,layout:i,showRightPanelToggle:a,activeVersionIdx:l,onChangeActiveVersion:c,collapsedSidebar:s})=>{var d,m,u,p,v;const f=useRef(null),{isValid:R,licenseInfo:S}=useLicense(e);useMount((()=>{null==t||t()}));const{disableSidebar:h,whiteLabel:y,hideLogo:E,hideFab:b,scrollYOffset:g}=n||{},L=r[l].parser,{flatItems:I,contentItems:C}=useContentItems({parser:L,options:n});if(!r.length)return null;const P=null===(m=null===(d=L.definition)||void 0===d?void 0:d.info)||void 0===m?void 0:m["x-logo"];return React.createElement(ThemeProviders,{options:n},React.createElement(GlobalStyle,null),React.createElement(RedocWrapStyled,{className:"redoc-wrap",ref:f},!R&&React.createElement(Overlay,{licenseInfo:S}),React.createElement(CssFixes,{whiteLabel:y,showRightPanelToggle:a,layout:i}),!h&&React.createElement(StickyResponsiveSidebar,{hideFab:b,scrollYOffset:g,className:"menu-content",collapsedSidebar:!s},!E&&React.createElement(SidebarLogo,{imageUrl:null==P?void 0:P.url,href:(null==P?void 0:P.href)||(null===(v=null===(p=null===(u=L.definition)||void 0===u?void 0:u.info)||void 0===p?void 0:p.contact)||void 0===v?void 0:v.url),altText:null==P?void 0:P.altText,backgroundColor:null==P?void 0:P.backgroundColor}),r.length>1&&React.createElement(VersionSwitcher,{versions:r,activeVersionIdx:l,onChange:c}),React.createElement(Search,{contentItems:C,flatItems:I,options:n}),React.createElement(SideMenu,{items:R?C:[]})),React.createElement(ApiContentWrap,{className:"api-content",id:"api-content",layout:i===LayoutVariant.THREE_PANEL&&a?LayoutVariant.THREE_PANEL:LayoutVariant.STACKED,collapsedSidebar:s},a&&i!==LayoutVariant.STACKED&&React.createElement(BackgroundStub,null),React.createElement(ContentItems,{root:!0,items:R?C:[]}),o),a&&i!==LayoutVariant.STACKED&&React.createElement(BackgroundStubFix,null)))}));export function RedoclyOpenAPIDocs({onLoaded:e,children:t,store:o}){var n,r,i;return(null==o?void 0:o.definition)?React.createElement(StoreProvider,Object.assign({},o),React.createElement(RedoclyOpenAPIDocsComponent,{onLoaded:e,basePath:null===(n=o.options)||void 0===n?void 0:n.routingBasePath,licenseKey:null===(r=o.options)||void 0===r?void 0:r.licenseKey,enableRouter:null===(i=o.options)||void 0===i?void 0:i.enableRouter,portalOptions:null==o?void 0:o.portalOptions},t)):null}export function RedoclyOpenAPIDocsStandalone({definition:e,definitionUrl:t,options:o={},activeItemId:n,activeSampleLanguage:r,activeDeepLink:i}){const a=React.createElement(AppProvider,{definition:e,definitionUrl:t,options:o,activeItemId:n,activeSampleLanguage:r,activeDeepLink:i},React.createElement(RedoclyOpenAPIDocs,null));return o.disableErrorBoundary?a:React.createElement(ErrorBoundary,null,a)}
1
+ import React,{useRef,memo}from"react";import{SidebarLogo,GlobalStyle,useMount,LayoutVariant}from"@redocly/theme";import{Search}from"../Search";import{ThemeProviders,AppProvider,StoreProvider}from"./Providers";import{Overlay}from"../Overlay";import{VersionSwitcher}from"../VersionSwitcher";import{BackgroundStub,BackgroundStubFix,ApiContentWrap,RedocWrapStyled,CssFixes}from"./styled";import{StickyResponsiveSidebar}from"../StickySidebar";import{ErrorBoundary}from"../ErrorBoundary";import{SideMenu}from"../SideMenu";import{ContentItems}from"../ContentItems";import{useContentItems}from"../../hooks";import{withRouter}from"../../hoc/withRouter";import{withStore}from"../../hoc/withStore";import{compose}from"../../utils";import{useLicense}from"../../hooks/useLicense";const RedoclyOpenAPIDocsComponent=compose(withRouter,withStore,memo)((({licenseKey:e,onLoaded:o,children:t,options:n,versions:r,layout:i,showRightPanelToggle:a,activeVersionIdx:l,onChangeActiveVersion:c,collapsedSidebar:s,parser:d})=>{var m,u,p,v,f;const R=useRef(null),{isValid:S,licenseInfo:h}=useLicense(e);useMount((()=>{null==o||o()}));const{disableSidebar:y,whiteLabel:E,hideLogo:b,hideFab:g,scrollYOffset:L}=n||{},{flatItems:I,contentItems:C}=useContentItems({parser:d,options:n}),P=null===(u=null===(m=d.definition)||void 0===m?void 0:m.info)||void 0===u?void 0:u["x-logo"];return React.createElement(ThemeProviders,{options:n},React.createElement(GlobalStyle,null),React.createElement(RedocWrapStyled,{className:"redoc-wrap",ref:R},!S&&React.createElement(Overlay,{licenseInfo:h}),React.createElement(CssFixes,{whiteLabel:E,showRightPanelToggle:a,layout:i}),!y&&React.createElement(StickyResponsiveSidebar,{hideFab:g,scrollYOffset:L,className:"menu-content",collapsedSidebar:!s},!b&&React.createElement(SidebarLogo,{imageUrl:null==P?void 0:P.url,href:(null==P?void 0:P.href)||(null===(f=null===(v=null===(p=d.definition)||void 0===p?void 0:p.info)||void 0===v?void 0:v.contact)||void 0===f?void 0:f.url),altText:null==P?void 0:P.altText,backgroundColor:null==P?void 0:P.backgroundColor}),r.length>1&&React.createElement(VersionSwitcher,{versions:r,activeVersionIdx:l,onChange:c}),React.createElement(Search,{contentItems:C,flatItems:I,options:n}),React.createElement(SideMenu,{items:S?C:[]})),React.createElement(ApiContentWrap,{className:"api-content",id:"api-content",layout:i===LayoutVariant.THREE_PANEL&&a?LayoutVariant.THREE_PANEL:LayoutVariant.STACKED,collapsedSidebar:s},a&&i!==LayoutVariant.STACKED&&React.createElement(BackgroundStub,null),React.createElement(ContentItems,{root:!0,items:S?C:[]}),t),a&&i!==LayoutVariant.STACKED&&React.createElement(BackgroundStubFix,null)))}));export function RedoclyOpenAPIDocs({onLoaded:e,children:o,store:t}){var n,r,i;return(null==t?void 0:t.definition)?React.createElement(StoreProvider,Object.assign({},t),React.createElement(RedoclyOpenAPIDocsComponent,{onLoaded:e,basePath:null===(n=t.options)||void 0===n?void 0:n.routingBasePath,licenseKey:null===(r=t.options)||void 0===r?void 0:r.licenseKey,enableRouter:null===(i=t.options)||void 0===i?void 0:i.enableRouter,portalOptions:null==t?void 0:t.portalOptions},o)):null}export function RedoclyOpenAPIDocsStandalone({definition:e,definitionUrl:o,options:t={},activeItemId:n,activeSampleLanguage:r,activeDeepLink:i}){const a=React.createElement(AppProvider,{definition:e,definitionUrl:o,options:t,activeItemId:n,activeSampleLanguage:r,activeDeepLink:i},React.createElement(RedoclyOpenAPIDocs,null));return t.disableErrorBoundary?a:React.createElement(ErrorBoundary,null,a)}
2
2
  //# sourceMappingURL=RedoclyOpenAPIDocs.js.map
@@ -1,4 +1,4 @@
1
- import{LayoutVariant}from"@redocly/theme";import styled,{createGlobalStyle,css}from"styled-components";import{SamplesMiddlePanel,SamplesPanel}from"../common/panels";import{NextSectionButtonWrap}from"../NextSectionButton/styled";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{MiddleFooterWrapper}from"../Panel/MiddleFooterWrapper";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}, ${NextSectionButtonWrap} {
131
+ ${SamplesMiddlePanel}, ${MiddleFooterWrapper} {
132
132
  ${({showRightPanelToggle:a,layout:e})=>a&&e===LayoutVariant.THREE_PANEL?css`
133
133
  margin: 0;
134
134
  ${({theme:a})=>a.mediaQueries.small} {
@@ -10,6 +10,7 @@ interface SectionContentProps {
10
10
  href?: string;
11
11
  };
12
12
  showNextButton: Options['showNextButton'];
13
+ footerHook?: Options['hooks']['MiddlePanelFooter'];
13
14
  }
14
- export declare function SectionContent({ items, pagination, nextSectionLink, showNextButton, }: SectionContentProps): JSX.Element;
15
+ export declare function SectionContent({ items, pagination, nextSectionLink, showNextButton, footerHook, }: SectionContentProps): JSX.Element;
15
16
  export {};
@@ -1,2 +1,2 @@
1
- import React,{useMemo}from"react";import{ContentItem}from"../ContentItem";import{NextSectionButton}from"../NextSectionButton";import{Pagination}from"../../services";export function SectionContent({items:t,pagination:e,nextSectionLink:n,showNextButton:o}){const i=useMemo((()=>e===Pagination.None?t:null==t?void 0:t.filter((t=>"section"===t.type))),[t,e]);return React.createElement(React.Fragment,null,i.map((t=>React.createElement(ContentItem,{key:t.id,item:t}))),o&&n&&React.createElement(NextSectionButton,{href:n.href||"",label:n.name,pagination:e}))}
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)}
2
2
  //# sourceMappingURL=SectionContent.js.map
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { ExtendedMenuItem } from './types';
3
+ import type { IMenuItem } from '../../services';
3
4
  import { Pagination } from '../../services';
4
5
  interface MenuItemProps {
5
6
  active?: boolean;
@@ -8,4 +9,5 @@ interface MenuItemProps {
8
9
  onClick?: () => void;
9
10
  }
10
11
  export declare const MenuItem: React.NamedExoticComponent<React.PropsWithChildren<MenuItemProps>>;
12
+ export declare function getLink(item: IMenuItem, pagination?: Pagination): string;
11
13
  export {};
@@ -1,2 +1,2 @@
1
- import React,{memo,useCallback}from"react";import{Badge}from"@redocly/theme";import{Pagination}from"../../services";import{MenuItemLi,MenuItemTitle}from"./styled";import{MenuItems}from"./MenuItems";import{MenuItemLink}from"./MenuItemLink";import{MenuOperationItemContent}from"./MenuOperationItemContent";import{ShelfIcon}from"../icons";import{encodeBackSlashes}from"../../utils";import{useMenuItemExpanded}from"./hooks";function MenuItemComponent({item:e,children:t,onClick:n,pagination:m}){var i;const[o,a]=useMenuItemExpanded(e),c=getLink(e,m),r=useCallback((()=>{c&&e.hasActiveSubItem||a(!o)}),[c,e.hasActiveSubItem,a,o]),l=(null===(i=e.items)||void 0===i?void 0:i.length)>0;return React.createElement(MenuItemLi,{depth:e.depth,"data-item-id":e.id,onClick:n},"operation"===e.type?React.createElement(MenuOperationItemContent,{item:e,to:c,active:e.active},t):React.createElement(MenuItemLink,{to:c,depth:e.depth,type:e.type,hasChildren:l,active:e.active,onClick:r},e.depth>0&&l&&React.createElement(ShelfIcon,{direction:o?"down":"right"})||null,e.isSchema?React.createElement(Badge,{type:"schema"},"schema"):null,React.createElement(MenuItemTitle,{title:e.name},e.name,t)),l&&React.createElement(MenuItems,{expanded:o,items:e.items}))}export const MenuItem=memo(MenuItemComponent);function getLink(e,t){return"tag"!==e.type||e.description||t!==Pagination.Item?encodeBackSlashes(e.href):""}
1
+ import React,{memo,useCallback}from"react";import{Badge}from"@redocly/theme";import{Pagination}from"../../services";import{MenuItemLi,MenuItemTitle}from"./styled";import{MenuItems}from"./MenuItems";import{MenuItemLink}from"./MenuItemLink";import{MenuOperationItemContent}from"./MenuOperationItemContent";import{ShelfIcon}from"../icons";import{encodeBackSlashes}from"../../utils";import{useMenuItemExpanded}from"./hooks";function MenuItemComponent({item:e,children:t,onClick:n,pagination:m}){var i;const[o,a]=useMenuItemExpanded(e),r=getLink(e,m),c=useCallback((()=>{r&&e.hasActiveSubItem||a(!o)}),[r,e.hasActiveSubItem,a,o]),l=(null===(i=e.items)||void 0===i?void 0:i.length)>0;return React.createElement(MenuItemLi,{depth:e.depth,"data-item-id":e.id,onClick:n},"operation"===e.type?React.createElement(MenuOperationItemContent,{item:e,to:r,active:e.active},t):React.createElement(MenuItemLink,{to:r,depth:e.depth,type:e.type,hasChildren:l,active:e.active,onClick:c},e.depth>0&&l&&React.createElement(ShelfIcon,{direction:o?"down":"right"})||null,e.isSchema?React.createElement(Badge,{type:"schema"},"schema"):null,React.createElement(MenuItemTitle,{title:e.name},e.name,t)),l&&React.createElement(MenuItems,{expanded:o,items:e.items}))}export const MenuItem=memo(MenuItemComponent);export function getLink(e,t){return"tag"!==e.type||e.description||t!==Pagination.Item?encodeBackSlashes(e.href):""}
2
2
  //# sourceMappingURL=MenuItem.js.map
@@ -9,6 +9,7 @@ interface TagItemsProps {
9
9
  };
10
10
  pagination: Options['pagination'];
11
11
  showNextButton?: boolean;
12
+ footerHook?: Options['hooks']['MiddlePanelFooter'];
12
13
  }
13
- export declare function TagItems({ tag, nextSectionLink, pagination, showNextButton, }: TagItemsProps): JSX.Element;
14
+ export declare function TagItems({ tag, nextSectionLink, pagination, showNextButton, footerHook, }: TagItemsProps): JSX.Element;
14
15
  export {};
@@ -1,2 +1,2 @@
1
- import React from"react";import{Pagination}from"../../services";import{ContentItem}from"../ContentItem";import{NextSectionButton}from"../NextSectionButton";import{SectionContent}from"../SectionContent";export function TagItems({tag:t,nextSectionLink:e,pagination:n,showNextButton:o}){return React.createElement(React.Fragment,null,React.createElement(ContentItem,{key:t.id,item:t,withChildren:n!==Pagination.Item}),n===Pagination.Item&&React.createElement(SectionContent,{items:t.items||[],pagination:n,showNextButton:!1}),o&&e&&React.createElement(NextSectionButton,{href:e.href||"",label:e.name,pagination:n}))}
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)}
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 { NextSectionButtonWrap } from './NextSectionButton/styled';
6
+ export { MiddleFooterWrapper } from './Panel/MiddleFooterWrapper';
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{NextSectionButtonWrap}from"./NextSectionButton/styled";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{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";
2
2
  //# sourceMappingURL=index.js.map
@@ -3,6 +3,7 @@ import type { DropdownOption } from '../components/common';
3
3
  import type { OpenAPIDefinitionVersion } from '../recoil/store';
4
4
  import type { Options } from '../services/Options/types';
5
5
  import type { RouterType } from '../types';
6
+ import type { OpenAPIParser } from '../services/OpenAPIParser';
6
7
  export interface RoutingProps {
7
8
  /**
8
9
  * Only applies when using `history`-based routing. (See the `router` prop.) Specifies the base path under which
@@ -53,4 +54,5 @@ export interface StoreProps {
53
54
  activeVersionIdx: number;
54
55
  onChangeActiveVersion: (versionIdx: DropdownOption) => void;
55
56
  collapsedSidebar: boolean;
57
+ parser: OpenAPIParser;
56
58
  }
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,o){var t={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&o.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(l=Object.getOwnPropertySymbols(e);r<l.length;r++)o.indexOf(l[r])<0&&Object.prototype.propertyIsEnumerable.call(e,l[r])&&(t[l[r]]=e[l[r]])}return t};import React,{useEffect,useCallback}from"react";import{useRecoilState,useRecoilValue}from"recoil";import{activeVersionIdxSelector,layoutSelector,showRightPanelToggleSelector,collapsedSidebarSelector}from"../recoil/app";import{globalStore}from"../recoil/store";export function withStore(e){return o=>{var{portalOptions:t}=o,l=__rest(o,["portalOptions"]);const[r,a]=useRecoilState(layoutSelector),[i,s]=useRecoilState(showRightPanelToggleSelector),[c,n]=useRecoilState(collapsedSidebarSelector),{options:u,versions:p}=useRecoilValue(globalStore);useEffect((()=>{(null==t?void 0:t.layout)&&a(t.layout)}),[null==t?void 0:t.layout,a]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.collapsedSidebar)&&n(t.collapsedSidebar)}),[null==t?void 0:t.collapsedSidebar,n]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.showRightPanelToggle)&&s(t.showRightPanelToggle)}),[null==t?void 0:t.showRightPanelToggle,s]);const[g,d]=useRecoilState(activeVersionIdxSelector),S=useCallback((({idx:e})=>{e&&d(e)}),[d]);return React.createElement(e,Object.assign({},l,{options:u,versions:p,layout:r,showRightPanelToggle:i,activeVersionIdx:g,onChangeActiveVersion:S,collapsedSidebar:c}))}}
1
+ var __rest=this&&this.__rest||function(e,o){var t={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&o.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(l=Object.getOwnPropertySymbols(e);r<l.length;r++)o.indexOf(l[r])<0&&Object.prototype.propertyIsEnumerable.call(e,l[r])&&(t[l[r]]=e[l[r]])}return t};import React,{useEffect,useCallback}from"react";import{useRecoilState,useRecoilValue}from"recoil";import{useNavigate,useLocation}from"react-router-dom";import{activeVersionIdxSelector,layoutSelector,showRightPanelToggleSelector,collapsedSidebarSelector,versionPathSelector}from"../recoil/app";import{globalStore}from"../recoil/store";import{IS_BROWSER}from"../utils/dom";export function withStore(e){return o=>{var{portalOptions:t}=o,l=__rest(o,["portalOptions"]);const[r,a]=useRecoilState(layoutSelector),[i,s]=useRecoilState(showRightPanelToggleSelector),[n,c]=useRecoilState(collapsedSidebarSelector),{options:u,versions:p}=useRecoilValue(globalStore);useEffect((()=>{(null==t?void 0:t.layout)&&a(t.layout)}),[null==t?void 0:t.layout,a]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.collapsedSidebar)&&c(t.collapsedSidebar)}),[null==t?void 0:t.collapsedSidebar,c]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.showRightPanelToggle)&&s(t.showRightPanelToggle)}),[null==t?void 0:t.showRightPanelToggle,s]);const[d,S]=useRecoilState(activeVersionIdxSelector),[f,g]=useRecoilState(versionPathSelector),h=useNavigate(),v=useLocation(),b=useCallback((({idx:e})=>{if(void 0!==e){const o=p[e].id;if(IS_BROWSER&&o){const{hash:e,pathname:t,search:l}=v;h(`${t}${l}${e}`.replace(f,o))}S(e)}}),[v,h,S,f,p]),{parser:R}=(null==p?void 0:p[d])||{};return useEffect((()=>{(null==R?void 0:R.versionPath)&&g(R.versionPath)}),[null==R?void 0:R.versionPath,g]),R&&p.length?React.createElement(e,Object.assign({},l,{options:u,versions:p,layout:r,showRightPanelToggle:i,activeVersionIdx:d,onChangeActiveVersion:b,collapsedSidebar:n,parser:R})):null}}
2
2
  //# sourceMappingURL=withStore.js.map
@@ -1,2 +1,2 @@
1
- import{useMemo}from"react";import{buildContentItems}from"../services";export const useContentItems=({options:t,parser:e})=>{const{contentItems:o,flatItems:s}=useMemo((()=>buildContentItems(e,t)),[t,e]);return{flatItems:s,contentItems:o}};
1
+ import{useEffect,useMemo}from"react";import{useSetRecoilState}from"recoil";import{buildContentItems,Pagination}from"../services";import{flatMenuItemsSelector}from"../recoil/app";import{getLink}from"../components/SideMenu/MenuItem";import{isRootItem}from"../components/ContentItems/helpers";export const useContentItems=({options:e,parser:t})=>{const{contentItems:o,flatItems:n}=useMemo((()=>buildContentItems(t,e)),[e,t]),s=useSetRecoilState(flatMenuItemsSelector),{pagination:m}=e;return useEffect((()=>{s(flattenMenuItems(o,m))}),[o,m,s]),{flatItems:n,contentItems:o}};function flattenMenuItems(e,t,o=[]){return e.forEach((e=>{const n=getLink(e,t);let s=isRootItem(e);switch(t){case Pagination.Item:s=Boolean(n&&["tag","operation","schema"].includes(e.type));break;case Pagination.Section:s=Boolean(n&&["tag","schema"].includes(e.type))}s&&o.push({id:e.id,href:n,name:e.name}),e.items&&flattenMenuItems(e.items,t,o)})),o}
2
2
  //# sourceMappingURL=useContentItems.js.map
@@ -1,9 +1,11 @@
1
1
  import { LayoutVariant } from '@redocly/theme';
2
2
  import type { CodeSampleConfig } from '../services';
3
+ import type { MenuLink } from '../types';
3
4
  export type AppSessionStore = {
4
- activeVersionIdx: number;
5
5
  showRightPanelToggle: boolean;
6
6
  collapsedSidebar: false;
7
+ activeVersionIdx: number;
8
+ versionPath: string;
7
9
  };
8
10
  export type AppLocalStore = {
9
11
  layout: LayoutVariant;
@@ -12,11 +14,12 @@ export type AppLocalStore = {
12
14
  export type AppStore = {
13
15
  isSidebarOpened: boolean;
14
16
  activeMimeName: string;
17
+ menuNextLinks: MenuLink[];
15
18
  };
16
19
  export declare const appStore: import("recoil").RecoilState<AppStore>;
17
- export declare const collapsedSidebarSelector: import("recoil").RecoilState<boolean>;
18
20
  export declare const isSidebarOpenedSelector: import("recoil").RecoilState<boolean>;
19
21
  export declare const activeMimeNameSelector: import("recoil").RecoilState<string>;
22
+ export declare const flatMenuItemsSelector: import("recoil").RecoilState<MenuLink[]>;
20
23
  /**
21
24
  * appLocalStore saved to local storage
22
25
  */
@@ -28,4 +31,6 @@ export declare const activeSampleLanguageSelector: import("recoil").RecoilState<
28
31
  */
29
32
  export declare const appSessionStore: import("recoil").RecoilState<AppSessionStore>;
30
33
  export declare const showRightPanelToggleSelector: import("recoil").RecoilState<boolean>;
34
+ export declare const collapsedSidebarSelector: import("recoil").RecoilState<boolean>;
31
35
  export declare const activeVersionIdxSelector: import("recoil").RecoilState<number>;
36
+ export declare const versionPathSelector: import("recoil").RecoilState<string>;
@@ -1,2 +1,2 @@
1
- import{atom,DefaultValue,selector}from"recoil";import{LayoutVariant}from"@redocly/theme";import{toLocalStorage,fromLocalStorage,toSessionStorage,fromSessionStorage,IS_BROWSER}from"../utils";export const appStore=atom({key:"appStore",default:{isSidebarOpened:!0,activeMimeName:""}});export const collapsedSidebarSelector=selector({key:"collapsedSidebar",get:({get:e})=>e(appSessionStore).collapsedSidebar,set:({set:e,get:t},o)=>{const a=t(appSessionStore);e(appSessionStore,Object.assign(Object.assign({},a),{collapsedSidebar:o}))}});export const isSidebarOpenedSelector=selector({key:"isSidebarOpened",get:({get:e})=>e(appStore).isSidebarOpened,set:({set:e,get:t},o)=>{const a=t(appStore);e(appStore,Object.assign(Object.assign({},a),{isSidebarOpened:o}))}});export const activeMimeNameSelector=selector({key:"activeMimeName",get:({get:e})=>e(appStore).activeMimeName,set:({set:e,get:t},o)=>{const a=t(appStore);e(appStore,Object.assign(Object.assign({},a),{activeMimeName:o}))}});export const appLocalStore=atom({key:"appLocalStore",default:{layout:LayoutVariant.THREE_PANEL,activeSampleLanguage:""},effects:[({onSet:e,setSelf:t})=>{const o=fromLocalStorage("appLocalStore");null!=o&&""!==o&&t(JSON.parse(o)),e((e=>{e instanceof DefaultValue?IS_BROWSER&&localStorage.removeItem("appLocalStore"):toLocalStorage("appLocalStore",JSON.stringify(e))}))}]});export const layoutSelector=selector({key:"layout",get:({get:e})=>e(appLocalStore).layout,set:({set:e,get:t},o=LayoutVariant.STACKED)=>{const a=t(appLocalStore);e(appLocalStore,Object.assign(Object.assign({},a),{layout:o}))}});export const activeSampleLanguageSelector=selector({key:"activeSampleLanguage",get:({get:e})=>e(appLocalStore).activeSampleLanguage,set:({set:e,get:t},o)=>{const a=t(appLocalStore);e(appLocalStore,Object.assign(Object.assign({},a),{activeSampleLanguage:o}))}});export const appSessionStore=atom({key:"appSessionStore",default:{activeVersionIdx:0,showRightPanelToggle:!0,collapsedSidebar:!1},effects:[({onSet:e,setSelf:t})=>{const o=fromSessionStorage("appSessionStore");null!=o&&""!==o&&t(JSON.parse(o)),e((e=>{e instanceof DefaultValue?IS_BROWSER&&localStorage.removeItem("appSessionStore"):toSessionStorage("appSessionStore",JSON.stringify(e))}))}]});export const showRightPanelToggleSelector=selector({key:"showRightPanelToggle",get:({get:e})=>e(appSessionStore).showRightPanelToggle,set:({set:e,get:t},o)=>{const a=t(appSessionStore);e(appSessionStore,Object.assign(Object.assign({},a),{showRightPanelToggle:o}))}});export const activeVersionIdxSelector=selector({key:"activeVersionIdx",get:({get:e})=>e(appSessionStore).activeVersionIdx,set:({set:e,get:t},o)=>{const a=t(appSessionStore);e(appSessionStore,Object.assign(Object.assign({},a),{activeVersionIdx:o}))}});
1
+ import{atom,DefaultValue,selector}from"recoil";import{LayoutVariant}from"@redocly/theme";import{toLocalStorage,fromLocalStorage,toSessionStorage,fromSessionStorage,IS_BROWSER}from"../utils";export const appStore=atom({key:"appStore",default:{isSidebarOpened:!0,activeMimeName:"",menuNextLinks:[]}});export const isSidebarOpenedSelector=selector({key:"isSidebarOpened",get:({get:e})=>e(appStore).isSidebarOpened,set:({set:e,get:t},o)=>{const a=t(appStore);e(appStore,Object.assign(Object.assign({},a),{isSidebarOpened:o}))}});export const activeMimeNameSelector=selector({key:"activeMimeName",get:({get:e})=>e(appStore).activeMimeName,set:({set:e,get:t},o)=>{const a=t(appStore);e(appStore,Object.assign(Object.assign({},a),{activeMimeName:o}))}});export const flatMenuItemsSelector=selector({key:"flatMenuItems",get:({get:e})=>e(appStore).menuNextLinks,set:({set:e,get:t},o)=>{const a=t(appStore);e(appStore,Object.assign(Object.assign({},a),{menuNextLinks:o}))}});export const appLocalStore=atom({key:"appLocalStore",default:{layout:LayoutVariant.THREE_PANEL,activeSampleLanguage:""},effects:[({onSet:e,setSelf:t})=>{const o=fromLocalStorage("appLocalStore");null!=o&&""!==o&&t(JSON.parse(o)),e((e=>{e instanceof DefaultValue?IS_BROWSER&&localStorage.removeItem("appLocalStore"):toLocalStorage("appLocalStore",JSON.stringify(e))}))}]});export const layoutSelector=selector({key:"layout",get:({get:e})=>e(appLocalStore).layout,set:({set:e,get:t},o=LayoutVariant.STACKED)=>{const a=t(appLocalStore);e(appLocalStore,Object.assign(Object.assign({},a),{layout:o}))}});export const activeSampleLanguageSelector=selector({key:"activeSampleLanguage",get:({get:e})=>e(appLocalStore).activeSampleLanguage,set:({set:e,get:t},o)=>{const a=t(appLocalStore);e(appLocalStore,Object.assign(Object.assign({},a),{activeSampleLanguage:o}))}});export const appSessionStore=atom({key:"appSessionStore",default:{showRightPanelToggle:!0,collapsedSidebar:!1,activeVersionIdx:0,versionPath:""},effects:[({onSet:e,setSelf:t})=>{const o=fromSessionStorage("appSessionStore");null!=o&&""!==o&&t(JSON.parse(o)),e((e=>{e instanceof DefaultValue?IS_BROWSER&&localStorage.removeItem("appSessionStore"):toSessionStorage("appSessionStore",JSON.stringify(e))}))}]});export const showRightPanelToggleSelector=selector({key:"showRightPanelToggle",get:({get:e})=>e(appSessionStore).showRightPanelToggle,set:({set:e,get:t},o)=>{const a=t(appSessionStore);e(appSessionStore,Object.assign(Object.assign({},a),{showRightPanelToggle:o}))}});export const collapsedSidebarSelector=selector({key:"collapsedSidebar",get:({get:e})=>e(appSessionStore).collapsedSidebar,set:({set:e,get:t},o)=>{const a=t(appSessionStore);e(appSessionStore,Object.assign(Object.assign({},a),{collapsedSidebar:o}))}});export const activeVersionIdxSelector=selector({key:"activeVersionIdx",get:({get:e})=>e(appSessionStore).activeVersionIdx,set:({set:e,get:t},o)=>{const a=t(appSessionStore);e(appSessionStore,Object.assign(Object.assign({},a),{activeVersionIdx:o}))}});export const versionPathSelector=selector({key:"versionPath",get:({get:e})=>e(appSessionStore).versionPath,set:({set:e,get:t},o)=>{const a=t(appSessionStore);o&&e(appSessionStore,Object.assign(Object.assign({},a),{versionPath:o}))}});
2
2
  //# sourceMappingURL=app.js.map
@@ -10,8 +10,11 @@ export declare class OpenAPIParser {
10
10
  private options;
11
11
  definitionUrl?: string;
12
12
  definition: OpenAPIDefinition;
13
+ versionPath?: string;
13
14
  private readonly allowMergeRefs;
14
- constructor(definition: OpenAPIDefinition, definitionUrl?: string, options?: Options);
15
+ constructor(definition: OpenAPIDefinition, definitionUrl?: string, options?: Options & {
16
+ versionId?: string;
17
+ });
15
18
  validate(spec: GenericObject): void;
16
19
  /**
17
20
  * get spec part by JsonPointer ($ref)
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r};import{IS_BROWSER,getDefinitionName}from"../utils";import{JsonPointer}from"../utils/JsonPointer";import{normalizeOptions}from"./Options/normalizeOptions";export function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}export function concatRefStacks(e,t){return t?e.concat(t):e}export class OpenAPIParser{constructor(e,t,r=normalizeOptions({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=decodeURIComponent(e);try{t=JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.definition=Object.assign({},e),this.validate(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const i=IS_BROWSER?window.location.href:"";"string"==typeof t&&(this.definitionUrl=new URL(t,i).href)}validate(e){if(void 0===e.openapi)throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],r=!1){const i=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,i),this.isRef(e)){const i=getDefinitionName(e.$ref);if(i&&this.options.ignoreNamedSchemas.has(i))return{resolved:{type:"object",title:i},refsStack:t};let n=this.byRef(e.$ref);if(!n)throw new Error(`Failed to resolve $ref "${e.$ref}"`);let o=t;if(t.includes(e.$ref))n=Object.assign({},n,{"x-circular-ref":!0});else if(this.isRef(n)){const e=this.deref(n,t,r);o=e.refsStack,n=e.resolved}return o=pushRef(t,e.$ref),n=this.allowMergeRefs?this.mergeRefs(e,n,r):n,{resolved:n,refsStack:o}}return{resolved:e,refsStack:concatRefStacks(t,i)}}mergeRefs(e,t,r){const{$ref:i}=e,n=__rest(e,["$ref"]),o=Object.keys(n);if(0===o.length)return t;if(r&&o.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly"].includes(e)))){const e=n,{description:r,title:i,readOnly:o,writeOnly:s}=e;return{allOf:[{description:r,title:i,readOnly:o,writeOnly:s},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,r,i=""){var n;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:i},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer.join(i,["allOf"]),allOf:void 0,title:e.title||getDefinitionName(t)});void 0!==o.properties&&"object"==typeof o.properties&&(o.properties=Object.assign({},o.properties)),void 0!==o.items&&"object"==typeof o.items&&(o.items=Object.assign({},o.items));const s=e.allOf.map(((e,t)=>{var n;const{resolved:s,refsStack:f}=this.deref(e,r,!0),l=e.$ref,a=l||JsonPointer.join(i,[String(t)]),c=this.mergeAllOf(s,l,f,a);if(!c["x-circular-ref"]||!c.allOf)return l&&(null===(n=o["x-parentRefs"])||void 0===n||n.push(...c["x-parentRefs"]||[],l)),{$ref:l,refsStack:pushRef(f,l),schema:c,absolutePointer:a}})).filter((e=>void 0!==e));for(const[e,{schema:r,refsStack:i,absolutePointer:f}]of s.entries()){const{type:s,enum:l,properties:a,items:c,required:p,title:d,description:O,readOnly:u,writeOnly:y,oneOf:m,anyOf:b,"x-circular-ref":h}=r,v=__rest(r,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref"]);if(o.type===s||void 0===o.type||void 0===s){if(void 0!==s&&(Array.isArray(s)&&Array.isArray(o.type)?o.type=[...s,...o.type]:o.type=s),void 0!==l&&(Array.isArray(l)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...l,...o.enum])):o.enum=l),void 0!==a&&"object"==typeof a){o.properties=o.properties||{};for(const r in a){const s=concatRefStacks(i,null===(n=a[r])||void 0===n?void 0:n["x-refsStack"]);if(o.properties[r]){if(!h){const i=this.mergeAllOf({allOf:[o.properties[r],a[r]],"x-refsStack":s},t+"/properties/"+r,s,JsonPointer.join(f,["allOf",String(e),"properties",r]));o.properties[r]=i}}else o.properties[r]=Object.assign(Object.assign({},a[r]),{absolutePointer:JsonPointer.join(f,["properties",r]),"x-refsStack":s})}}if(void 0!==c&&!h){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),n="boolean"==typeof r.items?{}:Object.assign({},r.items);o.items=this.mergeAllOf({allOf:[e,n]},t+"/items",i)}void 0!==m&&(o.oneOf=m),void 0!==b&&(o.anyOf=b),void 0!==p&&(o.required=[...o.required||[],...p]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||d,description:o.description||O,readOnly:void 0!==o.readOnly?o.readOnly:u,writeOnly:void 0!==o.writeOnly?o.writeOnly:y,"x-circular-ref":o["x-circular-ref"]||h}),v)}}return o}findDerived(e){const t={},r=this.definition.components&&this.definition.components.schemas||{};for(const i in r){const{resolved:n}=this.deref(r[i]);void 0!==n.allOf&&n.allOf.find((t=>void 0!==t.$ref&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+i]=[n["x-discriminator-value"]||i])}return t}hoistOneOfs(e){if(void 0===e.allOf)return e;const t=e.allOf;for(let e=0;e<t.length;e++){const r=t[e];if(Array.isArray(r.oneOf)){const i=t.slice(0,e),n=t.slice(e+1);return{oneOf:r.oneOf.map((e=>({allOf:[...i,e,...n]})))}}}return e}}
1
+ var __rest=this&&this.__rest||function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r};import{IS_BROWSER,getDefinitionName}from"../utils";import{JsonPointer}from"../utils/JsonPointer";import{normalizeOptions}from"./Options/normalizeOptions";export function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}export function concatRefStacks(e,t){return t?e.concat(t):e}export class OpenAPIParser{constructor(e,t,r=normalizeOptions({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"versionPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=decodeURIComponent(e);try{t=JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.definition=Object.assign({},e),this.validate(e),this.versionPath=r.versionId,this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const i=IS_BROWSER?window.location.href:"";"string"==typeof t&&(this.definitionUrl=new URL(t,i).href)}validate(e){if(void 0===e.openapi)throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],r=!1){const i=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,i),this.isRef(e)){const i=getDefinitionName(e.$ref);if(i&&this.options.ignoreNamedSchemas.has(i))return{resolved:{type:"object",title:i},refsStack:t};let n=this.byRef(e.$ref);if(!n)throw new Error(`Failed to resolve $ref "${e.$ref}"`);let o=t;if(t.includes(e.$ref))n=Object.assign({},n,{"x-circular-ref":!0});else if(this.isRef(n)){const e=this.deref(n,t,r);o=e.refsStack,n=e.resolved}return o=pushRef(t,e.$ref),n=this.allowMergeRefs?this.mergeRefs(e,n,r):n,{resolved:n,refsStack:o}}return{resolved:e,refsStack:concatRefStacks(t,i)}}mergeRefs(e,t,r){const{$ref:i}=e,n=__rest(e,["$ref"]),o=Object.keys(n);if(0===o.length)return t;if(r&&o.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly"].includes(e)))){const e=n,{description:r,title:i,readOnly:o,writeOnly:s}=e;return{allOf:[{description:r,title:i,readOnly:o,writeOnly:s},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,r,i=""){var n;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:i},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer.join(i,["allOf"]),allOf:void 0,title:e.title||getDefinitionName(t)});void 0!==o.properties&&"object"==typeof o.properties&&(o.properties=Object.assign({},o.properties)),void 0!==o.items&&"object"==typeof o.items&&(o.items=Object.assign({},o.items));const s=e.allOf.map(((e,t)=>{var n;const{resolved:s,refsStack:l}=this.deref(e,r,!0),a=e.$ref,f=a||JsonPointer.join(i,[String(t)]),c=this.mergeAllOf(s,a,l,f);if(!c["x-circular-ref"]||!c.allOf)return a&&(null===(n=o["x-parentRefs"])||void 0===n||n.push(...c["x-parentRefs"]||[],a)),{$ref:a,refsStack:pushRef(l,a),schema:c,absolutePointer:f}})).filter((e=>void 0!==e));for(const[e,{schema:r,refsStack:i,absolutePointer:l}]of s.entries()){const{type:s,enum:a,properties:f,items:c,required:p,title:d,description:O,readOnly:u,writeOnly:y,oneOf:b,anyOf:m,"x-circular-ref":h}=r,v=__rest(r,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref"]);if(o.type===s||void 0===o.type||void 0===s){if(void 0!==s&&(Array.isArray(s)&&Array.isArray(o.type)?o.type=[...s,...o.type]:o.type=s),void 0!==a&&(Array.isArray(a)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...a,...o.enum])):o.enum=a),void 0!==f&&"object"==typeof f){o.properties=o.properties||{};for(const r in f){const s=concatRefStacks(i,null===(n=f[r])||void 0===n?void 0:n["x-refsStack"]);if(o.properties[r]){if(!h){const i=this.mergeAllOf({allOf:[o.properties[r],f[r]],"x-refsStack":s},t+"/properties/"+r,s,JsonPointer.join(l,["allOf",String(e),"properties",r]));o.properties[r]=i}}else o.properties[r]=Object.assign(Object.assign({},f[r]),{absolutePointer:JsonPointer.join(l,["properties",r]),"x-refsStack":s})}}if(void 0!==c&&!h){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),n="boolean"==typeof r.items?{}:Object.assign({},r.items);o.items=this.mergeAllOf({allOf:[e,n]},t+"/items",i)}void 0!==b&&(o.oneOf=b),void 0!==m&&(o.anyOf=m),void 0!==p&&(o.required=[...o.required||[],...p]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||d,description:o.description||O,readOnly:void 0!==o.readOnly?o.readOnly:u,writeOnly:void 0!==o.writeOnly?o.writeOnly:y,"x-circular-ref":o["x-circular-ref"]||h}),v)}}return o}findDerived(e){const t={},r=this.definition.components&&this.definition.components.schemas||{};for(const i in r){const{resolved:n}=this.deref(r[i]);void 0!==n.allOf&&n.allOf.find((t=>void 0!==t.$ref&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+i]=[n["x-discriminator-value"]||i])}return t}hoistOneOfs(e){if(void 0===e.allOf)return e;const t=e.allOf;for(let e=0;e<t.length;e++){const r=t[e];if(Array.isArray(r.oneOf)){const i=t.slice(0,e),n=t.slice(e+1);return{oneOf:r.oneOf.map((e=>({allOf:[...i,e,...n]})))}}}return e}}
2
2
  //# sourceMappingURL=OpenAPIParser.js.map
@@ -1,2 +1,2 @@
1
- import{getTagGroupsItems,getTagsItems,getTagsWithOperations}from"./tags";import{addMarkdownItems}from"./markdown";import{flattenByProp,getValueFromMdParsedExtension}from"../../utils";export function buildMenuStructure(e,t){var n,i;const{definition:o}=e,{hideInfoSection:s,hideInfoDescription:r,pagination:a,schemaDefinitionsTagName:d,markdownHeadingsAnchorLevel:l,infoLabel:u}=t,m=s&&"none"!==a?[]:[{id:"",name:(null===(n=null==o?void 0:o.info)||void 0===n?void 0:n["x-label"])||u||(null===(i=null==o?void 0:o.info)||void 0===i?void 0:i.title)||"Overview",href:"/",depth:s?-1:1,level:1,type:"section",infoDefinition:o.info,items:[]}],f=[...o.tags||[]].filter((e=>e.description))||[];!f.find((e=>(null==e?void 0:e.name)===d))&&d&&f.push({name:d});const p=getTagsWithOperations(e,f),g=o["x-tagGroups"];return s||r||m.push(...addMarkdownItems(getValueFromMdParsedExtension(o.info,"description")||"",void 0,1,l,a)),g&&g.length>0?m.push(...getTagGroupsItems(e,void 0,g,p,t)):m.push(...getTagsItems(e,p,void 0,void 0,t)),m}export function buildContentItems(e,t){const n=buildMenuStructure(e,t);return{contentItems:n,flatItems:flattenByProp(n||[],"items")}}
1
+ import{getTagGroupsItems,getTagsItems,getTagsWithOperations}from"./tags";import{addMarkdownItems}from"./markdown";import{flattenByProp,getValueFromMdParsedExtension,normalizePath}from"../../utils";import{joinWithSeparator}from"../history";export function buildMenuStructure(e,t){var i,o;const{definition:n}=e,{hideInfoSection:r,hideInfoDescription:a,pagination:s,schemaDefinitionsTagName:d,markdownHeadingsAnchorLevel:m,infoLabel:l}=t,f=r&&"none"!==s?[]:[{id:"",name:(null===(i=null==n?void 0:n.info)||void 0===i?void 0:i["x-label"])||l||(null===(o=null==n?void 0:n.info)||void 0===o?void 0:o.title)||"Overview",href:"/",depth:r?-1:1,level:1,type:"section",infoDefinition:n.info,items:[]}],u=[...n.tags||[]].filter((e=>e.description))||[];!u.find((e=>(null==e?void 0:e.name)===d))&&d&&u.push({name:d});const p=getTagsWithOperations(e,u),h=n["x-tagGroups"];return r||a||f.push(...addMarkdownItems(getValueFromMdParsedExtension(n.info,"description")||"",void 0,1,m,s)),h&&h.length>0?f.push(...getTagGroupsItems(e,void 0,h,p,t)):f.push(...getTagsItems(e,p,void 0,void 0,t)),f}function addVersionToHref(e,t){return e.map((e=>(e.href&&(e.href=normalizePath(joinWithSeparator(t,e.href,"/"))),e.id&&"tag"===e.type&&(e.id=normalizePath(joinWithSeparator(t,e.id,"/"))),e.items&&addVersionToHref(e.items,t),e)))}export function buildContentItems(e,t){const i=buildMenuStructure(e,t),o=e.versionPath?addVersionToHref(i,e.versionPath):i;return{contentItems:o,flatItems:flattenByProp(o||[],"items")}}
2
2
  //# sourceMappingURL=builder.js.map
@@ -133,6 +133,7 @@ export interface HooksConfig {
133
133
  securityRequirementId: string;
134
134
  }) => string;
135
135
  sanitize?: (raw: string) => string;
136
+ MiddlePanelFooter?: HookConfig<undefined>;
136
137
  /** @deprecated Use ReplaceTryItSecurityPanel instead */
137
138
  ReplaceTryItAuthPanel?: HookConfig<SecurityPanelHookProps>;
138
139
  }
@@ -1 +1,6 @@
1
1
  export type RouterType = 'history' | 'memory' | 'hash';
2
+ export type MenuLink = {
3
+ id: string;
4
+ href: string;
5
+ name: string;
6
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.0.0-alpha.35",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -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.11.1"
122
+ "@redocly/theme": "0.11.3"
123
123
  },
124
124
  "nx": {
125
125
  "namedInputs": {
@@ -1 +0,0 @@
1
- export declare const NextSectionButtonWrap: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1 +0,0 @@
1
- export declare const NextSectionButtonWrap: import("styled-components").StyledComponent<"div", any, {}, never>;