@redocly/openapi-docs 3.11.0-next.4 → 3.11.0-next.5

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,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.PropertyDetails=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),Schema_1=require("../Schema"),FieldDetails_1=require("./FieldDetails"),LinkToField_1=require("../common/LinkToField"),app_1=require("../../jotai/app");function PropertyDetailsComponent({field:e,skipWriteOnly:i,skipReadOnly:r,level:t=1,showTitle:s,renderDiscriminatorSwitch:a,isFirst:o,fieldParentsName:n,disableDeepLinks:l,oneOfLevel:d,slug:p}){const m=(0,jotai_1.useAtomValue)(app_1.activeMimeNameAtom),c=l?void 0:(0,LinkToField_1.generateDeepLink)(e,m),_=p&&c?`${p}&${c.replace("#","")}`:c,u=!e.schema.isPrimitive&&!e.schema.isCircular;return(0,jsx_runtime_1.jsxs)(Wrapper,{isFist:o,expanded:u,className:"property",children:[(0,jsx_runtime_1.jsx)(FieldDetails_1.FieldDetails,{field:e,renderDiscriminatorSwitch:a,deepLink:_,fieldParentsName:n}),u&&(0,jsx_runtime_1.jsx)(Schema_1.Schema,{schema:e.schema,skipReadOnly:r,skipWriteOnly:i,showTitle:s,expandable:!0,level:t+1,fieldParentsName:[...n||[],e.name],deepLink:_,required:e.required,disableDeepLinks:l,oneOfLevel:d,slug:p})]})}exports.PropertyDetails=(0,react_1.memo)(PropertyDetailsComponent);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.PropertyDetails=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),styled_components_1=__importDefault(require("styled-components")),jotai_1=require("jotai"),Schema_1=require("../Schema"),FieldDetails_1=require("./FieldDetails"),LinkToField_1=require("../common/LinkToField"),app_1=require("../../jotai/app");function PropertyDetailsComponent({field:e,skipWriteOnly:i,skipReadOnly:r,level:t=1,showTitle:a,renderDiscriminatorSwitch:s,isFirst:n,fieldParentsName:o,disableDeepLinks:l,oneOfLevel:d,slug:p,onOneOfChange:m}){const c=(0,jotai_1.useAtomValue)(app_1.activeMimeNameAtom),_=l?void 0:(0,LinkToField_1.generateDeepLink)(e,c),u=p&&_?`${p}&${_.replace("#","")}`:_,h=!e.schema.isPrimitive&&!e.schema.isCircular;return(0,jsx_runtime_1.jsxs)(Wrapper,{isFist:n,expanded:h,className:"property",children:[(0,jsx_runtime_1.jsx)(FieldDetails_1.FieldDetails,{field:e,renderDiscriminatorSwitch:s,deepLink:u,fieldParentsName:o}),h&&(0,jsx_runtime_1.jsx)(Schema_1.Schema,{schema:e.schema,skipReadOnly:r,skipWriteOnly:i,showTitle:a,expandable:!0,level:t+1,fieldParentsName:[...o||[],e.name],deepLink:u,required:e.required,disableDeepLinks:l,oneOfLevel:d,slug:p,onOneOfChange:m})]})}exports.PropertyDetails=(0,react_1.memo)(PropertyDetailsComponent);const Wrapper=styled_components_1.default.div`
2
2
  width: 100%;
3
3
  padding: ${({isFist:e})=>`var(--schema-${e?"fist-":""}property-details-spacing)`} 0
4
4
  ${({expanded:e})=>e?0:"var(--schema-property-details-spacing)"};
@@ -1,6 +1,6 @@
1
1
  import type { TFunction } from '@redocly/theme';
2
2
  import type { ReactElement } from 'react';
3
- import type { SchemaOptions } from '../Schema';
3
+ import type { SchemaOptions, OneOfChangeParams } from '../Schema';
4
4
  import type { FieldModel } from '../../models';
5
5
  export interface EnumValuesProps {
6
6
  values?: string[] | {
@@ -44,4 +44,5 @@ export interface FieldProps extends SchemaOptions {
44
44
  fieldParentsName?: string[];
45
45
  disableDeepLinks?: boolean;
46
46
  oneOfLevel?: number;
47
+ onOneOfChange?: ({ pointer, index }: OneOfChangeParams) => void;
47
48
  }
@@ -1,2 +1,2 @@
1
- "use strict";var __rest=this&&this.__rest||function(e,r){var t={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&r.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(l=Object.getOwnPropertySymbols(e);s<l.length;s++)r.indexOf(l[s])<0&&Object.prototype.propertyIsEnumerable.call(e,l[s])&&(t[l[s]]=e[l[s]])}return t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ArraySchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),common_1=require("../common"),Schema_1=require("./Schema"),ObjectSchema_1=require("./ObjectSchema"),utils_1=require("../../utils"),SubSchema_1=require("./SubSchema"),store_1=require("../../jotai/store"),helpers_1=require("./helpers"),styled_1=require("../common/styled");function ArraySchemaComponent(e){var r,t,{schema:l,schema:{minItems:s,maxItems:a,items:i},fieldParentsName:n}=e,o=__rest(e,["schema","schema","fieldParentsName"]);const{schemasExpansionLevel:c}=(0,jotai_1.useAtomValue)(store_1.globalOptionsAtom),m=Array.isArray(o.parentType)?o.parentType:[o.parentType],u=m.includes("array")&&1===m.length,d=u?(o.level||0)+1:o.level,_=void 0===s&&void 0===a?"":`(${(0,utils_1.humanizeConstraints)(l)})`;let y=n?[...n.slice(0,-1),n[n.length-1]+"[]"]:n;const h=(0,react_1.useCallback)((e=>o.skipReadOnly||o.skipWriteOnly?null==e?void 0:e.filter((e=>!(o.skipReadOnly&&e.schema.readOnly||o.skipWriteOnly&&e.schema.writeOnly))):e),[o.skipReadOnly,o.skipWriteOnly]);if(null==l?void 0:l.fields)return(0,jsx_runtime_1.jsx)(ObjectSchema_1.ObjectSchema,Object.assign({},o,{shouldCloseArray:u,level:d,schema:l,fieldParentsName:y}));if(l.displayType&&!i&&!_.length)return(0,jsx_runtime_1.jsx)("div",{children:(0,jsx_runtime_1.jsx)(common_1.TypeName,{children:l.displayType})});const p=h(null==i?void 0:i.fields),j=h(null===(t=null===(r=null==i?void 0:i.oneOf)||void 0===r?void 0:r[0])||void 0===t?void 0:t.fields),x=(null==p?void 0:p.length)||(null==j?void 0:j.length),v=1===o.level,b=(0,helpers_1.getExpandByDefault)({level:o.level,required:o.required,schemasExpansionLevel:c});return(0,jsx_runtime_1.jsx)(SubSchema_1.SubSchema,Object.assign({},o,{propertyLength:x,isNestedArray:u,level:d,isArray:!0,expandable:!v,expandByDefault:b,operationPointer:l.operationPointer,children:(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[v&&(0,jsx_runtime_1.jsx)(styled_1.ArrayLabel,{children:(0,jsx_runtime_1.jsx)(styled_1.LabelValue,{children:"Array ["})}),(0,jsx_runtime_1.jsx)(Schema_1.Schema,Object.assign({},o,{parentType:v?void 0:l.type,level:d,schema:i,shouldCloseArray:u,fieldParentsName:y,expandable:!1})),v&&(0,jsx_runtime_1.jsx)(styled_1.ArrayClosingLabel,{className:"array-closing-label",children:(0,jsx_runtime_1.jsx)(styled_1.LabelValue,{children:"]"})})]})}))}exports.ArraySchema=(0,react_1.memo)(ArraySchemaComponent);
1
+ "use strict";var __rest=this&&this.__rest||function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)r.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(t[n[a]]=e[n[a]])}return t};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ArraySchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),common_1=require("../common"),Schema_1=require("./Schema"),ObjectSchema_1=require("./ObjectSchema"),utils_1=require("../../utils"),SubSchema_1=require("./SubSchema"),store_1=require("../../jotai/store"),helpers_1=require("./helpers"),styled_1=require("../common/styled");function ArraySchemaComponent(e){var r,t,{schema:n,schema:{minItems:a,maxItems:l,items:s},fieldParentsName:i}=e,o=__rest(e,["schema","schema","fieldParentsName"]);const{schemasExpansionLevel:c}=(0,jotai_1.useAtomValue)(store_1.globalOptionsAtom),m=Array.isArray(o.parentType)?o.parentType:[o.parentType],u=m.includes("array")&&1===m.length,d=u?(o.level||0)+1:o.level,_=void 0===a&&void 0===l?"":`(${(0,utils_1.humanizeConstraints)(n)})`;let h=i?[...i.slice(0,-1),i[i.length-1]+"[]"]:i;const y=(0,react_1.useCallback)((e=>o.skipReadOnly||o.skipWriteOnly?null==e?void 0:e.filter((e=>!(o.skipReadOnly&&e.schema.readOnly||o.skipWriteOnly&&e.schema.writeOnly))):e),[o.skipReadOnly,o.skipWriteOnly]);if(null==n?void 0:n.fields)return(0,jsx_runtime_1.jsx)(ObjectSchema_1.ObjectSchema,Object.assign({},o,{shouldCloseArray:u,level:d,schema:n,fieldParentsName:h,onOneOfChange:o.onOneOfChange}));if(n.displayType&&!s&&!_.length)return(0,jsx_runtime_1.jsx)("div",{children:(0,jsx_runtime_1.jsx)(common_1.TypeName,{children:n.displayType})});const p=y(null==s?void 0:s.fields),j=y(null===(t=null===(r=null==s?void 0:s.oneOf)||void 0===r?void 0:r[0])||void 0===t?void 0:t.fields),x=(null==p?void 0:p.length)||(null==j?void 0:j.length),O=1===o.level,v=(0,helpers_1.getExpandByDefault)({level:o.level,required:o.required,schemasExpansionLevel:c});return(0,jsx_runtime_1.jsx)(SubSchema_1.SubSchema,Object.assign({},o,{propertyLength:x,isNestedArray:u,level:d,isArray:!0,expandable:!O,expandByDefault:v,operationPointer:n.operationPointer,children:(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[O&&(0,jsx_runtime_1.jsx)(styled_1.ArrayLabel,{children:(0,jsx_runtime_1.jsx)(styled_1.LabelValue,{children:"Array ["})}),(0,jsx_runtime_1.jsx)(Schema_1.Schema,Object.assign({},o,{parentType:O?void 0:n.type,level:d,schema:s,shouldCloseArray:u,fieldParentsName:h,expandable:!1,onOneOfChange:o.onOneOfChange})),O&&(0,jsx_runtime_1.jsx)(styled_1.ArrayClosingLabel,{className:"array-closing-label",children:(0,jsx_runtime_1.jsx)(styled_1.LabelValue,{children:"]"})})]})}))}exports.ArraySchema=(0,react_1.memo)(ArraySchemaComponent);
2
2
  //# sourceMappingURL=ArraySchema.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ObjectSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),common_1=require("../common"),Discriminator_1=require("../Discriminator"),store_1=require("../../jotai/store"),PropertyDetails_1=require("../PropertyDetails"),SubSchema_1=require("./SubSchema"),helpers_1=require("./helpers"),hooks_1=require("../../hooks"),styled_1=require("../common/styled");function ObjectSchemaComponent({schema:e,showTitle:r,discriminator:i,level:t,skipWriteOnly:s,skipReadOnly:a,fieldParentsName:n,expandable:l,deepLink:o,required:m,disableDeepLinks:c,shouldCloseArray:u,oneOfLevel:_,slug:d}){const{fields:p=[],title:h}=e,x=(0,hooks_1.useTranslate)(),{schemasExpansionLevel:j}=(0,jotai_1.useAtomValue)(store_1.globalOptionsAtom),y=a||s?p.filter((e=>!(a&&e.schema.readOnly||s&&e.schema.writeOnly))):p,b=(0,helpers_1.getExpandByDefault)({required:m,level:t,schemasExpansionLevel:j});return(0,jsx_runtime_1.jsxs)(SubSchema_1.SubSchema,{expandable:l,expandByDefault:b,level:t,propertyLength:y.length,deepLink:o,operationPointer:e.operationPointer,children:[(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[r&&(0,jsx_runtime_1.jsx)(common_1.PropertiesTableCaption,{children:h}),y.map(((e,l)=>(0,jsx_runtime_1.jsx)(PropertyDetails_1.PropertyDetails,{isFirst:0===l,field:e,fieldParentsName:Number(t)>1?n:[],renderDiscriminatorSwitch:(null==i?void 0:i.fieldName)===e.name&&(null==i?void 0:i.parentSchema)?()=>(0,jsx_runtime_1.jsx)(Discriminator_1.Discriminator,{parent:i.parentSchema,onChange:null==i?void 0:i.onChange,activeOneOfIdx:i.activeOneOfIdx,translate:x}):void 0,skipReadOnly:a,skipWriteOnly:s,showTitle:r,level:t,disableDeepLinks:c,oneOfLevel:_,slug:d},e.name)))]}),u&&(0,jsx_runtime_1.jsx)(styled_1.ArrayClosingLabel,{className:"array-closing-label",children:(0,jsx_runtime_1.jsx)(styled_1.LabelValue,{children:"]"})})]})}exports.ObjectSchema=(0,react_1.memo)(ObjectSchemaComponent);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ObjectSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),common_1=require("../common"),Discriminator_1=require("../Discriminator"),store_1=require("../../jotai/store"),PropertyDetails_1=require("../PropertyDetails"),SubSchema_1=require("./SubSchema"),helpers_1=require("./helpers"),hooks_1=require("../../hooks"),styled_1=require("../common/styled");function ObjectSchemaComponent({schema:e,showTitle:r,discriminator:i,level:t,skipWriteOnly:n,skipReadOnly:s,fieldParentsName:a,expandable:l,deepLink:o,required:m,disableDeepLinks:c,shouldCloseArray:u,oneOfLevel:_,slug:d,onOneOfChange:p}){const{fields:h=[],title:x}=e,j=(0,hooks_1.useTranslate)(),{schemasExpansionLevel:O}=(0,jotai_1.useAtomValue)(store_1.globalOptionsAtom),y=s||n?h.filter((e=>!(s&&e.schema.readOnly||n&&e.schema.writeOnly))):h,b=(0,helpers_1.getExpandByDefault)({required:m,level:t,schemasExpansionLevel:O});return(0,jsx_runtime_1.jsxs)(SubSchema_1.SubSchema,{expandable:l,expandByDefault:b,level:t,propertyLength:y.length,deepLink:o,operationPointer:e.operationPointer,children:[(0,jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment,{children:[r&&(0,jsx_runtime_1.jsx)(common_1.PropertiesTableCaption,{children:x}),y.map(((e,l)=>(0,jsx_runtime_1.jsx)(PropertyDetails_1.PropertyDetails,{isFirst:0===l,field:e,fieldParentsName:Number(t)>1?a:[],renderDiscriminatorSwitch:(null==i?void 0:i.fieldName)===e.name&&(null==i?void 0:i.parentSchema)?()=>(0,jsx_runtime_1.jsx)(Discriminator_1.Discriminator,{parent:i.parentSchema,onChange:null==i?void 0:i.onChange,activeOneOfIdx:i.activeOneOfIdx,translate:j}):void 0,skipReadOnly:s,skipWriteOnly:n,showTitle:r,level:t,disableDeepLinks:c,oneOfLevel:_,slug:d,onOneOfChange:p},e.name)))]}),u&&(0,jsx_runtime_1.jsx)(styled_1.ArrayClosingLabel,{className:"array-closing-label",children:(0,jsx_runtime_1.jsx)(styled_1.LabelValue,{children:"]"})})]})}exports.ObjectSchema=(0,react_1.memo)(ObjectSchemaComponent);
2
2
  //# sourceMappingURL=ObjectSchema.js.map
@@ -1,2 +1,11 @@
1
- import type { SchemaProps } from './types';
2
- export declare const OneOfSchema: import("react").NamedExoticComponent<SchemaProps>;
1
+ import type { OneOfChangeParams, SchemaProps } from './types';
2
+ import type { SchemaModel } from '../../models';
3
+ interface OneOfSchemaProps extends SchemaProps {
4
+ schema: SchemaModel & {
5
+ oneOf: SchemaModel[];
6
+ };
7
+ oneOfLevel?: number;
8
+ onChange?: (params: OneOfChangeParams) => void;
9
+ }
10
+ export declare const OneOfSchema: import("react").NamedExoticComponent<OneOfSchemaProps>;
11
+ export {};
@@ -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 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)`
1
+ "use strict";var __rest=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},__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:n},schema:o,onChange:r,oneOfLevel:i=1}=e,a=__rest(e,["schema","schema","onChange","oneOfLevel"]);const s=(0,hooks_1.useTranslate)(),[c,l]=(0,jotai_1.useAtom)((0,operation_1.operationStore)(o.operationPointer)),m=(0,useOneOfLocationIdx_1.useOneOfLocationIdx)(n,i),p=-1===m?0:m,u=n[void 0!==(null===(t=c.activeOneOf)||void 0===t?void 0:t[o.pointer])?c.activeOneOf[o.pointer]:p];if(!u)return null;const _=n.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:_,onChange:e=>{var t,n;null==r||r({pointer:o.pointer,index:e}),l({activeExampleName:null===(n=null===(t=o.oneOf)||void 0===t?void 0:t[e])||void 0===n?void 0:n.title,activeOneOf:{[o.pointer]:e},requestValues:{body:null}})},pointer:o.operationPointer,schema:o,defaultOneOfIdx:p}),u.deprecated&&(0,jsx_runtime_1.jsx)(common_1.StyledBadge,{deprecated:!0,children:s("openapi.badges.deprecated","Deprecated")}),u.description&&(0,jsx_runtime_1.jsx)(StyledDescription,{source:u.description}),(0,jsx_runtime_1.jsx)(ConstraintsView_1.ConstraintsView,{constraints:u.constraints}),(0,jsx_runtime_1.jsx)(Schema_1.Schema,Object.assign({},a,{schema:u,oneOfLevel:i+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,4 +1,4 @@
1
- "use strict";var __rest=this&&this.__rest||function(e,r){var t={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&r.indexOf(i)<0&&(t[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)r.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(t[i[n]]=e[i[n]])}return t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Schema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),ArraySchema_1=require("./ArraySchema"),ObjectSchema_1=require("./ObjectSchema"),OneOfSchema_1=require("./OneOfSchema"),RecursiveSchema_1=require("./RecursiveSchema"),operation_1=require("../../jotai/operation"),PropertyDetails_1=require("../PropertyDetails"),utils_1=require("../../utils");function SchemaComponent(e){var r,{schema:t,onDiscriminatorChange:i}=e,n=__rest(e,["schema","onDiscriminatorChange"]);const{activeOneOf:a}=(0,jotai_1.useAtomValue)((0,operation_1.operationStore)((null==t?void 0:t.operationPointer)||"")),o=(0,react_router_dom_1.useLocation)();if(!t)return null;const{type:s,oneOf:c,discriminatorProp:u,isCircular:m}=t;if(m)return(0,jsx_runtime_1.jsx)(RecursiveSchema_1.RecursiveSchema,{schema:t});if(void 0!==u){if(!c||!c.length)return console.warn(`Looks like you are using discriminator wrong: you don't have any definition inherited from the ${t.title}`),null;const e=c.findIndex(((e,r)=>(0,utils_1.pathIncludesLink)(o,`d=${r}`))),r=-1===e?0:e,s=c[void 0!==a[t.pointer]?a[t.pointer]:r];return(null==s?void 0:s.isCircular)?(0,jsx_runtime_1.jsx)(RecursiveSchema_1.RecursiveSchema,{schema:s}):(0,jsx_runtime_1.jsx)(ObjectSchema_1.ObjectSchema,Object.assign({},n,{schema:s,discriminator:{fieldName:u,parentSchema:t,activeOneOfIdx:r,onChange:i}}))}if(void 0!==c&&c.length>1)return(0,jsx_runtime_1.jsx)(OneOfSchema_1.OneOfSchema,Object.assign({},n,{schema:t}));const _=Array.isArray(s)?s:[s];if(_.includes("object")){if(null===(r=t.fields)||void 0===r?void 0:r.length)return(0,jsx_runtime_1.jsx)(ObjectSchema_1.ObjectSchema,Object.assign({},n,{schema:t}))}else if(_.includes("array"))return(0,jsx_runtime_1.jsx)(ArraySchema_1.ArraySchema,Object.assign({},n,{schema:t}));const l={schema:t,name:"",description:t.description,required:!1,deprecated:!1};return(0,jsx_runtime_1.jsx)(Wrapper,{children:(0,jsx_runtime_1.jsx)(PropertyDetails_1.FieldDetails,{field:l,fieldParentsName:n.fieldParentsName})})}exports.Schema=(0,react_1.memo)(SchemaComponent);const Wrapper=styled_components_1.default.div`
1
+ "use strict";var __rest=this&&this.__rest||function(e,r){var t={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&r.indexOf(i)<0&&(t[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)r.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(t[i[n]]=e[i[n]])}return t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Schema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),jotai_1=require("jotai"),react_router_dom_1=require("react-router-dom"),styled_components_1=__importDefault(require("styled-components")),ArraySchema_1=require("./ArraySchema"),ObjectSchema_1=require("./ObjectSchema"),OneOfSchema_1=require("./OneOfSchema"),RecursiveSchema_1=require("./RecursiveSchema"),operation_1=require("../../jotai/operation"),PropertyDetails_1=require("../PropertyDetails"),utils_1=require("../../utils");function SchemaComponent(e){var r,{schema:t,onDiscriminatorChange:i,onOneOfChange:n}=e,a=__rest(e,["schema","onDiscriminatorChange","onOneOfChange"]);const{activeOneOf:o}=(0,jotai_1.useAtomValue)((0,operation_1.operationStore)((null==t?void 0:t.operationPointer)||"")),s=(0,react_router_dom_1.useLocation)();if(!t)return null;const{type:c,oneOf:u,discriminatorProp:m,isCircular:_}=t;if(_)return(0,jsx_runtime_1.jsx)(RecursiveSchema_1.RecursiveSchema,{schema:t});if(void 0!==m){if(!u||!u.length)return console.warn(`Looks like you are using discriminator wrong: you don't have any definition inherited from the ${t.title}`),null;const e=u.findIndex(((e,r)=>(0,utils_1.pathIncludesLink)(s,`d=${r}`))),r=-1===e?0:e,c=u[void 0!==o[t.pointer]?o[t.pointer]:r];return(null==c?void 0:c.isCircular)?(0,jsx_runtime_1.jsx)(RecursiveSchema_1.RecursiveSchema,{schema:c}):(0,jsx_runtime_1.jsx)(ObjectSchema_1.ObjectSchema,Object.assign({},a,{schema:c,discriminator:{fieldName:m,parentSchema:t,activeOneOfIdx:r,onChange:i},onOneOfChange:n}))}if(void 0!==u&&u.length>1)return(0,jsx_runtime_1.jsx)(OneOfSchema_1.OneOfSchema,Object.assign({},a,{schema:t,onChange:n}));const l=Array.isArray(c)?c:[c];if(l.includes("object")){if(null===(r=t.fields)||void 0===r?void 0:r.length)return(0,jsx_runtime_1.jsx)(ObjectSchema_1.ObjectSchema,Object.assign({},a,{schema:t,onOneOfChange:n}))}else if(l.includes("array"))return(0,jsx_runtime_1.jsx)(ArraySchema_1.ArraySchema,Object.assign({},a,{schema:t,onOneOfChange:n}));const h={schema:t,name:"",description:t.description,required:!1,deprecated:!1};return(0,jsx_runtime_1.jsx)(Wrapper,{children:(0,jsx_runtime_1.jsx)(PropertyDetails_1.FieldDetails,{field:h,fieldParentsName:a.fieldParentsName})})}exports.Schema=(0,react_1.memo)(SchemaComponent);const Wrapper=styled_components_1.default.div`
2
2
  width: 100%;
3
3
  padding: var(--spacing-xxs) 0;
4
4
  border-bottom: 1px solid var(--border-color-primary);
@@ -2,4 +2,4 @@ export { Schema } from './Schema';
2
2
  export { ObjectSchema } from './ObjectSchema';
3
3
  export { OneOfSchema } from './OneOfSchema';
4
4
  export { ArraySchema } from './ArraySchema';
5
- export type { SchemaOptions } from './types';
5
+ export type { SchemaOptions, OneOfChangeParams } from './types';
@@ -13,6 +13,7 @@ export interface SchemaProps extends SchemaOptions {
13
13
  schema: SchemaModel;
14
14
  parentType?: string[] | string;
15
15
  onDiscriminatorChange?: (idx: number) => void;
16
+ onOneOfChange?: (params: OneOfChangeParams) => void;
16
17
  fieldParentsName?: string[];
17
18
  expandable?: boolean;
18
19
  deepLink?: string;
@@ -35,4 +36,9 @@ export interface ObjectSchemaProps extends Omit<SchemaProps, 'onDiscriminatorCha
35
36
  slug?: string;
36
37
  oneOfLevel?: number;
37
38
  shouldCloseArray?: boolean;
39
+ onOneOfChange?: (params: OneOfChangeParams) => void;
40
+ }
41
+ export interface OneOfChangeParams {
42
+ pointer: string;
43
+ index: number;
38
44
  }
@@ -1,10 +1,12 @@
1
1
  import type { ReactElement } from 'react';
2
2
  import type { OpenAPISchema } from '../../types';
3
+ import type { OneOfChangeParams } from '../Schema';
3
4
  interface RedocSchemaProps {
4
5
  pointer?: string;
5
6
  schema?: OpenAPISchema;
6
7
  disableDeepLinks?: boolean;
7
8
  slug?: string;
9
+ onOneOfChange?: ({ pointer, index }: OneOfChangeParams) => void;
8
10
  }
9
- export declare const RedocSchema: ({ pointer, schema, disableDeepLinks, slug, }: RedocSchemaProps) => ReactElement;
11
+ export declare const RedocSchema: ({ pointer, schema, disableDeepLinks, slug, onOneOfChange, }: RedocSchemaProps) => ReactElement;
10
12
  export {};
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RedocSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),jotai_1=require("jotai"),models_1=require("../../models"),common_1=require("../common"),styled_components_1=require("./styled.components"),Schema_1=require("../Schema"),store_1=require("../../jotai/store"),RedocSchema=({pointer:e,schema:o,disableDeepLinks:r,slug:s})=>{const{options:t,parser:i}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),m=o||{$ref:e},c=(0,models_1.getSchema)({parser:i,schemaOrRef:m,pointer:e||"",options:t,deps:{operation:{pointer:"RedocSchema"}}});return(0,jsx_runtime_1.jsx)(common_1.Row,{children:(0,jsx_runtime_1.jsx)(styled_components_1.FullWidthPanel,{children:(0,jsx_runtime_1.jsx)(Schema_1.Schema,{schema:c,level:1,disableDeepLinks:r,slug:s})})})};exports.RedocSchema=RedocSchema;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RedocSchema=void 0;const jsx_runtime_1=require("react/jsx-runtime"),jotai_1=require("jotai"),models_1=require("../../models"),common_1=require("../common"),styled_components_1=require("./styled.components"),Schema_1=require("../Schema"),store_1=require("../../jotai/store"),RedocSchema=({pointer:e,schema:o,disableDeepLinks:r,slug:s,onOneOfChange:t})=>{const{options:n,parser:i}=(0,jotai_1.useAtomValue)(store_1.globalStoreAtom),m=o||{$ref:e},c=(0,models_1.getSchema)({parser:i,schemaOrRef:m,pointer:e||"",options:n,deps:{operation:{pointer:"RedocSchema"}}});return(0,jsx_runtime_1.jsx)(common_1.Row,{children:(0,jsx_runtime_1.jsx)(styled_components_1.FullWidthPanel,{children:(0,jsx_runtime_1.jsx)(Schema_1.Schema,{schema:c,level:1,disableDeepLinks:r,slug:s,onOneOfChange:t})})})};exports.RedocSchema=RedocSchema;
2
2
  //# sourceMappingURL=RedocSchema.js.map
package/lib/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export type { IMenuItem } from './services/types';
3
3
  export type { OperationModel, SchemaModel, ContentItemModel, GroupModel, FieldModel, } from './models/types';
4
4
  export type { CodeSampleOptions } from './models/code-sample-options';
5
5
  export type { SecurityDetails, OpenAPIDefinition, OpenAPIOperation, OpenAPIParameterLocation, OpenAPISchema, } from './types';
6
+ export type { OneOfChangeParams } from './components/Schema';
6
7
  export type { ServerListProps } from './components/ServerList/types';
7
8
  export type { DownloadUrlsConfig, DownloadIconType, UseDownloadInfoProps, UseDownloadInfoReturnType, } from './components/Download/types';
8
9
  export { simplifyAstStructure } from './utils/simplifyAstStructure';
@@ -1,4 +1,4 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import styled from"styled-components";import{useAtomValue}from"jotai";import{Schema}from"../Schema";import{FieldDetails}from"./FieldDetails";import{generateDeepLink}from"../common/LinkToField";import{activeMimeNameAtom}from"../../jotai/app";function PropertyDetailsComponent({field:e,skipWriteOnly:i,skipReadOnly:r,level:s=1,showTitle:t,renderDiscriminatorSwitch:a,isFirst:o,fieldParentsName:n,disableDeepLinks:m,oneOfLevel:p,slug:l}){const d=useAtomValue(activeMimeNameAtom),c=m?void 0:generateDeepLink(e,d),h=l&&c?`${l}&${c.replace("#","")}`:c,y=!e.schema.isPrimitive&&!e.schema.isCircular;return _jsxs(Wrapper,{isFist:o,expanded:y,className:"property",children:[_jsx(FieldDetails,{field:e,renderDiscriminatorSwitch:a,deepLink:h,fieldParentsName:n}),y&&_jsx(Schema,{schema:e.schema,skipReadOnly:r,skipWriteOnly:i,showTitle:t,expandable:!0,level:s+1,fieldParentsName:[...n||[],e.name],deepLink:h,required:e.required,disableDeepLinks:m,oneOfLevel:p,slug:l})]})}export const PropertyDetails=memo(PropertyDetailsComponent);const Wrapper=styled.div`
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import styled from"styled-components";import{useAtomValue}from"jotai";import{Schema}from"../Schema";import{FieldDetails}from"./FieldDetails";import{generateDeepLink}from"../common/LinkToField";import{activeMimeNameAtom}from"../../jotai/app";function PropertyDetailsComponent({field:e,skipWriteOnly:i,skipReadOnly:r,level:s=1,showTitle:a,renderDiscriminatorSwitch:t,isFirst:o,fieldParentsName:n,disableDeepLinks:m,oneOfLevel:p,slug:l,onOneOfChange:d}){const c=useAtomValue(activeMimeNameAtom),h=m?void 0:generateDeepLink(e,c),f=l&&h?`${l}&${h.replace("#","")}`:h,y=!e.schema.isPrimitive&&!e.schema.isCircular;return _jsxs(Wrapper,{isFist:o,expanded:y,className:"property",children:[_jsx(FieldDetails,{field:e,renderDiscriminatorSwitch:t,deepLink:f,fieldParentsName:n}),y&&_jsx(Schema,{schema:e.schema,skipReadOnly:r,skipWriteOnly:i,showTitle:a,expandable:!0,level:s+1,fieldParentsName:[...n||[],e.name],deepLink:f,required:e.required,disableDeepLinks:m,oneOfLevel:p,slug:l,onOneOfChange:d})]})}export const PropertyDetails=memo(PropertyDetailsComponent);const Wrapper=styled.div`
2
2
  width: 100%;
3
3
  padding: ${({isFist:e})=>`var(--schema-${e?"fist-":""}property-details-spacing)`} 0
4
4
  ${({expanded:e})=>e?0:"var(--schema-property-details-spacing)"};
@@ -1,6 +1,6 @@
1
1
  import type { TFunction } from '@redocly/theme';
2
2
  import type { ReactElement } from 'react';
3
- import type { SchemaOptions } from '../Schema';
3
+ import type { SchemaOptions, OneOfChangeParams } from '../Schema';
4
4
  import type { FieldModel } from '../../models';
5
5
  export interface EnumValuesProps {
6
6
  values?: string[] | {
@@ -44,4 +44,5 @@ export interface FieldProps extends SchemaOptions {
44
44
  fieldParentsName?: string[];
45
45
  disableDeepLinks?: boolean;
46
46
  oneOfLevel?: number;
47
+ onOneOfChange?: ({ pointer, index }: OneOfChangeParams) => void;
47
48
  }
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,r){var a={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&r.indexOf(l)<0&&(a[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var t=0;for(l=Object.getOwnPropertySymbols(e);t<l.length;t++)r.indexOf(l[t])<0&&Object.prototype.propertyIsEnumerable.call(e,l[t])&&(a[l[t]]=e[l[t]])}return a};import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";import{memo,useCallback}from"react";import{useAtomValue}from"jotai";import{TypeName}from"../common";import{Schema}from"./Schema";import{ObjectSchema}from"./ObjectSchema";import{humanizeConstraints}from"../../utils";import{SubSchema}from"./SubSchema";import{globalOptionsAtom}from"../../jotai/store";import{getExpandByDefault}from"./helpers";import{ArrayLabel,LabelValue,ArrayClosingLabel}from"../common/styled";function ArraySchemaComponent(e){var r,a,{schema:l,schema:{minItems:t,maxItems:n,items:s},fieldParentsName:o}=e,i=__rest(e,["schema","schema","fieldParentsName"]);const{schemasExpansionLevel:m}=useAtomValue(globalOptionsAtom),c=Array.isArray(i.parentType)?i.parentType:[i.parentType],p=c.includes("array")&&1===c.length,d=p?(i.level||0)+1:i.level,y=void 0===t&&void 0===n?"":`(${humanizeConstraints(l)})`;let h=o?[...o.slice(0,-1),o[o.length-1]+"[]"]:o;const u=useCallback((e=>i.skipReadOnly||i.skipWriteOnly?null==e?void 0:e.filter((e=>!(i.skipReadOnly&&e.schema.readOnly||i.skipWriteOnly&&e.schema.writeOnly))):e),[i.skipReadOnly,i.skipWriteOnly]);if(null==l?void 0:l.fields)return _jsx(ObjectSchema,Object.assign({},i,{shouldCloseArray:p,level:d,schema:l,fieldParentsName:h}));if(l.displayType&&!s&&!y.length)return _jsx("div",{children:_jsx(TypeName,{children:l.displayType})});const f=u(null==s?void 0:s.fields),b=u(null===(a=null===(r=null==s?void 0:s.oneOf)||void 0===r?void 0:r[0])||void 0===a?void 0:a.fields),v=(null==f?void 0:f.length)||(null==b?void 0:b.length),j=1===i.level,x=getExpandByDefault({level:i.level,required:i.required,schemasExpansionLevel:m});return _jsx(SubSchema,Object.assign({},i,{propertyLength:v,isNestedArray:p,level:d,isArray:!0,expandable:!j,expandByDefault:x,operationPointer:l.operationPointer,children:_jsxs(_Fragment,{children:[j&&_jsx(ArrayLabel,{children:_jsx(LabelValue,{children:"Array ["})}),_jsx(Schema,Object.assign({},i,{parentType:j?void 0:l.type,level:d,schema:s,shouldCloseArray:p,fieldParentsName:h,expandable:!1})),j&&_jsx(ArrayClosingLabel,{className:"array-closing-label",children:_jsx(LabelValue,{children:"]"})})]})}))}export const ArraySchema=memo(ArraySchemaComponent);
1
+ var __rest=this&&this.__rest||function(e,a){var r={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&a.indexOf(l)<0&&(r[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(l=Object.getOwnPropertySymbols(e);n<l.length;n++)a.indexOf(l[n])<0&&Object.prototype.propertyIsEnumerable.call(e,l[n])&&(r[l[n]]=e[l[n]])}return r};import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";import{memo,useCallback}from"react";import{useAtomValue}from"jotai";import{TypeName}from"../common";import{Schema}from"./Schema";import{ObjectSchema}from"./ObjectSchema";import{humanizeConstraints}from"../../utils";import{SubSchema}from"./SubSchema";import{globalOptionsAtom}from"../../jotai/store";import{getExpandByDefault}from"./helpers";import{ArrayLabel,LabelValue,ArrayClosingLabel}from"../common/styled";function ArraySchemaComponent(e){var a,r,{schema:l,schema:{minItems:n,maxItems:t,items:s},fieldParentsName:o}=e,i=__rest(e,["schema","schema","fieldParentsName"]);const{schemasExpansionLevel:m}=useAtomValue(globalOptionsAtom),c=Array.isArray(i.parentType)?i.parentType:[i.parentType],p=c.includes("array")&&1===c.length,d=p?(i.level||0)+1:i.level,h=void 0===n&&void 0===t?"":`(${humanizeConstraints(l)})`;let y=o?[...o.slice(0,-1),o[o.length-1]+"[]"]:o;const u=useCallback((e=>i.skipReadOnly||i.skipWriteOnly?null==e?void 0:e.filter((e=>!(i.skipReadOnly&&e.schema.readOnly||i.skipWriteOnly&&e.schema.writeOnly))):e),[i.skipReadOnly,i.skipWriteOnly]);if(null==l?void 0:l.fields)return _jsx(ObjectSchema,Object.assign({},i,{shouldCloseArray:p,level:d,schema:l,fieldParentsName:y,onOneOfChange:i.onOneOfChange}));if(l.displayType&&!s&&!h.length)return _jsx("div",{children:_jsx(TypeName,{children:l.displayType})});const f=u(null==s?void 0:s.fields),O=u(null===(r=null===(a=null==s?void 0:s.oneOf)||void 0===a?void 0:a[0])||void 0===r?void 0:r.fields),b=(null==f?void 0:f.length)||(null==O?void 0:O.length),v=1===i.level,j=getExpandByDefault({level:i.level,required:i.required,schemasExpansionLevel:m});return _jsx(SubSchema,Object.assign({},i,{propertyLength:b,isNestedArray:p,level:d,isArray:!0,expandable:!v,expandByDefault:j,operationPointer:l.operationPointer,children:_jsxs(_Fragment,{children:[v&&_jsx(ArrayLabel,{children:_jsx(LabelValue,{children:"Array ["})}),_jsx(Schema,Object.assign({},i,{parentType:v?void 0:l.type,level:d,schema:s,shouldCloseArray:p,fieldParentsName:y,expandable:!1,onOneOfChange:i.onOneOfChange})),v&&_jsx(ArrayClosingLabel,{className:"array-closing-label",children:_jsx(LabelValue,{children:"]"})})]})}))}export const ArraySchema=memo(ArraySchemaComponent);
2
2
  //# sourceMappingURL=ArraySchema.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import{useAtomValue}from"jotai";import{PropertiesTableCaption}from"../common";import{Discriminator}from"../Discriminator";import{globalOptionsAtom}from"../../jotai/store";import{PropertyDetails}from"../PropertyDetails";import{SubSchema}from"./SubSchema";import{getExpandByDefault}from"./helpers";import{useTranslate}from"../../hooks";import{ArrayClosingLabel,LabelValue}from"../common/styled";function ObjectSchemaComponent({schema:e,showTitle:a,discriminator:r,level:i,skipWriteOnly:o,skipReadOnly:t,fieldParentsName:n,expandable:l,deepLink:s,required:m,disableDeepLinks:p,shouldCloseArray:c,oneOfLevel:d,slug:h}){const{fields:u=[],title:f}=e,x=useTranslate(),{schemasExpansionLevel:b}=useAtomValue(globalOptionsAtom),y=t||o?u.filter((e=>!(t&&e.schema.readOnly||o&&e.schema.writeOnly))):u,j=getExpandByDefault({required:m,level:i,schemasExpansionLevel:b});return _jsxs(SubSchema,{expandable:l,expandByDefault:j,level:i,propertyLength:y.length,deepLink:s,operationPointer:e.operationPointer,children:[_jsxs(_Fragment,{children:[a&&_jsx(PropertiesTableCaption,{children:f}),y.map(((e,l)=>_jsx(PropertyDetails,{isFirst:0===l,field:e,fieldParentsName:Number(i)>1?n:[],renderDiscriminatorSwitch:(null==r?void 0:r.fieldName)===e.name&&(null==r?void 0:r.parentSchema)?()=>_jsx(Discriminator,{parent:r.parentSchema,onChange:null==r?void 0:r.onChange,activeOneOfIdx:r.activeOneOfIdx,translate:x}):void 0,skipReadOnly:t,skipWriteOnly:o,showTitle:a,level:i,disableDeepLinks:p,oneOfLevel:d,slug:h},e.name)))]}),c&&_jsx(ArrayClosingLabel,{className:"array-closing-label",children:_jsx(LabelValue,{children:"]"})})]})}export const ObjectSchema=memo(ObjectSchemaComponent);
1
+ import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import{useAtomValue}from"jotai";import{PropertiesTableCaption}from"../common";import{Discriminator}from"../Discriminator";import{globalOptionsAtom}from"../../jotai/store";import{PropertyDetails}from"../PropertyDetails";import{SubSchema}from"./SubSchema";import{getExpandByDefault}from"./helpers";import{useTranslate}from"../../hooks";import{ArrayClosingLabel,LabelValue}from"../common/styled";function ObjectSchemaComponent({schema:e,showTitle:a,discriminator:r,level:o,skipWriteOnly:i,skipReadOnly:n,fieldParentsName:t,expandable:l,deepLink:s,required:m,disableDeepLinks:p,shouldCloseArray:c,oneOfLevel:d,slug:h,onOneOfChange:f}){const{fields:u=[],title:x}=e,O=useTranslate(),{schemasExpansionLevel:b}=useAtomValue(globalOptionsAtom),g=n||i?u.filter((e=>!(n&&e.schema.readOnly||i&&e.schema.writeOnly))):u,y=getExpandByDefault({required:m,level:o,schemasExpansionLevel:b});return _jsxs(SubSchema,{expandable:l,expandByDefault:y,level:o,propertyLength:g.length,deepLink:s,operationPointer:e.operationPointer,children:[_jsxs(_Fragment,{children:[a&&_jsx(PropertiesTableCaption,{children:x}),g.map(((e,l)=>_jsx(PropertyDetails,{isFirst:0===l,field:e,fieldParentsName:Number(o)>1?t:[],renderDiscriminatorSwitch:(null==r?void 0:r.fieldName)===e.name&&(null==r?void 0:r.parentSchema)?()=>_jsx(Discriminator,{parent:r.parentSchema,onChange:null==r?void 0:r.onChange,activeOneOfIdx:r.activeOneOfIdx,translate:O}):void 0,skipReadOnly:n,skipWriteOnly:i,showTitle:a,level:o,disableDeepLinks:p,oneOfLevel:d,slug:h,onOneOfChange:f},e.name)))]}),c&&_jsx(ArrayClosingLabel,{className:"array-closing-label",children:_jsx(LabelValue,{children:"]"})})]})}export const ObjectSchema=memo(ObjectSchemaComponent);
2
2
  //# sourceMappingURL=ObjectSchema.js.map
@@ -1,2 +1,11 @@
1
- import type { SchemaProps } from './types';
2
- export declare const OneOfSchema: import("react").NamedExoticComponent<SchemaProps>;
1
+ import type { OneOfChangeParams, SchemaProps } from './types';
2
+ import type { SchemaModel } from '../../models';
3
+ interface OneOfSchemaProps extends SchemaProps {
4
+ schema: SchemaModel & {
5
+ oneOf: SchemaModel[];
6
+ };
7
+ oneOfLevel?: number;
8
+ onChange?: (params: OneOfChangeParams) => void;
9
+ }
10
+ export declare const OneOfSchema: import("react").NamedExoticComponent<OneOfSchemaProps>;
11
+ export {};
@@ -1,4 +1,4 @@
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)`
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{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 o,{schema:{oneOf:t},schema:n,onChange:r,oneOfLevel:i=1}=e,a=__rest(e,["schema","schema","onChange","oneOfLevel"]);const s=useTranslate(),[c,m]=useAtom(operationStore(n.operationPointer)),l=useOneOfLocationIdx(t,i),p=-1===l?0:l,d=t[void 0!==(null===(o=c.activeOneOf)||void 0===o?void 0:o[n.pointer])?c.activeOneOf[n.pointer]:p];if(!d)return null;const f=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:f,onChange:e=>{var o,t;null==r||r({pointer:n.pointer,index:e}),m({activeExampleName:null===(t=null===(o=n.oneOf)||void 0===o?void 0:o[e])||void 0===t?void 0:t.title,activeOneOf:{[n.pointer]:e},requestValues:{body:null}})},pointer:n.operationPointer,schema:n,defaultOneOfIdx:p}),d.deprecated&&_jsx(StyledBadge,{deprecated:!0,children:s("openapi.badges.deprecated","Deprecated")}),d.description&&_jsx(StyledDescription,{source:d.description}),_jsx(ConstraintsView,{constraints:d.constraints}),_jsx(Schema,Object.assign({},a,{schema:d,oneOfLevel:i+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,4 +1,4 @@
1
- var __rest=this&&this.__rest||function(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(o=Object.getOwnPropertySymbols(e);i<o.length;i++)r.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(t[o[i]]=e[o[i]])}return t};import{jsx as _jsx}from"react/jsx-runtime";import{memo}from"react";import{useAtomValue}from"jotai";import{useLocation}from"react-router-dom";import styled from"styled-components";import{ArraySchema}from"./ArraySchema";import{ObjectSchema}from"./ObjectSchema";import{OneOfSchema}from"./OneOfSchema";import{RecursiveSchema}from"./RecursiveSchema";import{operationStore}from"../../jotai/operation";import{FieldDetails}from"../PropertyDetails";import{pathIncludesLink}from"../../utils";function SchemaComponent(e){var r,{schema:t,onDiscriminatorChange:o}=e,i=__rest(e,["schema","onDiscriminatorChange"]);const{activeOneOf:n}=useAtomValue(operationStore((null==t?void 0:t.operationPointer)||"")),a=useLocation();if(!t)return null;const{type:s,oneOf:c,discriminatorProp:m,isCircular:l}=t;if(l)return _jsx(RecursiveSchema,{schema:t});if(void 0!==m){if(!c||!c.length)return console.warn(`Looks like you are using discriminator wrong: you don't have any definition inherited from the ${t.title}`),null;const e=c.findIndex(((e,r)=>pathIncludesLink(a,`d=${r}`))),r=-1===e?0:e,s=c[void 0!==n[t.pointer]?n[t.pointer]:r];return(null==s?void 0:s.isCircular)?_jsx(RecursiveSchema,{schema:s}):_jsx(ObjectSchema,Object.assign({},i,{schema:s,discriminator:{fieldName:m,parentSchema:t,activeOneOfIdx:r,onChange:o}}))}if(void 0!==c&&c.length>1)return _jsx(OneOfSchema,Object.assign({},i,{schema:t}));const p=Array.isArray(s)?s:[s];if(p.includes("object")){if(null===(r=t.fields)||void 0===r?void 0:r.length)return _jsx(ObjectSchema,Object.assign({},i,{schema:t}))}else if(p.includes("array"))return _jsx(ArraySchema,Object.assign({},i,{schema:t}));const d={schema:t,name:"",description:t.description,required:!1,deprecated:!1};return _jsx(Wrapper,{children:_jsx(FieldDetails,{field:d,fieldParentsName:i.fieldParentsName})})}export const Schema=memo(SchemaComponent);const Wrapper=styled.div`
1
+ var __rest=this&&this.__rest||function(e,r){var o={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.indexOf(t)<0&&(o[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(t=Object.getOwnPropertySymbols(e);n<t.length;n++)r.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(o[t[n]]=e[t[n]])}return o};import{jsx as _jsx}from"react/jsx-runtime";import{memo}from"react";import{useAtomValue}from"jotai";import{useLocation}from"react-router-dom";import styled from"styled-components";import{ArraySchema}from"./ArraySchema";import{ObjectSchema}from"./ObjectSchema";import{OneOfSchema}from"./OneOfSchema";import{RecursiveSchema}from"./RecursiveSchema";import{operationStore}from"../../jotai/operation";import{FieldDetails}from"../PropertyDetails";import{pathIncludesLink}from"../../utils";function SchemaComponent(e){var r,{schema:o,onDiscriminatorChange:t,onOneOfChange:n}=e,i=__rest(e,["schema","onDiscriminatorChange","onOneOfChange"]);const{activeOneOf:a}=useAtomValue(operationStore((null==o?void 0:o.operationPointer)||"")),s=useLocation();if(!o)return null;const{type:c,oneOf:m,discriminatorProp:l,isCircular:h}=o;if(h)return _jsx(RecursiveSchema,{schema:o});if(void 0!==l){if(!m||!m.length)return console.warn(`Looks like you are using discriminator wrong: you don't have any definition inherited from the ${o.title}`),null;const e=m.findIndex(((e,r)=>pathIncludesLink(s,`d=${r}`))),r=-1===e?0:e,c=m[void 0!==a[o.pointer]?a[o.pointer]:r];return(null==c?void 0:c.isCircular)?_jsx(RecursiveSchema,{schema:c}):_jsx(ObjectSchema,Object.assign({},i,{schema:c,discriminator:{fieldName:l,parentSchema:o,activeOneOfIdx:r,onChange:t},onOneOfChange:n}))}if(void 0!==m&&m.length>1)return _jsx(OneOfSchema,Object.assign({},i,{schema:o,onChange:n}));const p=Array.isArray(c)?c:[c];if(p.includes("object")){if(null===(r=o.fields)||void 0===r?void 0:r.length)return _jsx(ObjectSchema,Object.assign({},i,{schema:o,onOneOfChange:n}))}else if(p.includes("array"))return _jsx(ArraySchema,Object.assign({},i,{schema:o,onOneOfChange:n}));const f={schema:o,name:"",description:o.description,required:!1,deprecated:!1};return _jsx(Wrapper,{children:_jsx(FieldDetails,{field:f,fieldParentsName:i.fieldParentsName})})}export const Schema=memo(SchemaComponent);const Wrapper=styled.div`
2
2
  width: 100%;
3
3
  padding: var(--spacing-xxs) 0;
4
4
  border-bottom: 1px solid var(--border-color-primary);
@@ -2,4 +2,4 @@ export { Schema } from './Schema';
2
2
  export { ObjectSchema } from './ObjectSchema';
3
3
  export { OneOfSchema } from './OneOfSchema';
4
4
  export { ArraySchema } from './ArraySchema';
5
- export type { SchemaOptions } from './types';
5
+ export type { SchemaOptions, OneOfChangeParams } from './types';
@@ -13,6 +13,7 @@ export interface SchemaProps extends SchemaOptions {
13
13
  schema: SchemaModel;
14
14
  parentType?: string[] | string;
15
15
  onDiscriminatorChange?: (idx: number) => void;
16
+ onOneOfChange?: (params: OneOfChangeParams) => void;
16
17
  fieldParentsName?: string[];
17
18
  expandable?: boolean;
18
19
  deepLink?: string;
@@ -35,4 +36,9 @@ export interface ObjectSchemaProps extends Omit<SchemaProps, 'onDiscriminatorCha
35
36
  slug?: string;
36
37
  oneOfLevel?: number;
37
38
  shouldCloseArray?: boolean;
39
+ onOneOfChange?: (params: OneOfChangeParams) => void;
40
+ }
41
+ export interface OneOfChangeParams {
42
+ pointer: string;
43
+ index: number;
38
44
  }
@@ -1,10 +1,12 @@
1
1
  import type { ReactElement } from 'react';
2
2
  import type { OpenAPISchema } from '../../types';
3
+ import type { OneOfChangeParams } from '../Schema';
3
4
  interface RedocSchemaProps {
4
5
  pointer?: string;
5
6
  schema?: OpenAPISchema;
6
7
  disableDeepLinks?: boolean;
7
8
  slug?: string;
9
+ onOneOfChange?: ({ pointer, index }: OneOfChangeParams) => void;
8
10
  }
9
- export declare const RedocSchema: ({ pointer, schema, disableDeepLinks, slug, }: RedocSchemaProps) => ReactElement;
11
+ export declare const RedocSchema: ({ pointer, schema, disableDeepLinks, slug, onOneOfChange, }: RedocSchemaProps) => ReactElement;
10
12
  export {};
@@ -1,2 +1,2 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import{useAtomValue}from"jotai";import{getSchema}from"../../models";import{Row}from"../common";import{FullWidthPanel}from"./styled.components";import{Schema}from"../Schema";import{globalStoreAtom}from"../../jotai/store";export const RedocSchema=({pointer:e,schema:o,disableDeepLinks:r,slug:t})=>{const{options:m,parser:s}=useAtomValue(globalStoreAtom),a=getSchema({parser:s,schemaOrRef:o||{$ref:e},pointer:e||"",options:m,deps:{operation:{pointer:"RedocSchema"}}});return _jsx(Row,{children:_jsx(FullWidthPanel,{children:_jsx(Schema,{schema:a,level:1,disableDeepLinks:r,slug:t})})})};
1
+ import{jsx as _jsx}from"react/jsx-runtime";import{useAtomValue}from"jotai";import{getSchema}from"../../models";import{Row}from"../common";import{FullWidthPanel}from"./styled.components";import{Schema}from"../Schema";import{globalStoreAtom}from"../../jotai/store";export const RedocSchema=({pointer:e,schema:o,disableDeepLinks:r,slug:t,onOneOfChange:m})=>{const{options:s,parser:a}=useAtomValue(globalStoreAtom),n=getSchema({parser:a,schemaOrRef:o||{$ref:e},pointer:e||"",options:s,deps:{operation:{pointer:"RedocSchema"}}});return _jsx(Row,{children:_jsx(FullWidthPanel,{children:_jsx(Schema,{schema:n,level:1,disableDeepLinks:r,slug:t,onOneOfChange:m})})})};
2
2
  //# sourceMappingURL=RedocSchema.js.map
@@ -3,6 +3,7 @@ export type { IMenuItem } from './services/types';
3
3
  export type { OperationModel, SchemaModel, ContentItemModel, GroupModel, FieldModel, } from './models/types';
4
4
  export type { CodeSampleOptions } from './models/code-sample-options';
5
5
  export type { SecurityDetails, OpenAPIDefinition, OpenAPIOperation, OpenAPIParameterLocation, OpenAPISchema, } from './types';
6
+ export type { OneOfChangeParams } from './components/Schema';
6
7
  export type { ServerListProps } from './components/ServerList/types';
7
8
  export type { DownloadUrlsConfig, DownloadIconType, UseDownloadInfoProps, UseDownloadInfoReturnType, } from './components/Download/types';
8
9
  export { simplifyAstStructure } from './utils/simplifyAstStructure';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.11.0-next.4",
3
+ "version": "3.11.0-next.5",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -45,8 +45,8 @@
45
45
  "url-template": "^2.0.8",
46
46
  "util": "~0.12.5",
47
47
  "web-vitals": "3.3.1",
48
- "@redocly/config": "0.26.1",
49
- "@redocly/replay": "0.14.0-next.4"
48
+ "@redocly/config": "0.26.2",
49
+ "@redocly/replay": "0.14.0-next.5"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@shikijs/transformers": "1.24.0",
@@ -92,7 +92,7 @@
92
92
  "webpack": "5.94.0",
93
93
  "webpack-cli": "5.1.4",
94
94
  "webpack-dev-server": "5.2.1",
95
- "@redocly/theme": "0.55.0-next.4"
95
+ "@redocly/theme": "0.55.0-next.5"
96
96
  },
97
97
  "scripts": {
98
98
  "start": "npm run copy-highlight-hook && webpack serve --mode=development --hot",