@redocly/openapi-docs 3.4.7 → 3.4.8

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 (38) hide show
  1. package/dist/redocly-openapi-docs.min.js +373 -373
  2. package/lib/components/ExpandAllButton/ExpandAllButton.d.ts +1 -1
  3. package/lib/components/ExpandAllButton/ExpandAllButton.js +1 -1
  4. package/lib/components/ExpandAllButton/index.d.ts +0 -1
  5. package/lib/components/ExpandAllButton/index.js +1 -1
  6. package/lib/components/Request/RequestDetails.js +1 -1
  7. package/lib/components/Responses/OperationResponseList.js +1 -1
  8. package/lib/components/Responses/ResponseDetails.js +1 -1
  9. package/lib/components/Responses/types.d.ts +0 -1
  10. package/lib/components/Schema/OneOfSchema.js +1 -1
  11. package/lib/components/Schema/SubSchema.js +1 -1
  12. package/lib/components/ViewNested/ViewNested.d.ts +1 -2
  13. package/lib/components/ViewNested/ViewNested.js +1 -1
  14. package/lib/jotai/operation.d.ts +4 -8
  15. package/lib/jotai/operation.js +1 -1
  16. package/lib-esm/components/ExpandAllButton/ExpandAllButton.d.ts +1 -1
  17. package/lib-esm/components/ExpandAllButton/ExpandAllButton.js +1 -1
  18. package/lib-esm/components/ExpandAllButton/index.d.ts +0 -1
  19. package/lib-esm/components/ExpandAllButton/index.js +1 -1
  20. package/lib-esm/components/Request/RequestDetails.js +1 -1
  21. package/lib-esm/components/Responses/OperationResponseList.js +1 -1
  22. package/lib-esm/components/Responses/ResponseDetails.js +1 -1
  23. package/lib-esm/components/Responses/types.d.ts +0 -1
  24. package/lib-esm/components/Schema/OneOfSchema.js +1 -1
  25. package/lib-esm/components/Schema/SubSchema.js +1 -1
  26. package/lib-esm/components/ViewNested/ViewNested.d.ts +1 -2
  27. package/lib-esm/components/ViewNested/ViewNested.js +1 -1
  28. package/lib-esm/jotai/operation.d.ts +4 -8
  29. package/lib-esm/jotai/operation.js +1 -1
  30. package/package.json +1 -1
  31. package/lib/components/ExpandAllButton/getAllNestedSchema.d.ts +0 -8
  32. package/lib/components/ExpandAllButton/getAllNestedSchema.js +0 -2
  33. package/lib/components/ExpandAllButton/useUpdateExpandedFields.d.ts +0 -2
  34. package/lib/components/ExpandAllButton/useUpdateExpandedFields.js +0 -2
  35. package/lib-esm/components/ExpandAllButton/getAllNestedSchema.d.ts +0 -8
  36. package/lib-esm/components/ExpandAllButton/getAllNestedSchema.js +0 -2
  37. package/lib-esm/components/ExpandAllButton/useUpdateExpandedFields.d.ts +0 -2
  38. package/lib-esm/components/ExpandAllButton/useUpdateExpandedFields.js +0 -2
@@ -2,5 +2,5 @@ interface ExpandAllButtonProps {
2
2
  operationPointer: string;
3
3
  type: 'request' | 'response';
4
4
  }
5
- export declare const ExpandAllButton: ({ operationPointer, type }: ExpandAllButtonProps) => import("react/jsx-runtime").JSX.Element | null;
5
+ export declare const ExpandAllButton: ({ operationPointer, type }: ExpandAllButtonProps) => import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -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.ExpandAllButton=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),styled_components_1=__importDefault(require("styled-components")),theme_1=require("@redocly/theme"),index_1=require("jotai/index"),operation_1=require("../../jotai/operation"),hooks_1=require("../../hooks"),ExpandAllButton=({operationPointer:e,type:t})=>{const n=(0,hooks_1.useTranslate)(),[o,i]=(0,index_1.useAtom)((0,operation_1.operationStore)(e)),r=(0,react_1.useMemo)((()=>Object.values(o[t].expandedFields).includes(!1)),[o,t]);if(!Object.keys(o[t].expandedFields).length)return null;return(0,jsx_runtime_1.jsx)(StyledButton,{icon:(0,jsx_runtime_1.jsx)(theme_1.MaximizeIcon,{}),iconPosition:"right",size:"small",variant:"ghost",onClick:()=>{i((e=>{const n={};for(const o in e[t].expandedFields)n[o]=r;return Object.assign(Object.assign({},e),{[t]:{expandedFields:n}})}))},children:r?n("openapi.expandAll","Expand all"):n("openapi.collapseAll","Collapse all")})};exports.ExpandAllButton=ExpandAllButton;const StyledButton=(0,styled_components_1.default)(theme_1.Button)`
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ExpandAllButton=void 0;const jsx_runtime_1=require("react/jsx-runtime"),styled_components_1=__importDefault(require("styled-components")),theme_1=require("@redocly/theme"),index_1=require("jotai/index"),operation_1=require("../../jotai/operation"),hooks_1=require("../../hooks"),ExpandAllButton=({operationPointer:e,type:t})=>{const o=(0,hooks_1.useTranslate)(),[n,i]=(0,index_1.useAtom)((0,operation_1.operationStore)(e));return(0,jsx_runtime_1.jsx)(StyledButton,{icon:(0,jsx_runtime_1.jsx)(theme_1.MaximizeIcon,{}),iconPosition:"right",size:"small",variant:"ghost",onClick:()=>{i((e=>{const o=!e[t].expandedAll;return Object.assign(Object.assign({},e),{[t]:{expandedAll:o}})}))},children:n[t].expandedAll?o("openapi.collapseAll","Collapse all"):o("openapi.expandAll","Expand all")})};exports.ExpandAllButton=ExpandAllButton;const StyledButton=(0,styled_components_1.default)(theme_1.Button)`
2
2
  margin-left: auto;
3
3
  `;
4
4
  //# sourceMappingURL=ExpandAllButton.js.map
@@ -1,2 +1 @@
1
1
  export { ExpandAllButton } from './ExpandAllButton';
2
- export { useUpdateExpandedFields } from './useUpdateExpandedFields';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useUpdateExpandedFields=exports.ExpandAllButton=void 0;var ExpandAllButton_1=require("./ExpandAllButton");Object.defineProperty(exports,"ExpandAllButton",{enumerable:!0,get:function(){return ExpandAllButton_1.ExpandAllButton}});var useUpdateExpandedFields_1=require("./useUpdateExpandedFields");Object.defineProperty(exports,"useUpdateExpandedFields",{enumerable:!0,get:function(){return useUpdateExpandedFields_1.useUpdateExpandedFields}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ExpandAllButton=void 0;var ExpandAllButton_1=require("./ExpandAllButton");Object.defineProperty(exports,"ExpandAllButton",{enumerable:!0,get:function(){return ExpandAllButton_1.ExpandAllButton}});
2
2
  //# sourceMappingURL=index.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.RequestDetails=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),styled_components_1=__importDefault(require("styled-components")),common_1=require("../common"),OperationItemTitle_1=require("../common/OperationItemTitle"),LinkToField_1=require("../common/LinkToField"),services_1=require("../../services"),Description_1=require("../OperationItem/Description"),Security_1=require("../Security"),ExpandAllButton_1=require("../ExpandAllButton"),RequestParameters_1=require("../RequestParameters");function RequestDetailsComponent({operation:{id:e,description:t,externalDocs:r,parameters:i,requestBody:s,pointer:n,security:o,extensions:u,callbackId:a},title:_,translate:l}){return(0,ExpandAllButton_1.useUpdateExpandedFields)("request",i,null==s?void 0:s.content,n),(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsx)(common_1.Row,{children:(0,jsx_runtime_1.jsxs)(HeadingWrapper,{children:[(0,jsx_runtime_1.jsxs)(OperationItemTitle_1.Title,{children:[e&&(0,jsx_runtime_1.jsx)(LinkToField_1.LinkToField,{to:(0,services_1.makeDeepLink)(e,"request")}),_||(null==l?void 0:l("openapi.request","Request")),(0,jsx_runtime_1.jsx)(ExpandAllButton_1.ExpandAllButton,{operationPointer:n,type:"request"})]}),(0,jsx_runtime_1.jsx)(Description_1.Description,{description:t||r?t:void 0,externalDocs:r,extensions:u}),(0,jsx_runtime_1.jsx)(Security_1.Security,{securities:o})]})}),(0,jsx_runtime_1.jsx)(RequestParameters_1.RequestParameters,{parameters:i,body:s,operationId:e,callbackId:a})]})}const HeadingWrapper=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.RequestDetails=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),styled_components_1=__importDefault(require("styled-components")),common_1=require("../common"),OperationItemTitle_1=require("../common/OperationItemTitle"),LinkToField_1=require("../common/LinkToField"),services_1=require("../../services"),Description_1=require("../OperationItem/Description"),Security_1=require("../Security"),ExpandAllButton_1=require("../ExpandAllButton"),RequestParameters_1=require("../RequestParameters"),app_1=require("../../jotai/app"),mediaContent_1=require("../../models/mediaContent");function RequestDetailsComponent({operation:{id:e,description:t,externalDocs:i,parameters:r,requestBody:s,pointer:n,security:o,extensions:a,callbackId:u},title:_,translate:m}){const l=(0,jotai_1.useAtomValue)(app_1.activeMimeNameAtom),c=(0,react_1.useMemo)((()=>{var e;const t=r.some((({schema:e})=>!e.isPrimitive&&!e.isCircular));if(!(null==s?void 0:s.content)||t)return t;const{schema:i}=(0,mediaContent_1.getActiveMediaType)(s.content,l)||{};return null===(e=null==i?void 0:i.fields)||void 0===e?void 0:e.some((({schema:e})=>!e.isPrimitive&&!e.isCircular))}),[l,r,null==s?void 0:s.content]);return(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsx)(common_1.Row,{children:(0,jsx_runtime_1.jsxs)(HeadingWrapper,{children:[(0,jsx_runtime_1.jsxs)(OperationItemTitle_1.Title,{children:[e&&(0,jsx_runtime_1.jsx)(LinkToField_1.LinkToField,{to:(0,services_1.makeDeepLink)(e,"request")}),_||(null==m?void 0:m("openapi.request","Request")),c&&(0,jsx_runtime_1.jsx)(ExpandAllButton_1.ExpandAllButton,{operationPointer:n,type:"request"})]}),(0,jsx_runtime_1.jsx)(Description_1.Description,{description:t||i?t:void 0,externalDocs:i,extensions:a}),(0,jsx_runtime_1.jsx)(Security_1.Security,{securities:o})]})}),(0,jsx_runtime_1.jsx)(RequestParameters_1.RequestParameters,{parameters:r,body:s,operationId:e,callbackId:u})]})}const HeadingWrapper=styled_components_1.default.div`
2
2
  width: 100%;
3
3
  `;exports.RequestDetails=(0,react_1.memo)(RequestDetailsComponent);
4
4
  //# sourceMappingURL=RequestDetails.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.OperationResponseList=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),Tabs_1=require("../Tabs"),ResponseDetails_1=require("./ResponseDetails"),services_1=require("../../services"),styled_1=require("./styled"),LinkToField_1=require("../common/LinkToField"),utils_1=require("../../utils"),ExpandAllButton_1=require("../ExpandAllButton"),hooks_1=require("../../hooks");exports.OperationResponseList=(0,react_1.memo)((({responses:e,renderTitle:s,operationId:t,operationPointer:r,activeResponseTab:n,onTabChange:i,callbackId:o})=>{const a=(0,react_router_dom_1.useLocation)(),l=(0,hooks_1.useTranslate)(),_=e.map((({code:e})=>({key:e,title:e}))),u=_.find((({key:e})=>e===n||(0,utils_1.pathIncludesLink)(a,t)&&(0,utils_1.pathIncludesLink)(a,`c=${e}`))),{activeTab:p,handleTabChange:d}=(0,Tabs_1.useTabsState)({tabs:_,defaultTab:null==u?void 0:u.key,onChange:i}),c=_.find((e=>e.key===(n||p)));return c?(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsxs)(TitleWrap,{children:[(null==s?void 0:s(c))||(0,jsx_runtime_1.jsxs)(styled_1.StyledTitle,{children:[(0,jsx_runtime_1.jsx)(LinkToField_1.LinkToField,{to:(0,services_1.makeDeepLink)(t,`response&c=${c.key}`)}),l("openapi.responses","Responses")]}),(0,jsx_runtime_1.jsx)(Tabs_1.Tabs,{tabs:_,activeTab:c,onChange:d}),(0,jsx_runtime_1.jsx)(ExpandAllButton_1.ExpandAllButton,{type:"response",operationPointer:r})]}),e.map((e=>e.code===c.key?(0,jsx_runtime_1.jsx)("div",{children:(0,jsx_runtime_1.jsx)(ResponseDetails_1.ResponseDetails,{response:e,operationId:t,operationPointer:r,callbackId:o})},e.code):null))]}):null}));const TitleWrap=(0,styled_components_1.default)(styled_1.Row)`
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OperationResponseList=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),Tabs_1=require("../Tabs"),ResponseDetails_1=require("./ResponseDetails"),services_1=require("../../services"),styled_1=require("./styled"),LinkToField_1=require("../common/LinkToField"),utils_1=require("../../utils"),ExpandAllButton_1=require("../ExpandAllButton"),hooks_1=require("../../hooks"),models_1=require("../../models"),app_1=require("../../jotai/app");exports.OperationResponseList=(0,react_1.memo)((({responses:e,renderTitle:t,operationId:s,operationPointer:i,activeResponseTab:r,onTabChange:n,callbackId:o})=>{const a=(0,react_router_dom_1.useLocation)(),l=(0,hooks_1.useTranslate)(),[u]=(0,jotai_1.useAtomValue)(app_1.activeMimeNameAtom),_=e.map((({code:e})=>({key:e,title:e}))),d=_.find((({key:e})=>e===r||(0,utils_1.pathIncludesLink)(a,s)&&(0,utils_1.pathIncludesLink)(a,`c=${e}`))),{activeTab:p,handleTabChange:c}=(0,Tabs_1.useTabsState)({tabs:_,defaultTab:null==d?void 0:d.key,onChange:n}),m=_.find((e=>e.key===(r||p))),x=e.find((e=>e.code===(null==m?void 0:m.key))),j=(0,react_1.useMemo)((()=>{var e;if(!(null==x?void 0:x.content))return!1;const{schema:t}=(0,models_1.getActiveMediaType)(null==x?void 0:x.content,u)||{};return null===(e=null==t?void 0:t.fields)||void 0===e?void 0:e.some((({schema:e})=>!e.isPrimitive&&!e.isCircular))}),[u,null==x?void 0:x.content]);return m?(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsxs)(TitleWrap,{children:[(null==t?void 0:t(m))||(0,jsx_runtime_1.jsxs)(styled_1.StyledTitle,{children:[(0,jsx_runtime_1.jsx)(LinkToField_1.LinkToField,{to:(0,services_1.makeDeepLink)(s,`response&c=${m.key}`)}),l("openapi.responses","Responses")]}),(0,jsx_runtime_1.jsx)(Tabs_1.Tabs,{tabs:_,activeTab:m,onChange:c}),j&&(0,jsx_runtime_1.jsx)(ExpandAllButton_1.ExpandAllButton,{type:"response",operationPointer:i})]}),x?(0,jsx_runtime_1.jsx)("div",{children:(0,jsx_runtime_1.jsx)(ResponseDetails_1.ResponseDetails,{response:x,operationId:s,callbackId:o})},x.code):null]}):null}));const TitleWrap=(0,styled_components_1.default)(styled_1.Row)`
2
2
  flex-wrap: wrap;
3
3
  gap: var(--spacing-unit);
4
4
  `;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ResponseDetails=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),ResponseHeaders_1=require("./ResponseHeaders"),styled_1=require("./styled"),BodyContent_1=require("../common/BodyContent"),services_1=require("../../services"),ExpandAllButton_1=require("../ExpandAllButton");function ResponseDetailsComponent({response:e,operationId:s,operationPointer:n,callbackId:r,disableDeepLinks:t}){const{description:o,headers:i,content:d,summary:a,code:p}=e;return(0,ExpandAllButton_1.useUpdateExpandedFields)("response",i,d,n),(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsx)(styled_1.StyledDescription,{className:"redoc-markdown",source:a}),(0,jsx_runtime_1.jsx)(styled_1.StyledDescription,{className:"redoc-markdown",source:o}),(0,jsx_runtime_1.jsx)(ResponseHeaders_1.ResponseHeaders,{headers:i,deepLink:t?void 0:generateDeepLink(s,r,p,"headers")}),(0,jsx_runtime_1.jsx)(BodyContent_1.BodyContent,{content:d,skipWriteOnly:!0,deepLink:t?void 0:generateDeepLink(s,r,p,"body")})]})}function generateDeepLink(e,s="",n,r){const t=s?`${s}/response&c=${n}/${r}`:`response&c=${n}/${r}`;return(0,services_1.makeDeepLink)(e,t)}exports.ResponseDetails=(0,react_1.memo)(ResponseDetailsComponent);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ResponseDetails=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),ResponseHeaders_1=require("./ResponseHeaders"),styled_1=require("./styled"),BodyContent_1=require("../common/BodyContent"),services_1=require("../../services");function ResponseDetailsComponent({response:e,operationId:s,callbackId:n,disableDeepLinks:r}){const{description:t,headers:o,content:i,summary:d,code:a}=e;return(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[(0,jsx_runtime_1.jsx)(styled_1.StyledDescription,{className:"redoc-markdown",source:d}),(0,jsx_runtime_1.jsx)(styled_1.StyledDescription,{className:"redoc-markdown",source:t}),(0,jsx_runtime_1.jsx)(ResponseHeaders_1.ResponseHeaders,{headers:o,deepLink:r?void 0:generateDeepLink(s,n,a,"headers")}),(0,jsx_runtime_1.jsx)(BodyContent_1.BodyContent,{content:i,skipWriteOnly:!0,deepLink:r?void 0:generateDeepLink(s,n,a,"body")})]})}function generateDeepLink(e,s="",n,r){const t=s?`${s}/response&c=${n}/${r}`:`response&c=${n}/${r}`;return(0,services_1.makeDeepLink)(e,t)}exports.ResponseDetails=(0,react_1.memo)(ResponseDetailsComponent);
2
2
  //# sourceMappingURL=ResponseDetails.js.map
@@ -4,7 +4,6 @@ export interface ResponseProps {
4
4
  shouldBeExpandedByDefault?: boolean;
5
5
  onToggle?: (code: string) => void;
6
6
  operationId: string;
7
- operationPointer: string;
8
7
  callbackId?: string;
9
8
  disableDeepLinks?: boolean;
10
9
  }
@@ -1,4 +1,4 @@
1
- "use strict";var __rest=this&&this.__rest||function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]])}return o},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OneOfSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),styled_components_1=__importDefault(require("styled-components")),common_1=require("../common"),Markdown_1=require("../Markdown"),ConstraintsView_1=require("../common/ConstraintsView"),Schema_1=require("./Schema"),operation_1=require("../../jotai/operation"),SchemaSelection_1=require("../common/SchemaSelection"),useOneOfLocationIdx_1=require("./useOneOfLocationIdx"),hooks_1=require("../../hooks");function OneOfSchemaComponent(e){var{schema:{oneOf:t},schema:o,oneOfLevel:n=1}=e,r=__rest(e,["schema","schema","oneOfLevel"]);const i=(0,hooks_1.useTranslate)(),[s]=(0,jotai_1.useAtom)((0,operation_1.operationStore)(o.operationPointer)),a=(0,useOneOfLocationIdx_1.useOneOfLocationIdx)(t,n),c=-1===a?0:a,_=t[void 0!==s.activeOneOf[o.pointer]?s.activeOneOf[o.pointer]:c];if(!_)return null;const m=t.map(((e,t)=>({label:e.title||e.typePrefix+e.displayType,value:t})));return(0,jsx_runtime_1.jsxs)(Wrapper,{children:[(0,jsx_runtime_1.jsxs)(common_1.SelectionTitle,{children:[o.oneOfType,":"]}),(0,jsx_runtime_1.jsx)(SchemaSelection_1.SchemaSelection,{options:m,pointer:o.operationPointer,schema:o,defaultOneOfIdx:c}),_.deprecated&&(0,jsx_runtime_1.jsx)(common_1.StyledBadge,{deprecated:!0,children:i("openapi.badges.deprecated","Deprecated")}),_.description&&(0,jsx_runtime_1.jsx)(StyledDescription,{source:_.description}),(0,jsx_runtime_1.jsx)(ConstraintsView_1.ConstraintsView,{constraints:_.constraints}),(0,jsx_runtime_1.jsx)(Schema_1.Schema,Object.assign({},r,{schema:_,oneOfLevel:n+1}))]})}exports.OneOfSchema=(0,react_1.memo)(OneOfSchemaComponent);const StyledDescription=(0,styled_components_1.default)(Markdown_1.Markdown)`
1
+ "use strict";var __rest=this&&this.__rest||function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]])}return o},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.OneOfSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),styled_components_1=__importDefault(require("styled-components")),common_1=require("../common"),Markdown_1=require("../Markdown"),ConstraintsView_1=require("../common/ConstraintsView"),Schema_1=require("./Schema"),operation_1=require("../../jotai/operation"),SchemaSelection_1=require("../common/SchemaSelection"),useOneOfLocationIdx_1=require("./useOneOfLocationIdx"),hooks_1=require("../../hooks");function OneOfSchemaComponent(e){var t,{schema:{oneOf:o},schema:n,oneOfLevel:r=1}=e,i=__rest(e,["schema","schema","oneOfLevel"]);const s=(0,hooks_1.useTranslate)(),a=(0,jotai_1.useAtomValue)((0,operation_1.operationStore)(n.operationPointer)),c=(0,useOneOfLocationIdx_1.useOneOfLocationIdx)(o,r),_=-1===c?0:c,l=o[void 0!==(null===(t=a.activeOneOf)||void 0===t?void 0:t[n.pointer])?a.activeOneOf[n.pointer]:_];if(!l)return null;const m=o.map(((e,t)=>({label:e.title||e.typePrefix+e.displayType,value:t})));return(0,jsx_runtime_1.jsxs)(Wrapper,{children:[(0,jsx_runtime_1.jsxs)(common_1.SelectionTitle,{children:[n.oneOfType,":"]}),(0,jsx_runtime_1.jsx)(SchemaSelection_1.SchemaSelection,{options:m,pointer:n.operationPointer,schema:n,defaultOneOfIdx:_}),l.deprecated&&(0,jsx_runtime_1.jsx)(common_1.StyledBadge,{deprecated:!0,children:s("openapi.badges.deprecated","Deprecated")}),l.description&&(0,jsx_runtime_1.jsx)(StyledDescription,{source:l.description}),(0,jsx_runtime_1.jsx)(ConstraintsView_1.ConstraintsView,{constraints:l.constraints}),(0,jsx_runtime_1.jsx)(Schema_1.Schema,Object.assign({},i,{schema:l,oneOfLevel:r+1}))]})}exports.OneOfSchema=(0,react_1.memo)(OneOfSchemaComponent);const StyledDescription=(0,styled_components_1.default)(Markdown_1.Markdown)`
2
2
  margin-top: var(--spacing-xs);
3
3
  font-size: var(--font-size-base);
4
4
  line-height: var(--line-height-base);
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SubSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),index_1=require("jotai/index"),theme_1=require("@redocly/theme"),utils_1=require("../../utils"),operation_1=require("../../jotai/operation"),helpers_1=require("./helpers"),ViewNested_1=require("../ViewNested"),hooks_1=require("../../hooks");function SubSchemaComponent({expandByDefault:e,deepLink:r,level:t,expandable:o=!1,isArray:i="",propertyLength:n="",children:a,operationPointer:s}){var u;const d=(0,hooks_1.useTranslate)(),p=(0,react_router_dom_1.useLocation)(),c=(0,utils_1.pathIncludesLink)(p,r),l=(0,helpers_1.extractTypeFromDeepLink)(r),[_,m]=(0,index_1.useAtom)((0,operation_1.operationStore)(s)),x=null===(u=_[l])||void 0===u?void 0:u.expandedFields[r||""],h=e=>{l&&r&&m((t=>{var o;return Object.assign(Object.assign({},t),{[l]:{expandedFields:Object.assign(Object.assign({},(null===(o=t[l])||void 0===o?void 0:o.expandedFields)||{}),{[r]:e})}})}))};(0,theme_1.useMount)((()=>{o&&(e||c)&&h(!0)}));const b=`${d("openapi.actions.show","Show")} ${1===Number(n)?"":n} ${i&&"array "}${1!==n?"properties":"property"}`;return(0,jsx_runtime_1.jsx)(ViewNested_1.ViewNested,{expandByDefault:e||c,isExpandedFromParent:x,level:t,expandable:o,onChange:()=>{h(!x)},expandText:b,children:a})}exports.SubSchema=(0,react_1.memo)(SubSchemaComponent);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SubSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),react_router_dom_1=require("react-router-dom"),index_1=require("jotai/index"),utils_1=require("../../utils"),operation_1=require("../../jotai/operation"),helpers_1=require("./helpers"),ViewNested_1=require("../ViewNested"),hooks_1=require("../../hooks");function SubSchemaComponent({expandByDefault:e,deepLink:r,level:t,expandable:o=!1,isArray:i="",propertyLength:a="",children:n,operationPointer:u}){var s;const p=(0,hooks_1.useTranslate)(),d=(0,react_router_dom_1.useLocation)(),l=(0,utils_1.pathIncludesLink)(d,r),_=(0,helpers_1.extractTypeFromDeepLink)(r),c=(0,index_1.useAtomValue)((0,operation_1.operationStore)(u)),x=`${p("openapi.actions.show","Show")} ${1===Number(a)?"":a} ${i&&"array "}${1!==a?"properties":"property"}`;return(0,jsx_runtime_1.jsx)(ViewNested_1.ViewNested,{expandByDefault:e||l,level:t,expandable:o,expandText:x,children:n,expandedAll:null===(s=c[_])||void 0===s?void 0:s.expandedAll})}exports.SubSchema=(0,react_1.memo)(SubSchemaComponent);
2
2
  //# sourceMappingURL=SubSchema.js.map
@@ -1,13 +1,12 @@
1
1
  import type { PropsWithChildren } from 'react';
2
2
  interface ViewNestedProps {
3
3
  expandByDefault: boolean;
4
- isExpandedFromParent?: boolean;
5
4
  level?: number;
6
5
  expandable?: boolean;
7
6
  expandText?: string;
8
7
  hideText?: string;
9
8
  hideDivider?: boolean;
10
- onChange?: () => void;
9
+ expandedAll?: boolean;
11
10
  }
12
11
  export declare const ViewNested: import("react").NamedExoticComponent<PropsWithChildren<ViewNestedProps>>;
13
12
  export {};
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewNested=void 0;const jsx_runtime_1=require("react/jsx-runtime"),styled_components_1=__importStar(require("styled-components")),react_1=require("react"),theme_1=require("@redocly/theme"),cycleColorsByLevel_1=require("../PropertyDetails/cycleColorsByLevel"),PlusCircleIcon_1=require("../PropertyDetails/PlusCircleIcon");function ViewNestedComponent({expandByDefault:e,isExpandedFromParent:t,level:r,expandable:o=!1,expandText:n,hideText:i,hideDivider:s=!1,onChange:l,children:a}){const[c,d]=(0,react_1.useState)(e);(0,react_1.useEffect)((()=>{o&&!(0,theme_1.isUndefined)(t)&&d(t)}),[t,o]);const _=c?(0,cycleColorsByLevel_1.cycleColorsByLevel)(r):void 0;if(!o)return a;return(0,jsx_runtime_1.jsxs)(Wrapper,{$divider:!s&&!c,className:"view-nested-wrapper",children:[(0,jsx_runtime_1.jsxs)(ShowProperty,{onClick:()=>{d((e=>!e)),l&&l()},children:[(0,jsx_runtime_1.jsx)(PlusCircleIcon_1.CircleIcon,{sign:c?"-":"+",color:_}),!c&&n,c&&(i||"")]}),c&&(0,jsx_runtime_1.jsx)(StyledNested,{color:_,children:a})]})}exports.ViewNested=(0,react_1.memo)(ViewNestedComponent);const ShowProperty=styled_components_1.default.button`
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(t,e,r);return __setModuleDefault(t,e),t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewNested=void 0;const jsx_runtime_1=require("react/jsx-runtime"),styled_components_1=__importStar(require("styled-components")),react_1=require("react"),theme_1=require("@redocly/theme"),cycleColorsByLevel_1=require("../PropertyDetails/cycleColorsByLevel"),PlusCircleIcon_1=require("../PropertyDetails/PlusCircleIcon");function ViewNestedComponent({expandByDefault:e,level:t,expandable:r=!1,expandText:o,hideText:n,hideDivider:i=!1,children:s,expandedAll:l}){const[c,a]=(0,react_1.useState)(null!=e&&e);(0,react_1.useEffect)((()=>{(0,theme_1.isUndefined)(l)||a(l)}),[l]);const d=c?(0,cycleColorsByLevel_1.cycleColorsByLevel)(t):void 0;if(!r)return s;return(0,jsx_runtime_1.jsxs)(Wrapper,{$divider:!i&&!c,className:"view-nested-wrapper",children:[(0,jsx_runtime_1.jsxs)(ShowProperty,{onClick:()=>{a((e=>!e))},children:[(0,jsx_runtime_1.jsx)(PlusCircleIcon_1.CircleIcon,{sign:c?"-":"+",color:d}),!c&&o,c&&(n||"")]}),c&&(0,jsx_runtime_1.jsx)(StyledNested,{color:d,children:s})]})}exports.ViewNested=(0,react_1.memo)(ViewNestedComponent);const ShowProperty=styled_components_1.default.button`
2
2
  background: none;
3
3
  border: none;
4
4
  cursor: pointer;
@@ -8,14 +8,10 @@ export type OperationStore = {
8
8
  [field: string]: any;
9
9
  };
10
10
  request: {
11
- expandedFields: {
12
- [field: string]: boolean;
13
- };
11
+ expandedAll?: boolean;
14
12
  };
15
13
  response: {
16
- expandedFields: {
17
- [field: string]: boolean;
18
- };
14
+ expandedAll?: boolean;
19
15
  };
20
16
  };
21
17
  export declare function getDefaultOperationStore(pointer: string, requestValues?: {
@@ -29,10 +25,10 @@ export declare function getDefaultOperationStore(pointer: string, requestValues?
29
25
  [field: string]: any;
30
26
  };
31
27
  request: {
32
- expandedFields: {};
28
+ expandedAll: undefined;
33
29
  };
34
30
  response: {
35
- expandedFields: {};
31
+ expandedAll: undefined;
36
32
  };
37
33
  };
38
34
  export declare const operationStore: import("jotai/vanilla/utils/atomFamily").AtomFamily<any, import("jotai").PrimitiveAtom<OperationStore> & {
@@ -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.operationStore=void 0,exports.getDefaultOperationStore=getDefaultOperationStore;const jotai_1=require("jotai"),utils_1=require("jotai/utils"),fast_deep_equal_1=__importDefault(require("fast-deep-equal"));function getDefaultOperationStore(e,t={}){return{activeExampleName:void 0,activeOneOf:{[e]:0},requestValues:t,request:{expandedFields:{}},response:{expandedFields:{}}}}exports.operationStore=(0,utils_1.atomFamily)((e=>(0,jotai_1.atom)(getDefaultOperationStore(e))),fast_deep_equal_1.default);
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.operationStore=void 0,exports.getDefaultOperationStore=getDefaultOperationStore;const jotai_1=require("jotai"),utils_1=require("jotai/utils"),fast_deep_equal_1=__importDefault(require("fast-deep-equal"));function getDefaultOperationStore(e,t={}){return{activeExampleName:void 0,activeOneOf:{[e]:0},requestValues:t,request:{expandedAll:void 0},response:{expandedAll:void 0}}}exports.operationStore=(0,utils_1.atomFamily)((e=>(0,jotai_1.atom)(getDefaultOperationStore(e))),fast_deep_equal_1.default);
2
2
  //# sourceMappingURL=operation.js.map
@@ -2,5 +2,5 @@ interface ExpandAllButtonProps {
2
2
  operationPointer: string;
3
3
  type: 'request' | 'response';
4
4
  }
5
- export declare const ExpandAllButton: ({ operationPointer, type }: ExpandAllButtonProps) => import("react/jsx-runtime").JSX.Element | null;
5
+ export declare const ExpandAllButton: ({ operationPointer, type }: ExpandAllButtonProps) => import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -1,4 +1,4 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useMemo}from"react";import styled from"styled-components";import{Button,MaximizeIcon}from"@redocly/theme";import{useAtom}from"jotai/index";import{operationStore}from"../../jotai/operation";import{useTranslate}from"../../hooks";export const ExpandAllButton=({operationPointer:e,type:o})=>{const t=useTranslate(),[n,i]=useAtom(operationStore(e)),s=useMemo((()=>Object.values(n[o].expandedFields).includes(!1)),[n,o]);if(!Object.keys(n[o].expandedFields).length)return null;return _jsx(StyledButton,{icon:_jsx(MaximizeIcon,{}),iconPosition:"right",size:"small",variant:"ghost",onClick:()=>{i((e=>{const t={};for(const n in e[o].expandedFields)t[n]=s;return Object.assign(Object.assign({},e),{[o]:{expandedFields:t}})}))},children:s?t("openapi.expandAll","Expand all"):t("openapi.collapseAll","Collapse all")})};const StyledButton=styled(Button)`
1
+ import{jsx as _jsx}from"react/jsx-runtime";import styled from"styled-components";import{Button,MaximizeIcon}from"@redocly/theme";import{useAtom}from"jotai/index";import{operationStore}from"../../jotai/operation";import{useTranslate}from"../../hooks";export const ExpandAllButton=({operationPointer:o,type:t})=>{const e=useTranslate(),[n,a]=useAtom(operationStore(o));return _jsx(StyledButton,{icon:_jsx(MaximizeIcon,{}),iconPosition:"right",size:"small",variant:"ghost",onClick:()=>{a((o=>{const e=!o[t].expandedAll;return Object.assign(Object.assign({},o),{[t]:{expandedAll:e}})}))},children:n[t].expandedAll?e("openapi.collapseAll","Collapse all"):e("openapi.expandAll","Expand all")})};const StyledButton=styled(Button)`
2
2
  margin-left: auto;
3
3
  `;
4
4
  //# sourceMappingURL=ExpandAllButton.js.map
@@ -1,2 +1 @@
1
1
  export { ExpandAllButton } from './ExpandAllButton';
2
- export { useUpdateExpandedFields } from './useUpdateExpandedFields';
@@ -1,2 +1,2 @@
1
- export{ExpandAllButton}from"./ExpandAllButton";export{useUpdateExpandedFields}from"./useUpdateExpandedFields";
1
+ export{ExpandAllButton}from"./ExpandAllButton";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{memo}from"react";import styled from"styled-components";import{Row}from"../common";import{Title}from"../common/OperationItemTitle";import{LinkToField}from"../common/LinkToField";import{makeDeepLink}from"../../services";import{Description}from"../OperationItem/Description";import{Security}from"../Security";import{ExpandAllButton,useUpdateExpandedFields}from"../ExpandAllButton";import{RequestParameters}from"../RequestParameters";function RequestDetailsComponent({operation:{id:e,description:t,externalDocs:o,parameters:r,requestBody:i,pointer:s,security:n,extensions:a,callbackId:m},title:p,translate:d}){return useUpdateExpandedFields("request",r,null==i?void 0:i.content,s),_jsxs(_Fragment,{children:[_jsx(Row,{children:_jsxs(HeadingWrapper,{children:[_jsxs(Title,{children:[e&&_jsx(LinkToField,{to:makeDeepLink(e,"request")}),p||(null==d?void 0:d("openapi.request","Request")),_jsx(ExpandAllButton,{operationPointer:s,type:"request"})]}),_jsx(Description,{description:t||o?t:void 0,externalDocs:o,extensions:a}),_jsx(Security,{securities:n})]})}),_jsx(RequestParameters,{parameters:r,body:i,operationId:e,callbackId:m})]})}const HeadingWrapper=styled.div`
1
+ import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{memo,useMemo}from"react";import{useAtomValue}from"jotai";import styled from"styled-components";import{Row}from"../common";import{Title}from"../common/OperationItemTitle";import{LinkToField}from"../common/LinkToField";import{makeDeepLink}from"../../services";import{Description}from"../OperationItem/Description";import{Security}from"../Security";import{ExpandAllButton}from"../ExpandAllButton";import{RequestParameters}from"../RequestParameters";import{activeMimeNameAtom}from"../../jotai/app";import{getActiveMediaType}from"../../models/mediaContent";function RequestDetailsComponent({operation:{id:e,description:t,externalDocs:o,parameters:i,requestBody:r,pointer:s,security:m,extensions:n,callbackId:a},title:p,translate:l}){const c=useAtomValue(activeMimeNameAtom),d=useMemo((()=>{var e;const t=i.some((({schema:e})=>!e.isPrimitive&&!e.isCircular));if(!(null==r?void 0:r.content)||t)return t;const{schema:o}=getActiveMediaType(r.content,c)||{};return null===(e=null==o?void 0:o.fields)||void 0===e?void 0:e.some((({schema:e})=>!e.isPrimitive&&!e.isCircular))}),[c,i,null==r?void 0:r.content]);return _jsxs(_Fragment,{children:[_jsx(Row,{children:_jsxs(HeadingWrapper,{children:[_jsxs(Title,{children:[e&&_jsx(LinkToField,{to:makeDeepLink(e,"request")}),p||(null==l?void 0:l("openapi.request","Request")),d&&_jsx(ExpandAllButton,{operationPointer:s,type:"request"})]}),_jsx(Description,{description:t||o?t:void 0,externalDocs:o,extensions:n}),_jsx(Security,{securities:m})]})}),_jsx(RequestParameters,{parameters:i,body:r,operationId:e,callbackId:a})]})}const HeadingWrapper=styled.div`
2
2
  width: 100%;
3
3
  `;export const RequestDetails=memo(RequestDetailsComponent);
4
4
  //# sourceMappingURL=RequestDetails.js.map
@@ -1,4 +1,4 @@
1
- import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{memo}from"react";import{useLocation}from"react-router-dom";import styled from"styled-components";import{Tabs,useTabsState}from"../Tabs";import{ResponseDetails}from"./ResponseDetails";import{makeDeepLink}from"../../services";import{Row,StyledTitle}from"./styled";import{LinkToField}from"../common/LinkToField";import{pathIncludesLink}from"../../utils";import{ExpandAllButton}from"../ExpandAllButton";import{useTranslate}from"../../hooks";export const OperationResponseList=memo((({responses:e,renderTitle:o,operationId:s,operationPointer:t,activeResponseTab:n,onTabChange:a,callbackId:r})=>{const i=useLocation(),p=useTranslate(),l=e.map((({code:e})=>({key:e,title:e}))),m=l.find((({key:e})=>e===n||pathIncludesLink(i,s)&&pathIncludesLink(i,`c=${e}`))),{activeTab:d,handleTabChange:c}=useTabsState({tabs:l,defaultTab:null==m?void 0:m.key,onChange:a}),u=l.find((e=>e.key===(n||d)));return u?_jsxs(_Fragment,{children:[_jsxs(TitleWrap,{children:[(null==o?void 0:o(u))||_jsxs(StyledTitle,{children:[_jsx(LinkToField,{to:makeDeepLink(s,`response&c=${u.key}`)}),p("openapi.responses","Responses")]}),_jsx(Tabs,{tabs:l,activeTab:u,onChange:c}),_jsx(ExpandAllButton,{type:"response",operationPointer:t})]}),e.map((e=>e.code===u.key?_jsx("div",{children:_jsx(ResponseDetails,{response:e,operationId:s,operationPointer:t,callbackId:r})},e.code):null))]}):null}));const TitleWrap=styled(Row)`
1
+ import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{memo,useMemo}from"react";import{useLocation}from"react-router-dom";import styled from"styled-components";import{useAtomValue}from"jotai";import{Tabs,useTabsState}from"../Tabs";import{ResponseDetails}from"./ResponseDetails";import{makeDeepLink}from"../../services";import{Row,StyledTitle}from"./styled";import{LinkToField}from"../common/LinkToField";import{pathIncludesLink}from"../../utils";import{ExpandAllButton}from"../ExpandAllButton";import{useTranslate}from"../../hooks";import{getActiveMediaType}from"../../models";import{activeMimeNameAtom}from"../../jotai/app";export const OperationResponseList=memo((({responses:e,renderTitle:o,operationId:t,operationPointer:s,activeResponseTab:i,onTabChange:n,callbackId:a})=>{const r=useLocation(),l=useTranslate(),[m]=useAtomValue(activeMimeNameAtom),p=e.map((({code:e})=>({key:e,title:e}))),d=p.find((({key:e})=>e===i||pathIncludesLink(r,t)&&pathIncludesLink(r,`c=${e}`))),{activeTab:c,handleTabChange:u}=useTabsState({tabs:p,defaultTab:null==d?void 0:d.key,onChange:n}),T=p.find((e=>e.key===(i||c))),f=e.find((e=>e.code===(null==T?void 0:T.key))),v=useMemo((()=>{var e;if(!(null==f?void 0:f.content))return!1;const{schema:o}=getActiveMediaType(null==f?void 0:f.content,m)||{};return null===(e=null==o?void 0:o.fields)||void 0===e?void 0:e.some((({schema:e})=>!e.isPrimitive&&!e.isCircular))}),[m,null==f?void 0:f.content]);return T?_jsxs(_Fragment,{children:[_jsxs(TitleWrap,{children:[(null==o?void 0:o(T))||_jsxs(StyledTitle,{children:[_jsx(LinkToField,{to:makeDeepLink(t,`response&c=${T.key}`)}),l("openapi.responses","Responses")]}),_jsx(Tabs,{tabs:p,activeTab:T,onChange:u}),v&&_jsx(ExpandAllButton,{type:"response",operationPointer:s})]}),f?_jsx("div",{children:_jsx(ResponseDetails,{response:f,operationId:t,callbackId:a})},f.code):null]}):null}));const TitleWrap=styled(Row)`
2
2
  flex-wrap: wrap;
3
3
  gap: var(--spacing-unit);
4
4
  `;
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import{ResponseHeaders}from"./ResponseHeaders";import{StyledDescription}from"./styled";import{BodyContent}from"../common/BodyContent";import{makeDeepLink}from"../../services";import{useUpdateExpandedFields}from"../ExpandAllButton";function ResponseDetailsComponent({response:e,operationId:s,operationPointer:o,callbackId:n,disableDeepLinks:r}){const{description:t,headers:i,content:p,summary:a,code:d}=e;return useUpdateExpandedFields("response",i,p,o),_jsxs(_Fragment,{children:[_jsx(StyledDescription,{className:"redoc-markdown",source:a}),_jsx(StyledDescription,{className:"redoc-markdown",source:t}),_jsx(ResponseHeaders,{headers:i,deepLink:r?void 0:generateDeepLink(s,n,d,"headers")}),_jsx(BodyContent,{content:p,skipWriteOnly:!0,deepLink:r?void 0:generateDeepLink(s,n,d,"body")})]})}export const ResponseDetails=memo(ResponseDetailsComponent);function generateDeepLink(e,s="",o,n){return makeDeepLink(e,s?`${s}/response&c=${o}/${n}`:`response&c=${o}/${n}`)}
1
+ import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import{ResponseHeaders}from"./ResponseHeaders";import{StyledDescription}from"./styled";import{BodyContent}from"../common/BodyContent";import{makeDeepLink}from"../../services";function ResponseDetailsComponent({response:e,operationId:s,callbackId:o,disableDeepLinks:n}){const{description:r,headers:t,content:i,summary:a,code:m}=e;return _jsxs(_Fragment,{children:[_jsx(StyledDescription,{className:"redoc-markdown",source:a}),_jsx(StyledDescription,{className:"redoc-markdown",source:r}),_jsx(ResponseHeaders,{headers:t,deepLink:n?void 0:generateDeepLink(s,o,m,"headers")}),_jsx(BodyContent,{content:i,skipWriteOnly:!0,deepLink:n?void 0:generateDeepLink(s,o,m,"body")})]})}export const ResponseDetails=memo(ResponseDetailsComponent);function generateDeepLink(e,s="",o,n){return makeDeepLink(e,s?`${s}/response&c=${o}/${n}`:`response&c=${o}/${n}`)}
2
2
  //# sourceMappingURL=ResponseDetails.js.map
@@ -4,7 +4,6 @@ export interface ResponseProps {
4
4
  shouldBeExpandedByDefault?: boolean;
5
5
  onToggle?: (code: string) => void;
6
6
  operationId: string;
7
- operationPointer: string;
8
7
  callbackId?: string;
9
8
  disableDeepLinks?: boolean;
10
9
  }
@@ -1,4 +1,4 @@
1
- var __rest=this&&this.__rest||function(e,t){var o={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(o[r[n]]=e[r[n]])}return o};import{jsxs as _jsxs,jsx as _jsx}from"react/jsx-runtime";import{memo}from"react";import{useAtom}from"jotai";import styled from"styled-components";import{StyledBadge,SelectionTitle}from"../common";import{Markdown}from"../Markdown";import{ConstraintsView}from"../common/ConstraintsView";import{Schema}from"./Schema";import{operationStore}from"../../jotai/operation";import{SchemaSelection}from"../common/SchemaSelection";import{useOneOfLocationIdx}from"./useOneOfLocationIdx";import{useTranslate}from"../../hooks";function OneOfSchemaComponent(e){var{schema:{oneOf:t},schema:o,oneOfLevel:r=1}=e,n=__rest(e,["schema","schema","oneOfLevel"]);const i=useTranslate(),[s]=useAtom(operationStore(o.operationPointer)),a=useOneOfLocationIdx(t,r),c=-1===a?0:a,m=t[void 0!==s.activeOneOf[o.pointer]?s.activeOneOf[o.pointer]:c];if(!m)return null;const p=t.map(((e,t)=>({label:e.title||e.typePrefix+e.displayType,value:t})));return _jsxs(Wrapper,{children:[_jsxs(SelectionTitle,{children:[o.oneOfType,":"]}),_jsx(SchemaSelection,{options:p,pointer:o.operationPointer,schema:o,defaultOneOfIdx:c}),m.deprecated&&_jsx(StyledBadge,{deprecated:!0,children:i("openapi.badges.deprecated","Deprecated")}),m.description&&_jsx(StyledDescription,{source:m.description}),_jsx(ConstraintsView,{constraints:m.constraints}),_jsx(Schema,Object.assign({},n,{schema:m,oneOfLevel:r+1}))]})}export const OneOfSchema=memo(OneOfSchemaComponent);const StyledDescription=styled(Markdown)`
1
+ var __rest=this&&this.__rest||function(e,o){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)o.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(t[n[r]]=e[n[r]])}return t};import{jsxs as _jsxs,jsx as _jsx}from"react/jsx-runtime";import{memo}from"react";import{useAtomValue}from"jotai";import styled from"styled-components";import{StyledBadge,SelectionTitle}from"../common";import{Markdown}from"../Markdown";import{ConstraintsView}from"../common/ConstraintsView";import{Schema}from"./Schema";import{operationStore}from"../../jotai/operation";import{SchemaSelection}from"../common/SchemaSelection";import{useOneOfLocationIdx}from"./useOneOfLocationIdx";import{useTranslate}from"../../hooks";function OneOfSchemaComponent(e){var o,{schema:{oneOf:t},schema:n,oneOfLevel:r=1}=e,i=__rest(e,["schema","schema","oneOfLevel"]);const s=useTranslate(),a=useAtomValue(operationStore(n.operationPointer)),c=useOneOfLocationIdx(t,r),m=-1===c?0:c,p=t[void 0!==(null===(o=a.activeOneOf)||void 0===o?void 0:o[n.pointer])?a.activeOneOf[n.pointer]:m];if(!p)return null;const l=t.map(((e,o)=>({label:e.title||e.typePrefix+e.displayType,value:o})));return _jsxs(Wrapper,{children:[_jsxs(SelectionTitle,{children:[n.oneOfType,":"]}),_jsx(SchemaSelection,{options:l,pointer:n.operationPointer,schema:n,defaultOneOfIdx:m}),p.deprecated&&_jsx(StyledBadge,{deprecated:!0,children:s("openapi.badges.deprecated","Deprecated")}),p.description&&_jsx(StyledDescription,{source:p.description}),_jsx(ConstraintsView,{constraints:p.constraints}),_jsx(Schema,Object.assign({},i,{schema:p,oneOfLevel:r+1}))]})}export const OneOfSchema=memo(OneOfSchemaComponent);const StyledDescription=styled(Markdown)`
2
2
  margin-top: var(--spacing-xs);
3
3
  font-size: var(--font-size-base);
4
4
  line-height: var(--line-height-base);
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{memo}from"react";import{useLocation}from"react-router-dom";import{useAtom}from"jotai/index";import{useMount}from"@redocly/theme";import{pathIncludesLink}from"../../utils";import{operationStore}from"../../jotai/operation";import{extractTypeFromDeepLink}from"./helpers";import{ViewNested}from"../ViewNested";import{useTranslate}from"../../hooks";function SubSchemaComponent({expandByDefault:e,deepLink:o,level:t,expandable:r=!1,isArray:n="",propertyLength:a="",children:i,operationPointer:p}){var s;const m=useTranslate(),d=useLocation(),u=pathIncludesLink(d,o),c=extractTypeFromDeepLink(o),[l,x]=useAtom(operationStore(p)),h=null===(s=l[c])||void 0===s?void 0:s.expandedFields[o||""],f=e=>{c&&o&&x((t=>{var r;return Object.assign(Object.assign({},t),{[c]:{expandedFields:Object.assign(Object.assign({},(null===(r=t[c])||void 0===r?void 0:r.expandedFields)||{}),{[o]:e})}})}))};useMount((()=>{r&&(e||u)&&f(!0)}));const b=`${m("openapi.actions.show","Show")} ${1===Number(a)?"":a} ${n&&"array "}${1!==a?"properties":"property"}`;return _jsx(ViewNested,{expandByDefault:e||u,isExpandedFromParent:h,level:t,expandable:r,onChange:()=>{f(!h)},expandText:b,children:i})}export const SubSchema=memo(SubSchemaComponent);
1
+ import{jsx as _jsx}from"react/jsx-runtime";import{memo}from"react";import{useLocation}from"react-router-dom";import{useAtomValue}from"jotai/index";import{pathIncludesLink}from"../../utils";import{operationStore}from"../../jotai/operation";import{extractTypeFromDeepLink}from"./helpers";import{ViewNested}from"../ViewNested";import{useTranslate}from"../../hooks";function SubSchemaComponent({expandByDefault:e,deepLink:o,level:r,expandable:t=!1,isArray:a="",propertyLength:n="",children:p,operationPointer:i}){var m;const s=useTranslate(),l=useLocation(),u=pathIncludesLink(l,o),d=extractTypeFromDeepLink(o),c=useAtomValue(operationStore(i)),x=`${s("openapi.actions.show","Show")} ${1===Number(n)?"":n} ${a&&"array "}${1!==n?"properties":"property"}`;return _jsx(ViewNested,{expandByDefault:e||u,level:r,expandable:t,expandText:x,children:p,expandedAll:null===(m=c[d])||void 0===m?void 0:m.expandedAll})}export const SubSchema=memo(SubSchemaComponent);
2
2
  //# sourceMappingURL=SubSchema.js.map
@@ -1,13 +1,12 @@
1
1
  import type { PropsWithChildren } from 'react';
2
2
  interface ViewNestedProps {
3
3
  expandByDefault: boolean;
4
- isExpandedFromParent?: boolean;
5
4
  level?: number;
6
5
  expandable?: boolean;
7
6
  expandText?: string;
8
7
  hideText?: string;
9
8
  hideDivider?: boolean;
10
- onChange?: () => void;
9
+ expandedAll?: boolean;
11
10
  }
12
11
  export declare const ViewNested: import("react").NamedExoticComponent<PropsWithChildren<ViewNestedProps>>;
13
12
  export {};
@@ -1,4 +1,4 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import styled,{css}from"styled-components";import{memo,useEffect,useState}from"react";import{isUndefined}from"@redocly/theme";import{cycleColorsByLevel}from"../PropertyDetails/cycleColorsByLevel";import{CircleIcon}from"../PropertyDetails/PlusCircleIcon";function ViewNestedComponent({expandByDefault:e,isExpandedFromParent:r,level:o,expandable:t=!1,expandText:s,hideText:i,hideDivider:n=!1,onChange:d,children:a}){const[l,c]=useState(e);useEffect((()=>{t&&!isUndefined(r)&&c(r)}),[r,t]);const p=l?cycleColorsByLevel(o):void 0;if(!t)return a;return _jsxs(Wrapper,{$divider:!n&&!l,className:"view-nested-wrapper",children:[_jsxs(ShowProperty,{onClick:()=>{c((e=>!e)),d&&d()},children:[_jsx(CircleIcon,{sign:l?"-":"+",color:p}),!l&&s,l&&(i||"")]}),l&&_jsx(StyledNested,{color:p,children:a})]})}export const ViewNested=memo(ViewNestedComponent);const ShowProperty=styled.button`
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import styled,{css}from"styled-components";import{memo,useEffect,useState}from"react";import{isUndefined}from"@redocly/theme";import{cycleColorsByLevel}from"../PropertyDetails/cycleColorsByLevel";import{CircleIcon}from"../PropertyDetails/PlusCircleIcon";function ViewNestedComponent({expandByDefault:e,level:r,expandable:o=!1,expandText:t,hideText:s,hideDivider:i=!1,children:n,expandedAll:l}){const[d,a]=useState(null!=e&&e);useEffect((()=>{isUndefined(l)||a(l)}),[l]);const c=d?cycleColorsByLevel(r):void 0;if(!o)return n;return _jsxs(Wrapper,{$divider:!i&&!d,className:"view-nested-wrapper",children:[_jsxs(ShowProperty,{onClick:()=>{a((e=>!e))},children:[_jsx(CircleIcon,{sign:d?"-":"+",color:c}),!d&&t,d&&(s||"")]}),d&&_jsx(StyledNested,{color:c,children:n})]})}export const ViewNested=memo(ViewNestedComponent);const ShowProperty=styled.button`
2
2
  background: none;
3
3
  border: none;
4
4
  cursor: pointer;
@@ -8,14 +8,10 @@ export type OperationStore = {
8
8
  [field: string]: any;
9
9
  };
10
10
  request: {
11
- expandedFields: {
12
- [field: string]: boolean;
13
- };
11
+ expandedAll?: boolean;
14
12
  };
15
13
  response: {
16
- expandedFields: {
17
- [field: string]: boolean;
18
- };
14
+ expandedAll?: boolean;
19
15
  };
20
16
  };
21
17
  export declare function getDefaultOperationStore(pointer: string, requestValues?: {
@@ -29,10 +25,10 @@ export declare function getDefaultOperationStore(pointer: string, requestValues?
29
25
  [field: string]: any;
30
26
  };
31
27
  request: {
32
- expandedFields: {};
28
+ expandedAll: undefined;
33
29
  };
34
30
  response: {
35
- expandedFields: {};
31
+ expandedAll: undefined;
36
32
  };
37
33
  };
38
34
  export declare const operationStore: import("jotai/vanilla/utils/atomFamily").AtomFamily<any, import("jotai").PrimitiveAtom<OperationStore> & {
@@ -1,2 +1,2 @@
1
- import{atom}from"jotai";import{atomFamily}from"jotai/utils";import deepEqual from"fast-deep-equal";export function getDefaultOperationStore(e,t={}){return{activeExampleName:void 0,activeOneOf:{[e]:0},requestValues:t,request:{expandedFields:{}},response:{expandedFields:{}}}}export const operationStore=atomFamily((e=>atom(getDefaultOperationStore(e))),deepEqual);
1
+ import{atom}from"jotai";import{atomFamily}from"jotai/utils";import deepEqual from"fast-deep-equal";export function getDefaultOperationStore(e,t={}){return{activeExampleName:void 0,activeOneOf:{[e]:0},requestValues:t,request:{expandedAll:void 0},response:{expandedAll:void 0}}}export const operationStore=atomFamily((e=>atom(getDefaultOperationStore(e))),deepEqual);
2
2
  //# sourceMappingURL=operation.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.4.7",
3
+ "version": "3.4.8",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -1,8 +0,0 @@
1
- import type { SchemaModel } from '../../models';
2
- import type { OperationStore } from '../../jotai/operation';
3
- export declare const getAllNestedSchema: ({ schema, activeOneOf, skipReadOnly, skipWriteOnly, }: {
4
- schema?: SchemaModel;
5
- activeOneOf: OperationStore["activeOneOf"];
6
- skipReadOnly?: boolean;
7
- skipWriteOnly?: boolean;
8
- }) => any;
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAllNestedSchema=void 0;const LinkToField_1=require("../common/LinkToField"),getAllNestedSchema=({schema:e,activeOneOf:i,skipReadOnly:s=!1,skipWriteOnly:t=!1})=>{var l;if(!e||e.isCircular)return{};if(e.oneOf&&e.oneOf.length){const s=e.oneOf[i[e.pointer]||0];return(null==s?void 0:s.isCircular)?{}:(0,exports.getAllNestedSchema)({schema:s,activeOneOf:i})}return(e.fields||(null===(l=e.items)||void 0===l?void 0:l.fields)||[]).reduce(((e,l)=>l.schema.isCircular||l.schema.isPrimitive||s&&l.schema.readOnly||t&&l.schema.writeOnly?e:Object.assign(Object.assign(Object.assign({},e),{[(0,LinkToField_1.generateDeepLink)(l)]:!1}),(0,exports.getAllNestedSchema)({schema:l.schema,activeOneOf:i,skipReadOnly:s,skipWriteOnly:t}))),{})};exports.getAllNestedSchema=getAllNestedSchema;
2
- //# sourceMappingURL=getAllNestedSchema.js.map
@@ -1,2 +0,0 @@
1
- import type { FieldModel, MediaContentModel } from '../../models';
2
- export declare function useUpdateExpandedFields(type: 'response' | 'request', headers: FieldModel[], body?: MediaContentModel, pointer?: string): void;
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useUpdateExpandedFields=useUpdateExpandedFields;const index_1=require("jotai/index"),react_1=require("react"),theme_1=require("@redocly/theme"),models_1=require("../../models"),operation_1=require("../../jotai/operation"),getAllNestedSchema_1=require("./getAllNestedSchema"),app_1=require("../../jotai/app");function useUpdateExpandedFields(e,t,s,i){var a;const n=(0,index_1.useAtomValue)(app_1.activeMimeNameAtom),d=s&&(null===(a=(0,models_1.getActiveMediaType)(s,n))||void 0===a?void 0:a.schema),[{activeOneOf:l},r]=(0,index_1.useAtom)((0,operation_1.operationStore)(i)),c=(i=!1)=>{((null==t?void 0:t.length)||s)&&r((s=>{const a=(0,getAllNestedSchema_1.getAllNestedSchema)({schema:d,activeOneOf:s.activeOneOf,skipReadOnly:"request"===e,skipWriteOnly:"response"===e})||{},n=(0,getAllNestedSchema_1.getAllNestedSchema)({schema:{type:"object",fields:t},activeOneOf:s.activeOneOf,skipReadOnly:"request"===e,skipWriteOnly:"response"===e});return Object.assign(Object.assign({},s),{[e]:{expandedFields:Object.assign(Object.assign(Object.assign({},a),n),i?s[e].expandedFields:{})}})}))};(0,theme_1.useMount)((()=>{c(!0)})),(0,theme_1.useUnmount)((()=>{((null==t?void 0:t.length)||s)&&r((t=>Object.assign(Object.assign({},t),{[e]:{expandedFields:{}}})))})),(0,react_1.useEffect)((()=>{Object.keys(l).length>1&&c(!0)}),[l])}
2
- //# sourceMappingURL=useUpdateExpandedFields.js.map
@@ -1,8 +0,0 @@
1
- import type { SchemaModel } from '../../models';
2
- import type { OperationStore } from '../../jotai/operation';
3
- export declare const getAllNestedSchema: ({ schema, activeOneOf, skipReadOnly, skipWriteOnly, }: {
4
- schema?: SchemaModel;
5
- activeOneOf: OperationStore["activeOneOf"];
6
- skipReadOnly?: boolean;
7
- skipWriteOnly?: boolean;
8
- }) => any;
@@ -1,2 +0,0 @@
1
- import{generateDeepLink}from"../common/LinkToField";export const getAllNestedSchema=({schema:e,activeOneOf:i,skipReadOnly:n=!1,skipWriteOnly:s=!1})=>{var t;if(!e||e.isCircular)return{};if(e.oneOf&&e.oneOf.length){const n=e.oneOf[i[e.pointer]||0];return(null==n?void 0:n.isCircular)?{}:getAllNestedSchema({schema:n,activeOneOf:i})}return(e.fields||(null===(t=e.items)||void 0===t?void 0:t.fields)||[]).reduce(((e,t)=>t.schema.isCircular||t.schema.isPrimitive||n&&t.schema.readOnly||s&&t.schema.writeOnly?e:Object.assign(Object.assign(Object.assign({},e),{[generateDeepLink(t)]:!1}),getAllNestedSchema({schema:t.schema,activeOneOf:i,skipReadOnly:n,skipWriteOnly:s}))),{})};
2
- //# sourceMappingURL=getAllNestedSchema.js.map
@@ -1,2 +0,0 @@
1
- import type { FieldModel, MediaContentModel } from '../../models';
2
- export declare function useUpdateExpandedFields(type: 'response' | 'request', headers: FieldModel[], body?: MediaContentModel, pointer?: string): void;
@@ -1,2 +0,0 @@
1
- import{useAtomValue,useAtom}from"jotai/index";import{useEffect}from"react";import{useMount,useUnmount}from"@redocly/theme";import{getActiveMediaType}from"../../models";import{operationStore}from"../../jotai/operation";import{getAllNestedSchema}from"./getAllNestedSchema";import{activeMimeNameAtom}from"../../jotai/app";export function useUpdateExpandedFields(e,t,s,i){var o;const a=useAtomValue(activeMimeNameAtom),n=s&&(null===(o=getActiveMediaType(s,a))||void 0===o?void 0:o.schema),[{activeOneOf:m},c]=useAtom(operationStore(i)),r=(i=!1)=>{((null==t?void 0:t.length)||s)&&c((s=>{const o=getAllNestedSchema({schema:n,activeOneOf:s.activeOneOf,skipReadOnly:"request"===e,skipWriteOnly:"response"===e})||{},a=getAllNestedSchema({schema:{type:"object",fields:t},activeOneOf:s.activeOneOf,skipReadOnly:"request"===e,skipWriteOnly:"response"===e});return Object.assign(Object.assign({},s),{[e]:{expandedFields:Object.assign(Object.assign(Object.assign({},o),a),i?s[e].expandedFields:{})}})}))};useMount((()=>{r(!0)})),useUnmount((()=>{((null==t?void 0:t.length)||s)&&c((t=>Object.assign(Object.assign({},t),{[e]:{expandedFields:{}}})))})),useEffect((()=>{Object.keys(m).length>1&&r(!0)}),[m])}
2
- //# sourceMappingURL=useUpdateExpandedFields.js.map