@api-client/ui 0.0.4 → 0.0.7

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 (756) hide show
  1. package/demo/elements/http/http-assertions.html +3 -0
  2. package/demo/elements/http/http-assertions.ts +1 -1
  3. package/demo/elements/http/http-flows.html +23 -0
  4. package/demo/elements/http/http-flows.ts +92 -0
  5. package/demo/elements/http/index.html +3 -0
  6. package/demo/pages/http-project/main.ts +5 -6
  7. package/dist/amf/lib/AmfParameters.js +0 -4
  8. package/dist/amf/lib/AmfParameters.js.map +1 -1
  9. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  10. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  11. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  12. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  13. package/dist/amf/store/AmfGraphStore.js +0 -2
  14. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  15. package/dist/amf/store/AmfStore.js +0 -7
  16. package/dist/amf/store/AmfStore.js.map +1 -1
  17. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  18. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  19. package/dist/bindings/base/PlatformBindings.js +6 -10
  20. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  21. package/dist/bindings/base/ProxyBindings.js +9 -6
  22. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  23. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  24. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  25. package/dist/bindings/base/StoreBindings.js +162 -170
  26. package/dist/bindings/base/StoreBindings.js.map +1 -1
  27. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  28. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  29. package/dist/bindings/web/WebFileBindings.js +7 -4
  30. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  31. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  32. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  33. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  34. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  35. package/dist/bindings/web/WebProxyBindings.js +5 -6
  36. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  37. package/dist/bindings/web/WebStoreBindings.js +39 -44
  38. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  39. package/dist/contextual-menu/ContextualMenu.js +10 -19
  40. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  41. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  42. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  43. package/dist/contextual-menu/MenuItem.js +0 -12
  44. package/dist/contextual-menu/MenuItem.js.map +1 -1
  45. package/dist/define/amf/api-annotation-document.js +1 -1
  46. package/dist/define/amf/api-annotation-document.js.map +1 -1
  47. package/dist/define/amf/api-authorization-editor.js +1 -1
  48. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  49. package/dist/define/amf/api-channel-document.js +1 -1
  50. package/dist/define/amf/api-channel-document.js.map +1 -1
  51. package/dist/define/amf/api-documentation-document.js +1 -1
  52. package/dist/define/amf/api-documentation-document.js.map +1 -1
  53. package/dist/define/amf/api-documentation.js +1 -1
  54. package/dist/define/amf/api-documentation.js.map +1 -1
  55. package/dist/define/amf/api-navigation.js +1 -1
  56. package/dist/define/amf/api-navigation.js.map +1 -1
  57. package/dist/define/amf/api-operation-document.js +1 -1
  58. package/dist/define/amf/api-operation-document.js.map +1 -1
  59. package/dist/define/amf/api-parameter-document.js +1 -1
  60. package/dist/define/amf/api-parameter-document.js.map +1 -1
  61. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  62. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  63. package/dist/define/amf/api-payload-document.js +1 -1
  64. package/dist/define/amf/api-payload-document.js.map +1 -1
  65. package/dist/define/amf/api-request-document.js +1 -1
  66. package/dist/define/amf/api-request-document.js.map +1 -1
  67. package/dist/define/amf/api-request-editor.js +1 -1
  68. package/dist/define/amf/api-request-editor.js.map +1 -1
  69. package/dist/define/amf/api-request.js +1 -1
  70. package/dist/define/amf/api-request.js.map +1 -1
  71. package/dist/define/amf/api-resource-document.js +1 -1
  72. package/dist/define/amf/api-resource-document.js.map +1 -1
  73. package/dist/define/amf/api-response-document.js +1 -1
  74. package/dist/define/amf/api-response-document.js.map +1 -1
  75. package/dist/define/amf/api-schema-document.js +1 -1
  76. package/dist/define/amf/api-schema-document.js.map +1 -1
  77. package/dist/define/amf/api-security-document.js +1 -1
  78. package/dist/define/amf/api-security-document.js.map +1 -1
  79. package/dist/define/amf/api-security-requirement-document.js +1 -1
  80. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  81. package/dist/define/amf/api-server-picker.js +1 -1
  82. package/dist/define/amf/api-server-picker.js.map +1 -1
  83. package/dist/define/amf/api-summary.js +1 -1
  84. package/dist/define/amf/api-summary.js.map +1 -1
  85. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  86. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  87. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  88. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  89. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  90. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  91. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  92. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  93. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  94. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  95. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  96. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  97. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  98. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  99. package/dist/define/authorization/apikey-authorization.js +1 -1
  100. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  101. package/dist/define/authorization/basic-authorization.js +1 -1
  102. package/dist/define/authorization/basic-authorization.js.map +1 -1
  103. package/dist/define/authorization/bearer-authorization.js +1 -1
  104. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  105. package/dist/define/authorization/cc-authorization.js +1 -1
  106. package/dist/define/authorization/cc-authorization.js.map +1 -1
  107. package/dist/define/authorization/ntlm-authorization.js +1 -1
  108. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  109. package/dist/define/authorization/oauth2-authorization.js +1 -1
  110. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  111. package/dist/define/authorization/oidc-authorization.js +1 -1
  112. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  113. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  114. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  115. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  116. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  117. package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
  118. package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
  119. package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
  120. package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
  121. package/dist/define/dialog/rename-dialog.js +1 -1
  122. package/dist/define/dialog/rename-dialog.js.map +1 -1
  123. package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
  124. package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
  125. package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
  126. package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
  127. package/dist/define/files/share-file.js +1 -1
  128. package/dist/define/files/share-file.js.map +1 -1
  129. package/dist/define/har/har-viewer.js +1 -1
  130. package/dist/define/har/har-viewer.js.map +1 -1
  131. package/dist/define/highlight/marked-highlight.js +1 -1
  132. package/dist/define/highlight/marked-highlight.js.map +1 -1
  133. package/dist/define/highlight/prism-highlight.js +1 -1
  134. package/dist/define/highlight/prism-highlight.js.map +1 -1
  135. package/dist/define/http/http-assertions.d.ts +1 -1
  136. package/dist/define/http/http-assertions.d.ts.map +1 -1
  137. package/dist/define/http/http-assertions.js +3 -3
  138. package/dist/define/http/http-assertions.js.map +1 -1
  139. package/dist/define/http/http-body-editor.js +1 -1
  140. package/dist/define/http/http-body-editor.js.map +1 -1
  141. package/dist/define/http/http-body-multipart-editor.js +1 -1
  142. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  143. package/dist/define/http/http-body-text-editor.js +1 -1
  144. package/dist/define/http/http-body-text-editor.js.map +1 -1
  145. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  146. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  147. package/dist/define/http/http-flows.d.ts +10 -0
  148. package/dist/define/http/http-flows.d.ts.map +1 -0
  149. package/dist/define/http/http-flows.js +13 -0
  150. package/dist/define/http/http-flows.js.map +1 -0
  151. package/dist/define/http/http-headers-form.js +1 -1
  152. package/dist/define/http/http-headers-form.js.map +1 -1
  153. package/dist/define/http/http-log-body.js +1 -1
  154. package/dist/define/http/http-log-body.js.map +1 -1
  155. package/dist/define/http/http-log-headers.js +1 -1
  156. package/dist/define/http/http-log-headers.js.map +1 -1
  157. package/dist/define/http/http-log-timings.js +1 -1
  158. package/dist/define/http/http-log-timings.js.map +1 -1
  159. package/dist/define/http/http-request-config.js +1 -1
  160. package/dist/define/http/http-request-config.js.map +1 -1
  161. package/dist/define/http/http-request-editor.js +1 -1
  162. package/dist/define/http/http-request-editor.js.map +1 -1
  163. package/dist/define/http/http-request-log.js +1 -1
  164. package/dist/define/http/http-request-log.js.map +1 -1
  165. package/dist/define/http/http-snippets.js +1 -1
  166. package/dist/define/http/http-snippets.js.map +1 -1
  167. package/dist/define/http/http-url-input.js +1 -1
  168. package/dist/define/http/http-url-input.js.map +1 -1
  169. package/dist/define/http/http-url-params-form.js +1 -1
  170. package/dist/define/http/http-url-params-form.js.map +1 -1
  171. package/dist/define/http-project/http-project-request-history.js +1 -1
  172. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  173. package/dist/define/http-project/http-project-request.js +2 -2
  174. package/dist/define/http-project/http-project-request.js.map +1 -1
  175. package/dist/define/http-project/project-navigation.js +1 -1
  176. package/dist/define/http-project/project-navigation.js.map +1 -1
  177. package/dist/define/http-project/project-run-report.js +1 -1
  178. package/dist/define/http-project/project-run-report.js.map +1 -1
  179. package/dist/define/http-project/project-runner.js +2 -2
  180. package/dist/define/http-project/project-runner.js.map +1 -1
  181. package/dist/define/layout/split-view.js +1 -1
  182. package/dist/define/layout/split-view.js.map +1 -1
  183. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  184. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  185. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  186. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  187. package/dist/define/ui/ui-button.js +1 -1
  188. package/dist/define/ui/ui-button.js.map +1 -1
  189. package/dist/define/ui/ui-chip.js +1 -1
  190. package/dist/define/ui/ui-chip.js.map +1 -1
  191. package/dist/define/ui/ui-collapse.js +1 -1
  192. package/dist/define/ui/ui-collapse.js.map +1 -1
  193. package/dist/define/ui/ui-dialog.js +1 -1
  194. package/dist/define/ui/ui-dialog.js.map +1 -1
  195. package/dist/define/ui/ui-divider.d.ts +4 -1
  196. package/dist/define/ui/ui-divider.d.ts.map +1 -1
  197. package/dist/define/ui/ui-divider.js +11 -2
  198. package/dist/define/ui/ui-divider.js.map +1 -1
  199. package/dist/define/ui/ui-dropdown-list.js +1 -1
  200. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  201. package/dist/define/ui/ui-icon-button.js +1 -1
  202. package/dist/define/ui/ui-icon-button.js.map +1 -1
  203. package/dist/define/ui/ui-icon.js +1 -1
  204. package/dist/define/ui/ui-icon.js.map +1 -1
  205. package/dist/define/ui/ui-list-item.js +1 -1
  206. package/dist/define/ui/ui-list-item.js.map +1 -1
  207. package/dist/define/ui/ui-list.js +1 -1
  208. package/dist/define/ui/ui-list.js.map +1 -1
  209. package/dist/define/ui/ui-listbox.js +1 -1
  210. package/dist/define/ui/ui-listbox.js.map +1 -1
  211. package/dist/define/ui/ui-progress.js +1 -1
  212. package/dist/define/ui/ui-progress.js.map +1 -1
  213. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  214. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  215. package/dist/define/ui/ui-segmented-button.js +1 -1
  216. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  217. package/dist/define/ui/ui-snackbar.js +1 -1
  218. package/dist/define/ui/ui-snackbar.js.map +1 -1
  219. package/dist/define/ui/ui-tab.js +1 -1
  220. package/dist/define/ui/ui-tab.js.map +1 -1
  221. package/dist/define/ui/ui-tabs.js +1 -1
  222. package/dist/define/ui/ui-tabs.js.map +1 -1
  223. package/dist/directives/data-attr.js +0 -1
  224. package/dist/directives/data-attr.js.map +1 -1
  225. package/dist/elements/ApiElement.d.ts +4 -0
  226. package/dist/elements/ApiElement.d.ts.map +1 -1
  227. package/dist/elements/ApiElement.js +6 -7
  228. package/dist/elements/ApiElement.js.map +1 -1
  229. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  230. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  231. package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -33
  232. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  233. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  234. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  235. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  236. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  237. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  238. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  239. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  240. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  241. package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
  242. package/dist/elements/amf/ApiOperationDocument.element.js +2 -77
  243. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  244. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  245. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  246. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  247. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  248. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  249. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  250. package/dist/elements/amf/ApiRequest.element.js +1 -79
  251. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  252. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  253. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  254. package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
  255. package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
  256. package/dist/elements/amf/ApiRequestEditor.element.js +0 -121
  257. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  258. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  259. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  260. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  261. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  262. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  263. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  264. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  265. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  266. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  267. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  268. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  269. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  270. package/dist/elements/amf/ApiSummary.element.js +0 -26
  271. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  272. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  273. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  274. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  275. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  276. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  277. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  278. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  279. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  280. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  281. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  282. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  283. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  284. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  285. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  286. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  287. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  288. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  289. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  290. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  291. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  292. package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
  293. package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
  294. package/dist/elements/authorization/ui/Authorization.js +18 -35
  295. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  296. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  297. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  298. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  299. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  300. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  301. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  302. package/dist/elements/code/HttpSnippets.js +9 -8
  303. package/dist/elements/code/HttpSnippets.js.map +1 -1
  304. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  305. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  306. package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
  307. package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
  308. package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
  309. package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
  310. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
  311. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
  312. package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
  313. package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
  314. package/dist/elements/dialog/Rename.d.ts +7 -6
  315. package/dist/elements/dialog/Rename.d.ts.map +1 -1
  316. package/dist/elements/dialog/Rename.js +7 -12
  317. package/dist/elements/dialog/Rename.js.map +1 -1
  318. package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
  319. package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
  320. package/dist/elements/dialog/SetCookieAction.element.js +173 -0
  321. package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
  322. package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
  323. package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  324. package/dist/elements/environment/EnvironmentEditor.js +73 -30
  325. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  326. package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
  327. package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
  328. package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  329. package/dist/elements/environment/ServerEditor.d.ts +3 -3
  330. package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
  331. package/dist/elements/environment/ServerEditor.js +10 -51
  332. package/dist/elements/environment/ServerEditor.js.map +1 -1
  333. package/dist/elements/environment/VariablesEditor.d.ts +0 -1
  334. package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
  335. package/dist/elements/environment/VariablesEditor.js +10 -18
  336. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  337. package/dist/elements/files/ShareFile.js +19 -57
  338. package/dist/elements/files/ShareFile.js.map +1 -1
  339. package/dist/elements/har/HarViewer.js +6 -7
  340. package/dist/elements/har/HarViewer.js.map +1 -1
  341. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  342. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  343. package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
  344. package/dist/elements/highlight/Prism.styles.js +12 -5
  345. package/dist/elements/highlight/Prism.styles.js.map +1 -1
  346. package/dist/elements/highlight/PrismHighlight.js +9 -18
  347. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  348. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  349. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  350. package/dist/elements/http/BodyEditor.d.ts +0 -4
  351. package/dist/elements/http/BodyEditor.d.ts.map +1 -1
  352. package/dist/elements/http/BodyEditor.js +31 -49
  353. package/dist/elements/http/BodyEditor.js.map +1 -1
  354. package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
  355. package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  356. package/dist/elements/http/BodyMultipartEditor.js +20 -37
  357. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  358. package/dist/elements/http/BodyTextEditor.d.ts +0 -1
  359. package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
  360. package/dist/elements/http/BodyTextEditor.js +2 -18
  361. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  362. package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
  363. package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
  364. package/dist/elements/http/BodyUrlEncodedEditor.js +23 -26
  365. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  366. package/dist/elements/http/HeadersForm.d.ts +0 -4
  367. package/dist/elements/http/HeadersForm.d.ts.map +1 -1
  368. package/dist/elements/http/HeadersForm.js +16 -23
  369. package/dist/elements/http/HeadersForm.js.map +1 -1
  370. package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
  371. package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
  372. package/dist/elements/http/HttpAssertions.element.js +264 -0
  373. package/dist/elements/http/HttpAssertions.element.js.map +1 -0
  374. package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
  375. package/dist/elements/http/HttpAssertions.styles.js +7 -156
  376. package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
  377. package/dist/elements/http/HttpFlows.common.d.ts +3 -0
  378. package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
  379. package/dist/elements/http/HttpFlows.common.js +181 -0
  380. package/dist/elements/http/HttpFlows.common.js.map +1 -0
  381. package/dist/elements/http/HttpFlows.element.d.ts +97 -0
  382. package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
  383. package/dist/elements/http/HttpFlows.element.js +684 -0
  384. package/dist/elements/http/HttpFlows.element.js.map +1 -0
  385. package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
  386. package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
  387. package/dist/elements/http/HttpFlows.styles.js +28 -0
  388. package/dist/elements/http/HttpFlows.styles.js.map +1 -0
  389. package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
  390. package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
  391. package/dist/elements/http/HttpFlowsUi.js +1256 -0
  392. package/dist/elements/http/HttpFlowsUi.js.map +1 -0
  393. package/dist/elements/http/LogBody.js +10 -21
  394. package/dist/elements/http/LogBody.js.map +1 -1
  395. package/dist/elements/http/LogHeaders.js +4 -23
  396. package/dist/elements/http/LogHeaders.js.map +1 -1
  397. package/dist/elements/http/LogTimings.js +11 -13
  398. package/dist/elements/http/LogTimings.js.map +1 -1
  399. package/dist/elements/http/RequestConfigElement.d.ts +0 -1
  400. package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
  401. package/dist/elements/http/RequestConfigElement.js +15 -15
  402. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  403. package/dist/elements/http/RequestEditor.d.ts +10 -10
  404. package/dist/elements/http/RequestEditor.d.ts.map +1 -1
  405. package/dist/elements/http/RequestEditor.js +116 -111
  406. package/dist/elements/http/RequestEditor.js.map +1 -1
  407. package/dist/elements/http/RequestLog.js +9 -14
  408. package/dist/elements/http/RequestLog.js.map +1 -1
  409. package/dist/elements/http/UrlInput.d.ts +3 -3
  410. package/dist/elements/http/UrlInput.d.ts.map +1 -1
  411. package/dist/elements/http/UrlInput.js +17 -27
  412. package/dist/elements/http/UrlInput.js.map +1 -1
  413. package/dist/elements/http/UrlParamsForm.d.ts +0 -1
  414. package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
  415. package/dist/elements/http/UrlParamsForm.js +16 -16
  416. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  417. package/dist/elements/layout/LayoutManager.js +16 -24
  418. package/dist/elements/layout/LayoutManager.js.map +1 -1
  419. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  420. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  421. package/dist/elements/layout/SplitItem.js +4 -12
  422. package/dist/elements/layout/SplitItem.js.map +1 -1
  423. package/dist/elements/layout/SplitLayout.js +18 -24
  424. package/dist/elements/layout/SplitLayout.js.map +1 -1
  425. package/dist/elements/layout/SplitPanel.js +10 -16
  426. package/dist/elements/layout/SplitPanel.js.map +1 -1
  427. package/dist/elements/layout/SplitView.js +17 -26
  428. package/dist/elements/layout/SplitView.js.map +1 -1
  429. package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
  430. package/dist/elements/layout/SplitView.styles.js +1 -0
  431. package/dist/elements/layout/SplitView.styles.js.map +1 -1
  432. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  433. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  434. package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
  435. package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
  436. package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
  437. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  438. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  439. package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
  440. package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
  441. package/dist/elements/project/HttpProjectRequest.js +14 -43
  442. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  443. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  444. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  445. package/dist/elements/project/ProjectNavigation.js +0 -4
  446. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  447. package/dist/elements/project/ProjectRunReport.js +4 -15
  448. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  449. package/dist/elements/project/ProjectRunner.d.ts +0 -1
  450. package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
  451. package/dist/elements/project/ProjectRunner.js +3 -51
  452. package/dist/elements/project/ProjectRunner.js.map +1 -1
  453. package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
  454. package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
  455. package/dist/elements/schema-design/AssociationFormElement.js +2 -18
  456. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  457. package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
  458. package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
  459. package/dist/elements/schema-design/DataEntityEditorElement.js +5 -27
  460. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  461. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  462. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  463. package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
  464. package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
  465. package/dist/elements/schema-design/DataSchemaDocument.js +4 -43
  466. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  467. package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
  468. package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
  469. package/dist/elements/schema-design/EntityFormElement.js +4 -25
  470. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  471. package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
  472. package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
  473. package/dist/elements/schema-design/PropertyFormElement.js +8 -23
  474. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  475. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  476. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  477. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  478. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  479. package/dist/elements/user/UserAvatarElement.js +0 -9
  480. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  481. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  482. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  483. package/dist/http-client/idb/Base.js +5 -10
  484. package/dist/http-client/idb/Base.js.map +1 -1
  485. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  486. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  487. package/dist/http-client/idb/MockedStore.js +3 -1
  488. package/dist/http-client/idb/MockedStore.js.map +1 -1
  489. package/dist/http-client/store/DataImportProcessor.js +0 -3
  490. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  491. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  492. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  493. package/dist/http-client/store/IdbThread.js +23 -20
  494. package/dist/http-client/store/IdbThread.js.map +1 -1
  495. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  496. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  497. package/dist/http-client/store/idb/IdbStore.js +0 -2
  498. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  499. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  500. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  501. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  502. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  503. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  504. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  505. package/dist/mixins/FileDropMixin.js +0 -1
  506. package/dist/mixins/FileDropMixin.js.map +1 -1
  507. package/dist/mixins/RenderableMixin.js +11 -15
  508. package/dist/mixins/RenderableMixin.js.map +1 -1
  509. package/dist/pages/ApplicationScreen.d.ts +1 -1
  510. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  511. package/dist/pages/ApplicationScreen.js +35 -56
  512. package/dist/pages/ApplicationScreen.js.map +1 -1
  513. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  514. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  515. package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
  516. package/dist/pages/api-client/ApiClient.styles.js +22 -3
  517. package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
  518. package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
  519. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  520. package/dist/pages/api-client/Authenticate.screen.js +23 -9
  521. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  522. package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
  523. package/dist/pages/api-client/StoreConfig.screen.js +25 -39
  524. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  525. package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
  526. package/dist/pages/api-client/StoreConfig.styles.js +5 -0
  527. package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
  528. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  529. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  530. package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
  531. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  532. package/dist/pages/api-client/pages/Files.page.js +8 -28
  533. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  534. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  535. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  536. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  537. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  538. package/dist/pages/demo/DemoPage.js +13 -13
  539. package/dist/pages/demo/DemoPage.js.map +1 -1
  540. package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
  541. package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
  542. package/dist/pages/http-project/HttpProject.screen.js +39 -50
  543. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  544. package/dist/pages/http-project/types.d.ts +8 -6
  545. package/dist/pages/http-project/types.d.ts.map +1 -1
  546. package/dist/pages/http-project/types.js.map +1 -1
  547. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  548. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  549. package/dist/store/HttpStore.js +0 -3
  550. package/dist/store/HttpStore.js.map +1 -1
  551. package/dist/store/UserCache.js +5 -5
  552. package/dist/store/UserCache.js.map +1 -1
  553. package/dist/styles/m3/surface.module.d.ts.map +1 -1
  554. package/dist/styles/m3/surface.module.js +11 -27
  555. package/dist/styles/m3/surface.module.js.map +1 -1
  556. package/dist/ui/UiElement.d.ts +4 -0
  557. package/dist/ui/UiElement.d.ts.map +1 -1
  558. package/dist/ui/UiElement.js +10 -5
  559. package/dist/ui/UiElement.js.map +1 -1
  560. package/dist/ui/button/SegmentedButton.js +9 -11
  561. package/dist/ui/button/SegmentedButton.js.map +1 -1
  562. package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
  563. package/dist/ui/button/SegmentedButton.styles.js +3 -1
  564. package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
  565. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  566. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  567. package/dist/ui/button/UiButton.js +17 -39
  568. package/dist/ui/button/UiButton.js.map +1 -1
  569. package/dist/ui/button/UiIconButton.js +9 -35
  570. package/dist/ui/button/UiIconButton.js.map +1 -1
  571. package/dist/ui/chip/UiChip.js +9 -49
  572. package/dist/ui/chip/UiChip.js.map +1 -1
  573. package/dist/ui/collapse/UiCollapse.js +15 -20
  574. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  575. package/dist/ui/controllers/ActionController.js +143 -144
  576. package/dist/ui/controllers/ActionController.js.map +1 -1
  577. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  578. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  579. package/dist/ui/date/DateTime.js +3 -3
  580. package/dist/ui/date/DateTime.js.map +1 -1
  581. package/dist/ui/dialog/UiDialog.d.ts +3 -0
  582. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  583. package/dist/ui/dialog/UiDialog.js +17 -38
  584. package/dist/ui/dialog/UiDialog.js.map +1 -1
  585. package/dist/ui/effects/ripple.d.ts.map +1 -1
  586. package/dist/ui/effects/ripple.js +25 -19
  587. package/dist/ui/effects/ripple.js.map +1 -1
  588. package/dist/ui/effects/rippleDirective.js +6 -7
  589. package/dist/ui/effects/rippleDirective.js.map +1 -1
  590. package/dist/ui/icons/Icons.d.ts +3 -2
  591. package/dist/ui/icons/Icons.d.ts.map +1 -1
  592. package/dist/ui/icons/Icons.js +2 -1
  593. package/dist/ui/icons/Icons.js.map +1 -1
  594. package/dist/ui/icons/UiIcon.js +4 -3
  595. package/dist/ui/icons/UiIcon.js.map +1 -1
  596. package/dist/ui/input/CheckboxElement.js +12 -10
  597. package/dist/ui/input/CheckboxElement.js.map +1 -1
  598. package/dist/ui/input/CheckedElement.d.ts +1 -1
  599. package/dist/ui/input/CheckedElement.d.ts.map +1 -1
  600. package/dist/ui/input/CheckedElement.js +5 -16
  601. package/dist/ui/input/CheckedElement.js.map +1 -1
  602. package/dist/ui/input/Input.js +170 -235
  603. package/dist/ui/input/Input.js.map +1 -1
  604. package/dist/ui/input/RadioElement.js +13 -11
  605. package/dist/ui/input/RadioElement.js.map +1 -1
  606. package/dist/ui/input/SwitchElement.js +0 -18
  607. package/dist/ui/input/SwitchElement.js.map +1 -1
  608. package/dist/ui/input/TextAreaElement.js +0 -15
  609. package/dist/ui/input/TextAreaElement.js.map +1 -1
  610. package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
  611. package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
  612. package/dist/ui/list/UiDivider.element.js +39 -0
  613. package/dist/ui/list/UiDivider.element.js.map +1 -0
  614. package/dist/ui/list/UiDivider.styles.d.ts +3 -0
  615. package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
  616. package/dist/ui/list/UiDivider.styles.js +49 -0
  617. package/dist/ui/list/UiDivider.styles.js.map +1 -0
  618. package/dist/ui/list/UiDropdownList.js +7 -48
  619. package/dist/ui/list/UiDropdownList.js.map +1 -1
  620. package/dist/ui/list/UiList.js +3 -15
  621. package/dist/ui/list/UiList.js.map +1 -1
  622. package/dist/ui/list/UiListItem.js +4 -17
  623. package/dist/ui/list/UiListItem.js.map +1 -1
  624. package/dist/ui/list/UiListbox.js +0 -1
  625. package/dist/ui/list/UiListbox.js.map +1 -1
  626. package/dist/ui/notification/SnackNotifications.js +1 -2
  627. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  628. package/dist/ui/notification/Snackbar.js +27 -51
  629. package/dist/ui/notification/Snackbar.js.map +1 -1
  630. package/dist/ui/progress/Range.js +24 -23
  631. package/dist/ui/progress/Range.js.map +1 -1
  632. package/dist/ui/progress/UiProgress.js +0 -11
  633. package/dist/ui/progress/UiProgress.js.map +1 -1
  634. package/dist/ui/table/DataTable.js +7 -12
  635. package/dist/ui/table/DataTable.js.map +1 -1
  636. package/dist/ui/tabs/UiTab.js +24 -25
  637. package/dist/ui/tabs/UiTab.js.map +1 -1
  638. package/dist/ui/tabs/UiTabs.d.ts +13 -1
  639. package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
  640. package/dist/ui/tabs/UiTabs.js +62 -47
  641. package/dist/ui/tabs/UiTabs.js.map +1 -1
  642. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  643. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  644. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  645. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  646. package/dist/visualization/lib/Point.js +0 -2
  647. package/dist/visualization/lib/Point.js.map +1 -1
  648. package/dist/visualization/lib/SelectionManager.js +10 -11
  649. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  650. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  651. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  652. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  653. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  654. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  655. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  656. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  657. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  658. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  659. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  660. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  661. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  662. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  663. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  664. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  665. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  666. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  667. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  668. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  669. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  670. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  671. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  672. package/package.json +3 -2
  673. package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
  674. package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
  675. package/src/define/http/http-assertions.ts +3 -3
  676. package/src/define/http/http-flows.ts +15 -0
  677. package/src/define/ui/ui-divider.ts +7 -2
  678. package/src/elements/ApiElement.ts +7 -0
  679. package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
  680. package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
  681. package/src/elements/amf/ApiRequest.element.ts +1 -1
  682. package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
  683. package/src/elements/authorization/ui/Authorization.ts +3 -5
  684. package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
  685. package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
  686. package/src/elements/dialog/Rename.ts +8 -7
  687. package/src/elements/dialog/SetCookieAction.element.ts +183 -0
  688. package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
  689. package/src/elements/environment/EnvironmentEditor.ts +81 -22
  690. package/src/elements/environment/ServerEditor.ts +4 -8
  691. package/src/elements/environment/VariablesEditor.ts +3 -7
  692. package/src/elements/highlight/Prism.styles.ts +12 -5
  693. package/src/elements/http/BodyEditor.ts +10 -17
  694. package/src/elements/http/BodyMultipartEditor.ts +3 -20
  695. package/src/elements/http/BodyTextEditor.ts +0 -4
  696. package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
  697. package/src/elements/http/HeadersForm.ts +2 -9
  698. package/src/elements/http/HttpAssertions.element.ts +286 -0
  699. package/src/elements/http/HttpAssertions.styles.ts +7 -156
  700. package/src/elements/http/HttpFlows.common.ts +181 -0
  701. package/src/elements/http/HttpFlows.element.ts +722 -0
  702. package/src/elements/http/HttpFlows.styles.ts +29 -0
  703. package/src/elements/http/HttpFlowsUi.ts +1327 -0
  704. package/src/elements/http/RequestConfigElement.ts +10 -14
  705. package/src/elements/http/RequestEditor.ts +77 -35
  706. package/src/elements/http/UrlInput.ts +6 -6
  707. package/src/elements/http/UrlParamsForm.ts +2 -6
  708. package/src/elements/layout/SplitView.styles.ts +1 -0
  709. package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
  710. package/src/elements/project/HttpProjectRequest.ts +16 -5
  711. package/src/elements/project/ProjectRunner.ts +3 -7
  712. package/src/elements/schema-design/AssociationFormElement.ts +4 -8
  713. package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
  714. package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
  715. package/src/elements/schema-design/EntityFormElement.ts +6 -10
  716. package/src/elements/schema-design/PropertyFormElement.ts +11 -15
  717. package/src/pages/ApplicationScreen.ts +1 -1
  718. package/src/pages/api-client/ApiClient.styles.ts +22 -3
  719. package/src/pages/api-client/Authenticate.screen.ts +19 -3
  720. package/src/pages/api-client/StoreConfig.screen.ts +4 -2
  721. package/src/pages/api-client/StoreConfig.styles.ts +5 -0
  722. package/src/pages/api-client/pages/Files.page.ts +2 -1
  723. package/src/pages/http-project/HttpProject.screen.ts +14 -26
  724. package/src/pages/http-project/types.ts +8 -6
  725. package/src/styles/m3/surface.module.ts +11 -27
  726. package/src/styles/m3/theme.css +36 -0
  727. package/src/styles/m3/tokens.css +11 -0
  728. package/src/ui/UiElement.ts +7 -0
  729. package/src/ui/button/SegmentedButton.styles.ts +3 -1
  730. package/src/ui/dialog/UiDialog.ts +3 -0
  731. package/src/ui/effects/ripple.ts +6 -1
  732. package/src/ui/icons/Icons.ts +3 -2
  733. package/src/ui/input/CheckedElement.ts +3 -3
  734. package/src/ui/input/Input.ts +1 -1
  735. package/src/ui/list/UiDivider.element.ts +41 -0
  736. package/src/ui/list/UiDivider.styles.ts +49 -0
  737. package/src/ui/tabs/UiTabs.ts +55 -13
  738. package/test/amf/authorization/OAuth2Method.test.ts +1 -1
  739. package/test/elements/http/HttpAssertions.test.ts +5 -6
  740. package/test/elements/http/HttpFlows.test.ts +485 -0
  741. package/tsconfig.json +2 -2
  742. package/dist/elements/http/HttpAssertions.d.ts +0 -114
  743. package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
  744. package/dist/elements/http/HttpAssertions.js +0 -1144
  745. package/dist/elements/http/HttpAssertions.js.map +0 -1
  746. package/dist/elements/http/internals.d.ts +0 -150
  747. package/dist/elements/http/internals.d.ts.map +0 -1
  748. package/dist/elements/http/internals.js +0 -150
  749. package/dist/elements/http/internals.js.map +0 -1
  750. package/dist/ui/list/DividerElement.d.ts.map +0 -1
  751. package/dist/ui/list/DividerElement.js +0 -87
  752. package/dist/ui/list/DividerElement.js.map +0 -1
  753. package/src/elements/http/HttpAssertions.ts +0 -1187
  754. package/src/elements/http/internals.ts +0 -151
  755. package/src/http-client/docs/Files.md +0 -28
  756. package/src/ui/list/DividerElement.ts +0 -84
@@ -0,0 +1,1327 @@
1
+ /* eslint-disable no-param-reassign */
2
+ import {
3
+ IHttpStep, FlowSourceEnum, FlowRequestDataEnum,
4
+ DataSteps, FlowResponseDataEnum, TransformationSteps, HttpAssertions as CoreAssertions,
5
+ AmfNamespace,
6
+ ToBeTypes,
7
+ } from "@api-client/core/build/browser.js";
8
+ import { live } from "lit/directives/live.js";
9
+ import { html, nothing, TemplateResult } from "lit";
10
+ import { ifDefined } from "lit/directives/if-defined.js";
11
+ import ApiElement from "../ApiElement.js";
12
+ import type UiChip from "../../ui/chip/UiChip.js";
13
+ import type Input from "../../ui/input/Input.js";
14
+ import type { UiDialogClosingReason } from "../../ui/dialog/UiDialog.js";
15
+ import '../../define/ui/ui-list.js';
16
+ import '../../define/ui/ui-list-item.js';
17
+ import '../../define/ui/ui-dropdown-list.js';
18
+ import '../../define/ui/ui-icon.js';
19
+ import '../../define/ui/ui-icon-button.js';
20
+ import '../../define/ui/ui-text-field.js';
21
+ import '../../define/ui/ui-chip.js';
22
+ import '../../define/ui/ui-dialog.js';
23
+ import '../../define/dialog/delete-cookie-action-dialog.js';
24
+ import '../../define/dialog/set-cookie-action-dialog.js';
25
+
26
+ export interface ChipCreateInfo {
27
+ source?: FlowSourceEnum,
28
+ data?: FlowRequestDataEnum | FlowResponseDataEnum;
29
+ variant?: string;
30
+ disabled?: boolean;
31
+ title?: string;
32
+ }
33
+
34
+ export interface StepsTarget {
35
+ steps: IHttpStep[];
36
+ }
37
+
38
+ /**
39
+ * The base UI class for HTTP flows and assertions
40
+ * since they are practically the same concept.
41
+ */
42
+ export abstract class HttpFlowsUi extends ApiElement {
43
+ /**
44
+ * A chip that is currently being dragged in the UI.
45
+ */
46
+ protected draggedChip?: UiChip;
47
+
48
+ /**
49
+ * Because of the differences in the model between assertions and flows we need to abstract a method
50
+ * to find an object that contains the `steps` so the logic can operate on it.
51
+ *
52
+ * @param assertionOrActionIndex The index of the assertion or the action in the model.
53
+ */
54
+ protected abstract getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined;
55
+
56
+ /**
57
+ * A method to read an HttpStep from an event.
58
+ */
59
+ protected abstract stepFromChangeEvent(e: Event): IHttpStep | undefined;
60
+
61
+ /**
62
+ * Checks whether the dragged element has the required content in the data transfer.
63
+ */
64
+ protected isValidDropTarget(dataTransfer?: DataTransfer | null): boolean {
65
+ if (!dataTransfer) {
66
+ return false;
67
+ }
68
+ const { types } = dataTransfer;
69
+ return types.includes('flow/group') && types.includes('flow/kind');
70
+ }
71
+
72
+ /**
73
+ * Handles the suggestion chip drag start event.
74
+ */
75
+ protected handleChipDragStart(e: DragEvent): void {
76
+ const { dataTransfer } = e;
77
+ if (!dataTransfer) {
78
+ return;
79
+ }
80
+ const chip = e.target as UiChip;
81
+ const { group, kind, source, data, variant } = chip.dataset;
82
+ if (!group || !kind) {
83
+ return;
84
+ }
85
+ this.illustrateDraggedChip(chip, dataTransfer);
86
+ dataTransfer.setData('flow/group', group);
87
+ dataTransfer.setData('flow/kind', kind);
88
+ dataTransfer.setData(`flow/${group}`, '');
89
+ dataTransfer.setData(`flow/${kind}`, '');
90
+ if (source) {
91
+ dataTransfer.setData('flow/source', source);
92
+ }
93
+ if (data) {
94
+ dataTransfer.setData('flow/data', data);
95
+ }
96
+ if (variant) {
97
+ dataTransfer.setData('flow/variant', variant);
98
+ }
99
+ chip.blur();
100
+ }
101
+
102
+ /**
103
+ * Handles the suggestion chip drag end event.
104
+ */
105
+ protected handleChipDragEnd(e: DragEvent): void {
106
+ const { draggedChip } = this;
107
+ if (!draggedChip) {
108
+ return;
109
+ }
110
+ e.preventDefault();
111
+ draggedChip.parentElement?.removeChild(draggedChip);
112
+ }
113
+
114
+ /**
115
+ * When interacting with a chip an MD ripple effect is generated.
116
+ * This causes the default drag image to include the surrounding ripple effect and
117
+ * everything around. This makes a copy of the chip and sets it as the drag image.
118
+ *
119
+ * Note, the copy of the chip has to be added to the DOM and be there for some time
120
+ * so the browser render it and set as the image. Because of that the copy is removed
121
+ * with the drop and not immediately.
122
+ */
123
+ protected illustrateDraggedChip(chip: UiChip, dataTransfer: DataTransfer): void {
124
+ const copy = chip.cloneNode(true) as UiChip;
125
+ copy.style.position = 'absolute';
126
+ copy.style.top = `-100px`;
127
+ this.draggedChip = copy;
128
+ document.body.appendChild(copy);
129
+ dataTransfer.setDragImage(copy, 0, 0);
130
+ }
131
+
132
+ /**
133
+ * Removes all `dragover` classes from elements on the shadow DOM.
134
+ */
135
+ protected resetDragIndices(): void {
136
+ const nodes = (this.shadowRoot as ShadowRoot).querySelectorAll('.dragover');
137
+ Array.from(nodes).forEach(n => n.classList.remove('dragover'));
138
+ }
139
+
140
+ /**
141
+ * A handler for the `dragover` event over a valid target.
142
+ * Sets the `dragover` class on the target.
143
+ */
144
+ protected handleTargetDragOver(e: DragEvent): void {
145
+ const { draggedChip } = this;
146
+ if (!draggedChip || e.defaultPrevented || !this.isValidDropTarget(e.dataTransfer)) {
147
+ return;
148
+ }
149
+ e.preventDefault();
150
+ const dt = e.dataTransfer as DataTransfer;
151
+ dt.dropEffect = 'copy';
152
+ const target = e.currentTarget as HTMLElement;
153
+ target.classList.add('dragover');
154
+ }
155
+
156
+ /**
157
+ * A handler for the `dragleave` event over a valid target.
158
+ * Removes the `dragover` class from the target.
159
+ */
160
+ protected handleTargetDragLeave(e: DragEvent): void {
161
+ if (e.defaultPrevented || !this.isValidDropTarget(e.dataTransfer)) {
162
+ return;
163
+ }
164
+ const target = e.currentTarget as HTMLElement;
165
+ target.classList.remove('dragover');
166
+ }
167
+
168
+ /**
169
+ * Reads the `data-index` and `data-step-index` from the target of the event
170
+ * and calls the `processDrop()` with read values.
171
+ */
172
+ protected handleDrop(e: DragEvent): void {
173
+ const { dataTransfer } = e;
174
+ if (!dataTransfer || e.defaultPrevented || !this.isValidDropTarget(dataTransfer)) {
175
+ return;
176
+ }
177
+ e.preventDefault();
178
+ this.resetDragIndices();
179
+ const { index, stepIndex } = (e.target as HTMLElement).dataset;
180
+ const assertionOrActionIndex = Number(index);
181
+ if (Number.isNaN(assertionOrActionIndex)) {
182
+ return;
183
+ }
184
+ let typedStepIndex: number | undefined;
185
+ if (stepIndex) {
186
+ const tmp = Number(stepIndex);
187
+ if (!Number.isNaN(tmp)) {
188
+ typedStepIndex = tmp;
189
+ }
190
+ }
191
+ this.processDrop(dataTransfer, assertionOrActionIndex, typedStepIndex);
192
+ }
193
+
194
+ /**
195
+ * A logic executed when a suggestion chip drop happens on a valid target.
196
+ *
197
+ * @param dataTransfer The event's dataTransfer object
198
+ * @param assertionOrActionIndex Action's or assertion's index where the drop happened.
199
+ * @param stepIndex The detected index of the step. When not set it adds the step at the end.
200
+ */
201
+ protected processDrop(dataTransfer: DataTransfer, assertionOrActionIndex: number, stepIndex?: number): void {
202
+ const group = dataTransfer.getData('flow/group');
203
+ if (!group) {
204
+ return;
205
+ }
206
+ if (group === 'data-source') {
207
+ this.processDataSourceDrop(dataTransfer, assertionOrActionIndex, stepIndex);
208
+ } else if (group === 'transformation') {
209
+ this.processTransformationDrop(dataTransfer, assertionOrActionIndex, stepIndex);
210
+ } else if (group === 'assertion') {
211
+ this.processAssertionDrop(dataTransfer, assertionOrActionIndex, stepIndex);
212
+ } else if (group === 'action') {
213
+ this.processActionDrop(dataTransfer, assertionOrActionIndex, stepIndex);
214
+ }
215
+ }
216
+
217
+ /**
218
+ * Processes dropping of a `data-source` suggestion chip.
219
+ */
220
+ protected processDataSourceDrop(dataTransfer: DataTransfer, assertionOrActionIndex: number, stepIndex?: number): void {
221
+ const target = this.getStepsTarget(assertionOrActionIndex);
222
+ if (!target) {
223
+ return;
224
+ }
225
+ this.setupDataSource(target, dataTransfer, stepIndex);
226
+ }
227
+
228
+ /**
229
+ * Processes dropping of a `transformation` suggestion chip.
230
+ */
231
+ protected processTransformationDrop(dataTransfer: DataTransfer, assertionOrActionIndex: number, stepIndex?: number): void {
232
+ const target = this.getStepsTarget(assertionOrActionIndex);
233
+ if (!target) {
234
+ return;
235
+ }
236
+ this.setupTransformation(target, dataTransfer, stepIndex);
237
+ }
238
+
239
+ /**
240
+ * Processes dropping of a `assertion` suggestion chip.
241
+ */
242
+ protected processAssertionDrop(dataTransfer: DataTransfer, assertionOrActionIndex: number, stepIndex?: number): void {
243
+ const target = this.getStepsTarget(assertionOrActionIndex);
244
+ if (!target) {
245
+ return;
246
+ }
247
+ this.setupAssertion(target, dataTransfer, stepIndex);
248
+ }
249
+
250
+ /**
251
+ * Processes dropping of a `action` suggestion chip.
252
+ */
253
+ protected processActionDrop(dataTransfer: DataTransfer, assertionOrActionIndex: number, stepIndex?: number): void {
254
+ const target = this.getStepsTarget(assertionOrActionIndex);
255
+ if (!target) {
256
+ return;
257
+ }
258
+ this.setupAction(target, dataTransfer, stepIndex);
259
+ }
260
+
261
+ protected setupDataSource(target: StepsTarget, dataTransfer: DataTransfer, stepIndex?: number): void {
262
+ const source = dataTransfer.getData('flow/source') as FlowSourceEnum;
263
+ const data = dataTransfer.getData('flow/data') as FlowRequestDataEnum | FlowResponseDataEnum;
264
+ const step = new DataSteps.ReadDataSourceStep(source, data).toJSON();
265
+ this.appendStep(step, target, stepIndex);
266
+ }
267
+
268
+ protected setupTransformation(target: StepsTarget, dataTransfer: DataTransfer, stepIndex?: number): void {
269
+ let step: IHttpStep | undefined;
270
+ const kind = dataTransfer.getData('flow/kind');
271
+ if (kind === DataSteps.ReadValueStepKind) {
272
+ step = new DataSteps.ReadValueStep().toJSON();
273
+ } else if (kind === TransformationSteps.AsNumberStepKind) {
274
+ step = new TransformationSteps.AsNumberStep().toJSON();
275
+ } else if (kind === TransformationSteps.RoundStepKind) {
276
+ step = new TransformationSteps.RoundStep().toJSON();
277
+ } else if (kind === TransformationSteps.AsLowerCaseStepKind) {
278
+ step = new TransformationSteps.AsLowerCaseStep().toJSON();
279
+ } else if (kind === TransformationSteps.AsUpperCaseStepKind) {
280
+ step = new TransformationSteps.AsUpperCaseStep().toJSON();
281
+ } else if (kind === TransformationSteps.TrimStepKind) {
282
+ step = new TransformationSteps.TrimStep().toJSON();
283
+ } else if (kind === TransformationSteps.SubstringStepKind) {
284
+ step = new TransformationSteps.SubstringStep().toJSON();
285
+ }
286
+ if (!step) {
287
+ return;
288
+ }
289
+ this.appendStep(step, target, stepIndex);
290
+ }
291
+
292
+ protected setupAssertion(target: StepsTarget, dataTransfer: DataTransfer, stepIndex?: number): void {
293
+ let step: IHttpStep | undefined;
294
+ const kind = dataTransfer.getData('flow/kind');
295
+ if (kind === CoreAssertions.EqualAssertionKind) {
296
+ step = new CoreAssertions.EqualAssertion().toJSON();
297
+ } else if (kind === CoreAssertions.NotEqualAssertionKind) {
298
+ step = new CoreAssertions.NotEqualAssertion().toJSON();
299
+ } else if (kind === CoreAssertions.GreaterThanAssertionKind) {
300
+ const instance = new CoreAssertions.GreaterThanAssertion();
301
+ if (dataTransfer.getData('flow/variant') === 'equal') {
302
+ instance.equal = true;
303
+ }
304
+ step = instance.toJSON();
305
+ } else if (kind === CoreAssertions.LessThanAssertionKind) {
306
+ const instance = new CoreAssertions.LessThanAssertion();
307
+ if (dataTransfer.getData('flow/variant') === 'equal') {
308
+ instance.equal = true;
309
+ }
310
+ step = instance.toJSON();
311
+ } else if (kind === CoreAssertions.IncludesAssertionKind) {
312
+ step = new CoreAssertions.IncludesAssertion().toJSON();
313
+ } else if (kind === CoreAssertions.NotIncludesAssertionKind) {
314
+ step = new CoreAssertions.NotIncludesAssertion().toJSON();
315
+ } else if (kind === CoreAssertions.MatchesAssertionKind) {
316
+ step = new CoreAssertions.MatchesAssertion().toJSON();
317
+ } else if (kind === CoreAssertions.OkAssertionKind) {
318
+ step = new CoreAssertions.OkAssertion().toJSON();
319
+ } else if (kind === CoreAssertions.NotOkAssertionKind) {
320
+ step = new CoreAssertions.NotOkAssertion().toJSON();
321
+ } else if (kind === CoreAssertions.ToBeAssertionKind) {
322
+ step = new CoreAssertions.ToBeAssertion().toJSON();
323
+ } else if (kind === CoreAssertions.NotToBeAssertionKind) {
324
+ step = new CoreAssertions.NotToBeAssertion().toJSON();
325
+ }
326
+ if (!step) {
327
+ return;
328
+ }
329
+ this.appendStep(step, target, stepIndex);
330
+ }
331
+
332
+ protected setupAction(target: StepsTarget, dataTransfer: DataTransfer, stepIndex?: number): void {
333
+ let step: IHttpStep | undefined;
334
+ const kind = dataTransfer.getData('flow/kind');
335
+ if (kind === DataSteps.SetCookieStepKind) {
336
+ step = new DataSteps.SetCookieStep().toJSON();
337
+ } else if (kind === DataSteps.SetVariableStepKind) {
338
+ step = new DataSteps.SetVariableStep().toJSON();
339
+ } else if (kind === DataSteps.DeleteCookieStepKind) {
340
+ step = new DataSteps.DeleteCookieStep().toJSON();
341
+ } else if (kind === DataSteps.DeleteVariableStepKind) {
342
+ step = new DataSteps.DeleteVariableStep().toJSON();
343
+ }
344
+ if (!step) {
345
+ return;
346
+ }
347
+ this.appendStep(step, target, stepIndex);
348
+ }
349
+
350
+ protected appendStep(step: IHttpStep, target: StepsTarget, stepIndex?: number): void {
351
+ if (stepIndex === undefined) {
352
+ target.steps.push(step);
353
+ } else if (stepIndex === -1) {
354
+ target.steps.unshift(step);
355
+ } else {
356
+ target.steps.splice(stepIndex, 0, step);
357
+ }
358
+ this.requestUpdate();
359
+ this.notifyChange();
360
+ }
361
+
362
+ protected removeStep(target: StepsTarget, stepIndex: number): void {
363
+ target.steps.splice(stepIndex, 1);
364
+ this.notifyChange();
365
+ this.requestUpdate();
366
+ }
367
+
368
+ protected handleSubstringStartChange(e: Event): void {
369
+ const step = this.stepFromChangeEvent(e) as TransformationSteps.ISubstringStep | undefined;
370
+ if (!step) {
371
+ return;
372
+ }
373
+ const input = e.target as Input;
374
+ input.checkValidity();
375
+ step.start = input.valueAsNumber;
376
+ this.requestUpdate();
377
+ this.notifyChange();
378
+ }
379
+
380
+ protected handleSubstringEndChange(e: Event): void {
381
+ const step = this.stepFromChangeEvent(e) as TransformationSteps.ISubstringStep | undefined;
382
+ if (!step) {
383
+ return;
384
+ }
385
+ const input = e.target as Input;
386
+ input.checkValidity();
387
+ step.end = input.valueAsNumber;
388
+ this.requestUpdate();
389
+ this.notifyChange();
390
+ }
391
+
392
+ protected handleRoundPrecisionChange(e: Event): void {
393
+ const step = this.stepFromChangeEvent(e) as TransformationSteps.IRoundStep | undefined;
394
+ if (!step) {
395
+ return;
396
+ }
397
+ const input = e.target as Input;
398
+ input.checkValidity();
399
+ step.precision = input.valueAsNumber;
400
+ this.requestUpdate();
401
+ this.notifyChange();
402
+ }
403
+
404
+ protected handleReadValueStepChange(e: Event): void {
405
+ const step = this.stepFromChangeEvent(e) as DataSteps.IReadValueStep | undefined;
406
+ if (!step) {
407
+ return;
408
+ }
409
+ const input = e.target as Input;
410
+ input.checkValidity();
411
+ step.path = input.value;
412
+ this.requestUpdate();
413
+ this.notifyChange();
414
+ }
415
+
416
+ protected handleGreaterThanAssertionValueChange(e: Event): void {
417
+ const step = this.stepFromChangeEvent(e) as CoreAssertions.IGreaterThanAssertion | undefined;
418
+ if (!step) {
419
+ return;
420
+ }
421
+ const input = e.target as Input;
422
+ input.checkValidity();
423
+ step.value = Number(input.value);
424
+ this.requestUpdate();
425
+ this.notifyChange();
426
+ }
427
+
428
+ protected handleLessThanAssertionValueChange(e: Event): void {
429
+ const step = this.stepFromChangeEvent(e) as CoreAssertions.ILessThanAssertion | undefined;
430
+ if (!step) {
431
+ return;
432
+ }
433
+ const input = e.target as Input;
434
+ input.checkValidity();
435
+ step.value = Number(input.value);
436
+ this.requestUpdate();
437
+ this.notifyChange();
438
+ }
439
+
440
+ protected handleIncludesAssertionValueChange(e: Event): void {
441
+ const step = this.stepFromChangeEvent(e) as CoreAssertions.IIncludesAssertion | undefined;
442
+ if (!step) {
443
+ return;
444
+ }
445
+ const input = e.target as Input;
446
+ input.checkValidity();
447
+ step.value = input.value;
448
+ this.requestUpdate();
449
+ this.notifyChange();
450
+ }
451
+
452
+ protected handleToBeAssertionValueChange(e: Event): void {
453
+ const step = this.stepFromChangeEvent(e) as CoreAssertions.IToBeAssertion | CoreAssertions.INotToBeAssertion | undefined;
454
+ if (!step) {
455
+ return;
456
+ }
457
+ const input = e.target as Input;
458
+ input.checkValidity();
459
+ step.value = input.value as ToBeTypes;
460
+ this.requestUpdate();
461
+ this.notifyChange();
462
+ }
463
+
464
+ protected handleMatchesAssertionValueChange(e: Event): void {
465
+ const step = this.stepFromChangeEvent(e) as CoreAssertions.IMatchesAssertion | undefined;
466
+ if (!step) {
467
+ return;
468
+ }
469
+ const input = e.target as Input;
470
+ step.value = input.value;
471
+ this.requestUpdate();
472
+ this.notifyChange();
473
+ }
474
+
475
+ protected handleEqualAssertionValueChange(e: Event): void {
476
+ const input = e.target as Input;
477
+ input.checkValidity();
478
+ const assertionOrActionIndex = Number(input.dataset.assertionIndex);
479
+ const stepIndex = Number(input.dataset.stepIndex);
480
+ if (Number.isNaN(assertionOrActionIndex) || Number.isNaN(stepIndex)) {
481
+ return;
482
+ }
483
+ const stepsTarget = this.getStepsTarget(assertionOrActionIndex);
484
+ if (!stepsTarget) {
485
+ return;
486
+ }
487
+ const step = stepsTarget.steps[stepIndex] as CoreAssertions.IEqualAssertion | undefined;
488
+ if (!step) {
489
+ return;
490
+ }
491
+ step.value = input.value;
492
+ step.dataType = this.detectInputDataType(stepsTarget.steps.slice(0, stepIndex));
493
+ this.requestUpdate();
494
+ this.notifyChange();
495
+ }
496
+
497
+ /**
498
+ * Detects the correct data type for the step value based on previous steps.
499
+ *
500
+ * @param steps The steps before the current step
501
+ * @returns The data type for the step in the AMF namespace.
502
+ */
503
+ protected detectInputDataType(steps: IHttpStep[]): string {
504
+ // we reverse the list so we move from the last step.
505
+ const reversed = [...steps].reverse();
506
+ for (const step of reversed) {
507
+ if (step.kind === TransformationSteps.AsNumberStepKind) {
508
+ return AmfNamespace.aml.vocabularies.shapes.number;
509
+ }
510
+ if (step.kind === DataSteps.ReadDataSourceStepKind) {
511
+ const typed = step as DataSteps.IReadDataSourceStep;
512
+ if (typed.data === FlowResponseDataEnum.status) {
513
+ return AmfNamespace.aml.vocabularies.shapes.number;
514
+ }
515
+ }
516
+ }
517
+ return AmfNamespace.w3.xmlSchema.string;
518
+ }
519
+
520
+ protected validateRegexPattern(e: Event): void {
521
+ const input = e.target as Input;
522
+ try {
523
+ RegExp(input.value);
524
+ input.setCustomValidity('');
525
+ } catch (_) {
526
+ input.setCustomValidity('Pattern is invalid');
527
+ }
528
+ input.reportValidity();
529
+ }
530
+
531
+ protected handleVariableNameChange(e: Event): void {
532
+ const step = this.stepFromChangeEvent(e) as DataSteps.ISetVariableStep | DataSteps.IDeleteVariableStep | undefined;
533
+ if (!step) {
534
+ return;
535
+ }
536
+ const input = e.target as Input;
537
+ step.name = input.value;
538
+ this.requestUpdate();
539
+ this.notifyChange();
540
+ }
541
+
542
+ protected handleRemoveStep(e: Event): void {
543
+ const target = e.currentTarget as HTMLElement;
544
+ const assertionOrActionIndex = Number(target.dataset.index);
545
+ const stepIndex = Number(target.dataset.stepIndex);
546
+ if (Number.isNaN(assertionOrActionIndex) || Number.isNaN(stepIndex)) {
547
+ return;
548
+ }
549
+ const stepsTarget = this.getStepsTarget(assertionOrActionIndex);
550
+ if (!stepsTarget) {
551
+ return;
552
+ }
553
+ this.removeStep(stepsTarget, stepIndex);
554
+ }
555
+
556
+ protected handleConfigureDeleteCookieStep(e: Event): void {
557
+ const info = this.getEventStepLocation(e);
558
+ if (!info) {
559
+ return;
560
+ }
561
+ const stepsTarget = this.getStepsTarget(info.actionIndex);
562
+ if (!stepsTarget) {
563
+ return;
564
+ }
565
+ const step = stepsTarget.steps[info.stepIndex] as DataSteps.IDeleteCookieStep;
566
+ const dialog = document.createElement('delete-cookie-action-dialog');
567
+ dialog.step = step;
568
+ dialog.modal = true;
569
+ dialog.open = true;
570
+ document.body.appendChild(dialog);
571
+ dialog.addEventListener('close', (ev: Event): void => {
572
+ document.parentElement?.removeChild(dialog);
573
+ const typed = ev as CustomEvent<UiDialogClosingReason>;
574
+ if (typed.detail.cancelled) {
575
+ return;
576
+ }
577
+ const value = typed.detail.value as DataSteps.IDeleteCookieStep;
578
+
579
+ if (!stepsTarget) {
580
+ return;
581
+ }
582
+ stepsTarget.steps[info.stepIndex] = value;
583
+ this.notifyChange();
584
+ this.requestUpdate();
585
+ });
586
+ }
587
+
588
+ protected handleConfigureSetCookieStep(e: Event): void {
589
+ const info = this.getEventStepLocation(e);
590
+ if (!info) {
591
+ return;
592
+ }
593
+ const stepsTarget = this.getStepsTarget(info.actionIndex);
594
+ if (!stepsTarget) {
595
+ return;
596
+ }
597
+ const step = stepsTarget.steps[info.stepIndex] as DataSteps.ISetCookieStep;
598
+ const dialog = document.createElement('set-cookie-action-dialog');
599
+ dialog.step = step;
600
+ dialog.modal = true;
601
+ dialog.open = true;
602
+ document.body.appendChild(dialog);
603
+ dialog.addEventListener('close', (ev: Event): void => {
604
+ document.parentElement?.removeChild(dialog);
605
+ const typed = ev as CustomEvent<UiDialogClosingReason>;
606
+ if (typed.detail.cancelled) {
607
+ return;
608
+ }
609
+ const value = typed.detail.value as DataSteps.ISetCookieStep;
610
+ if (!stepsTarget) {
611
+ return;
612
+ }
613
+ stepsTarget.steps[info.stepIndex] = value;
614
+ this.notifyChange();
615
+ this.requestUpdate();
616
+ });
617
+ }
618
+
619
+ protected getEventStepLocation(e: Event): { actionIndex: number, stepIndex: number } | undefined {
620
+ const button = e.currentTarget as HTMLElement;
621
+ const { index: ai, stepIndex: si } = button.dataset;
622
+ const actionIndex = Number(ai);
623
+ const stepIndex = Number(si);
624
+ if (Number.isNaN(actionIndex) || Number.isNaN(stepIndex)) {
625
+ return undefined;
626
+ }
627
+ return {
628
+ actionIndex,
629
+ stepIndex,
630
+ }
631
+ }
632
+
633
+ protected renderBlockChip(label: string, group: string, kind: string, opts: ChipCreateInfo = {}): TemplateResult {
634
+ const { data, disabled, source, variant, title } = opts;
635
+ return html`
636
+ <ui-chip
637
+ draggable="true"
638
+ data-group="${group}"
639
+ data-kind="${kind}"
640
+ data-source="${ifDefined(source)}"
641
+ data-data="${ifDefined(data)}"
642
+ data-variant="${ifDefined(variant)}"
643
+ @dragstart="${this.handleChipDragStart}"
644
+ @dragend="${this.handleChipDragEnd}"
645
+ ?disabled="${disabled}"
646
+ title="${ifDefined(title)}"
647
+ >${label}</ui-chip>
648
+ `;
649
+ }
650
+
651
+ protected renderDropSpacer(assertionOrActionIndex: number, stepIndex: number): TemplateResult {
652
+ return html`<div class="drop-target spacer"
653
+ data-index="${assertionOrActionIndex}"
654
+ data-step-index="${stepIndex}"
655
+ @drop="${this.handleDrop}"
656
+ @dragover="${this.handleTargetDragOver}"
657
+ @dragleave="${this.handleTargetDragLeave}"
658
+ > </div>`;
659
+ }
660
+
661
+ protected renderStepPill(label: string, assertionOrActionIndex: number, stepIndex: number, suffix?: TemplateResult): TemplateResult {
662
+ return html`
663
+ <span class="step-pill with-icon">
664
+ ${label}
665
+ ${suffix || nothing}
666
+ <ui-icon-button
667
+ title="Remove"
668
+ aria-label="Deletes this step"
669
+ @click="${this.handleRemoveStep}"
670
+ data-index="${assertionOrActionIndex}"
671
+ data-step-index="${stepIndex}"
672
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
673
+ </span>
674
+ `;
675
+ }
676
+
677
+ protected renderSteps(item: StepsTarget, assertionOrActionIndex: number): TemplateResult {
678
+ const content = Array.isArray(item.steps) && !!item.steps.length ? this.renderStepsList(item.steps, assertionOrActionIndex) : this.renderEmptyStep(assertionOrActionIndex);
679
+ return html`
680
+ <div
681
+ class="steps"
682
+ data-index="${assertionOrActionIndex}"
683
+ @drop="${this.handleDrop}"
684
+ @dragover="${this.handleTargetDragOver}"
685
+ @dragleave="${this.handleTargetDragLeave}"
686
+ >${content}</div>
687
+ `;
688
+ }
689
+
690
+ protected renderEmptyStep(actionIndex: number): TemplateResult {
691
+ return html`
692
+ <span class="step-pill empty drop-target space-step-left" data-index="${actionIndex}" @drop="${this.handleDrop}" @dragover="${this.handleTargetDragOver}">Empty slot</span>
693
+ <span class="drop-info drop-target space-step-left" data-index="${actionIndex}" @drop="${this.handleDrop}" @dragover="${this.handleTargetDragOver}">Drop an action here</span>
694
+ `;
695
+ }
696
+
697
+ protected renderStepsList(steps: IHttpStep[], assertionOrActionIndex: number): TemplateResult[] {
698
+ const items: TemplateResult[] = [];
699
+ steps.forEach((item, stepIndex) => {
700
+ const content = this.renderStep(item, assertionOrActionIndex, stepIndex);
701
+ if (content) {
702
+ items.push(html`
703
+ <div class="step-unit">
704
+ ${this.renderDropSpacer(assertionOrActionIndex, stepIndex)}
705
+ ${content}
706
+ </div>
707
+ `);
708
+ }
709
+ });
710
+ return items;
711
+ }
712
+
713
+ protected renderStep(item: IHttpStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult | undefined {
714
+ const { kind } = item;
715
+ switch (kind) {
716
+ // actions
717
+ case DataSteps.ReadDataSourceStepKind: return this.renderReadDataSourceStep(item, assertionOrActionIndex, stepIndex);
718
+ case DataSteps.ReadValueStepKind: return this.renderReadValueStep(item as DataSteps.IReadValueStep, assertionOrActionIndex, stepIndex);
719
+ case DataSteps.DeleteCookieStepKind: return this.renderDeleteCookieStep(item as DataSteps.IDeleteCookieStep, assertionOrActionIndex, stepIndex);
720
+ case DataSteps.SetCookieStepKind: return this.renderSetCookieStep(item as DataSteps.ISetCookieStep, assertionOrActionIndex, stepIndex);
721
+ case DataSteps.SetVariableStepKind: return this.renderSetVariableStep(item as DataSteps.ISetVariableStep, assertionOrActionIndex, stepIndex);
722
+ case DataSteps.DeleteVariableStepKind: return this.renderDeleteVariableStep(item as DataSteps.IDeleteVariableStep, assertionOrActionIndex, stepIndex);
723
+
724
+ // transformations
725
+ case TransformationSteps.AsNumberStepKind: return this.renderStepPill('As number', assertionOrActionIndex, stepIndex);
726
+ case TransformationSteps.AsLowerCaseStepKind: return this.renderStepPill('To lower case', assertionOrActionIndex, stepIndex);
727
+ case TransformationSteps.AsUpperCaseStepKind: return this.renderStepPill('To upper case', assertionOrActionIndex, stepIndex);
728
+ case TransformationSteps.TrimStepKind: return this.renderStepPill('Trim', assertionOrActionIndex, stepIndex);
729
+ case TransformationSteps.RoundStepKind: return this.renderRoundStep(item as TransformationSteps.IRoundStep, assertionOrActionIndex, stepIndex);
730
+ case TransformationSteps.SubstringStepKind: return this.renderSubstringStep(item as TransformationSteps.ISubstringStep, assertionOrActionIndex, stepIndex);
731
+
732
+ // assertions
733
+ case CoreAssertions.EqualAssertionKind: return this.renderEqualAssertion(item as CoreAssertions.IEqualAssertion, assertionOrActionIndex, stepIndex);
734
+ case CoreAssertions.NotEqualAssertionKind: return this.renderNotEqualAssertion(item as CoreAssertions.INotEqualAssertion, assertionOrActionIndex, stepIndex);
735
+ case CoreAssertions.GreaterThanAssertionKind: return this.renderGreaterThanAssertion(item as CoreAssertions.IGreaterThanAssertion, assertionOrActionIndex, stepIndex);
736
+ case CoreAssertions.LessThanAssertionKind: return this.renderLessThanAssertion(item as CoreAssertions.ILessThanAssertion, assertionOrActionIndex, stepIndex);
737
+ case CoreAssertions.IncludesAssertionKind: return this.renderIncludesAssertion(item as CoreAssertions.IIncludesAssertion, assertionOrActionIndex, stepIndex);
738
+ case CoreAssertions.NotIncludesAssertionKind: return this.renderNotIncludesAssertion(item as CoreAssertions.INotIncludesAssertion, assertionOrActionIndex, stepIndex);
739
+ case CoreAssertions.MatchesAssertionKind: return this.renderMatchesAssertion(item as CoreAssertions.IMatchesAssertion, assertionOrActionIndex, stepIndex);
740
+ case CoreAssertions.OkAssertionKind: return this.renderStepPill('Is OK', assertionOrActionIndex, stepIndex);
741
+ case CoreAssertions.NotOkAssertionKind: return this.renderStepPill('Is not OK', assertionOrActionIndex, stepIndex);
742
+ case CoreAssertions.ToBeAssertionKind: return this.renderToBeAssertion(item as CoreAssertions.IToBeAssertion, assertionOrActionIndex, stepIndex);
743
+ case CoreAssertions.NotToBeAssertionKind: return this.renderNotToBeAssertion(item as CoreAssertions.INotToBeAssertion, assertionOrActionIndex, stepIndex);
744
+
745
+ default:
746
+ // eslint-disable-next-line no-console
747
+ console.warn(`Unsupported step`, kind);
748
+ return undefined;
749
+ }
750
+ }
751
+
752
+ protected renderReadDataSourceStep(item: DataSteps.IReadDataSourceStep, actionIndex: number, stepIndex: number): TemplateResult | undefined {
753
+ const { data, source } = item;
754
+ if (!data || !source) {
755
+ // invalid configuration
756
+ return undefined;
757
+ }
758
+ let label: string | undefined;
759
+ if (source === FlowSourceEnum.response) {
760
+ if (data === FlowResponseDataEnum.url) {
761
+ label = 'Response URL';
762
+ } else if (data === FlowResponseDataEnum.headers) {
763
+ label = 'Response headers';
764
+ } else if (data === FlowResponseDataEnum.status) {
765
+ label = 'Status code';
766
+ } else if (data === FlowResponseDataEnum.statusText) {
767
+ label = 'Status message';
768
+ } else if (data === FlowResponseDataEnum.body) {
769
+ label = 'Response body';
770
+ }
771
+ } else if (source === FlowSourceEnum.request) {
772
+ if (data === FlowRequestDataEnum.url) {
773
+ label = 'Request URL';
774
+ } else if (data === FlowRequestDataEnum.headers) {
775
+ label = 'Request headers';
776
+ } else if (data === FlowRequestDataEnum.body) {
777
+ label = 'Request body';
778
+ } else if (data === FlowRequestDataEnum.method) {
779
+ label = 'Request method';
780
+ }
781
+ }
782
+ if (!label) {
783
+ return undefined;
784
+ }
785
+ return this.renderStepPill(label, actionIndex, stepIndex);
786
+ }
787
+
788
+ protected renderReadValueStep(item: DataSteps.IReadValueStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
789
+ const pill = this.renderStepPill('Read value', assertionOrActionIndex, stepIndex);
790
+ return html`
791
+ ${pill}
792
+ <ui-text-field
793
+ name="value.${assertionOrActionIndex}.${stepIndex}"
794
+ data-assertion-index="${assertionOrActionIndex}"
795
+ data-step-index="${stepIndex}"
796
+ label="Path to value"
797
+ required
798
+ .value="${live(item.path || '')}"
799
+ class="space-step-left"
800
+ @change="${this.handleReadValueStepChange}"
801
+ ></ui-text-field>
802
+ `;
803
+ }
804
+
805
+ protected renderDeleteCookieStep(item: DataSteps.IDeleteCookieStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
806
+ const { name, url } = item;
807
+ let label: string;
808
+ if (name && url) {
809
+ label = 'by name and URL';
810
+ } else if (name) {
811
+ label = 'by name';
812
+ } else if (url) {
813
+ label = 'by URL';
814
+ } else {
815
+ label = 'all cookies';
816
+ }
817
+
818
+ const suffix = html`
819
+ <ui-icon-button
820
+ title="Configure this step"
821
+ aria-label="Configure this step"
822
+ data-index="${assertionOrActionIndex}"
823
+ data-step-index="${stepIndex}"
824
+ @click="${this.handleConfigureDeleteCookieStep}"
825
+ ><ui-icon icon="tune" role="presentation"></ui-icon></ui-icon-button>
826
+ `;
827
+ const pill = this.renderStepPill(`Delete cookie (${label})`, assertionOrActionIndex, stepIndex, suffix);
828
+ return pill;
829
+ }
830
+
831
+ protected renderSetCookieStep(item: DataSteps.ISetCookieStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
832
+ const suffix = html`
833
+ <ui-icon-button
834
+ title="Configure this step"
835
+ aria-label="Configure this step"
836
+ data-index="${assertionOrActionIndex}"
837
+ data-step-index="${stepIndex}"
838
+ @click="${this.handleConfigureSetCookieStep}"
839
+ ><ui-icon icon="tune" role="presentation"></ui-icon></ui-icon-button>
840
+ `;
841
+ const pill = this.renderStepPill('Set cookie', assertionOrActionIndex, stepIndex, suffix);
842
+ return pill;
843
+ }
844
+
845
+ protected renderSetVariableStep(item: DataSteps.ISetVariableStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
846
+ const { name = '' } = item;
847
+ const pill = this.renderStepPill('Set variable', assertionOrActionIndex, stepIndex);
848
+ return html`
849
+ ${pill}
850
+ <ui-text-field
851
+ name="variable.${assertionOrActionIndex}.${stepIndex}"
852
+ data-assertion-index="${assertionOrActionIndex}"
853
+ data-step-index="${stepIndex}"
854
+ label="Variable name"
855
+ required
856
+ .value="${live(name)}"
857
+ @change="${this.handleVariableNameChange}"
858
+ class="space-step-left"
859
+ pattern="[a-zA-Z0-9_]+"
860
+ aria-label="Variable name"
861
+ ></ui-text-field>
862
+ `;
863
+ }
864
+
865
+ protected renderDeleteVariableStep(item: DataSteps.IDeleteVariableStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
866
+ const { name = '' } = item;
867
+ const pill = this.renderStepPill('Delete variable', assertionOrActionIndex, stepIndex);
868
+ return html`
869
+ ${pill}
870
+ <ui-text-field
871
+ name="variable.${assertionOrActionIndex}.${stepIndex}"
872
+ data-assertion-index="${assertionOrActionIndex}"
873
+ data-step-index="${stepIndex}"
874
+ label="Variable name"
875
+ required
876
+ .value="${live(name)}"
877
+ @change="${this.handleVariableNameChange}"
878
+ class="space-step-left"
879
+ pattern="[a-zA-Z0-9_]+"
880
+ aria-label="Variable name"
881
+ ></ui-text-field>
882
+ `;
883
+ }
884
+
885
+ protected renderRoundStep(item: TransformationSteps.IRoundStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
886
+ const pill = this.renderStepPill('Round', assertionOrActionIndex, stepIndex);
887
+ const { precision = 0 } = item;
888
+ return html`
889
+ ${pill}
890
+ <ui-text-field
891
+ name="precision.${assertionOrActionIndex}.${stepIndex}"
892
+ data-assertion-index="${assertionOrActionIndex}"
893
+ data-step-index="${stepIndex}"
894
+ label="Precision"
895
+ required
896
+ .value="${live(String(precision))}"
897
+ @change="${this.handleRoundPrecisionChange}"
898
+ class="space-step-left number-input"
899
+ type="number"
900
+ min="0"
901
+ max="100"
902
+ step="1"
903
+ title="The number of digits to appear after the decimal point. Should be a value between 0 and 100, inclusive."
904
+ ></ui-text-field>
905
+ `;
906
+ }
907
+
908
+ protected renderSubstringStep(item: TransformationSteps.ISubstringStep, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
909
+ const pill = this.renderStepPill('Substring', assertionOrActionIndex, stepIndex);
910
+ const { start = 0, end } = item;
911
+ return html`
912
+ ${pill}
913
+ <ui-text-field
914
+ name="start.${assertionOrActionIndex}.${stepIndex}"
915
+ data-assertion-index="${assertionOrActionIndex}"
916
+ data-step-index="${stepIndex}"
917
+ label="Start"
918
+ required
919
+ .value="${live(String(start))}"
920
+ @change="${this.handleSubstringStartChange}"
921
+ class="space-step-left number-input"
922
+ type="number"
923
+ step="1"
924
+ title="The index of the first character to include in the returned substring."
925
+ ></ui-text-field>
926
+
927
+ <ui-text-field
928
+ name="end.${assertionOrActionIndex}.${stepIndex}"
929
+ data-assertion-index="${assertionOrActionIndex}"
930
+ data-step-index="${stepIndex}"
931
+ label="End"
932
+ .value="${live(end ? String(end) : '')}"
933
+ @change="${this.handleSubstringEndChange}"
934
+ class="space-step-left number-input"
935
+ type="number"
936
+ step="1"
937
+ title="The index of the first character to exclude from the returned substring."
938
+ ></ui-text-field>
939
+ `;
940
+ }
941
+
942
+ protected renderEqualAssertion(item: CoreAssertions.IEqualAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
943
+ return html`
944
+ <ui-text-field
945
+ name="equal.${assertionOrActionIndex}.${stepIndex}"
946
+ data-assertion-index="${assertionOrActionIndex}"
947
+ data-step-index="${stepIndex}"
948
+ data-kind="${CoreAssertions.EqualAssertionKind}"
949
+ label="Equal to"
950
+ required
951
+ .value="${live(item.value || '')}"
952
+ @change="${this.handleEqualAssertionValueChange}"
953
+ >
954
+ <ui-icon-button
955
+ slot="suffix"
956
+ title="Remove assertion"
957
+ aria-label="Deletes this assertion"
958
+ @click="${this.handleRemoveStep}"
959
+ data-index="${assertionOrActionIndex}"
960
+ data-step-index="${stepIndex}"
961
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
962
+ </ui-text-field>
963
+ `;
964
+ }
965
+
966
+ protected renderNotEqualAssertion(item: CoreAssertions.INotEqualAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
967
+ return html`
968
+ <ui-text-field
969
+ name="not-equal.${assertionOrActionIndex}.${stepIndex}"
970
+ data-assertion-index="${assertionOrActionIndex}"
971
+ data-step-index="${stepIndex}"
972
+ data-kind="${CoreAssertions.NotEqualAssertionKind}"
973
+ label="Not equal to"
974
+ required
975
+ .value="${live(item.value || '')}"
976
+ @change="${this.handleEqualAssertionValueChange}"
977
+ >
978
+ <ui-icon-button
979
+ slot="suffix"
980
+ title="Remove assertion"
981
+ aria-label="Deletes this assertion"
982
+ @click="${this.handleRemoveStep}"
983
+ data-index="${assertionOrActionIndex}"
984
+ data-step-index="${stepIndex}"
985
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
986
+ </ui-text-field>
987
+ `;
988
+ }
989
+
990
+ protected renderGreaterThanAssertion(item: CoreAssertions.IGreaterThanAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
991
+ const { equal, value } = item;
992
+ const label = equal ? 'Greater than equal' : 'Greater than';
993
+ const effectiveValue = typeof value === 'number' ? String(value) : '';
994
+ return html`
995
+ <ui-text-field
996
+ name="value.${assertionOrActionIndex}.${stepIndex}"
997
+ data-assertion-index="${assertionOrActionIndex}"
998
+ data-step-index="${stepIndex}"
999
+ data-kind="${CoreAssertions.GreaterThanAssertionKind}"
1000
+ data-variant="${equal ? 'equal' : ''}"
1001
+ label="${label}"
1002
+ required
1003
+ .value="${live(effectiveValue)}"
1004
+ @change="${this.handleGreaterThanAssertionValueChange}"
1005
+ inputMode="numeric"
1006
+ >
1007
+ <ui-icon-button
1008
+ slot="suffix"
1009
+ title="Remove assertion"
1010
+ aria-label="Deletes this assertion"
1011
+ @click="${this.handleRemoveStep}"
1012
+ data-index="${assertionOrActionIndex}"
1013
+ data-step-index="${stepIndex}"
1014
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1015
+ </ui-text-field>
1016
+ `;
1017
+ }
1018
+
1019
+ protected renderLessThanAssertion(item: CoreAssertions.ILessThanAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
1020
+ const { equal, value } = item;
1021
+ const label = equal ? 'Less than equal' : 'Less than';
1022
+ const effectiveValue = typeof value === 'number' ? String(value) : '';
1023
+ return html`
1024
+ <ui-text-field
1025
+ name="value.${assertionOrActionIndex}.${stepIndex}"
1026
+ data-assertion-index="${assertionOrActionIndex}"
1027
+ data-step-index="${stepIndex}"
1028
+ data-kind="${CoreAssertions.LessThanAssertionKind}"
1029
+ data-variant="${equal ? 'equal' : ''}"
1030
+ label="${label}"
1031
+ required
1032
+ .value="${live(effectiveValue)}"
1033
+ @change="${this.handleLessThanAssertionValueChange}"
1034
+ inputMode="numeric"
1035
+ >
1036
+ <ui-icon-button
1037
+ slot="suffix"
1038
+ title="Remove assertion"
1039
+ aria-label="Deletes this assertion"
1040
+ @click="${this.handleRemoveStep}"
1041
+ data-index="${assertionOrActionIndex}"
1042
+ data-step-index="${stepIndex}"
1043
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1044
+ </ui-text-field>
1045
+ `;
1046
+ }
1047
+
1048
+ protected renderIncludesAssertion(item: CoreAssertions.IIncludesAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
1049
+ const { value } = item;
1050
+ return html`
1051
+ <ui-text-field
1052
+ name="includes.${assertionOrActionIndex}.${stepIndex}"
1053
+ data-assertion-index="${assertionOrActionIndex}"
1054
+ data-step-index="${stepIndex}"
1055
+ data-kind="${CoreAssertions.IncludesAssertionKind}"
1056
+ label="Includes value"
1057
+ required
1058
+ .value="${live(value || '')}"
1059
+ @change="${this.handleIncludesAssertionValueChange}"
1060
+ >
1061
+ <ui-icon-button
1062
+ slot="suffix"
1063
+ title="Remove assertion"
1064
+ aria-label="Deletes this assertion"
1065
+ @click="${this.handleRemoveStep}"
1066
+ data-index="${assertionOrActionIndex}"
1067
+ data-step-index="${stepIndex}"
1068
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1069
+ </ui-text-field>
1070
+ `;
1071
+ }
1072
+
1073
+ protected renderNotIncludesAssertion(item: CoreAssertions.INotIncludesAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
1074
+ const { value } = item;
1075
+ return html`
1076
+ <ui-text-field
1077
+ name="not-includes.${assertionOrActionIndex}.${stepIndex}"
1078
+ data-assertion-index="${assertionOrActionIndex}"
1079
+ data-step-index="${stepIndex}"
1080
+ data-kind="${CoreAssertions.NotIncludesAssertionKind}"
1081
+ label="Not includes value"
1082
+ required
1083
+ .value="${live(value || '')}"
1084
+ @change="${this.handleIncludesAssertionValueChange}"
1085
+ >
1086
+ <ui-icon-button
1087
+ slot="suffix"
1088
+ title="Remove assertion"
1089
+ aria-label="Deletes this assertion"
1090
+ @click="${this.handleRemoveStep}"
1091
+ data-index="${assertionOrActionIndex}"
1092
+ data-step-index="${stepIndex}"
1093
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1094
+ </ui-text-field>
1095
+ `;
1096
+ }
1097
+
1098
+ protected renderMatchesAssertion(item: CoreAssertions.IMatchesAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
1099
+ const { value } = item;
1100
+ return html`
1101
+ <ui-text-field
1102
+ name="matches.${assertionOrActionIndex}.${stepIndex}"
1103
+ data-assertion-index="${assertionOrActionIndex}"
1104
+ data-step-index="${stepIndex}"
1105
+ data-kind="${CoreAssertions.MatchesAssertionKind}"
1106
+ label="Matches regex"
1107
+ required
1108
+ .value="${live(value || '')}"
1109
+ @change="${this.handleMatchesAssertionValueChange}"
1110
+ @input="${this.validateRegexPattern}"
1111
+ invalidText="Pattern is invalid"
1112
+ >
1113
+ <ui-icon-button
1114
+ slot="suffix"
1115
+ title="Remove assertion"
1116
+ aria-label="Deletes this assertion"
1117
+ @click="${this.handleRemoveStep}"
1118
+ data-index="${assertionOrActionIndex}"
1119
+ data-step-index="${stepIndex}"
1120
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1121
+ </ui-text-field>
1122
+ `;
1123
+ }
1124
+
1125
+ protected renderToBeAssertion(item: CoreAssertions.IToBeAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
1126
+ const { value } = item;
1127
+ const types = Object.values(CoreAssertions.ToBeTypes);
1128
+ return html`
1129
+ <ui-text-field
1130
+ name="to-be.${assertionOrActionIndex}.${stepIndex}"
1131
+ data-assertion-index="${assertionOrActionIndex}"
1132
+ data-step-index="${stepIndex}"
1133
+ data-kind="${CoreAssertions.ToBeAssertionKind}"
1134
+ label="To be..."
1135
+ required
1136
+ .value="${live(value || '')}"
1137
+ @change="${this.handleToBeAssertionValueChange}"
1138
+ .list="${types}"
1139
+ >
1140
+ <ui-icon-button
1141
+ slot="suffix"
1142
+ title="Remove assertion"
1143
+ aria-label="Deletes this assertion"
1144
+ @click="${this.handleRemoveStep}"
1145
+ data-index="${assertionOrActionIndex}"
1146
+ data-step-index="${stepIndex}"
1147
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1148
+ </ui-text-field>
1149
+ `;
1150
+ }
1151
+
1152
+ protected renderNotToBeAssertion(item: CoreAssertions.INotToBeAssertion, assertionOrActionIndex: number, stepIndex: number): TemplateResult {
1153
+ const { value } = item;
1154
+ const types = Object.values(CoreAssertions.ToBeTypes);
1155
+ return html`
1156
+ <ui-text-field
1157
+ name="not-to-be.${assertionOrActionIndex}.${stepIndex}"
1158
+ data-assertion-index="${assertionOrActionIndex}"
1159
+ data-step-index="${stepIndex}"
1160
+ data-kind="${CoreAssertions.NotToBeAssertionKind}"
1161
+ label="Not to be..."
1162
+ required
1163
+ .value="${live(value || '')}"
1164
+ @change="${this.handleToBeAssertionValueChange}"
1165
+ .list="${types}"
1166
+ >
1167
+ <ui-icon-button
1168
+ slot="suffix"
1169
+ title="Remove assertion"
1170
+ aria-label="Deletes this assertion"
1171
+ @click="${this.handleRemoveStep}"
1172
+ data-index="${assertionOrActionIndex}"
1173
+ data-step-index="${stepIndex}"
1174
+ ><ui-icon icon="close" role="presentation"></ui-icon></ui-icon-button>
1175
+ </ui-text-field>
1176
+ `;
1177
+ }
1178
+
1179
+ protected renderResponseDataSourceSuggestions(disabled = false): TemplateResult {
1180
+ return html`
1181
+ <details class="action-group" open>
1182
+ <summary>Data Source</summary>
1183
+ <div class="group-content">
1184
+ ${this.renderBlockChip('Status code', 'data-source', DataSteps.ReadDataSourceStepKind, {
1185
+ source: FlowSourceEnum.response,
1186
+ data: FlowResponseDataEnum.status,
1187
+ disabled,
1188
+ title: 'Reads the response status code and passes it to the next step.',
1189
+ })}
1190
+ ${this.renderBlockChip('Response headers', 'data-source', DataSteps.ReadDataSourceStepKind, {
1191
+ source: FlowSourceEnum.response,
1192
+ data: FlowResponseDataEnum.headers,
1193
+ disabled,
1194
+ title: 'Reads the response headers and passes them to the next step.',
1195
+ })}
1196
+ ${this.renderBlockChip('Response body', 'data-source', DataSteps.ReadDataSourceStepKind, {
1197
+ source: FlowSourceEnum.response,
1198
+ data: FlowResponseDataEnum.body,
1199
+ disabled,
1200
+ title: 'Reads the response body and passes it to the next step.',
1201
+ })}
1202
+ ${this.renderBlockChip('Status message', 'data-source', DataSteps.ReadDataSourceStepKind, {
1203
+ source: FlowSourceEnum.response,
1204
+ data: FlowResponseDataEnum.statusText,
1205
+ disabled,
1206
+ title: 'Reads the response status message and passes it to the next step.',
1207
+ })}
1208
+ </div>
1209
+ </details>
1210
+ `;
1211
+ }
1212
+
1213
+ protected renderRequestDataSourceSuggestions(disabled = false): TemplateResult {
1214
+ return html`
1215
+ <details class="action-group" open>
1216
+ <summary>Data Source</summary>
1217
+ <div class="group-content">
1218
+ ${this.renderBlockChip('Request headers', 'data-source', DataSteps.ReadDataSourceStepKind, {
1219
+ source: FlowSourceEnum.request,
1220
+ data: FlowRequestDataEnum.headers,
1221
+ disabled,
1222
+ title: 'Reads the request headers and passes them to the next step.',
1223
+ })}
1224
+ ${this.renderBlockChip('Request body', 'data-source', DataSteps.ReadDataSourceStepKind, {
1225
+ source: FlowSourceEnum.request,
1226
+ data: FlowRequestDataEnum.body,
1227
+ disabled,
1228
+ title: 'Reads the request body and passes it to the next step.',
1229
+ })}
1230
+ ${this.renderBlockChip('Request method', 'data-source', DataSteps.ReadDataSourceStepKind, {
1231
+ source: FlowSourceEnum.request,
1232
+ data: FlowRequestDataEnum.method,
1233
+ disabled,
1234
+ title: 'Reads the request method and passes it to the next step.',
1235
+ })}
1236
+ </div>
1237
+ </details>
1238
+ `;
1239
+ }
1240
+
1241
+ protected renderTransformationSuggestions(disabled = false): TemplateResult {
1242
+ return html`
1243
+ <details class="action-group" open>
1244
+ <summary>Transformation</summary>
1245
+ <div class="group-content">
1246
+ ${this.renderBlockChip('Read value', 'transformation', DataSteps.ReadValueStepKind, {
1247
+ disabled,
1248
+ title: 'Reads a value from the previous step. Configure the path to the value.',
1249
+ })}
1250
+ ${this.renderBlockChip('As number', 'transformation', TransformationSteps.AsNumberStepKind, {
1251
+ disabled,
1252
+ title: 'Transforms the value received from the previous step to a number.'
1253
+ })}
1254
+ ${this.renderBlockChip('Round', 'transformation', TransformationSteps.RoundStepKind, {
1255
+ disabled,
1256
+ title: 'Rounds the value received from the previous step with a precision',
1257
+ })}
1258
+ ${this.renderBlockChip('To lower case', 'transformation', TransformationSteps.AsLowerCaseStepKind, {
1259
+ disabled,
1260
+ title: 'Transforms the value received from the previous step to a lower case string',
1261
+ })}
1262
+ ${this.renderBlockChip('To upper case', 'transformation', TransformationSteps.AsUpperCaseStepKind, {
1263
+ disabled,
1264
+ title: 'Transforms the value received from the previous step to an upper case string',
1265
+ })}
1266
+ ${this.renderBlockChip('Trim', 'transformation', TransformationSteps.TrimStepKind, {
1267
+ disabled,
1268
+ title: 'Treats the value received from the previous step as string as trims the whitespace.',
1269
+ })}
1270
+ ${this.renderBlockChip('Substring', 'transformation', TransformationSteps.SubstringStepKind, {
1271
+ disabled,
1272
+ title: 'Passes a sub string of the current value to the next step.',
1273
+ })}
1274
+ </div>
1275
+ </details>
1276
+ `;
1277
+ }
1278
+
1279
+ protected renderActionSuggestions(disabled = false): TemplateResult {
1280
+ return html`
1281
+ <details class="action-group" open>
1282
+ <summary>Actions</summary>
1283
+ <div class="group-content">
1284
+ ${this.renderBlockChip('Set cookie', 'action', DataSteps.SetCookieStepKind, {
1285
+ disabled,
1286
+ title: 'Sets and stores a cookie',
1287
+ })}
1288
+ ${this.renderBlockChip('Delete cookie', 'action', DataSteps.DeleteCookieStepKind, {
1289
+ disabled,
1290
+ title: 'Deletes a cookie.',
1291
+ })}
1292
+ ${this.renderBlockChip('Set variable', 'action', DataSteps.SetVariableStepKind, {
1293
+ disabled,
1294
+ title: 'Sets a variable during the execution time. It does not store the value.',
1295
+ })}
1296
+ ${this.renderBlockChip('Unset variable', 'action', DataSteps.DeleteVariableStepKind, {
1297
+ disabled,
1298
+ title: 'Clears a variable during the execution time. It does not store the value.',
1299
+ })}
1300
+ </div>
1301
+ </details>
1302
+ `;
1303
+ }
1304
+
1305
+ protected renderAssertionSuggestions(disabled = false): TemplateResult {
1306
+ return html`
1307
+ <details class="action-group" open>
1308
+ <summary>Assertions</summary>
1309
+ <div class="group-content">
1310
+ ${this.renderBlockChip('Equal', 'assertion', CoreAssertions.EqualAssertionKind, { disabled })}
1311
+ ${this.renderBlockChip('Not equal', 'assertion', CoreAssertions.NotEqualAssertionKind, { disabled })}
1312
+ ${this.renderBlockChip('Greater than', 'assertion', CoreAssertions.GreaterThanAssertionKind, { disabled })}
1313
+ ${this.renderBlockChip('Greater than equal', 'assertion', CoreAssertions.GreaterThanAssertionKind, { disabled, variant: 'equal' })}
1314
+ ${this.renderBlockChip('Less than', 'assertion', CoreAssertions.LessThanAssertionKind, { disabled })}
1315
+ ${this.renderBlockChip('Less than equal', 'assertion', CoreAssertions.LessThanAssertionKind, { disabled, variant: 'equal' })}
1316
+ ${this.renderBlockChip('Includes', 'assertion', CoreAssertions.IncludesAssertionKind, { disabled })}
1317
+ ${this.renderBlockChip('Not includes', 'assertion', CoreAssertions.NotIncludesAssertionKind, { disabled })}
1318
+ ${this.renderBlockChip('Matches', 'assertion', CoreAssertions.MatchesAssertionKind, { disabled })}
1319
+ ${this.renderBlockChip('OK', 'assertion', CoreAssertions.OkAssertionKind, { disabled })}
1320
+ ${this.renderBlockChip('Not OK', 'assertion', CoreAssertions.NotOkAssertionKind, { disabled })}
1321
+ ${this.renderBlockChip('To be...', 'assertion', CoreAssertions.ToBeAssertionKind, { disabled })}
1322
+ ${this.renderBlockChip('Not to be...', 'assertion', CoreAssertions.NotToBeAssertionKind, { disabled })}
1323
+ </div>
1324
+ </details>
1325
+ `;
1326
+ }
1327
+ }