@redocly/openapi-docs 3.7.0-next.6 → 3.7.0-rc.2

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApiInfo=ApiInfo;const jsx_runtime_1=require("react/jsx-runtime"),jotai_1=require("jotai"),theme_1=require("@redocly/theme"),app_1=require("../../jotai/app"),common_1=require("../common"),ExternalDocumentation_1=require("../ExternalDocumentation"),Markdown_1=require("../Markdown"),styled_1=require("./styled"),store_1=require("../../jotai/store"),saveTextBeforeHeading_1=require("../../utils/saveTextBeforeHeading"),helpers_1=require("../../utils/helpers"),RenderHook_1=require("../RenderHook"),Metadata_1=require("./Metadata"),hooks_1=require("../../hooks");function ApiInfo({item:e}){const r=(0,hooks_1.useTranslate)(),{options:{unstable_hooks:t,hideInfoMetadata:o},parser:{definition:a}}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),i=(0,jotai_1.useAtomValue)(app_1.layoutAtom),n=e.infoDefinition;if(!n)return null;const s=(0,saveTextBeforeHeading_1.saveTextBeforeHeading)((0,helpers_1.getValueFromMdParsedExtension)(n,"description")||""),u=(0,helpers_1.getValueFromMdParsedExtension)(n,"summary")||void 0,_=null==a?void 0:a.externalDocs,l=n.version&&(0,jsx_runtime_1.jsxs)("span",{children:["(",n.version,")"]})||null,d=i===theme_1.LayoutVariant.STACKED;return(0,jsx_runtime_1.jsx)(common_1.Row,{layout:i,children:(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{fullWidth:!0,className:"api-info",isStacked:d,children:[(0,jsx_runtime_1.jsxs)(styled_1.ApiHeader,{children:[n.title," ",l]}),(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiTitle||(null==t?void 0:t.AfterApiTitle),props:{info:n}}),u&&(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:u,"data-role":"redoc-summary"}),s&&(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:s,"data-role":"redoc-description"}),_&&(0,jsx_runtime_1.jsx)(ExternalDocumentation_1.ExternalDocumentation,{externalDocs:_}),!o&&(0,jsx_runtime_1.jsx)(Metadata_1.Metadata,{metadata:n["x-metadata"],translate:r})]})})}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApiInfo=ApiInfo;const jsx_runtime_1=require("react/jsx-runtime"),jotai_1=require("jotai"),theme_1=require("@redocly/theme"),app_1=require("../../jotai/app"),common_1=require("../common"),ExternalDocumentation_1=require("../ExternalDocumentation"),Markdown_1=require("../Markdown"),styled_1=require("./styled"),store_1=require("../../jotai/store"),saveTextBeforeHeading_1=require("../../utils/saveTextBeforeHeading"),helpers_1=require("../../utils/helpers"),RenderHook_1=require("../RenderHook"),Metadata_1=require("./Metadata"),hooks_1=require("../../hooks");function ApiInfo({item:e}){const r=(0,hooks_1.useTranslate)(),{options:{unstable_hooks:o,hideInfoMetadata:t},parser:{definition:i}}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),n=(0,jotai_1.useAtomValue)(app_1.layoutAtom),a=e.infoDefinition;if(!a)return null;const s=(0,saveTextBeforeHeading_1.saveTextBeforeHeading)((0,helpers_1.getValueFromMdParsedExtension)(a,"description")||""),u=(0,helpers_1.getValueFromMdParsedExtension)(a,"summary")||void 0,_=null==i?void 0:i.externalDocs,d=a.version&&(0,jsx_runtime_1.jsxs)("span",{children:["(",a.version,")"]})||null,l=n===theme_1.LayoutVariant.STACKED;return(0,jsx_runtime_1.jsx)(common_1.Row,{layout:n,children:(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{fullWidth:!0,className:"api-info",isStacked:l,children:[(0,jsx_runtime_1.jsxs)(styled_1.ApiHeader,{children:[a.title," ",d]}),(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiTitle||(null==o?void 0:o.AfterApiTitle),props:{info:a}}),u&&(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:u,"data-role":"redoc-summary"}),s&&(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:s,"data-role":"redoc-description"}),(0,jsx_runtime_1.jsx)(RenderHook_1.RenderHook,{Hook:theme_1.AfterOpenApiDescription||(null==o?void 0:o.AfterOpenApiDescription),props:{info:a}}),_&&(0,jsx_runtime_1.jsx)(ExternalDocumentation_1.ExternalDocumentation,{externalDocs:_}),!t&&(0,jsx_runtime_1.jsx)(Metadata_1.Metadata,{metadata:a["x-metadata"],translate:r})]})})}
2
2
  //# sourceMappingURL=ApiInfo.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Metadata=Metadata;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),theme_1=require("@redocly/theme"),FILTER_OUT_KEYS=["title","description"];function metadataMap([e,t]){return FILTER_OUT_KEYS.includes(e)?null:Array.isArray(t)?{key:e,value:t.filter((e=>"object"!=typeof e)).join(", ")}:"object"==typeof t?null:{key:e,value:t}}function Metadata({metadata:e,translate:t}){const r=(0,react_1.useMemo)((()=>Object.entries(e||{}).map(metadataMap).filter(theme_1.isNotNull)),[e]);return e?(0,jsx_runtime_1.jsxs)(theme_1.Markdown,{children:[(0,jsx_runtime_1.jsx)(theme_1.H3,{children:t("openapi.info.metadata.title","Metadata")}),(0,jsx_runtime_1.jsxs)("table",{className:"md",children:[(0,jsx_runtime_1.jsx)("thead",{children:(0,jsx_runtime_1.jsxs)("tr",{children:[(0,jsx_runtime_1.jsx)("th",{scope:"col",children:t("openapi.key","Key")}),(0,jsx_runtime_1.jsx)("th",{scope:"col",children:t("openapi.value","Value")})]})}),(0,jsx_runtime_1.jsx)("tbody",{children:r.map((({key:e,value:t})=>(0,jsx_runtime_1.jsxs)("tr",{children:[(0,jsx_runtime_1.jsx)("td",{children:e}),(0,jsx_runtime_1.jsx)("td",{children:`${t}`})]},e)))})]})]}):null}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Metadata=Metadata;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),theme_1=require("@redocly/theme"),helpers_1=require("../../utils/helpers"),FILTER_OUT_KEYS=["title","description"];function metadataMap([e,t]){return FILTER_OUT_KEYS.includes(e)?null:Array.isArray(t)?{key:e,value:t.filter((e=>"object"!=typeof e)).join(", ")}:"object"==typeof t?null:{key:e,value:t}}function Metadata({metadata:e,translate:t}){const r=(0,react_1.useMemo)((()=>Object.entries(e||{}).map(metadataMap).filter(theme_1.isNotNull)),[e]);return e?(0,jsx_runtime_1.jsxs)(theme_1.Markdown,{children:[(0,jsx_runtime_1.jsx)(theme_1.H3,{children:t("openapi.info.metadata.title","Metadata")}),(0,jsx_runtime_1.jsxs)("table",{className:"md",children:[(0,jsx_runtime_1.jsx)("thead",{children:(0,jsx_runtime_1.jsxs)("tr",{children:[(0,jsx_runtime_1.jsx)("th",{scope:"col",children:t("openapi.key","Key")}),(0,jsx_runtime_1.jsx)("th",{scope:"col",children:t("openapi.value","Value")})]})}),(0,jsx_runtime_1.jsx)("tbody",{children:r.map((({key:e,value:t})=>(0,jsx_runtime_1.jsxs)("tr",{children:[(0,jsx_runtime_1.jsx)("td",{children:e}),(0,jsx_runtime_1.jsx)("td",{children:"string"==typeof t&&(0,helpers_1.isAbsoluteUrl)(t)?(0,jsx_runtime_1.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",children:t}):String(t)})]},e)))})]})]}):null}
2
2
  //# sourceMappingURL=Metadata.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Overview=Overview;const jsx_runtime_1=require("react/jsx-runtime"),theme_1=require("@redocly/theme"),PanelItem_1=require("../PanelItem");function Overview({info:e,translate:t}){const n=e.contact&&e.contact.url&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:t("openapi.info.contact.url","URL")}),title:(0,jsx_runtime_1.jsx)("a",{href:e.contact.url,target:"_blank",rel:"noreferrer",children:e.contact.url}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.contact.url},"NewTabButton")]})||null,r=e.contact&&e.contact.email&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:e.contact.name||t("openapi.info.contact.name","E-mail")}),title:(0,jsx_runtime_1.jsx)("a",{href:"mailto:"+e.contact.email,children:e.contact.email}),actions:[(0,jsx_runtime_1.jsx)(theme_1.CopyButton,{data:e.contact.email},"CopyButton"),(0,jsx_runtime_1.jsx)(theme_1.EmailButton,{data:e.contact.email},"EmailButton")]})||null,i=e.license&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:t("openapi.info.license","License")}),title:e.license.identifier?e.license.identifier:(0,jsx_runtime_1.jsx)("a",{href:e.license.url,target:"_blank",rel:"noreferrer",children:e.license.name}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.license.url||""},"NewTabButton")]})||null,a=e.termsOfService&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{title:(0,jsx_runtime_1.jsx)("a",{href:e.termsOfService,target:"_blank",rel:"noreferrer",children:t("openapi.info.termsOfService","Terms of Service")}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.termsOfService},e.termsOfService)]})||null;return(0,jsx_runtime_1.jsx)(jsx_runtime_1.Fragment,{children:(0,jsx_runtime_1.jsxs)(PanelItem_1.PanelItemsList,{children:[n,r,i,a]})})}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Overview=Overview;const jsx_runtime_1=require("react/jsx-runtime"),theme_1=require("@redocly/theme"),PanelItem_1=require("../PanelItem");function Overview({info:e,translate:t}){var n;const r=e.contact&&e.contact.url&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:t("openapi.info.contact.url","URL")}),title:(0,jsx_runtime_1.jsx)("a",{href:e.contact.url,target:"_blank",rel:"noreferrer",children:e.contact.url}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.contact.url},"NewTabButton")]})||null,i=e.contact&&e.contact.email&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:e.contact.name||t("openapi.info.contact.name","E-mail")}),title:(0,jsx_runtime_1.jsx)("a",{href:"mailto:"+e.contact.email,children:e.contact.email}),actions:[(0,jsx_runtime_1.jsx)(theme_1.CopyButton,{data:e.contact.email},"CopyButton"),(0,jsx_runtime_1.jsx)(theme_1.EmailButton,{data:e.contact.email},"EmailButton")]})||null,a=e.license&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:t("openapi.info.license","License")}),title:e.license.identifier?e.license.identifier:(0,jsx_runtime_1.jsx)("a",{href:e.license.url,target:"_blank",rel:"noreferrer",children:e.license.name}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.license.url||""},"NewTabButton")]})||null,l=e.termsOfService&&(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{title:(0,jsx_runtime_1.jsx)("a",{href:e.termsOfService,target:"_blank",rel:"noreferrer",children:t("openapi.info.termsOfService","Terms of Service")}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.termsOfService},e.termsOfService)]})||null,s=(null===(n=e["x-links"])||void 0===n?void 0:n.map((e=>(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItem,{header:(0,jsx_runtime_1.jsx)(PanelItem_1.PanelItemDescription,{children:e.name}),title:(0,jsx_runtime_1.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",children:e.url}),actions:[(0,jsx_runtime_1.jsx)(theme_1.NewTabButton,{data:e.url},"NewTabButton")]},e.url))))||null;return(0,jsx_runtime_1.jsx)(jsx_runtime_1.Fragment,{children:(0,jsx_runtime_1.jsxs)(PanelItem_1.PanelItemsList,{children:[r,i,a,l,s]})})}
2
2
  //# sourceMappingURL=Overview.js.map
@@ -1,4 +1,4 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TagItem=void 0,exports.TagItemComponent=TagItemComponent;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),theme_1=require("@redocly/theme"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),common_1=require("../common"),Markdown_1=require("../Markdown"),OperationsNavigation_1=require("./OperationsNavigation"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks");function TagItemComponent({item:e,routingBasePath:t="",isExpanded:a}){const r=(0,hooks_1.useTranslate)(),{description:i,name:n,href:o}=e,s=(0,react_router_dom_1.useNavigate)(),m=(0,jotai_1.useAtomValue)(app_1.layoutAtom),_=(0,react_1.useCallback)((()=>{s(t+e.href)}),[e.href,s,t]),u=Boolean(e.items.length),d=m===theme_1.LayoutVariant.STACKED;return(0,jsx_runtime_1.jsxs)(Wrapper,{expanded:a,children:[(0,jsx_runtime_1.jsxs)(common_1.Row,{layout:m,children:[(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{fullWidth:!u,isStacked:d,children:[(0,jsx_runtime_1.jsxs)(Heading,{children:[(0,jsx_runtime_1.jsx)(common_1.ShareLink,{to:o,"aria-label":`link to ${n}`}),n]}),(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:i})]}),u&&(0,jsx_runtime_1.jsx)(OperationsNavigation_1.OperationsNavigation,{items:e.items,routingBasePath:t})]}),u&&!a&&(0,jsx_runtime_1.jsxs)(ShowButton,{type:"button",variant:"text",size:"medium",onClick:_,children:["+ ",r("openapi.actions.show","Show")]})]})}exports.TagItem=(0,react_1.memo)(TagItemComponent);const Wrapper=styled_components_1.default.div`
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TagItem=void 0,exports.TagItemComponent=TagItemComponent;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),theme_1=require("@redocly/theme"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),common_1=require("../common"),Markdown_1=require("../Markdown"),OperationsNavigation_1=require("./OperationsNavigation"),app_1=require("../../jotai/app"),hooks_1=require("../../hooks");function TagItemComponent({item:e,routingBasePath:t="",isExpanded:a}){const r=(0,hooks_1.useTranslate)(),{description:o,name:i,href:n}=e,s=(0,react_router_dom_1.useNavigate)(),m=(0,jotai_1.useAtomValue)(app_1.layoutAtom),_=(0,react_1.useCallback)((()=>{s(t+e.href)}),[e.href,s,t]),u=Boolean(e.items.length),d=m===theme_1.LayoutVariant.STACKED;return(0,jsx_runtime_1.jsxs)(Wrapper,{expanded:a,children:[(0,jsx_runtime_1.jsxs)(common_1.Row,{layout:m,children:[(0,jsx_runtime_1.jsxs)(common_1.SamplesMiddlePanel,{fullWidth:!u,isStacked:d,children:[(0,jsx_runtime_1.jsxs)(Heading,{children:[(0,jsx_runtime_1.jsx)(common_1.ShareLink,{to:n,"aria-label":`link to ${i}`}),i]}),(0,jsx_runtime_1.jsx)(Markdown_1.Markdown,{source:o})]}),u&&(0,jsx_runtime_1.jsx)(OperationsNavigation_1.OperationsNavigation,{items:e.items,routingBasePath:t})]}),u&&!a&&(0,jsx_runtime_1.jsxs)(ShowButton,{type:"button",variant:"text",size:"medium",onClick:_,children:["+ ",r("openapi.actions.show","Show")]})]})}exports.TagItem=(0,react_1.memo)(TagItemComponent);const Wrapper=styled_components_1.default.div`
2
2
  padding-top: var(--spacing-lg);
3
3
  padding-bottom: ${({expanded:e})=>e?"var(--spacing-xxl)":""};
4
4
  `,ShowButton=(0,styled_components_1.default)(theme_1.Button)`
@@ -19,5 +19,6 @@
19
19
  visibility: visible;
20
20
  }
21
21
  }
22
+ overflow-wrap: break-word;
22
23
  `;
23
24
  //# sourceMappingURL=TagItem.js.map
@@ -91,6 +91,9 @@ export interface HooksConfig {
91
91
  AfterApiTitle?: HookConfig<{
92
92
  info: OpenAPIInfo;
93
93
  }>;
94
+ AfterOpenApiDescription?: HookConfig<{
95
+ info: OpenAPIInfo;
96
+ }>;
94
97
  BeforeOperation?: HookConfig<{
95
98
  operation: OperationModel;
96
99
  }>;
@@ -1,2 +1,2 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.strikethroughText=strikethroughText,exports.escapeFormId=escapeFormId,exports.unescapeFormId=unescapeFormId,exports.encodeBackSlashes=encodeBackSlashes,exports.removePercentChart=removePercentChart,exports.tryDecodeURIComponent=tryDecodeURIComponent,exports.safeSlugify=safeSlugify,exports.safeJsonParse=safeJsonParse;const slugify_1=__importDefault(require("slugify"));function strikethroughText(e){return e.split("").map((e=>e+"̵")).join("")}function escapeFormId(e){return e.replace(/[.[\]]/g,(e=>({".":"%2e","[":"%5b","]":"%5d"}[e]||"")))}function unescapeFormId(e){return e.replace(/%2e|%5b|%5d/g,(e=>({"%2e":".","%5b":"[","%5d":"]"}[e]||"")))}function encodeBackSlashes(e){return e.replace(/\\/g,"%5C")}function removePercentChart(e){return e.replace(/%/g,"")}function tryDecodeURIComponent(e){try{return decodeURIComponent(e)}catch(r){return console.error(`Decoding failed: ${e}`,r),e}}function safeSlugify(e){return(0,slugify_1.default)(e)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}function safeJsonParse(e,r={}){try{return JSON.parse(e)}catch(e){return r}}
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.strikethroughText=strikethroughText,exports.escapeFormId=escapeFormId,exports.unescapeFormId=unescapeFormId,exports.encodeBackSlashes=encodeBackSlashes,exports.removePercentChart=removePercentChart,exports.tryDecodeURIComponent=tryDecodeURIComponent,exports.safeSlugify=safeSlugify,exports.safeJsonParse=safeJsonParse;const slugify_1=__importDefault(require("slugify"));function strikethroughText(e){return e.split("").map((e=>e+"̵")).join("")}function escapeFormId(e){return e.replace(/[.[\]]/g,(e=>({".":"%2e","[":"%5b","]":"%5d"}[e]||"")))}function unescapeFormId(e){return e.replace(/%2e|%5b|%5d/g,(e=>({"%2e":".","%5b":"[","%5d":"]"}[e]||"")))}function encodeBackSlashes(e){return e.replace(/\\/g,"%5C")}function removePercentChart(e){return e.replace(/%/g,"")}function tryDecodeURIComponent(e){try{return decodeURIComponent(e)}catch(r){return console.error(`Decoding failed: ${e}`,r),e}}function safeSlugify(e){return(0,slugify_1.default)(e).slice(0,240)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"").slice(0,240)}function safeJsonParse(e,r={}){try{return JSON.parse(e)}catch(e){return r}}
2
2
  //# sourceMappingURL=string.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as _jsxs,jsx as _jsx}from"react/jsx-runtime";import{useAtomValue}from"jotai";import{AfterOpenApiTitle,LayoutVariant}from"@redocly/theme";import{layoutAtom}from"../../jotai/app";import{SamplesMiddlePanel,Row}from"../common";import{ExternalDocumentation}from"../ExternalDocumentation";import{Markdown}from"../Markdown";import{ApiHeader}from"./styled";import{globalStoreAtom}from"../../jotai/store";import{saveTextBeforeHeading}from"../../utils/saveTextBeforeHeading";import{getValueFromMdParsedExtension}from"../../utils/helpers";import{RenderHook}from"../RenderHook";import{Metadata}from"./Metadata";import{useTranslate}from"../../hooks";export function ApiInfo({item:e}){const o=useTranslate(),{options:{unstable_hooks:t,hideInfoMetadata:r},parser:{definition:a}}=useAtomValue(globalStoreAtom),i=useAtomValue(layoutAtom),n=e.infoDefinition;if(!n)return null;const s=saveTextBeforeHeading(getValueFromMdParsedExtension(n,"description")||""),m=getValueFromMdParsedExtension(n,"summary")||void 0,l=null==a?void 0:a.externalDocs,d=n.version&&_jsxs("span",{children:["(",n.version,")"]})||null,p=i===LayoutVariant.STACKED;return _jsx(Row,{layout:i,children:_jsxs(SamplesMiddlePanel,{fullWidth:!0,className:"api-info",isStacked:p,children:[_jsxs(ApiHeader,{children:[n.title," ",d]}),_jsx(RenderHook,{Hook:AfterOpenApiTitle||(null==t?void 0:t.AfterApiTitle),props:{info:n}}),m&&_jsx(Markdown,{source:m,"data-role":"redoc-summary"}),s&&_jsx(Markdown,{source:s,"data-role":"redoc-description"}),l&&_jsx(ExternalDocumentation,{externalDocs:l}),!r&&_jsx(Metadata,{metadata:n["x-metadata"],translate:o})]})})}
1
+ import{jsxs as _jsxs,jsx as _jsx}from"react/jsx-runtime";import{useAtomValue}from"jotai";import{AfterOpenApiTitle,AfterOpenApiDescription,LayoutVariant}from"@redocly/theme";import{layoutAtom}from"../../jotai/app";import{SamplesMiddlePanel,Row}from"../common";import{ExternalDocumentation}from"../ExternalDocumentation";import{Markdown}from"../Markdown";import{ApiHeader}from"./styled";import{globalStoreAtom}from"../../jotai/store";import{saveTextBeforeHeading}from"../../utils/saveTextBeforeHeading";import{getValueFromMdParsedExtension}from"../../utils/helpers";import{RenderHook}from"../RenderHook";import{Metadata}from"./Metadata";import{useTranslate}from"../../hooks";export function ApiInfo({item:e}){const o=useTranslate(),{options:{unstable_hooks:t,hideInfoMetadata:r},parser:{definition:a}}=useAtomValue(globalStoreAtom),i=useAtomValue(layoutAtom),n=e.infoDefinition;if(!n)return null;const s=saveTextBeforeHeading(getValueFromMdParsedExtension(n,"description")||""),l=getValueFromMdParsedExtension(n,"summary")||void 0,m=null==a?void 0:a.externalDocs,d=n.version&&_jsxs("span",{children:["(",n.version,")"]})||null,p=i===LayoutVariant.STACKED;return _jsx(Row,{layout:i,children:_jsxs(SamplesMiddlePanel,{fullWidth:!0,className:"api-info",isStacked:p,children:[_jsxs(ApiHeader,{children:[n.title," ",d]}),_jsx(RenderHook,{Hook:AfterOpenApiTitle||(null==t?void 0:t.AfterApiTitle),props:{info:n}}),l&&_jsx(Markdown,{source:l,"data-role":"redoc-summary"}),s&&_jsx(Markdown,{source:s,"data-role":"redoc-description"}),_jsx(RenderHook,{Hook:AfterOpenApiDescription||(null==t?void 0:t.AfterOpenApiDescription),props:{info:n}}),m&&_jsx(ExternalDocumentation,{externalDocs:m}),!r&&_jsx(Metadata,{metadata:n["x-metadata"],translate:o})]})})}
2
2
  //# sourceMappingURL=ApiInfo.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo}from"react";import{Markdown as MarkdownWrapper,H3,isNotNull}from"@redocly/theme";const FILTER_OUT_KEYS=["title","description"];function metadataMap([e,t]){return FILTER_OUT_KEYS.includes(e)?null:Array.isArray(t)?{key:e,value:t.filter((e=>"object"!=typeof e)).join(", ")}:"object"==typeof t?null:{key:e,value:t}}export function Metadata({metadata:e,translate:t}){const a=useMemo((()=>Object.entries(e||{}).map(metadataMap).filter(isNotNull)),[e]);return e?_jsxs(MarkdownWrapper,{children:[_jsx(H3,{children:t("openapi.info.metadata.title","Metadata")}),_jsxs("table",{className:"md",children:[_jsx("thead",{children:_jsxs("tr",{children:[_jsx("th",{scope:"col",children:t("openapi.key","Key")}),_jsx("th",{scope:"col",children:t("openapi.value","Value")})]})}),_jsx("tbody",{children:a.map((({key:e,value:t})=>_jsxs("tr",{children:[_jsx("td",{children:e}),_jsx("td",{children:`${t}`})]},e)))})]})]}):null}
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useMemo}from"react";import{Markdown as MarkdownWrapper,H3,isNotNull}from"@redocly/theme";import{isAbsoluteUrl}from"../../utils/helpers";const FILTER_OUT_KEYS=["title","description"];function metadataMap([e,t]){return FILTER_OUT_KEYS.includes(e)?null:Array.isArray(t)?{key:e,value:t.filter((e=>"object"!=typeof e)).join(", ")}:"object"==typeof t?null:{key:e,value:t}}export function Metadata({metadata:e,translate:t}){const r=useMemo((()=>Object.entries(e||{}).map(metadataMap).filter(isNotNull)),[e]);return e?_jsxs(MarkdownWrapper,{children:[_jsx(H3,{children:t("openapi.info.metadata.title","Metadata")}),_jsxs("table",{className:"md",children:[_jsx("thead",{children:_jsxs("tr",{children:[_jsx("th",{scope:"col",children:t("openapi.key","Key")}),_jsx("th",{scope:"col",children:t("openapi.value","Value")})]})}),_jsx("tbody",{children:r.map((({key:e,value:t})=>_jsxs("tr",{children:[_jsx("td",{children:e}),_jsx("td",{children:"string"==typeof t&&isAbsoluteUrl(t)?_jsx("a",{href:t,target:"_blank",rel:"noreferrer",children:t}):String(t)})]},e)))})]})]}):null}
2
2
  //# sourceMappingURL=Metadata.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{CopyButton,NewTabButton,EmailButton}from"@redocly/theme";import{PanelItem,PanelItemDescription,PanelItemsList}from"../PanelItem";export function Overview({info:e,translate:t}){const n=e.contact&&e.contact.url&&_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:t("openapi.info.contact.url","URL")}),title:_jsx("a",{href:e.contact.url,target:"_blank",rel:"noreferrer",children:e.contact.url}),actions:[_jsx(NewTabButton,{data:e.contact.url},"NewTabButton")]})||null,a=e.contact&&e.contact.email&&_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:e.contact.name||t("openapi.info.contact.name","E-mail")}),title:_jsx("a",{href:"mailto:"+e.contact.email,children:e.contact.email}),actions:[_jsx(CopyButton,{data:e.contact.email},"CopyButton"),_jsx(EmailButton,{data:e.contact.email},"EmailButton")]})||null,r=e.license&&_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:t("openapi.info.license","License")}),title:e.license.identifier?e.license.identifier:_jsx("a",{href:e.license.url,target:"_blank",rel:"noreferrer",children:e.license.name}),actions:[_jsx(NewTabButton,{data:e.license.url||""},"NewTabButton")]})||null,i=e.termsOfService&&_jsx(PanelItem,{title:_jsx("a",{href:e.termsOfService,target:"_blank",rel:"noreferrer",children:t("openapi.info.termsOfService","Terms of Service")}),actions:[_jsx(NewTabButton,{data:e.termsOfService},e.termsOfService)]})||null;return _jsx(_Fragment,{children:_jsxs(PanelItemsList,{children:[n,a,r,i]})})}
1
+ import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{CopyButton,NewTabButton,EmailButton}from"@redocly/theme";import{PanelItem,PanelItemDescription,PanelItemsList}from"../PanelItem";export function Overview({info:e,translate:t}){var n;const a=e.contact&&e.contact.url&&_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:t("openapi.info.contact.url","URL")}),title:_jsx("a",{href:e.contact.url,target:"_blank",rel:"noreferrer",children:e.contact.url}),actions:[_jsx(NewTabButton,{data:e.contact.url},"NewTabButton")]})||null,r=e.contact&&e.contact.email&&_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:e.contact.name||t("openapi.info.contact.name","E-mail")}),title:_jsx("a",{href:"mailto:"+e.contact.email,children:e.contact.email}),actions:[_jsx(CopyButton,{data:e.contact.email},"CopyButton"),_jsx(EmailButton,{data:e.contact.email},"EmailButton")]})||null,i=e.license&&_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:t("openapi.info.license","License")}),title:e.license.identifier?e.license.identifier:_jsx("a",{href:e.license.url,target:"_blank",rel:"noreferrer",children:e.license.name}),actions:[_jsx(NewTabButton,{data:e.license.url||""},"NewTabButton")]})||null,l=e.termsOfService&&_jsx(PanelItem,{title:_jsx("a",{href:e.termsOfService,target:"_blank",rel:"noreferrer",children:t("openapi.info.termsOfService","Terms of Service")}),actions:[_jsx(NewTabButton,{data:e.termsOfService},e.termsOfService)]})||null,o=(null===(n=e["x-links"])||void 0===n?void 0:n.map((e=>_jsx(PanelItem,{header:_jsx(PanelItemDescription,{children:e.name}),title:_jsx("a",{href:e.url,target:"_blank",rel:"noreferrer",children:e.url}),actions:[_jsx(NewTabButton,{data:e.url},"NewTabButton")]},e.url))))||null;return _jsx(_Fragment,{children:_jsxs(PanelItemsList,{children:[a,r,i,l,o]})})}
2
2
  //# sourceMappingURL=Overview.js.map
@@ -1,4 +1,4 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{memo,useCallback}from"react";import{breakpoints,Button,H2,LayoutVariant,LinkIcon}from"@redocly/theme";import{useNavigate}from"react-router-dom";import styled from"styled-components";import{useAtomValue}from"jotai";import{Row,SamplesMiddlePanel,ShareLink}from"../common";import{Markdown}from"../Markdown";import{OperationsNavigation}from"./OperationsNavigation";import{layoutAtom}from"../../jotai/app";import{useTranslate}from"../../hooks";export function TagItemComponent({item:a,routingBasePath:t="",isExpanded:o}){const e=useTranslate(),{description:i,name:n,href:r}=a,s=useNavigate(),m=useAtomValue(layoutAtom),d=useCallback((()=>{s(t+a.href)}),[a.href,s,t]),l=Boolean(a.items.length),p=m===LayoutVariant.STACKED;return _jsxs(Wrapper,{expanded:o,children:[_jsxs(Row,{layout:m,children:[_jsxs(SamplesMiddlePanel,{fullWidth:!l,isStacked:p,children:[_jsxs(Heading,{children:[_jsx(ShareLink,{to:r,"aria-label":`link to ${n}`}),n]}),_jsx(Markdown,{source:i})]}),l&&_jsx(OperationsNavigation,{items:a.items,routingBasePath:t})]}),l&&!o&&_jsxs(ShowButton,{type:"button",variant:"text",size:"medium",onClick:d,children:["+ ",e("openapi.actions.show","Show")]})]})}export const TagItem=memo(TagItemComponent);const Wrapper=styled.div`
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{memo,useCallback}from"react";import{breakpoints,Button,H2,LayoutVariant,LinkIcon}from"@redocly/theme";import{useNavigate}from"react-router-dom";import styled from"styled-components";import{useAtomValue}from"jotai";import{Row,SamplesMiddlePanel,ShareLink}from"../common";import{Markdown}from"../Markdown";import{OperationsNavigation}from"./OperationsNavigation";import{layoutAtom}from"../../jotai/app";import{useTranslate}from"../../hooks";export function TagItemComponent({item:a,routingBasePath:t="",isExpanded:o}){const e=useTranslate(),{description:i,name:r,href:n}=a,s=useNavigate(),m=useAtomValue(layoutAtom),d=useCallback((()=>{s(t+a.href)}),[a.href,s,t]),l=Boolean(a.items.length),p=m===LayoutVariant.STACKED;return _jsxs(Wrapper,{expanded:o,children:[_jsxs(Row,{layout:m,children:[_jsxs(SamplesMiddlePanel,{fullWidth:!l,isStacked:p,children:[_jsxs(Heading,{children:[_jsx(ShareLink,{to:n,"aria-label":`link to ${r}`}),r]}),_jsx(Markdown,{source:i})]}),l&&_jsx(OperationsNavigation,{items:a.items,routingBasePath:t})]}),l&&!o&&_jsxs(ShowButton,{type:"button",variant:"text",size:"medium",onClick:d,children:["+ ",e("openapi.actions.show","Show")]})]})}export const TagItem=memo(TagItemComponent);const Wrapper=styled.div`
2
2
  padding-top: var(--spacing-lg);
3
3
  padding-bottom: ${({expanded:a})=>a?"var(--spacing-xxl)":""};
4
4
  `,ShowButton=styled(Button)`
@@ -19,5 +19,6 @@ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{memo,useCallback
19
19
  visibility: visible;
20
20
  }
21
21
  }
22
+ overflow-wrap: break-word;
22
23
  `;
23
24
  //# sourceMappingURL=TagItem.js.map
@@ -91,6 +91,9 @@ export interface HooksConfig {
91
91
  AfterApiTitle?: HookConfig<{
92
92
  info: OpenAPIInfo;
93
93
  }>;
94
+ AfterOpenApiDescription?: HookConfig<{
95
+ info: OpenAPIInfo;
96
+ }>;
94
97
  BeforeOperation?: HookConfig<{
95
98
  operation: OperationModel;
96
99
  }>;
@@ -1,2 +1,2 @@
1
- import slugify from"slugify";export function strikethroughText(e){return e.split("").map((e=>e+"̵")).join("")}export function escapeFormId(e){return e.replace(/[.[\]]/g,(e=>({".":"%2e","[":"%5b","]":"%5d"}[e]||"")))}export function unescapeFormId(e){return e.replace(/%2e|%5b|%5d/g,(e=>({"%2e":".","%5b":"[","%5d":"]"}[e]||"")))}export function encodeBackSlashes(e){return e.replace(/\\/g,"%5C")}export function removePercentChart(e){return e.replace(/%/g,"")}export function tryDecodeURIComponent(e){try{return decodeURIComponent(e)}catch(r){return console.error(`Decoding failed: ${e}`,r),e}}export function safeSlugify(e){return slugify(e)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}export function safeJsonParse(e,r={}){try{return JSON.parse(e)}catch(e){return r}}
1
+ import slugify from"slugify";export function strikethroughText(e){return e.split("").map((e=>e+"̵")).join("")}export function escapeFormId(e){return e.replace(/[.[\]]/g,(e=>({".":"%2e","[":"%5b","]":"%5d"}[e]||"")))}export function unescapeFormId(e){return e.replace(/%2e|%5b|%5d/g,(e=>({"%2e":".","%5b":"[","%5d":"]"}[e]||"")))}export function encodeBackSlashes(e){return e.replace(/\\/g,"%5C")}export function removePercentChart(e){return e.replace(/%/g,"")}export function tryDecodeURIComponent(e){try{return decodeURIComponent(e)}catch(r){return console.error(`Decoding failed: ${e}`,r),e}}export function safeSlugify(e){return slugify(e).slice(0,240)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"").slice(0,240)}export function safeJsonParse(e,r={}){try{return JSON.parse(e)}catch(e){return r}}
2
2
  //# sourceMappingURL=string.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.7.0-next.6",
3
+ "version": "3.7.0-rc.2",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -16,7 +16,7 @@
16
16
  "openapi-docs": "bin.js"
17
17
  },
18
18
  "peerDependencies": {
19
- "@redocly/theme": ">=0.51.0-next.0",
19
+ "@redocly/theme": ">=0.51.0-rc.1",
20
20
  "core-js": "^3.1.4",
21
21
  "react": "^18.0.0",
22
22
  "react-dom": "^18.0.0",
@@ -44,8 +44,8 @@
44
44
  "url-template": "^2.0.8",
45
45
  "util": "~0.12.5",
46
46
  "web-vitals": "3.3.1",
47
- "@redocly/config": "0.22.0",
48
- "@redocly/replay": "0.10.0-next.4"
47
+ "@redocly/replay": "0.10.0-next.4",
48
+ "@redocly/config": "0.22.0-rc.1"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@shikijs/transformers": "1.24.0",
@@ -96,7 +96,7 @@
96
96
  "webpack": "5.94.0",
97
97
  "webpack-cli": "5.1.4",
98
98
  "webpack-dev-server": "5.1.0",
99
- "@redocly/theme": "0.51.0-next.4"
99
+ "@redocly/theme": "0.51.0-rc.1"
100
100
  },
101
101
  "scripts": {
102
102
  "start": "npm run copy-highlight-hook && webpack serve --mode=development --hot",