@redocly/reference-docs 2.2.0-beta.circular.1 → 2.2.3

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 (255) hide show
  1. package/bin/cli/commands/redocly-docs-cli.min.js +43 -43
  2. package/dist/console.redocly-reference-docs.min.js +3 -3
  3. package/dist/oauth2-redirect.js +2 -2
  4. package/dist/redocly-reference-docs.min.js +18 -18
  5. package/lib/components/Endpoint/Endpoint.d.ts +2 -2
  6. package/lib/components/Endpoint/Endpoint.js +1 -1
  7. package/lib/components/Endpoint/ServerList.d.ts +2 -2
  8. package/lib/components/Endpoint/ServerList.js +1 -1
  9. package/lib/components/Endpoint/Summary.d.ts +2 -2
  10. package/lib/components/Endpoint/Summary.js +1 -1
  11. package/lib/components/NextSectionButton.js +1 -1
  12. package/lib/components/Overlay.js +1 -1
  13. package/lib/components/Panel/Accordion.js +1 -1
  14. package/lib/components/Panel/PanelBody.d.ts +1 -1
  15. package/lib/components/Panel/PanelBody.js +1 -1
  16. package/lib/components/Panel/PanelComponent.d.ts +2 -3
  17. package/lib/components/Panel/PanelComponent.js +1 -1
  18. package/lib/components/Panel/ResponsePanel.js +1 -1
  19. package/lib/components/ProProviders.d.ts +3 -1
  20. package/lib/components/ProProviders.js +1 -1
  21. package/lib/components/RedoclyReferenceDocs.d.ts +3 -3
  22. package/lib/components/RedoclyReferenceDocs.js +1 -1
  23. package/lib/components/Samples/ExampleSwitch.d.ts +1 -1
  24. package/lib/components/Samples/ExampleSwitch.js +1 -1
  25. package/lib/components/Samples/SamplesTabs.js +1 -1
  26. package/lib/components/Search/MenuItemProSearch.d.ts +4 -4
  27. package/lib/components/Search/ProSearchBox.d.ts +6 -6
  28. package/lib/components/Search/ProSearchBox.js +1 -1
  29. package/lib/components/Search/SearchField.js +1 -1
  30. package/lib/components/Search/styled.d.ts +3 -3
  31. package/lib/components/StoreProvider.d.ts +4 -4
  32. package/lib/components/StoreProvider.js +1 -1
  33. package/lib/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
  34. package/lib/components/common/Checkbox.js +1 -1
  35. package/lib/components/common/FileUpload/FileUpload.d.ts +3 -6
  36. package/lib/components/common/FileUpload/FileUpload.js +1 -1
  37. package/lib/components/common/FileUpload/helper.d.ts +12 -4
  38. package/lib/components/common/FileUpload/helper.js +1 -1
  39. package/lib/components/common/TextField.d.ts +3 -3
  40. package/lib/components/common/TextField.js +1 -1
  41. package/lib/components/console/AuthPanel.d.ts +2 -0
  42. package/lib/components/console/AuthPanel.js +1 -1
  43. package/lib/components/console/Console.d.ts +9 -3
  44. package/lib/components/console/Console.js +1 -1
  45. package/lib/components/console/OAuth2Flow.d.ts +2 -0
  46. package/lib/components/console/OAuth2Flow.js +1 -1
  47. package/lib/components/console/OAuth2TokenInput.d.ts +2 -0
  48. package/lib/components/console/OAuth2TokenInput.js +1 -1
  49. package/lib/components/console/OpenIDConnect.d.ts +2 -0
  50. package/lib/components/console/OpenIDConnect.js +1 -1
  51. package/lib/components/console/OperationParameters.d.ts +1 -1
  52. package/lib/components/console/OperationParameters.js +1 -1
  53. package/lib/components/console/RequestBody.js +1 -1
  54. package/lib/components/console/RequestBodyForm.d.ts +7 -0
  55. package/lib/components/console/RequestBodyForm.js +2 -0
  56. package/lib/components/console/ResponsePanel.d.ts +4 -4
  57. package/lib/components/console/ResponsePanel.js +1 -1
  58. package/lib/components/console/ServerDropdown.d.ts +1 -1
  59. package/lib/components/console/ServerDropdown.js +1 -1
  60. package/lib/components/index.d.ts +1 -0
  61. package/lib/index.d.ts +1 -1
  62. package/lib/models/file-upload.d.ts +16 -0
  63. package/lib/models/file-upload.js +2 -0
  64. package/lib/models/index.d.ts +1 -0
  65. package/lib/models/index.js +1 -1
  66. package/lib/redoc-lib/src/common-elements/LinkToField.d.ts +3 -2
  67. package/lib/redoc-lib/src/common-elements/LinkToField.js +1 -1
  68. package/lib/redoc-lib/src/components/ApiLogo/ApiLogo.js +1 -1
  69. package/lib/redoc-lib/src/components/ApiLogo/styled.elements.d.ts +5 -2
  70. package/lib/redoc-lib/src/components/ApiLogo/styled.elements.js +1 -1
  71. package/lib/redoc-lib/src/components/CallbackSamples/CallbackReqSamples.js +1 -1
  72. package/lib/redoc-lib/src/components/CallbackSamples/CallbackSamples.js +1 -1
  73. package/lib/redoc-lib/src/components/PayloadSamples/MediaTypeSamples.js +1 -1
  74. package/lib/redoc-lib/src/components/PayloadSamples/PayloadSamples.d.ts +5 -7
  75. package/lib/redoc-lib/src/components/PayloadSamples/PayloadSamples.js +1 -1
  76. package/lib/redoc-lib/src/components/RequestSamples/CodeSample.d.ts +2 -1
  77. package/lib/redoc-lib/src/components/RequestSamples/CodeSample.js +1 -1
  78. package/lib/redoc-lib/src/components/RequestSamples/RequestSamples.d.ts +4 -3
  79. package/lib/redoc-lib/src/components/RequestSamples/RequestSamples.js +1 -1
  80. package/lib/redoc-lib/src/components/RequestSamples/useCodeSamples.d.ts +4 -16
  81. package/lib/redoc-lib/src/components/RequestSamples/useCodeSamples.js +1 -1
  82. package/lib/redoc-lib/src/components/ResponseSamples/ResponseSamples.js +1 -1
  83. package/lib/redoc-lib/src/components/SideMenu/MenuItem.js +1 -1
  84. package/lib/redoc-lib/src/components/SourceCode/SourceCode.d.ts +2 -9
  85. package/lib/redoc-lib/src/services/MenuBuilder.d.ts +1 -0
  86. package/lib/redoc-lib/src/services/OpenAPIParser.js +1 -1
  87. package/lib/redoc-lib/src/services/RedocNormalizedOptions.d.ts +8 -1
  88. package/lib/redoc-lib/src/services/RedocNormalizedOptions.js +1 -1
  89. package/lib/redoc-lib/src/services/ScrollService.js +1 -1
  90. package/lib/redoc-lib/src/services/models/Example.js +1 -1
  91. package/lib/redoc-lib/src/services/models/Field.d.ts +1 -1
  92. package/lib/redoc-lib/src/services/models/Operation.d.ts +7 -2
  93. package/lib/redoc-lib/src/services/models/Operation.js +1 -1
  94. package/lib/redoc-lib/src/services/models/Schema.d.ts +2 -3
  95. package/lib/redoc-lib/src/services/models/Schema.js +1 -1
  96. package/lib/redoc-lib/src/theme.d.ts +1 -0
  97. package/lib/redoc-lib/src/types/open-api.d.ts +2 -0
  98. package/lib/redoc-lib/src/utils/JsonPointer.d.ts +5 -5
  99. package/lib/redoc-lib/src/utils/JsonPointer.js +1 -1
  100. package/lib/redoc-lib/src/utils/loadAndBundleSpec.js +1 -1
  101. package/lib/redoc-lib/src/utils/memoize.js +1 -1
  102. package/lib/redoc-lib/src/utils/openapi.d.ts +0 -2
  103. package/lib/services/ProMenu.d.ts +2 -5
  104. package/lib/services/ProStore.d.ts +4 -2
  105. package/lib/services/ProStore.js +1 -1
  106. package/lib/services/SearchStore.d.ts +1 -0
  107. package/lib/services/SearchStore.js +1 -1
  108. package/lib/services/code-samples/generator.d.ts +1 -1
  109. package/lib/services/code-samples/generator.js +1 -1
  110. package/lib/services/code-samples/httpsnippet/helpers/code-helpers.d.ts +1 -1
  111. package/lib/services/code-samples/httpsnippet/helpers/reducer.d.ts +1 -1
  112. package/lib/services/code-samples/httpsnippet/targets/java8/apachehttp.d.ts +0 -1
  113. package/lib/services/code-samples/httpsnippet/targets/java8/apachehttp.js +1 -1
  114. package/lib/services/code-samples/httpsnippet/targets/php/utils.d.ts +1 -1
  115. package/lib/services/code-samples/httpsnippet/targets/php/utils.js +1 -1
  116. package/lib/services/extendTheme.d.ts +4 -4
  117. package/lib/services/extendTheme.js +1 -1
  118. package/lib/services/history/ProHashHistoryService.d.ts +1 -1
  119. package/lib/services/history/PushStateHistoryService.d.ts +1 -1
  120. package/lib/services/history/helpers.js +1 -1
  121. package/lib/services/utils.d.ts +2 -1
  122. package/lib/services/utils.js +1 -1
  123. package/lib/standalone.d.ts +4 -3
  124. package/lib/standalone.js +1 -1
  125. package/lib/utils.d.ts +1 -1
  126. package/lib-esm/components/Endpoint/Endpoint.d.ts +2 -2
  127. package/lib-esm/components/Endpoint/Endpoint.js +1 -1
  128. package/lib-esm/components/Endpoint/ServerList.d.ts +2 -2
  129. package/lib-esm/components/Endpoint/ServerList.js +1 -1
  130. package/lib-esm/components/Endpoint/Summary.d.ts +2 -2
  131. package/lib-esm/components/Endpoint/Summary.js +1 -1
  132. package/lib-esm/components/NextSectionButton.js +1 -1
  133. package/lib-esm/components/Overlay.js +1 -1
  134. package/lib-esm/components/Panel/Accordion.js +1 -1
  135. package/lib-esm/components/Panel/PanelBody.d.ts +1 -1
  136. package/lib-esm/components/Panel/PanelBody.js +1 -1
  137. package/lib-esm/components/Panel/PanelComponent.d.ts +2 -3
  138. package/lib-esm/components/Panel/PanelComponent.js +1 -1
  139. package/lib-esm/components/Panel/ResponsePanel.js +1 -1
  140. package/lib-esm/components/ProProviders.d.ts +3 -1
  141. package/lib-esm/components/ProProviders.js +1 -1
  142. package/lib-esm/components/RedoclyReferenceDocs.d.ts +3 -3
  143. package/lib-esm/components/RedoclyReferenceDocs.js +1 -1
  144. package/lib-esm/components/Samples/ExampleSwitch.d.ts +1 -1
  145. package/lib-esm/components/Samples/ExampleSwitch.js +1 -1
  146. package/lib-esm/components/Samples/SamplesTabs.js +1 -1
  147. package/lib-esm/components/Search/MenuItemProSearch.d.ts +4 -4
  148. package/lib-esm/components/Search/ProSearchBox.d.ts +6 -6
  149. package/lib-esm/components/Search/ProSearchBox.js +1 -1
  150. package/lib-esm/components/Search/SearchField.js +1 -1
  151. package/lib-esm/components/Search/styled.d.ts +3 -3
  152. package/lib-esm/components/StoreProvider.d.ts +4 -4
  153. package/lib-esm/components/StoreProvider.js +1 -1
  154. package/lib-esm/components/Tabs/CollapsingTabs/CollapsingTabsBase.js +1 -1
  155. package/lib-esm/components/common/Checkbox.js +1 -1
  156. package/lib-esm/components/common/FileUpload/FileUpload.d.ts +3 -6
  157. package/lib-esm/components/common/FileUpload/FileUpload.js +1 -1
  158. package/lib-esm/components/common/FileUpload/helper.d.ts +12 -4
  159. package/lib-esm/components/common/FileUpload/helper.js +1 -1
  160. package/lib-esm/components/common/TextField.d.ts +3 -3
  161. package/lib-esm/components/common/TextField.js +1 -1
  162. package/lib-esm/components/console/AuthPanel.d.ts +2 -0
  163. package/lib-esm/components/console/AuthPanel.js +1 -1
  164. package/lib-esm/components/console/Console.d.ts +9 -3
  165. package/lib-esm/components/console/Console.js +1 -1
  166. package/lib-esm/components/console/OAuth2Flow.d.ts +2 -0
  167. package/lib-esm/components/console/OAuth2Flow.js +1 -1
  168. package/lib-esm/components/console/OAuth2TokenInput.d.ts +2 -0
  169. package/lib-esm/components/console/OAuth2TokenInput.js +1 -1
  170. package/lib-esm/components/console/OpenIDConnect.d.ts +2 -0
  171. package/lib-esm/components/console/OpenIDConnect.js +1 -1
  172. package/lib-esm/components/console/OperationParameters.d.ts +1 -1
  173. package/lib-esm/components/console/OperationParameters.js +1 -1
  174. package/lib-esm/components/console/RequestBody.js +1 -1
  175. package/lib-esm/components/console/RequestBodyForm.d.ts +7 -0
  176. package/lib-esm/components/console/RequestBodyForm.js +2 -0
  177. package/lib-esm/components/console/ResponsePanel.d.ts +4 -4
  178. package/lib-esm/components/console/ResponsePanel.js +1 -1
  179. package/lib-esm/components/console/ServerDropdown.d.ts +1 -1
  180. package/lib-esm/components/console/ServerDropdown.js +1 -1
  181. package/lib-esm/components/index.d.ts +1 -0
  182. package/lib-esm/index.d.ts +1 -1
  183. package/lib-esm/models/file-upload.d.ts +16 -0
  184. package/lib-esm/models/file-upload.js +2 -0
  185. package/lib-esm/models/index.d.ts +1 -0
  186. package/lib-esm/models/index.js +1 -1
  187. package/lib-esm/redoc-lib/src/common-elements/LinkToField.d.ts +3 -2
  188. package/lib-esm/redoc-lib/src/common-elements/LinkToField.js +1 -1
  189. package/lib-esm/redoc-lib/src/components/ApiLogo/ApiLogo.js +1 -1
  190. package/lib-esm/redoc-lib/src/components/ApiLogo/styled.elements.d.ts +5 -2
  191. package/lib-esm/redoc-lib/src/components/ApiLogo/styled.elements.js +1 -1
  192. package/lib-esm/redoc-lib/src/components/CallbackSamples/CallbackReqSamples.js +1 -1
  193. package/lib-esm/redoc-lib/src/components/CallbackSamples/CallbackSamples.js +1 -1
  194. package/lib-esm/redoc-lib/src/components/PayloadSamples/MediaTypeSamples.js +1 -1
  195. package/lib-esm/redoc-lib/src/components/PayloadSamples/PayloadSamples.d.ts +5 -7
  196. package/lib-esm/redoc-lib/src/components/PayloadSamples/PayloadSamples.js +1 -1
  197. package/lib-esm/redoc-lib/src/components/RequestSamples/CodeSample.d.ts +2 -1
  198. package/lib-esm/redoc-lib/src/components/RequestSamples/CodeSample.js +1 -1
  199. package/lib-esm/redoc-lib/src/components/RequestSamples/RequestSamples.d.ts +4 -3
  200. package/lib-esm/redoc-lib/src/components/RequestSamples/RequestSamples.js +1 -1
  201. package/lib-esm/redoc-lib/src/components/RequestSamples/useCodeSamples.d.ts +4 -16
  202. package/lib-esm/redoc-lib/src/components/RequestSamples/useCodeSamples.js +1 -1
  203. package/lib-esm/redoc-lib/src/components/ResponseSamples/ResponseSamples.js +1 -1
  204. package/lib-esm/redoc-lib/src/components/SideMenu/MenuItem.js +1 -1
  205. package/lib-esm/redoc-lib/src/components/SourceCode/SourceCode.d.ts +2 -9
  206. package/lib-esm/redoc-lib/src/services/MenuBuilder.d.ts +1 -0
  207. package/lib-esm/redoc-lib/src/services/OpenAPIParser.js +1 -1
  208. package/lib-esm/redoc-lib/src/services/RedocNormalizedOptions.d.ts +8 -1
  209. package/lib-esm/redoc-lib/src/services/RedocNormalizedOptions.js +1 -1
  210. package/lib-esm/redoc-lib/src/services/ScrollService.js +1 -1
  211. package/lib-esm/redoc-lib/src/services/models/Example.js +1 -1
  212. package/lib-esm/redoc-lib/src/services/models/Field.d.ts +1 -1
  213. package/lib-esm/redoc-lib/src/services/models/Operation.d.ts +7 -2
  214. package/lib-esm/redoc-lib/src/services/models/Operation.js +1 -1
  215. package/lib-esm/redoc-lib/src/services/models/Schema.d.ts +2 -3
  216. package/lib-esm/redoc-lib/src/services/models/Schema.js +1 -1
  217. package/lib-esm/redoc-lib/src/theme.d.ts +1 -0
  218. package/lib-esm/redoc-lib/src/types/open-api.d.ts +2 -0
  219. package/lib-esm/redoc-lib/src/utils/JsonPointer.d.ts +5 -5
  220. package/lib-esm/redoc-lib/src/utils/JsonPointer.js +1 -1
  221. package/lib-esm/redoc-lib/src/utils/loadAndBundleSpec.js +1 -1
  222. package/lib-esm/redoc-lib/src/utils/memoize.js +1 -1
  223. package/lib-esm/redoc-lib/src/utils/openapi.d.ts +0 -2
  224. package/lib-esm/services/ProMenu.d.ts +2 -5
  225. package/lib-esm/services/ProStore.d.ts +4 -2
  226. package/lib-esm/services/ProStore.js +1 -1
  227. package/lib-esm/services/SearchStore.d.ts +1 -0
  228. package/lib-esm/services/SearchStore.js +1 -1
  229. package/lib-esm/services/code-samples/generator.d.ts +1 -1
  230. package/lib-esm/services/code-samples/generator.js +1 -1
  231. package/lib-esm/services/code-samples/httpsnippet/helpers/code-helpers.d.ts +1 -1
  232. package/lib-esm/services/code-samples/httpsnippet/helpers/reducer.d.ts +1 -1
  233. package/lib-esm/services/code-samples/httpsnippet/targets/java8/apachehttp.d.ts +0 -1
  234. package/lib-esm/services/code-samples/httpsnippet/targets/java8/apachehttp.js +1 -1
  235. package/lib-esm/services/code-samples/httpsnippet/targets/php/utils.d.ts +1 -1
  236. package/lib-esm/services/code-samples/httpsnippet/targets/php/utils.js +1 -1
  237. package/lib-esm/services/extendTheme.d.ts +4 -4
  238. package/lib-esm/services/extendTheme.js +1 -1
  239. package/lib-esm/services/history/ProHashHistoryService.d.ts +1 -1
  240. package/lib-esm/services/history/PushStateHistoryService.d.ts +1 -1
  241. package/lib-esm/services/history/helpers.js +1 -1
  242. package/lib-esm/services/utils.d.ts +2 -1
  243. package/lib-esm/services/utils.js +1 -1
  244. package/lib-esm/standalone.d.ts +4 -3
  245. package/lib-esm/standalone.js +1 -1
  246. package/lib-esm/utils.d.ts +1 -1
  247. package/package.json +2 -2
  248. package/lib/components/console/FileUploadInput.d.ts +0 -4
  249. package/lib/components/console/FileUploadInput.js +0 -2
  250. package/lib/redoc-lib/src/components/testProviders.d.ts +0 -7
  251. package/lib/redoc-lib/src/components/testProviders.js +0 -2
  252. package/lib-esm/components/console/FileUploadInput.d.ts +0 -4
  253. package/lib-esm/components/console/FileUploadInput.js +0 -2
  254. package/lib-esm/redoc-lib/src/components/testProviders.d.ts +0 -7
  255. package/lib-esm/redoc-lib/src/components/testProviders.js +0 -2
@@ -1,4 +1,12 @@
1
- export declare const IMAGE_TYPES: string[];
2
- export declare const FILE_UPLOAD_SCHEMA_TYPES: string[];
3
- export declare const isFileUpload: (obj: any) => boolean;
4
- export declare const fileToBase64: (file: File) => Promise<string>;
1
+ import { OpenAPISchema } from '../../../redoc-lib';
2
+ import { UploadFileType } from '../../../models';
3
+ /**
4
+ * Convert request body mime-type to accept value for file upload input in browser
5
+ */
6
+ export declare function mimeTypeToAccept(mimeType: string): string | undefined;
7
+ export declare function isFileUploadMime(mimeType: string): boolean;
8
+ export declare function isMultipartFileUploadProperty(schema: OpenAPISchema): boolean;
9
+ export declare function isRootFileUpload(schema: OpenAPISchema, mimeType: string): boolean;
10
+ export declare function fileToBase64(file: File): Promise<string>;
11
+ export declare function getIsBase64({ format, contentEncoding, contentMediaType }: OpenAPISchema): boolean;
12
+ export declare function getFileToUpload(rawFiles: FileList, schema: OpenAPISchema, contentName: string): Promise<UploadFileType>;
@@ -1,2 +1,2 @@
1
- var FILE_UPLOAD_FORMATS=["byte","binary","base64"],FILE_UPLOAD_TYPES=["string","array"];export var IMAGE_TYPES=["image/png","image/jpeg"];export var FILE_UPLOAD_SCHEMA_TYPES=["object","string"];export var isFileUpload=function(e){var r=e.items?e.items.format||e.items.contentEncoding:e.format||e.contentEncoding,n=e.type;return!(!n&&!r)&&(FILE_UPLOAD_FORMATS.includes(r)&&FILE_UPLOAD_TYPES.includes(n))};export var fileToBase64=function(e){return new Promise((function(r,n){var t=new FileReader;t.onload=function(){var e=t.result.replace(/data:.*\/.*;base64,/g,"");r(e)},t.onerror=function(){return n(t.error)},t.readAsDataURL(e)}))};
1
+ import{__awaiter,__generator}from"tslib";import{DefinitionTypes,FileUploadFormats}from"../../../models";var FILE_UPLOAD_FORMATS=Object.values(FileUploadFormats),FILE_UPLOAD_MIME_TYPES=["application/octet-stream","application/pdf","application/gzip","application/zip"],COMMON_FILE_UPLOAD_PREFIXES=["image/","audio/","video/"];export function mimeTypeToAccept(e){if(COMMON_FILE_UPLOAD_PREFIXES.some((function(t){return e.startsWith(t)})))return e}export function isFileUploadMime(e){return!!FILE_UPLOAD_MIME_TYPES.includes(e)||COMMON_FILE_UPLOAD_PREFIXES.some((function(t){return e.startsWith(t)}))}export function isMultipartFileUploadProperty(e){var t="array"===e.type?e.items:e;if(!t||!t.type)return!0;var i=t.contentMediaType||"",n=t.format||t.contentEncoding||(isFileUploadMime(i)?"binary":"");return t.type===DefinitionTypes.STRING&&FILE_UPLOAD_FORMATS.includes(n)}export function isRootFileUpload(e,t){if(!e||!e.type)return isFileUploadMime(t);var i=e.format||e.contentEncoding||"";return e.type===DefinitionTypes.STRING&&FILE_UPLOAD_FORMATS.includes(i)}export function fileToBase64(e){return new Promise((function(t,i){var n=new FileReader;n.onload=function(){var e=n.result.replace(/data:.*\/.*;base64,/g,"");t(e)},n.onerror=function(){return i(n.error)},n.readAsDataURL(e)}))}export function getIsBase64(e){return[e.format,e.contentEncoding,e.contentMediaType].includes(FileUploadFormats.BASE64)}export function getFileToUpload(e,t,i){return __awaiter(this,void 0,void 0,(function(){var n,r,o,a=this;return __generator(this,(function(s){switch(s.label){case 0:return n=Object.values(e),r=1===n.length?n[0]:n,o=t.properties?t.properties[i]:t,o.type===DefinitionTypes.STRING&&getIsBase64(o)?[4,fileToBase64(n[0])]:[3,2];case 1:return r=s.sent(),[3,5];case 2:return o.type===DefinitionTypes.ARRAY&&o.items?getIsBase64(o.items)?[4,Promise.all(n.map((function(e){return __awaiter(a,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:return[4,fileToBase64(e)];case 1:return[2,t.sent()]}}))}))})))]:[3,4]:[3,5];case 3:return r=s.sent(),[3,5];case 4:r=n,s.label=5;case 5:return[2,r]}}))}))}
2
2
  //# sourceMappingURL=helper.js.map
@@ -6,12 +6,12 @@ export declare const StyledInput: import("styled-components").StyledComponent<"i
6
6
  fullWidth?: boolean | undefined;
7
7
  inputType?: string | undefined;
8
8
  }, never>;
9
- export interface TextFieldExtraProps {
9
+ export interface TextFieldExtraProps extends React.InputHTMLAttributes<HTMLInputElement> {
10
10
  fullWidth?: boolean;
11
11
  errorMessage?: string;
12
12
  }
13
- export declare const TextField: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & TextFieldExtraProps & React.RefAttributes<HTMLInputElement>>;
14
- export declare function FormTextField(props: React.InputHTMLAttributes<HTMLInputElement> & FieldProps<string, any> & TextFieldExtraProps): JSX.Element;
13
+ export declare const TextField: React.ForwardRefExoticComponent<TextFieldExtraProps & React.RefAttributes<HTMLInputElement>>;
14
+ export declare function FormTextField(props: FieldProps<string, GenericObject> & TextFieldExtraProps): JSX.Element;
15
15
  export interface FormDropdownProps extends Partial<DropdownProps> {
16
16
  options: Option[];
17
17
  initValue?: string;
@@ -1,2 +1,2 @@
1
- import{__assign,__makeTemplateObject}from"tslib";import React from"react";import{asField}from"informed";import{useField}from"informed";import styled,{css,mediaCSS}from"../../redoc-lib/src/styled-components";import{FormError}from"./form";import{Dropdown}from"../../redoc-lib";export var invertedInputStyles=css(templateObject_1||(templateObject_1=__makeTemplateObject(["\n border: none;\n outline: none;\n padding: 8px;\n border-radius: ",";\n background-color: ",";\n ","\n\n &::placeholder {\n opacity: 0.6;\n color: ",";\n }\n\n &:-webkit-autofill {\n background-color: ",";\n }\n"],["\n border: none;\n outline: none;\n padding: 8px;\n border-radius: ",";\n background-color: ",";\n ","\n\n &::placeholder {\n opacity: 0.6;\n color: ",";\n }\n\n &:-webkit-autofill {\n background-color: ",";\n }\n"])),(function(e){return e.theme.shape.borderRadius}),(function(e){return e.theme.rightPanel.panelControlsBackgroundColor}),(function(e){var t=e.theme;return mediaCSS({color:t.colors.text.light,fontFamily:t.typography.code.fontFamily,fontSize:t.typography.fontSize})}),(function(e){return e.theme.colors.text.light}),(function(e){return e.theme.rightPanel.panelBackgroundColor}));var TextFieldWrapper=styled.div(templateObject_2||(templateObject_2=__makeTemplateObject(["\n display: ",";\n ","\n"],["\n display: ",";\n ","\n"])),(function(e){return"hidden"===e.type?"none":"inline-block"}),(function(e){return e.fullWidth?"width: 100%;":""})),InputWrap=styled.div(templateObject_3||(templateObject_3=__makeTemplateObject(["\n position: relative;\n"],["\n position: relative;\n"])));export var StyledInput=styled.input(templateObject_4||(templateObject_4=__makeTemplateObject(["\n ","\n ",";\n ","\n"],["\n ","\n ",";\n ","\n"])),invertedInputStyles,(function(e){return"password"===e.inputType?"padding-right: 40px;":""}),(function(e){return e.fullWidth?"width: 100%;":""}));var ToggleButton=styled.span(templateObject_5||(templateObject_5=__makeTemplateObject(["\n position: absolute;\n right: 0;\n line-height: normal;\n\n font-size: 0.8em;\n padding: calc(8px / 0.8);\n cursor: pointer;\n text-align: center;\n ","\n"],["\n position: absolute;\n right: 0;\n line-height: normal;\n\n font-size: 0.8em;\n padding: calc(8px / 0.8);\n cursor: pointer;\n text-align: center;\n ","\n"])),(function(e){var t=e.theme;return mediaCSS({color:t.rightPanel.textColor})}));export var TextField=React.forwardRef((function(e,t){var n=e.fullWidth,r=e.errorMessage,o=React.useState("password"===e.type),a=o[0],l=o[1],i=React.useCallback((function(){l(!a)}),[a]);return React.createElement(TextFieldWrapper,{fullWidth:n,type:e.type},React.createElement(InputWrap,null,React.createElement(StyledInput,__assign({},e,{type:a?"password":"text",inputType:e.type,ref:t})),"password"===e.type&&React.createElement(ToggleButton,{onClick:i}," ",a?"show":"hide"," ")),r?React.createElement(FormError,null,r):null)}));export function FormTextField(e){var t=useField(__assign({fieldType:"text"},e)),n=t.userProps,r=t.render,o=t.fieldState,a=t.informed;return r(React.createElement(TextField,__assign({},n,a,{errorMessage:o.error})))}var templateObject_1,templateObject_2,templateObject_3,templateObject_4,templateObject_5,FormDropdownInt=function(e){var t=e.initValue,n=e.options,r=e.fieldApi,o=e.fieldState,a=n.map((function(e,t){return{value:e.title||e.value,idx:t,origValue:e.value}})),l=a.find((function(e){return e.origValue===t})),i=React.useState(null==l?void 0:l.value),c=i[0],p=i[1];React.useEffect((function(){t&&r.setValue(t)}),[]);var u=React.useCallback((function(e){r.setValue(a[e.idx].origValue),p(a[e.idx].value)}),[a]);return React.createElement(TextFieldWrapper,{fullWidth:!0},React.createElement(Dropdown,{fullWidth:!0,variant:"dark",value:c,options:a,onChange:u}),o.error?React.createElement(FormError,null,o.error):null)};export var FormDropdown=asField(FormDropdownInt);
1
+ import{__assign,__makeTemplateObject}from"tslib";import React from"react";import{asField}from"informed";import{useField}from"informed";import styled,{css,mediaCSS}from"../../redoc-lib/src/styled-components";import{FormError}from"./form";import{Dropdown}from"../../redoc-lib";export var invertedInputStyles=css(templateObject_1||(templateObject_1=__makeTemplateObject(["\n border: none;\n outline: none;\n padding: 8px;\n border-radius: ",";\n background-color: ",";\n ","\n\n &::placeholder {\n opacity: 0.6;\n color: ",";\n }\n\n &:-webkit-autofill {\n background-color: ",";\n }\n"],["\n border: none;\n outline: none;\n padding: 8px;\n border-radius: ",";\n background-color: ",";\n ","\n\n &::placeholder {\n opacity: 0.6;\n color: ",";\n }\n\n &:-webkit-autofill {\n background-color: ",";\n }\n"])),(function(e){return e.theme.shape.borderRadius}),(function(e){return e.theme.rightPanel.panelControlsBackgroundColor}),(function(e){var t=e.theme;return mediaCSS({color:t.colors.text.light,fontFamily:t.typography.code.fontFamily,fontSize:t.typography.fontSize})}),(function(e){return e.theme.colors.text.light}),(function(e){return e.theme.rightPanel.panelBackgroundColor}));var TextFieldWrapper=styled.div(templateObject_2||(templateObject_2=__makeTemplateObject(["\n display: ",";\n ","\n"],["\n display: ",";\n ","\n"])),(function(e){return"hidden"===e.type?"none":"inline-block"}),(function(e){return e.fullWidth?"width: 100%;":""})),InputWrap=styled.div(templateObject_3||(templateObject_3=__makeTemplateObject(["\n position: relative;\n"],["\n position: relative;\n"])));export var StyledInput=styled.input(templateObject_4||(templateObject_4=__makeTemplateObject(["\n ","\n ",";\n ","\n"],["\n ","\n ",";\n ","\n"])),invertedInputStyles,(function(e){return"password"===e.inputType?"padding-right: 40px;":""}),(function(e){return e.fullWidth?"width: 100%;":""}));var ToggleButton=styled.span(templateObject_5||(templateObject_5=__makeTemplateObject(["\n position: absolute;\n right: 0;\n line-height: normal;\n\n font-size: 0.8em;\n padding: calc(8px / 0.8);\n cursor: pointer;\n text-align: center;\n ","\n"],["\n position: absolute;\n right: 0;\n line-height: normal;\n\n font-size: 0.8em;\n padding: calc(8px / 0.8);\n cursor: pointer;\n text-align: center;\n ","\n"])),(function(e){var t=e.theme;return mediaCSS({color:t.rightPanel.textColor})}));function TextFieldComponent(e,t){var n=e.fullWidth,r=e.errorMessage,o=e.type,a=React.useState("password"===o),l=a[0],i=a[1],c=React.useCallback((function(){i(!l)}),[l]);return React.createElement(TextFieldWrapper,{fullWidth:n,type:o},React.createElement(InputWrap,null,React.createElement(StyledInput,__assign({},e,{type:l?"password":"text",inputType:o,ref:t})),"password"===o&&React.createElement(ToggleButton,{onClick:c}," ",l?"show":"hide"," ")),r?React.createElement(FormError,null,r):null)}export var TextField=React.forwardRef(TextFieldComponent);export function FormTextField(e){var t=useField(__assign({fieldType:"text"},e)),n=t.userProps,r=t.render,o=t.fieldState,a=t.informed;return r(React.createElement(TextField,__assign({},n,a,{errorMessage:o.error})))}var templateObject_1,templateObject_2,templateObject_3,templateObject_4,templateObject_5,FormDropdownInt=function(e){var t=e.initValue,n=e.options,r=e.fieldApi,o=e.fieldState,a=n.map((function(e,t){return{value:e.title||e.value,idx:t,origValue:e.value}})),l=a.find((function(e){return e.origValue===t})),i=React.useState(null==l?void 0:l.value),c=i[0],p=i[1];React.useEffect((function(){t&&r.setValue(t)}),[]);var d=React.useCallback((function(e){r.setValue(a[e.idx].origValue),p(a[e.idx].value)}),[a]);return React.createElement(TextFieldWrapper,{fullWidth:!0},React.createElement(Dropdown,{fullWidth:!0,variant:"dark",value:c,options:a,onChange:d}),o.error?React.createElement(FormError,null,o.error):null)};export var FormDropdown=asField(FormDropdownInt);
2
2
  //# sourceMappingURL=TextField.js.map
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { FormApi, FormState } from 'informed';
3
3
  import { OperationModel } from '../../redoc-lib';
4
+ import { SecurityDetails } from '../../utils';
4
5
  export declare function requiredValidator(value: any): "Field is required" | undefined;
5
6
  export interface AuthPanelProps {
6
7
  operation: OperationModel;
@@ -8,6 +9,7 @@ export interface AuthPanelProps {
8
9
  formApi: FormApi;
9
10
  activeServer: string;
10
11
  authCorsProxyUrl: Maybe<string>;
12
+ securityDefaults?: Record<string, SecurityDetails | string>;
11
13
  }
12
14
  export interface AuthPanelState {
13
15
  activeScheme: number;
@@ -1,2 +1,2 @@
1
- import{__assign,__extends}from"tslib";import*as React from"react";import{Dropdown}from"../../redoc-lib";import{fromStorage,getSecurityDetailsOptions,toStorage,escapeFormId}from"../../utils";import OAuth2TokenInput from"./OAuth2TokenInput";import{OAuth2Flow}from"./OAuth2Flow";import{OpenIDConnect}from"./OpenIDConnect";import{FormDropdown,FormTextField}from"../common/TextField";import{FormControl,FormLabel,FormWrapper}from"../common/form";import{l}from"../../redoc-lib/src/services/Labels";export function requiredValidator(e){if(!e)return"Field is required"}var getCookie=function(e){var t=document.cookie.match("\\b"+e+"=([^;]*)\\b");return t?t[1]:void 0};function fromCookie(e){if("cookie"===e.in)return getCookie(e.name)}var AuthPanel=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(t,"state",{enumerable:!0,configurable:!0,writable:!0,value:{activeScheme:0}}),Object.defineProperty(t,"handleSchemeChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){t.setState({activeScheme:e.idx}),toStorage("securityRequirementName",e.value)}}),t}return __extends(t,e),Object.defineProperty(t,"getDerivedStateFromProps",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=e.operation.security.map((function(e){return e.schemes.map((function(e){return e.id})).join(" and ")})),r=fromStorage("securityRequirementName"),a=t.findIndex((function(e){return e===r}));return{activeScheme:a<0?0:a}}}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this,t=this.state.activeScheme,r=this.props.operation.security,a=r.map((function(e){return e.schemes.map((function(e){return e.id})).join(" and ")})).map((function(e,t){return{value:e,idx:t}}));return 0===a.length?null:React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,a.length>1&&React.createElement(FormControl,null,React.createElement(Dropdown,{variant:"dark",fullWidth:!0,prefix:"Security scheme: ",options:a,value:a[t].value,onChange:this.handleSchemeChange}))||null,r[t].schemes.map((function(t){var r,a,o,n=escapeFormId(t.id);if("apiKey"===t.type){var i=getSecurityDetailsOptions(n,""),u={field:"auth."+n,fullWidth:!0,initialValue:fromCookie(t)||fromStorage("auth."+n),initValue:fromCookie(t)||fromStorage("auth."+n),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(FormControl,{key:n},React.createElement(FormLabel,null," ",t.name,": "),i?React.createElement(FormDropdown,__assign({},u,{options:i})):React.createElement(FormTextField,__assign({},u,{type:"password","data-cy":"apiKey-auth-password"})))}if("http"===t.type){if("basic"===t.scheme){var c=getSecurityDetailsOptions(n,"username");u={field:"auth."+n+".username",fullWidth:!0,initialValue:fromStorage("auth."+n+".username"),initValue:fromStorage("auth."+n+".username"),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(React.Fragment,{key:n},React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicUsername"),": "),c?React.createElement(FormDropdown,__assign({},u,{options:c})):React.createElement(FormTextField,__assign({},u))),React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicPassword"),": "),React.createElement(FormTextField,{type:"password","data-cy":"http-auth-password",fullWidth:!0,field:"auth."+n+".password",validate:requiredValidator,initialValue:fromStorage("auth."+n+".password"),validateOnBlur:!0,validateOnChange:!0})))}if("bearer"===t.scheme){var m=getSecurityDetailsOptions(n,"");u={field:"auth."+n,fullWidth:!0,initialValue:fromStorage("auth."+n),initValue:fromStorage("auth."+n),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(React.Fragment,{key:n},React.createElement(FormControl,null,React.createElement(FormLabel,null," Bearer Token: "),m?React.createElement(FormDropdown,__assign({},u,{options:m})):React.createElement(FormTextField,__assign({},u,{type:"password",placeholder:"(without 'Bearer')"}))))}}else{if("oauth2"===t.type&&t.flows&&t.flows.clientCredentials)return React.createElement(OAuth2TokenInput,{key:n,flow:t.flows.clientCredentials,server:e.props.activeServer,authCorsProxyUrl:e.props.authCorsProxyUrl,id:n,form:e.props.form,formApi:e.props.formApi,clientId:t.flows.clientCredentials["x-defaultClientId"]||t["x-defaultClientId"]});if("oauth2"===t.type&&t.flows&&t.flows.implicit)return React.createElement(OAuth2Flow,{key:n,authorizationUrl:t.flows.implicit.authorizationUrl,authCorsProxyUrl:e.props.authCorsProxyUrl,scopes:Object.keys((null===(a=null===(r=null==t?void 0:t.flows)||void 0===r?void 0:r.implicit)||void 0===a?void 0:a.scopes)||{}),server:e.props.activeServer,id:n,form:e.props.form,formApi:e.props.formApi,clientId:t.flows.implicit["x-defaultClientId"]||t["x-defaultClientId"],flow:"implicit"});if("oauth2"===t.type&&t.flows&&t.flows.authorizationCode)return React.createElement(OAuth2Flow,{key:n,authorizationUrl:t.flows.authorizationCode.authorizationUrl,tokenUrl:t.flows.authorizationCode.tokenUrl,authCorsProxyUrl:e.props.authCorsProxyUrl,scopes:Object.keys((null===(o=t.flows.authorizationCode)||void 0===o?void 0:o.scopes)||{}),server:e.props.activeServer,id:n,form:e.props.form,formApi:e.props.formApi,clientId:t.flows.authorizationCode["x-defaultClientId"]||t["x-defaultClientId"],flow:"authorizationCode"});if("oauth2"===t.type){var s=fromStorage("auth."+n+".token");return s=s?JSON.parse(s):{},React.createElement(React.Fragment,{key:n},React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token Type: "),React.createElement(FormTextField,{fullWidth:!0,field:"auth."+n+".token.token_type",initialValue:s.token_type||"Bearer"})),React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:"auth."+n+".token.access_token",validate:requiredValidator,initialValue:s.access_token,validateOnBlur:!0,validateOnChange:!0})))}if("openIdConnect"===t.type)return React.createElement(OpenIDConnect,{key:n,server:e.props.activeServer,authCorsProxyUrl:e.props.authCorsProxyUrl,id:n,form:e.props.form,formApi:e.props.formApi,scheme:t,clientId:t["x-defaultClientId"]})}}))),React.createElement("small",null,React.createElement("strong",null,"Note"),": Your credentials will be saved until the end of the browser session"))}}),t}(React.Component);export{AuthPanel};
1
+ import{__assign,__extends}from"tslib";import*as React from"react";import{Dropdown}from"../../redoc-lib";import{fromStorage,getSecurityDetailsOptions,toStorage,escapeFormId}from"../../utils";import OAuth2TokenInput from"./OAuth2TokenInput";import{OAuth2Flow}from"./OAuth2Flow";import{OpenIDConnect}from"./OpenIDConnect";import{FormDropdown,FormTextField}from"../common/TextField";import{FormControl,FormLabel,FormWrapper}from"../common/form";import{l}from"../../redoc-lib/src/services/Labels";export function requiredValidator(e){if(!e)return"Field is required"}var getCookie=function(e){var t=document.cookie.match("\\b"+e+"=([^;]*)\\b");return t?t[1]:void 0};function fromCookie(e){if("cookie"===e.in)return getCookie(e.name)}var AuthPanel=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(t,"state",{enumerable:!0,configurable:!0,writable:!0,value:{activeScheme:0}}),Object.defineProperty(t,"handleSchemeChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){t.setState({activeScheme:e.idx}),toStorage("securityRequirementName",e.value)}}),t}return __extends(t,e),Object.defineProperty(t,"getDerivedStateFromProps",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=e.operation.security.map((function(e){return e.schemes.map((function(e){return e.id})).join(" and ")})),r=fromStorage("securityRequirementName"),o=t.findIndex((function(e){return e===r}));return{activeScheme:o<0?0:o}}}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this,t=this.props.securityDefaults,r=this.state.activeScheme,o=this.props.operation.security,a=o.map((function(e){return e.schemes.map((function(e){return e.id})).join(" and ")})).map((function(e,t){return{value:e,idx:t}}));return 0===a.length?null:React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,a.length>1&&React.createElement(FormControl,null,React.createElement(Dropdown,{variant:"dark",fullWidth:!0,prefix:"Security scheme: ",options:a,value:a[r].value,onChange:this.handleSchemeChange}))||null,o[r].schemes.map((function(r){var o,a,i,n,u,c,s,m=escapeFormId(r.id);if("apiKey"===r.type){var d=getSecurityDetailsOptions(m,""),p={field:"auth."+m,fullWidth:!0,initialValue:fromCookie(r)||fromStorage("auth."+m)||(null==t?void 0:t[m]),initValue:fromCookie(r)||fromStorage("auth."+m)||(null==t?void 0:t[m]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(FormControl,{key:m},React.createElement(FormLabel,null," ",r.name,": "),d?React.createElement(FormDropdown,__assign({},p,{options:d})):React.createElement(FormTextField,__assign({},p,{type:"password","data-cy":"apiKey-auth-password"})))}if("http"===r.type){if("basic"===r.scheme){var f=getSecurityDetailsOptions(m,"username");p={field:"auth."+m+".username",fullWidth:!0,initialValue:fromStorage("auth."+m+".username")||(null===(o=null==t?void 0:t[m])||void 0===o?void 0:o.username),initValue:fromStorage("auth."+m+".username")||(null===(a=null==t?void 0:t[m])||void 0===a?void 0:a.username),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(React.Fragment,{key:m},React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicUsername"),": "),f?React.createElement(FormDropdown,__assign({},p,{options:f})):React.createElement(FormTextField,__assign({},p))),React.createElement(FormControl,null,React.createElement(FormLabel,null," ",l("tryItAuthBasicPassword"),": "),React.createElement(FormTextField,{type:"password","data-cy":"http-auth-password",fullWidth:!0,field:"auth."+m+".password",validate:requiredValidator,initialValue:fromStorage("auth."+m+".password")||(null===(i=null==t?void 0:t[m])||void 0===i?void 0:i.password),validateOnBlur:!0,validateOnChange:!0})))}if("bearer"===r.scheme){var h=getSecurityDetailsOptions(m,"");p={field:"auth."+m,fullWidth:!0,initialValue:fromStorage("auth."+m)||(null==t?void 0:t[m]),initValue:fromStorage("auth."+m)||(null==t?void 0:t[m]),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0};return React.createElement(React.Fragment,{key:m},React.createElement(FormControl,null,React.createElement(FormLabel,null," Bearer Token: "),h?React.createElement(FormDropdown,__assign({},p,{options:h})):React.createElement(FormTextField,__assign({},p,{type:"password",placeholder:"(without 'Bearer')"}))))}}else{if("oauth2"===r.type&&r.flows&&r.flows.clientCredentials)return React.createElement(OAuth2TokenInput,{key:m,flow:r.flows.clientCredentials,server:e.props.activeServer,authCorsProxyUrl:e.props.authCorsProxyUrl,id:m,form:e.props.form,formApi:e.props.formApi,clientId:r.flows.clientCredentials["x-defaultClientId"]||r["x-defaultClientId"],defaultValues:null==t?void 0:t[m]});if("oauth2"===r.type&&r.flows&&r.flows.implicit)return React.createElement(OAuth2Flow,{key:m,authorizationUrl:r.flows.implicit.authorizationUrl,authCorsProxyUrl:e.props.authCorsProxyUrl,scopes:Object.keys((null===(u=null===(n=null==r?void 0:r.flows)||void 0===n?void 0:n.implicit)||void 0===u?void 0:u.scopes)||{}),server:e.props.activeServer,id:m,form:e.props.form,formApi:e.props.formApi,clientId:r.flows.implicit["x-defaultClientId"]||r["x-defaultClientId"],flow:"implicit",defaultValues:null==t?void 0:t[m]});if("oauth2"===r.type&&r.flows&&r.flows.authorizationCode)return React.createElement(OAuth2Flow,{key:m,authorizationUrl:r.flows.authorizationCode.authorizationUrl,tokenUrl:r.flows.authorizationCode.tokenUrl,authCorsProxyUrl:e.props.authCorsProxyUrl,scopes:Object.keys((null===(c=r.flows.authorizationCode)||void 0===c?void 0:c.scopes)||{}),server:e.props.activeServer,id:m,form:e.props.form,formApi:e.props.formApi,clientId:r.flows.authorizationCode["x-defaultClientId"]||r["x-defaultClientId"],flow:"authorizationCode",defaultValues:null==t?void 0:t[m]});if("oauth2"===r.type){var v=fromStorage("auth."+m+".token")||JSON.stringify(null===(s=null==t?void 0:t[m])||void 0===s?void 0:s.token);return v=v?JSON.parse(v):{},React.createElement(React.Fragment,{key:m},React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token Type: "),React.createElement(FormTextField,{fullWidth:!0,field:"auth."+m+".token.token_type",initialValue:v.token_type||"Bearer"})),React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:"auth."+m+".token.access_token",validate:requiredValidator,initialValue:v.access_token,validateOnBlur:!0,validateOnChange:!0})))}if("openIdConnect"===r.type)return React.createElement(OpenIDConnect,{key:m,server:e.props.activeServer,authCorsProxyUrl:e.props.authCorsProxyUrl,id:m,form:e.props.form,formApi:e.props.formApi,scheme:r,clientId:r["x-defaultClientId"],defaultValues:null==t?void 0:t[m]})}}))),React.createElement("small",null,React.createElement("strong",null,"Note"),": Your credentials will be saved until the end of the browser session"))}}),t}(React.Component);export{AuthPanel};
2
2
  //# sourceMappingURL=AuthPanel.js.map
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { SwaggerResponse } from './ResponsePanel';
2
+ import { SecurityDetails } from '../../utils';
3
+ import { OpenApiResponseData } from './ResponsePanel';
3
4
  import { ProStore } from '../../services';
4
5
  import { OperationModel, Server } from '../../redoc-lib';
5
6
  export interface ConsoleProps {
@@ -10,6 +11,11 @@ export interface ConsoleProps {
10
11
  rootElement?: HTMLElement | null;
11
12
  onClose?: () => any;
12
13
  properties?: any;
14
+ securityDefaults?: Record<string, SecurityDetails | string>;
15
+ onResponse?: (arg: {
16
+ request: Record<string, unknown>;
17
+ response: OpenApiResponseData;
18
+ }) => void;
13
19
  }
14
20
  export interface ConsoleState {
15
21
  form: any;
@@ -17,10 +23,10 @@ export interface ConsoleState {
17
23
  loading: boolean;
18
24
  activeTab: number;
19
25
  error?: Error & {
20
- response?: SwaggerResponse;
26
+ response?: OpenApiResponseData;
21
27
  };
22
28
  resolvedRawSpec?: any;
23
- response?: SwaggerResponse;
29
+ response?: OpenApiResponseData;
24
30
  time?: number;
25
31
  server: Server;
26
32
  }
@@ -1,2 +1,2 @@
1
- import{__assign,__awaiter,__decorate,__extends,__generator,__makeTemplateObject}from"tslib";import*as React from"react";import{Form,useField}from"informed";import{observer}from"mobx-react";import{get,useDimensions,unescapeFormId}from"../../utils";import{parse}from"query-string";import{CloseButton,ConsoleBody,ConsoleWrap}from"./styled.components";import{ServerChooser}from"./ServerDropdown";import{OperationParameters}from"./OperationParameters";import{ActionPanel}from"./ActionPanel";import{ResponsePanel}from"./ResponsePanel";import{RequestBody}from"./RequestBody";import{ConsoleBadges}from"./ConsoleBadges";import{AuthPanel,requiredValidator}from"./AuthPanel";import{AnalyticsEventType}from"../../services";import Swagger from"swagger-client";import{JsonPointer,ShelfIcon,CrossIcon,LockIcon}from"../../redoc-lib";import{RenderHook}from"../../redoc-lib/src/components/helper";import{l}from"../../redoc-lib/src/services/Labels";import styled from"../../redoc-lib/src/styled-components";import{CodeHeader,Panel,Header,Accordion,Trigger,Title}from"../Panel";import{OAuth2}from"../../services/OAuth2";import{PanelBody}from"../Panel/PanelBody";import{getParameters,updateStorage}from"./utils";function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}var flexColumn={flex:1,display:"flex",flexDirection:"column"},Console=function(e){function t(t){var r=e.call(this,t)||this;return Object.defineProperty(r,"formApi",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(r,"setFormApi",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.formApi=e,setTimeout((function(){r.setState({form:r.formApi.getState()})}),0)}}),Object.defineProperty(r,"handleChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.setState({form:e}),updateStorage(e)}}),Object.defineProperty(r,"handleTabChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.setState({activeTab:e})}}),Object.defineProperty(r,"handleServerChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.setState({server:e})}}),Object.defineProperty(r,"handleExecute",{enumerable:!0,configurable:!0,writable:!0,value:function(){return __awaiter(r,void 0,void 0,(function(){var e,t,r,o,n,a,s,i,l,c,u,p,d,m,h,v,f,g,y,b,_,P,R,S,C,w,I,E,k,x,A,T,O,B,j,q=this;return __generator(this,(function(H){switch(H.label){case 0:if(e=this.props,t=e.store,r=e.operation,this.formApi.submitForm(),o=this.formApi.getState(),n=o.values,o.invalid)return this.setState({shaking:!0}),setTimeout((function(){return q.setState({shaking:!1})}),1e3),null===(x=null===(k=null==t?void 0:t.options.events)||void 0===k?void 0:k.tryItSent)||void 0===x||x.call(k,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"ValidationFailed",operationId:r.operationId,operationPath:r.path,operationHttpVerb:r.httpVerb,operationSummary:r.description}),[2];if(a=this.props.operation.requestBody,s=a&&a.content&&a.content.active&&a.content.active.name||"",i=n.body,/json/.test(s))try{i=JSON.parse(i)}catch(e){console.error(e)}if(this.setState({loading:!0}),l=t.dereferencedRawSpec,!(c=get(l,["paths",r.path,(r.httpVerb||"").toLowerCase(),"servers"])||get(l,["paths",r.path,"servers"])||get(l,["servers"])))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");u=c.find((function(e){return q.state.server.url.endsWith(e.url.endsWith("/")?e.url.substring(0,e.url.length-1):e.url)})),p=Date.now(),d=!!window.document.documentMode,h=n.auth,n.auth?(v=Object.keys(n.auth)[0],f=unescapeFormId(v),m=__assign(__assign({},l),{components:__assign(__assign({},l.components),{securitySchemes:__assign(__assign({},l.components.securitySchemes),(I={},I[f]=__assign(__assign({},l.components.securitySchemes[f]),{type:"openIdConnect"===l.components.securitySchemes[f].type?"oauth2":l.components.securitySchemes[f].type}),I))})}),h=__assign(__assign({},h),((E={})[f]=h[v],E))):m=__assign({},l),(g=t.options.corsProxyUrl)&&l.servers&&l.servers.length&&(m.servers=l.servers.map((function(e){return __assign(__assign({},e),{url:g+normalizeUrlProtocol(e.url)})}))),y=(null===(T=null===(A=null==a?void 0:a.content)||void 0===A?void 0:A.active)||void 0===T?void 0:T.name)||null,b="application/x-www-form-urlencoded"===y?parse(i):i,y&&["image/jpeg","image/png","application/octet-stream"].includes(y)&&(_=Object.keys(i).map((function(e){return i[e]})),b=_.length>1?_:_[0]),H.label=1;case 1:return H.trys.push([1,5,8,9]),P={userFetch:d&&require("cross-fetch").fetch,server:g?g+normalizeUrlProtocol(u.url):u.url,serverVariables:this.state.server.variables,spec:m,pathName:r.path,method:r.httpVerb,parameters:__assign(__assign(__assign(__assign({},n.path),n.query),n.header),n.cookie),securities:{authorized:h},requestBody:b,requestContentType:y,responseContentType:(null===(O=n.header)||void 0===O?void 0:O.Accept)||null,requestInterceptor:t.options.requestInterceptor&&function(e){var o,n;return null===(n=(o=t.options).requestInterceptor)||void 0===n?void 0:n.call(o,e,r)}||void 0},[4,Swagger.execute(P)];case 2:return(R=H.sent())&&R.data instanceof Blob?(S=R,[4,R.data.text()]):[3,4];case 3:S.data=H.sent(),H.label=4;case 4:return this.setState({response:R,error:void 0}),[3,9];case 5:return(C=H.sent())&&C.response&&C.response.data instanceof Blob?(w=C.response,[4,C.response.data.text()]):[3,7];case 6:w.data=H.sent(),H.label=7;case 7:return this.setState({response:void 0,error:C}),[3,9];case 8:return this.setState({loading:!1,activeTab:1,time:Date.now()-p}),null===(j=null===(B=null==t?void 0:t.options.events)||void 0===B?void 0:B.tryItSent)||void 0===j||j.call(B,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"Sent",operationId:r.operationId,operationPath:r.path,operationHttpVerb:r.httpVerb,operationSummary:r.description}),[7];case 9:return[2]}}))}))}}),Object.defineProperty(r,"validateBody",{enumerable:!0,configurable:!0,writable:!0,value:function(){}}),r.state={form:{values:{path:getParameters(t.operation.parameters,"path"),cookie:getParameters(t.operation.parameters,"cookie"),header:getParameters(t.operation.parameters,"header"),query:getParameters(t.operation.parameters,"query")}},shaking:!1,loading:!1,activeTab:0,server:{}},r}return __extends(t,e),Object.defineProperty(t.prototype,"componentDidMount",{enumerable:!1,configurable:!0,writable:!0,value:function(){return __awaiter(this,void 0,void 0,(function(){var e,t,r,o,n;return __generator(this,(function(a){switch(a.label){case 0:return e=this.props,t=e.store,r=e.specIdx,o=e.operation,[4,t.dereferenceSpecForTryIt(r||0,o)];case 1:return n=a.sent(),this.setState({resolvedRawSpec:n}),this.formApi.setValues({}),[2]}}))}))}}),Object.defineProperty(t.prototype,"componentDidUpdate",{enumerable:!1,configurable:!0,writable:!0,value:function(e){e.operation!==this.props.operation&&this.setState({response:void 0,error:void 0,activeTab:0})}}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.props,t=e.operation,r=e.className,o=e.rootElement,n=this.state,a=n.shaking,s=n.activeTab,i=n.form,l=n.response,c=n.loading,u=n.error,p=!(!l&&!u);return React.createElement(ConsoleWrapHook,{shaking:a,className:r,rootElement:o},React.createElement(CodeHeader,null,React.createElement(ConsoleBadges,{active:s,hasResponse:p,onChange:this.handleTabChange}),this.props.onClose&&React.createElement(CloseButton,{onClick:this.props.onClose}," ✕ ")),React.createElement(ConsoleBody,{hidden:0!==s},this.renderRequest()),React.createElement(ConsoleBody,{hidden:1!==s},this.renderResponse()),React.createElement(ActionPanel,{hasResponse:p,params:i.values&&__assign({},i.values),operation:t,loading:c,execute:this.handleExecute}))}}),Object.defineProperty(t.prototype,"renderRequest",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e,t=this.props,r=t.operation,o=t.store,n=t.properties,a=this.state,s=a.form,i=a.resolvedRawSpec,c=a.server,u=s.errors||{},p=u.path||u.cookie||u.header||u.query,d=i&&JsonPointer.get(i,r.pointer),m=s.values&&s.values.auth&&Object.keys(s.values.auth)[0];m&&s.values.auth[m]||(m=void 0),!m||void 0===s.values.auth[m].token&&void 0===s.values.auth[m].client_id&&void 0===s.values.auth[m].client_secret||s.values.auth[m].token&&s.values.auth[m].token.access_token||(m=void 0),m&&null!=s.values.auth[m].username&&(s.values.auth[m].username&&s.values.auth[m].password||(m=void 0));var h=r.parameters||[],v=null===(e=null==o?void 0:o.options.hooks)||void 0===e?void 0:e.ReplaceTryItAuthPanel;return i?React.createElement(React.Fragment,null,React.createElement(Form,{onChange:this.handleChange,getApi:this.setFormApi,style:__assign(__assign({},flexColumn),{margin:0})},React.createElement(Accordion,{initialActiveIdx:r.security.length&&m?1:0},r.security.length&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",renderChildrenHidden:!0,error:!m&&!!u.auth,success:!!m},v?React.createElement(AuthPanelHook,{field:"auth",validate:requiredValidator},(function(e){return React.createElement(RenderHook,{Hook:v,props:{server:c,operation:r,onChange:e,OAuth2:OAuth2}})})):React.createElement(AuthPanel,{formApi:this.formApi,form:s,operation:r,activeServer:c.url,authCorsProxyUrl:o.options.authCorsProxyUrl}))||null,r.requestBody&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",renderChildrenHidden:!0,error:!!u.body},React.createElement(RequestBody,{validate:this.validateBody,console:this,body:r.requestBody,id:r.id,resolvedBody:d.requestBody,properties:n}))||null,h.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:p,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:r,values:s.values,errors:s.errors||{}}))||null)),React.createElement(ServerChooser,{operation:r,onChange:this.handleServerChange})):"Loading..."}}),Object.defineProperty(t.prototype,"renderResponse",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.state,t=e.response,r=e.error,o=e.time;return React.createElement(ResponsePanel,{response:t,error:r,time:o})}}),t=__decorate([observer],t)}(React.Component);export{Console};function ConsoleWrapHook(e){var t=e.shaking,r=e.className,o=e.children,n=e.rootElement,a=useDimensions(n)[0];return React.createElement(ConsoleWrap,{shaking:t,className:r,"data-cy":"console",fullWidth:null==a?void 0:a.width},o)}function AuthPanelHook(e){var t=useField(__assign({},e)),r=t.fieldApi,o=t.render,n=t.userProps,a=r.setValue,s=n.children;return o(React.createElement(React.Fragment,null,s(a)))}function TryItPanel(e){return React.createElement(StyledTryItPanel,__assign({},e,{header:function(t){var r=t.toggle,o=t.expanded;return React.createElement(Header,{onClick:r,isExpanded:o,"data-cy":e["data-cy"]},React.createElement(Trigger,null,React.createElement(Title,null,e.header),React.createElement(ShelfIcon,{direction:o?"down":"right"})),e.error&&React.createElement(CrossIcon,{size:"14px",color:"#ff908b"})||null,e.success&&React.createElement(LockIcon,{size:"14px",color:"#56ff26"})||null)}}))}var templateObject_1,StyledTryItPanel=styled(Panel)(templateObject_1||(templateObject_1=__makeTemplateObject(["\n "," {\n color: white;\n border: 1px solid ",";\n padding: 10px;\n }\n\n "," path {\n fill: white;\n }\n\n "," {\n padding: 15px 10px;\n background-color: #3e4c59;\n border: 1px solid ",";\n border-top: 0;\n }\n"],["\n "," {\n color: white;\n border: 1px solid ",";\n padding: 10px;\n }\n\n "," path {\n fill: white;\n }\n\n "," {\n padding: 15px 10px;\n background-color: #3e4c59;\n border: 1px solid ",";\n border-top: 0;\n }\n"])),Header,(function(e){return e.error?"#ff908b":"#89949f"}),ShelfIcon,PanelBody,(function(e){return e.error?"#ff908b":"#89949f"}));
1
+ import{__assign,__awaiter,__decorate,__extends,__generator,__makeTemplateObject}from"tslib";import*as React from"react";import{Form,useField}from"informed";import{observer}from"mobx-react";import{get,useDimensions,unescapeFormId}from"../../utils";import{CloseButton,ConsoleBody,ConsoleWrap}from"./styled.components";import{ServerChooser}from"./ServerDropdown";import{OperationParameters}from"./OperationParameters";import{ActionPanel}from"./ActionPanel";import{ResponsePanel}from"./ResponsePanel";import{RequestBody}from"./RequestBody";import{ConsoleBadges}from"./ConsoleBadges";import{AuthPanel,requiredValidator}from"./AuthPanel";import{AnalyticsEventType}from"../../services";import Swagger from"swagger-client";import{JsonPointer,ShelfIcon,CrossIcon,LockIcon}from"../../redoc-lib";import{RenderHook}from"../../redoc-lib/src/components/helper";import{l}from"../../redoc-lib/src/services/Labels";import styled from"../../redoc-lib/src/styled-components";import{CodeHeader,Panel,Header,Accordion,Trigger,Title}from"../Panel";import{OAuth2}from"../../services/OAuth2";import{PanelBody}from"../Panel/PanelBody";import{getParameters,updateStorage}from"./utils";import{isFileUploadMime}from"../common/FileUpload/helper";function normalizeUrlProtocol(e){return e.startsWith("//")?"https:"+e:e}var flexColumn={flex:1,display:"flex",flexDirection:"column"},Console=function(e){function t(t){var r=e.call(this,t)||this;return Object.defineProperty(r,"formApi",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(r,"setFormApi",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.formApi=e,setTimeout((function(){r.setState({form:r.formApi.getState()})}),0)}}),Object.defineProperty(r,"handleChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.setState({form:e}),updateStorage(e)}}),Object.defineProperty(r,"handleTabChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.setState({activeTab:e})}}),Object.defineProperty(r,"handleServerChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){r.setState({server:e})}}),Object.defineProperty(r,"handleExecute",{enumerable:!0,configurable:!0,writable:!0,value:function(){return __awaiter(r,void 0,void 0,(function(){var e,t,r,o,n,a,s,i,l,c,u,p,d,m,h,v,f,g,y,b,_,P,R,S,C,I,w,E,A,T,k,x,O,B,q,j=this;return __generator(this,(function(F){switch(F.label){case 0:if(e=this.props,t=e.store,r=e.operation,o=e.onResponse,this.formApi.submitForm(),n=this.formApi.getState(),a=n.values,n.invalid)return this.setState({shaking:!0}),setTimeout((function(){return j.setState({shaking:!1})}),1e3),null===(T=null===(A=null==t?void 0:t.options.events)||void 0===A?void 0:A.tryItSent)||void 0===T||T.call(A,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"ValidationFailed",operationId:r.operationId,operationPath:r.path,operationHttpVerb:r.httpVerb,operationSummary:r.description}),[2];if(s=this.props.operation.requestBody,i=s&&s.content&&s.content.active&&s.content.active.name||"",l=a.body,/json/.test(i))try{l=JSON.parse(l)}catch(e){console.error(e)}if(this.setState({loading:!0}),c=t.dereferencedRawSpec,!(u=get(c,["paths",r.path,(r.httpVerb||"").toLowerCase(),"servers"])||get(c,["paths",r.path,"servers"])||get(c,["servers"])))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");p=u.find((function(e){return j.state.server.url.endsWith(e.url.endsWith("/")?e.url.substring(0,e.url.length-1):e.url)})),d=Date.now(),m=!!window.document.documentMode,v=a.auth,a.auth?(f=Object.keys(a.auth)[0],g=unescapeFormId(f),h=__assign(__assign({},c),{components:__assign(__assign({},c.components),{securitySchemes:__assign(__assign({},c.components.securitySchemes),(w={},w[g]=__assign(__assign({},c.components.securitySchemes[g]),{type:"openIdConnect"===c.components.securitySchemes[g].type?"oauth2":c.components.securitySchemes[g].type}),w))})}),v=__assign(__assign({},v),((E={})[g]=v[f],E))):h=__assign({},c),(y=t.options.corsProxyUrl)&&c.servers&&c.servers.length&&(h.servers=c.servers.map((function(e){return __assign(__assign({},e),{url:y+normalizeUrlProtocol(e.url)})}))),(b=(null===(x=null===(k=null==s?void 0:s.content)||void 0===k?void 0:k.active)||void 0===x?void 0:x.name)||null)&&l&&isFileUploadMime(b)&&(_=Object.values(l),l=_.length>1?_:_[0]),P={userFetch:m&&require("cross-fetch").fetch,server:y?y+normalizeUrlProtocol(p.url):p.url,serverVariables:this.state.server.variables,spec:h,pathName:r.path,method:r.httpVerb,parameters:__assign(__assign(__assign(__assign({},a.path),a.query),a.header),a.cookie),securities:{authorized:v},requestBody:l,requestContentType:b,responseContentType:(null===(O=a.header)||void 0===O?void 0:O.Accept)||null,requestInterceptor:t.options.requestInterceptor&&function(e){var o,n;return null===(n=(o=t.options).requestInterceptor)||void 0===n?void 0:n.call(o,e,r)}||void 0},F.label=1;case 1:return F.trys.push([1,5,8,9]),[4,Swagger.execute(P)];case 2:return(R=F.sent())&&R.data instanceof Blob?(S=R,[4,R.data.text()]):[3,4];case 3:S.data=F.sent(),F.label=4;case 4:return this.setState({response:R,error:void 0}),[3,9];case 5:return(C=F.sent())&&C.response&&C.response.data instanceof Blob?(I=C.response,[4,C.response.data.text()]):[3,7];case 6:I.data=F.sent(),F.label=7;case 7:return this.setState({response:void 0,error:C}),[3,9];case 8:return this.setState({loading:!1,activeTab:1,time:Date.now()-d}),null===(q=null===(B=null==t?void 0:t.options.events)||void 0===B?void 0:B.tryItSent)||void 0===q||q.call(B,{eventType:AnalyticsEventType.TryItSent,resource:"Redocly_OperationTryIt",action:"Sent",operationId:r.operationId,operationPath:r.path,operationHttpVerb:r.httpVerb,operationSummary:r.description}),this.state.response&&(null==o||o({request:P,response:this.state.response})),[7];case 9:return[2]}}))}))}}),Object.defineProperty(r,"validateBody",{enumerable:!0,configurable:!0,writable:!0,value:function(){}}),r.state={form:{values:{path:getParameters(t.operation.parameters,"path"),cookie:getParameters(t.operation.parameters,"cookie"),header:getParameters(t.operation.parameters,"header"),query:getParameters(t.operation.parameters,"query")}},shaking:!1,loading:!1,activeTab:0,server:{}},r}return __extends(t,e),Object.defineProperty(t.prototype,"componentDidMount",{enumerable:!1,configurable:!0,writable:!0,value:function(){return __awaiter(this,void 0,void 0,(function(){var e,t,r,o,n;return __generator(this,(function(a){switch(a.label){case 0:return e=this.props,t=e.store,r=e.specIdx,o=e.operation,[4,t.dereferenceSpecForTryIt(r||0,o)];case 1:return n=a.sent(),this.setState({resolvedRawSpec:n}),this.formApi.setValues({}),[2]}}))}))}}),Object.defineProperty(t.prototype,"componentDidUpdate",{enumerable:!1,configurable:!0,writable:!0,value:function(e){e.operation!==this.props.operation&&this.setState({response:void 0,error:void 0,activeTab:0})}}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.props,t=e.operation,r=e.className,o=e.rootElement,n=this.state,a=n.shaking,s=n.activeTab,i=n.form,l=n.response,c=n.loading,u=n.error,p=!(!l&&!u);return React.createElement(ConsoleWrapHook,{shaking:a,className:r,rootElement:o},React.createElement(CodeHeader,null,React.createElement(ConsoleBadges,{active:s,hasResponse:p,onChange:this.handleTabChange}),this.props.onClose&&React.createElement(CloseButton,{onClick:this.props.onClose}," ✕ ")),React.createElement(ConsoleBody,{hidden:0!==s},this.renderRequest()),React.createElement(ConsoleBody,{hidden:1!==s},this.renderResponse()),React.createElement(ActionPanel,{hasResponse:p,params:i.values&&__assign({},i.values),operation:t,loading:c,execute:this.handleExecute}))}}),Object.defineProperty(t.prototype,"renderRequest",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e,t=this.props,r=t.operation,o=t.store,n=t.properties,a=t.securityDefaults,s=this.state,i=s.form,c=s.resolvedRawSpec,u=s.server,p=i.errors||{},d=p.path||p.cookie||p.header||p.query,m=c&&JsonPointer.get(c,r.pointer),h=i.values&&i.values.auth&&Object.keys(i.values.auth)[0];h&&i.values.auth[h]||(h=void 0),!h||void 0===i.values.auth[h].token&&void 0===i.values.auth[h].client_id&&void 0===i.values.auth[h].client_secret||i.values.auth[h].token&&i.values.auth[h].token.access_token||(h=void 0),h&&null!=i.values.auth[h].username&&(i.values.auth[h].username&&i.values.auth[h].password||(h=void 0));var v=r.parameters||[],f=null===(e=null==o?void 0:o.options.hooks)||void 0===e?void 0:e.ReplaceTryItAuthPanel;return c?React.createElement(React.Fragment,null,React.createElement(Form,{onChange:this.handleChange,getApi:this.setFormApi,style:__assign(__assign({},flexColumn),{margin:0})},React.createElement(Accordion,{initialActiveIdx:r.security.length&&h?1:0},r.security.length&&React.createElement(TryItPanel,{header:l("tryItAuth"),"data-cy":"security-trigger",renderChildrenHidden:!0,error:!h&&!!p.auth,success:!!h},f?React.createElement(AuthPanelHook,{field:"auth",validate:requiredValidator},(function(e){return React.createElement(RenderHook,{Hook:f,props:{server:u,operation:r,onChange:e,OAuth2:OAuth2}})})):React.createElement(AuthPanel,{formApi:this.formApi,form:i,operation:r,activeServer:u.url,authCorsProxyUrl:o.options.authCorsProxyUrl,securityDefaults:a}))||null,r.requestBody&&React.createElement(TryItPanel,{header:l("tryItBody"),"data-cy":"body-trigger",renderChildrenHidden:!0,error:!!p.body},React.createElement(RequestBody,{validate:this.validateBody,console:this,body:r.requestBody,id:r.id,resolvedBody:m.requestBody,properties:n}))||null,v.length&&React.createElement(TryItPanel,{header:l("tryItParameters"),"data-cy":"parameters-trigger",error:d,renderChildrenHidden:!0},React.createElement(OperationParameters,{operation:r,values:i.values,errors:i.errors||{}}))||null)),React.createElement(ServerChooser,{operation:r,onChange:this.handleServerChange})):"Loading..."}}),Object.defineProperty(t.prototype,"renderResponse",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.state,t=e.response,r=e.error,o=e.time;return React.createElement(ResponsePanel,{response:t,error:r,time:o})}}),t=__decorate([observer],t)}(React.Component);export{Console};function ConsoleWrapHook(e){var t=e.shaking,r=e.className,o=e.children,n=e.rootElement,a=useDimensions(n)[0];return React.createElement(ConsoleWrap,{shaking:t,className:r,"data-cy":"console",fullWidth:null==a?void 0:a.width},o)}function AuthPanelHook(e){var t=useField(__assign({},e)),r=t.fieldApi,o=t.render,n=t.userProps,a=r.setValue,s=n.children;return o(React.createElement(React.Fragment,null,s(a)))}function TryItPanel(e){return React.createElement(StyledTryItPanel,__assign({},e,{header:function(t){var r=t.toggle,o=t.expanded;return React.createElement(Header,{onClick:r,isExpanded:o,"data-cy":e["data-cy"]},React.createElement(Trigger,null,React.createElement(Title,null,e.header),React.createElement(ShelfIcon,{direction:o?"down":"right"})),e.error&&React.createElement(CrossIcon,{size:"14px",color:"#ff908b"})||null,e.success&&React.createElement(LockIcon,{size:"14px",color:"#56ff26"})||null)}}))}var templateObject_1,StyledTryItPanel=styled(Panel)(templateObject_1||(templateObject_1=__makeTemplateObject(["\n "," {\n color: white;\n border: 1px solid ",";\n padding: 10px;\n }\n\n "," path {\n fill: white;\n }\n\n "," {\n padding: 15px 10px;\n background-color: #3e4c59;\n border: 1px solid ",";\n border-top: 0;\n }\n"],["\n "," {\n color: white;\n border: 1px solid ",";\n padding: 10px;\n }\n\n "," path {\n fill: white;\n }\n\n "," {\n padding: 15px 10px;\n background-color: #3e4c59;\n border: 1px solid ",";\n border-top: 0;\n }\n"])),Header,(function(e){return e.error?"#ff908b":"#89949f"}),ShelfIcon,PanelBody,(function(e){return e.error?"#ff908b":"#89949f"}));
2
2
  //# sourceMappingURL=Console.js.map
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { SecurityDetails } from '../../utils';
2
3
  import { FormApi, FormState } from 'informed';
3
4
  import { RedocProNormalizedOptions } from '../../services';
4
5
  export interface OAuth2FlowProps {
@@ -12,6 +13,7 @@ export interface OAuth2FlowProps {
12
13
  formApi: FormApi;
13
14
  flow: 'implicit' | 'authorizationCode';
14
15
  clientId?: string;
16
+ defaultValues?: SecurityDetails;
15
17
  }
16
18
  interface OAuth2FlowState {
17
19
  error: string | null;
@@ -1,2 +1,2 @@
1
- import{__assign,__extends,__makeTemplateObject}from"tslib";import*as React from"react";import{styled,OptionsContext}from"../../redoc-lib";import{LinearProgress}from"../common/LinearProgress";import{FormControl,FormLabel,FormError,FormWrapper,FormWarning}from"../common/form";import{OAuth2}from"../../services/OAuth2";import{fromStorage,getSecurityDetailsOptions}from"../../utils";import Scope from"./Scope";import{Button}from"../shared";import{FormDropdown,FormTextField,TextField}from"../common/TextField";import{normalizeUrlProtocol}from"./utils";function requiredValidator(e){if(!e)return"Field is required"}var OAuth2Flow=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(t,"state",{enumerable:!0,configurable:!0,writable:!0,value:{error:null,loading:!1}}),Object.defineProperty(t,"clearToken",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.props.formApi.setValue("auth."+t.props.id+".token","")}}),t}return __extends(t,e),Object.defineProperty(t.prototype,"values",{get:function(){return this.props.form.values&&this.props.form.values.auth&&this.props.form.values.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errors",{get:function(){return this.props.form.errors&&this.props.form.errors.auth&&this.props.form.errors.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"handleAuthorize",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;if(e){this.props.formApi.validate();var r=this.props,o=r.flow,a=r.id,l=r.tokenUrl,n=r.authCorsProxyUrl;if(this.values.client_id&&("authorizationCode"!==o||this.values.client_secret)){this.setState({loading:!0,error:null});var i=n?n+normalizeUrlProtocol(e):e,s=n&&l?n+normalizeUrlProtocol(l):l,c=this.props.formApi.getValue("auth."+a+".scopes"),u={authorizationUrl:i.startsWith("http")?i:this.props.server+i,clientId:this.values.client_id,scopes:c,redirectUri:this.context.oAuth2RedirectURI,routingBasePath:this.context.routingBasePath,successCallback:function(e){t.props.formApi.setValue("auth."+t.props.id+".token",e),t.setState({loading:!1,error:null})},errorCallback:function(e){t.setState({loading:!1,error:(null==e?void 0:e.message)||"Failed to retrieve the access token"})}};"implicit"===o&&OAuth2.authorizeImplicit(u),"authorizationCode"===o&&OAuth2.authorizeAuthorizationCode(__assign(__assign({},u),{tokenUrl:(null==s?void 0:s.startsWith("http"))?s:this.props.server+s,clientSecret:this.values.client_secret}))}}}}),Object.defineProperty(t.prototype,"handleLogout",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.clearToken(),this.setState({error:null})}}),Object.defineProperty(t.prototype,"handleCancel",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.setState({loading:!1,error:null}),OAuth2.clearRedirectData(this.props.flow)}}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e,t,r=this,o=this.state,a=o.error,l=o.loading,n=this.props,i=n.id,s=n.scopes,c=n.authorizationUrl,u=n.flow;if(!c)return React.createElement(FormError,null,"No flow info");var p=fromStorage("auth."+i+".token");p=p?JSON.parse(p):"";var m=getSecurityDetailsOptions(i,"client_id"),d={field:"auth."+i+".client_id",fullWidth:!0,initialValue:fromStorage("auth."+i+".client_id")||this.props.clientId,initValue:fromStorage("auth."+i+".client_id")||this.props.clientId,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: "),m?React.createElement(FormDropdown,__assign({},d,{options:m})):React.createElement(FormTextField,__assign({},d))),"authorizationCode"===u&&React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:"auth."+i+".client_secret",initialValue:fromStorage("auth."+i+".client_secret"),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0})),React.createElement(FormTextField,{fullWidth:!0,field:"auth."+i+".token",type:"hidden",initialValue:p,validate:requiredValidator}),React.createElement(Scope,{id:i,scopes:s}),this.values.token&&this.values.token.access_token?React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(TextField,{disabled:!0,type:"password",fullWidth:!0,value:this.values.token.access_token})):null),React.createElement(ButtonsWrapper,null,this.values.token&&this.values.token.access_token?React.createElement(Button,{fullWidth:!0,onClick:function(){r.handleLogout()}},"Log out"):React.createElement(React.Fragment,null,l?React.createElement(React.Fragment,null,React.createElement(Button,{fullWidth:!0,onClick:function(){r.handleCancel()}},"Cancel"),React.createElement(LinearProgress,null)):React.createElement(Button,{fullWidth:!0,disabled:(null===(t=null===(e=this.props)||void 0===e?void 0:e.formApi)||void 0===t?void 0:t.getTouched("auth."+i+".client_id"))&&!this.values.client_id,onClick:function(){r.handleAuthorize(c)}},"Authorize"))),l||a||!this.values.token||!this.values.token.access_token&&React.createElement(FormWrapper,null,React.createElement(FormControl,null,l?React.createElement(FormWarning,null,"Please, finish your authorization flow or cancel authorization."):a?React.createElement(React.Fragment,null,React.createElement(OriginalErrorMessage,null,React.createElement(FormError,null,a))):this.values.token&&this.values.token.access_token?null:React.createElement(FormWarning,null," No Access Token. Please, Authorize. "))))}}),Object.defineProperty(t,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:OptionsContext}),t}(React.Component);export{OAuth2Flow};var templateObject_1,templateObject_2,OriginalErrorMessage=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n font-family: monospace;\n margin-top: 10px;\n line-height: 1;\n padding-left: 10px;\n border-left: 1px solid gray;\n"],["\n font-family: monospace;\n margin-top: 10px;\n line-height: 1;\n padding-left: 10px;\n border-left: 1px solid gray;\n"]))),ButtonsWrapper=styled.div(templateObject_2||(templateObject_2=__makeTemplateObject(["\n margin-bottom: 15px;\n"],["\n margin-bottom: 15px;\n"])));
1
+ import{__assign,__extends,__makeTemplateObject}from"tslib";import*as React from"react";import{styled,OptionsContext}from"../../redoc-lib";import{LinearProgress}from"../common/LinearProgress";import{FormControl,FormLabel,FormError,FormWrapper,FormWarning}from"../common/form";import{OAuth2}from"../../services/OAuth2";import{fromStorage,getSecurityDetailsOptions}from"../../utils";import Scope from"./Scope";import{Button}from"../shared";import{FormDropdown,FormTextField,TextField}from"../common/TextField";import{normalizeUrlProtocol}from"./utils";function requiredValidator(e){if(!e)return"Field is required"}var OAuth2Flow=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(t,"state",{enumerable:!0,configurable:!0,writable:!0,value:{error:null,loading:!1}}),Object.defineProperty(t,"clearToken",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.props.formApi.setValue("auth."+t.props.id+".token","")}}),t}return __extends(t,e),Object.defineProperty(t.prototype,"values",{get:function(){return this.props.form.values&&this.props.form.values.auth&&this.props.form.values.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errors",{get:function(){return this.props.form.errors&&this.props.form.errors.auth&&this.props.form.errors.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"handleAuthorize",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var t=this;if(e){this.props.formApi.validate();var r=this.props,o=r.flow,l=r.id,a=r.tokenUrl,i=r.authCorsProxyUrl;if(this.values.client_id&&("authorizationCode"!==o||this.values.client_secret)){this.setState({loading:!0,error:null});var n=i?i+normalizeUrlProtocol(e):e,s=i&&a?i+normalizeUrlProtocol(a):a,c=this.props.formApi.getValue("auth."+l+".scopes"),u={authorizationUrl:n.startsWith("http")?n:this.props.server+n,clientId:this.values.client_id,scopes:c,redirectUri:this.context.oAuth2RedirectURI,routingBasePath:this.context.routingBasePath,successCallback:function(e){t.props.formApi.setValue("auth."+t.props.id+".token",e),t.setState({loading:!1,error:null})},errorCallback:function(e){t.setState({loading:!1,error:(null==e?void 0:e.message)||"Failed to retrieve the access token"})}};"implicit"===o&&OAuth2.authorizeImplicit(u),"authorizationCode"===o&&OAuth2.authorizeAuthorizationCode(__assign(__assign({},u),{tokenUrl:(null==s?void 0:s.startsWith("http"))?s:this.props.server+s,clientSecret:this.values.client_secret}))}}}}),Object.defineProperty(t.prototype,"handleLogout",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.clearToken(),this.setState({error:null})}}),Object.defineProperty(t.prototype,"handleCancel",{enumerable:!1,configurable:!0,writable:!0,value:function(){this.setState({loading:!1,error:null}),OAuth2.clearRedirectData(this.props.flow)}}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e,t,r=this,o=this.state,l=o.error,a=o.loading,i=this.props,n=i.id,s=i.scopes,c=i.authorizationUrl,u=i.flow,p=i.defaultValues;if(!c)return React.createElement(FormError,null,"No flow info");var m=fromStorage("auth."+n+".token")||JSON.stringify(null==p?void 0:p.token);m=m?JSON.parse(m):"";var d=getSecurityDetailsOptions(n,"client_id"),h={field:"auth."+n+".client_id",fullWidth:!0,initialValue:fromStorage("auth."+n+".client_id")||this.props.clientId||(null==p?void 0:p.client_id),initValue:fromStorage("auth."+n+".client_id")||this.props.clientId||(null==p?void 0:p.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: "),d?React.createElement(FormDropdown,__assign({},h,{options:d})):React.createElement(FormTextField,__assign({},h,{"data-cy":"client-id-input"}))),"authorizationCode"===u&&React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:"auth."+n+".client_secret",initialValue:fromStorage("auth."+n+".client_secret")||(null==p?void 0:p.client_secret),validate:requiredValidator,validateOnBlur:!0,validateOnChange:!0,"data-cy":"client-secret-input"})),React.createElement(FormTextField,{fullWidth:!0,field:"auth."+n+".token",type:"hidden",initialValue:m,validate:requiredValidator}),React.createElement(Scope,{id:n,scopes:s}),this.values.token&&this.values.token.access_token?React.createElement(FormControl,null,React.createElement(FormLabel,null," Access Token: "),React.createElement(TextField,{disabled:!0,type:"password",fullWidth:!0,value:this.values.token.access_token})):null),React.createElement(ButtonsWrapper,null,this.values.token&&this.values.token.access_token?React.createElement(Button,{fullWidth:!0,onClick:function(){r.handleLogout()}},"Log out"):React.createElement(React.Fragment,null,a?React.createElement(React.Fragment,null,React.createElement(Button,{fullWidth:!0,onClick:function(){r.handleCancel()}},"Cancel"),React.createElement(LinearProgress,null)):React.createElement(Button,{fullWidth:!0,disabled:(null===(t=null===(e=this.props)||void 0===e?void 0:e.formApi)||void 0===t?void 0:t.getTouched("auth."+n+".client_id"))&&!this.values.client_id,onClick:function(){r.handleAuthorize(c)}},"Authorize"))),a||l||!this.values.token||!this.values.token.access_token&&React.createElement(FormWrapper,null,React.createElement(FormControl,null,a?React.createElement(FormWarning,null,"Please, finish your authorization flow or cancel authorization."):l?React.createElement(React.Fragment,null,React.createElement(OriginalErrorMessage,null,React.createElement(FormError,null,l))):this.values.token&&this.values.token.access_token?null:React.createElement(FormWarning,null," No Access Token. Please, Authorize. "))))}}),Object.defineProperty(t,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:OptionsContext}),t}(React.Component);export{OAuth2Flow};var templateObject_1,templateObject_2,OriginalErrorMessage=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n font-family: monospace;\n margin-top: 10px;\n line-height: 1;\n padding-left: 10px;\n border-left: 1px solid gray;\n"],["\n font-family: monospace;\n margin-top: 10px;\n line-height: 1;\n padding-left: 10px;\n border-left: 1px solid gray;\n"]))),ButtonsWrapper=styled.div(templateObject_2||(templateObject_2=__makeTemplateObject(["\n margin-bottom: 15px;\n"],["\n margin-bottom: 15px;\n"])));
2
2
  //# sourceMappingURL=OAuth2Flow.js.map
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { SecurityDetails } from '../../utils';
2
3
  export interface OAuth2TokenInputProps {
3
4
  flow: {
4
5
  refreshUrl?: string;
@@ -14,6 +15,7 @@ export interface OAuth2TokenInputProps {
14
15
  };
15
16
  formApi: any;
16
17
  clientId?: string;
18
+ defaultValues?: SecurityDetails;
17
19
  }
18
20
  interface OAuth2TokenInputState {
19
21
  error: string;
@@ -1,2 +1,2 @@
1
- import{__assign,__awaiter,__extends,__generator}from"tslib";import*as React from"react";import{FormControl,FormLabel,FormError,FormWrapper,FormHeader,TokenField,TokenValue,TokenClear,TokenShowHide}from"../common/form";import{fromStorage,getSecurityDetailsOptions,toStorage}from"../../utils";import Scope from"./Scope";import{OAuth2}from"../../services/OAuth2";import{Button}from"../shared";import{FormDropdown,FormTextField}from"../common/TextField";import{normalizeUrlProtocol}from"./utils";function validateToken(e){if(!e)return"Token is required"}var OAuth2TokenInput=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(t,"state",{enumerable:!0,configurable:!0,writable:!0,value:{error:"",loading:!1,tokenMasked:!0}}),Object.defineProperty(t,"clearToken",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.props.formApi.setValue("auth."+t.props.id+".token",""),toStorage("auth."+t.props.id+".token","")}}),Object.defineProperty(t,"toggleTokenMask",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.setState({tokenMasked:!t.state.tokenMasked})}}),Object.defineProperty(t,"requestToken",{enumerable:!0,configurable:!0,writable:!0,value:function(){return __awaiter(t,void 0,void 0,(function(){var e,t,r,o,n,a,l,i=this;return __generator(this,(function(s){switch(s.label){case 0:return this.state.loading?[2]:(e=this.props,t=e.server,r=e.flow,o=e.authCorsProxyUrl,n=o&&r.tokenUrl?o+normalizeUrlProtocol(r.tokenUrl):r.tokenUrl,this.errors.client_id||this.errors.client_secret?(console.log("Provide client_id and client_secret"),[2]):(a=this.values.client_id,l=this.values.client_secret,a&&l?(this.setState({loading:!0}),[4,OAuth2.authorizeClientCredentials({tokenUrl:n.startsWith("http")?n:t+n,clientId:a,clientSecret:l,scopes:this.values.scopes,successCallback:function(e){i.props.formApi.setValue("auth."+i.props.id+".token",e),i.setState({loading:!1})},errorCallback:function(e){i.clearToken(),i.setState({error:e.message,loading:!1})}})]):(console.log("Provide client_id and client_secret"),[2])));case 1:return s.sent(),[2]}}))}))}}),t}return __extends(t,e),Object.defineProperty(t.prototype,"values",{get:function(){return this.props.form.values&&this.props.form.values.auth&&this.props.form.values.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errors",{get:function(){return this.props.form.errors&&this.props.form.errors.auth&&this.props.form.errors.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.state,t=e.loading,r=e.error,o=e.tokenMasked,n=this.props.id,a=Object.keys(this.props.flow.scopes),l=fromStorage("auth."+n+".token");l=l?JSON.parse(l):"";var i=getSecurityDetailsOptions(n,"client_id"),s={field:"auth."+n+".client_id",fullWidth:!0,initialValue:fromStorage("auth."+n+".client_id")||this.props.clientId,initValue:fromStorage("auth."+n+".client_id")||this.props.clientId,placeholder:"Your OAuth2 app Client ID"};return React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client ID:"),i?React.createElement(FormDropdown,__assign({},s,{options:i})):React.createElement(FormTextField,__assign({},s,{type:"password"}))),React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:"auth."+n+".client_secret",initialValue:fromStorage("auth."+n+".client_secret")})),React.createElement(FormTextField,{fullWidth:!0,field:"auth."+n+".token",type:"hidden",initialValue:l,validate:validateToken}),React.createElement(Scope,{id:n,scopes:a})),React.createElement(Button,{color:"primary",onClick:this.requestToken,blinking:t},t?"Loading...":"Request Token"),React.createElement(FormHeader,null," Access Token "),r?React.createElement(FormError,{style:{marginBottom:"1em"}},"Failed to request token: ",React.createElement("pre",null,r)," "):this.values.token&&this.values.token.access_token?React.createElement(TokenField,null,React.createElement(TokenValue,{length:this.values.token.access_token.length,masked:o},this.values.token.access_token),React.createElement(TokenShowHide,{onClick:this.toggleTokenMask},o?"Show":"Hide"," "),React.createElement(TokenClear,{onClick:this.clearToken}," Clear ")):React.createElement(FormError,{style:{marginBottom:"1em"}},"No token"))}}),t}(React.Component);export{OAuth2TokenInput};export default OAuth2TokenInput;
1
+ import{__assign,__awaiter,__extends,__generator}from"tslib";import*as React from"react";import{FormControl,FormLabel,FormError,FormWrapper,FormHeader,TokenField,TokenValue,TokenClear,TokenShowHide}from"../common/form";import{fromStorage,getSecurityDetailsOptions,toStorage}from"../../utils";import Scope from"./Scope";import{OAuth2}from"../../services/OAuth2";import{Button}from"../shared";import{FormDropdown,FormTextField}from"../common/TextField";import{normalizeUrlProtocol}from"./utils";function validateToken(e){if(!e)return"Token is required"}var OAuth2TokenInput=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(t,"state",{enumerable:!0,configurable:!0,writable:!0,value:{error:"",loading:!1,tokenMasked:!0}}),Object.defineProperty(t,"clearToken",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.props.formApi.setValue("auth."+t.props.id+".token",""),toStorage("auth."+t.props.id+".token","")}}),Object.defineProperty(t,"toggleTokenMask",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.setState({tokenMasked:!t.state.tokenMasked})}}),Object.defineProperty(t,"requestToken",{enumerable:!0,configurable:!0,writable:!0,value:function(){return __awaiter(t,void 0,void 0,(function(){var e,t,r,o,n,a,l,i=this;return __generator(this,(function(s){switch(s.label){case 0:return this.state.loading?[2]:(e=this.props,t=e.server,r=e.flow,o=e.authCorsProxyUrl,n=o&&r.tokenUrl?o+normalizeUrlProtocol(r.tokenUrl):r.tokenUrl,this.errors.client_id||this.errors.client_secret?(console.log("Provide client_id and client_secret"),[2]):(a=this.values.client_id,l=this.values.client_secret,a&&l?(this.setState({loading:!0}),[4,OAuth2.authorizeClientCredentials({tokenUrl:n.startsWith("http")?n:t+n,clientId:a,clientSecret:l,scopes:this.values.scopes,successCallback:function(e){i.props.formApi.setValue("auth."+i.props.id+".token",e),i.setState({loading:!1})},errorCallback:function(e){i.clearToken(),i.setState({error:e.message,loading:!1})}})]):(console.log("Provide client_id and client_secret"),[2])));case 1:return s.sent(),[2]}}))}))}}),t}return __extends(t,e),Object.defineProperty(t.prototype,"values",{get:function(){return this.props.form.values&&this.props.form.values.auth&&this.props.form.values.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errors",{get:function(){return this.props.form.errors&&this.props.form.errors.auth&&this.props.form.errors.auth[this.props.id]||{}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.state,t=e.loading,r=e.error,o=e.tokenMasked,n=this.props,a=n.id,l=n.defaultValues,i=Object.keys(this.props.flow.scopes),s=fromStorage("auth."+a+".token")||JSON.stringify(null==l?void 0:l.token);s=s?JSON.parse(s):"";var c=getSecurityDetailsOptions(a,"client_id"),u={field:"auth."+a+".client_id",fullWidth:!0,initialValue:fromStorage("auth."+a+".client_id")||this.props.clientId||(null==l?void 0:l.client_id),initValue:fromStorage("auth."+a+".client_id")||this.props.clientId||(null==l?void 0:l.client_id),placeholder:"Your OAuth2 app Client ID"};return React.createElement(React.Fragment,null,React.createElement(FormWrapper,null,React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client ID:"),c?React.createElement(FormDropdown,__assign({},u,{options:c})):React.createElement(FormTextField,__assign({},u,{type:"password"}))),React.createElement(FormControl,null,React.createElement(FormLabel,null,"Client Secret:"),React.createElement(FormTextField,{type:"password",fullWidth:!0,field:"auth."+a+".client_secret",initialValue:fromStorage("auth."+a+".client_secret")||(null==l?void 0:l.client_secret)})),React.createElement(FormTextField,{fullWidth:!0,field:"auth."+a+".token",type:"hidden",initialValue:s,validate:validateToken}),React.createElement(Scope,{id:a,scopes:i})),React.createElement(Button,{color:"primary",onClick:this.requestToken,blinking:t},t?"Loading...":"Request Token"),React.createElement(FormHeader,null," Access Token "),r?React.createElement(FormError,{style:{marginBottom:"1em"}},"Failed to request token: ",React.createElement("pre",null,r)," "):this.values.token&&this.values.token.access_token?React.createElement(TokenField,null,React.createElement(TokenValue,{length:this.values.token.access_token.length,masked:o},this.values.token.access_token),React.createElement(TokenShowHide,{onClick:this.toggleTokenMask},o?"Show":"Hide"," "),React.createElement(TokenClear,{onClick:this.clearToken}," Clear ")):React.createElement(FormError,{style:{marginBottom:"1em"}},"No token"))}}),t}(React.Component);export{OAuth2TokenInput};export default OAuth2TokenInput;
2
2
  //# sourceMappingURL=OAuth2TokenInput.js.map
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { FormApi, FormState } from 'informed';
3
3
  import { SecurityScheme } from '../../redoc-lib';
4
+ import { SecurityDetails } from '../../utils';
4
5
  export interface OpenIDConnectProps {
5
6
  server: string;
6
7
  authCorsProxyUrl: Maybe<string>;
@@ -9,5 +10,6 @@ export interface OpenIDConnectProps {
9
10
  formApi: FormApi;
10
11
  scheme: SecurityScheme;
11
12
  clientId?: string;
13
+ defaultValues?: SecurityDetails;
12
14
  }
13
15
  export declare function OpenIDConnect(props: OpenIDConnectProps): JSX.Element;
@@ -1,2 +1,2 @@
1
- import{__awaiter,__generator,__makeTemplateObject}from"tslib";import*as React from"react";import{styled}from"../../redoc-lib";import{discoverOpenIDConnect}from"../../services/OpenIDConnect";import{OAuth2Flow}from"./OAuth2Flow";import{LinearProgress}from"../common/LinearProgress";import{FormError}from"../common/form";export function OpenIDConnect(e){var t,r=this,n=e.scheme,o=React.useState({}),a=o[0],c=o[1],l=React.useState(),i=l[0],m=l[1],s=React.useState(!1),p=s[0],u=s[1];React.useEffect((function(){d(n.openIdConnectUrl)}),[n.openIdConnectUrl]);var d=function(e){return __awaiter(r,void 0,void 0,(function(){var t,r;return __generator(this,(function(n){switch(n.label){case 0:u(!0),m(""),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,discoverOpenIDConnect(e)];case 2:return t=n.sent(),c(t),[3,4];case 3:return r=n.sent(),m(r.message),[3,4];case 4:return u(!1),[2]}}))}))};return React.createElement("div",null,p?React.createElement("div",null,React.createElement("div",null,"Fetching OpenID Connect metadata..."),React.createElement(LinearProgress,null)):React.createElement("div",null,i?React.createElement(FormError,null,i):(null===(t=null==a?void 0:a.response_types_supported)||void 0===t?void 0:t.includes("token"))?React.createElement(React.Fragment,null,React.createElement(FlowName,null,"OAuth2 Implicit Flow"),React.createElement(OAuth2Flow,{key:e.id,authorizationUrl:a.authorization_endpoint,authCorsProxyUrl:e.authCorsProxyUrl,scopes:a.scopes_supported,server:e.server,id:e.id,form:e.form,formApi:e.formApi,clientId:e.clientId,flow:"implicit"})):React.createElement("div",null,"Unsupported flow")))}var templateObject_1,FlowName=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n margin-top: 5px;\n margin-bottom: 10px;\n"],["\n margin-top: 5px;\n margin-bottom: 10px;\n"])));
1
+ import{__awaiter,__generator,__makeTemplateObject}from"tslib";import*as React from"react";import{styled}from"../../redoc-lib";import{discoverOpenIDConnect}from"../../services/OpenIDConnect";import{OAuth2Flow}from"./OAuth2Flow";import{LinearProgress}from"../common/LinearProgress";import{FormError}from"../common/form";export function OpenIDConnect(e){var t,r=this,n=e.scheme,o=e.defaultValues,a=React.useState({}),l=a[0],c=a[1],i=React.useState(),m=i[0],s=i[1],u=React.useState(!1),p=u[0],d=u[1];React.useEffect((function(){f(n.openIdConnectUrl)}),[n.openIdConnectUrl]);var f=function(e){return __awaiter(r,void 0,void 0,(function(){var t,r;return __generator(this,(function(n){switch(n.label){case 0:d(!0),s(""),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,discoverOpenIDConnect(e)];case 2:return t=n.sent(),c(t),[3,4];case 3:return r=n.sent(),s(r.message),[3,4];case 4:return d(!1),[2]}}))}))};return React.createElement("div",null,p?React.createElement("div",null,React.createElement("div",null,"Fetching OpenID Connect metadata..."),React.createElement(LinearProgress,null)):React.createElement("div",null,m?React.createElement(FormError,null,m):(null===(t=null==l?void 0:l.response_types_supported)||void 0===t?void 0:t.includes("token"))?React.createElement(React.Fragment,null,React.createElement(FlowName,null,"OAuth2 Implicit Flow"),React.createElement(OAuth2Flow,{key:e.id,authorizationUrl:l.authorization_endpoint,authCorsProxyUrl:e.authCorsProxyUrl,scopes:l.scopes_supported,server:e.server,id:e.id,form:e.form,formApi:e.formApi,clientId:e.clientId,flow:"implicit",defaultValues:o})):React.createElement("div",null,"Unsupported flow")))}var templateObject_1,FlowName=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n margin-top: 5px;\n margin-bottom: 10px;\n"],["\n margin-top: 5px;\n margin-bottom: 10px;\n"])));
2
2
  //# sourceMappingURL=OpenIDConnect.js.map
@@ -9,4 +9,4 @@ export declare enum SchemaType {
9
9
  ARRAY = "array",
10
10
  OBJECT = "object"
11
11
  }
12
- export declare function OperationParameters(props: OperationParametersProps): JSX.Element;
12
+ export declare function OperationParameters({ values, operation }: OperationParametersProps): JSX.Element;
@@ -1,2 +1,2 @@
1
- import{__spreadArray}from"tslib";import*as React from"react";import{dottedString,get}from"../../utils";import{FormLabel,FormControl,FormWarning,GroupLabel,Table}from"../common/form";import{FormTextField}from"../common/TextField";import{ParameterEnumDropdown}from"./ParameterDropdown";export var SchemaType;!function(e){e.ARRAY="array",e.OBJECT="object"}(SchemaType||(SchemaType={}));var placeholder=function(e){return"("+e.schema.type+")"+(e.example?" "+e.example:"")};function safePush(e,a,r){e[a]||(e[a]=[]),e[a].push(r)}function orderParams(e){var a={};return e.forEach((function(e){safePush(a,e.in,e)})),a}var PARAM_PLACES=["path","query","cookie","header"];function createValidator(e){return function(a){if(e.required&&!a)return"Field is required";if(e.required&&e.schema.type===SchemaType.ARRAY&&Array.isArray(a)){if(a.length>(e.schema.rawSchema&&e.schema.rawSchema.maxItems||1/0))return"Too many items selected, maximum "+e.schema.rawSchema.maxItems;if(a.length<(e.schema.rawSchema&&e.schema.rawSchema.minItems||0)){var r=e.schema.rawSchema.minItems;return"You should select at least "+(1===r?r+" item":r+" items")}}}}function getInitialValue(e){if(e.schema.type===SchemaType.ARRAY){var a=e.schema.default||e.schema.example;if(!a&&e.schema.rawSchema.items){if(e.schema.rawSchema.items.default)return[e.schema.rawSchema.items.default];if(e.schema.rawSchema.items.example)return[e.schema.rawSchema.items.example]}return a||[]}return e.schema.default||e.schema.example}export function OperationParameters(e){function a(r,t,m){var n,c=m?dottedString(m,r.name):r.name,i=function(e){var a=e.oneOfType,r=e.type,t=e.items;return a||r===SchemaType.ARRAY&&(null==t?void 0:t.type)===SchemaType.OBJECT&&"Array of objects"}(r.schema);if(i&&console.warn('Unsupported parameter definition: "'+i+'"'),r.schema.type===SchemaType.OBJECT)return null===(n=r.schema.fields)||void 0===n?void 0:n.map((function(e){return a(e,t,c)}));var o=m?[t,m]:[r.in],l=dottedString.apply(void 0,__spreadArray(__spreadArray([],o,!1),[r.name],!1));return React.createElement(FormControl,{key:l},React.createElement(FormLabel,{required:r.required},c,":"),i?React.createElement(FormWarning,null,"Unsupported field schema definition"):function(a,r){var t=React.useMemo((function(){return createValidator(r)}),[r]),m=e.values,n=Array.isArray(r.schema.enum)&&r.schema.enum.length?r.schema.enum:void 0,c=getInitialValue(r);return n?React.createElement(FormControl,null,React.createElement(ParameterEnumDropdown,{initValue:c,paramEnum:n,field:a})):React.createElement(FormTextField,{fullWidth:!0,"data-cy":"parameter-input",id:a,field:a,placeholder:placeholder(r),validate:t,initialValue:c||get(m,a),validateOnBlur:!0,validateOnChange:!0})}(l,r))}var r=orderParams(e.operation.parameters||[]);return React.createElement(Table,null,PARAM_PLACES.map((function(e){return function(e,r){return r&&r.length?React.createElement(React.Fragment,{key:e},React.createElement(FormControl,null,React.createElement(GroupLabel,null," # ",e," parameters "),React.createElement("span",null," ")),r.map((function(r){return a(r,e)}))):null}(e,r[e])})))}
1
+ import{__spreadArray}from"tslib";import*as React from"react";import{dottedString,get}from"../../utils";import{FormLabel,FormControl,FormWarning,GroupLabel,Table}from"../common/form";import{FormTextField}from"../common/TextField";import{ParameterEnumDropdown}from"./ParameterDropdown";export var SchemaType;!function(e){e.ARRAY="array",e.OBJECT="object"}(SchemaType||(SchemaType={}));var placeholder=function(e){return"("+e.schema.type+")"+(e.example?" "+e.example:"")};function safePush(e,a,r){e[a]||(e[a]=[]),e[a].push(r)}function orderParams(e){var a={};return e.forEach((function(e){safePush(a,e.in,e)})),a}var PARAM_PLACES=["path","query","cookie","header"];function createValidator(e){return function(a){if(e.required&&!a)return"Field is required";if(e.required&&e.schema.type===SchemaType.ARRAY&&Array.isArray(a)){if(a.length>(e.schema.rawSchema&&e.schema.rawSchema.maxItems||1/0))return"Too many items selected, maximum "+e.schema.rawSchema.maxItems;if(a.length<(e.schema.rawSchema&&e.schema.rawSchema.minItems||0)){var r=e.schema.rawSchema.minItems;return"You should select at least "+(1===r?r+" item":r+" items")}}}}function getInitialValue(e){if(e.schema.type===SchemaType.ARRAY){var a=e.schema.default||e.schema.example;if(!a&&e.schema.rawSchema.items){if(e.schema.rawSchema.items.default)return[e.schema.rawSchema.items.default];if(e.schema.rawSchema.items.example)return[e.schema.rawSchema.items.example]}return a||[]}return e.schema.default||e.schema.example}export function OperationParameters(e){var a=e.values;function r(e,t,m){var n,c=m?dottedString(m,e.name):e.name,i=function(e){var a=e.oneOfType,r=e.type,t=e.items;return a||r===SchemaType.ARRAY&&(null==t?void 0:t.type)===SchemaType.OBJECT&&"Array of objects"}(e.schema);if(i&&console.warn('Unsupported parameter definition: "'+i+'"'),e.schema.type===SchemaType.OBJECT)return null===(n=e.schema.fields)||void 0===n?void 0:n.map((function(e){return r(e,t,c)}));var o=m?[t,m]:[e.in],l=dottedString.apply(void 0,__spreadArray(__spreadArray([],o,!1),[e.name],!1));return React.createElement(FormControl,{key:l},React.createElement(FormLabel,{required:e.required},c,":"),i?React.createElement(FormWarning,null,"Unsupported field schema definition"):function(e,r){var t=React.useMemo((function(){return createValidator(r)}),[r]),m=Array.isArray(r.schema.enum)&&r.schema.enum.length?r.schema.enum:void 0,n=getInitialValue(r);return m?React.createElement(FormControl,null,React.createElement(ParameterEnumDropdown,{initValue:n,paramEnum:m,field:e})):React.createElement(FormTextField,{fullWidth:!0,"data-cy":"parameter-input",id:e,field:e,placeholder:placeholder(r),validate:t,initialValue:n||get(a,e),validateOnBlur:!0,validateOnChange:!0})}(l,e))}var t=orderParams(e.operation.parameters||[]);return React.createElement(Table,null,PARAM_PLACES.map((function(e){return function(e,a){return a&&a.length?React.createElement(React.Fragment,{key:e},React.createElement(FormControl,null,React.createElement(GroupLabel,null," # ",e," parameters "),React.createElement("span",null," ")),a.map((function(a){return r(a,e)}))):null}(e,t[e])})))}
2
2
  //# sourceMappingURL=OperationParameters.js.map
@@ -1,2 +1,2 @@
1
- var _this=this;import{__assign,__awaiter,__generator,__rest}from"tslib";import*as React from"react";import{useEffect}from"react";import{observer}from"mobx-react";import merge from"deepmerge";import{DropdownOrLabel,Dropdown,MediaTypesSwitch}from"../../redoc-lib";import CodemirrorInput from"./CodemirrorInput";import{RequestMimeLabel}from"./RequestMimeLabel";import{ExampleSwitch,useExampleKey}from"../Samples";import{arrayMerge}from"../../services/utils";import{FileUploadInput}from"./FileUploadInput";import{FILE_UPLOAD_SCHEMA_TYPES}from"../common/FileUpload/helper";export var RequestBody=observer((function(e){var r,t,o=e.properties,a=void 0===o?{}:o,i=__rest(e,["properties"]),n=function(e){var r,t=i.body.content;if(!t||!t.hasSample)return"";var o=null===(r=t.active)||void 0===r?void 0:r.examples;if(!(null==o?void 0:o[e]))return"";var n=merge(null==o?void 0:o[e].value,a,{arrayMerge:arrayMerge});return JSON.stringify(n,null,2)},l=null===(t=null===(r=i.body.content)||void 0===r?void 0:r.operation)||void 0===t?void 0:t.activeExampleName,m=function(e){var r,t;null===(t=null===(r=i.body.content)||void 0===r?void 0:r.operation)||void 0===t||t.activateExampleName(e),i.console.formApi.setValue("body",n(e))},d=function(e){if(!e)return"";if("application/x-www-form-urlencoded"===e.mime)return e.value;var r=merge(e.value,a,{arrayMerge:arrayMerge});return JSON.stringify(r,null,2)},p=function(e,r){return __awaiter(void 0,void 0,void 0,(function(){var t;return __generator(this,(function(o){return t=i.console.formApi,(0,t.setValue)("body."+e,r),[2]}))}))};useEffect((function(){l&&i.console.formApi.setValue("body",n(l))}),[l]);var u=i.validate,c=i.body;return React.createElement(React.Fragment,null,React.createElement(MediaTypesSwitch,{content:c.content,renderDropdown:function(e){return React.createElement(DropdownOrLabel,__assign({},e,{variant:"dark",fullWidth:!0,Label:RequestMimeLabel,Dropdown:Dropdown}))}},(function(e){var r,t=e.examples||{},o=Object.keys(t);i.resolvedBody&&(r=(i.resolvedBody.content[e.name]||{}).schema);var a=useExampleKey(e.operation,t).exampleKey,n=t[a];return React.createElement(React.Fragment,null,o.length&&1!==o.length&&React.createElement(ExampleSwitch,{examples:t,onChange:m,exampleKey:a})||null,FILE_UPLOAD_SCHEMA_TYPES.includes(r.type)&&React.createElement(FileUploadInput,{schema:r,id:i.id,mediaType:e,validate:u,initialSample:d(n),onChange:p.bind(_this)})||React.createElement(CodemirrorInput,{id:"body"+i.id,field:"body",initialValue:d(n),schema:r,mode:e.name,validate:u}))})))}));
1
+ var _this=this;import{__assign,__awaiter,__generator,__rest}from"tslib";import*as React from"react";import{useEffect}from"react";import{observer}from"mobx-react";import merge from"deepmerge";import{DropdownOrLabel,Dropdown,MediaTypesSwitch}from"../../redoc-lib";import CodemirrorInput from"./CodemirrorInput";import{RequestMimeLabel}from"./RequestMimeLabel";import{ExampleSwitch,useExampleKey}from"../Samples";import{arrayMerge}from"../../services/utils";import{RequestBodyForm}from"./RequestBodyForm";import{isRootFileUpload}from"../common/FileUpload/helper";import{MediaTypes}from"../../models";export var RequestBody=observer((function(e){var r,o,t=e.properties,a=void 0===t?{}:t,i=__rest(e,["properties"]),n=function(e){var r,o=i.body.content;if(!o||!o.hasSample)return"";var t=null===(r=o.active)||void 0===r?void 0:r.examples;if(!(null==t?void 0:t[e]))return"";var n=merge(null==t?void 0:t[e].value,a,{arrayMerge:arrayMerge});return JSON.stringify(n,null,2)},l=null===(o=null===(r=i.body.content)||void 0===r?void 0:r.operation)||void 0===o?void 0:o.activeExampleName,m=function(e){var r,o;null===(o=null===(r=i.body.content)||void 0===r?void 0:r.operation)||void 0===o||o.activateExampleName(e),i.console.formApi.setValue("body",n(e))},d=function(e){if(!e)return"";if("application/x-www-form-urlencoded"===e.mime)return e.value;var r=merge(e.value,a,{arrayMerge:arrayMerge});return JSON.stringify(r,null,2)},p=function(e,r){return __awaiter(void 0,void 0,void 0,(function(){var o;return __generator(this,(function(t){return o=i.console.formApi,(0,o.setValue)("body."+e,r),[2]}))}))};useEffect((function(){l&&i.console.formApi.setValue("body",n(l))}),[l]);var u=i.validate,c=i.body;return React.createElement(React.Fragment,null,React.createElement(MediaTypesSwitch,{content:c.content,renderDropdown:function(e){return React.createElement(DropdownOrLabel,__assign({},e,{variant:"dark",fullWidth:!0,Label:RequestMimeLabel,Dropdown:Dropdown}))}},(function(e){var r,o=e.examples||{},t=Object.keys(o);i.resolvedBody&&(r=(i.resolvedBody.content[e.name]||{}).schema);var a=isRootFileUpload(r,e.name)||e.name===MediaTypes.MULTIPART||e.name===MediaTypes.URL_ENCODED,n=useExampleKey(e.operation,o).exampleKey,l=o[n];return React.createElement(React.Fragment,null,t.length&&1!==t.length&&React.createElement(ExampleSwitch,{examples:o,onChange:m,exampleKey:n})||null,a?React.createElement(RequestBodyForm,{schema:r,mediaType:e,onChange:p.bind(_this)}):React.createElement(CodemirrorInput,{id:"body"+i.id,field:"body",initialValue:d(l),schema:r,mode:e.name,validate:u}))})))}));
2
2
  //# sourceMappingURL=RequestBody.js.map
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { MediaTypeModel, OpenAPISchema } from '../../redoc-lib';
3
+ export declare function RequestBodyForm(props: {
4
+ schema: OpenAPISchema;
5
+ mediaType: MediaTypeModel;
6
+ onChange: React.ChangeEventHandler<HTMLInputElement>;
7
+ }): JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ import{__makeTemplateObject}from"tslib";import*as React from"react";import{isMultipartFileUploadProperty,isRootFileUpload,mimeTypeToAccept}from"../common/FileUpload/helper";import{FormControl,FormLabel}from"../common/form";import{styled}from"../../redoc-lib";import{FileUpload}from"../common/FileUpload";import{FormTextField,invertedInputStyles}from"../common/TextField";import{DefinitionTypes,MediaTypes}from"../../models";export function RequestBodyForm(e){var t=e.schema,o=void 0===t?{}:t,l=e.mediaType,n=e.onChange,a=o.properties||{};return isRootFileUpload(o,l.name)?React.createElement(FileFormControlWrapper,null,React.createElement(FormControl,null,React.createElement(StyledFileUpload,{fullWidth:!0,id:"body."+l.name,name:"body."+l.name,accept:mimeTypeToAccept(l.name),schema:o,contentName:l.name,onChange:n}))):o.type===DefinitionTypes.OBJECT&&a?React.createElement(FileFormControlWrapper,null,Object.entries(a).map((function(e){var t=e[0],a=e[1],m=l.name===MediaTypes.MULTIPART&&isMultipartFileUploadProperty(a),r=a.contentMediaType||"",i=m?React.createElement(StyledFileUpload,{fullWidth:!0,id:"body."+t,name:"body."+t,accept:mimeTypeToAccept(r),multiple:"array"===a.type,schema:o,contentName:t,onChange:n}):React.createElement(FormTextField,{fullWidth:!0,id:"body."+t,field:"body."+t,placeholder:a.description||t});return React.createElement(FormControl,{key:t},React.createElement(FormLabel,null,t,":"),i)}))):(console.warn('Invalid schema for request body and mime type: "'+l.name+'"',o),null)}var templateObject_1,templateObject_2,FileFormControlWrapper=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n > div {\n margin-top: 10px;\n }\n"],["\n > div {\n margin-top: 10px;\n }\n"]))),StyledFileUpload=styled(FileUpload)(templateObject_2||(templateObject_2=__makeTemplateObject(["\n ","\n ",";\n ","\n"],["\n ","\n ",";\n ","\n"])),invertedInputStyles,(function(e){return"password"===e.inputType?"padding-right: 40px;":""}),(function(e){return e.fullWidth?"width: 100%;":""}));
2
+ //# sourceMappingURL=RequestBodyForm.js.map
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- export interface SwaggerResponse {
3
- body?: object;
2
+ export interface OpenApiResponseData {
3
+ body?: GenericObject;
4
4
  data: string;
5
5
  ok: boolean;
6
6
  status: number;
@@ -9,9 +9,9 @@ export interface SwaggerResponse {
9
9
  parseError?: Error;
10
10
  }
11
11
  export interface ResponsePanelProps {
12
- response?: SwaggerResponse;
12
+ response?: OpenApiResponseData;
13
13
  error?: Error & {
14
- response?: SwaggerResponse;
14
+ response?: OpenApiResponseData;
15
15
  };
16
16
  time?: number;
17
17
  }
@@ -1,2 +1,2 @@
1
- import{__extends,__makeTemplateObject}from"tslib";import*as React from"react";import{JsonViewer,styled,SourceCodeWithCopy,langFromMime}from"../../redoc-lib";import{StyledPre}from"../../redoc-lib/src/common-elements";var templateObject_1,templateObject_2,templateObject_3,templateObject_4,templateObject_5,templateObject_6,templateObject_7,templateObject_8,ResponseBadges=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n margin-bottom: 10px;\n"],["\n margin-bottom: 10px;\n"]))),ResponseBadgeBase=styled.div(templateObject_2||(templateObject_2=__makeTemplateObject(["\n display: inline-block;\n margin-right: 20px;\n padding: 2px 0;\n text-align: center;\n color: ",";\n"],["\n display: inline-block;\n margin-right: 20px;\n padding: 2px 0;\n text-align: center;\n color: ",";\n"])),(function(e){return e.theme.colors.text.light})),ResponseBadge=styled(ResponseBadgeBase)(templateObject_3||(templateObject_3=__makeTemplateObject(["\n color: ",";\n"],["\n color: ",";\n"])),(function(e){var t=e.theme,n=e.code;return n>=200&&n<300?t.colors.responses.success.tabTextColor:n>=300&&n<400?t.colors.responses.redirect.tabTextColor:n>400?t.colors.responses.error.tabTextColor:t.colors.responses.info.tabTextColor})),HeaderName=styled.strong(templateObject_4||(templateObject_4=__makeTemplateObject(["\n text-transform: capitalize;\n display: inline-block;\n padding-right: 5px;\n"],["\n text-transform: capitalize;\n display: inline-block;\n padding-right: 5px;\n"]))),ErrorHeader=styled.header(templateObject_5||(templateObject_5=__makeTemplateObject(["\n font-weight: bold;\n margin-bottom: 10px;\n"],["\n font-weight: bold;\n margin-bottom: 10px;\n"]))),ErrorDetails=styled.code(templateObject_6||(templateObject_6=__makeTemplateObject(["\n border-left: 3px solid #ff4040;\n padding-left: 5px;\n"],["\n border-left: 3px solid #ff4040;\n padding-left: 5px;\n"]))),ResponseHeader=styled.div(templateObject_7||(templateObject_7=__makeTemplateObject(["\n margin-bottom: 10px;\n\n &:not(:first-child) {\n margin-top: 10px;\n }\n"],["\n margin-bottom: 10px;\n\n &:not(:first-child) {\n margin-top: 10px;\n }\n"]))),PanelStyledPre=styled(StyledPre)(templateObject_8||(templateObject_8=__makeTemplateObject(["\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n"],["\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n"]))),ResponsePanel=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e,t=this.props,n=t.error,a=t.response,l=t.time,r=a||n&&n.response,o=r&&r.data&&r.data.length||0;if(e=o>1e6?(o/1e6).toFixed(2)+" MB":o>1e3?(o/1e3).toFixed(2)+" KB":o+" B",n&&!n.response||!r)return React.createElement(React.Fragment,null,React.createElement(ErrorHeader,null," Could not get any response "),React.createElement(ErrorDetails,null,n&&n.message||"Unknown error"),React.createElement("br",null),React.createElement(ErrorHeader,null," Why this might have happened:"),React.createElement("div",null," - CORS is misconfigured on the server"),React.createElement("div",null," - The server couldn't sent a response"),React.createElement("div",null," - No internet access"),React.createElement("div",null," - Documentation issue - contact API owner"),React.createElement("div",null," - Misconfigured security definition"));if(!r)return"Something went wrong";var c=Object.keys(r.headers);return React.createElement(React.Fragment,null,React.createElement(ResponseBadges,null,React.createElement(ResponseBadge,{code:r.status},React.createElement("span",null," Status: "),r.status," ",r.statusText),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Time: "),l,"ms"),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Size: "),e)),React.createElement("div",null,React.createElement(ResponseHeader,null," Headers: "),React.createElement(PanelStyledPre,null,c.map((function(e){return React.createElement("div",{key:e},React.createElement(HeaderName,null,e,":"),React.createElement("code",null," ",r.headers[e]))}))),React.createElement(ResponseHeader,null," Body: "),r.body&&React.createElement(JsonViewer,{data:r.body})||null,!r.body&&null!=r.data&&(r.data?React.createElement(SourceCodeWithCopy,{lang:langFromMime(r.headers["Content-Type"]||"text/plain"),source:r.data}):React.createElement(PanelStyledPre,null,React.createElement("i",null,"(no content)")))||null))}}),t}(React.PureComponent);export{ResponsePanel};
1
+ import{__extends,__makeTemplateObject}from"tslib";import*as React from"react";import{JsonViewer,styled,SourceCodeWithCopy,langFromMime}from"../../redoc-lib";import{StyledPre}from"../../redoc-lib/src/common-elements";var templateObject_1,templateObject_2,templateObject_3,templateObject_4,templateObject_5,templateObject_6,templateObject_7,templateObject_8,ResponseBadges=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n margin-bottom: 10px;\n"],["\n margin-bottom: 10px;\n"]))),ResponseBadgeBase=styled.div(templateObject_2||(templateObject_2=__makeTemplateObject(["\n display: inline-block;\n margin-right: 20px;\n padding: 2px 0;\n text-align: center;\n color: ",";\n"],["\n display: inline-block;\n margin-right: 20px;\n padding: 2px 0;\n text-align: center;\n color: ",";\n"])),(function(e){return e.theme.colors.text.light})),ResponseBadge=styled(ResponseBadgeBase)(templateObject_3||(templateObject_3=__makeTemplateObject(["\n color: ",";\n"],["\n color: ",";\n"])),(function(e){var t=e.theme,n=e.code;return n>=200&&n<300?t.colors.responses.success.tabTextColor:n>=300&&n<400?t.colors.responses.redirect.tabTextColor:n>400?t.colors.responses.error.tabTextColor:t.colors.responses.info.tabTextColor})),HeaderName=styled.strong(templateObject_4||(templateObject_4=__makeTemplateObject(["\n text-transform: capitalize;\n display: inline-block;\n padding-right: 5px;\n"],["\n text-transform: capitalize;\n display: inline-block;\n padding-right: 5px;\n"]))),ErrorHeader=styled.header(templateObject_5||(templateObject_5=__makeTemplateObject(["\n font-weight: bold;\n margin-bottom: 10px;\n"],["\n font-weight: bold;\n margin-bottom: 10px;\n"]))),ErrorDetails=styled.code(templateObject_6||(templateObject_6=__makeTemplateObject(["\n border-left: 3px solid #ff4040;\n padding-left: 5px;\n"],["\n border-left: 3px solid #ff4040;\n padding-left: 5px;\n"]))),ResponseHeader=styled.div(templateObject_7||(templateObject_7=__makeTemplateObject(["\n margin-bottom: 10px;\n\n &:not(:first-child) {\n margin-top: 10px;\n }\n"],["\n margin-bottom: 10px;\n\n &:not(:first-child) {\n margin-top: 10px;\n }\n"]))),PanelStyledPre=styled(StyledPre)(templateObject_8||(templateObject_8=__makeTemplateObject(["\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n"],["\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n"]))),ResponsePanel=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends(t,e),Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e,t=this.props,n=t.error,a=t.response,l=t.time,r=a||n&&n.response,o=r&&r.data&&r.data.length||0;if(e=o>1e6?(o/1e6).toFixed(2)+" MB":o>1e3?(o/1e3).toFixed(2)+" KB":o+" B",n&&!n.response||!r)return React.createElement(React.Fragment,null,React.createElement(ErrorHeader,null," Could not get any response "),React.createElement(ErrorDetails,null,n&&n.message||"Unknown error"),React.createElement("br",null),React.createElement(ErrorHeader,null," Why this might have happened:"),React.createElement("div",null," - CORS is misconfigured on the server"),React.createElement("div",null," - ","The server couldn't sent a response"),React.createElement("div",null," - No internet access"),React.createElement("div",null," - Documentation issue - contact API owner"),React.createElement("div",null," - Misconfigured security definition"));if(!r)return"Something went wrong";var c=Object.keys(r.headers);return React.createElement(React.Fragment,null,React.createElement(ResponseBadges,null,React.createElement(ResponseBadge,{code:r.status},React.createElement("span",null," Status: "),r.status," ",r.statusText),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Time: "),l,"ms"),React.createElement(ResponseBadgeBase,null,React.createElement("span",null," Size: "),e)),React.createElement("div",null,React.createElement(ResponseHeader,null," Headers: "),React.createElement(PanelStyledPre,null,c.map((function(e){return React.createElement("div",{key:e},React.createElement(HeaderName,null,e,":"),React.createElement("code",null," ",r.headers[e]))}))),React.createElement(ResponseHeader,null," Body: "),r.body&&React.createElement(JsonViewer,{data:r.body})||null,!r.body&&null!=r.data&&(r.data?React.createElement(SourceCodeWithCopy,{lang:langFromMime(r.headers["Content-Type"]||"text/plain"),source:r.data}):React.createElement(PanelStyledPre,null,React.createElement("i",null,"(no content)")))||null))}}),t}(React.PureComponent);export{ResponsePanel};
2
2
  //# sourceMappingURL=ResponsePanel.js.map
@@ -22,4 +22,4 @@ export declare class ServerChooser extends React.Component<ServerDropdownProps,
22
22
  componentDidMount(): void;
23
23
  render(): JSX.Element;
24
24
  }
25
- export declare function expandVariables(url: string, variables?: object): string;
25
+ export declare function expandVariables(url: string, variables?: GenericObject): string;
@@ -1,2 +1,2 @@
1
- import{__assign,__decorate,__extends,__makeTemplateObject}from"tslib";import*as React from"react";import{Dropdown,styled}from"../../redoc-lib";import{observer}from"mobx-react";import{fromStorage,toStorage}from"../../utils";import ServerVariable from"./ServerVariable";import{FormControl,FormLabel}from"../common/form";var ServerDropdownWrap=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n margin-top: 20px;\n"],["\n margin-top: 20px;\n"]))),ServerChooser=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(r,"state",{enumerable:!0,configurable:!0,writable:!0,value:{activeIdx:0,variables:{}}}),Object.defineProperty(r,"handleChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){var a=r.props.operation.servers.find((function(r){return r.url===e.serverUrl})),t=a&&getVariables(a)||{};r.props.onChange({url:e.serverUrl,variables:t}),toStorage("serverUrl",e.serverUrl),r.setState({variables:t})}}),Object.defineProperty(r,"handleVariableChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e,a){var t,n,o=__assign(__assign({},r.state.variables),((t={})[e]=a,t));r.setState({variables:o});var i=fromStorage("variables"),s=i&&JSON.parse(i)||{};toStorage("variables",JSON.stringify(__assign(__assign({},s),((n={})[e]=a,n))));var l=r.props.operation.servers[r.state.activeIdx];r.props.onChange(__assign(__assign({},l),{variables:o}))}}),r}return __extends(r,e),Object.defineProperty(r,"getDerivedStateFromProps",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var r=e.operation,a=fromStorage("serverUrl"),t=r.servers.findIndex((function(e){return e.url===a}));return{activeIdx:t<0?0:t}}}),Object.defineProperty(r.prototype,"componentDidMount",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.props.operation.servers[this.state.activeIdx],r=getVariables(e);this.props.onChange(__assign(__assign({},e),{variables:r})),this.setState({variables:r})}}),Object.defineProperty(r.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this,r=this.state.activeIdx,a=this.props.operation.servers.map((function(r){return{serverUrl:r.url,value:"\n "+expandDefaultServerVariables(expandVariables(r.url,e.state.variables),r.variables)+"\n - "+(r.description||"Default")+"\n "}})),t=Object.keys(this.state.variables);return React.createElement(ServerDropdownWrap,null,React.createElement(FormLabel,{htmlFor:"server"},"Target server: "),React.createElement(FormControl,null,React.createElement(Dropdown,{openUp:!0,variant:"dark",value:a[r].value,options:a,onChange:this.handleChange})),t.length?t.map((function(r){var a=e.props.operation.servers[e.state.activeIdx].variables[r];return React.createElement(ServerVariable,{key:r,name:r,value:e.state.variables[r],defaultValue:a.default,onChange:function(a){return e.handleVariableChange(r,a)},variableEnum:a.enum,description:a.description})})):null)}}),r=__decorate([observer],r)}(React.Component);export{ServerChooser};var templateObject_1,pathTemplateRegExp=/(?:{)(\w+)(?:})/g;export function expandVariables(e,r){return void 0===r&&(r={}),e.replace(pathTemplateRegExp,(function(e,a){return r[a]||e}))}function expandDefaultServerVariables(e,r){return void 0===r&&(r={}),e.replace(pathTemplateRegExp,(function(e,a){return r[a]&&r[a].default||e}))}function getVariables(e){if(!e.variables)return{};var r=fromStorage("variables"),a=r&&JSON.parse(r)||{},t={};return Object.keys(e.variables).forEach((function(r){t[r]=e.variables[r].default||"",a.hasOwnProperty(r)&&(t[r]=a[r])})),__assign({},t)}
1
+ import{__assign,__decorate,__extends,__makeTemplateObject}from"tslib";import*as React from"react";import{Dropdown,styled}from"../../redoc-lib";import{observer}from"mobx-react";import{fromStorage,toStorage}from"../../utils";import ServerVariable from"./ServerVariable";import{FormControl,FormLabel}from"../common/form";var ServerDropdownWrap=styled.div(templateObject_1||(templateObject_1=__makeTemplateObject(["\n margin-top: 20px;\n"],["\n margin-top: 20px;\n"]))),ServerChooser=function(e){function r(){var r=null!==e&&e.apply(this,arguments)||this;return Object.defineProperty(r,"state",{enumerable:!0,configurable:!0,writable:!0,value:{activeIdx:0,variables:{}}}),Object.defineProperty(r,"handleChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e){var a=r.props.operation.servers.find((function(r){return r.url===e.serverUrl})),t=a&&getVariables(a)||{};r.props.onChange({url:e.serverUrl,variables:t}),toStorage("serverUrl",e.serverUrl),r.setState({variables:t})}}),Object.defineProperty(r,"handleVariableChange",{enumerable:!0,configurable:!0,writable:!0,value:function(e,a){var t,n,o=__assign(__assign({},r.state.variables),((t={})[e]=a,t));r.setState({variables:o});var i=fromStorage("variables"),l=i&&JSON.parse(i)||{};toStorage("variables",JSON.stringify(__assign(__assign({},l),((n={})[e]=a,n))));var s=r.props.operation.servers[r.state.activeIdx];r.props.onChange(__assign(__assign({},s),{variables:o}))}}),r}return __extends(r,e),Object.defineProperty(r,"getDerivedStateFromProps",{enumerable:!1,configurable:!0,writable:!0,value:function(e){var r=e.operation,a=fromStorage("serverUrl"),t=r.servers.findIndex((function(e){return e.url===a}));return{activeIdx:t<0?0:t}}}),Object.defineProperty(r.prototype,"componentDidMount",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this.props.operation.servers[this.state.activeIdx],r=getVariables(e);this.props.onChange(__assign(__assign({},e),{variables:r})),this.setState({variables:r})}}),Object.defineProperty(r.prototype,"render",{enumerable:!1,configurable:!0,writable:!0,value:function(){var e=this,r=this.state.activeIdx,a=this.props.operation.servers.map((function(r){return{serverUrl:r.url,value:"\n "+expandDefaultServerVariables(expandVariables(r.url,e.state.variables),r.variables)+"\n - "+(r.description||"Default")+"\n "}})),t=Object.keys(this.state.variables);return React.createElement(ServerDropdownWrap,null,React.createElement(FormLabel,{htmlFor:"server"},"Target server: "),React.createElement(FormControl,null,React.createElement(Dropdown,{openUp:!0,variant:"dark",value:a[r].value,options:a,onChange:this.handleChange})),t.length?t.map((function(r){var a=e.props.operation.servers[e.state.activeIdx].variables[r];return React.createElement(ServerVariable,{key:r,name:r,value:e.state.variables[r],defaultValue:a.default,onChange:function(a){return e.handleVariableChange(r,a)},variableEnum:a.enum,description:a.description})})):null)}}),r=__decorate([observer],r)}(React.Component);export{ServerChooser};var templateObject_1,pathTemplateRegExp=/(?:{)(\w+)(?:})/g;export function expandVariables(e,r){return void 0===r&&(r={}),e.replace(pathTemplateRegExp,(function(e,a){return r[a]||e}))}function expandDefaultServerVariables(e,r){return void 0===r&&(r={}),e.replace(pathTemplateRegExp,(function(e,a){return r[a]&&r[a].default||e}))}function getVariables(e){if(!e.variables)return{};var r=fromStorage("variables"),a=r&&JSON.parse(r)||{},t={};return Object.keys(e.variables).forEach((function(r){t[r]=e.variables[r].default||"",Object.prototype.hasOwnProperty.call(a,r)&&(t[r]=a[r])})),__assign({},t)}
2
2
  //# sourceMappingURL=ServerDropdown.js.map
@@ -9,3 +9,4 @@ export { ToggleRightPanelButton, ControlsWrap, ChangeViewButton, BackgroundStub,
9
9
  export { TextField } from './common/TextField';
10
10
  export { Checkbox } from './common/Checkbox';
11
11
  export { FormControl, FormLabel, FormError } from './common/form';
12
+ export { OpenApiResponseData } from './console/ResponsePanel';
@@ -2,5 +2,5 @@ export * from './components';
2
2
  export * from './services';
3
3
  export * from './redoc-lib';
4
4
  export * from './models';
5
- export { setSecurityDetails, setSecurityDetailsVariants, setParameterValue } from './utils';
5
+ export { setSecurityDetails, setSecurityDetailsVariants, setParameterValue, SecurityDetails, } from './utils';
6
6
  export type { OAuth2 } from './services/OAuth2';
@@ -0,0 +1,16 @@
1
+ export declare enum DefinitionTypes {
2
+ STRING = "string",
3
+ ARRAY = "array",
4
+ OBJECT = "object"
5
+ }
6
+ export declare enum FileUploadFormats {
7
+ BYTE = "byte",
8
+ BASE64 = "base64",
9
+ BINARY = "binary"
10
+ }
11
+ export declare enum MediaTypes {
12
+ OCTET_STREAM = "application/octet-stream",
13
+ MULTIPART = "multipart/form-data",
14
+ URL_ENCODED = "application/x-www-form-urlencoded"
15
+ }
16
+ export declare type UploadFileType = File | File[] | string | string[];
@@ -0,0 +1,2 @@
1
+ export var DefinitionTypes;!function(e){e.STRING="string",e.ARRAY="array",e.OBJECT="object"}(DefinitionTypes||(DefinitionTypes={}));export var FileUploadFormats;!function(e){e.BYTE="byte",e.BASE64="base64",e.BINARY="binary"}(FileUploadFormats||(FileUploadFormats={}));export var MediaTypes;!function(e){e.OCTET_STREAM="application/octet-stream",e.MULTIPART="multipart/form-data",e.URL_ENCODED="application/x-www-form-urlencoded"}(MediaTypes||(MediaTypes={}));
2
+ //# sourceMappingURL=file-upload.js.map
@@ -1 +1,2 @@
1
1
  export * from './code-sample-options';
2
+ export * from './file-upload';
@@ -1,2 +1,2 @@
1
- export*from"./code-sample-options";
1
+ export*from"./code-sample-options";export*from"./file-upload";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,9 +1,10 @@
1
+ /// <reference types="react" />
1
2
  import { FieldModel } from '../services';
2
3
  interface LinkToFieldProps {
3
4
  field: FieldModel;
4
5
  className?: string;
5
6
  children?: any;
6
7
  }
7
- export declare const LinkToField: (props: LinkToFieldProps) => any;
8
- export declare const ShareLinkToField: import("styled-components").StyledComponent<(props: LinkToFieldProps) => any, import("../theme").ResolvedThemeInterface, {}, never>;
8
+ export declare const LinkToField: (props: LinkToFieldProps) => JSX.Element;
9
+ export declare const ShareLinkToField: import("styled-components").StyledComponent<(props: LinkToFieldProps) => JSX.Element, import("../theme").ResolvedThemeInterface, {}, never>;
9
10
  export {};
@@ -1,2 +1,2 @@
1
- import{__assign,__makeTemplateObject}from"tslib";import*as React from"react";import{StoreContext}from"../components/StoreBuilder";import styled from"../styled-components";import{SECTION_ATTR}from"../services/constants";import{isModifiedEvent,linkifyMixin}from"./linkify";import{constructFieldDeepFragment}from"../../../services/history/helpers";export var LinkToField=function(e){var i,n,t,o=React.useContext(StoreContext),r=React.useState(!1),l=r[0],a=r[1],s=(null==o?void 0:o.menu.history.linkForId(null===(n=e.field.deps.operation)||void 0===n?void 0:n.id))||"",p=constructFieldDeepFragment(e.field),c=o&&p?o.menu.history.generateDeepLink(p,s):null,d=o?((i={})[SECTION_ATTR]=(null===(t=e.field.deps.operation)||void 0===t?void 0:t.id)+o.options.deepLinkPrefix+p,i.id=c&&c.split("#")[1]||void 0,i):null;return React.useEffect((function(){if(o&&d)return a(o.menu.history.currentId===d[SECTION_ATTR]),o.menu.history.subscribe((function(e){a(e===d[SECTION_ATTR])}))}),[null==o?void 0:o.menu.history,null==d?void 0:d[SECTION_ATTR]]),p&&o&&c?React.createElement("a",__assign({className:e.className+(l?" active":""),href:c,onClick:function(e){return function(e,i,n){i.defaultPrevented||0!==i.button||isModifiedEvent(i)||(i.preventDefault(),e.replaceForField(n))}(o.menu.history,e,c),e.stopPropagation(),e.preventDefault(),o.options.onDeepLinkClick&&o.options.onDeepLinkClick(c),!1}},d),e.children):e.children||null};export var ShareLinkToField=styled(LinkToField)(templateObject_1||(templateObject_1=__makeTemplateObject(["\n ","\n\n & {\n position: relative;\n left: 0;\n\n margin-left: calc(-12px - 4px);\n padding-top: 10px;\n margin-top: -10px;\n\n .field-name:hover > &::before,\n &:hover::before {\n visibility: visible;\n }\n }\n\n &.active::before {\n visibility: visible;\n }\n"],["\n ","\n\n & {\n position: relative;\n left: 0;\n\n margin-left: calc(-12px - 4px);\n padding-top: 10px;\n margin-top: -10px;\n\n .field-name:hover > &::before,\n &:hover::before {\n visibility: visible;\n }\n }\n\n &.active::before {\n visibility: visible;\n }\n"])),linkifyMixin("&","12px"));var templateObject_1;
1
+ import{__assign,__makeTemplateObject}from"tslib";import*as React from"react";import{StoreContext}from"../components";import styled from"../styled-components";import{SECTION_ATTR}from"../services/constants";import{isModifiedEvent,linkifyMixin}from"./linkify";import{constructFieldDeepFragment}from"../../../services/history/helpers";export var LinkToField=function(e){var n,i,t,o=React.useContext(StoreContext),r=React.useState(!1),l=r[0],a=r[1],s=(null==o?void 0:o.menu.history.linkForId(null===(i=e.field.deps.operation)||void 0===i?void 0:i.id))||"",p=constructFieldDeepFragment(e.field),c=o&&p?o.menu.history.generateDeepLink(p,s):null,d=o?((n={})[SECTION_ATTR]=(null===(t=e.field.deps.operation)||void 0===t?void 0:t.id)+o.options.deepLinkPrefix+p,n.id=c&&c.split("#")[1]||void 0,n):null;return React.useEffect((function(){if(o&&d)return a(o.menu.history.currentId===d[SECTION_ATTR]),o.menu.history.subscribe((function(e){a(e===d[SECTION_ATTR])}))}),[null==o?void 0:o.menu.history,null==d?void 0:d[SECTION_ATTR]]),p&&o&&c?React.createElement("a",__assign({className:e.className+(l?" active":""),href:c,onClick:function(e){return function(e,n,i){n.defaultPrevented||0!==n.button||isModifiedEvent(n)||(n.preventDefault(),e.replaceForField(i))}(o.menu.history,e,c),e.stopPropagation(),e.preventDefault(),o.options.onDeepLinkClick&&o.options.onDeepLinkClick(c),!1}},d),e.children):e.children||null};export var ShareLinkToField=styled(LinkToField)(templateObject_1||(templateObject_1=__makeTemplateObject(["\n ","\n\n & {\n position: relative;\n left: 0;\n\n margin-left: calc(-12px - 4px);\n padding-top: 10px;\n margin-top: -10px;\n\n .field-name:hover > &::before,\n &:hover::before {\n visibility: visible;\n }\n }\n\n &.active::before {\n visibility: visible;\n }\n"],["\n ","\n\n & {\n position: relative;\n left: 0;\n\n margin-left: calc(-12px - 4px);\n padding-top: 10px;\n margin-top: -10px;\n\n .field-name:hover > &::before,\n &:hover::before {\n visibility: visible;\n }\n }\n\n &.active::before {\n visibility: visible;\n }\n"])),linkifyMixin("&","12px"));var templateObject_1;
2
2
  //# sourceMappingURL=LinkToField.js.map