@redocly/openapi-docs 3.0.0-alpha.69 → 3.0.0-alpha.71

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 (176) hide show
  1. package/dist/console.redocly-openapi-docs.min.js +73 -73
  2. package/dist/oauth2-redirect.js +1 -1
  3. package/dist/redocly-openapi-docs.min.js +1178 -1175
  4. package/lib/components/ApiInfo/ApiInfo.js +1 -1
  5. package/lib/components/ContentItems/ContentItems.js +1 -1
  6. package/lib/components/DiscriminatorDropdown/DiscriminatorDropdown.js +1 -1
  7. package/lib/components/Download/DownloadButtonWithLabel.js +1 -1
  8. package/lib/components/Endpoint/Endpoint.js +1 -1
  9. package/lib/components/Fields/EnumValues.js +1 -1
  10. package/lib/components/Fields/Extensions.js +2 -2
  11. package/lib/components/Fields/Field.js +1 -1
  12. package/lib/components/Fields/FieldDetails.js +1 -1
  13. package/lib/components/Markdown/Markdown.js +1 -1
  14. package/lib/components/MediaTypeSwitch/MediaTypesSwitch.js +1 -1
  15. package/lib/components/OperationItem/OperationItem.js +2 -2
  16. package/lib/components/PageFooter/PageFooter.js +1 -1
  17. package/lib/components/PayloadSamples/ExampleValue.js +1 -1
  18. package/lib/components/PayloadSamples/PayloadSamples.js +1 -1
  19. package/lib/components/RedoclyOpenAPIDocs/Providers.d.ts +1 -2
  20. package/lib/components/RedoclyOpenAPIDocs/Providers.js +1 -1
  21. package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
  22. package/lib/components/RequestSamples/RequestSamples.js +1 -1
  23. package/lib/components/RequestSamples/useCodeSamples.js +1 -1
  24. package/lib/components/ResponseSamples/ResponseSamples.js +1 -1
  25. package/lib/components/Responses/OperationResponseList.js +1 -1
  26. package/lib/components/Samples/SamplesTabs.js +1 -1
  27. package/lib/components/Samples/use-example-key.js +1 -1
  28. package/lib/components/Schema/ObjectSchema.js +1 -1
  29. package/lib/components/Schema/OneOfSchema.js +1 -1
  30. package/lib/components/Schema/Schema.js +1 -1
  31. package/lib/components/SchemaDefinition/SchemaDefinition.js +1 -1
  32. package/lib/components/Search/MenuItemSearch.js +1 -1
  33. package/lib/components/Search/utils.js +1 -1
  34. package/lib/components/SectionContent/SectionContent.js +1 -1
  35. package/lib/components/SecurityRequirement/SecurityDefs.js +1 -1
  36. package/lib/components/SecurityRequirement/SecurityRequirement.js +1 -1
  37. package/lib/components/SideMenu/Actions.js +1 -1
  38. package/lib/components/SideMenu/MenuItems.js +1 -1
  39. package/lib/components/SideMenu/MenuOperationItemContent.js +2 -2
  40. package/lib/components/SideMenu/SideMenu.js +1 -1
  41. package/lib/components/StickySidebar/StickyResponsiveSidebar.js +2 -2
  42. package/lib/components/Tabs/CollapsingTabs/CollapsingTabs.js +1 -1
  43. package/lib/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
  44. package/lib/components/TagItems/TagItems.js +1 -1
  45. package/lib/components/VersionSwitcher.d.ts +1 -1
  46. package/lib/components/common/linkify.js +1 -1
  47. package/lib/components/common/perfect-scrollbar.js +2 -2
  48. package/lib/components/pluggable/RedocExample.js +1 -1
  49. package/lib/components/pluggable/RedocRequestBody.js +1 -1
  50. package/lib/components/pluggable/RedocResponse.js +1 -1
  51. package/lib/components/pluggable/RedocSchema.js +1 -1
  52. package/lib/components/rightPanel/AuthPanel/AuthPanel.js +1 -1
  53. package/lib/components/rightPanel/Console/Console.js +1 -1
  54. package/lib/components/rightPanel/Console/ConsoleWrapper.js +1 -1
  55. package/lib/components/rightPanel/Console/Request.js +1 -1
  56. package/lib/components/rightPanel/OAuth2Flow/OAuth2Flow.js +1 -1
  57. package/lib/components/rightPanel/RequestBody/RequestBody.js +1 -1
  58. package/lib/components/rightPanel/RequestBodyForm.js +1 -1
  59. package/lib/components/rightPanel/ResponseBody.js +1 -1
  60. package/lib/components/rightPanel/ResponseHeadersList.js +1 -1
  61. package/lib/components/rightPanel/ServersDropdown/ServersDropdown.js +1 -1
  62. package/lib/components/rightPanel/utils.js +1 -1
  63. package/lib/events/codeSampleCopy.js +1 -1
  64. package/lib/hoc/types.d.ts +1 -1
  65. package/lib/hoc/withStore.js +1 -1
  66. package/lib/hooks/useActivateExample.js +1 -1
  67. package/lib/hooks/useContentItems.js +1 -1
  68. package/lib/index.d.ts +0 -1
  69. package/lib/index.js +1 -1
  70. package/lib/jotai/app.d.ts +38 -0
  71. package/lib/jotai/app.js +2 -0
  72. package/lib/jotai/nexus.d.ts +5 -0
  73. package/lib/jotai/nexus.js +2 -0
  74. package/lib/jotai/operation.d.ts +15 -0
  75. package/lib/jotai/operation.js +2 -0
  76. package/lib/{recoil → jotai}/store.d.ts +6 -4
  77. package/lib/jotai/store.js +2 -0
  78. package/lib/models/mediaContent.js +1 -1
  79. package/lib/services/search/DeepSearchStore.js +1 -1
  80. package/lib/services/types.d.ts +2 -2
  81. package/lib/standalone.d.ts +1 -1
  82. package/lib/standalone.js +1 -1
  83. package/lib-esm/components/ApiInfo/ApiInfo.js +1 -1
  84. package/lib-esm/components/ContentItems/ContentItems.js +1 -1
  85. package/lib-esm/components/DiscriminatorDropdown/DiscriminatorDropdown.js +1 -1
  86. package/lib-esm/components/Download/DownloadButtonWithLabel.js +1 -1
  87. package/lib-esm/components/Endpoint/Endpoint.js +1 -1
  88. package/lib-esm/components/Fields/EnumValues.js +1 -1
  89. package/lib-esm/components/Fields/Extensions.js +2 -2
  90. package/lib-esm/components/Fields/Field.js +1 -1
  91. package/lib-esm/components/Fields/FieldDetails.js +1 -1
  92. package/lib-esm/components/Markdown/Markdown.js +1 -1
  93. package/lib-esm/components/MediaTypeSwitch/MediaTypesSwitch.js +1 -1
  94. package/lib-esm/components/OperationItem/OperationItem.js +2 -2
  95. package/lib-esm/components/PageFooter/PageFooter.js +1 -1
  96. package/lib-esm/components/PayloadSamples/ExampleValue.js +1 -1
  97. package/lib-esm/components/PayloadSamples/PayloadSamples.js +1 -1
  98. package/lib-esm/components/RedoclyOpenAPIDocs/Providers.d.ts +1 -2
  99. package/lib-esm/components/RedoclyOpenAPIDocs/Providers.js +1 -1
  100. package/lib-esm/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
  101. package/lib-esm/components/RequestSamples/RequestSamples.js +1 -1
  102. package/lib-esm/components/RequestSamples/useCodeSamples.js +1 -1
  103. package/lib-esm/components/ResponseSamples/ResponseSamples.js +1 -1
  104. package/lib-esm/components/Responses/OperationResponseList.js +1 -1
  105. package/lib-esm/components/Samples/SamplesTabs.js +1 -1
  106. package/lib-esm/components/Samples/use-example-key.js +1 -1
  107. package/lib-esm/components/Schema/ObjectSchema.js +1 -1
  108. package/lib-esm/components/Schema/OneOfSchema.js +1 -1
  109. package/lib-esm/components/Schema/Schema.js +1 -1
  110. package/lib-esm/components/SchemaDefinition/SchemaDefinition.js +1 -1
  111. package/lib-esm/components/Search/MenuItemSearch.js +1 -1
  112. package/lib-esm/components/Search/utils.js +1 -1
  113. package/lib-esm/components/SectionContent/SectionContent.js +1 -1
  114. package/lib-esm/components/SecurityRequirement/SecurityDefs.js +1 -1
  115. package/lib-esm/components/SecurityRequirement/SecurityRequirement.js +1 -1
  116. package/lib-esm/components/SideMenu/Actions.js +1 -1
  117. package/lib-esm/components/SideMenu/MenuItems.js +1 -1
  118. package/lib-esm/components/SideMenu/MenuOperationItemContent.js +2 -2
  119. package/lib-esm/components/SideMenu/SideMenu.js +1 -1
  120. package/lib-esm/components/StickySidebar/StickyResponsiveSidebar.js +2 -2
  121. package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabs.js +1 -1
  122. package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
  123. package/lib-esm/components/TagItems/TagItems.js +1 -1
  124. package/lib-esm/components/VersionSwitcher.d.ts +1 -1
  125. package/lib-esm/components/common/linkify.js +1 -1
  126. package/lib-esm/components/common/perfect-scrollbar.js +2 -2
  127. package/lib-esm/components/pluggable/RedocExample.js +1 -1
  128. package/lib-esm/components/pluggable/RedocRequestBody.js +1 -1
  129. package/lib-esm/components/pluggable/RedocResponse.js +1 -1
  130. package/lib-esm/components/pluggable/RedocSchema.js +1 -1
  131. package/lib-esm/components/rightPanel/AuthPanel/AuthPanel.js +1 -1
  132. package/lib-esm/components/rightPanel/Console/Console.js +1 -1
  133. package/lib-esm/components/rightPanel/Console/ConsoleWrapper.js +1 -1
  134. package/lib-esm/components/rightPanel/Console/Request.js +1 -1
  135. package/lib-esm/components/rightPanel/OAuth2Flow/OAuth2Flow.js +1 -1
  136. package/lib-esm/components/rightPanel/RequestBody/RequestBody.js +1 -1
  137. package/lib-esm/components/rightPanel/RequestBodyForm.js +1 -1
  138. package/lib-esm/components/rightPanel/ResponseBody.js +1 -1
  139. package/lib-esm/components/rightPanel/ResponseHeadersList.js +1 -1
  140. package/lib-esm/components/rightPanel/ServersDropdown/ServersDropdown.js +1 -1
  141. package/lib-esm/components/rightPanel/utils.js +1 -1
  142. package/lib-esm/events/codeSampleCopy.js +1 -1
  143. package/lib-esm/hoc/types.d.ts +1 -1
  144. package/lib-esm/hoc/withStore.js +1 -1
  145. package/lib-esm/hooks/useActivateExample.js +1 -1
  146. package/lib-esm/hooks/useContentItems.js +1 -1
  147. package/lib-esm/index.d.ts +0 -1
  148. package/lib-esm/index.js +1 -1
  149. package/lib-esm/jotai/app.d.ts +38 -0
  150. package/lib-esm/jotai/app.js +2 -0
  151. package/lib-esm/jotai/nexus.d.ts +5 -0
  152. package/lib-esm/jotai/nexus.js +2 -0
  153. package/lib-esm/jotai/operation.d.ts +15 -0
  154. package/lib-esm/jotai/operation.js +2 -0
  155. package/lib-esm/{recoil → jotai}/store.d.ts +6 -4
  156. package/lib-esm/jotai/store.js +2 -0
  157. package/lib-esm/models/mediaContent.js +1 -1
  158. package/lib-esm/services/search/DeepSearchStore.js +1 -1
  159. package/lib-esm/services/types.d.ts +2 -2
  160. package/lib-esm/standalone.d.ts +1 -1
  161. package/lib-esm/standalone.js +1 -1
  162. package/package.json +3 -3
  163. package/lib/recoil/app.d.ts +0 -36
  164. package/lib/recoil/app.js +0 -2
  165. package/lib/recoil/nexus.d.ts +0 -6
  166. package/lib/recoil/nexus.js +0 -2
  167. package/lib/recoil/operation.d.ts +0 -11
  168. package/lib/recoil/operation.js +0 -2
  169. package/lib/recoil/store.js +0 -2
  170. package/lib-esm/recoil/app.d.ts +0 -36
  171. package/lib-esm/recoil/app.js +0 -2
  172. package/lib-esm/recoil/nexus.d.ts +0 -6
  173. package/lib-esm/recoil/nexus.js +0 -2
  174. package/lib-esm/recoil/operation.d.ts +0 -11
  175. package/lib-esm/recoil/operation.js +0 -2
  176. package/lib-esm/recoil/store.js +0 -2
@@ -1,2 +1,2 @@
1
- import React from"react";import{useRecoilValue}from"@redocly/recoil";import{getRequestBody,getOperation}from"../../models";import{Row,SamplesMiddlePanel,SamplesPanel}from"../common";import{SamplesWrap,FullWidthPanel}from"./styled.components";import{PayloadSamples}from"../PayloadSamples";import{BodyContent}from"../Parameters";import{globalStoreSelector}from"../../recoil/store";import{layoutSelector}from"../..//recoil/app";export const RedocRequestBody=({pointer:e,hideSamples:t})=>{const{options:o,parser:r}=useRecoilValue(globalStoreSelector),a=useRecoilValue(layoutSelector),l=getOperation(r,{pointer:e,pathName:"",httpVerb:"",pathParameters:[],pathServers:[],isWebhook:!1,responses:{}},void 0,o,""),{content:n,description:m,required:p}=getRequestBody({parser:r,infoOrRef:{$ref:e},options:o,operation:l})||{},c=t?FullWidthPanel:SamplesMiddlePanel;return React.createElement(Row,{layout:a},React.createElement(c,null,n&&React.createElement(BodyContent,{content:n,description:m,required:p})),!t&&React.createElement(SamplesPanel,null,React.createElement(SamplesWrap,null,n&&React.createElement(PayloadSamples,{content:n})))||React.createElement("span",null))};
1
+ import React from"react";import{useAtomValue}from"jotai";import{getRequestBody,getOperation}from"../../models";import{Row,SamplesMiddlePanel,SamplesPanel}from"../common";import{SamplesWrap,FullWidthPanel}from"./styled.components";import{PayloadSamples}from"../PayloadSamples";import{BodyContent}from"../Parameters";import{globalStoreAtom}from"../../jotai/store";import{layoutAtom}from"../../jotai/app";export const RedocRequestBody=({pointer:e,hideSamples:t})=>{const{options:o,parser:a}=useAtomValue(globalStoreAtom),r=useAtomValue(layoutAtom),l=getOperation(a,{pointer:e,pathName:"",httpVerb:"",pathParameters:[],pathServers:[],isWebhook:!1,responses:{}},void 0,o,""),{content:m,description:n,required:p}=getRequestBody({parser:a,infoOrRef:{$ref:e},options:o,operation:l})||{},s=t?FullWidthPanel:SamplesMiddlePanel;return React.createElement(Row,{layout:r},React.createElement(s,null,m&&React.createElement(BodyContent,{content:m,description:n,required:p})),!t&&React.createElement(SamplesPanel,null,React.createElement(SamplesWrap,null,m&&React.createElement(PayloadSamples,{content:m})))||React.createElement("span",null))};
2
2
  //# sourceMappingURL=RedocRequestBody.js.map
@@ -1,2 +1,2 @@
1
- import React from"react";import{useRecoilValue}from"@redocly/recoil";import{getOperation,getResponse}from"../../models";import{Row,SamplesMiddlePanel,SamplesPanel}from"../common";import{FullWidthPanel,SamplesWrap}from"./styled.components";import{ResponseDetails}from"../Responses";import{PayloadSamples}from"../PayloadSamples";import{globalStoreSelector}from"../../recoil/store";import{layoutSelector}from"../../recoil/app";export const RedocResponse=({pointer:e,hideSamples:o})=>{const{options:t,parser:a}=useRecoilValue(globalStoreSelector),l=useRecoilValue(layoutSelector),r=getOperation(a,{pointer:e,pathName:"",httpVerb:"",pathParameters:[],pathServers:[],isWebhook:!1,responses:{}},void 0,t,""),s=getResponse({parser:a,code:"default",defaultAsError:!1,infoOrRef:{$ref:e},options:t,operation:r});s.description=s.summary;const p=o?FullWidthPanel:SamplesMiddlePanel;return React.createElement(Row,{layout:l},React.createElement(p,{style:{paddingBottom:"20px"}},React.createElement(ResponseDetails,{response:s})),!o&&s.content&&React.createElement(SamplesPanel,null,React.createElement(SamplesWrap,null,React.createElement(PayloadSamples,{content:s.content})))||React.createElement("span",null))};
1
+ import React from"react";import{useAtomValue}from"jotai";import{getOperation,getResponse}from"../../models";import{Row,SamplesMiddlePanel,SamplesPanel}from"../common";import{FullWidthPanel,SamplesWrap}from"./styled.components";import{ResponseDetails}from"../Responses";import{PayloadSamples}from"../PayloadSamples";import{globalStoreAtom}from"../../jotai/store";import{layoutAtom}from"../../jotai/app";export const RedocResponse=({pointer:e,hideSamples:t})=>{const{options:o,parser:a}=useAtomValue(globalStoreAtom),r=useAtomValue(layoutAtom),l=getOperation(a,{pointer:e,pathName:"",httpVerb:"",pathParameters:[],pathServers:[],isWebhook:!1,responses:{}},void 0,o,""),s=getResponse({parser:a,code:"default",defaultAsError:!1,infoOrRef:{$ref:e},options:o,operation:l});s.description=s.summary;const m=t?FullWidthPanel:SamplesMiddlePanel;return React.createElement(Row,{layout:r},React.createElement(m,{style:{paddingBottom:"20px"}},React.createElement(ResponseDetails,{response:s})),!t&&s.content&&React.createElement(SamplesPanel,null,React.createElement(SamplesWrap,null,React.createElement(PayloadSamples,{content:s.content})))||React.createElement("span",null))};
2
2
  //# sourceMappingURL=RedocResponse.js.map
@@ -1,2 +1,2 @@
1
- import React from"react";import{useRecoilValue}from"@redocly/recoil";import{getSchema}from"../../models";import{Row}from"../common";import{FullWidthPanel}from"./styled.components";import{Schema}from"../Schema";import{globalStoreSelector}from"../../recoil/store";export const RedocSchema=({pointer:e,schema:o})=>{const{options:r,parser:t}=useRecoilValue(globalStoreSelector),c=getSchema({parser:t,schemaOrRef:o||{$ref:e},pointer:e||"",options:r,deps:{operation:{pointer:"RedocSchema"}}});return React.createElement(Row,null,React.createElement(FullWidthPanel,null,React.createElement(Schema,{schema:c})))};
1
+ import React from"react";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})=>{const{options:t,parser:m}=useAtomValue(globalStoreAtom),r=getSchema({parser:m,schemaOrRef:o||{$ref:e},pointer:e||"",options:t,deps:{operation:{pointer:"RedocSchema"}}});return React.createElement(Row,null,React.createElement(FullWidthPanel,null,React.createElement(Schema,{schema:r})))};
2
2
  //# sourceMappingURL=RedocSchema.js.map
@@ -1,2 +1,2 @@
1
- import React,{Fragment,useEffect,useState}from"react";import{useRecoilValue}from"@redocly/recoil";import{TryItSecurityApps}from"@redocly/theme";import{escapeFormId,fromSessionStorage,getSecurityDetailsOptions,toSessionStorage}from"../../../utils";import{TryItDropdown}from"../styled";import{FormControl,FormLabel,FormWrapper}from"../../common/form";import{FormDropdown,FormTextField}from"../../common/TextField";import{OpenIDConnect,Error}from"../OpenIDConnect";import{fromCookie,requiredValidator}from"../utils";import{OAuth2Flow}from"../OAuth2Flow";import{l}from"../../../services";import OAuth2TokenInputComponent from"../OAuth2TokenInput";import{globalStoreSelector}from"../../../recoil/store";export const AuthPanel=({securityDefaults:e,operation:t,activeServer:o,authCorsProxyUrl:a,form:r,formApi:i})=>{var n,s;const[u,c]=useState(0),{parser:m}=useRecoilValue(globalStoreSelector);useEffect((()=>{const e=t.security.map((e=>e.schemes.map((e=>e.id)).join(" and "))),o=fromSessionStorage("securityRequirementName"),a=e.findIndex((e=>e===o));c(a<0?0:a)}),[t]);const d=t.security,p=d.map((e=>e.schemes.map((e=>e.id)).join(" and "))).filter(Boolean).map(((e,t)=>({value:e,idx:t})));if(0===p.length)return React.createElement(Error,{message:"Cannot find security schema in the definition"});const f=d[u],h=escapeFormId(f.schemes[0].id);return React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,p.length>1&&React.createElement(FormControl,null,React.createElement(FormLabel,null," Security scheme: "),React.createElement(TryItDropdown,{variant:"dark",fullWidth:!0,options:p,value:p[u].value,onChange:e=>{c(e.idx),toSessionStorage("securityRequirementName",e.value)}}))||null,React.createElement(TryItSecurityApps,{apiId:null===(s=null===(n=null==m?void 0:m.definition.info)||void 0===n?void 0:n["x-metadata"])||void 0===s?void 0:s.apiId,value:i.getValue(`auth.${h}`),onChange:e=>{i.setValue(`auth.${h}`,e)}}),d[u].schemes.map((t=>{var n,s,u,c,m,d,p;const f=escapeFormId(t.id);if("apiKey"===t.type){const o=getSecurityDetailsOptions(f,""),a={field:`auth.${f}`,fullWidth:!0,initialValue:fromCookie(t)||fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),initValue:fromCookie(t)||fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(FormControl,{key:f},React.createElement(FormLabel,null," ",t.name,": "),o?React.createElement(FormDropdown,Object.assign({},a,{options:o})):React.createElement(FormTextField,Object.assign({},a,{type:"password",panel:"try-it","data-cy":"apiKey-auth-password"})))}if("http"===t.type){if("basic"===t.scheme){const t=getSecurityDetailsOptions(f,"username"),o={field:`auth.${f}.username`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${f}.username`)||(null===(n=null==e?void 0:e[f])||void 0===n?void 0:n.username),initValue:fromSessionStorage(`auth.${f}.username`)||(null===(s=null==e?void 0:e[f])||void 0===s?void 0:s.username),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicUsername"),": "),t?React.createElement(FormDropdown,Object.assign({},o,{options:t})):React.createElement(FormTextField,Object.assign({},o,{panel:"try-it"}))),React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicPassword"),": "),React.createElement(FormTextField,{type:"password","data-cy":"http-auth-password",fullWidth:!0,field:`auth.${f}.password`,initialValue:fromSessionStorage(`auth.${f}.password`)||(null===(u=null==e?void 0:e[f])||void 0===u?void 0:u.password)||"",validateOnBlur:!0,validateOnChange:!0,panel:"try-it"})))}if("bearer"===t.scheme){const t=getSecurityDetailsOptions(f,""),o={field:`auth.${f}`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),initValue:fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," Bearer Token: "),t?React.createElement(FormDropdown,Object.assign({},o,{options:t})):React.createElement(FormTextField,Object.assign({},o,{type:"password",placeholder:"(without 'Bearer')",panel:"try-it"}))))}}else{if("oauth2"===t.type&&t.flows&&t.flows.clientCredentials)return React.createElement(OAuth2TokenInputComponent,{key:f,flow:t.flows.clientCredentials,server:o,authCorsProxyUrl:a,id:f,form:r,formApi:i,clientId:t.flows.clientCredentials["x-defaultClientId"]||t["x-defaultClientId"],defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type&&t.flows&&t.flows.implicit)return React.createElement(OAuth2Flow,{key:f,authorizationUrl:t.flows.implicit.authorizationUrl,authCorsProxyUrl:a,scopes:Object.keys((null===(m=null===(c=null==t?void 0:t.flows)||void 0===c?void 0:c.implicit)||void 0===m?void 0:m.scopes)||{}),server:o,id:f,form:r,formApi:i,clientId:t.flows.implicit["x-defaultClientId"]||t["x-defaultClientId"],flow:"implicit",defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type&&t.flows&&t.flows.authorizationCode)return React.createElement(OAuth2Flow,{key:f,authorizationUrl:t.flows.authorizationCode.authorizationUrl,tokenUrl:t.flows.authorizationCode.tokenUrl,authCorsProxyUrl:a,scopes:Object.keys((null===(d=t.flows.authorizationCode)||void 0===d?void 0:d.scopes)||{}),server:o,id:f,form:r,formApi:i,clientId:t.flows.authorizationCode["x-defaultClientId"]||t["x-defaultClientId"],flow:"authorizationCode",tokenEndpointAuthMethod:t.flows.authorizationCode["x-tokenEndpointAuthMethod"],usePkce:t.flows.authorizationCode["x-usePkce"],defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type){let t=fromSessionStorage(`auth.${f}.token`)||JSON.stringify(null===(p=null==e?void 0:e[f])||void 0===p?void 0:p.token);return t=t?JSON.parse(t):{},React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token Type: "),React.createElement(FormTextField,{fullWidth:!0,field:`auth.${f}.token.token_type`,initialValue:t.token_type||"Bearer",panel:"try-it"})),React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:`auth.${f}.token.access_token`,validate:requiredValidator,initialValue:t.access_token,validateOnBlur:!0,validateOnChange:!0,panel:"try-it"})))}if("openIdConnect"===t.type)return React.createElement(OpenIDConnect,{key:f,server:o,authCorsProxyUrl:a,id:f,form:r,formApi:i,scheme:t,clientId:t["x-defaultClientId"],defaultValues:null==e?void 0:e[f]})}}))),React.createElement("small",null,React.createElement("strong",null,"Note"),": Your credentials will be saved until the end of the browser session"))};
1
+ import React,{Fragment,useEffect,useState}from"react";import{useAtomValue}from"jotai";import{TryItSecurityApps}from"@redocly/theme";import{escapeFormId,fromSessionStorage,getSecurityDetailsOptions,toSessionStorage}from"../../../utils";import{TryItDropdown}from"../styled";import{FormControl,FormLabel,FormWrapper}from"../../common/form";import{FormDropdown,FormTextField}from"../../common/TextField";import{OpenIDConnect,Error}from"../OpenIDConnect";import{fromCookie,requiredValidator}from"../utils";import{OAuth2Flow}from"../OAuth2Flow";import{l}from"../../../services";import OAuth2TokenInputComponent from"../OAuth2TokenInput";import{globalStoreAtom}from"../../../jotai/store";export const AuthPanel=({securityDefaults:e,operation:t,activeServer:o,authCorsProxyUrl:a,form:r,formApi:i})=>{var n,s;const[u,m]=useState(0),{parser:c}=useAtomValue(globalStoreAtom);useEffect((()=>{const e=t.security.map((e=>e.schemes.map((e=>e.id)).join(" and "))),o=fromSessionStorage("securityRequirementName"),a=e.findIndex((e=>e===o));m(a<0?0:a)}),[t]);const d=t.security,p=d.map((e=>e.schemes.map((e=>e.id)).join(" and "))).filter(Boolean).map(((e,t)=>({value:e,idx:t})));if(0===p.length)return React.createElement(Error,{message:"Cannot find security schema in the definition"});const f=d[u],h=escapeFormId(f.schemes[0].id);return React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,p.length>1&&React.createElement(FormControl,null,React.createElement(FormLabel,null," Security scheme: "),React.createElement(TryItDropdown,{variant:"dark",fullWidth:!0,options:p,value:p[u].value,onChange:e=>{m(e.idx),toSessionStorage("securityRequirementName",e.value)}}))||null,React.createElement(TryItSecurityApps,{apiId:null===(s=null===(n=null==c?void 0:c.definition.info)||void 0===n?void 0:n["x-metadata"])||void 0===s?void 0:s.apiId,value:i.getValue(`auth.${h}`),onChange:e=>{i.setValue(`auth.${h}`,e)}}),d[u].schemes.map((t=>{var n,s,u,m,c,d,p;const f=escapeFormId(t.id);if("apiKey"===t.type){const o=getSecurityDetailsOptions(f,""),a={field:`auth.${f}`,fullWidth:!0,initialValue:fromCookie(t)||fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),initValue:fromCookie(t)||fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(FormControl,{key:f},React.createElement(FormLabel,null," ",t.name,": "),o?React.createElement(FormDropdown,Object.assign({},a,{options:o})):React.createElement(FormTextField,Object.assign({},a,{type:"password",panel:"try-it","data-cy":"apiKey-auth-password"})))}if("http"===t.type){if("basic"===t.scheme){const t=getSecurityDetailsOptions(f,"username"),o={field:`auth.${f}.username`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${f}.username`)||(null===(n=null==e?void 0:e[f])||void 0===n?void 0:n.username),initValue:fromSessionStorage(`auth.${f}.username`)||(null===(s=null==e?void 0:e[f])||void 0===s?void 0:s.username),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicUsername"),": "),t?React.createElement(FormDropdown,Object.assign({},o,{options:t})):React.createElement(FormTextField,Object.assign({},o,{panel:"try-it"}))),React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicPassword"),": "),React.createElement(FormTextField,{type:"password","data-cy":"http-auth-password",fullWidth:!0,field:`auth.${f}.password`,initialValue:fromSessionStorage(`auth.${f}.password`)||(null===(u=null==e?void 0:e[f])||void 0===u?void 0:u.password)||"",validateOnBlur:!0,validateOnChange:!0,panel:"try-it"})))}if("bearer"===t.scheme){const t=getSecurityDetailsOptions(f,""),o={field:`auth.${f}`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),initValue:fromSessionStorage(`auth.${f}`)||(null==e?void 0:e[f]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," Bearer Token: "),t?React.createElement(FormDropdown,Object.assign({},o,{options:t})):React.createElement(FormTextField,Object.assign({},o,{type:"password",placeholder:"(without 'Bearer')",panel:"try-it"}))))}}else{if("oauth2"===t.type&&t.flows&&t.flows.clientCredentials)return React.createElement(OAuth2TokenInputComponent,{key:f,flow:t.flows.clientCredentials,server:o,authCorsProxyUrl:a,id:f,form:r,formApi:i,clientId:t.flows.clientCredentials["x-defaultClientId"]||t["x-defaultClientId"],defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type&&t.flows&&t.flows.implicit)return React.createElement(OAuth2Flow,{key:f,authorizationUrl:t.flows.implicit.authorizationUrl,authCorsProxyUrl:a,scopes:Object.keys((null===(c=null===(m=null==t?void 0:t.flows)||void 0===m?void 0:m.implicit)||void 0===c?void 0:c.scopes)||{}),server:o,id:f,form:r,formApi:i,clientId:t.flows.implicit["x-defaultClientId"]||t["x-defaultClientId"],flow:"implicit",defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type&&t.flows&&t.flows.authorizationCode)return React.createElement(OAuth2Flow,{key:f,authorizationUrl:t.flows.authorizationCode.authorizationUrl,tokenUrl:t.flows.authorizationCode.tokenUrl,authCorsProxyUrl:a,scopes:Object.keys((null===(d=t.flows.authorizationCode)||void 0===d?void 0:d.scopes)||{}),server:o,id:f,form:r,formApi:i,clientId:t.flows.authorizationCode["x-defaultClientId"]||t["x-defaultClientId"],flow:"authorizationCode",tokenEndpointAuthMethod:t.flows.authorizationCode["x-tokenEndpointAuthMethod"],usePkce:t.flows.authorizationCode["x-usePkce"],defaultValues:null==e?void 0:e[f]});if("oauth2"===t.type){let t=fromSessionStorage(`auth.${f}.token`)||JSON.stringify(null===(p=null==e?void 0:e[f])||void 0===p?void 0:p.token);return t=t?JSON.parse(t):{},React.createElement(Fragment,{key:f},React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token Type: "),React.createElement(FormTextField,{fullWidth:!0,field:`auth.${f}.token.token_type`,initialValue:t.token_type||"Bearer",panel:"try-it"})),React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:`auth.${f}.token.access_token`,validate:requiredValidator,initialValue:t.access_token,validateOnBlur:!0,validateOnChange:!0,panel:"try-it"})))}if("openIdConnect"===t.type)return React.createElement(OpenIDConnect,{key:f,server:o,authCorsProxyUrl:a,id:f,form:r,formApi:i,scheme:t,clientId:t["x-defaultClientId"],defaultValues:null==e?void 0:e[f]})}}))),React.createElement("small",null,React.createElement("strong",null,"Note"),": Your credentials will be saved until the end of the browser session"))};
2
2
  //# sourceMappingURL=AuthPanel.js.map
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(s,n){function a(e){try{l(r.next(e))}catch(e){n(e)}}function i(e){try{l(r.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}l((r=r.apply(e,t||[])).next())}))},__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 s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(o[r[s]]=e[r[s]])}return o};import{execute}from"swagger-client/es/execute/index";import React,{useEffect,useState,useRef,useCallback,memo}from"react";import{useMount}from"@redocly/theme";import{useRecoilValue,useRecoilState}from"@redocly/recoil";import{dereferenceDefinitionForTryIt}from"./shallowCopyForTryIt";import{unescapeFormId}from"../../../utils/string";import{StyledCodeHeader}from"../../Panel";import{isFileUploadMime}from"../../common/FileUpload/helper";import{AnalyticsEventType}from"../../../events";import{getDefaultOrStoredVariables,getFileNameFromHeaders,getParameters,makeRequestInterceptor,unescapeQueryParams,updateStorage}from"../utils";import{ResponsePanel}from"../ResponsePanel";import{ConsoleTabs}from"../ConsoleTabs";import{ActionPanel}from"../ActionPanel";import{Request}from"./Request";import{CloseButton,ConsoleBody}from"../styled";import{ConsoleWrapper}from"./ConsoleWrapper";import{usePrevious}from"../../../hooks";import{globalStoreSelector}from"../../../recoil/store";import{getActiveMediaType}from"../../../models";import{operationStore}from"../../../recoil/operation";function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}function ConsoleComponent({operation:e,onResponse:t,className:o,rootElement:r,properties:s,mergeExampleBody:n,securityDefaults:a,onClose:i}){let l=useRef();const[c,u]=useRecoilState(operationStore(e.pointer)),[p,d]=useState(c.activeServer||e.activeServer),[m,v]=useState(0),[y,h]=useState(!1),[f,g]=useState(!1),[b,O]=useState({values:{path:getParameters(e.parameters,"path"),cookie:getParameters(e.parameters,"cookie"),header:getParameters(e.parameters,"header"),query:getParameters(e.parameters,"query")}}),[S,j]=useState(),[C,R]=useState(),[P,I]=useState(),[T,q]=useState(),w=usePrevious(e),{parser:E,options:_}=useRecoilValue(globalStoreSelector),k=useCallback(((e,t=e.getState())=>{var{values:o}=t,r=__rest(t,["values"]);l.current=e,setTimeout((()=>{O(Object.assign(Object.assign({},r),{values:Object.assign(Object.assign({},o),{query:unescapeQueryParams(o.query||{})})}))}),0)}),[]),F=useCallback((e=>{var{values:t}=e,o=__rest(e,["values"]);const r=Object.assign(Object.assign({},o),{values:Object.assign(Object.assign({},t),{query:unescapeQueryParams(t.query||{})})});u((e=>Object.assign(Object.assign({},e),{requestValues:JSON.parse(JSON.stringify(t))}))),O(r),updateStorage(r)}),[u]),x=useCallback((e=>{v(e)}),[]),A=useCallback((e=>{d(e),u((t=>Object.assign(Object.assign({},t),{activeServer:e})))}),[u]),V=useCallback((()=>__awaiter(this,void 0,void 0,(function*(){var o,r,s,n,a,i,c,u,d,m,y,f,O,j,C,P,T;const{values:w,invalid:E}=(null===(o=null==l?void 0:l.current)||void 0===o?void 0:o.getState())||b||{};if(null===(r=l.current)||void 0===r||r.submitForm(),E)return g(!0),setTimeout((()=>g(!1)),1e3),void(null===(n=null===(s=_.events)||void 0===s?void 0:s.tryItSent)||void 0===n||n.call(s,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"ValidationFailed",operationId:e.operationId,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.description}));const{servers:k,requestBody:F}=e,x=F&&F.content&&(null===(a=getActiveMediaType(F.content))||void 0===a?void 0:a.name)||"";let A=w.body;if(/json/.test(x))try{A=JSON.parse(A)}catch(e){console.error(e)}h(!0);const V=S,B=(e.httpVerb||"").toLowerCase();if(!k)throw console.error("Servers are not specified in your OpenAPI file. You can't use Try It Out console without specifying servers. If you use OpenAPI 2, make sure you configured host and basepath"),new Error("Servers are not specified");const D=k.find((e=>p.url.endsWith(e.url.endsWith("/")?e.url.substring(0,e.url.length-1):e.url))),N=Date.now();let M,U=w.auth;if(w.auth){const e=Object.keys(w.auth)[0],t=unescapeFormId(e);M=Object.assign(Object.assign({},V),{components:Object.assign(Object.assign({},null==V?void 0:V.components),{securitySchemes:Object.assign(Object.assign({},null===(i=null==V?void 0:V.components)||void 0===i?void 0:i.securitySchemes),{[t]:Object.assign(Object.assign({},null===(u=null===(c=null==V?void 0:V.components)||void 0===c?void 0:c.securitySchemes)||void 0===u?void 0:u[t]),{type:"openIdConnect"===(null===(y=null===(m=null===(d=null==V?void 0:V.components)||void 0===d?void 0:d.securitySchemes)||void 0===m?void 0:m[t])||void 0===y?void 0:y.type)?"oauth2":(null===(O=null===(f=null==V?void 0:V.components)||void 0===f?void 0:f.securitySchemes)||void 0===O?void 0:O[t]).type})})})}),U=Object.assign(Object.assign({},U),{[t]:U[e]})}else M=Object.assign({},V);M.servers=k;const H=_.corsProxyUrl;H&&k.length&&(M.servers=k.map((e=>Object.assign(Object.assign({},e),{url:H+normalizeUrlProtocol(e.url)}))),M.paths=Object.assign(Object.assign({},M.paths),{[e.path]:Object.assign(Object.assign({},M.paths[e.path]),{[B]:Object.assign(Object.assign({},M.paths[e.path][B]),{servers:void 0}),servers:void 0})}));const W=(null==F?void 0:F.content)&&(null===(j=getActiveMediaType(F.content))||void 0===j?void 0:j.name)||null;if(W&&A&&isFileUploadMime(W)){const e=Object.values(A);A=e.length>1?e:e[0]}const z={server:H?H+normalizeUrlProtocol(D.url):D.url,serverVariables:getDefaultOrStoredVariables(D),spec:M,pathName:e.path,method:e.httpVerb,parameters:Object.assign(Object.assign(Object.assign(Object.assign({},w.path),w.query),w.header),w.cookie),securities:{authorized:U},requestBody:A,requestContentType:W,responseContentType:(null===(C=w.header)||void 0===C?void 0:C.Accept)||null,requestInterceptor:makeRequestInterceptor(_,e,null==U?void 0:U.Authorization)};try{const o=yield execute(z),r=null==o?void 0:o.data;r instanceof Blob&&(isFileUploadMime(r.type)&&(o.fileInfo={rawData:r,fileName:getFileNameFromHeaders(o.headers)}),o.data=yield r.text()),null==t||t({request:z,response:o}),q(o),I(void 0)}catch(e){e&&e.response&&e.response.data instanceof Blob&&(e.response.data=yield e.response.data.text(),null==t||t({request:z,response:e.response})),q(void 0),I(e)}finally{h(!1),v(1),R(Date.now()-N),null===(T=null===(P=_.events)||void 0===P?void 0:P.tryItSent)||void 0===T||T.call(P,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"Sent",operationId:e.operationId,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.description})}}))),[p.url,b,t,e,_,S]);useMount((()=>__awaiter(this,void 0,void 0,(function*(){var t;const o=yield dereferenceDefinitionForTryIt(e,E.definition);j(o),null===(t=l.current)||void 0===t||t.setValues({})})))),useEffect((()=>{w&&w!==e&&(q(void 0),I(void 0),v(0))}),[e,w]);const B=!(!T&&!P);return React.createElement(ConsoleWrapper,{shaking:f,className:o,rootElement:r},React.createElement(StyledCodeHeader,null,React.createElement(ConsoleTabs,{active:m,hasResponse:B,onChange:x}),i&&React.createElement(CloseButton,{onClick:i}," ✕ ")),React.createElement(ConsoleBody,{hidden:0!==m,"data-cy":"console-request-body"},React.createElement(Request,{operation:e,properties:s,mergeExampleBody:n,securityDefaults:a,form:b,resolvedRawSpec:S,server:p,formApi:l.current,setFormApi:k,handleChange:F,handleServerChange:A})),React.createElement(ConsoleBody,{hidden:1!==m,"data-cy":"console-response-body"},React.createElement(ResponsePanel,{response:T,error:P,time:C})),React.createElement(ActionPanel,{hasResponse:B,params:b.values,operation:e,loading:y,execute:V}))}export const Console=memo(ConsoleComponent);
1
+ var __awaiter=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(s,n){function a(e){try{l(r.next(e))}catch(e){n(e)}}function i(e){try{l(r.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}l((r=r.apply(e,t||[])).next())}))},__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 s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(o[r[s]]=e[r[s]])}return o};import{execute}from"swagger-client/es/execute/index";import React,{useEffect,useState,useRef,useCallback,memo}from"react";import{useMount}from"@redocly/theme";import{useAtomValue,useAtom}from"jotai";import{dereferenceDefinitionForTryIt}from"./shallowCopyForTryIt";import{unescapeFormId}from"../../../utils/string";import{StyledCodeHeader}from"../../Panel";import{isFileUploadMime}from"../../common/FileUpload/helper";import{AnalyticsEventType}from"../../../events";import{getDefaultOrStoredVariables,getFileNameFromHeaders,getParameters,makeRequestInterceptor,unescapeQueryParams,updateStorage}from"../utils";import{ResponsePanel}from"../ResponsePanel";import{ConsoleTabs}from"../ConsoleTabs";import{ActionPanel}from"../ActionPanel";import{Request}from"./Request";import{CloseButton,ConsoleBody}from"../styled";import{ConsoleWrapper}from"./ConsoleWrapper";import{usePrevious}from"../../../hooks";import{globalStoreAtom}from"../../../jotai/store";import{getActiveMediaType}from"../../../models";import{operationStore}from"../../../jotai/operation";function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}function ConsoleComponent({operation:e,onResponse:t,className:o,rootElement:r,properties:s,mergeExampleBody:n,securityDefaults:a,onClose:i}){let l=useRef();const[c,u]=useAtom(operationStore(e.pointer)),[p,d]=useState(c.activeServer||e.activeServer),[m,v]=useState(0),[y,h]=useState(!1),[f,g]=useState(!1),[b,O]=useState({values:{path:getParameters(e.parameters,"path"),cookie:getParameters(e.parameters,"cookie"),header:getParameters(e.parameters,"header"),query:getParameters(e.parameters,"query")}}),[S,j]=useState(),[C,P]=useState(),[R,I]=useState(),[T,A]=useState(),q=usePrevious(e),{parser:w,options:E}=useAtomValue(globalStoreAtom),_=useCallback(((e,t=e.getState())=>{var{values:o}=t,r=__rest(t,["values"]);l.current=e,setTimeout((()=>{O(Object.assign(Object.assign({},r),{values:Object.assign(Object.assign({},o),{query:unescapeQueryParams(o.query||{})})}))}),0)}),[]),k=useCallback((e=>{var{values:t}=e,o=__rest(e,["values"]);const r=Object.assign(Object.assign({},o),{values:Object.assign(Object.assign({},t),{query:unescapeQueryParams(t.query||{})})});u((e=>Object.assign(Object.assign({},e),{requestValues:JSON.parse(JSON.stringify(t))}))),O(r),updateStorage(r)}),[u]),F=useCallback((e=>{v(e)}),[]),x=useCallback((e=>{d(e),u((t=>Object.assign(Object.assign({},t),{activeServer:e})))}),[u]),V=useCallback((()=>__awaiter(this,void 0,void 0,(function*(){var o,r,s,n,a,i,c,u,d,m,y,f,O,j,C,R,T;const{values:q,invalid:w}=(null===(o=null==l?void 0:l.current)||void 0===o?void 0:o.getState())||b||{};if(null===(r=l.current)||void 0===r||r.submitForm(),w)return g(!0),setTimeout((()=>g(!1)),1e3),void(null===(n=null===(s=E.events)||void 0===s?void 0:s.tryItSent)||void 0===n||n.call(s,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"ValidationFailed",operationId:e.operationId,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.description}));const{servers:_,requestBody:k}=e,F=k&&k.content&&(null===(a=getActiveMediaType(k.content))||void 0===a?void 0:a.name)||"";let x=q.body;if(/json/.test(F))try{x=JSON.parse(x)}catch(e){console.error(e)}h(!0);const V=S,B=(e.httpVerb||"").toLowerCase();if(!_)throw console.error("Servers are not specified in your OpenAPI file. You can't use Try It Out console without specifying servers. If you use OpenAPI 2, make sure you configured host and basepath"),new Error("Servers are not specified");const D=_.find((e=>p.url.endsWith(e.url.endsWith("/")?e.url.substring(0,e.url.length-1):e.url))),N=Date.now();let M,U=q.auth;if(q.auth){const e=Object.keys(q.auth)[0],t=unescapeFormId(e);M=Object.assign(Object.assign({},V),{components:Object.assign(Object.assign({},null==V?void 0:V.components),{securitySchemes:Object.assign(Object.assign({},null===(i=null==V?void 0:V.components)||void 0===i?void 0:i.securitySchemes),{[t]:Object.assign(Object.assign({},null===(u=null===(c=null==V?void 0:V.components)||void 0===c?void 0:c.securitySchemes)||void 0===u?void 0:u[t]),{type:"openIdConnect"===(null===(y=null===(m=null===(d=null==V?void 0:V.components)||void 0===d?void 0:d.securitySchemes)||void 0===m?void 0:m[t])||void 0===y?void 0:y.type)?"oauth2":(null===(O=null===(f=null==V?void 0:V.components)||void 0===f?void 0:f.securitySchemes)||void 0===O?void 0:O[t]).type})})})}),U=Object.assign(Object.assign({},U),{[t]:U[e]})}else M=Object.assign({},V);M.servers=_;const H=E.corsProxyUrl;H&&_.length&&(M.servers=_.map((e=>Object.assign(Object.assign({},e),{url:H+normalizeUrlProtocol(e.url)}))),M.paths=Object.assign(Object.assign({},M.paths),{[e.path]:Object.assign(Object.assign({},M.paths[e.path]),{[B]:Object.assign(Object.assign({},M.paths[e.path][B]),{servers:void 0}),servers:void 0})}));const W=(null==k?void 0:k.content)&&(null===(j=getActiveMediaType(k.content))||void 0===j?void 0:j.name)||null;if(W&&x&&isFileUploadMime(W)){const e=Object.values(x);x=e.length>1?e:e[0]}const z={server:H?H+normalizeUrlProtocol(D.url):D.url,serverVariables:getDefaultOrStoredVariables(D),spec:M,pathName:e.path,method:e.httpVerb,parameters:Object.assign(Object.assign(Object.assign(Object.assign({},q.path),q.query),q.header),q.cookie),securities:{authorized:U},requestBody:x,requestContentType:W,responseContentType:(null===(C=q.header)||void 0===C?void 0:C.Accept)||null,requestInterceptor:makeRequestInterceptor(E,e,null==U?void 0:U.Authorization)};try{const o=yield execute(z),r=null==o?void 0:o.data;r instanceof Blob&&(isFileUploadMime(r.type)&&(o.fileInfo={rawData:r,fileName:getFileNameFromHeaders(o.headers)}),o.data=yield r.text()),null==t||t({request:z,response:o}),A(o),I(void 0)}catch(e){e&&e.response&&e.response.data instanceof Blob&&(e.response.data=yield e.response.data.text(),null==t||t({request:z,response:e.response})),A(void 0),I(e)}finally{h(!1),v(1),P(Date.now()-N),null===(T=null===(R=E.events)||void 0===R?void 0:R.tryItSent)||void 0===T||T.call(R,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"Sent",operationId:e.operationId,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.description})}}))),[p.url,b,t,e,E,S]);useMount((()=>__awaiter(this,void 0,void 0,(function*(){var t;const o=yield dereferenceDefinitionForTryIt(e,w.definition);j(o),null===(t=l.current)||void 0===t||t.setValues({})})))),useEffect((()=>{q&&q!==e&&(A(void 0),I(void 0),v(0))}),[e,q]);const B=!(!T&&!R);return React.createElement(ConsoleWrapper,{shaking:f,className:o,rootElement:r},React.createElement(StyledCodeHeader,null,React.createElement(ConsoleTabs,{active:m,hasResponse:B,onChange:F}),i&&React.createElement(CloseButton,{onClick:i}," ✕ ")),React.createElement(ConsoleBody,{hidden:0!==m,"data-cy":"console-request-body"},React.createElement(Request,{operation:e,properties:s,mergeExampleBody:n,securityDefaults:a,form:b,resolvedRawSpec:S,server:p,formApi:l.current,setFormApi:_,handleChange:k,handleServerChange:x})),React.createElement(ConsoleBody,{hidden:1!==m,"data-cy":"console-response-body"},React.createElement(ResponsePanel,{response:T,error:R,time:C})),React.createElement(ActionPanel,{hasResponse:B,params:b.values,operation:e,loading:y,execute:V}))}export const Console=memo(ConsoleComponent);
2
2
  //# sourceMappingURL=Console.js.map
@@ -1,2 +1,2 @@
1
- import React,{memo}from"react";import{useRecoilValue}from"@redocly/recoil";import{ConsoleWrap}from"../styled";import{useDimensions}from"../../../hooks";import{globalOptionsSelector}from"../../../recoil/store";function ConsoleWrapperComponent({shaking:o,className:e,children:l,rootElement:r}){const[s]=useDimensions(r),t=useRecoilValue(globalOptionsSelector);return React.createElement(ConsoleWrap,{scrollYOffset:t.scrollYOffset,shaking:o,className:e,"data-cy":"console",fullWidth:null==s?void 0:s.width},l)}export const ConsoleWrapper=memo(ConsoleWrapperComponent);
1
+ import React,{memo}from"react";import{useAtomValue}from"jotai";import{ConsoleWrap}from"../styled";import{useDimensions}from"../../../hooks";import{globalOptionsAtom}from"../../../jotai/store";function ConsoleWrapperComponent({shaking:o,className:e,children:t,rootElement:s}){const[r]=useDimensions(s),n=useAtomValue(globalOptionsAtom);return React.createElement(ConsoleWrap,{scrollYOffset:n.scrollYOffset,shaking:o,className:e,"data-cy":"console",fullWidth:null==r?void 0:r.width},t)}export const ConsoleWrapper=memo(ConsoleWrapperComponent);
2
2
  //# sourceMappingURL=ConsoleWrapper.js.map
@@ -1,2 +1,2 @@
1
- import React,{memo}from"react";import{Form,useField}from"informed";import{useRecoilValue}from"@redocly/recoil";import{OpenApiTryItSecurityPanel}from"@redocly/theme";import{requiredValidator}from"../utils";import{JsonPointer}from"../../../utils";import{OAuth2}from"../../../services/OAuth2";import{l}from"../../../services";import{Accordion}from"../../Panel";import{ServersDropdown}from"../ServersDropdown";import{TryItPanel}from"../TryItPanel";import{RequestBody}from"../RequestBody";import{OperationParameters}from"../../OperationParameters";import{AuthPanel}from"../AuthPanel";import{globalOptionsSelector}from"../../../recoil/store";import{RenderHook}from"../../RenderHook";function RequestComponent({operation:e,properties:r,mergeExampleBody:t,securityDefaults:o,form:a,resolvedRawSpec:n,server:i,formApi:s,setFormApi:u,handleChange:c,handleServerChange:d}){const m=a.errors||{},p=m.path||m.cookie||m.header||m.query,{hooks:y,authCorsProxyUrl:h}=useRecoilValue(globalOptionsSelector),v=n&&JsonPointer.get(n,e.pointer);let f=a.values&&a.values.auth&&Object.keys(a.values.auth)[0];f&&a.values.auth[f]||(f=void 0),!f||void 0===a.values.auth[f].token&&void 0===a.values.auth[f].client_id&&void 0===a.values.auth[f].client_secret||a.values.auth[f].token&&a.values.auth[f].token.access_token||(f=void 0),f&&null!=a.values.auth[f].username&&(a.values.auth[f].username&&a.values.auth[f].password||(f=void 0));const R=e.parameters||[];return!n&&React.createElement(React.Fragment,null,"Loading...")||React.createElement(Form,{onChange:c,getApi:u,style:{flex:1,display:"flex",flexDirection:"column",margin:0}},React.createElement(ServersDropdown,{operation:e,onChange:d}),React.createElement(Accordion,{initialActiveIdx:e.security.length&&f?1:0},e.security.length&&s&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",error:!f&&!!m.auth,success:!!f,renderChildrenHidden:!0},OpenApiTryItSecurityPanel||(null==y?void 0:y.ReplaceTryItSecurityPanel)?React.createElement(AuthPanelWrapper,{field:"auth",validate:requiredValidator},(r=>React.createElement(RenderHook,{Hook:OpenApiTryItSecurityPanel||(null==y?void 0:y.ReplaceTryItSecurityPanel),props:{server:i,operation:e,onChange:r,OAuth2:OAuth2}}))):React.createElement(AuthPanel,{formApi:s,form:a,operation:e,activeServer:i.url,authCorsProxyUrl:h,securityDefaults:o}))||null,e.requestBody&&s&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",error:!!m.body,renderChildrenHidden:!0},React.createElement(RequestBody,{validate:allowBodyErrors,formApi:s,body:e.requestBody,pointer:e.pointer,id:e.id,resolvedBody:null==v?void 0:v.requestBody,properties:r,mergeExampleBody:t}))||null,R.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:p,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:e,values:a.values,errors:a.errors||{}}))||null))}function AuthPanelWrapper(e){const{fieldApi:r,render:t,userProps:o}=useField(Object.assign({},e)),{setValue:a}=r,{children:l}=o;return t(React.createElement(React.Fragment,null,l(a)))}function allowBodyErrors(){}export const Request=memo(RequestComponent);
1
+ import React,{memo}from"react";import{Form,useField}from"informed";import{useAtomValue}from"jotai";import{OpenApiTryItSecurityPanel}from"@redocly/theme";import{requiredValidator}from"../utils";import{JsonPointer}from"../../../utils";import{OAuth2}from"../../../services/OAuth2";import{l}from"../../../services";import{Accordion}from"../../Panel";import{ServersDropdown}from"../ServersDropdown";import{TryItPanel}from"../TryItPanel";import{RequestBody}from"../RequestBody";import{OperationParameters}from"../../OperationParameters";import{AuthPanel}from"../AuthPanel";import{globalOptionsAtom}from"../../../jotai/store";import{RenderHook}from"../../RenderHook";function RequestComponent({operation:e,properties:r,mergeExampleBody:t,securityDefaults:o,form:a,resolvedRawSpec:n,server:i,formApi:s,setFormApi:u,handleChange:m,handleServerChange:d}){const c=a.errors||{},p=c.path||c.cookie||c.header||c.query,{hooks:y,authCorsProxyUrl:h}=useAtomValue(globalOptionsAtom),v=n&&JsonPointer.get(n,e.pointer);let f=a.values&&a.values.auth&&Object.keys(a.values.auth)[0];f&&a.values.auth[f]||(f=void 0),!f||void 0===a.values.auth[f].token&&void 0===a.values.auth[f].client_id&&void 0===a.values.auth[f].client_secret||a.values.auth[f].token&&a.values.auth[f].token.access_token||(f=void 0),f&&null!=a.values.auth[f].username&&(a.values.auth[f].username&&a.values.auth[f].password||(f=void 0));const R=e.parameters||[];return!n&&React.createElement(React.Fragment,null,"Loading...")||React.createElement(Form,{onChange:m,getApi:u,style:{flex:1,display:"flex",flexDirection:"column",margin:0}},React.createElement(ServersDropdown,{operation:e,onChange:d}),React.createElement(Accordion,{initialActiveIdx:e.security.length&&f?1:0},e.security.length&&s&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",error:!f&&!!c.auth,success:!!f,renderChildrenHidden:!0},OpenApiTryItSecurityPanel||(null==y?void 0:y.ReplaceTryItSecurityPanel)?React.createElement(AuthPanelWrapper,{field:"auth",validate:requiredValidator},(r=>React.createElement(RenderHook,{Hook:OpenApiTryItSecurityPanel||(null==y?void 0:y.ReplaceTryItSecurityPanel),props:{server:i,operation:e,onChange:r,OAuth2:OAuth2}}))):React.createElement(AuthPanel,{formApi:s,form:a,operation:e,activeServer:i.url,authCorsProxyUrl:h,securityDefaults:o}))||null,e.requestBody&&s&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",error:!!c.body,renderChildrenHidden:!0},React.createElement(RequestBody,{validate:allowBodyErrors,formApi:s,body:e.requestBody,pointer:e.pointer,id:e.id,resolvedBody:null==v?void 0:v.requestBody,properties:r,mergeExampleBody:t}))||null,R.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:p,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:e,values:a.values,errors:a.errors||{}}))||null))}function AuthPanelWrapper(e){const{fieldApi:r,render:t,userProps:o}=useField(Object.assign({},e)),{setValue:a}=r,{children:n}=o;return t(React.createElement(React.Fragment,null,n(a)))}function allowBodyErrors(){}export const Request=memo(RequestComponent);
2
2
  //# sourceMappingURL=Request.js.map
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(e,t,o,l){return new(o||(o=Promise))((function(n,r){function a(e){try{c(l.next(e))}catch(e){r(e)}}function i(e){try{c(l.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}c((l=l.apply(e,t||[])).next())}))};import React,{useEffect,useState}from"react";import{Button}from"@redocly/theme";import{useRecoilValue}from"@redocly/recoil";import{ButtonsWrapper,PkceOptionsWrapper,PkceDetails}from"./styled";import{LinearProgress}from"../../common/LinearProgress";import{FormControl,FormLabel,FormError,FormWrapper}from"../../common/form";import{FormDropdown,FormTextField,TextField}from"../../common/TextField";import{Checkbox}from"../../common/Checkbox";import{OAuth2,deriveCodeChallenge}from"../../../services/OAuth2";import{fromSessionStorage,getSecurityDetailsOptions}from"../../../utils";import{isEmptyObject,randString}from"../../../services/utils";import{getOAuth2TokenEndpointAuthHeader,normalizeUrlProtocol,validateTokenEndpointMethod}from"../utils";import Scope from"../Scope";import{Error}from"./Error";import{globalOptionsSelector}from"../../../recoil/store";function requiredValidator(e){if(!e)return"Field is required"}export const OAuth2Flow=({usePkce:e,form:t,id:o,formApi:l,flow:n,tokenUrl:r,authCorsProxyUrl:a,tokenEndpointAuthMethod:i,server:c,scopes:u,authorizationUrl:d,defaultValues:s,clientId:m})=>{var p,h,f,v;const{oAuth2RedirectURI:g,routingBasePath:E}=useRecoilValue(globalOptionsSelector),[k,C]=useState(null),[R,F]=useState(!1),[S,y]=useState(!1),[O,b]=useState(void 0),[_,A]=useState(void 0),[x,W]=useState(void 0),P=(null===(h=null===(p=t.values)||void 0===p?void 0:p.auth)||void 0===h?void 0:h[o])||{},T=(null===(v=null===(f=t.errors)||void 0===f?void 0:f.auth)||void 0===v?void 0:v[o])||{},V=void 0!==O&&_!==x?{label:"sync",onClick:()=>{O&&A(x)}}:void 0;useEffect((()=>{if(e){const e=randString(43);deriveCodeChallenge(e).then((t=>{b(e),A(t),W(t)}))}}),[e]);const w=()=>{l.setValue(`auth.${o}.token`,"")};if(!d)return React.createElement(FormError,null,"No flow info");let z=fromSessionStorage(`auth.${o}.token`)||JSON.stringify(null==s?void 0:s.token);z=z?JSON.parse(z):"";const B=getSecurityDetailsOptions(o,"client_id"),U={field:`auth.${o}.client_id`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${o}.client_id`)||m||(null==s?void 0:s.client_id),initValue:fromSessionStorage(`auth.${o}.client_id`)||m||(null==s?void 0:s.client_id),placeholder:"Your OAuth2 app Client ID",validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement("div",null,React.createElement(FormWrapper,null,React.createElement(FormControl,null,React.createElement(FormLabel,null," Client ID: "),B?React.createElement(FormDropdown,Object.assign({},U,{options:B})):React.createElement(FormTextField,Object.assign({},U,{"data-cy":"client-id-input",panel:"try-it"}))),"authorizationCode"===n&&React.createElement(React.Fragment,null,(!(null==e?void 0:e.hideClientSecretInput)||!e)&&React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:`auth.${o}.client_secret`,initialValue:fromSessionStorage(`auth.${o}.client_secret`)||(null==s?void 0:s.client_secret),validateOnBlur:!0,validateOnChange:!0,panel:"try-it","data-cy":"client-secret-input"})),e&&!e.disableManualConfiguration&&React.createElement(PkceOptionsWrapper,null,React.createElement(Checkbox,{id:"pkce-opitons-toggle",label:"Configure PKCE manually",checked:S,onChange:()=>{y((e=>!e))},"data-cy":"pkce-options-toggle"}),S&&React.createElement(PkceDetails,null,React.createElement(FormControl,null,React.createElement(FormLabel,null,"Code Verifier"),React.createElement(TextField,{fullWidth:!0,value:O,onChange:({target:{value:e}})=>__awaiter(void 0,void 0,void 0,(function*(){const t=yield deriveCodeChallenge(e);b(e),W(t)})),panel:"try-it","data-cy":"code-verifier-input"})),React.createElement(FormControl,null,React.createElement(FormLabel,null,"Code Challenge"),React.createElement(TextField,{fullWidth:!0,value:_,onChange:({target:{value:e}})=>{A(e)},inputActionButton:V,panel:"try-it","data-cy":"code-challenge-input"}))))),React.createElement(FormTextField,{fullWidth:!0,field:`auth.${o}.token`,type:"hidden",initialValue:z,panel:"try-it"}),React.createElement(Scope,{id:o,scopes:u}),P.token&&P.token.access_token?React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(TextField,{disabled:!0,type:"password",fullWidth:!0,value:P.token.access_token,panel:"try-it"})):null),React.createElement(ButtonsWrapper,null,P.token&&P.token.access_token?React.createElement(Button,{fullWidth:!0,onClick:()=>{w(),C(null)}},"Log out"):R?React.createElement(React.Fragment,null,React.createElement(Button,{fullWidth:!0,onClick:()=>{F(!1),C(null),OAuth2.clearRedirectData(n)}},"Cancel"),React.createElement(LinearProgress,null)):React.createElement(Button,{fullWidth:!0,disabled:!isEmptyObject(T),onClick:()=>{(t=>{if(!t)return;if(l.validate(),!isEmptyObject(T))return;F(!0),C(null);const u=a?a+normalizeUrlProtocol(t):t,d=a&&r?a+normalizeUrlProtocol(r):r,s=l.getValue(`auth.${o}.scopes`),m={authorizationUrl:u.startsWith("http")?u:c+u,clientId:P.client_id,scopes:s,redirectUri:g,routingBasePath:E,successCallback:e=>{l.setValue(`auth.${o}.token`,e),F(!1),C(null)},errorCallback:e=>{F(!1),C((null==e?void 0:e.message)||"Failed to retrieve the access token")}};"implicit"===n&&OAuth2.authorizeImplicit(m),validateTokenEndpointMethod(i)?"authorizationCode"===n&&OAuth2.authorizeAuthorizationCode(Object.assign(Object.assign(Object.assign({},m),{tokenUrl:(null==d?void 0:d.startsWith("http"))?d:c+d,clientSecret:P.client_secret,extraHeaders:getOAuth2TokenEndpointAuthHeader({authMethod:i,clientId:P.client_id,clientSecret:P.client_secret})}),e&&{codeVerifier:O,codeChallenge:_})):console.log(`Unsupported token endpoint auth method: ${i}`)})(d)}},"Authorize")),R||k||!P.token||!P.token.access_token&&React.createElement(Error,{loading:R,error:k,token:P.token}))};
1
+ var __awaiter=this&&this.__awaiter||function(e,t,o,l){return new(o||(o=Promise))((function(n,r){function a(e){try{c(l.next(e))}catch(e){r(e)}}function i(e){try{c(l.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(a,i)}c((l=l.apply(e,t||[])).next())}))};import React,{useEffect,useState}from"react";import{Button}from"@redocly/theme";import{useAtomValue}from"jotai";import{ButtonsWrapper,PkceOptionsWrapper,PkceDetails}from"./styled";import{LinearProgress}from"../../common/LinearProgress";import{FormControl,FormLabel,FormError,FormWrapper}from"../../common/form";import{FormDropdown,FormTextField,TextField}from"../../common/TextField";import{Checkbox}from"../../common/Checkbox";import{OAuth2,deriveCodeChallenge}from"../../../services/OAuth2";import{fromSessionStorage,getSecurityDetailsOptions}from"../../../utils";import{isEmptyObject,randString}from"../../../services/utils";import{getOAuth2TokenEndpointAuthHeader,normalizeUrlProtocol,validateTokenEndpointMethod}from"../utils";import Scope from"../Scope";import{Error}from"./Error";import{globalOptionsAtom}from"../../../jotai/store";function requiredValidator(e){if(!e)return"Field is required"}export const OAuth2Flow=({usePkce:e,form:t,id:o,formApi:l,flow:n,tokenUrl:r,authCorsProxyUrl:a,tokenEndpointAuthMethod:i,server:c,scopes:u,authorizationUrl:d,defaultValues:s,clientId:m})=>{var p,h,f,v;const{oAuth2RedirectURI:g,routingBasePath:E}=useAtomValue(globalOptionsAtom),[k,C]=useState(null),[R,F]=useState(!1),[S,y]=useState(!1),[O,b]=useState(void 0),[_,A]=useState(void 0),[x,W]=useState(void 0),P=(null===(h=null===(p=t.values)||void 0===p?void 0:p.auth)||void 0===h?void 0:h[o])||{},T=(null===(v=null===(f=t.errors)||void 0===f?void 0:f.auth)||void 0===v?void 0:v[o])||{},V=void 0!==O&&_!==x?{label:"sync",onClick:()=>{O&&A(x)}}:void 0;useEffect((()=>{if(e){const e=randString(43);deriveCodeChallenge(e).then((t=>{b(e),A(t),W(t)}))}}),[e]);const w=()=>{l.setValue(`auth.${o}.token`,"")};if(!d)return React.createElement(FormError,null,"No flow info");let z=fromSessionStorage(`auth.${o}.token`)||JSON.stringify(null==s?void 0:s.token);z=z?JSON.parse(z):"";const B=getSecurityDetailsOptions(o,"client_id"),U={field:`auth.${o}.client_id`,fullWidth:!0,initialValue:fromSessionStorage(`auth.${o}.client_id`)||m||(null==s?void 0:s.client_id),initValue:fromSessionStorage(`auth.${o}.client_id`)||m||(null==s?void 0:s.client_id),placeholder:"Your OAuth2 app Client ID",validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement("div",null,React.createElement(FormWrapper,null,React.createElement(FormControl,null,React.createElement(FormLabel,null," Client ID: "),B?React.createElement(FormDropdown,Object.assign({},U,{options:B})):React.createElement(FormTextField,Object.assign({},U,{"data-cy":"client-id-input",panel:"try-it"}))),"authorizationCode"===n&&React.createElement(React.Fragment,null,(!(null==e?void 0:e.hideClientSecretInput)||!e)&&React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:`auth.${o}.client_secret`,initialValue:fromSessionStorage(`auth.${o}.client_secret`)||(null==s?void 0:s.client_secret),validateOnBlur:!0,validateOnChange:!0,panel:"try-it","data-cy":"client-secret-input"})),e&&!e.disableManualConfiguration&&React.createElement(PkceOptionsWrapper,null,React.createElement(Checkbox,{id:"pkce-opitons-toggle",label:"Configure PKCE manually",checked:S,onChange:()=>{y((e=>!e))},"data-cy":"pkce-options-toggle"}),S&&React.createElement(PkceDetails,null,React.createElement(FormControl,null,React.createElement(FormLabel,null,"Code Verifier"),React.createElement(TextField,{fullWidth:!0,value:O,onChange:({target:{value:e}})=>__awaiter(void 0,void 0,void 0,(function*(){const t=yield deriveCodeChallenge(e);b(e),W(t)})),panel:"try-it","data-cy":"code-verifier-input"})),React.createElement(FormControl,null,React.createElement(FormLabel,null,"Code Challenge"),React.createElement(TextField,{fullWidth:!0,value:_,onChange:({target:{value:e}})=>{A(e)},inputActionButton:V,panel:"try-it","data-cy":"code-challenge-input"}))))),React.createElement(FormTextField,{fullWidth:!0,field:`auth.${o}.token`,type:"hidden",initialValue:z,panel:"try-it"}),React.createElement(Scope,{id:o,scopes:u}),P.token&&P.token.access_token?React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(TextField,{disabled:!0,type:"password",fullWidth:!0,value:P.token.access_token,panel:"try-it"})):null),React.createElement(ButtonsWrapper,null,P.token&&P.token.access_token?React.createElement(Button,{fullWidth:!0,onClick:()=>{w(),C(null)}},"Log out"):R?React.createElement(React.Fragment,null,React.createElement(Button,{fullWidth:!0,onClick:()=>{F(!1),C(null),OAuth2.clearRedirectData(n)}},"Cancel"),React.createElement(LinearProgress,null)):React.createElement(Button,{fullWidth:!0,disabled:!isEmptyObject(T),onClick:()=>{(t=>{if(!t)return;if(l.validate(),!isEmptyObject(T))return;F(!0),C(null);const u=a?a+normalizeUrlProtocol(t):t,d=a&&r?a+normalizeUrlProtocol(r):r,s=l.getValue(`auth.${o}.scopes`),m={authorizationUrl:u.startsWith("http")?u:c+u,clientId:P.client_id,scopes:s,redirectUri:g,routingBasePath:E,successCallback:e=>{l.setValue(`auth.${o}.token`,e),F(!1),C(null)},errorCallback:e=>{F(!1),C((null==e?void 0:e.message)||"Failed to retrieve the access token")}};"implicit"===n&&OAuth2.authorizeImplicit(m),validateTokenEndpointMethod(i)?"authorizationCode"===n&&OAuth2.authorizeAuthorizationCode(Object.assign(Object.assign(Object.assign({},m),{tokenUrl:(null==d?void 0:d.startsWith("http"))?d:c+d,clientSecret:P.client_secret,extraHeaders:getOAuth2TokenEndpointAuthHeader({authMethod:i,clientId:P.client_id,clientSecret:P.client_secret})}),e&&{codeVerifier:O,codeChallenge:_})):console.log(`Unsupported token endpoint auth method: ${i}`)})(d)}},"Authorize")),R||k||!P.token||!P.token.access_token&&React.createElement(Error,{loading:R,error:k,token:P.token}))};
2
2
  //# sourceMappingURL=OAuth2Flow.js.map
@@ -1,2 +1,2 @@
1
- import React,{memo,useCallback,useEffect}from"react";import{useRecoilValue}from"@redocly/recoil";import{DropdownOrLabel}from"../../DropdownOrLabel";import{MediaTypesSwitch}from"../../MediaTypeSwitch";import{Dropdown}from"../../common";import{RequestMimeLabel}from"../RequestMimeLabel";import{encodeSample,getStorageExampleKey}from"../utils";import{fromSessionStorage}from"../../../utils";import{Body}from"./Body";import{getActiveMediaType}from"../../../models";import{activeMimeNameSelector}from"../../../recoil/app";import{operationStore}from"../../../recoil/operation";function RequestBodyComponent({body:{content:e},formApi:o,resolvedBody:t,properties:r,mergeExampleBody:a,id:i,validate:m,pointer:l}){const n=useRecoilValue(activeMimeNameSelector),{examples:p,name:c}=e&&getActiveMediaType(e,n)||{},d=useCallback((o=>{if(!e||!e.hasSample)return"";if(!(null==p?void 0:p[o]))return"";const t=c&&fromSessionStorage(getStorageExampleKey(i,c,o,p)),a=t?JSON.parse(t):null==p?void 0:p[o];return encodeSample(a,r)}),[c,p,i,e,r]),{activeExampleName:s}=useRecoilValue(operationStore(l));useEffect((()=>{if(r&&!a)return void o.setValue("body",JSON.stringify(r||{},null,2));const e=getStorageExampleKey(i,c,s,p);o.setValue("body",fromSessionStorage(e)||d(s||""))}),[p,s,c,o,d,i,r,a]);return React.createElement(React.Fragment,null,React.createElement(MediaTypesSwitch,{content:e,renderDropdown:e=>React.createElement(DropdownOrLabel,Object.assign({},e,{variant:"dark",fullWidth:!0,Label:RequestMimeLabel,Dropdown:Dropdown}))},(a=>React.createElement(Body,{mediaType:a,mediaContent:e,resolvedBody:t,id:i,properties:r,getActiveSample:d,formApi:o,validate:m}))))}export const RequestBody=memo(RequestBodyComponent);
1
+ import React,{memo,useCallback,useEffect}from"react";import{useAtomValue}from"jotai";import{DropdownOrLabel}from"../../DropdownOrLabel";import{MediaTypesSwitch}from"../../MediaTypeSwitch";import{Dropdown}from"../../common";import{RequestMimeLabel}from"../RequestMimeLabel";import{encodeSample,getStorageExampleKey}from"../utils";import{fromSessionStorage}from"../../../utils";import{Body}from"./Body";import{getActiveMediaType}from"../../../models";import{activeMimeNameAtom}from"../../../jotai/app";import{operationStore}from"../../../jotai/operation";function RequestBodyComponent({body:{content:e},formApi:o,resolvedBody:t,properties:r,mergeExampleBody:a,id:m,validate:i,pointer:n}){const p=useAtomValue(activeMimeNameAtom),{examples:l,name:d}=e&&getActiveMediaType(e,p)||{},s=useCallback((o=>{if(!e||!e.hasSample)return"";if(!(null==l?void 0:l[o]))return"";const t=d&&fromSessionStorage(getStorageExampleKey(m,d,o,l)),a=t?JSON.parse(t):null==l?void 0:l[o];return encodeSample(a,r)}),[d,l,m,e,r]),{activeExampleName:c}=useAtomValue(operationStore(n));useEffect((()=>{if(r&&!a)return void o.setValue("body",JSON.stringify(r||{},null,2));const e=getStorageExampleKey(m,d,c,l);o.setValue("body",fromSessionStorage(e)||s(c||""))}),[l,c,d,o,s,m,r,a]);return React.createElement(React.Fragment,null,React.createElement(MediaTypesSwitch,{content:e,renderDropdown:e=>React.createElement(DropdownOrLabel,Object.assign({},e,{variant:"dark",fullWidth:!0,Label:RequestMimeLabel,Dropdown:Dropdown}))},(a=>React.createElement(Body,{mediaType:a,mediaContent:e,resolvedBody:t,id:m,properties:r,getActiveSample:s,formApi:o,validate:i}))))}export const RequestBody=memo(RequestBodyComponent);
2
2
  //# sourceMappingURL=RequestBody.js.map
@@ -1,4 +1,4 @@
1
- import React,{memo,useEffect}from"react";import styled from"styled-components";import{getRecoil}from"../../recoil/nexus";import{isMultipartFileUploadProperty,isRootFileUpload,mimeTypeToAccept}from"../common/FileUpload/helper";import{FormControl,FormLabel}from"../common/form";import{FileUpload}from"../common/FileUpload";import{FormTextField,getInvertedInputStyles}from"../common/TextField";import{DefinitionTypes}from"../../models";import{MediaTypes}from"../../constants";import{useExampleKey}from"../Samples";import{operationStore}from"../../recoil/operation";import{normalizeText}from"../../utils";function RequestBodyFormComponent({mediaType:e,onChange:o,formApi:t}){var l;const n=e.examples||{},{exampleKey:m}=useExampleKey(e.operation,n),i=null===(l=n[m])||void 0===l?void 0:l.rawValue,r=getRequestBodyFormFields(e);useEffect((()=>t&&r.forEach((e=>{var o,l;const n=null==i?void 0:i[e.name],m=null!==(l=null!==(o=e.example)&&void 0!==o?o:null==n?void 0:n.example)&&void 0!==l?l:n,r="object"==typeof m?JSON.stringify(m):m;void 0!==m&&t.setValue("body."+e.name,`${r}`)}))),[m]);const a=e.schema||{};return isRootFileUpload(a,e.name)?React.createElement(FileFormControlWrapper,null,React.createElement(FormControl,null,React.createElement(StyledFileUpload,{fullWidth:!0,id:`body.${e.name}`,name:`body.${e.name}`,accept:mimeTypeToAccept(e.name),schema:a,contentName:e.name,onChange:o}))):a.type===DefinitionTypes.OBJECT||r?React.createElement(FileFormControlWrapper,null,r.map((t=>{const l=t.schema||{contentMediaType:"",type:"",description:""},n=e.name===MediaTypes.MULTIPART&&isMultipartFileUploadProperty(l),m=l.contentMediaType||"",i=n?React.createElement(StyledFileUpload,{fullWidth:!0,id:"body."+t.name,name:"body."+t.name,accept:mimeTypeToAccept(m),multiple:"array"===l.type,schema:l,contentName:t.name,onChange:o}):React.createElement(FormTextField,{fullWidth:!0,id:"body."+t.name,field:"body."+t.name,placeholder:normalizeText(l.description)||t.name,panel:"try-it"});return React.createElement(FormControl,{key:t.name},React.createElement(FormLabel,null,t.name,":"),i)}))):(console.warn(`Invalid schema for request body and mime type: "${e.name}"`,a),null)}export const RequestBodyForm=memo(RequestBodyFormComponent);export function getRequestBodyFormFields(e){var o,t,l,n;const{activeOneOf:m}=getRecoil(operationStore(e.operation.pointer));return((null===(t=null===(o=e.schema)||void 0===o?void 0:o.oneOf)||void 0===t?void 0:t.length)?(null===(l=e.schema)||void 0===l?void 0:l.oneOf[m].fields)||[]:(null===(n=e.schema)||void 0===n?void 0:n.fields)||[]).filter((e=>!e.schema.readOnly))}const FileFormControlWrapper=styled.div`
1
+ import React,{memo,useEffect}from"react";import styled from"styled-components";import{readAtom}from"../../jotai/nexus";import{isMultipartFileUploadProperty,isRootFileUpload,mimeTypeToAccept}from"../common/FileUpload/helper";import{FormControl,FormLabel}from"../common/form";import{FileUpload}from"../common/FileUpload";import{FormTextField,getInvertedInputStyles}from"../common/TextField";import{DefinitionTypes}from"../../models";import{MediaTypes}from"../../constants";import{useExampleKey}from"../Samples";import{operationStore}from"../../jotai/operation";import{normalizeText}from"../../utils";function RequestBodyFormComponent({mediaType:e,onChange:o,formApi:t}){var l;const n=e.examples||{},{exampleKey:m}=useExampleKey(e.operation,n),a=null===(l=n[m])||void 0===l?void 0:l.rawValue,i=getRequestBodyFormFields(e);useEffect((()=>t&&i.forEach((e=>{var o,l;const n=null==a?void 0:a[e.name],m=null!==(l=null!==(o=e.example)&&void 0!==o?o:null==n?void 0:n.example)&&void 0!==l?l:n,i="object"==typeof m?JSON.stringify(m):m;void 0!==m&&t.setValue("body."+e.name,`${i}`)}))),[m]);const r=e.schema||{};return isRootFileUpload(r,e.name)?React.createElement(FileFormControlWrapper,null,React.createElement(FormControl,null,React.createElement(StyledFileUpload,{fullWidth:!0,id:`body.${e.name}`,name:`body.${e.name}`,accept:mimeTypeToAccept(e.name),schema:r,contentName:e.name,onChange:o}))):r.type===DefinitionTypes.OBJECT||i?React.createElement(FileFormControlWrapper,null,i.map((t=>{const l=t.schema||{contentMediaType:"",type:"",description:""},n=e.name===MediaTypes.MULTIPART&&isMultipartFileUploadProperty(l),m=l.contentMediaType||"",a=n?React.createElement(StyledFileUpload,{fullWidth:!0,id:"body."+t.name,name:"body."+t.name,accept:mimeTypeToAccept(m),multiple:"array"===l.type,schema:l,contentName:t.name,onChange:o}):React.createElement(FormTextField,{fullWidth:!0,id:"body."+t.name,field:"body."+t.name,placeholder:normalizeText(l.description)||t.name,panel:"try-it"});return React.createElement(FormControl,{key:t.name},React.createElement(FormLabel,null,t.name,":"),a)}))):(console.warn(`Invalid schema for request body and mime type: "${e.name}"`,r),null)}export const RequestBodyForm=memo(RequestBodyFormComponent);export function getRequestBodyFormFields(e){var o,t,l,n,m,a;const{activeOneOf:i}=readAtom(operationStore(e.operation.pointer)),r=null!==(t=i[(null===(o=e.schema)||void 0===o?void 0:o.pointer)||""])&&void 0!==t?t:0;return((null===(n=null===(l=e.schema)||void 0===l?void 0:l.oneOf)||void 0===n?void 0:n.length)?(null===(m=e.schema)||void 0===m?void 0:m.oneOf[r].fields)||[]:(null===(a=e.schema)||void 0===a?void 0:a.fields)||[]).filter((e=>!e.schema.readOnly))}const FileFormControlWrapper=styled.div`
2
2
  > div {
3
3
  margin-top: 10px;
4
4
  }
@@ -1,2 +1,2 @@
1
- import*as React from"react";import{JsonViewer,CodeBlock,CodeBlockContainer}from"@redocly/theme";import{useRecoilValue}from"@redocly/recoil";import{langFromMime}from"../../utils";import{ResponseHeader}from"./styled";import{SourceCodeWithFile}from"../SourceCodeWithFile";import{globalOptionsSelector}from"../../recoil/store";export function ResponseBody({response:e}){const{jsonSampleExpandLevel:o}=useRecoilValue(globalOptionsSelector);return React.createElement(React.Fragment,null,React.createElement(ResponseHeader,null," Body: "),getResponseBody(e,o))}function getResponseBody(e,o){return e.body?React.createElement(JsonViewer,{data:e.body,jsonSampleExpandLevel:o}):e.fileInfo?React.createElement(SourceCodeWithFile,{fileInfo:e.fileInfo}):null!==e.data?e.data?React.createElement(CodeBlock,{lang:langFromMime(e.headers["Content-Type"]||"text/plain"),source:e.data,header:{controls:{copy:{}}}}):React.createElement(CodeBlockContainer,{withControls:!0},React.createElement("i",null,"(no content)")):null}
1
+ import*as React from"react";import{JsonViewer,CodeBlock,CodeBlockContainer}from"@redocly/theme";import{useAtomValue}from"jotai";import{langFromMime}from"../../utils";import{ResponseHeader}from"./styled";import{SourceCodeWithFile}from"../SourceCodeWithFile";import{globalOptionsAtom}from"../../jotai/store";export function ResponseBody({response:e}){const{jsonSampleExpandLevel:o}=useAtomValue(globalOptionsAtom);return React.createElement(React.Fragment,null,React.createElement(ResponseHeader,null," Body: "),getResponseBody(e,o))}function getResponseBody(e,o){return e.body?React.createElement(JsonViewer,{data:e.body,jsonSampleExpandLevel:o}):e.fileInfo?React.createElement(SourceCodeWithFile,{fileInfo:e.fileInfo}):null!==e.data?e.data?React.createElement(CodeBlock,{lang:langFromMime(e.headers["Content-Type"]||"text/plain"),source:e.data,header:{controls:{copy:{}}}}):React.createElement(CodeBlockContainer,{withControls:!0},React.createElement("i",null,"(no content)")):null}
2
2
  //# sourceMappingURL=ResponseBody.js.map
@@ -1,4 +1,4 @@
1
- import React,{useState}from"react";import styled from"styled-components";import{useRecoilValue}from"@redocly/recoil";import{CodeBlockContainer}from"@redocly/theme";import{ResponseHeader}from"./styled";import{globalOptionsSelector}from"../../recoil/store";export function ResponseHeadersList({headers:e}){const t=useRecoilValue(globalOptionsSelector),[o,r]=useState(!0),{maxResponseHeadersToShowInTryIt:a}=t,l=Object.keys(e),n=!!a&&l.length>a,s=n&&o?[...l].splice(0,a):[...l];return React.createElement(React.Fragment,null,React.createElement(ResponseHeader,null," Headers: "),React.createElement(CodeBlockContainer,{withControls:!0},s.map((t=>React.createElement("div",{key:t},React.createElement(HeaderName,null,t,":"),React.createElement("code",null,e[t])))),n&&React.createElement(StyledShowMoreLabel,{onClick:()=>{r(!o)}},o?"Show more...":"Hide headers")))}const HeaderName=styled.strong`
1
+ import React,{useState}from"react";import styled from"styled-components";import{useAtomValue}from"jotai";import{CodeBlockContainer}from"@redocly/theme";import{ResponseHeader}from"./styled";import{globalOptionsAtom}from"../../jotai/store";export function ResponseHeadersList({headers:e}){const t=useAtomValue(globalOptionsAtom),[o,a]=useState(!0),{maxResponseHeadersToShowInTryIt:r}=t,l=Object.keys(e),n=!!r&&l.length>r,s=n&&o?[...l].splice(0,r):[...l];return React.createElement(React.Fragment,null,React.createElement(ResponseHeader,null," Headers: "),React.createElement(CodeBlockContainer,{withControls:!0},s.map((t=>React.createElement("div",{key:t},React.createElement(HeaderName,null,t,":"),React.createElement("code",null,e[t])))),n&&React.createElement(StyledShowMoreLabel,{onClick:()=>{a(!o)}},o?"Show more...":"Hide headers")))}const HeaderName=styled.strong`
2
2
  text-transform: capitalize;
3
3
  display: inline-block;
4
4
  padding-right: 5px;
@@ -1,4 +1,4 @@
1
- import React,{memo,useState}from"react";import styled from"styled-components";import{useMount}from"@redocly/theme";import{useRecoilValue}from"@redocly/recoil";import{globalOptionsSelector}from"../../../recoil/store";import{fromSessionStorage,normalizeText,toSessionStorage}from"../../../utils";import{FormControl,FormLabel}from"../../common/form";import{expandDefaultServerVariables,expandVariables,getServerWithVariables,getDefaultOrStoredVariables,updateVariablesStorage}from"../utils";import ServerVariable from"../ServerVariable";import{TryItDropdown}from"../styled";import{createServerSwitchEvent}from"../../../events";function ServersDropdownComponent({operation:e,onChange:r}){const{events:t}=useRecoilValue(globalOptionsSelector),{servers:o}=e,a=fromSessionStorage("serverUrl"),l=o.findIndex((e=>e.url===a)),[n,s]=useState(l<0?0:l),[i,m]=useState({});useMount((()=>{const e=getServerWithVariables(o,n);r(e),m(e.variables)}));const c=o.map(((e,r)=>({idx:r,serverUrl:e.url,value:`\n ${expandDefaultServerVariables(expandVariables(e.url,i),e.variables)}\n - ${normalizeText(e.description)||"Default"}\n `}))),v=Object.keys(i);return React.createElement(ServerDropdownWrap,{"data-cy":"console-target-server"},React.createElement(FormLabel,{htmlFor:"server"},"Target server: "),React.createElement(FormControl,null,React.createElement(TryItDropdown,{variant:"dark",value:c[n].value,options:c,fullWidth:!0,onChange:({serverUrl:a=""})=>{var l;const n=o.find((e=>e.url===a)),i=o.findIndex((e=>e.url===a)),c=getDefaultOrStoredVariables(n);r({url:a,variables:c}),toSessionStorage("serverUrl",a),s(i),m(c);const v=createServerSwitchEvent({operation:e,serverUrl:a});null===(l=t.targetServerSwitch)||void 0===l||l.call(t,v)}})),null==v?void 0:v.map((e=>{var t;const a=null===(t=o[n].variables)||void 0===t?void 0:t[e];if(a)return React.createElement(ServerVariable,{key:e,name:e,value:i[e],defaultValue:a.default,onChange:t=>((e,t)=>{const a=o[n],l=t||""===t?t:getDefaultOrStoredVariables(a)[e],s=Object.assign(Object.assign({},i),{[e]:l});m(s),updateVariablesStorage(e,l),r(Object.assign(Object.assign({},a),{variables:s}))})(e,t),variableEnum:a.enum,description:a.description})})))}export const ServersDropdown=memo(ServersDropdownComponent);const ServerDropdownWrap=styled.div`
1
+ import React,{memo,useState}from"react";import styled from"styled-components";import{useMount}from"@redocly/theme";import{useAtomValue}from"jotai";import{globalOptionsAtom}from"../../../jotai/store";import{fromSessionStorage,normalizeText,toSessionStorage}from"../../../utils";import{FormControl,FormLabel}from"../../common/form";import{expandDefaultServerVariables,expandVariables,getServerWithVariables,getDefaultOrStoredVariables,updateVariablesStorage}from"../utils";import ServerVariable from"../ServerVariable";import{TryItDropdown}from"../styled";import{createServerSwitchEvent}from"../../../events";function ServersDropdownComponent({operation:e,onChange:r}){const{events:t}=useAtomValue(globalOptionsAtom),{servers:o}=e,a=fromSessionStorage("serverUrl"),n=o.findIndex((e=>e.url===a)),[l,s]=useState(n<0?0:n),[i,m]=useState({});useMount((()=>{const e=getServerWithVariables(o,l);r(e),m(e.variables)}));const v=o.map(((e,r)=>({idx:r,serverUrl:e.url,value:`\n ${expandDefaultServerVariables(expandVariables(e.url,i),e.variables)}\n - ${normalizeText(e.description)||"Default"}\n `}))),u=Object.keys(i);return React.createElement(ServerDropdownWrap,{"data-cy":"console-target-server"},React.createElement(FormLabel,{htmlFor:"server"},"Target server: "),React.createElement(FormControl,null,React.createElement(TryItDropdown,{variant:"dark",value:v[l].value,options:v,fullWidth:!0,onChange:({serverUrl:a=""})=>{var n;const l=o.find((e=>e.url===a)),i=o.findIndex((e=>e.url===a)),v=getDefaultOrStoredVariables(l);r({url:a,variables:v}),toSessionStorage("serverUrl",a),s(i),m(v);const u=createServerSwitchEvent({operation:e,serverUrl:a});null===(n=t.targetServerSwitch)||void 0===n||n.call(t,u)}})),null==u?void 0:u.map((e=>{var t;const a=null===(t=o[l].variables)||void 0===t?void 0:t[e];if(a)return React.createElement(ServerVariable,{key:e,name:e,value:i[e],defaultValue:a.default,onChange:t=>((e,t)=>{const a=o[l],n=t||""===t?t:getDefaultOrStoredVariables(a)[e],s=Object.assign(Object.assign({},i),{[e]:n});m(s),updateVariablesStorage(e,n),r(Object.assign(Object.assign({},a),{variables:s}))})(e,t),variableEnum:a.enum,description:a.description})})))}export const ServersDropdown=memo(ServersDropdownComponent);const ServerDropdownWrap=styled.div`
2
2
  margin-bottom: 20px;
3
3
  `;
4
4
  //# sourceMappingURL=ServersDropdown.js.map
@@ -1,2 +1,2 @@
1
- import merge from"deepmerge";import{getRecoil}from"../../recoil/nexus";import{MediaTypes}from"../../constants";import{arrayMergeStrategy}from"../../services/utils";import{fromSessionStorage,getParameterValue,setParameterValue,setSecurityDetails,toSessionStorage,unescapeFormId}from"../../utils";import{operationStore}from"../../recoil/operation";export function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}export function updateStorage(e){if(e.values.auth)for(const t of Object.keys(e.values.auth)){const r=e.values.auth[t];setSecurityDetails(t,r)}updateParameterStorage(e)}function updateParameterStorage(e){var t;for(const r of["path","query","header","cookie"])if(null===(t=e.values)||void 0===t?void 0:t[r])for(const t of Object.keys(e.values[r]))setParameterValue(r,t,e.values[r][t])}export const getParameters=(e,t)=>e.filter((e=>e.in===t)).reduce(((e,t)=>{const{in:r,name:o}=t;return e[o]=getParameterValue(r||"",o),e}),{});const pathTemplateRegExp=/(?:{)(\w+)(?:})/g;export function getServerWithVariables(e,t=0){const r=e[t],o=getDefaultOrStoredVariables(r);return Object.assign(Object.assign({},r),{variables:o})}export function getInitialServerWithVariables(e){const t=fromSessionStorage("serverUrl"),r=e.find((e=>e.url===t))||e[0],o=getDefaultOrStoredVariables(r);return Object.assign(Object.assign({},r),{variables:o})}export function expandVariables(e,t={}){return e.replace(pathTemplateRegExp,((e,r)=>t[r]||e))}export function expandDefaultServerVariables(e,t={}){return e.replace(pathTemplateRegExp,((e,r)=>t[r]&&t[r].default||e))}export function getDefaultOrStoredVariables(e){if(!(null==e?void 0:e.variables))return{};const t=fromSessionStorage("variables"),r=t&&JSON.parse(t)||{},o={};return Object.entries(e.variables||{}).forEach((([e,t])=>{o[e]=r[e]||t.default||""})),o}export function updateVariablesStorage(e,t){const r=fromSessionStorage("variables"),o=r&&JSON.parse(r)||{};toSessionStorage("variables",JSON.stringify(Object.assign(Object.assign({},o),{[e]:t})))}export function unescapeQueryParams(e){return Object.entries(e).reduce(((e,[t,r])=>(e[unescapeFormId(t)]=r,e)),{})}export function getFileNameFromHeaders(e){const t="filename=";for(const[r,o]of Object.entries(e))if("content-disposition"===r.toLowerCase()){const e=o.split(";").find((e=>e.trim().startsWith(t)));if(e)return e.split(t)[1]}return""}export const makeRequestInterceptor=({requestInterceptor:e,sendXUserAgentInTryIt:t,disableTryItRequestUrlEncoding:r},o,a)=>n=>{var i,s;const{requestValues:u}=getRecoil(operationStore(o.pointer));r&&(n=Object.assign(Object.assign({},n),{url:decodeURIComponent(n.url)})),t&&(n.headers["X-User-Agent"]="Redocly Try it API console");const c=(null===(i=null==u?void 0:u.header)||void 0===i?void 0:i.authorization)||(null===(s=null==u?void 0:u.header)||void 0===s?void 0:s.Authorization);return!a&&c&&(n.headers.Authorization=c),e?e(n,o):n};export function requiredValidator(e){if(!e)return"Field is required"}const getCookie=e=>{const t=document.cookie.match("\\b"+e+"=([^;]*)\\b");return t?t[1]:void 0};export function fromCookie(e){if("cookie"===e.in)return getCookie(e.name||"")}export const validateTokenEndpointMethod=e=>{if(!e)return!0;const t=Array.isArray(e)?e:[e];return!(t.length&&!t.includes("none")&&!t.includes("client_secret_basic"))};export const getOAuth2TokenEndpointAuthHeader=({authMethod:e,clientId:t,clientSecret:r})=>"client_secret_basic"===e||Array.isArray(e)&&e.includes("client_secret_basic")?{Authorization:`Basic ${btoa(t+":"+r)}`}:{};export function encodeSample(e,t){if(!e)return"";if(e.mime===MediaTypes.URL_ENCODED)return e.value;const r=e.value,o=t?merge(r,t,{arrayMerge:arrayMergeStrategy}):r;return JSON.stringify(o,null,2)}export const getStorageExampleKey=(e,t="",r,o)=>{let a=e+"_"+t;return r&&o&&Object.keys(o).includes(r)&&(a+="_"+r),a};
1
+ import merge from"deepmerge";import{readAtom}from"../../jotai/nexus";import{MediaTypes}from"../../constants";import{arrayMergeStrategy}from"../../services/utils";import{fromSessionStorage,getParameterValue,setParameterValue,setSecurityDetails,toSessionStorage,unescapeFormId}from"../../utils";import{operationStore}from"../../jotai/operation";export function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}export function updateStorage(e){if(e.values.auth)for(const t of Object.keys(e.values.auth)){const r=e.values.auth[t];setSecurityDetails(t,r)}updateParameterStorage(e)}function updateParameterStorage(e){var t;for(const r of["path","query","header","cookie"])if(null===(t=e.values)||void 0===t?void 0:t[r])for(const t of Object.keys(e.values[r]))setParameterValue(r,t,e.values[r][t])}export const getParameters=(e,t)=>e.filter((e=>e.in===t)).reduce(((e,t)=>{const{in:r,name:o}=t;return e[o]=getParameterValue(r||"",o),e}),{});const pathTemplateRegExp=/(?:{)(\w+)(?:})/g;export function getServerWithVariables(e,t=0){const r=e[t],o=getDefaultOrStoredVariables(r);return Object.assign(Object.assign({},r),{variables:o})}export function getInitialServerWithVariables(e){const t=fromSessionStorage("serverUrl"),r=e.find((e=>e.url===t))||e[0],o=getDefaultOrStoredVariables(r);return Object.assign(Object.assign({},r),{variables:o})}export function expandVariables(e,t={}){return e.replace(pathTemplateRegExp,((e,r)=>t[r]||e))}export function expandDefaultServerVariables(e,t={}){return e.replace(pathTemplateRegExp,((e,r)=>t[r]&&t[r].default||e))}export function getDefaultOrStoredVariables(e){if(!(null==e?void 0:e.variables))return{};const t=fromSessionStorage("variables"),r=t&&JSON.parse(t)||{},o={};return Object.entries(e.variables||{}).forEach((([e,t])=>{o[e]=r[e]||t.default||""})),o}export function updateVariablesStorage(e,t){const r=fromSessionStorage("variables"),o=r&&JSON.parse(r)||{};toSessionStorage("variables",JSON.stringify(Object.assign(Object.assign({},o),{[e]:t})))}export function unescapeQueryParams(e){return Object.entries(e).reduce(((e,[t,r])=>(e[unescapeFormId(t)]=r,e)),{})}export function getFileNameFromHeaders(e){const t="filename=";for(const[r,o]of Object.entries(e))if("content-disposition"===r.toLowerCase()){const e=o.split(";").find((e=>e.trim().startsWith(t)));if(e)return e.split(t)[1]}return""}export const makeRequestInterceptor=({requestInterceptor:e,sendXUserAgentInTryIt:t,disableTryItRequestUrlEncoding:r},o,a)=>n=>{var i,s;const{requestValues:u}=readAtom(operationStore(o.pointer));r&&(n=Object.assign(Object.assign({},n),{url:decodeURIComponent(n.url)})),t&&(n.headers["X-User-Agent"]="Redocly Try it API console");const c=(null===(i=null==u?void 0:u.header)||void 0===i?void 0:i.authorization)||(null===(s=null==u?void 0:u.header)||void 0===s?void 0:s.Authorization);return!a&&c&&(n.headers.Authorization=c),e?e(n,o):n};export function requiredValidator(e){if(!e)return"Field is required"}const getCookie=e=>{const t=document.cookie.match("\\b"+e+"=([^;]*)\\b");return t?t[1]:void 0};export function fromCookie(e){if("cookie"===e.in)return getCookie(e.name||"")}export const validateTokenEndpointMethod=e=>{if(!e)return!0;const t=Array.isArray(e)?e:[e];return!(t.length&&!t.includes("none")&&!t.includes("client_secret_basic"))};export const getOAuth2TokenEndpointAuthHeader=({authMethod:e,clientId:t,clientSecret:r})=>"client_secret_basic"===e||Array.isArray(e)&&e.includes("client_secret_basic")?{Authorization:`Basic ${btoa(t+":"+r)}`}:{};export function encodeSample(e,t){if(!e)return"";if(e.mime===MediaTypes.URL_ENCODED)return e.value;const r=e.value,o=t?merge(r,t,{arrayMerge:arrayMergeStrategy}):r;return JSON.stringify(o,null,2)}export const getStorageExampleKey=(e,t="",r,o)=>{let a=e+"_"+t;return r&&o&&Object.keys(o).includes(r)&&(a+="_"+r),a};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,2 +1,2 @@
1
- import{getRecoil}from"../recoil/nexus";import{createTrackingEvent}from"./creator";import{AnalyticsEventType}from"./types";import{activeMimeNameSelector}from"../recoil/app";import{operationStore}from"../recoil/operation";const codeSampleCopyEvent=createTrackingEvent(AnalyticsEventType.CodeSampleCopied);export const createCodeSampleCopyEvent=({operation:e,type:o,lang:t="",label:a=""})=>{const{activeExampleName:p}=getRecoil(operationStore(e.pointer));return codeSampleCopyEvent({resource:"Redocly_CodeSample",action:"CodeSampleCopied",operationId:e.id,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.name,exampleId:p||e.activeExampleName,exampleMimeType:getRecoil(activeMimeNameSelector),label:a,lang:t,type:o})};
1
+ import{readAtom}from"../jotai/nexus";import{createTrackingEvent}from"./creator";import{AnalyticsEventType}from"./types";import{activeMimeNameAtom}from"../jotai/app";import{operationStore}from"../jotai/operation";const codeSampleCopyEvent=createTrackingEvent(AnalyticsEventType.CodeSampleCopied);export const createCodeSampleCopyEvent=({operation:e,type:o,lang:t="",label:a=""})=>{const{activeExampleName:p}=readAtom(operationStore(e.pointer));return codeSampleCopyEvent({resource:"Redocly_CodeSample",action:"CodeSampleCopied",operationId:e.id,operationPath:e.path,operationHttpVerb:e.httpVerb,operationSummary:e.name,exampleId:p||e.activeExampleName,exampleMimeType:readAtom(activeMimeNameAtom),label:a,lang:t,type:o})};
2
2
  //# sourceMappingURL=codeSampleCopy.js.map
@@ -1,6 +1,6 @@
1
1
  import type { LayoutVariant } from '@redocly/theme';
2
2
  import type { DropdownOption } from '../components/common';
3
- import type { OpenAPIDefinitionVersion } from '../recoil/store';
3
+ import type { OpenAPIDefinitionVersion } from '../jotai/store';
4
4
  import type { Options } from '../services/Options/types';
5
5
  import type { RouterType } from '../types';
6
6
  import type { OpenAPIParser } from '../services/OpenAPIParser';
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,o){var t={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&o.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(l=Object.getOwnPropertySymbols(e);r<l.length;r++)o.indexOf(l[r])<0&&Object.prototype.propertyIsEnumerable.call(e,l[r])&&(t[l[r]]=e[l[r]])}return t};import React,{useEffect,useCallback}from"react";import{useRecoilState,useRecoilValue}from"@redocly/recoil";import{useNavigate,useLocation}from"react-router-dom";import{activeVersionIdxSelector,layoutSelector,showRightPanelToggleSelector,collapsedSidebarSelector,versionPathSelector}from"../recoil/app";import{globalStore}from"../recoil/store";import{IS_BROWSER}from"../utils/dom";export function withStore(e){return o=>{var{portalOptions:t}=o,l=__rest(o,["portalOptions"]);const[r,a]=useRecoilState(layoutSelector),[i,s]=useRecoilState(showRightPanelToggleSelector),[n,c]=useRecoilState(collapsedSidebarSelector),{options:u,versions:p}=useRecoilValue(globalStore);useEffect((()=>{(null==t?void 0:t.layout)&&a(t.layout)}),[null==t?void 0:t.layout,a]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.collapsedSidebar)&&c(t.collapsedSidebar)}),[null==t?void 0:t.collapsedSidebar,c]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.showRightPanelToggle)&&s(t.showRightPanelToggle)}),[null==t?void 0:t.showRightPanelToggle,s]);const[d,S]=useRecoilState(activeVersionIdxSelector),[f,g]=useRecoilState(versionPathSelector),h=useNavigate(),v=useLocation(),b=useCallback((({idx:e})=>{if(void 0!==e){const o=p[e].id;if(IS_BROWSER&&o){const{hash:e,pathname:t,search:l}=v;h(`${t}${l}${e}`.replace(f,o))}S(e)}}),[v,h,S,f,p]),{parser:R}=(null==p?void 0:p[d])||{};return useEffect((()=>{(null==R?void 0:R.versionPath)&&g(R.versionPath)}),[null==R?void 0:R.versionPath,g]),R&&p.length?React.createElement(e,Object.assign({},l,{options:u,versions:p,layout:r,showRightPanelToggle:i,activeVersionIdx:d,onChangeActiveVersion:b,collapsedSidebar:n,parser:R})):null}}
1
+ var __rest=this&&this.__rest||function(o,e){var t={};for(var l in o)Object.prototype.hasOwnProperty.call(o,l)&&e.indexOf(l)<0&&(t[l]=o[l]);if(null!=o&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(l=Object.getOwnPropertySymbols(o);a<l.length;a++)e.indexOf(l[a])<0&&Object.prototype.propertyIsEnumerable.call(o,l[a])&&(t[l[a]]=o[l[a]])}return t};import React,{useEffect,useCallback}from"react";import{useAtom,useAtomValue}from"jotai";import{useNavigate,useLocation}from"react-router-dom";import{activeVersionIdxAtom,layoutAtom,showRightPanelToggleAtom,collapsedSidebarAtom,versionPathAtom}from"../jotai/app";import{globalStore}from"../jotai/store";import{IS_BROWSER}from"../utils/dom";export function withStore(o){return e=>{var{portalOptions:t}=e,l=__rest(e,["portalOptions"]);const[a,r]=useAtom(layoutAtom),[i,s]=useAtom(showRightPanelToggleAtom),[n,u]=useAtom(collapsedSidebarAtom),{options:c,versions:m}=useAtomValue(globalStore);useEffect((()=>{(null==t?void 0:t.layout)&&r(t.layout)}),[null==t?void 0:t.layout,r]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.collapsedSidebar)&&u(t.collapsedSidebar)}),[null==t?void 0:t.collapsedSidebar,u]),useEffect((()=>{"boolean"==typeof(null==t?void 0:t.showRightPanelToggle)&&s(t.showRightPanelToggle)}),[null==t?void 0:t.showRightPanelToggle,s]);const[p,d]=useAtom(activeVersionIdxAtom),[f,g]=useAtom(versionPathAtom),h=useNavigate(),v=useLocation(),b=useCallback((({idx:o})=>{if(void 0!==o){const e=m[o].id;if(IS_BROWSER&&e){const{hash:o,pathname:t,search:l}=v;h(`${t}${l}${o}`.replace(f,e))}d(o)}}),[v,h,d,f,m]),{parser:A}=(null==m?void 0:m[p])||{};return useEffect((()=>{(null==A?void 0:A.versionPath)&&g(A.versionPath)}),[null==A?void 0:A.versionPath,g]),A&&m.length?React.createElement(o,Object.assign({},l,{options:c,versions:m,layout:a,showRightPanelToggle:i,activeVersionIdx:p,onChangeActiveVersion:b,collapsedSidebar:n,parser:A})):null}}
2
2
  //# sourceMappingURL=withStore.js.map
@@ -1,2 +1,2 @@
1
- import{useCallback}from"react";import{useSetRecoilState}from"@redocly/recoil";import{getActiveMediaType}from"../models";import{operationStore}from"../recoil/operation";export function useActivateExample(e){const i=useSetRecoilState(operationStore((null==e?void 0:e.operation.pointer)||"no_operation_pointer")),o=e?getActiveMediaType(e):void 0;return useCallback((e=>{var t,a,l;if(o)if(o.examples&&(null===(t=o.schema)||void 0===t?void 0:t.oneOf)&&Object.keys(o.examples).includes(e)){const t=null===(l=null===(a=o.schema)||void 0===a?void 0:a.oneOf)||void 0===l?void 0:l.findIndex((i=>i.title===e));i(-1===t?i=>Object.assign(Object.assign({},i),{activeExampleName:e}):e=>{var i,a,l;return Object.assign(Object.assign({},e),{activeOneOf:t,activeExampleName:(null===(l=null===(a=null===(i=o.schema)||void 0===i?void 0:i.oneOf)||void 0===a?void 0:a[t])||void 0===l?void 0:l.title)||e.activeExampleName})})}else i((i=>Object.assign(Object.assign({},i),{activeExampleName:e})))}),[o,i])}
1
+ import{useCallback}from"react";import{useSetAtom}from"jotai";import{getActiveMediaType}from"../models";import{operationStore}from"../jotai/operation";export function useActivateExample(e){const i=useSetAtom(operationStore((null==e?void 0:e.operation.pointer)||"no_operation_pointer")),o=e?getActiveMediaType(e):void 0;return useCallback((e=>{var t,a,n;if(o)if(o.examples&&(null===(t=o.schema)||void 0===t?void 0:t.oneOf)&&Object.keys(o.examples).includes(e)){const t=null===(n=null===(a=o.schema)||void 0===a?void 0:a.oneOf)||void 0===n?void 0:n.findIndex((i=>i.title===e));i(-1===t?i=>Object.assign(Object.assign({},i),{activeExampleName:e}):e=>{var i,a,n,s;return Object.assign(Object.assign({},e),{activeOneOf:Object.assign(Object.assign({},e.activeOneOf),{[(null===(i=o.schema)||void 0===i?void 0:i.pointer)||""]:t}),activeExampleName:(null===(s=null===(n=null===(a=o.schema)||void 0===a?void 0:a.oneOf)||void 0===n?void 0:n[t])||void 0===s?void 0:s.title)||e.activeExampleName})})}else i((i=>Object.assign(Object.assign({},i),{activeExampleName:e})))}),[o,i])}
2
2
  //# sourceMappingURL=useActivateExample.js.map
@@ -1,2 +1,2 @@
1
- import{useEffect,useMemo}from"react";import{useSetRecoilState}from"@redocly/recoil";import{buildContentItems,Pagination}from"../services";import{flatMenuItemsSelector}from"../recoil/app";import{getLink}from"../components/SideMenu/MenuItem";import{isRootItem}from"../components/ContentItems/helpers";export const useContentItems=({options:e,parser:t})=>{const{contentItems:o,flatItems:n}=useMemo((()=>buildContentItems(t,e)),[e,t]),s=useSetRecoilState(flatMenuItemsSelector),{pagination:m}=e;return useEffect((()=>{s(flattenMenuItems(o,m))}),[o,m,s]),{flatItems:n,contentItems:o}};function flattenMenuItems(e,t,o=[]){return e.forEach((e=>{const n=getLink(e,t);let s=isRootItem(e);switch(t){case Pagination.Item:s=Boolean(n&&["tag","operation","schema"].includes(e.type));break;case Pagination.Section:s=Boolean(n&&["tag","schema"].includes(e.type))}s&&o.push({id:e.id,href:n,name:e.name}),e.items&&flattenMenuItems(e.items,t,o)})),o}
1
+ import{useEffect,useMemo}from"react";import{useSetAtom}from"jotai";import{buildContentItems,Pagination}from"../services";import{flatMenuItemsAtom}from"../jotai/app";import{getLink}from"../components/SideMenu/MenuItem";import{isRootItem}from"../components/ContentItems/helpers";export const useContentItems=({options:t,parser:e})=>{const{contentItems:o,flatItems:n}=useMemo((()=>buildContentItems(e,t)),[t,e]),m=useSetAtom(flatMenuItemsAtom),{pagination:s}=t;return useEffect((()=>{m(flattenMenuItems(o,s))}),[o,s,m]),{flatItems:n,contentItems:o}};function flattenMenuItems(t,e,o=[]){return t.forEach((t=>{const n=getLink(t,e);let m=isRootItem(t);switch(e){case Pagination.Item:m=Boolean(n&&["tag","operation","schema"].includes(t.type));break;case Pagination.Section:m=Boolean(n&&["tag","schema"].includes(t.type))}m&&o.push({id:t.id,href:n,name:t.name}),t.items&&flattenMenuItems(t.items,e,o)})),o}
2
2
  //# sourceMappingURL=useContentItems.js.map
@@ -13,4 +13,3 @@ export { JsonPointer } from './utils/JsonPointer';
13
13
  export { isOperationName } from './utils/openapi';
14
14
  export { OpenAPIParser } from './services';
15
15
  export { buildContentItems, normalizeOptions } from './services';
16
- export { useRecoilCallback } from '@redocly/recoil';
package/lib-esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{getOperation}from"./models/operation";export{Console}from"./components/rightPanel/Console";export{RequestSamples}from"./components/RequestSamples";export{PullRight,RedocResponse,RedocSchema,RedocExample,RedocRequestBody}from"./components/pluggable";export{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone,ThemeProviders,AppProvider,StoreProvider,getMarkdownHeaderId}from"./components/RedoclyOpenAPIDocs";export{JsonPointer}from"./utils/JsonPointer";export{isOperationName}from"./utils/openapi";export{OpenAPIParser}from"./services";export{buildContentItems,normalizeOptions}from"./services";export{useRecoilCallback}from"@redocly/recoil";
1
+ export{getOperation}from"./models/operation";export{Console}from"./components/rightPanel/Console";export{RequestSamples}from"./components/RequestSamples";export{PullRight,RedocResponse,RedocSchema,RedocExample,RedocRequestBody}from"./components/pluggable";export{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone,ThemeProviders,AppProvider,StoreProvider,getMarkdownHeaderId}from"./components/RedoclyOpenAPIDocs";export{JsonPointer}from"./utils/JsonPointer";export{isOperationName}from"./utils/openapi";export{OpenAPIParser}from"./services";export{buildContentItems,normalizeOptions}from"./services";
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,38 @@
1
+ import { LayoutVariant } from '@redocly/theme';
2
+ import type { CodeSampleConfig } from '../services';
3
+ import type { MenuLink } from '../types';
4
+ export type AppSessionStore = {
5
+ showRightPanelToggle: boolean;
6
+ collapsedSidebar: boolean;
7
+ activeVersionIdx: number;
8
+ versionPath: string;
9
+ };
10
+ export type AppLocalStore = {
11
+ layout: LayoutVariant;
12
+ activeSampleLanguage: CodeSampleConfig['lang'] | string;
13
+ };
14
+ export type AppStore = {
15
+ isSidebarOpened: boolean;
16
+ activeMimeName: string;
17
+ menuNextLinks: MenuLink[];
18
+ };
19
+ export declare const appStore: import("jotai").PrimitiveAtom<AppStore> & {
20
+ init: AppStore;
21
+ };
22
+ export declare const isSidebarOpenedAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
23
+ export declare const activeMimeNameAtom: import("jotai").WritableAtom<string, string[], void>;
24
+ export declare const flatMenuItemsAtom: import("jotai").WritableAtom<MenuLink[], MenuLink[][], void>;
25
+ /**
26
+ * appLocalStore saved to local storage
27
+ */
28
+ export declare const appLocalStore: import("jotai").WritableAtom<AppLocalStore, [AppLocalStore | typeof import("jotai/utils").RESET | ((prev: AppLocalStore) => AppLocalStore | typeof import("jotai/utils").RESET)], void>;
29
+ export declare const layoutAtom: import("jotai").WritableAtom<LayoutVariant, LayoutVariant[], void>;
30
+ export declare const activeSampleLanguageAtom: import("jotai").WritableAtom<string, string[], void>;
31
+ /**
32
+ * appSessionStore saved to session storage
33
+ */
34
+ export declare const appSessionStore: import("jotai").WritableAtom<AppSessionStore, [AppSessionStore | typeof import("jotai/utils").RESET | ((prev: AppSessionStore) => AppSessionStore | typeof import("jotai/utils").RESET)], void>;
35
+ export declare const showRightPanelToggleAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
36
+ export declare const collapsedSidebarAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
37
+ export declare const activeVersionIdxAtom: import("jotai").WritableAtom<number, number[], void>;
38
+ export declare const versionPathAtom: import("jotai").WritableAtom<string, string[], void>;
@@ -0,0 +1,2 @@
1
+ import{atom}from"jotai";import{atomWithStorage,createJSONStorage}from"jotai/utils";import{LayoutVariant}from"@redocly/theme";import{IS_BROWSER}from"../utils/dom";export const appStore=atom({isSidebarOpened:!0,activeMimeName:"",menuNextLinks:[]});export const isSidebarOpenedAtom=atom((e=>e(appStore).isSidebarOpened),((e,t,o)=>{const a=e(appStore);t(appStore,Object.assign(Object.assign({},a),{isSidebarOpened:o}))}));export const activeMimeNameAtom=atom((e=>e(appStore).activeMimeName),((e,t,o)=>{const a=e(appStore);t(appStore,Object.assign(Object.assign({},a),{activeMimeName:o}))}));export const flatMenuItemsAtom=atom((e=>e(appStore).menuNextLinks),((e,t,o)=>{const a=e(appStore);t(appStore,Object.assign(Object.assign({},a),{menuNextLinks:o}))}));export const appLocalStore=atomWithStorage("appLocalStore",{layout:LayoutVariant.THREE_PANEL,activeSampleLanguage:""});export const layoutAtom=atom((e=>e(appLocalStore).layout),((e,t,o=LayoutVariant.STACKED)=>{const a=e(appLocalStore);t(appLocalStore,Object.assign(Object.assign({},a),{layout:o}))}));export const activeSampleLanguageAtom=atom((e=>e(appLocalStore).activeSampleLanguage),((e,t,o)=>{const a=e(appLocalStore);t(appLocalStore,Object.assign(Object.assign({},a),{activeSampleLanguage:o}))}));export const appSessionStore=atomWithStorage("appSessionStore",{showRightPanelToggle:!0,collapsedSidebar:!1,activeVersionIdx:0,versionPath:""},IS_BROWSER?createJSONStorage((()=>sessionStorage)):void 0);export const showRightPanelToggleAtom=atom((e=>e(appSessionStore).showRightPanelToggle),((e,t,o)=>{const a=e(appSessionStore);t(appSessionStore,Object.assign(Object.assign({},a),{showRightPanelToggle:o}))}));export const collapsedSidebarAtom=atom((e=>e(appSessionStore).collapsedSidebar),((e,t,o)=>{const a=e(appSessionStore);t(appSessionStore,Object.assign(Object.assign({},a),{collapsedSidebar:o}))}));export const activeVersionIdxAtom=atom((e=>e(appSessionStore).activeVersionIdx),((e,t,o)=>{const a=e(appSessionStore);t(appSessionStore,Object.assign(Object.assign({},a),{activeVersionIdx:o}))}));export const versionPathAtom=atom((e=>e(appSessionStore).versionPath),((e,t,o)=>{const a=e(appSessionStore);o&&t(appSessionStore,Object.assign(Object.assign({},a),{versionPath:o}))}));
2
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1,5 @@
1
+ import type { Getter, Setter } from 'jotai';
2
+ export declare let readAtom: Getter;
3
+ export declare let writeAtom: Setter;
4
+ declare const JotaiNexus: () => null;
5
+ export default JotaiNexus;
@@ -0,0 +1,2 @@
1
+ import{useAtomCallback}from"jotai/utils";import{useCallback}from"react";export let readAtom;export let writeAtom;const JotaiNexus=()=>useAtomCallback(useCallback(((t,e)=>(readAtom=t,writeAtom=e,null)),[]))();export default JotaiNexus;
2
+ //# sourceMappingURL=nexus.js.map
@@ -0,0 +1,15 @@
1
+ import type { Server } from '../types/server';
2
+ export type OperationStore = {
3
+ activeExampleName?: string;
4
+ activeOneOf: {
5
+ [pointer: string]: number;
6
+ };
7
+ activeServer?: Server;
8
+ requestValues: {
9
+ [field: string]: any;
10
+ };
11
+ activeResponseTab: string;
12
+ };
13
+ export declare const operationStore: import("jotai/vanilla/utils/atomFamily").AtomFamily<any, import("jotai").PrimitiveAtom<OperationStore> & {
14
+ init: OperationStore;
15
+ }>;
@@ -0,0 +1,2 @@
1
+ import{atom}from"jotai";import{atomFamily}from"jotai/utils";import deepEqual from"fast-deep-equal";export const operationStore=atomFamily((e=>atom({activeExampleName:void 0,activeOneOf:{[e]:0},activeServer:void 0,requestValues:{},activeResponseTab:"200"})),deepEqual);
2
+ //# sourceMappingURL=operation.js.map
@@ -9,11 +9,13 @@ export type GlobalStore = {
9
9
  options: Options;
10
10
  versions: Array<OpenAPIDefinitionVersion>;
11
11
  };
12
- export declare const globalStore: import("@redocly/recoil").RecoilState<GlobalStore>;
13
- export type GlobalStoreSelector = {
12
+ export declare const globalStore: import("jotai").PrimitiveAtom<GlobalStore> & {
13
+ init: GlobalStore;
14
+ };
15
+ export type GlobalStoreAtom = {
14
16
  parser: OpenAPIParser;
15
17
  options: Options;
16
18
  hasVersions: boolean;
17
19
  };
18
- export declare const globalStoreSelector: import("@redocly/recoil").RecoilValueReadOnly<GlobalStoreSelector>;
19
- export declare const globalOptionsSelector: import("@redocly/recoil").RecoilValueReadOnly<Options>;
20
+ export declare const globalStoreAtom: import("jotai").Atom<GlobalStoreAtom>;
21
+ export declare const globalOptionsAtom: import("jotai").Atom<Options>;
@@ -0,0 +1,2 @@
1
+ import{atom}from"jotai";import{activeVersionIdxAtom}from"./app";export const globalStore=atom({options:{},versions:[]});export const globalStoreAtom=atom((o=>{var t;const{versions:r,options:s}=o(globalStore);return{parser:null===(t=r[o(activeVersionIdxAtom)||0])||void 0===t?void 0:t.parser,options:s,hasVersions:r.length>1}}));export const globalOptionsAtom=atom((o=>o(globalStore).options));
2
+ //# sourceMappingURL=store.js.map
@@ -1,2 +1,2 @@
1
- import{getRecoil}from"../recoil/nexus";import{mergeSimilarMediaTypes}from"../utils";import{getMediaType}from"./mediaType";import{activeMimeNameSelector}from"../recoil/app";export function getMediaContent({parser:e,info:t,isRequestType:i,options:o,data:{operation:r,type:a,response:p,absolutePointer:m=""}}){o.unstable_ignoreMimeParameters&&(t=mergeSimilarMediaTypes(t));const s=Object.keys(t).map((s=>getMediaType(e,s,i,t[s],o,{operation:r,type:a,response:p,absolutePointer:m}))),n=s.filter((e=>!!e.examples)).length>0;return{mediaTypes:s,isRequestType:i,hasSample:n,operation:r}}export function getActiveMediaType(e,t){const i=t||getRecoil(activeMimeNameSelector);return i&&e.mediaTypes.find((e=>e.name===i))||e.mediaTypes[0]}
1
+ import{readAtom}from"../jotai/nexus";import{mergeSimilarMediaTypes}from"../utils";import{getMediaType}from"./mediaType";import{activeMimeNameAtom}from"../jotai/app";export function getMediaContent({parser:e,info:t,isRequestType:i,options:a,data:{operation:o,type:r,response:p,absolutePointer:m=""}}){a.unstable_ignoreMimeParameters&&(t=mergeSimilarMediaTypes(t));const s=Object.keys(t).map((s=>getMediaType(e,s,i,t[s],a,{operation:o,type:r,response:p,absolutePointer:m}))),n=s.filter((e=>!!e.examples)).length>0;return{mediaTypes:s,isRequestType:i,hasSample:n,operation:o}}export function getActiveMediaType(e,t){const i=t||readAtom(activeMimeNameAtom);return i&&e.mediaTypes.find((e=>e.name===i))||e.mediaTypes[0]}
2
2
  //# sourceMappingURL=mediaContent.js.map
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(i,a){function s(e){try{c(r.next(e))}catch(e){a(e)}}function n(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(s,n)}c((r=r.apply(e,t||[])).next())}))};import{getRecoil}from"../../recoil/nexus";import{SearchStore}from"./SearchStore";import{DEFAULT_SEARCH_MAX_DEPTH}from"../../constants";import{globalStoreSelector}from"../../recoil/store";import{getActiveMediaType}from"../../models/mediaContent";import{getOperation}from"../../models/operation";import{operationStore}from"../../recoil/operation";import{normalizeText}from"../../utils";function removeMarkdown(e){return normalizeText(e).replace(/\[(.*?)][[(].*?[\])]/g,"$1")}export class DeepSearchStore extends SearchStore{constructor(e){super(),Object.defineProperty(this,"operationTitleBoost",{enumerable:!0,configurable:!0,writable:!0,value:4}),Object.defineProperty(this,"tagTitleBoost",{enumerable:!0,configurable:!0,writable:!0,value:8}),Object.defineProperty(this,"fieldLevelBoost",{enumerable:!0,configurable:!0,writable:!0,value:.95}),Object.defineProperty(this,"pathOnly",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"searchMaxDepth",{enumerable:!0,configurable:!0,writable:!0,value:DEFAULT_SEARCH_MAX_DEPTH}),e.searchOperationTitleBoost&&(this.operationTitleBoost=e.searchOperationTitleBoost),e.searchTagTitleBoost&&(this.tagTitleBoost=e.searchTagTitleBoost),e.searchFieldLevelBoost&&(this.fieldLevelBoost=e.searchFieldLevelBoost),"path-only"===e.searchMode&&(this.pathOnly=!0),e.searchMaxDepth&&(this.searchMaxDepth=e.searchMaxDepth)}indexItems(e){const t=e=>{e&&e.forEach((e=>{if("operation"===e.type&&this.pathOnly){const t=e;this.add(t.path,"",{menuId:t.id,boost:this.operationTitleBoost})}else{if("group"===e.type||this.pathOnly||(this.add(e.name,"operation"===e.type?e.path:"",{menuId:e.id,boost:"operation"===e.type?this.operationTitleBoost:this.tagTitleBoost}),e.description&&this.add("",removeMarkdown(e.description||""),{menuId:e.id})),"operation"===e.type){const t=e.operationDefinition,{parser:o,options:r}=getRecoil(globalStoreSelector),i=getOperation(o,t,void 0,r,e.href);for(const t of i.parameters||[])this.add(t.name,removeMarkdown(t.description),{menuId:e.id,place:"parameters",path:[t.name]});const a=i.requestBody&&i.requestBody.content&&getActiveMediaType(i.requestBody.content).schema;this.indexSchema(a,e.id,"request fields"),i.responses.forEach((t=>{const o=t.content&&getActiveMediaType(t.content).schema;o&&this.indexSchema(o,e.id,`response ${t.code} fields`)}))}t(e.items)}}))};t(e),this.searchWorker.done()}indexSchema(e,t,o,r=[],i=0){if(!e)return;if(i>this.searchMaxDepth||e.isCircular)return;const{activeOneOf:a}=getRecoil(operationStore(e.deps.operation.pointer));if((e=e.oneOf&&e.oneOf[a]||e).fields)for(const a of e.fields){const e=r.concat([a.name]);"additionalProperties"!==a.kind&&(this.add(a.name,removeMarkdown(a.description),{menuId:t,place:o,path:e,boost:Math.pow(this.fieldLevelBoost,i)}),this.indexSchema(a.schema,t,o,e,i+1))}e.items&&this.indexSchema(e.items,t,o,r,i+1)}add(e,t,o){this.searchWorker.add(e,t,o)}search(e){return __awaiter(this,void 0,void 0,(function*(){return yield this.searchWorker.search(e)}))}toJS(){return __awaiter(this,void 0,void 0,(function*(){return this.searchWorker.toJS()}))}dispose(){"terminate"in this.searchWorker&&this.searchWorker.terminate(),this.searchWorker.dispose&&this.searchWorker.dispose()}}
1
+ var __awaiter=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(i,a){function n(e){try{h(r.next(e))}catch(e){a(e)}}function s(e){try{h(r.throw(e))}catch(e){a(e)}}function h(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(n,s)}h((r=r.apply(e,t||[])).next())}))};import{readAtom}from"../../jotai/nexus";import{SearchStore}from"./SearchStore";import{DEFAULT_SEARCH_MAX_DEPTH}from"../../constants";import{globalStoreAtom}from"../../jotai/store";import{getActiveMediaType}from"../../models/mediaContent";import{getOperation}from"../../models/operation";import{operationStore}from"../../jotai/operation";import{normalizeText}from"../../utils";function removeMarkdown(e){return normalizeText(e).replace(/\[(.*?)][[(].*?[\])]/g,"$1")}export class DeepSearchStore extends SearchStore{constructor(e){super(),Object.defineProperty(this,"operationTitleBoost",{enumerable:!0,configurable:!0,writable:!0,value:4}),Object.defineProperty(this,"tagTitleBoost",{enumerable:!0,configurable:!0,writable:!0,value:8}),Object.defineProperty(this,"fieldLevelBoost",{enumerable:!0,configurable:!0,writable:!0,value:.95}),Object.defineProperty(this,"pathOnly",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"searchMaxDepth",{enumerable:!0,configurable:!0,writable:!0,value:DEFAULT_SEARCH_MAX_DEPTH}),e.searchOperationTitleBoost&&(this.operationTitleBoost=e.searchOperationTitleBoost),e.searchTagTitleBoost&&(this.tagTitleBoost=e.searchTagTitleBoost),e.searchFieldLevelBoost&&(this.fieldLevelBoost=e.searchFieldLevelBoost),"path-only"===e.searchMode&&(this.pathOnly=!0),e.searchMaxDepth&&(this.searchMaxDepth=e.searchMaxDepth)}indexItems(e){const t=e=>{e&&e.forEach((e=>{if("operation"===e.type&&this.pathOnly){const t=e;this.add(t.path,"",{menuId:t.id,boost:this.operationTitleBoost})}else{if("group"===e.type||this.pathOnly||(this.add(e.name,"operation"===e.type?e.path:"",{menuId:e.id,boost:"operation"===e.type?this.operationTitleBoost:this.tagTitleBoost}),e.description&&this.add("",removeMarkdown(e.description||""),{menuId:e.id})),"operation"===e.type){const t=e.operationDefinition,{parser:o,options:r}=readAtom(globalStoreAtom),i=getOperation(o,t,void 0,r,e.href);for(const t of i.parameters||[])this.add(t.name,removeMarkdown(t.description),{menuId:e.id,place:"parameters",path:[t.name]});const a=i.requestBody&&i.requestBody.content&&getActiveMediaType(i.requestBody.content).schema;this.indexSchema(a,e.id,"request fields"),i.responses.forEach((t=>{const o=t.content&&getActiveMediaType(t.content).schema;o&&this.indexSchema(o,e.id,`response ${t.code} fields`)}))}t(e.items)}}))};t(e),this.searchWorker.done()}indexSchema(e,t,o,r=[],i=0){var a;if(!e)return;if(i>this.searchMaxDepth||e.isCircular)return;const{activeOneOf:n}=readAtom(operationStore(e.deps.operation.pointer)),s=null!==(a=n[e.pointer])&&void 0!==a?a:0;if((e=e.oneOf&&e.oneOf[s]||e).fields)for(const a of e.fields){const e=r.concat([a.name]);"additionalProperties"!==a.kind&&(this.add(a.name,removeMarkdown(a.description),{menuId:t,place:o,path:e,boost:Math.pow(this.fieldLevelBoost,i)}),this.indexSchema(a.schema,t,o,e,i+1))}e.items&&this.indexSchema(e.items,t,o,r,i+1)}add(e,t,o){this.searchWorker.add(e,t,o)}search(e){return __awaiter(this,void 0,void 0,(function*(){return yield this.searchWorker.search(e)}))}toJS(){return __awaiter(this,void 0,void 0,(function*(){return this.searchWorker.toJS()}))}dispose(){"terminate"in this.searchWorker&&this.searchWorker.terminate(),this.searchWorker.dispose&&this.searchWorker.dispose()}}
2
2
  //# sourceMappingURL=DeepSearchStore.js.map
@@ -3,7 +3,7 @@ import type { Node } from '@markdoc/markdoc';
3
3
  import type { OpenAPIDefinition, OpenAPIInfo, OpenAPIOperation, OpenAPIParameter, OpenAPISchema, OpenAPIServer, OpenAPITag, Referenced, Server } from '../types';
4
4
  import type { OperationModel, Sample } from '../models';
5
5
  import type { OAuth2 } from './OAuth2';
6
- import type { GlobalStoreSelector } from '../recoil/store';
6
+ import type { GlobalStoreAtom } from '../jotai/store';
7
7
  export declare enum SideNavStyle {
8
8
  SummaryOnly = "summary-only",
9
9
  PathFirst = "path-first",
@@ -76,7 +76,7 @@ export type MergedOpenAPISchema = OpenAPISchema & {
76
76
  };
77
77
  export interface MDXComponentMeta {
78
78
  component: React.ComponentType;
79
- propsSelector: (oldStore?: GlobalStoreSelector, store?: GlobalStoreSelector) => GenericObject;
79
+ propsSelector: (oldStore?: GlobalStoreAtom, store?: GlobalStoreAtom) => GenericObject;
80
80
  props?: GenericObject;
81
81
  }
82
82
  export interface MarkdownHeading {
@@ -13,10 +13,10 @@ import 'core-js/es/string/starts-with';
13
13
  import 'core-js/es/symbol';
14
14
  import 'unfetch/polyfill/index';
15
15
  import 'url-polyfill';
16
+ import { LayoutVariant } from '@redocly/theme';
16
17
  import type { OpenAPIDefinition } from './types';
17
18
  import type { RawOptions } from './services/Options/types';
18
19
  import type { StoreProviderProps } from './components';
19
- import type { LayoutVariant } from '@redocly/theme';
20
20
  import type { SpecVersions } from './services/types';
21
21
  export { setSecurityDetails, setParameterValue, setSecurityDetailsVariants } from './utils';
22
22
  export declare function toggleLayout(layout?: LayoutVariant): void;
@@ -1,2 +1,2 @@
1
- import"core-js/es/array/find-index";import"core-js/es/array/find";import"core-js/es/array/includes";import"core-js/es/map";import"core-js/es/number/is-integer";import"core-js/es/object/assign";import"core-js/es/object/entries";import"core-js/es/object/is";import"core-js/es/object/values";import"core-js/es/promise";import"core-js/es/string/ends-with";import"core-js/es/string/starts-with";import"core-js/es/symbol";import"unfetch/polyfill/index";import"url-polyfill";import{dirname}from"path";import React from"react";import{hydrate as hydrateComponent,render}from"react-dom";import{setRecoil,getRecoil}from"./recoil/nexus";import{querySelector,IS_BROWSER,getJsUrl}from"./utils";import{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone}from"./components";import{RedoclyOpenAPIDocsMultiStandalone}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocsMultiStandalone";import{appLocalStore,appSessionStore}from"./recoil/app";export{setSecurityDetails,setParameterValue,setSecurityDetailsVariants}from"./utils";export function toggleLayout(e){const t=getRecoil(appLocalStore);setRecoil(appLocalStore,Object.assign(Object.assign({},t),{layout:e}))}export function toggleRightPanel(e){const t=getRecoil(appSessionStore);setRecoil(appSessionStore,Object.assign(Object.assign({},t),{showRightPanelToggle:e}))}const url=getJsUrl(),__dirname=url?dirname(url)+"/":"";function attributesMap(e){const t={},o=e.attributes;for(let e=0;e<o.length;e++){const r=o[e];t[r.name]=r.value}return t}function parseOptionsFromElement(e){const t=attributesMap(e),o={};for(const e in t){o[e.replace(/-(.)/g,((e,t)=>t.toUpperCase()))]=t[e]}return o}export function hydrate(e,t=document.querySelector("redoc")){hydrateComponent(React.createElement(RedoclyOpenAPIDocs,{store:e}),t)}export function init(e,t={},o=querySelector("redoc"),r){if(null===o)throw new Error('"element" argument is not provided and <redoc> tag is not found on the page');let n,i;"object"==typeof e&&"versions"in e?render(React.createElement(RedoclyOpenAPIDocsMultiStandalone,{definitions:e,options:Object.assign(Object.assign({},t),parseOptionsFromElement(o))},["Loading..."]),o,r):("string"==typeof e?n=e:"object"==typeof e&&(i=e),render(React.createElement(RedoclyOpenAPIDocsStandalone,{definition:i,definitionUrl:n,options:Object.assign(Object.assign({},t),parseOptionsFromElement(o))},["Loading..."]),o,r))}export function setPublicPath(e){__webpack_public_path__=e}export const version=__REDOCLY_API_REFERENCE_VERSION__;export const revision=__REDOCLY_API_REFERENCE_REVISION__;function autoInit(){const e=querySelector("redoc");if(!e)return;const t=e.getAttribute("spec-url");t&&init(t,{},e)}IS_BROWSER&&setPublicPath(__dirname),autoInit();
1
+ import"core-js/es/array/find-index";import"core-js/es/array/find";import"core-js/es/array/includes";import"core-js/es/map";import"core-js/es/number/is-integer";import"core-js/es/object/assign";import"core-js/es/object/entries";import"core-js/es/object/is";import"core-js/es/object/values";import"core-js/es/promise";import"core-js/es/string/ends-with";import"core-js/es/string/starts-with";import"core-js/es/symbol";import"unfetch/polyfill/index";import"url-polyfill";import{dirname}from"path";import React from"react";import{hydrate as hydrateComponent,render}from"react-dom";import{LayoutVariant}from"@redocly/theme";import{writeAtom,readAtom}from"./jotai/nexus";import{querySelector,IS_BROWSER,getJsUrl}from"./utils";import{RedoclyOpenAPIDocs,RedoclyOpenAPIDocsStandalone}from"./components";import{RedoclyOpenAPIDocsMultiStandalone}from"./components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocsMultiStandalone";import{appLocalStore,appSessionStore}from"./jotai/app";export{setSecurityDetails,setParameterValue,setSecurityDetailsVariants}from"./utils";export function toggleLayout(e=LayoutVariant.THREE_PANEL){const t=readAtom(appLocalStore);writeAtom(appLocalStore,Object.assign(Object.assign({},t),{layout:e}))}export function toggleRightPanel(e){const t=readAtom(appSessionStore);writeAtom(appSessionStore,Object.assign(Object.assign({},t),{showRightPanelToggle:Boolean(e)}))}const url=getJsUrl(),__dirname=url?dirname(url)+"/":"";function attributesMap(e){const t={},o=e.attributes;for(let e=0;e<o.length;e++){const r=o[e];t[r.name]=r.value}return t}function parseOptionsFromElement(e){const t=attributesMap(e),o={};for(const e in t){o[e.replace(/-(.)/g,((e,t)=>t.toUpperCase()))]=t[e]}return o}export function hydrate(e,t=document.querySelector("redoc")){hydrateComponent(React.createElement(RedoclyOpenAPIDocs,{store:e}),t)}export function init(e,t={},o=querySelector("redoc"),r){if(null===o)throw new Error('"element" argument is not provided and <redoc> tag is not found on the page');let n,i;"object"==typeof e&&"versions"in e?render(React.createElement(RedoclyOpenAPIDocsMultiStandalone,{definitions:e,options:Object.assign(Object.assign({},t),parseOptionsFromElement(o))},["Loading..."]),o,r):("string"==typeof e?n=e:"object"==typeof e&&(i=e),render(React.createElement(RedoclyOpenAPIDocsStandalone,{definition:i,definitionUrl:n,options:Object.assign(Object.assign({},t),parseOptionsFromElement(o))},["Loading..."]),o,r))}export function setPublicPath(e){__webpack_public_path__=e}export const version=__REDOCLY_API_REFERENCE_VERSION__;export const revision=__REDOCLY_API_REFERENCE_REVISION__;function autoInit(){const e=querySelector("redoc");if(!e)return;const t=e.getAttribute("spec-url");t&&init(t,{},e)}IS_BROWSER&&setPublicPath(__dirname),autoInit();
2
2
  //# sourceMappingURL=standalone.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.0.0-alpha.69",
3
+ "version": "3.0.0-alpha.71",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -47,7 +47,7 @@
47
47
  "react-codemirror2-react-17": "1.0.0",
48
48
  "react-router-dom": "^6.10.0",
49
49
  "react-tabs": "^3.1.1",
50
- "@redocly/recoil": "^0.7.8",
50
+ "jotai": "^2.4.2",
51
51
  "slugify": "^1.4.4",
52
52
  "stickyfill": "^1.1.1",
53
53
  "stringify-object": "^3.3.0",
@@ -114,7 +114,7 @@
114
114
  "webpack-cli": "^5.1.4",
115
115
  "webpack-dev-server": "^4.15.1",
116
116
  "workerize-loader": "github:redocly/workerize-loader#webpack-5-dist",
117
- "@redocly/theme": "0.28.0"
117
+ "@redocly/theme": "0.30.1"
118
118
  },
119
119
  "scripts": {
120
120
  "start": "webpack serve --mode=development --hot",