@api-client/ui 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. package/demo/amf/api-annotation.html +1 -0
  2. package/demo/amf/api-channel.html +1 -0
  3. package/demo/amf/api-console.html +1 -0
  4. package/demo/amf/api-documentation-document.html +1 -0
  5. package/demo/amf/api-documentation.html +1 -0
  6. package/demo/amf/api-editor.html +1 -0
  7. package/demo/amf/api-navigation.html +1 -0
  8. package/demo/amf/api-operation.html +1 -0
  9. package/demo/amf/api-payload.html +1 -0
  10. package/demo/amf/api-request.html +1 -0
  11. package/demo/amf/api-resource.html +1 -0
  12. package/demo/amf/api-schema-documentation.html +1 -0
  13. package/demo/amf/api-security-documentation.html +1 -0
  14. package/demo/amf/api-server-picker.html +1 -0
  15. package/demo/amf/api-summary.html +1 -0
  16. package/demo/amf/bare-components.html +2 -0
  17. package/demo/amf/index.html +2 -0
  18. package/demo/amf/oauth-authorize.html +2 -0
  19. package/demo/amf/request-editor.html +1 -0
  20. package/demo/elements/authorization/api-key.html +1 -0
  21. package/demo/elements/authorization/basic.html +1 -0
  22. package/demo/elements/authorization/bearer.html +1 -0
  23. package/demo/elements/authorization/cc.html +1 -0
  24. package/demo/elements/authorization/index.html +2 -0
  25. package/demo/elements/authorization/ntlm.html +1 -0
  26. package/demo/elements/authorization/oauth-error.html +2 -0
  27. package/demo/elements/authorization/oauth-popup.html +2 -0
  28. package/demo/elements/authorization/oauth2.html +1 -0
  29. package/demo/elements/authorization/oidc.html +1 -0
  30. package/demo/elements/authorization/redirect.html +3 -1
  31. package/demo/elements/context-menu/basic.html +2 -1
  32. package/demo/elements/context-menu/custom-data.html +2 -1
  33. package/demo/elements/context-menu/enabled-state.html +2 -1
  34. package/demo/elements/context-menu/icons.html +2 -1
  35. package/demo/elements/context-menu/index.html +2 -0
  36. package/demo/elements/context-menu/nested.html +2 -1
  37. package/demo/elements/context-menu/no-execute.html +2 -1
  38. package/demo/elements/context-menu/radio-menu.html +2 -1
  39. package/demo/elements/context-menu/separators.html +2 -1
  40. package/demo/elements/environment/environment-editor.html +1 -0
  41. package/demo/elements/environment/index.html +1 -0
  42. package/demo/elements/environment/server-editor.html +1 -1
  43. package/demo/elements/environment/variables-editor.html +1 -1
  44. package/demo/elements/har/har-viewer.html +1 -0
  45. package/demo/elements/highlight/index.html +1 -0
  46. package/demo/elements/highlight/marked-highlight.html +1 -0
  47. package/demo/elements/highlight/prism-highlight.html +1 -0
  48. package/demo/elements/http/body-editor.html +1 -0
  49. package/demo/elements/http/headers.html +1 -0
  50. package/demo/elements/http/http-assertions.html +1 -0
  51. package/demo/elements/http/request-editor.html +1 -0
  52. package/demo/elements/http/request-log.html +1 -0
  53. package/demo/elements/http/url-editing.html +1 -0
  54. package/demo/elements/icons/index.html +1 -0
  55. package/demo/elements/project/project-run-report.html +1 -0
  56. package/demo/elements/project/request-editor.html +1 -0
  57. package/demo/elements/ui/buttons/api-button.html +2 -1
  58. package/demo/elements/ui/buttons/api-icon-button.html +2 -1
  59. package/demo/elements/ui/buttons/segmented-buttons.html +2 -1
  60. package/demo/elements/ui/chip/api-chip.html +2 -1
  61. package/demo/elements/ui/collapse/ui-collapse.html +2 -1
  62. package/demo/elements/ui/dialog/ui-dialog.html +2 -1
  63. package/demo/elements/ui/inputs/api-checkbox.html +2 -1
  64. package/demo/elements/ui/inputs/api-input.html +2 -1
  65. package/demo/elements/ui/inputs/api-radio.html +2 -1
  66. package/demo/elements/ui/inputs/api-switch.html +2 -1
  67. package/demo/elements/ui/list/dropdown-list.html +2 -1
  68. package/demo/elements/ui/list/list.html +2 -1
  69. package/demo/elements/ui/notification/snack.html +2 -1
  70. package/demo/elements/ui/progress/ui-progress.html +2 -1
  71. package/demo/elements/ui/tabs/tabs.html +2 -1
  72. package/dist/amf/lib/AmfParameters.js +0 -4
  73. package/dist/amf/lib/AmfParameters.js.map +1 -1
  74. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  75. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  76. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  77. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  78. package/dist/amf/store/AmfGraphStore.js +0 -2
  79. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  80. package/dist/amf/store/AmfStore.js +0 -7
  81. package/dist/amf/store/AmfStore.js.map +1 -1
  82. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  83. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  84. package/dist/bindings/base/PlatformBindings.js +6 -10
  85. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  86. package/dist/bindings/base/ProxyBindings.js +9 -6
  87. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  88. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  89. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  90. package/dist/bindings/base/StoreBindings.js +162 -170
  91. package/dist/bindings/base/StoreBindings.js.map +1 -1
  92. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  93. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  94. package/dist/bindings/web/WebFileBindings.js +7 -4
  95. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  96. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  97. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  98. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  99. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  100. package/dist/bindings/web/WebProxyBindings.js +5 -6
  101. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  102. package/dist/bindings/web/WebStoreBindings.js +39 -44
  103. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  104. package/dist/contextual-menu/ContextualMenu.js +10 -19
  105. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  106. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  107. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  108. package/dist/contextual-menu/MenuItem.js +0 -12
  109. package/dist/contextual-menu/MenuItem.js.map +1 -1
  110. package/dist/define/amf/api-annotation-document.js +1 -1
  111. package/dist/define/amf/api-annotation-document.js.map +1 -1
  112. package/dist/define/amf/api-authorization-editor.js +1 -1
  113. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  114. package/dist/define/amf/api-channel-document.js +1 -1
  115. package/dist/define/amf/api-channel-document.js.map +1 -1
  116. package/dist/define/amf/api-documentation-document.js +1 -1
  117. package/dist/define/amf/api-documentation-document.js.map +1 -1
  118. package/dist/define/amf/api-documentation.js +1 -1
  119. package/dist/define/amf/api-documentation.js.map +1 -1
  120. package/dist/define/amf/api-navigation.js +1 -1
  121. package/dist/define/amf/api-navigation.js.map +1 -1
  122. package/dist/define/amf/api-operation-document.js +1 -1
  123. package/dist/define/amf/api-operation-document.js.map +1 -1
  124. package/dist/define/amf/api-parameter-document.js +1 -1
  125. package/dist/define/amf/api-parameter-document.js.map +1 -1
  126. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  127. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  128. package/dist/define/amf/api-payload-document.js +1 -1
  129. package/dist/define/amf/api-payload-document.js.map +1 -1
  130. package/dist/define/amf/api-request-document.js +1 -1
  131. package/dist/define/amf/api-request-document.js.map +1 -1
  132. package/dist/define/amf/api-request-editor.js +1 -1
  133. package/dist/define/amf/api-request-editor.js.map +1 -1
  134. package/dist/define/amf/api-request.js +1 -1
  135. package/dist/define/amf/api-request.js.map +1 -1
  136. package/dist/define/amf/api-resource-document.js +1 -1
  137. package/dist/define/amf/api-resource-document.js.map +1 -1
  138. package/dist/define/amf/api-response-document.js +1 -1
  139. package/dist/define/amf/api-response-document.js.map +1 -1
  140. package/dist/define/amf/api-schema-document.js +1 -1
  141. package/dist/define/amf/api-schema-document.js.map +1 -1
  142. package/dist/define/amf/api-security-document.js +1 -1
  143. package/dist/define/amf/api-security-document.js.map +1 -1
  144. package/dist/define/amf/api-security-requirement-document.js +1 -1
  145. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  146. package/dist/define/amf/api-server-picker.js +1 -1
  147. package/dist/define/amf/api-server-picker.js.map +1 -1
  148. package/dist/define/amf/api-summary.js +1 -1
  149. package/dist/define/amf/api-summary.js.map +1 -1
  150. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  151. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  152. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  153. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  154. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  155. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  156. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  157. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  158. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  159. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  160. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  161. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  162. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  163. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  164. package/dist/define/authorization/apikey-authorization.js +1 -1
  165. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  166. package/dist/define/authorization/basic-authorization.js +1 -1
  167. package/dist/define/authorization/basic-authorization.js.map +1 -1
  168. package/dist/define/authorization/bearer-authorization.js +1 -1
  169. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  170. package/dist/define/authorization/cc-authorization.js +1 -1
  171. package/dist/define/authorization/cc-authorization.js.map +1 -1
  172. package/dist/define/authorization/ntlm-authorization.js +1 -1
  173. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  174. package/dist/define/authorization/oauth2-authorization.js +1 -1
  175. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  176. package/dist/define/authorization/oidc-authorization.js +1 -1
  177. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  178. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  179. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  180. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  181. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  182. package/dist/define/dialog/rename-dialog.js +1 -1
  183. package/dist/define/dialog/rename-dialog.js.map +1 -1
  184. package/dist/define/files/share-file.js +1 -1
  185. package/dist/define/files/share-file.js.map +1 -1
  186. package/dist/define/har/har-viewer.js +1 -1
  187. package/dist/define/har/har-viewer.js.map +1 -1
  188. package/dist/define/highlight/marked-highlight.js +1 -1
  189. package/dist/define/highlight/marked-highlight.js.map +1 -1
  190. package/dist/define/highlight/prism-highlight.js +1 -1
  191. package/dist/define/highlight/prism-highlight.js.map +1 -1
  192. package/dist/define/http/http-assertions.js +1 -1
  193. package/dist/define/http/http-assertions.js.map +1 -1
  194. package/dist/define/http/http-body-editor.js +1 -1
  195. package/dist/define/http/http-body-editor.js.map +1 -1
  196. package/dist/define/http/http-body-multipart-editor.js +1 -1
  197. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  198. package/dist/define/http/http-body-text-editor.js +1 -1
  199. package/dist/define/http/http-body-text-editor.js.map +1 -1
  200. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  201. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  202. package/dist/define/http/http-headers-form.js +1 -1
  203. package/dist/define/http/http-headers-form.js.map +1 -1
  204. package/dist/define/http/http-log-body.js +1 -1
  205. package/dist/define/http/http-log-body.js.map +1 -1
  206. package/dist/define/http/http-log-headers.js +1 -1
  207. package/dist/define/http/http-log-headers.js.map +1 -1
  208. package/dist/define/http/http-log-timings.js +1 -1
  209. package/dist/define/http/http-log-timings.js.map +1 -1
  210. package/dist/define/http/http-request-config.js +1 -1
  211. package/dist/define/http/http-request-config.js.map +1 -1
  212. package/dist/define/http/http-request-editor.js +1 -1
  213. package/dist/define/http/http-request-editor.js.map +1 -1
  214. package/dist/define/http/http-request-log.js +1 -1
  215. package/dist/define/http/http-request-log.js.map +1 -1
  216. package/dist/define/http/http-snippets.js +1 -1
  217. package/dist/define/http/http-snippets.js.map +1 -1
  218. package/dist/define/http/http-url-input.js +1 -1
  219. package/dist/define/http/http-url-input.js.map +1 -1
  220. package/dist/define/http/http-url-params-form.js +1 -1
  221. package/dist/define/http/http-url-params-form.js.map +1 -1
  222. package/dist/define/http-project/http-project-request-history.js +1 -1
  223. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  224. package/dist/define/http-project/http-project-request.js +2 -2
  225. package/dist/define/http-project/http-project-request.js.map +1 -1
  226. package/dist/define/http-project/project-navigation.js +1 -1
  227. package/dist/define/http-project/project-navigation.js.map +1 -1
  228. package/dist/define/http-project/project-run-report.js +1 -1
  229. package/dist/define/http-project/project-run-report.js.map +1 -1
  230. package/dist/define/http-project/project-runner.js +2 -2
  231. package/dist/define/http-project/project-runner.js.map +1 -1
  232. package/dist/define/layout/split-view.js +1 -1
  233. package/dist/define/layout/split-view.js.map +1 -1
  234. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  235. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  236. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  237. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  238. package/dist/define/ui/ui-button.js +1 -1
  239. package/dist/define/ui/ui-button.js.map +1 -1
  240. package/dist/define/ui/ui-chip.js +1 -1
  241. package/dist/define/ui/ui-chip.js.map +1 -1
  242. package/dist/define/ui/ui-collapse.js +1 -1
  243. package/dist/define/ui/ui-collapse.js.map +1 -1
  244. package/dist/define/ui/ui-dialog.js +1 -1
  245. package/dist/define/ui/ui-dialog.js.map +1 -1
  246. package/dist/define/ui/ui-dropdown-list.js +1 -1
  247. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  248. package/dist/define/ui/ui-icon-button.js +1 -1
  249. package/dist/define/ui/ui-icon-button.js.map +1 -1
  250. package/dist/define/ui/ui-icon.js +1 -1
  251. package/dist/define/ui/ui-icon.js.map +1 -1
  252. package/dist/define/ui/ui-list-item.js +1 -1
  253. package/dist/define/ui/ui-list-item.js.map +1 -1
  254. package/dist/define/ui/ui-list.js +1 -1
  255. package/dist/define/ui/ui-list.js.map +1 -1
  256. package/dist/define/ui/ui-listbox.js +1 -1
  257. package/dist/define/ui/ui-listbox.js.map +1 -1
  258. package/dist/define/ui/ui-progress.js +1 -1
  259. package/dist/define/ui/ui-progress.js.map +1 -1
  260. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  261. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  262. package/dist/define/ui/ui-segmented-button.js +1 -1
  263. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  264. package/dist/define/ui/ui-snackbar.js +1 -1
  265. package/dist/define/ui/ui-snackbar.js.map +1 -1
  266. package/dist/define/ui/ui-tab.js +1 -1
  267. package/dist/define/ui/ui-tab.js.map +1 -1
  268. package/dist/define/ui/ui-tabs.js +1 -1
  269. package/dist/define/ui/ui-tabs.js.map +1 -1
  270. package/dist/directives/data-attr.js +0 -1
  271. package/dist/directives/data-attr.js.map +1 -1
  272. package/dist/elements/ApiElement.js +0 -7
  273. package/dist/elements/ApiElement.js.map +1 -1
  274. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  275. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  276. package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
  277. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  278. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  279. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  280. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  281. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  282. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  283. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  284. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  285. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  286. package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
  287. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  288. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  289. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  290. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  291. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  292. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  293. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  294. package/dist/elements/amf/ApiRequest.element.js +0 -78
  295. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  296. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  297. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  298. package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
  299. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  300. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  301. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  302. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  303. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  304. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  305. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  306. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  307. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  308. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  309. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  310. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  311. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  312. package/dist/elements/amf/ApiSummary.element.js +0 -26
  313. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  314. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  315. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  316. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  317. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  318. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  319. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  320. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  321. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  322. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  323. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  324. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  325. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  326. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  327. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  328. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  329. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  330. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  331. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  332. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  333. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  334. package/dist/elements/authorization/ui/Authorization.js +18 -32
  335. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  336. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  337. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  338. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  339. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  340. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  341. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  342. package/dist/elements/code/HttpSnippets.js +9 -8
  343. package/dist/elements/code/HttpSnippets.js.map +1 -1
  344. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  345. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  346. package/dist/elements/dialog/Rename.js +0 -6
  347. package/dist/elements/dialog/Rename.js.map +1 -1
  348. package/dist/elements/environment/EnvironmentEditor.js +8 -11
  349. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  350. package/dist/elements/environment/ServerEditor.js +7 -45
  351. package/dist/elements/environment/ServerEditor.js.map +1 -1
  352. package/dist/elements/environment/VariablesEditor.js +7 -12
  353. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  354. package/dist/elements/files/ShareFile.js +19 -57
  355. package/dist/elements/files/ShareFile.js.map +1 -1
  356. package/dist/elements/har/HarViewer.js +6 -7
  357. package/dist/elements/har/HarViewer.js.map +1 -1
  358. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  359. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  360. package/dist/elements/highlight/PrismHighlight.js +9 -18
  361. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  362. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  363. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  364. package/dist/elements/http/BodyEditor.js +21 -33
  365. package/dist/elements/http/BodyEditor.js.map +1 -1
  366. package/dist/elements/http/BodyMultipartEditor.js +17 -18
  367. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  368. package/dist/elements/http/BodyTextEditor.js +2 -15
  369. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  370. package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
  371. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  372. package/dist/elements/http/HeadersForm.js +16 -17
  373. package/dist/elements/http/HeadersForm.js.map +1 -1
  374. package/dist/elements/http/HttpAssertions.js +8 -6
  375. package/dist/elements/http/HttpAssertions.js.map +1 -1
  376. package/dist/elements/http/LogBody.js +10 -21
  377. package/dist/elements/http/LogBody.js.map +1 -1
  378. package/dist/elements/http/LogHeaders.js +4 -23
  379. package/dist/elements/http/LogHeaders.js.map +1 -1
  380. package/dist/elements/http/LogTimings.js +11 -13
  381. package/dist/elements/http/LogTimings.js.map +1 -1
  382. package/dist/elements/http/RequestConfigElement.js +7 -4
  383. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  384. package/dist/elements/http/RequestEditor.js +54 -88
  385. package/dist/elements/http/RequestEditor.js.map +1 -1
  386. package/dist/elements/http/RequestLog.js +9 -14
  387. package/dist/elements/http/RequestLog.js.map +1 -1
  388. package/dist/elements/http/UrlInput.js +15 -25
  389. package/dist/elements/http/UrlInput.js.map +1 -1
  390. package/dist/elements/http/UrlParamsForm.js +16 -13
  391. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  392. package/dist/elements/layout/LayoutManager.js +16 -24
  393. package/dist/elements/layout/LayoutManager.js.map +1 -1
  394. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  395. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  396. package/dist/elements/layout/SplitItem.js +4 -12
  397. package/dist/elements/layout/SplitItem.js.map +1 -1
  398. package/dist/elements/layout/SplitLayout.js +18 -24
  399. package/dist/elements/layout/SplitLayout.js.map +1 -1
  400. package/dist/elements/layout/SplitPanel.js +10 -16
  401. package/dist/elements/layout/SplitPanel.js.map +1 -1
  402. package/dist/elements/layout/SplitView.js +17 -26
  403. package/dist/elements/layout/SplitView.js.map +1 -1
  404. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  405. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  406. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  407. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  408. package/dist/elements/project/HttpProjectRequest.js +0 -38
  409. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  410. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  411. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  412. package/dist/elements/project/ProjectNavigation.js +0 -4
  413. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  414. package/dist/elements/project/ProjectRunReport.js +4 -15
  415. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  416. package/dist/elements/project/ProjectRunner.js +2 -47
  417. package/dist/elements/project/ProjectRunner.js.map +1 -1
  418. package/dist/elements/schema-design/AssociationFormElement.js +0 -13
  419. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  420. package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
  421. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  422. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  423. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  424. package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
  425. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  426. package/dist/elements/schema-design/EntityFormElement.js +0 -18
  427. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  428. package/dist/elements/schema-design/PropertyFormElement.js +0 -12
  429. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  430. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  431. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  432. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  433. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  434. package/dist/elements/user/UserAvatarElement.js +0 -9
  435. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  436. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  437. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  438. package/dist/http-client/idb/Base.js +5 -10
  439. package/dist/http-client/idb/Base.js.map +1 -1
  440. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  441. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  442. package/dist/http-client/idb/MockedStore.js +3 -1
  443. package/dist/http-client/idb/MockedStore.js.map +1 -1
  444. package/dist/http-client/store/DataImportProcessor.js +0 -3
  445. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  446. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  447. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  448. package/dist/http-client/store/IdbThread.js +23 -20
  449. package/dist/http-client/store/IdbThread.js.map +1 -1
  450. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  451. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  452. package/dist/http-client/store/idb/IdbStore.js +0 -2
  453. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  454. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  455. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  456. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  457. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  458. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  459. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  460. package/dist/mixins/FileDropMixin.js +0 -1
  461. package/dist/mixins/FileDropMixin.js.map +1 -1
  462. package/dist/mixins/RenderableMixin.js +11 -15
  463. package/dist/mixins/RenderableMixin.js.map +1 -1
  464. package/dist/pages/ApplicationScreen.js +34 -55
  465. package/dist/pages/ApplicationScreen.js.map +1 -1
  466. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  467. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  468. package/dist/pages/api-client/Authenticate.screen.js +4 -6
  469. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  470. package/dist/pages/api-client/StoreConfig.screen.js +21 -37
  471. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  472. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  473. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  474. package/dist/pages/api-client/pages/Files.page.js +6 -27
  475. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  476. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  477. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  478. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  479. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  480. package/dist/pages/demo/DemoPage.d.ts.map +1 -1
  481. package/dist/pages/demo/DemoPage.js +25 -24
  482. package/dist/pages/demo/DemoPage.js.map +1 -1
  483. package/dist/pages/http-project/HttpProject.screen.js +25 -35
  484. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  485. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  486. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  487. package/dist/store/HttpStore.js +0 -3
  488. package/dist/store/HttpStore.js.map +1 -1
  489. package/dist/store/UserCache.js +5 -5
  490. package/dist/store/UserCache.js.map +1 -1
  491. package/dist/ui/UiElement.js +4 -5
  492. package/dist/ui/UiElement.js.map +1 -1
  493. package/dist/ui/button/SegmentedButton.js +9 -11
  494. package/dist/ui/button/SegmentedButton.js.map +1 -1
  495. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  496. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  497. package/dist/ui/button/UiButton.js +17 -39
  498. package/dist/ui/button/UiButton.js.map +1 -1
  499. package/dist/ui/button/UiIconButton.js +9 -35
  500. package/dist/ui/button/UiIconButton.js.map +1 -1
  501. package/dist/ui/chip/UiChip.js +9 -49
  502. package/dist/ui/chip/UiChip.js.map +1 -1
  503. package/dist/ui/collapse/UiCollapse.js +15 -20
  504. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  505. package/dist/ui/controllers/ActionController.js +143 -144
  506. package/dist/ui/controllers/ActionController.js.map +1 -1
  507. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  508. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  509. package/dist/ui/date/DateTime.js +3 -3
  510. package/dist/ui/date/DateTime.js.map +1 -1
  511. package/dist/ui/dialog/UiDialog.d.ts +1 -1
  512. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  513. package/dist/ui/dialog/UiDialog.js +19 -41
  514. package/dist/ui/dialog/UiDialog.js.map +1 -1
  515. package/dist/ui/effects/ripple.js +20 -18
  516. package/dist/ui/effects/ripple.js.map +1 -1
  517. package/dist/ui/effects/rippleDirective.js +6 -7
  518. package/dist/ui/effects/rippleDirective.js.map +1 -1
  519. package/dist/ui/icons/UiIcon.js +4 -3
  520. package/dist/ui/icons/UiIcon.js.map +1 -1
  521. package/dist/ui/input/CheckboxElement.js +12 -10
  522. package/dist/ui/input/CheckboxElement.js.map +1 -1
  523. package/dist/ui/input/CheckedElement.js +2 -13
  524. package/dist/ui/input/CheckedElement.js.map +1 -1
  525. package/dist/ui/input/Input.js +169 -234
  526. package/dist/ui/input/Input.js.map +1 -1
  527. package/dist/ui/input/RadioElement.js +13 -11
  528. package/dist/ui/input/RadioElement.js.map +1 -1
  529. package/dist/ui/input/SwitchElement.js +0 -18
  530. package/dist/ui/input/SwitchElement.js.map +1 -1
  531. package/dist/ui/input/TextAreaElement.js +0 -15
  532. package/dist/ui/input/TextAreaElement.js.map +1 -1
  533. package/dist/ui/list/DividerElement.js +5 -10
  534. package/dist/ui/list/DividerElement.js.map +1 -1
  535. package/dist/ui/list/UiDropdownList.js +7 -48
  536. package/dist/ui/list/UiDropdownList.js.map +1 -1
  537. package/dist/ui/list/UiList.js +3 -15
  538. package/dist/ui/list/UiList.js.map +1 -1
  539. package/dist/ui/list/UiListItem.js +4 -17
  540. package/dist/ui/list/UiListItem.js.map +1 -1
  541. package/dist/ui/list/UiListbox.js +0 -1
  542. package/dist/ui/list/UiListbox.js.map +1 -1
  543. package/dist/ui/notification/SnackNotifications.js +1 -2
  544. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  545. package/dist/ui/notification/Snackbar.js +27 -51
  546. package/dist/ui/notification/Snackbar.js.map +1 -1
  547. package/dist/ui/progress/Range.js +24 -23
  548. package/dist/ui/progress/Range.js.map +1 -1
  549. package/dist/ui/progress/UiProgress.js +0 -11
  550. package/dist/ui/progress/UiProgress.js.map +1 -1
  551. package/dist/ui/table/DataTable.js +7 -12
  552. package/dist/ui/table/DataTable.js.map +1 -1
  553. package/dist/ui/tabs/UiTab.js +24 -25
  554. package/dist/ui/tabs/UiTab.js.map +1 -1
  555. package/dist/ui/tabs/UiTabs.js +21 -35
  556. package/dist/ui/tabs/UiTabs.js.map +1 -1
  557. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  558. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  559. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  560. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  561. package/dist/visualization/lib/Point.js +0 -2
  562. package/dist/visualization/lib/Point.js.map +1 -1
  563. package/dist/visualization/lib/SelectionManager.js +10 -11
  564. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  565. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  566. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  567. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  568. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  569. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  570. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  571. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  572. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  573. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  574. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  575. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  576. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  577. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  578. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  579. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  580. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  581. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  582. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  583. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  584. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  585. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  586. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  587. package/package.json +3 -2
  588. package/src/pages/demo/DemoPage.ts +12 -11
  589. package/src/ui/dialog/UiDialog.ts +6 -4
  590. package/test/ui/dialog/UiDialog.test.ts +236 -0
  591. package/tsconfig.json +2 -2
  592. package/demo/themes/default.css +0 -0
  593. package/demo/themes/m3/theme.dark.css +0 -40
  594. package/demo/themes/m3/theme.light.css +0 -40
  595. package/demo/themes/m3/tokens.css +0 -291
@@ -1 +1 @@
1
- {"version":3,"file":"ApiRequestEditor.element.js","sourceRoot":"","sources":["../../../src/elements/amf/ApiRequestEditor.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { \n uuidV4, \n Headers, \n ApiDefinitions, \n AmfShapes, \n EventUtils, \n Events as CoreEvents,\n Request,\n IRequest,\n IRequestProxyInit,\n HttpRequestKind,\n IProxyResult,\n IRequestLog,\n} from '@api-client/core/build/browser.js';\nimport { ensureContentType, generateHeaders } from \"../../amf/lib/Utils.js\";\nimport { cachePayloadValue, getPayloadValue, PayloadInfo, readCachePayloadValue } from \"../../amf/lib/PayloadUtils.js\";\nimport { applyUrlParameters, applyUrlVariables, computeEndpointUri, applyQueryParamStringToObject } from '../../amf/lib/UrlUtils.js';\nimport { AmfInputParser } from '../../amf/lib/AmfInputParser.js';\nimport * as InputCache from '../../amf/lib/InputCache.js';\nimport { Events } from '../../events/amf/Events.js';\nimport { EventTypes } from '../../events/amf/EventTypes.js';\nimport { EventTypes as UiEventTypes } from '../../events/EventTypes.js';\nimport { OperationParameter, PopulationInfo, SecuritySelectorListItem, ServerType } from '../../amf/types.js';\nimport { Oauth2Credentials } from '../authorization/types.js';\nimport BodyTextEditor from '../http/BodyTextEditor.js';\nimport BodyUrlEncodedEditor from '../http/BodyUrlEncodedEditor.js';\nimport { ifProperty } from '../../directives/if-property.js';\nimport ApiElement from '../ApiElement.js';\nimport type Input from '../../ui/input/Input.js';\nimport type RadioElement from '../../ui/input/RadioElement.js';\nimport { AmfParameters } from '../../amf/lib/AmfParameters.js';\nimport { UiDropdownListSelection } from '../../ui/list/UiDropdownList.js';\nimport { AmfSecurity } from '../../amf/lib/AmfSecurity.js';\nimport { SnackNotifications } from '../../ui/notification/SnackNotifications.js';\nimport '../../define/amf/api-authorization-editor.js';\nimport '../../define/amf/api-server-picker.js';\nimport '../../define/http/http-body-urlencoded-editor.js';\nimport '../../define/http/http-body-multipart-editor.js';\nimport '../../define/http/http-body-text-editor.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-text-field.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-progress.js';\n\nexport const EventCategory = 'API Request editor';\n\n/**\n * @fires amfstoreopget - Dispatched when querying for an operation data\n * @fires amfstoreopgetparent - Dispatched when querying for an operation data for an endpoint\n * @fires amfstoreendpointget - Dispatched when querying for an endpoint data\n * @fires apistoreserverquery - Dispatched when querying for API servers\n * @fires amfstoreapiprotocols - Dispatched when querying for API protocols\n * @fires amfstoreapiversion - Dispatched when querying for API version\n * @fires response - Dispatched when the response was received by the editor.\n */\nexport default class ApiRequestEditor extends ApiElement {\n /** \n * The currently selected media type for the payloads.\n * @attribute\n */\n @property({ type: String, reflect: true, }) mimeType?: string;\n\n /**\n * When set it renders a label with the computed URL.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) urlLabel?: boolean;\n\n /**\n * When set it renders the URL input above the URL parameters.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) urlEditor?: boolean;\n\n /**\n * If set it computes `hasOptional` property and shows checkbox in the\n * form to show / hide optional properties.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) allowHideOptional?: boolean;\n\n /**\n * When set, renders \"add custom\" item button.\n * If the element is to be used without AMF model this should always\n * be enabled. Otherwise users won't be able to add a parameter.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) allowCustom?: boolean;\n\n /**\n * OAuth2 redirect URI.\n * This value **must** be set in order for OAuth 1/2 to work properly.\n * @attribute\n */\n @property({ type: String }) redirectUri?: string;\n\n /**\n * Final request URL including settings like `baseUri`, AMF\n * model settings and user provided parameters.\n * @attribute\n */\n @property({ type: String }) url?: string;\n\n /**\n * Holds the value of the currently selected server\n * Data type: URI\n * @attribute\n */\n @property({ type: String }) serverValue?: string;\n\n /**\n * Holds the type of the currently selected server\n * Values: `server` | `uri` | `custom`\n * @attribute\n */\n @property({ type: String }) serverType?: string;\n\n /**\n * Optional property to set\n * If true, the server selector is not rendered\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) noServerSelector?: boolean;\n\n /**\n * Optional property to set\n * If true, the server selector custom base URI option is rendered\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) allowCustomBaseUri?: boolean;\n \n /**\n * List of credentials source\n */\n @property({ type: Array }) credentialsSource?: Oauth2Credentials[];\n\n /** \n * The domain id key of the selected security\n * @attribute\n */\n @property({ type: String }) selectedSecurity?: string;\n\n /** \n * Optional. The parent endpoint id. When set it uses this value to query for the endpoint\n * instead of querying for a parent through the operation id.\n * Also, when `endpoint` is set and the `endpointId` match then it ignores querying for \n * the endpoint.\n * @attribute\n */\n @property({ type: String }) endpointId?: string;\n\n protected domainIdValue: string | undefined;\n\n /**\n * The domain id (AMF id) of the rendered operation.\n * @attribute\n */\n @property({ type: String, reflect: true })\n get domainId(): string | undefined {\n return this.domainIdValue;\n }\n\n set domainId(value: string | undefined) {\n const old = this.domainIdValue;\n /* istanbul ignore if */\n if (old === value) {\n return;\n }\n this.domainIdValue = value;\n this.requestUpdate('domainId', old);\n this.processDebounce();\n }\n\n protected endpointValue: ApiDefinitions.IApiEndPoint | undefined;\n\n\n get endpoint(): ApiDefinitions.IApiEndPoint | undefined {\n return this.endpointValue;\n }\n\n set endpoint(value: ApiDefinitions.IApiEndPoint | undefined) {\n const old = this.endpointValue;\n if (old === value) {\n return;\n }\n this.endpointValue = value;\n this.requestUpdate();\n this.readUrlData();\n this.notifyChange();\n }\n\n /**\n * The HTTP method name.\n */\n get httpMethod(): string | undefined {\n const op = this.operationValue;\n if (!op) {\n return undefined;\n }\n return op.method;\n }\n\n /**\n * A flag set when the request is being made.\n */\n @state() loadingRequest: boolean | undefined;\n\n protected baseUriValue: string | undefined;\n\n /**\n * A base URI for the API. To be set if RAML spec is missing `baseUri`\n * declaration and this produces invalid URL input. This information\n * is passed to the URL editor that prefixes the URL with `baseUri` value\n * if passed URL is a relative URL.\n * @attribute\n */\n @property({ type: String }) get baseUri(): string | undefined {\n return this.baseUriValue;\n }\n\n set baseUri(value: string | undefined) {\n const old = this.baseUriValue;\n if (old === value) {\n return;\n }\n this.baseUriValue = value;\n this.readUrlData();\n this.requestUpdate('baseUri', old);\n }\n\n protected serversValue: ApiDefinitions.IApiServer[] | undefined;\n\n /**\n * The computed list of servers.\n */\n get servers(): ApiDefinitions.IApiServer[] | undefined {\n return this.serversValue;\n }\n\n protected serverLocalValue: ApiDefinitions.IApiServer | undefined;\n\n get server(): ApiDefinitions.IApiServer | undefined {\n return this.serverLocalValue;\n }\n\n /**\n * This is the final computed value for the baseUri to propagate downwards\n * If baseUri is defined, return baseUri\n * Else, return the selectedServerValue if serverType is not `server`\n */\n get effectiveBaseUri(): string {\n if (this.baseUri) {\n return this.baseUri;\n }\n if (this.serverType !== 'server') {\n return this.serverValue as string;\n }\n return '';\n }\n\n /**\n * @return True when there is not enough servers to render the selector\n */\n get serverSelectorHidden(): boolean {\n const { serversCount = 0, noServerSelector = false, allowCustomBaseUri } = this;\n return noServerSelector || (!allowCustomBaseUri && serversCount < 2);\n }\n\n /** \n * The list of security list items to render.\n * An operation may have multiple security definition in an or/and fashion.\n * This allows to render the selector to pick the current security.\n */\n protected securityList: SecuritySelectorListItem[] | undefined;\n\n /**\n * The security requirement for the operation or undefined.\n */\n get security(): SecuritySelectorListItem[] | undefined {\n const items = this.securityList;\n if (Array.isArray(items) && items.length) {\n return items;\n }\n return undefined;\n }\n\n /**\n * The currently rendered payload, if any.\n */\n get payload(): ApiDefinitions.IApiPayload | undefined {\n const { payloads } = this;\n if (!payloads) {\n return undefined;\n }\n const { mimeType } = this;\n let payload: ApiDefinitions.IApiPayload | undefined;\n if (mimeType) {\n payload = payloads.find(i => i.mediaType === mimeType);\n }\n if (!payload) {\n [payload] = payloads;\n }\n return payload;\n }\n\n /**\n * The list of all possible payloads for this operation.\n */\n get payloads(): ApiDefinitions.IApiPayload[] | undefined {\n const operation = this.operationValue;\n if (!operation) {\n return undefined;\n }\n const { request } = operation;\n if (!request) {\n return undefined;\n }\n const { payloads } = request;\n if (!Array.isArray(payloads) || !payloads.length) {\n return undefined;\n }\n return payloads;\n }\n\n /**\n * @returns API defined base URI (current server + the endpoint)\n */\n get apiBaseUri(): string | undefined {\n const endpoint = this.endpointValue;\n const server = this.serverLocalValue;\n if (!server || !endpoint) {\n return undefined;\n }\n const { path = '' } = endpoint;\n let { url = '' } = server;\n if (url.endsWith('/')) {\n url = url.substr(0, url.length - 1);\n }\n return `${url}${path}`;\n }\n\n protected urlInvalidValue?: boolean;\n\n /**\n * True when the URL input is invalid.\n */\n get urlInvalid(): boolean | undefined {\n return this.urlInvalidValue;\n }\n\n protected protocolsValue: string[] | undefined;\n\n /**\n * The API's protocols.\n */\n get protocols(): string[] | undefined {\n return this.protocolsValue;\n }\n\n protected versionValue: string | undefined;\n\n /**\n * The API's version.\n */\n get version(): string | undefined {\n return this.versionValue;\n }\n\n queryDebouncerTimeout: number;\n\n /** \n * Set when the selection change, this is a JS object created form the \n * supportedOperation definition of the AMF graph.\n */\n protected operationValue?: ApiDefinitions.IApiOperation;\n\n /** \n * The list of parameter groups that are opened when `allowHideOptional` is set.\n */\n openedOptional: string[];\n\n protected debounceValue: unknown;\n\n protected urlSearchRegexpValue: RegExp | undefined;\n\n serversCount?: number;\n\n amfParameters: AmfParameters;\n\n /**\n * This is set while the HTTP request is being executed.\n * It allows to abort the request.\n */\n requestController?: AbortController;\n\n /**\n * @constructor\n */\n constructor() {\n super();\n /** \n * The timeout after which the `queryGraph()` function is called \n * in the debouncer.\n */\n this.queryDebouncerTimeout = 1;\n this.authRedirectChangedHandler = this.authRedirectChangedHandler.bind(this);\n this.populateAnnotatedFieldsHandler = this.populateAnnotatedFieldsHandler.bind(this);\n \n this.openedOptional = [];\n this.amfParameters = new AmfParameters(this);\n this.amfParameters.addEventListener('render', () => this.requestUpdate());\n this.amfParameters.addEventListener('change', () => this.notifyChange());\n this.amfParameters.addEventListener('paramchange', this.paramChangeHandler.bind(this) as EventListener);\n InputCache.registerLocal(this);\n this.graphChangeHandler = this.graphChangeHandler.bind(this);\n this.addEventListener(UiEventTypes.Http.Request.send, this.internalSendHandler.bind(this));\n }\n\n notifyChange(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.processDebounce();\n this.amfParameters.globalCache = true;\n const node = this.eventsTarget;\n node.addEventListener(EventTypes.Store.graphChange, this.graphChangeHandler);\n node.addEventListener(EventTypes.Request.redirectUriChange, this.authRedirectChangedHandler as EventListener);\n node.addEventListener(EventTypes.Request.populateAnnotatedFields, this.populateAnnotatedFieldsHandler as EventListener);\n \n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.debounceValue) {\n clearTimeout(this.debounceValue as number);\n this.debounceValue = undefined;\n }\n const node = this.eventsTarget;\n node.removeEventListener(EventTypes.Store.graphChange, this.graphChangeHandler);\n node.removeEventListener(EventTypes.Request.redirectUriChange, this.authRedirectChangedHandler as EventListener);\n node.removeEventListener(EventTypes.Request.populateAnnotatedFields, this.populateAnnotatedFieldsHandler as EventListener);\n }\n\n /**\n * Handler for the event dispatched by the store when the graph model change.\n */\n protected graphChangeHandler(): void {\n this.processDebounce()\n }\n\n /**\n * Calls the `queryGraph()` function in a debouncer.\n */\n protected processDebounce(): void {\n if (this.debounceValue) {\n clearTimeout(this.debounceValue as number);\n }\n this.debounceValue = setTimeout(() => {\n this.debounceValue = undefined;\n this.processGraph();\n }, this.queryDebouncerTimeout);\n }\n\n /**\n * Reads the URL data from the ApiUrlDataModel library and sets local variables.\n */\n readUrlData(): void {\n this.updateServerParameters();\n this.orderPathParameters()\n this.computeUrlValue();\n }\n\n /**\n * It makes sure that the path parameters are rendered in order (server, endpoint) and in order of occurrence in the URL. \n */\n protected orderPathParameters(): void {\n const params = this.getOrderedPathParams();\n if (!params || !params.length) {\n return;\n }\n const { amfParameters } = this;\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.binding !== 'path');\n amfParameters.parametersValue = amfParameters.parametersValue.concat(params);\n }\n\n protected paramChangeHandler(e: CustomEvent<string>): void {\n this.paramChanged(e.detail);\n }\n\n /**\n * A function to be overwritten by child classes to execute an action when a parameter has changed.\n */\n protected paramChanged(key: string): void {\n this.computeUrlValue();\n this.validateUrl();\n const { amfParameters } = this;\n const param = amfParameters.parametersValue.find(p => p.paramId === key);\n if (param && param.binding === 'header' && (param.parameter.name || '').toLocaleLowerCase() === 'content-type') {\n const value = InputCache.get(this, param.paramId, true) as string;\n this.mimeType = value;\n }\n }\n\n /**\n * Computes the URL value for the current serves, selected server, and endpoint's path.\n */\n protected computeUrlValue(): void {\n const { effectiveBaseUri, server, protocols, version } = this;\n const endpoint = this.endpointValue;\n const result = computeEndpointUri({\n baseUri: effectiveBaseUri,\n server,\n endpoint,\n protocols,\n version,\n forceHttpProtocol: true,\n });\n const { amfParameters } = this;\n const params = amfParameters.parametersValue.map(p => p.parameter);\n const report = AmfInputParser.reportRequestInputs(params, InputCache.getStore(this, true), amfParameters.nilValues);\n let url = applyUrlVariables(result, report.path, true);\n url = applyUrlParameters(url, report.query, true);\n this.url = url;\n }\n\n /**\n * Checks if the current server has variables and update the parameters array\n */\n protected updateServerParameters(): void {\n const { server } = this;\n const source = 'server';\n const { amfParameters } = this;\n // clears previously set request parameters related to server configuration.\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.source !== source);\n if (!server || ['custom', 'uri'].includes(this.serverType || '')) {\n // we don't need to compute server variables for a custom URLs.\n return;\n }\n if (Array.isArray(server.variables) && server.variables.length) {\n server.variables.forEach((param) => {\n const item: OperationParameter = {\n binding: param.binding || '',\n paramId: param.id,\n parameter: param,\n source,\n };\n if (param.schema) {\n item.schema = param.schema;\n item.schemaId = param.schema.id;\n }\n amfParameters.parametersValue.push(item);\n });\n }\n }\n\n /**\n * Checks if the current endpoint has variables and requests them when needed.\n */\n protected updateEndpointParameters(): void {\n const source = 'endpoint';\n const { amfParameters } = this;\n // clears previously set request parameters related to server configuration.\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.source !== source);\n const endpoint = this.endpointValue;\n if (!endpoint) {\n // we don't need to compute endpoint variables for a custom URLs.\n return;\n }\n if (Array.isArray(endpoint.parameters) && endpoint.parameters.length) {\n endpoint.parameters.forEach((param) => {\n const item: OperationParameter = {\n binding: param.binding || '',\n paramId: param.id,\n parameter: param,\n source,\n };\n if (param.schema) {\n item.schema = param.schema;\n item.schemaId = param.schema.id;\n }\n amfParameters.parametersValue.push(item);\n });\n }\n }\n\n reset(): void {\n this.securityList = undefined;\n this.mimeType = undefined;\n this.amfParameters.parametersValue = [];\n }\n\n /**\n * Processes the selection of the domain id for an operation.\n */\n async processGraph(): Promise<void> {\n await this.queryEndpoint();\n await this.queryOperation();\n await this.queryServers();\n await this.queryProtocols();\n this.processEndpoint();\n this.processOperation();\n this.processSecurity();\n this.processPayload();\n this.computeUrlValue();\n this.readUrlData();\n this.notifyChange();\n }\n\n /**\n * Queries the store for the operation data, when needed.\n */\n async queryOperation(): Promise<void> {\n const { domainId } = this;\n if (!domainId || domainId === 'undefined') {\n // this.operationValue = undefined;\n return;\n }\n if (this.operationValue && this.operationValue.id === domainId) {\n // in case the operation model was provided via the property setter.\n return;\n }\n try {\n const endpointId = this.endpointValue && this.endpointValue.id;\n const info = await Events.Operation.get(this, domainId, endpointId);\n this.operationValue = info;\n } catch (e) {\n const ex = e as Error;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API operation data: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Queries the store for the endpoint data.\n * @returns {Promise<void>}\n */\n async queryEndpoint(): Promise<void> {\n const { domainId, endpointId } = this;\n if (!domainId || domainId === 'undefined') {\n // this.endpointValue = undefined;\n return;\n }\n if (this.endpointValue && this.endpointValue.id === endpointId) {\n // in case the endpoint model was provided via the property setter.\n return;\n }\n this.endpointValue = undefined;\n try {\n const info = await (endpointId ? Events.Endpoint.get(this, endpointId) : Events.Operation.getParent(this, domainId));\n this.endpointValue = info;\n } catch (e) {\n const ex = e as Error;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API endpoint data: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Queries for the current servers value.\n */\n async queryServers(): Promise<void> {\n const { domainId } = this;\n const endpointId = this.endpointValue && this.endpointValue.id;\n try {\n const info = await Events.Server.query(this, {\n endpointId,\n methodId: domainId,\n });\n this.serversValue = info || undefined;\n } catch (e) {\n const ex = e as Error;\n this.serversValue = undefined;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API servers: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Queries the API store for the API protocols list.\n */\n async queryProtocols(): Promise<void> {\n this.protocolsValue = undefined;\n try {\n const info = await Events.Api.protocols(this);\n this.protocolsValue = info;\n } catch (e) {\n const ex = e as Error;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API protocols list: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Searches for the current operation endpoint and sets variables from the endpoint definition.\n */\n protected processEndpoint(): void {\n this.updateEndpointParameters();\n this.computeUrlRegexp();\n }\n\n /**\n * Collects operations input parameters into a single object.\n */\n protected processOperation(): void {\n const source = 'request';\n const operation = this.operationValue;\n const { amfParameters } = this;\n // clears previously set request parameters (query, path, headers)\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.source !== source);\n if (!operation) {\n return;\n }\n const { request } = operation;\n if (!request) {\n return;\n }\n const uri: ApiDefinitions.IApiParameter[] = [];\n if (Array.isArray(request.uriParameters)) {\n // OAS has this weird thing where you can define URI parameters on the endpoint and the operation.\n // this eliminates the duplicates and merges the schemas\n request.uriParameters.forEach((param) => {\n if (!param.paramName) {\n uri.push(param);\n return;\n }\n const index = amfParameters.parametersValue.findIndex(p => p.binding === 'path' && p.parameter.paramName === param.paramName);\n if (index !== -1) {\n // remove the parameter that is being replaced by the local definition\n amfParameters.parametersValue.splice(index, 1);\n }\n uri.push(param);\n });\n }\n this.appendToParams(uri, source);\n this.appendToParams(request.queryParameters, source);\n this.appendToParams(request.headers, source);\n this.appendToParams(request.cookieParameters, source);\n }\n\n /**\n * Processes security information for the UI.\n */\n protected processSecurity(): void {\n const operation = this.operationValue;\n if (!operation) {\n return;\n }\n const { security } = operation;\n this.securityList = AmfSecurity.readSecurityList(security);\n const [first] = this.securityList;\n this.selectedSecurity = first ? first.security.id : undefined;\n }\n\n /**\n * Makes sure the correct mime type is selected for the current selection.\n */\n protected processPayload(): void {\n const operation = this.operationValue;\n if (!operation) {\n return;\n }\n const { request } = operation;\n if (!request) {\n return;\n }\n const { payloads = [] } = request;\n if (!payloads.length) {\n return;\n }\n let mime = this.mimeType;\n \n if (mime) {\n const has = payloads.find(p => p.mediaType === mime);\n if (!has) {\n mime = undefined;\n }\n }\n if (!mime) {\n const first = payloads.find(p => p.mediaType);\n if (first) {\n mime = first.mediaType;\n }\n }\n this.mimeType = mime;\n }\n\n /**\n * Appends a list of parameters to the list of rendered parameters\n */\n protected appendToParams(list: ApiDefinitions.IApiParameter[], source: string): void {\n const params = this.amfParameters.parametersValue;\n if (Array.isArray(list)) {\n list.forEach((param) => {\n params.push({\n paramId: param.id,\n parameter: param,\n binding: param.binding || '',\n source,\n schema: param.schema,\n schemaId: param.schema && param.schema.id ? param.schema.id : undefined,\n });\n });\n }\n }\n\n /**\n * A handler for the change event dispatched by the `raw` editor.\n */\n protected rawBodyChangeHandler(e: Event): void {\n const editor = e.target as BodyTextEditor;\n const { value, dataset } = editor;\n const { payloadId } = dataset;\n if (!payloadId) {\n return;\n }\n cachePayloadValue(payloadId, value as string);\n }\n\n /**\n * A handler for the change event dispatched by the \n * `urlEncode` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected modelBodyEditorChangeHandler(e: Event): void {\n const editor = e.target as BodyUrlEncodedEditor;\n const { value, model, dataset } = editor;\n const { payloadId } = dataset;\n if (!payloadId) {\n return;\n }\n cachePayloadValue(payloadId, value as string, model);\n }\n\n protected handleAuthSelect(e: CustomEvent<UiDropdownListSelection>): void {\n const { item } = e.detail;\n const { id } = item.dataset;\n if (!id) {\n return;\n }\n this.selectedSecurity = id;\n this.requestUpdate();\n }\n\n /**\n * Handles send button click.\n * Depending on authorization validity it either sends the\n * request or forces authorization and sends the request.\n */\n protected sendHandler(): void {\n this.execute();\n }\n\n /**\n * To be called when the user want to execute the request but\n * authorization is invalid (missing values).\n * This function brings the auth panel to front and displays error toast\n */\n async authAndExecute(): Promise<void> {\n const { shadowRoot } = this;\n if (!shadowRoot) {\n throw new Error(`Invalid state. The element is not initialized.`);\n }\n\n const panel = shadowRoot.querySelector('api-authorization-editor');\n if (!panel) {\n throw new Error(`Invalid state. The authorization editor element was removed from the DOM.`);\n }\n await panel.authorize();\n const valid = panel.validate();\n if (valid) {\n this.execute();\n }\n }\n\n protected async proxyRequest(init: IRequestProxyInit): Promise<IProxyResult<IRequestLog> | undefined> {\n let result: IProxyResult<IRequestLog> | undefined;\n try {\n result = await CoreEvents.Transport.Core.request(init, this);\n } catch (e) {\n // ...\n }\n return result;\n }\n\n /**\n * Proxies the request to the endpoint using the core libraries.\n */\n async execute(): Promise<void> {\n if (this.loadingRequest) {\n this.abort();\n }\n Events.Telemetry.event(this, {\n category: EventCategory,\n action: 'request-execute',\n label: 'true'\n });\n const request = await this.serialize();\n const ctrl = new AbortController();\n this.requestController = ctrl;\n const init: IRequestProxyInit = {\n kind: HttpRequestKind,\n request: request.expects,\n authorization: request.authorization,\n signal: ctrl.signal,\n };\n this.loadingRequest = true;\n const result = await this.proxyRequest(init);\n this.loadingRequest = false;\n if (!result) {\n if (ctrl.signal.aborted) {\n return;\n }\n const message = `The request was not sent. Proxy not available.`;\n SnackNotifications.notify(message, { timeout: 2000, close: true });\n throw new Error(message);\n }\n this.dispatchEvent(new CustomEvent<IRequestLog>('response', { detail: result.result }));\n }\n\n /**\n * Uses the `requestController` to abort the ongoing HTTP request.\n */\n abort(): void {\n Events.Telemetry.event(this, {\n category: EventCategory,\n action: 'request-abort',\n label: 'true'\n });\n const { requestController } = this;\n if (!requestController) {\n return;\n }\n requestController.abort();\n this.requestController = undefined;\n this.loadingRequest = false;\n }\n\n /**\n * Event handler for abort click.\n */\n protected abortHandler(): void {\n this.abort();\n }\n\n /**\n * Serializes the state of the request editor into the `ApiConsoleRequest` object.\n */\n async serialize(): Promise<IRequest> {\n const op = this.operationValue;\n if (!op) {\n throw new Error(`No API operation defined on the editor`);\n }\n const method = (op.method || 'get').toUpperCase();\n const params: ApiDefinitions.IApiParameter[] = [];\n const { amfParameters } = this;\n amfParameters.parametersValue.forEach((item) => {\n const { parameter, enabled } = item;\n if (enabled === false) {\n return;\n }\n params.push(parameter);\n });\n const report = AmfInputParser.reportRequestInputs(params, InputCache.getStore(this, true), amfParameters.nilValues);\n const serverUrl = computeEndpointUri({\n baseUri: this.effectiveBaseUri,\n server: this.server,\n endpoint: this.endpointValue,\n protocols: this.protocols,\n forceHttpProtocol: true,\n });\n let url = applyUrlVariables(serverUrl, report.path, true);\n url = applyUrlParameters(url, report.query, true);\n const headers = generateHeaders(report.header);\n\n const instance = new Request();\n const expects = instance.getExpects();\n expects.method = method;\n expects.url = url;\n expects.headers = headers;\n \n if (!['GET', 'HEAD'].includes(method)) {\n let body: string | FormData | Blob | File | Buffer | ArrayBuffer | undefined;\n const { payload } = this;\n if (payload) {\n const info = readCachePayloadValue(payload.id);\n if (info && info.value) {\n body = info.value;\n }\n }\n if (body instanceof FormData) {\n const parser = new Headers(expects.headers);\n parser.delete('content-type');\n expects.headers = parser.toString();\n } else if (payload) {\n expects.headers = ensureContentType(expects.headers || '', payload.mediaType);\n }\n if (typeof body !== 'undefined') {\n await expects.writePayload(body);\n }\n }\n\n const result = instance.toJSON();\n\n const authElement = this.shadowRoot?.querySelector('api-authorization-editor');\n if (authElement) {\n const auth = authElement.serialize();\n result.authorization = auth;\n }\n return result;\n }\n\n /**\n * Handler for the `oauth2-redirect-uri-changed` custom event. Changes\n * the `redirectUri` property.\n */\n protected authRedirectChangedHandler(e: CustomEvent): void {\n this.redirectUri = e.detail.value;\n }\n\n /**\n * Handle event for populating annotated fields in the editor.\n */\n protected populateAnnotatedFieldsHandler(e: CustomEvent): void {\n const populationInfoArray: PopulationInfo[] = e.detail.values;\n const { parametersValue = [] } = this.amfParameters;\n const allAnnotated = parametersValue.filter(param => Array.isArray(param.parameter.customDomainProperties) && !!param.parameter.customDomainProperties.length);\n let update = false;\n populationInfoArray.forEach(({ annotationName, annotationValue, fieldValue }) => {\n allAnnotated.forEach((item) => {\n const { parameter, paramId } = item;\n const hasAnnotation = (parameter.customDomainProperties || []).some((prop) => prop.name === annotationName && (prop.extension as AmfShapes.IApiScalarNode).value === annotationValue);\n if (!hasAnnotation) {\n return;\n }\n InputCache.set(this, paramId, fieldValue, true);\n update = true;\n });\n });\n if (update) {\n this.requestUpdate();\n }\n /* @TODO populate values for the security schema. */\n }\n\n /**\n * Computes a current server value for selection made in the server selector.\n */\n protected updateServer(): void {\n const { serverValue, serverType, servers = [] } = this;\n if (serverType !== 'server') {\n this.serverLocalValue = undefined;\n } else {\n this.serverLocalValue = servers.find(server => server.url === serverValue);\n }\n this.readUrlData();\n this.computeUrlRegexp();\n }\n\n /**\n * Handler for the change dispatched from the server selector.\n */\n protected serverCountHandler(e: CustomEvent): void {\n const { value = 0 } = e.detail;\n this.serversCount = value;\n this.updateServer();\n this.requestUpdate();\n }\n\n /**\n * Handler for the change dispatched from the server selector.\n */\n protected serverHandler(e: CustomEvent): void {\n const { value, type } = e.detail;\n this.serverType = type;\n this.serverValue = value;\n this.updateServer();\n this.computeUrlRegexp();\n }\n\n /**\n * Computes a regexp for the base URI defined in the server to process URL input change\n * and set the `.urlSearchRegexpValue` value.\n * This should be computed only when a server and en endpoint change.\n */\n protected computeUrlRegexp(): void {\n const { effectiveBaseUri } = this;\n let value;\n if (effectiveBaseUri) {\n value = computeEndpointUri({\n baseUri: effectiveBaseUri,\n endpoint: this.endpointValue,\n forceHttpProtocol: true,\n });\n } else {\n value = this.apiBaseUri;\n }\n if (!value) {\n this.urlSearchRegexpValue = undefined;\n } else {\n value = value.replace('?', '\\\\?');\n value = value.replace(/(\\.|\\/)/g, '\\\\$1');\n value = value.replace(/{[\\w\\\\+]+}/g, '([a-zA-Z0-9\\\\$\\\\-_\\\\.~\\\\+!\\'\\\\(\\\\)\\\\*\\\\{\\\\}]+)');\n value += '.*';\n this.urlSearchRegexpValue = new RegExp(value);\n }\n }\n\n protected handleMediaTypeSelect(e: Event): void {\n const node = e.target as RadioElement;\n const { value } = node;\n this.mimeType = value;\n const ctParam = this.amfParameters.parametersValue.find(p => p.binding === 'header' && (p.parameter.name || '').toLocaleLowerCase() === 'content-type');\n if (ctParam) {\n InputCache.set(this, ctParam.paramId, value, true);\n }\n }\n\n protected async notifyResizeAfterUpdate(): Promise<void> {\n await this.updateComplete;\n this.dispatchEvent(new Event('resize', { bubbles: true, composed: true }));\n }\n\n /**\n * Toggles optional parameter groups.\n */\n protected handleOptionalToggle(e: Event): void {\n const node = e.target as HTMLElement;\n const { target } = node.dataset;\n if (!target) {\n return;\n }\n if (!Array.isArray(this.openedOptional)) {\n this.openedOptional = [];\n }\n if (this.openedOptional.includes(target)) {\n const index = this.openedOptional.indexOf(target);\n this.openedOptional.splice(index, 1);\n } else {\n this.openedOptional.push(target);\n }\n this.requestUpdate();\n this.notifyResizeAfterUpdate();\n }\n\n /**\n * When enabled it adds a new custom parameter to the request section defined in the source button.\n */\n protected addCustomHandler(e: Event): void {\n const button = e.currentTarget as HTMLElement;\n const { type } = button.dataset;\n if (!['query', 'header'].includes(type as string)) {\n return;\n }\n const id = uuidV4();\n const param: OperationParameter = {\n binding: type || '',\n source: 'custom',\n paramId: id,\n parameter: {\n id,\n required: true,\n binding: type,\n name: '',\n examples: [],\n payloads: [],\n customDomainProperties: [],\n types: [],\n },\n };\n this.amfParameters.parametersValue.push(param);\n this.requestUpdate();\n }\n\n /**\n * Updates path/query model from user input.\n *\n * @param e The change event\n */\n protected handleUrlEditorChange(e: Event): void {\n const { value } = e.target as Input;\n let matches;\n const uriRegexp = this.urlSearchRegexpValue;\n // parameters must be in order from server to the endpoint\n const pathParams = this.getOrderedPathParams();\n let changed = false;\n if (pathParams.length && uriRegexp) {\n matches = value.match(uriRegexp);\n if (matches) {\n matches.shift();\n changed = this.applyUriValues(matches, pathParams);\n }\n }\n const matchesNew = value.match(/[^&?]*?=[^&?]*/g);\n if (matchesNew) {\n const params: Record<string, string|string[]> = {};\n matchesNew.forEach((item) => applyQueryParamStringToObject(item, params));\n const qpChanged = this.applyQueryParamsValues(params);\n if (!changed) {\n changed = qpChanged;\n }\n }\n this.url = value;\n this.validateUrl();\n this.notifyChange();\n this.requestUpdate();\n }\n\n /**\n * Sets the value of `.urlInvalidValue` and therefore `urlInvalid` properties.\n */\n validateUrl(): void {\n this.urlInvalidValue = !this.readUrlValidity();\n this.requestUpdate();\n }\n\n /**\n * Validates the current URL value.\n * @returns True when the current URL is a valid URL.\n */\n protected readUrlValidity(): boolean {\n const { url } = this;\n if (!url) {\n return false;\n }\n if (typeof url !== 'string') {\n return false;\n }\n if (url.indexOf('{') !== -1 && url.indexOf('}') !== -1) {\n return false;\n }\n const { shadowRoot } = this;\n if (!shadowRoot) {\n return true;\n }\n const inputElement = shadowRoot.querySelector('.url-input') as Input;\n if (inputElement) {\n return inputElement.reportValidity();\n }\n return true;\n }\n\n /**\n * Reads the ordered list of path parameters from the server and the endpoint.\n */\n protected getOrderedPathParams(): OperationParameter[] {\n const result: OperationParameter[] = [];\n const { effectiveBaseUri } = this;\n let url;\n if (effectiveBaseUri) {\n url = computeEndpointUri({\n baseUri: effectiveBaseUri,\n endpoint: this.endpointValue,\n forceHttpProtocol: true,\n });\n } else {\n url = this.apiBaseUri;\n }\n if (!url) {\n return result;\n }\n const matches = url.match(/{[\\w\\\\+]+}/g);\n if (!matches) {\n return result;\n }\n const all = this.amfParameters.parametersValue;\n matches.forEach((tpl) => {\n const name = tpl.substr(1, tpl.length - 2);\n const param = all.find(p => p.binding === 'path' && p.parameter.name === name);\n if (param) {\n result.push(param);\n }\n });\n return result;\n }\n\n /**\n * Applies values from the `values` array to the uri parameters which names are in the `names` array.\n * Both lists are ordered list of parameters.\n *\n * @param values Values for the parameters\n * @param params List of path parameters.\n * @returns True when any parameter was changed.\n */\n protected applyUriValues(values: string[], params: OperationParameter[]): boolean {\n let changed = false;\n for (let i = 0, len = params.length; i < len; i++) {\n const value = values[i];\n if (value && value[0] === '{') {\n // This is still a variable\n continue;\n }\n const param = params[i];\n if (InputCache.get(this, param.paramId, true) !== value) {\n InputCache.set(this, param.paramId, value, true);\n changed = true;\n }\n }\n return changed;\n }\n\n /**\n * Applies query parameters values to the render list.\n *\n * @returns True when any parameter was changed.\n */\n protected applyQueryParamsValues(map: Record<string, string|string[]>): boolean {\n if (!map) {\n return false;\n }\n const keys = Object.keys(map);\n let changed = false;\n keys.forEach((key) => {\n const value = map[key];\n if (value && value[0] === '{') {\n // This is still a variable\n return;\n }\n const param = this.amfParameters.parametersValue.find(p => p.binding === 'query' && p.parameter.name === key);\n if (param) {\n if (InputCache.get(this, param.paramId, true) !== value) {\n InputCache.set(this, param.paramId, value, true);\n changed = true;\n }\n }\n });\n return changed;\n }\n\n protected internalSendHandler(e: Event): void {\n e.stopPropagation();\n this.execute();\n }\n\n /**\n * A handler for the change event on the authorization panel.\n */\n protected authorizationChangeHandler(): void {\n this.notifyChange();\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"content\">\n ${this.serverSelectorTemplate()}\n ${this.urlLabelTemplate()}\n ${this.renderUrlEditor()}\n ${this.parametersTemplate()}\n ${this.headersTemplate()}\n ${this.mediaTypeSelectorTemplate()}\n ${this.bodyTemplate()}\n ${this.authorizationTemplate()}\n ${this.formActionsTemplate()}\n </div>`;\n }\n\n /**\n * @return Template for the request URL label.\n */\n protected urlLabelTemplate(): TemplateResult | typeof nothing {\n const { urlLabel, url } = this;\n if (!urlLabel) {\n return nothing;\n }\n return html`<div class=\"url-label text-selectable\" title=\"Current request URL\">${url}</div>`;\n }\n\n protected authorizationTemplate(): TemplateResult | typeof nothing {\n const { security } = this;\n if (!security) {\n return nothing;\n }\n const { selectedSecurity, redirectUri, credentialsSource } = this;\n const rendered = security.find(i => i.security.id === selectedSecurity);\n if (!rendered) {\n return nothing;\n }\n return html`\n <section class=\"authorization params-section\">\n <div class=\"section-title\"><span class=\"label\">Credentials</span></div>\n ${security.length > 1 ? this.authorizationSelectorTemplate(security, rendered) : ''}\n <api-authorization-editor \n .security=\"${rendered.security}\"\n .oauth2RedirectUri=\"${redirectUri}\"\n .credentialsSource=\"${credentialsSource}\"\n @change=\"${this.authorizationChangeHandler}\"></api-authorization-editor>\n </section>\n `;\n }\n\n /**\n * @returns The template for the security drop down selector.\n */\n protected authorizationSelectorTemplate(security: SecuritySelectorListItem[], selected: SecuritySelectorListItem): TemplateResult {\n const finalValue = selected.labels.join(', ');\n return html`\n <ui-dropdown-list\n class=\"authorization-selector\"\n closeOnOutsideClick\n matchTriggerWidth\n @select=\"${this.handleAuthSelect}\"\n >\n <ui-text-field \n class=\"dropdown-trigger\" \n label=\"Authorization method\" \n readOnly \n name=\"authorization\"\n .value=\"${finalValue || ''}\" \n @select=\"${EventUtils.cancelEvent}\"\n >\n <ui-icon icon=\"arrowDropDown\" role=\"presentation\" slot=\"suffix\"></ui-icon>\n </ui-text-field>\n <ui-list slot=\"dropdown\" role=\"menu\" selector=\"[data-value]\" selectActive>\n ${security.map((item) => this.authorizationSelectorItemTemplate(item))}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n /**\n * @returns The template for the security drop down selector list item.\n */\n protected authorizationSelectorItemTemplate(info: SecuritySelectorListItem): TemplateResult {\n const { labels, types, security } = info;\n \n const label = labels.join(', ');\n const type = types.join(', ');\n const single = !type;\n return html`\n <ui-list-item \n role=\"menuitem\" \n lines=\"${single ? 'one' : 'two'}\"\n data-id=\"${security.id}\"\n >\n ${label}\n ${!single ? html`<div slot=\"supporting-text\">${type}</div>` : ''}\n </ui-list-item>\n `;\n }\n\n protected formActionsTemplate(): TemplateResult {\n const loading = this.loadingRequest;\n return html`\n <div class=\"action-bar\">\n ${loading ? this.abortButtonTemplate() : this.sendButtonTemplate()}\n <ui-progress ?hidden=\"${!loading}\" indeterminate class=\"request-progress\"></ui-progress>\n </div>`;\n }\n\n /**\n * Creates a template for the \"abort\" button.\n */\n protected abortButtonTemplate(): TemplateResult {\n return html`\n <ui-button\n class=\"send-button abort\"\n type=\"filled\"\n @click=\"${this.abortHandler}\"\n >Abort</ui-button>`;\n }\n\n /**\n * Creates a template for the \"send\" or \"auth and send\" button.\n */\n protected sendButtonTemplate(): TemplateResult {\n return html`\n <ui-button\n class=\"send-button\"\n type=\"filled\"\n @click=\"${this.sendHandler}\"\n >Send</ui-button>`;\n }\n\n /**\n * @return A template for the server selector\n */\n protected serverSelectorTemplate(): TemplateResult {\n const {\n serverType,\n serverValue,\n allowCustomBaseUri,\n serverSelectorHidden,\n domainId,\n } = this;\n return html`\n <api-server-picker\n ?hidden=\"${serverSelectorHidden}\"\n ?custom=\"${allowCustomBaseUri}\"\n .value=\"${serverValue}\"\n .type=\"${serverType as ServerType}\"\n .domainId=\"${domainId}\"\n domainType=\"operation\"\n auto\n @serverscountchanged=\"${this.serverCountHandler}\"\n @apiserverchanged=\"${this.serverHandler}\"\n >\n <slot name=\"custom-base-uri\" slot=\"custom-base-uri\"></slot>\n </api-server-picker>`;\n }\n\n /**\n * @return \n */\n protected parametersTemplate(): TemplateResult | typeof nothing {\n const qp: OperationParameter[] = [];\n const path: OperationParameter[] = [];\n // NOTE, the \"* Required field\" has been added after the a11y audit of API Console.\n let hasRequired = false;\n const { amfParameters } = this;\n amfParameters.parametersValue.forEach((item) => {\n if (!hasRequired && item.parameter && item.parameter.required) {\n hasRequired = true;\n }\n if (item.binding === 'query') {\n qp.push(item);\n } else if (item.binding === 'path') {\n path.push(item);\n }\n });\n const { allowCustom, openedOptional = [] } = this;\n if (!allowCustom && !qp.length && !path.length) {\n return nothing;\n }\n const pathOptions = Object.freeze({ required: true });\n const queryClasses = {\n 'query-params': true,\n 'hide-optional': !!this.allowHideOptional && !openedOptional.includes('query'),\n };\n return html`\n <section class=\"params-section parameter\">\n <div class=\"section-title\"><span class=\"label\">Parameters</span></div>\n ${hasRequired ? html`<p class=\"required-field\">* Required field</p>` : ''}\n <div class=\"path-params\">\n ${path.map(param => amfParameters.parameterTemplate(param, pathOptions))}\n </div>\n <div class=\"${classMap(queryClasses)}\">\n ${this.renderToggleOptional('query', qp)}\n ${qp.map(param => amfParameters.parameterTemplate(param))}\n ${allowCustom ? this.addCustomButtonTemplate('query') : ''}\n </div>\n </section>\n `;\n }\n\n protected headersTemplate(): TemplateResult | typeof nothing {\n const headers: OperationParameter[] = [];\n // NOTE, the \"* Required field\" has been added after the a11y audit of API Console.\n let hasRequired = false;\n const { amfParameters } = this;\n amfParameters.parametersValue.forEach((item) => {\n if (item.binding === 'header') {\n headers.push(item);\n if (!hasRequired && item.parameter && item.parameter.required) {\n hasRequired = true;\n }\n }\n });\n const { allowCustom, openedOptional = [] } = this;\n if (!allowCustom && !headers.length) {\n return nothing;\n }\n const classes = {\n 'header-params': true,\n 'hide-optional': !!this.allowHideOptional && !openedOptional.includes('header'),\n };\n return html`\n <section class=\"params-section header\" aria-label=\"HTTP headers\">\n <div class=\"section-title\"><span class=\"label\">Headers</span></div>\n ${hasRequired ? html`<p class=\"required-field\">* Required field</p>` : ''}\n ${this.renderToggleOptional('header', headers)}\n <div class=\"${classMap(classes)}\">\n ${headers.map(param => amfParameters.parameterTemplate(param))}\n ${allowCustom ? this.addCustomButtonTemplate('header') : ''}\n </div>\n </section>\n `;\n }\n\n /**\n * @returns The template for the add custom parameter button\n */\n protected addCustomButtonTemplate(type: string): TemplateResult {\n return html`\n <div class=\"add-custom-button\">\n <ui-button\n data-type=\"${type}\"\n title=\"Adds a new custom parameter to the request\"\n @click=\"${this.addCustomHandler}\"\n type=\"outlined\"\n >\n <ui-icon icon=\"add\" role=\"presentation\"></ui-icon>\n Add custom\n </ui-button>\n </div>\n `;\n }\n\n /**\n * @return The template for the payload's mime type selector.\n */\n protected mediaTypeSelectorTemplate(): TemplateResult | typeof nothing {\n const { payloads, mimeType } = this;\n if (!payloads || payloads.length === 1) {\n return nothing;\n }\n const mimes = payloads.map(p => p.mediaType);\n let index = mimes.indexOf(mimeType);\n if (index === -1) {\n index = 0;\n }\n\n return html`\n <div class=\"payload-mime-selector\">\n <span id=\"body-mime\" class=\"label-large\">Body media type</span>\n ${mimes.map((item) => html`\n <label class=\"label-large\">\n <ui-radio\n name=\"mediaTypeValue\"\n value=\"${item || ''}\"\n .checked=\"${item === mimeType}\"\n @change=\"${this.handleMediaTypeSelect}\"\n ></ui-radio>\n ${item}\n </label>\n `)}\n </div>\n `;\n }\n\n /**\n * @returns The template for the body editor. \n */\n protected bodyTemplate(): TemplateResult | typeof nothing {\n const { payload } = this;\n if (!payload) {\n return nothing;\n }\n const info = getPayloadValue(payload);\n const mimeType = payload.mediaType;\n let content: TemplateResult;\n if (mimeType === 'application/x-www-form-urlencoded') {\n content = this.formDataEditorTemplate(info, payload.id);\n } else if (mimeType === 'multipart/form-data') {\n content = this.multipartEditorTemplate(info, payload.id);\n } else {\n content = this.rawEditorTemplate(info, payload.id, mimeType);\n }\n return html`\n <section class=\"params-section body\" aria-label=\"HTTP body\">\n <div class=\"section-title\"><span class=\"label\">Body</span></div>\n ${content}\n </section>\n `;\n }\n\n /**\n * @returns The template for the editor that specializes in the URL encoded form data\n */\n protected formDataEditorTemplate(info: PayloadInfo, id: string): TemplateResult {\n const editorModel = info.model;\n const effectiveValue = Array.isArray(editorModel) && editorModel.length ? undefined : info.value;\n return html`\n <http-body-urlencoded-editor \n class=\"body-editor\"\n autoEncode\n .value=\"${ifProperty(effectiveValue)}\"\n .model=\"${ifProperty(editorModel)}\"\n data-payload-id=\"${id}\"\n @change=\"${this.modelBodyEditorChangeHandler}\"\n ></http-body-urlencoded-editor>\n `;\n }\n\n /**\n * @returns The template for the editor that specializes in the multipart form data\n */\n protected multipartEditorTemplate(info: PayloadInfo, id: string): TemplateResult {\n const editorModel = info.model;\n const effectiveValue = Array.isArray(editorModel) && editorModel.length ? undefined : info.value;\n return html`\n <http-body-multipart-editor \n class=\"body-editor\"\n .value=\"${ifProperty(effectiveValue)}\"\n .model=\"${ifProperty(editorModel)}\"\n data-payload-id=\"${id}\"\n @change=\"${this.modelBodyEditorChangeHandler}\"\n ></http-body-multipart-editor>\n `;\n }\n\n /**\n * @returns The template for the editor that specializes in any text data\n */\n protected rawEditorTemplate(info: PayloadInfo, id: string, mimeType?: string): TemplateResult {\n let schemas;\n if (Array.isArray(info.schemas) && info.schemas.length) {\n schemas = info.schemas;\n }\n return html`\n <http-body-text-editor\n class=\"body-editor\" \n .value=\"${info.value as string}\" \n .contentType=\"${mimeType}\"\n .schemas=\"${ifProperty(schemas)}\"\n data-payload-id=\"${id}\"\n @change=\"${this.rawBodyChangeHandler}\"\n ></http-body-text-editor>\n `;\n }\n\n /**\n * @param target The name of the target parameter group.\n * @param params The list of parameters. When all are required or empty it won't render then button.\n * @returns Template for the switch button to toggle visibility of the optional items.\n */\n protected renderToggleOptional(target: string, params: OperationParameter[]): TemplateResult | typeof nothing {\n const { openedOptional = [], allowHideOptional } = this;\n if (!allowHideOptional || !params || !params.length) {\n return nothing;\n }\n const optional = params.some(p => !!p.parameter && !p.parameter.required);\n if (!optional) {\n return nothing;\n }\n const checked = openedOptional.includes(target);\n return html`\n <div class=\"optional-checkbox\">\n <label class=\"label-large\">\n <ui-switch\n class=\"toggle-optional-switch\"\n .checked=\"${checked}\"\n @change=\"${this.handleOptionalToggle}\"\n title=\"Toggles optional parameters\"\n data-target=\"${target}\"\n name=\"toggleOptional\"\n aria-label=\"Toggle optional parameters\"\n ></ui-switch>\n Show optional parameters\n </label>\n </div>\n `;\n }\n\n /**\n * @returns A template for the URL editor.\n */\n protected renderUrlEditor(): TemplateResult | typeof nothing {\n const { urlEditor, url, urlInvalid } = this;\n if (!urlEditor) {\n return nothing;\n }\n return html`\n <div class=\"url-input-wrapper\">\n <ui-text-field \n name=\"url\" \n type=\"url\" \n class=\"url-input\"\n ?invalid=\"${urlInvalid}\"\n required\n invalidText=\"The URL is invalid\"\n .value=\"${url || ''}\"\n @change=\"${this.handleUrlEditorChange}\"\n @blur=\"${this.validateUrl}\"\n label=\"Request URL\"\n ></ui-text-field>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"ApiRequestEditor.element.js","sourceRoot":"","sources":["../../../src/elements/amf/ApiRequestEditor.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { \n uuidV4, \n Headers, \n ApiDefinitions, \n AmfShapes, \n EventUtils, \n Events as CoreEvents,\n Request,\n IRequest,\n IRequestProxyInit,\n HttpRequestKind,\n IProxyResult,\n IRequestLog,\n} from '@api-client/core/build/browser.js';\nimport { ensureContentType, generateHeaders } from \"../../amf/lib/Utils.js\";\nimport { cachePayloadValue, getPayloadValue, PayloadInfo, readCachePayloadValue } from \"../../amf/lib/PayloadUtils.js\";\nimport { applyUrlParameters, applyUrlVariables, computeEndpointUri, applyQueryParamStringToObject } from '../../amf/lib/UrlUtils.js';\nimport { AmfInputParser } from '../../amf/lib/AmfInputParser.js';\nimport * as InputCache from '../../amf/lib/InputCache.js';\nimport { Events } from '../../events/amf/Events.js';\nimport { EventTypes } from '../../events/amf/EventTypes.js';\nimport { EventTypes as UiEventTypes } from '../../events/EventTypes.js';\nimport { OperationParameter, PopulationInfo, SecuritySelectorListItem, ServerType } from '../../amf/types.js';\nimport { Oauth2Credentials } from '../authorization/types.js';\nimport BodyTextEditor from '../http/BodyTextEditor.js';\nimport BodyUrlEncodedEditor from '../http/BodyUrlEncodedEditor.js';\nimport { ifProperty } from '../../directives/if-property.js';\nimport ApiElement from '../ApiElement.js';\nimport type Input from '../../ui/input/Input.js';\nimport type RadioElement from '../../ui/input/RadioElement.js';\nimport { AmfParameters } from '../../amf/lib/AmfParameters.js';\nimport { UiDropdownListSelection } from '../../ui/list/UiDropdownList.js';\nimport { AmfSecurity } from '../../amf/lib/AmfSecurity.js';\nimport { SnackNotifications } from '../../ui/notification/SnackNotifications.js';\nimport '../../define/amf/api-authorization-editor.js';\nimport '../../define/amf/api-server-picker.js';\nimport '../../define/http/http-body-urlencoded-editor.js';\nimport '../../define/http/http-body-multipart-editor.js';\nimport '../../define/http/http-body-text-editor.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-text-field.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-progress.js';\n\nexport const EventCategory = 'API Request editor';\n\n/**\n * @fires amfstoreopget - Dispatched when querying for an operation data\n * @fires amfstoreopgetparent - Dispatched when querying for an operation data for an endpoint\n * @fires amfstoreendpointget - Dispatched when querying for an endpoint data\n * @fires apistoreserverquery - Dispatched when querying for API servers\n * @fires amfstoreapiprotocols - Dispatched when querying for API protocols\n * @fires amfstoreapiversion - Dispatched when querying for API version\n * @fires response - Dispatched when the response was received by the editor.\n */\nexport default class ApiRequestEditor extends ApiElement {\n /** \n * The currently selected media type for the payloads.\n * @attribute\n */\n @property({ type: String, reflect: true, }) mimeType?: string;\n\n /**\n * When set it renders a label with the computed URL.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) urlLabel?: boolean;\n\n /**\n * When set it renders the URL input above the URL parameters.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) urlEditor?: boolean;\n\n /**\n * If set it computes `hasOptional` property and shows checkbox in the\n * form to show / hide optional properties.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) allowHideOptional?: boolean;\n\n /**\n * When set, renders \"add custom\" item button.\n * If the element is to be used without AMF model this should always\n * be enabled. Otherwise users won't be able to add a parameter.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) allowCustom?: boolean;\n\n /**\n * OAuth2 redirect URI.\n * This value **must** be set in order for OAuth 1/2 to work properly.\n * @attribute\n */\n @property({ type: String }) redirectUri?: string;\n\n /**\n * Final request URL including settings like `baseUri`, AMF\n * model settings and user provided parameters.\n * @attribute\n */\n @property({ type: String }) url?: string;\n\n /**\n * Holds the value of the currently selected server\n * Data type: URI\n * @attribute\n */\n @property({ type: String }) serverValue?: string;\n\n /**\n * Holds the type of the currently selected server\n * Values: `server` | `uri` | `custom`\n * @attribute\n */\n @property({ type: String }) serverType?: string;\n\n /**\n * Optional property to set\n * If true, the server selector is not rendered\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) noServerSelector?: boolean;\n\n /**\n * Optional property to set\n * If true, the server selector custom base URI option is rendered\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) allowCustomBaseUri?: boolean;\n \n /**\n * List of credentials source\n */\n @property({ type: Array }) credentialsSource?: Oauth2Credentials[];\n\n /** \n * The domain id key of the selected security\n * @attribute\n */\n @property({ type: String }) selectedSecurity?: string;\n\n /** \n * Optional. The parent endpoint id. When set it uses this value to query for the endpoint\n * instead of querying for a parent through the operation id.\n * Also, when `endpoint` is set and the `endpointId` match then it ignores querying for \n * the endpoint.\n * @attribute\n */\n @property({ type: String }) endpointId?: string;\n\n protected domainIdValue: string | undefined;\n\n /**\n * The domain id (AMF id) of the rendered operation.\n * @attribute\n */\n @property({ type: String, reflect: true })\n get domainId(): string | undefined {\n return this.domainIdValue;\n }\n\n set domainId(value: string | undefined) {\n const old = this.domainIdValue;\n /* istanbul ignore if */\n if (old === value) {\n return;\n }\n this.domainIdValue = value;\n this.requestUpdate('domainId', old);\n this.processDebounce();\n }\n\n protected endpointValue: ApiDefinitions.IApiEndPoint | undefined;\n\n\n get endpoint(): ApiDefinitions.IApiEndPoint | undefined {\n return this.endpointValue;\n }\n\n set endpoint(value: ApiDefinitions.IApiEndPoint | undefined) {\n const old = this.endpointValue;\n if (old === value) {\n return;\n }\n this.endpointValue = value;\n this.requestUpdate();\n this.readUrlData();\n this.notifyChange();\n }\n\n /**\n * The HTTP method name.\n */\n get httpMethod(): string | undefined {\n const op = this.operationValue;\n if (!op) {\n return undefined;\n }\n return op.method;\n }\n\n /**\n * A flag set when the request is being made.\n */\n @state() loadingRequest: boolean | undefined;\n\n protected baseUriValue: string | undefined;\n\n /**\n * A base URI for the API. To be set if RAML spec is missing `baseUri`\n * declaration and this produces invalid URL input. This information\n * is passed to the URL editor that prefixes the URL with `baseUri` value\n * if passed URL is a relative URL.\n * @attribute\n */\n @property({ type: String }) get baseUri(): string | undefined {\n return this.baseUriValue;\n }\n\n set baseUri(value: string | undefined) {\n const old = this.baseUriValue;\n if (old === value) {\n return;\n }\n this.baseUriValue = value;\n this.readUrlData();\n this.requestUpdate('baseUri', old);\n }\n\n protected serversValue: ApiDefinitions.IApiServer[] | undefined;\n\n /**\n * The computed list of servers.\n */\n get servers(): ApiDefinitions.IApiServer[] | undefined {\n return this.serversValue;\n }\n\n protected serverLocalValue: ApiDefinitions.IApiServer | undefined;\n\n get server(): ApiDefinitions.IApiServer | undefined {\n return this.serverLocalValue;\n }\n\n /**\n * This is the final computed value for the baseUri to propagate downwards\n * If baseUri is defined, return baseUri\n * Else, return the selectedServerValue if serverType is not `server`\n */\n get effectiveBaseUri(): string {\n if (this.baseUri) {\n return this.baseUri;\n }\n if (this.serverType !== 'server') {\n return this.serverValue as string;\n }\n return '';\n }\n\n /**\n * @return True when there is not enough servers to render the selector\n */\n get serverSelectorHidden(): boolean {\n const { serversCount = 0, noServerSelector = false, allowCustomBaseUri } = this;\n return noServerSelector || (!allowCustomBaseUri && serversCount < 2);\n }\n\n /** \n * The list of security list items to render.\n * An operation may have multiple security definition in an or/and fashion.\n * This allows to render the selector to pick the current security.\n */\n protected securityList: SecuritySelectorListItem[] | undefined;\n\n /**\n * The security requirement for the operation or undefined.\n */\n get security(): SecuritySelectorListItem[] | undefined {\n const items = this.securityList;\n if (Array.isArray(items) && items.length) {\n return items;\n }\n return undefined;\n }\n\n /**\n * The currently rendered payload, if any.\n */\n get payload(): ApiDefinitions.IApiPayload | undefined {\n const { payloads } = this;\n if (!payloads) {\n return undefined;\n }\n const { mimeType } = this;\n let payload: ApiDefinitions.IApiPayload | undefined;\n if (mimeType) {\n payload = payloads.find(i => i.mediaType === mimeType);\n }\n if (!payload) {\n [payload] = payloads;\n }\n return payload;\n }\n\n /**\n * The list of all possible payloads for this operation.\n */\n get payloads(): ApiDefinitions.IApiPayload[] | undefined {\n const operation = this.operationValue;\n if (!operation) {\n return undefined;\n }\n const { request } = operation;\n if (!request) {\n return undefined;\n }\n const { payloads } = request;\n if (!Array.isArray(payloads) || !payloads.length) {\n return undefined;\n }\n return payloads;\n }\n\n /**\n * @returns API defined base URI (current server + the endpoint)\n */\n get apiBaseUri(): string | undefined {\n const endpoint = this.endpointValue;\n const server = this.serverLocalValue;\n if (!server || !endpoint) {\n return undefined;\n }\n const { path = '' } = endpoint;\n let { url = '' } = server;\n if (url.endsWith('/')) {\n url = url.substr(0, url.length - 1);\n }\n return `${url}${path}`;\n }\n\n protected urlInvalidValue?: boolean;\n\n /**\n * True when the URL input is invalid.\n */\n get urlInvalid(): boolean | undefined {\n return this.urlInvalidValue;\n }\n\n protected protocolsValue: string[] | undefined;\n\n /**\n * The API's protocols.\n */\n get protocols(): string[] | undefined {\n return this.protocolsValue;\n }\n\n protected versionValue: string | undefined;\n\n /**\n * The API's version.\n */\n get version(): string | undefined {\n return this.versionValue;\n }\n\n queryDebouncerTimeout: number;\n\n /** \n * Set when the selection change, this is a JS object created form the \n * supportedOperation definition of the AMF graph.\n */\n protected operationValue?: ApiDefinitions.IApiOperation;\n\n /** \n * The list of parameter groups that are opened when `allowHideOptional` is set.\n */\n openedOptional: string[];\n\n protected debounceValue: unknown;\n\n protected urlSearchRegexpValue: RegExp | undefined;\n\n serversCount?: number;\n\n amfParameters: AmfParameters;\n\n /**\n * This is set while the HTTP request is being executed.\n * It allows to abort the request.\n */\n requestController?: AbortController;\n\n /**\n * @constructor\n */\n constructor() {\n super();\n /** \n * The timeout after which the `queryGraph()` function is called \n * in the debouncer.\n */\n this.queryDebouncerTimeout = 1;\n this.authRedirectChangedHandler = this.authRedirectChangedHandler.bind(this);\n this.populateAnnotatedFieldsHandler = this.populateAnnotatedFieldsHandler.bind(this);\n \n this.openedOptional = [];\n this.amfParameters = new AmfParameters(this);\n this.amfParameters.addEventListener('render', () => this.requestUpdate());\n this.amfParameters.addEventListener('change', () => this.notifyChange());\n this.amfParameters.addEventListener('paramchange', this.paramChangeHandler.bind(this) as EventListener);\n InputCache.registerLocal(this);\n this.graphChangeHandler = this.graphChangeHandler.bind(this);\n this.addEventListener(UiEventTypes.Http.Request.send, this.internalSendHandler.bind(this));\n }\n\n notifyChange(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.processDebounce();\n this.amfParameters.globalCache = true;\n const node = this.eventsTarget;\n node.addEventListener(EventTypes.Store.graphChange, this.graphChangeHandler);\n node.addEventListener(EventTypes.Request.redirectUriChange, this.authRedirectChangedHandler as EventListener);\n node.addEventListener(EventTypes.Request.populateAnnotatedFields, this.populateAnnotatedFieldsHandler as EventListener);\n \n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.debounceValue) {\n clearTimeout(this.debounceValue as number);\n this.debounceValue = undefined;\n }\n const node = this.eventsTarget;\n node.removeEventListener(EventTypes.Store.graphChange, this.graphChangeHandler);\n node.removeEventListener(EventTypes.Request.redirectUriChange, this.authRedirectChangedHandler as EventListener);\n node.removeEventListener(EventTypes.Request.populateAnnotatedFields, this.populateAnnotatedFieldsHandler as EventListener);\n }\n\n /**\n * Handler for the event dispatched by the store when the graph model change.\n */\n protected graphChangeHandler(): void {\n this.processDebounce()\n }\n\n /**\n * Calls the `queryGraph()` function in a debouncer.\n */\n protected processDebounce(): void {\n if (this.debounceValue) {\n clearTimeout(this.debounceValue as number);\n }\n this.debounceValue = setTimeout(() => {\n this.debounceValue = undefined;\n this.processGraph();\n }, this.queryDebouncerTimeout);\n }\n\n /**\n * Reads the URL data from the ApiUrlDataModel library and sets local variables.\n */\n readUrlData(): void {\n this.updateServerParameters();\n this.orderPathParameters()\n this.computeUrlValue();\n }\n\n /**\n * It makes sure that the path parameters are rendered in order (server, endpoint) and in order of occurrence in the URL. \n */\n protected orderPathParameters(): void {\n const params = this.getOrderedPathParams();\n if (!params || !params.length) {\n return;\n }\n const { amfParameters } = this;\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.binding !== 'path');\n amfParameters.parametersValue = amfParameters.parametersValue.concat(params);\n }\n\n protected paramChangeHandler(e: CustomEvent<string>): void {\n this.paramChanged(e.detail);\n }\n\n /**\n * A function to be overwritten by child classes to execute an action when a parameter has changed.\n */\n protected paramChanged(key: string): void {\n this.computeUrlValue();\n this.validateUrl();\n const { amfParameters } = this;\n const param = amfParameters.parametersValue.find(p => p.paramId === key);\n if (param && param.binding === 'header' && (param.parameter.name || '').toLocaleLowerCase() === 'content-type') {\n const value = InputCache.get(this, param.paramId, true) as string;\n this.mimeType = value;\n }\n }\n\n /**\n * Computes the URL value for the current serves, selected server, and endpoint's path.\n */\n protected computeUrlValue(): void {\n const { effectiveBaseUri, server, protocols, version } = this;\n const endpoint = this.endpointValue;\n const result = computeEndpointUri({\n baseUri: effectiveBaseUri,\n server,\n endpoint,\n protocols,\n version,\n forceHttpProtocol: true,\n });\n const { amfParameters } = this;\n const params = amfParameters.parametersValue.map(p => p.parameter);\n const report = AmfInputParser.reportRequestInputs(params, InputCache.getStore(this, true), amfParameters.nilValues);\n let url = applyUrlVariables(result, report.path, true);\n url = applyUrlParameters(url, report.query, true);\n this.url = url;\n }\n\n /**\n * Checks if the current server has variables and update the parameters array\n */\n protected updateServerParameters(): void {\n const { server } = this;\n const source = 'server';\n const { amfParameters } = this;\n // clears previously set request parameters related to server configuration.\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.source !== source);\n if (!server || ['custom', 'uri'].includes(this.serverType || '')) {\n // we don't need to compute server variables for a custom URLs.\n return;\n }\n if (Array.isArray(server.variables) && server.variables.length) {\n server.variables.forEach((param) => {\n const item: OperationParameter = {\n binding: param.binding || '',\n paramId: param.id,\n parameter: param,\n source,\n };\n if (param.schema) {\n item.schema = param.schema;\n item.schemaId = param.schema.id;\n }\n amfParameters.parametersValue.push(item);\n });\n }\n }\n\n /**\n * Checks if the current endpoint has variables and requests them when needed.\n */\n protected updateEndpointParameters(): void {\n const source = 'endpoint';\n const { amfParameters } = this;\n // clears previously set request parameters related to server configuration.\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.source !== source);\n const endpoint = this.endpointValue;\n if (!endpoint) {\n // we don't need to compute endpoint variables for a custom URLs.\n return;\n }\n if (Array.isArray(endpoint.parameters) && endpoint.parameters.length) {\n endpoint.parameters.forEach((param) => {\n const item: OperationParameter = {\n binding: param.binding || '',\n paramId: param.id,\n parameter: param,\n source,\n };\n if (param.schema) {\n item.schema = param.schema;\n item.schemaId = param.schema.id;\n }\n amfParameters.parametersValue.push(item);\n });\n }\n }\n\n reset(): void {\n this.securityList = undefined;\n this.mimeType = undefined;\n this.amfParameters.parametersValue = [];\n }\n\n /**\n * Processes the selection of the domain id for an operation.\n */\n async processGraph(): Promise<void> {\n await this.queryEndpoint();\n await this.queryOperation();\n await this.queryServers();\n await this.queryProtocols();\n this.processEndpoint();\n this.processOperation();\n this.processSecurity();\n this.processPayload();\n this.computeUrlValue();\n this.readUrlData();\n this.notifyChange();\n }\n\n /**\n * Queries the store for the operation data, when needed.\n */\n async queryOperation(): Promise<void> {\n const { domainId } = this;\n if (!domainId || domainId === 'undefined') {\n // this.operationValue = undefined;\n return;\n }\n if (this.operationValue && this.operationValue.id === domainId) {\n // in case the operation model was provided via the property setter.\n return;\n }\n try {\n const endpointId = this.endpointValue && this.endpointValue.id;\n const info = await Events.Operation.get(this, domainId, endpointId);\n this.operationValue = info;\n } catch (e) {\n const ex = e as Error;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API operation data: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Queries the store for the endpoint data.\n * @returns {Promise<void>}\n */\n async queryEndpoint(): Promise<void> {\n const { domainId, endpointId } = this;\n if (!domainId || domainId === 'undefined') {\n // this.endpointValue = undefined;\n return;\n }\n if (this.endpointValue && this.endpointValue.id === endpointId) {\n // in case the endpoint model was provided via the property setter.\n return;\n }\n this.endpointValue = undefined;\n try {\n const info = await (endpointId ? Events.Endpoint.get(this, endpointId) : Events.Operation.getParent(this, domainId));\n this.endpointValue = info;\n } catch (e) {\n const ex = e as Error;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API endpoint data: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Queries for the current servers value.\n */\n async queryServers(): Promise<void> {\n const { domainId } = this;\n const endpointId = this.endpointValue && this.endpointValue.id;\n try {\n const info = await Events.Server.query(this, {\n endpointId,\n methodId: domainId,\n });\n this.serversValue = info || undefined;\n } catch (e) {\n const ex = e as Error;\n this.serversValue = undefined;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API servers: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Queries the API store for the API protocols list.\n */\n async queryProtocols(): Promise<void> {\n this.protocolsValue = undefined;\n try {\n const info = await Events.Api.protocols(this);\n this.protocolsValue = info;\n } catch (e) {\n const ex = e as Error;\n Events.Telemetry.exception(this, ex.message, false);\n Events.Reporting.error(this, ex, `Unable to query for API protocols list: ${ex.message}`, this.localName);\n }\n }\n\n /**\n * Searches for the current operation endpoint and sets variables from the endpoint definition.\n */\n protected processEndpoint(): void {\n this.updateEndpointParameters();\n this.computeUrlRegexp();\n }\n\n /**\n * Collects operations input parameters into a single object.\n */\n protected processOperation(): void {\n const source = 'request';\n const operation = this.operationValue;\n const { amfParameters } = this;\n // clears previously set request parameters (query, path, headers)\n amfParameters.parametersValue = amfParameters.parametersValue.filter(item => item.source !== source);\n if (!operation) {\n return;\n }\n const { request } = operation;\n if (!request) {\n return;\n }\n const uri: ApiDefinitions.IApiParameter[] = [];\n if (Array.isArray(request.uriParameters)) {\n // OAS has this weird thing where you can define URI parameters on the endpoint and the operation.\n // this eliminates the duplicates and merges the schemas\n request.uriParameters.forEach((param) => {\n if (!param.paramName) {\n uri.push(param);\n return;\n }\n const index = amfParameters.parametersValue.findIndex(p => p.binding === 'path' && p.parameter.paramName === param.paramName);\n if (index !== -1) {\n // remove the parameter that is being replaced by the local definition\n amfParameters.parametersValue.splice(index, 1);\n }\n uri.push(param);\n });\n }\n this.appendToParams(uri, source);\n this.appendToParams(request.queryParameters, source);\n this.appendToParams(request.headers, source);\n this.appendToParams(request.cookieParameters, source);\n }\n\n /**\n * Processes security information for the UI.\n */\n protected processSecurity(): void {\n const operation = this.operationValue;\n if (!operation) {\n return;\n }\n const { security } = operation;\n this.securityList = AmfSecurity.readSecurityList(security);\n const [first] = this.securityList;\n this.selectedSecurity = first ? first.security.id : undefined;\n }\n\n /**\n * Makes sure the correct mime type is selected for the current selection.\n */\n protected processPayload(): void {\n const operation = this.operationValue;\n if (!operation) {\n return;\n }\n const { request } = operation;\n if (!request) {\n return;\n }\n const { payloads = [] } = request;\n if (!payloads.length) {\n return;\n }\n let mime = this.mimeType;\n \n if (mime) {\n const has = payloads.find(p => p.mediaType === mime);\n if (!has) {\n mime = undefined;\n }\n }\n if (!mime) {\n const first = payloads.find(p => p.mediaType);\n if (first) {\n mime = first.mediaType;\n }\n }\n this.mimeType = mime;\n }\n\n /**\n * Appends a list of parameters to the list of rendered parameters\n */\n protected appendToParams(list: ApiDefinitions.IApiParameter[], source: string): void {\n const params = this.amfParameters.parametersValue;\n if (Array.isArray(list)) {\n list.forEach((param) => {\n params.push({\n paramId: param.id,\n parameter: param,\n binding: param.binding || '',\n source,\n schema: param.schema,\n schemaId: param.schema && param.schema.id ? param.schema.id : undefined,\n });\n });\n }\n }\n\n /**\n * A handler for the change event dispatched by the `raw` editor.\n */\n protected rawBodyChangeHandler(e: Event): void {\n const editor = e.target as BodyTextEditor;\n const { value, dataset } = editor;\n const { payloadId } = dataset;\n if (!payloadId) {\n return;\n }\n cachePayloadValue(payloadId, value as string);\n }\n\n /**\n * A handler for the change event dispatched by the \n * `urlEncode` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected modelBodyEditorChangeHandler(e: Event): void {\n const editor = e.target as BodyUrlEncodedEditor;\n const { value, model, dataset } = editor;\n const { payloadId } = dataset;\n if (!payloadId) {\n return;\n }\n cachePayloadValue(payloadId, value as string, model);\n }\n\n protected handleAuthSelect(e: CustomEvent<UiDropdownListSelection>): void {\n const { item } = e.detail;\n const { id } = item.dataset;\n if (!id) {\n return;\n }\n this.selectedSecurity = id;\n this.requestUpdate();\n }\n\n /**\n * Handles send button click.\n * Depending on authorization validity it either sends the\n * request or forces authorization and sends the request.\n */\n protected sendHandler(): void {\n this.execute();\n }\n\n /**\n * To be called when the user want to execute the request but\n * authorization is invalid (missing values).\n * This function brings the auth panel to front and displays error toast\n */\n async authAndExecute(): Promise<void> {\n const { shadowRoot } = this;\n if (!shadowRoot) {\n throw new Error(`Invalid state. The element is not initialized.`);\n }\n\n const panel = shadowRoot.querySelector('api-authorization-editor');\n if (!panel) {\n throw new Error(`Invalid state. The authorization editor element was removed from the DOM.`);\n }\n await panel.authorize();\n const valid = panel.validate();\n if (valid) {\n this.execute();\n }\n }\n\n protected async proxyRequest(init: IRequestProxyInit): Promise<IProxyResult<IRequestLog> | undefined> {\n let result: IProxyResult<IRequestLog> | undefined;\n try {\n result = await CoreEvents.Transport.Core.request(init, this);\n } catch (e) {\n // ...\n }\n return result;\n }\n\n /**\n * Proxies the request to the endpoint using the core libraries.\n */\n async execute(): Promise<void> {\n if (this.loadingRequest) {\n this.abort();\n }\n Events.Telemetry.event(this, {\n category: EventCategory,\n action: 'request-execute',\n label: 'true'\n });\n const request = await this.serialize();\n const ctrl = new AbortController();\n this.requestController = ctrl;\n const init: IRequestProxyInit = {\n kind: HttpRequestKind,\n request: request.expects,\n authorization: request.authorization,\n signal: ctrl.signal,\n };\n this.loadingRequest = true;\n const result = await this.proxyRequest(init);\n this.loadingRequest = false;\n if (!result) {\n if (ctrl.signal.aborted) {\n return;\n }\n const message = `The request was not sent. Proxy not available.`;\n SnackNotifications.notify(message, { timeout: 2000, close: true });\n throw new Error(message);\n }\n this.dispatchEvent(new CustomEvent<IRequestLog>('response', { detail: result.result }));\n }\n\n /**\n * Uses the `requestController` to abort the ongoing HTTP request.\n */\n abort(): void {\n Events.Telemetry.event(this, {\n category: EventCategory,\n action: 'request-abort',\n label: 'true'\n });\n const { requestController } = this;\n if (!requestController) {\n return;\n }\n requestController.abort();\n this.requestController = undefined;\n this.loadingRequest = false;\n }\n\n /**\n * Event handler for abort click.\n */\n protected abortHandler(): void {\n this.abort();\n }\n\n /**\n * Serializes the state of the request editor into the `ApiConsoleRequest` object.\n */\n async serialize(): Promise<IRequest> {\n const op = this.operationValue;\n if (!op) {\n throw new Error(`No API operation defined on the editor`);\n }\n const method = (op.method || 'get').toUpperCase();\n const params: ApiDefinitions.IApiParameter[] = [];\n const { amfParameters } = this;\n amfParameters.parametersValue.forEach((item) => {\n const { parameter, enabled } = item;\n if (enabled === false) {\n return;\n }\n params.push(parameter);\n });\n const report = AmfInputParser.reportRequestInputs(params, InputCache.getStore(this, true), amfParameters.nilValues);\n const serverUrl = computeEndpointUri({\n baseUri: this.effectiveBaseUri,\n server: this.server,\n endpoint: this.endpointValue,\n protocols: this.protocols,\n forceHttpProtocol: true,\n });\n let url = applyUrlVariables(serverUrl, report.path, true);\n url = applyUrlParameters(url, report.query, true);\n const headers = generateHeaders(report.header);\n\n const instance = new Request();\n const expects = instance.getExpects();\n expects.method = method;\n expects.url = url;\n expects.headers = headers;\n \n if (!['GET', 'HEAD'].includes(method)) {\n let body: string | FormData | Blob | File | Buffer | ArrayBuffer | undefined;\n const { payload } = this;\n if (payload) {\n const info = readCachePayloadValue(payload.id);\n if (info && info.value) {\n body = info.value;\n }\n }\n if (body instanceof FormData) {\n const parser = new Headers(expects.headers);\n parser.delete('content-type');\n expects.headers = parser.toString();\n } else if (payload) {\n expects.headers = ensureContentType(expects.headers || '', payload.mediaType);\n }\n if (typeof body !== 'undefined') {\n await expects.writePayload(body);\n }\n }\n\n const result = instance.toJSON();\n\n const authElement = this.shadowRoot?.querySelector('api-authorization-editor');\n if (authElement) {\n const auth = authElement.serialize();\n result.authorization = auth;\n }\n return result;\n }\n\n /**\n * Handler for the `oauth2-redirect-uri-changed` custom event. Changes\n * the `redirectUri` property.\n */\n protected authRedirectChangedHandler(e: CustomEvent): void {\n this.redirectUri = e.detail.value;\n }\n\n /**\n * Handle event for populating annotated fields in the editor.\n */\n protected populateAnnotatedFieldsHandler(e: CustomEvent): void {\n const populationInfoArray: PopulationInfo[] = e.detail.values;\n const { parametersValue = [] } = this.amfParameters;\n const allAnnotated = parametersValue.filter(param => Array.isArray(param.parameter.customDomainProperties) && !!param.parameter.customDomainProperties.length);\n let update = false;\n populationInfoArray.forEach(({ annotationName, annotationValue, fieldValue }) => {\n allAnnotated.forEach((item) => {\n const { parameter, paramId } = item;\n const hasAnnotation = (parameter.customDomainProperties || []).some((prop) => prop.name === annotationName && (prop.extension as AmfShapes.IApiScalarNode).value === annotationValue);\n if (!hasAnnotation) {\n return;\n }\n InputCache.set(this, paramId, fieldValue, true);\n update = true;\n });\n });\n if (update) {\n this.requestUpdate();\n }\n /* @TODO populate values for the security schema. */\n }\n\n /**\n * Computes a current server value for selection made in the server selector.\n */\n protected updateServer(): void {\n const { serverValue, serverType, servers = [] } = this;\n if (serverType !== 'server') {\n this.serverLocalValue = undefined;\n } else {\n this.serverLocalValue = servers.find(server => server.url === serverValue);\n }\n this.readUrlData();\n this.computeUrlRegexp();\n }\n\n /**\n * Handler for the change dispatched from the server selector.\n */\n protected serverCountHandler(e: CustomEvent): void {\n const { value = 0 } = e.detail;\n this.serversCount = value;\n this.updateServer();\n this.requestUpdate();\n }\n\n /**\n * Handler for the change dispatched from the server selector.\n */\n protected serverHandler(e: CustomEvent): void {\n const { value, type } = e.detail;\n this.serverType = type;\n this.serverValue = value;\n this.updateServer();\n this.computeUrlRegexp();\n }\n\n /**\n * Computes a regexp for the base URI defined in the server to process URL input change\n * and set the `.urlSearchRegexpValue` value.\n * This should be computed only when a server and en endpoint change.\n */\n protected computeUrlRegexp(): void {\n const { effectiveBaseUri } = this;\n let value;\n if (effectiveBaseUri) {\n value = computeEndpointUri({\n baseUri: effectiveBaseUri,\n endpoint: this.endpointValue,\n forceHttpProtocol: true,\n });\n } else {\n value = this.apiBaseUri;\n }\n if (!value) {\n this.urlSearchRegexpValue = undefined;\n } else {\n value = value.replace('?', '\\\\?');\n value = value.replace(/(\\.|\\/)/g, '\\\\$1');\n value = value.replace(/{[\\w\\\\+]+}/g, '([a-zA-Z0-9\\\\$\\\\-_\\\\.~\\\\+!\\'\\\\(\\\\)\\\\*\\\\{\\\\}]+)');\n value += '.*';\n this.urlSearchRegexpValue = new RegExp(value);\n }\n }\n\n protected handleMediaTypeSelect(e: Event): void {\n const node = e.target as RadioElement;\n const { value } = node;\n this.mimeType = value;\n const ctParam = this.amfParameters.parametersValue.find(p => p.binding === 'header' && (p.parameter.name || '').toLocaleLowerCase() === 'content-type');\n if (ctParam) {\n InputCache.set(this, ctParam.paramId, value, true);\n }\n }\n\n protected async notifyResizeAfterUpdate(): Promise<void> {\n await this.updateComplete;\n this.dispatchEvent(new Event('resize', { bubbles: true, composed: true }));\n }\n\n /**\n * Toggles optional parameter groups.\n */\n protected handleOptionalToggle(e: Event): void {\n const node = e.target as HTMLElement;\n const { target } = node.dataset;\n if (!target) {\n return;\n }\n if (!Array.isArray(this.openedOptional)) {\n this.openedOptional = [];\n }\n if (this.openedOptional.includes(target)) {\n const index = this.openedOptional.indexOf(target);\n this.openedOptional.splice(index, 1);\n } else {\n this.openedOptional.push(target);\n }\n this.requestUpdate();\n this.notifyResizeAfterUpdate();\n }\n\n /**\n * When enabled it adds a new custom parameter to the request section defined in the source button.\n */\n protected addCustomHandler(e: Event): void {\n const button = e.currentTarget as HTMLElement;\n const { type } = button.dataset;\n if (!['query', 'header'].includes(type as string)) {\n return;\n }\n const id = uuidV4();\n const param: OperationParameter = {\n binding: type || '',\n source: 'custom',\n paramId: id,\n parameter: {\n id,\n required: true,\n binding: type,\n name: '',\n examples: [],\n payloads: [],\n customDomainProperties: [],\n types: [],\n },\n };\n this.amfParameters.parametersValue.push(param);\n this.requestUpdate();\n }\n\n /**\n * Updates path/query model from user input.\n *\n * @param e The change event\n */\n protected handleUrlEditorChange(e: Event): void {\n const { value } = e.target as Input;\n let matches;\n const uriRegexp = this.urlSearchRegexpValue;\n // parameters must be in order from server to the endpoint\n const pathParams = this.getOrderedPathParams();\n let changed = false;\n if (pathParams.length && uriRegexp) {\n matches = value.match(uriRegexp);\n if (matches) {\n matches.shift();\n changed = this.applyUriValues(matches, pathParams);\n }\n }\n const matchesNew = value.match(/[^&?]*?=[^&?]*/g);\n if (matchesNew) {\n const params: Record<string, string|string[]> = {};\n matchesNew.forEach((item) => applyQueryParamStringToObject(item, params));\n const qpChanged = this.applyQueryParamsValues(params);\n if (!changed) {\n changed = qpChanged;\n }\n }\n this.url = value;\n this.validateUrl();\n this.notifyChange();\n this.requestUpdate();\n }\n\n /**\n * Sets the value of `.urlInvalidValue` and therefore `urlInvalid` properties.\n */\n validateUrl(): void {\n this.urlInvalidValue = !this.readUrlValidity();\n this.requestUpdate();\n }\n\n /**\n * Validates the current URL value.\n * @returns True when the current URL is a valid URL.\n */\n protected readUrlValidity(): boolean {\n const { url } = this;\n if (!url) {\n return false;\n }\n if (typeof url !== 'string') {\n return false;\n }\n if (url.indexOf('{') !== -1 && url.indexOf('}') !== -1) {\n return false;\n }\n const { shadowRoot } = this;\n if (!shadowRoot) {\n return true;\n }\n const inputElement = shadowRoot.querySelector('.url-input') as Input;\n if (inputElement) {\n return inputElement.reportValidity();\n }\n return true;\n }\n\n /**\n * Reads the ordered list of path parameters from the server and the endpoint.\n */\n protected getOrderedPathParams(): OperationParameter[] {\n const result: OperationParameter[] = [];\n const { effectiveBaseUri } = this;\n let url;\n if (effectiveBaseUri) {\n url = computeEndpointUri({\n baseUri: effectiveBaseUri,\n endpoint: this.endpointValue,\n forceHttpProtocol: true,\n });\n } else {\n url = this.apiBaseUri;\n }\n if (!url) {\n return result;\n }\n const matches = url.match(/{[\\w\\\\+]+}/g);\n if (!matches) {\n return result;\n }\n const all = this.amfParameters.parametersValue;\n matches.forEach((tpl) => {\n const name = tpl.substr(1, tpl.length - 2);\n const param = all.find(p => p.binding === 'path' && p.parameter.name === name);\n if (param) {\n result.push(param);\n }\n });\n return result;\n }\n\n /**\n * Applies values from the `values` array to the uri parameters which names are in the `names` array.\n * Both lists are ordered list of parameters.\n *\n * @param values Values for the parameters\n * @param params List of path parameters.\n * @returns True when any parameter was changed.\n */\n protected applyUriValues(values: string[], params: OperationParameter[]): boolean {\n let changed = false;\n for (let i = 0, len = params.length; i < len; i++) {\n const value = values[i];\n if (value && value[0] === '{') {\n // This is still a variable\n continue;\n }\n const param = params[i];\n if (InputCache.get(this, param.paramId, true) !== value) {\n InputCache.set(this, param.paramId, value, true);\n changed = true;\n }\n }\n return changed;\n }\n\n /**\n * Applies query parameters values to the render list.\n *\n * @returns True when any parameter was changed.\n */\n protected applyQueryParamsValues(map: Record<string, string|string[]>): boolean {\n if (!map) {\n return false;\n }\n const keys = Object.keys(map);\n let changed = false;\n keys.forEach((key) => {\n const value = map[key];\n if (value && value[0] === '{') {\n // This is still a variable\n return;\n }\n const param = this.amfParameters.parametersValue.find(p => p.binding === 'query' && p.parameter.name === key);\n if (param) {\n if (InputCache.get(this, param.paramId, true) !== value) {\n InputCache.set(this, param.paramId, value, true);\n changed = true;\n }\n }\n });\n return changed;\n }\n\n protected internalSendHandler(e: Event): void {\n e.stopPropagation();\n this.execute();\n }\n\n /**\n * A handler for the change event on the authorization panel.\n */\n protected authorizationChangeHandler(): void {\n this.notifyChange();\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"content\">\n ${this.serverSelectorTemplate()}\n ${this.urlLabelTemplate()}\n ${this.renderUrlEditor()}\n ${this.parametersTemplate()}\n ${this.headersTemplate()}\n ${this.mediaTypeSelectorTemplate()}\n ${this.bodyTemplate()}\n ${this.authorizationTemplate()}\n ${this.formActionsTemplate()}\n </div>`;\n }\n\n /**\n * @return Template for the request URL label.\n */\n protected urlLabelTemplate(): TemplateResult | typeof nothing {\n const { urlLabel, url } = this;\n if (!urlLabel) {\n return nothing;\n }\n return html`<div class=\"url-label text-selectable\" title=\"Current request URL\">${url}</div>`;\n }\n\n protected authorizationTemplate(): TemplateResult | typeof nothing {\n const { security } = this;\n if (!security) {\n return nothing;\n }\n const { selectedSecurity, redirectUri, credentialsSource } = this;\n const rendered = security.find(i => i.security.id === selectedSecurity);\n if (!rendered) {\n return nothing;\n }\n return html`\n <section class=\"authorization params-section\">\n <div class=\"section-title\"><span class=\"label\">Credentials</span></div>\n ${security.length > 1 ? this.authorizationSelectorTemplate(security, rendered) : ''}\n <api-authorization-editor \n .security=\"${rendered.security}\"\n .oauth2RedirectUri=\"${redirectUri}\"\n .credentialsSource=\"${credentialsSource}\"\n @change=\"${this.authorizationChangeHandler}\"></api-authorization-editor>\n </section>\n `;\n }\n\n /**\n * @returns The template for the security drop down selector.\n */\n protected authorizationSelectorTemplate(security: SecuritySelectorListItem[], selected: SecuritySelectorListItem): TemplateResult {\n const finalValue = selected.labels.join(', ');\n return html`\n <ui-dropdown-list\n class=\"authorization-selector\"\n closeOnOutsideClick\n matchTriggerWidth\n @select=\"${this.handleAuthSelect}\"\n >\n <ui-text-field \n class=\"dropdown-trigger\" \n label=\"Authorization method\" \n readOnly \n name=\"authorization\"\n .value=\"${finalValue || ''}\" \n @select=\"${EventUtils.cancelEvent}\"\n >\n <ui-icon icon=\"arrowDropDown\" role=\"presentation\" slot=\"suffix\"></ui-icon>\n </ui-text-field>\n <ui-list slot=\"dropdown\" role=\"menu\" selector=\"[data-value]\" selectActive>\n ${security.map((item) => this.authorizationSelectorItemTemplate(item))}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n /**\n * @returns The template for the security drop down selector list item.\n */\n protected authorizationSelectorItemTemplate(info: SecuritySelectorListItem): TemplateResult {\n const { labels, types, security } = info;\n \n const label = labels.join(', ');\n const type = types.join(', ');\n const single = !type;\n return html`\n <ui-list-item \n role=\"menuitem\" \n lines=\"${single ? 'one' : 'two'}\"\n data-id=\"${security.id}\"\n >\n ${label}\n ${!single ? html`<div slot=\"supporting-text\">${type}</div>` : ''}\n </ui-list-item>\n `;\n }\n\n protected formActionsTemplate(): TemplateResult {\n const loading = this.loadingRequest;\n return html`\n <div class=\"action-bar\">\n ${loading ? this.abortButtonTemplate() : this.sendButtonTemplate()}\n <ui-progress ?hidden=\"${!loading}\" indeterminate class=\"request-progress\"></ui-progress>\n </div>`;\n }\n\n /**\n * Creates a template for the \"abort\" button.\n */\n protected abortButtonTemplate(): TemplateResult {\n return html`\n <ui-button\n class=\"send-button abort\"\n type=\"filled\"\n @click=\"${this.abortHandler}\"\n >Abort</ui-button>`;\n }\n\n /**\n * Creates a template for the \"send\" or \"auth and send\" button.\n */\n protected sendButtonTemplate(): TemplateResult {\n return html`\n <ui-button\n class=\"send-button\"\n type=\"filled\"\n @click=\"${this.sendHandler}\"\n >Send</ui-button>`;\n }\n\n /**\n * @return A template for the server selector\n */\n protected serverSelectorTemplate(): TemplateResult {\n const {\n serverType,\n serverValue,\n allowCustomBaseUri,\n serverSelectorHidden,\n domainId,\n } = this;\n return html`\n <api-server-picker\n ?hidden=\"${serverSelectorHidden}\"\n ?custom=\"${allowCustomBaseUri}\"\n .value=\"${serverValue}\"\n .type=\"${serverType as ServerType}\"\n .domainId=\"${domainId}\"\n domainType=\"operation\"\n auto\n @serverscountchanged=\"${this.serverCountHandler}\"\n @apiserverchanged=\"${this.serverHandler}\"\n >\n <slot name=\"custom-base-uri\" slot=\"custom-base-uri\"></slot>\n </api-server-picker>`;\n }\n\n /**\n * @return \n */\n protected parametersTemplate(): TemplateResult | typeof nothing {\n const qp: OperationParameter[] = [];\n const path: OperationParameter[] = [];\n // NOTE, the \"* Required field\" has been added after the a11y audit of API Console.\n let hasRequired = false;\n const { amfParameters } = this;\n amfParameters.parametersValue.forEach((item) => {\n if (!hasRequired && item.parameter && item.parameter.required) {\n hasRequired = true;\n }\n if (item.binding === 'query') {\n qp.push(item);\n } else if (item.binding === 'path') {\n path.push(item);\n }\n });\n const { allowCustom, openedOptional = [] } = this;\n if (!allowCustom && !qp.length && !path.length) {\n return nothing;\n }\n const pathOptions = Object.freeze({ required: true });\n const queryClasses = {\n 'query-params': true,\n 'hide-optional': !!this.allowHideOptional && !openedOptional.includes('query'),\n };\n return html`\n <section class=\"params-section parameter\">\n <div class=\"section-title\"><span class=\"label\">Parameters</span></div>\n ${hasRequired ? html`<p class=\"required-field\">* Required field</p>` : ''}\n <div class=\"path-params\">\n ${path.map(param => amfParameters.parameterTemplate(param, pathOptions))}\n </div>\n <div class=\"${classMap(queryClasses)}\">\n ${this.renderToggleOptional('query', qp)}\n ${qp.map(param => amfParameters.parameterTemplate(param))}\n ${allowCustom ? this.addCustomButtonTemplate('query') : ''}\n </div>\n </section>\n `;\n }\n\n protected headersTemplate(): TemplateResult | typeof nothing {\n const headers: OperationParameter[] = [];\n // NOTE, the \"* Required field\" has been added after the a11y audit of API Console.\n let hasRequired = false;\n const { amfParameters } = this;\n amfParameters.parametersValue.forEach((item) => {\n if (item.binding === 'header') {\n headers.push(item);\n if (!hasRequired && item.parameter && item.parameter.required) {\n hasRequired = true;\n }\n }\n });\n const { allowCustom, openedOptional = [] } = this;\n if (!allowCustom && !headers.length) {\n return nothing;\n }\n const classes = {\n 'header-params': true,\n 'hide-optional': !!this.allowHideOptional && !openedOptional.includes('header'),\n };\n return html`\n <section class=\"params-section header\" aria-label=\"HTTP headers\">\n <div class=\"section-title\"><span class=\"label\">Headers</span></div>\n ${hasRequired ? html`<p class=\"required-field\">* Required field</p>` : ''}\n ${this.renderToggleOptional('header', headers)}\n <div class=\"${classMap(classes)}\">\n ${headers.map(param => amfParameters.parameterTemplate(param))}\n ${allowCustom ? this.addCustomButtonTemplate('header') : ''}\n </div>\n </section>\n `;\n }\n\n /**\n * @returns The template for the add custom parameter button\n */\n protected addCustomButtonTemplate(type: string): TemplateResult {\n return html`\n <div class=\"add-custom-button\">\n <ui-button\n data-type=\"${type}\"\n title=\"Adds a new custom parameter to the request\"\n @click=\"${this.addCustomHandler}\"\n type=\"outlined\"\n >\n <ui-icon icon=\"add\" role=\"presentation\"></ui-icon>\n Add custom\n </ui-button>\n </div>\n `;\n }\n\n /**\n * @return The template for the payload's mime type selector.\n */\n protected mediaTypeSelectorTemplate(): TemplateResult | typeof nothing {\n const { payloads, mimeType } = this;\n if (!payloads || payloads.length === 1) {\n return nothing;\n }\n const mimes = payloads.map(p => p.mediaType);\n let index = mimes.indexOf(mimeType);\n if (index === -1) {\n index = 0;\n }\n\n return html`\n <div class=\"payload-mime-selector\">\n <span id=\"body-mime\" class=\"label-large\">Body media type</span>\n ${mimes.map((item) => html`\n <label class=\"label-large\">\n <ui-radio\n name=\"mediaTypeValue\"\n value=\"${item || ''}\"\n .checked=\"${item === mimeType}\"\n @change=\"${this.handleMediaTypeSelect}\"\n ></ui-radio>\n ${item}\n </label>\n `)}\n </div>\n `;\n }\n\n /**\n * @returns The template for the body editor. \n */\n protected bodyTemplate(): TemplateResult | typeof nothing {\n const { payload } = this;\n if (!payload) {\n return nothing;\n }\n const info = getPayloadValue(payload);\n const mimeType = payload.mediaType;\n let content: TemplateResult;\n if (mimeType === 'application/x-www-form-urlencoded') {\n content = this.formDataEditorTemplate(info, payload.id);\n } else if (mimeType === 'multipart/form-data') {\n content = this.multipartEditorTemplate(info, payload.id);\n } else {\n content = this.rawEditorTemplate(info, payload.id, mimeType);\n }\n return html`\n <section class=\"params-section body\" aria-label=\"HTTP body\">\n <div class=\"section-title\"><span class=\"label\">Body</span></div>\n ${content}\n </section>\n `;\n }\n\n /**\n * @returns The template for the editor that specializes in the URL encoded form data\n */\n protected formDataEditorTemplate(info: PayloadInfo, id: string): TemplateResult {\n const editorModel = info.model;\n const effectiveValue = Array.isArray(editorModel) && editorModel.length ? undefined : info.value;\n return html`\n <http-body-urlencoded-editor \n class=\"body-editor\"\n autoEncode\n .value=\"${ifProperty(effectiveValue)}\"\n .model=\"${ifProperty(editorModel)}\"\n data-payload-id=\"${id}\"\n @change=\"${this.modelBodyEditorChangeHandler}\"\n ></http-body-urlencoded-editor>\n `;\n }\n\n /**\n * @returns The template for the editor that specializes in the multipart form data\n */\n protected multipartEditorTemplate(info: PayloadInfo, id: string): TemplateResult {\n const editorModel = info.model;\n const effectiveValue = Array.isArray(editorModel) && editorModel.length ? undefined : info.value;\n return html`\n <http-body-multipart-editor \n class=\"body-editor\"\n .value=\"${ifProperty(effectiveValue)}\"\n .model=\"${ifProperty(editorModel)}\"\n data-payload-id=\"${id}\"\n @change=\"${this.modelBodyEditorChangeHandler}\"\n ></http-body-multipart-editor>\n `;\n }\n\n /**\n * @returns The template for the editor that specializes in any text data\n */\n protected rawEditorTemplate(info: PayloadInfo, id: string, mimeType?: string): TemplateResult {\n let schemas;\n if (Array.isArray(info.schemas) && info.schemas.length) {\n schemas = info.schemas;\n }\n return html`\n <http-body-text-editor\n class=\"body-editor\" \n .value=\"${info.value as string}\" \n .contentType=\"${mimeType}\"\n .schemas=\"${ifProperty(schemas)}\"\n data-payload-id=\"${id}\"\n @change=\"${this.rawBodyChangeHandler}\"\n ></http-body-text-editor>\n `;\n }\n\n /**\n * @param target The name of the target parameter group.\n * @param params The list of parameters. When all are required or empty it won't render then button.\n * @returns Template for the switch button to toggle visibility of the optional items.\n */\n protected renderToggleOptional(target: string, params: OperationParameter[]): TemplateResult | typeof nothing {\n const { openedOptional = [], allowHideOptional } = this;\n if (!allowHideOptional || !params || !params.length) {\n return nothing;\n }\n const optional = params.some(p => !!p.parameter && !p.parameter.required);\n if (!optional) {\n return nothing;\n }\n const checked = openedOptional.includes(target);\n return html`\n <div class=\"optional-checkbox\">\n <label class=\"label-large\">\n <ui-switch\n class=\"toggle-optional-switch\"\n .checked=\"${checked}\"\n @change=\"${this.handleOptionalToggle}\"\n title=\"Toggles optional parameters\"\n data-target=\"${target}\"\n name=\"toggleOptional\"\n aria-label=\"Toggle optional parameters\"\n ></ui-switch>\n Show optional parameters\n </label>\n </div>\n `;\n }\n\n /**\n * @returns A template for the URL editor.\n */\n protected renderUrlEditor(): TemplateResult | typeof nothing {\n const { urlEditor, url, urlInvalid } = this;\n if (!urlEditor) {\n return nothing;\n }\n return html`\n <div class=\"url-input-wrapper\">\n <ui-text-field \n name=\"url\" \n type=\"url\" \n class=\"url-input\"\n ?invalid=\"${urlInvalid}\"\n required\n invalidText=\"The URL is invalid\"\n .value=\"${url || ''}\"\n @change=\"${this.handleUrlEditorChange}\"\n @blur=\"${this.validateUrl}\"\n label=\"Request URL\"\n ></ui-text-field>\n </div>\n `;\n }\n}\n"]}
@@ -22,19 +22,9 @@ import '../../define/http/http-snippets.js';
22
22
  * @fires tryit
23
23
  */
24
24
  export default class ApiResourceDocument extends ApiDocumentationBase {
25
- endpointValue;
26
- serverInternal;
27
- serversValue;
28
- operationIdValue;
29
- serverIdValue;
30
- baseUriValue;
31
- urlValue;
32
- protocolsValue;
33
- snippetsInternal;
34
25
  get snippets() {
35
26
  return { ...this.snippetsInternal };
36
27
  }
37
- processSelectionTimeout;
38
28
  get endpoint() {
39
29
  return this.endpointValue;
40
30
  }
@@ -149,71 +139,6 @@ export default class ApiResourceDocument extends ApiDocumentationBase {
149
139
  get protocols() {
150
140
  return this.protocolsValue;
151
141
  }
152
- /**
153
- * When set it renders the "try it" button that dispatches the `tryit` event.
154
- * @attribute
155
- */
156
- tryItButton;
157
- /**
158
- * When set it renders the "try it" panel next to the operation documentation.
159
- * Setting this automatically disables the `tryItButton` property.
160
- *
161
- * Note, use this only when there's enough space on the screen to render 2 panels side-by-side.
162
- * @attribute
163
- */
164
- tryItPanel;
165
- /**
166
- * When set it renders the URL input above the URL parameters in the HTTP editor.
167
- * @attribute
168
- */
169
- httpUrlEditor;
170
- /**
171
- * List of credentials source passed to the HTTP editor
172
- */
173
- httpCredentialsSource;
174
- /**
175
- * OAuth2 redirect URI.
176
- * This value **must** be set in order for OAuth 1/2 to work properly.
177
- * This is only required in inline mode (`inlineMethods`).
178
- * @attribute
179
- */
180
- redirectUri;
181
- /**
182
- * Optional property to set on the request editor.
183
- * When true, the server selector is not rendered
184
- * @attribute
185
- */
186
- httpNoServerSelector;
187
- /**
188
- * When set it renders "add custom" item button in the HTTP request editor.
189
- * If the element is to be used without AMF model this should always
190
- * be enabled. Otherwise users won't be able to add a parameter.
191
- * @attribute
192
- */
193
- httpAllowCustom;
194
- /**
195
- * Optional property to set on the request editor.
196
- * If true, the server selector custom base URI option is rendered
197
- * @attribute
198
- */
199
- httpAllowCustomBaseUri;
200
- /**
201
- * When set it renders the view optimised for asynchronous API operation.
202
- * @attribute
203
- */
204
- asyncApi;
205
- /**
206
- * Holds the value of the currently selected server
207
- * Data type: URI
208
- * @attribute
209
- */
210
- serverValue;
211
- /**
212
- * Holds the type of the currently selected server
213
- * Values: `server` | `uri` | `custom`
214
- * @attribute
215
- */
216
- serverType;
217
142
  constructor() {
218
143
  super();
219
144
  this.snippetsInternal = {};