@scalar/api-client 2.38.1 → 2.38.2

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 (1162) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/AddressBar-B4xnl66I.js +302 -0
  3. package/dist/AddressBar-B4xnl66I.js.map +1 -0
  4. package/dist/App-BVH4lIe8.js +533 -0
  5. package/dist/App-BVH4lIe8.js.map +1 -0
  6. package/dist/App-CvClwSlM.js +2510 -0
  7. package/dist/App-CvClwSlM.js.map +1 -0
  8. package/dist/CodeInput-C-igR77V.js +694 -0
  9. package/dist/CodeInput-C-igR77V.js.map +1 -0
  10. package/dist/CodeSnippet-D7Heh1nd.js +218 -0
  11. package/dist/CodeSnippet-D7Heh1nd.js.map +1 -0
  12. package/dist/Collection-4MT9WmDD.js +219 -0
  13. package/dist/Collection-4MT9WmDD.js.map +1 -0
  14. package/dist/CollectionAuthentication-MHWQpw74.js +56 -0
  15. package/dist/CollectionAuthentication-MHWQpw74.js.map +1 -0
  16. package/dist/CollectionCookies-DyjPPMdt.js +19 -0
  17. package/dist/CollectionCookies-DyjPPMdt.js.map +1 -0
  18. package/dist/CollectionEnvironment-Dw35vIqo.js +514 -0
  19. package/dist/CollectionEnvironment-Dw35vIqo.js.map +1 -0
  20. package/dist/CollectionOverview-TUdDIu5f.js +131 -0
  21. package/dist/CollectionOverview-TUdDIu5f.js.map +1 -0
  22. package/dist/CollectionScripts-CMNlBlby.js +19 -0
  23. package/dist/CollectionScripts-CMNlBlby.js.map +1 -0
  24. package/dist/CollectionServers-BrjTCfDe.js +168 -0
  25. package/dist/CollectionServers-BrjTCfDe.js.map +1 -0
  26. package/dist/CollectionSettings-HVSlp2Gv.js +87 -0
  27. package/dist/CollectionSettings-HVSlp2Gv.js.map +1 -0
  28. package/dist/CollectionSync-CAflc5yW.js +19 -0
  29. package/dist/CollectionSync-CAflc5yW.js.map +1 -0
  30. package/dist/CommandActionInput-TkcAx6E8.js +97 -0
  31. package/dist/CommandActionInput-TkcAx6E8.js.map +1 -0
  32. package/dist/CommandPalette-CL8k4CoN.js +964 -0
  33. package/dist/CommandPalette-CL8k4CoN.js.map +1 -0
  34. package/dist/CommandPaletteImport-Diu5dDIY.js +622 -0
  35. package/dist/CommandPaletteImport-Diu5dDIY.js.map +1 -0
  36. package/dist/Cookies-DbOKTi1f.js +284 -0
  37. package/dist/Cookies-DbOKTi1f.js.map +1 -0
  38. package/dist/DataTable-BqbZKW3K.js +62 -0
  39. package/dist/DataTable-BqbZKW3K.js.map +1 -0
  40. package/dist/DataTableHeader-DJVB0jCZ.js +21 -0
  41. package/dist/DataTableHeader-DJVB0jCZ.js.map +1 -0
  42. package/dist/DataTableInput-yaU5g-kP.js +166 -0
  43. package/dist/DataTableInput-yaU5g-kP.js.map +1 -0
  44. package/dist/DataTableRow-c3XveEUO.js +57 -0
  45. package/dist/DataTableRow-c3XveEUO.js.map +1 -0
  46. package/dist/DeleteSidebarListElement-C-p87d03.js +78 -0
  47. package/dist/DeleteSidebarListElement-C-p87d03.js.map +1 -0
  48. package/dist/EditSidebarListElement-CodWPnM6.js +32 -0
  49. package/dist/EditSidebarListElement-CodWPnM6.js.map +1 -0
  50. package/dist/Editor-BomsGWHx.js +909 -0
  51. package/dist/Editor-BomsGWHx.js.map +1 -0
  52. package/dist/EmptyState-Cnm7hGW5.js +46 -0
  53. package/dist/EmptyState-Cnm7hGW5.js.map +1 -0
  54. package/dist/Environment-DJatRQIg.js +416 -0
  55. package/dist/Environment-DJatRQIg.js.map +1 -0
  56. package/dist/EnvironmentModal-DBEJ4Kzj.js +288 -0
  57. package/dist/EnvironmentModal-DBEJ4Kzj.js.map +1 -0
  58. package/dist/Form-CSKzyHGO.js +83 -0
  59. package/dist/Form-CSKzyHGO.js.map +1 -0
  60. package/dist/HttpMethod-rnWEgC3T.js +78 -0
  61. package/dist/HttpMethod-rnWEgC3T.js.map +1 -0
  62. package/dist/IconSelector-BDC_GQXv.js +67 -0
  63. package/dist/IconSelector-BDC_GQXv.js.map +1 -0
  64. package/dist/ImportCollection-DfX1UQ5u.js +804 -0
  65. package/dist/ImportCollection-DfX1UQ5u.js.map +1 -0
  66. package/dist/IntegrationLogo-B9EDW8db.js +51 -0
  67. package/dist/IntegrationLogo-B9EDW8db.js.map +1 -0
  68. package/dist/MainLayout-BEFMl1ud.js +281 -0
  69. package/dist/MainLayout-BEFMl1ud.js.map +1 -0
  70. package/dist/Modal-sQ9vH6MN.js +67 -0
  71. package/dist/Modal-sQ9vH6MN.js.map +1 -0
  72. package/dist/ModalClientContainer-qHsZi4wQ.js +65 -0
  73. package/dist/ModalClientContainer-qHsZi4wQ.js.map +1 -0
  74. package/dist/Request-gscRsGQ8.js +212 -0
  75. package/dist/Request-gscRsGQ8.js.map +1 -0
  76. package/dist/RequestAuth-BzBfIysT.js +989 -0
  77. package/dist/RequestAuth-BzBfIysT.js.map +1 -0
  78. package/dist/RequestRoot-3Bj8JZD-.js +1611 -0
  79. package/dist/RequestRoot-3Bj8JZD-.js.map +1 -0
  80. package/dist/RequestSection-HhdJj9hW.js +1582 -0
  81. package/dist/RequestSection-HhdJj9hW.js.map +1 -0
  82. package/dist/ResponseSection-DMJ0tw8E.js +949 -0
  83. package/dist/ResponseSection-DMJ0tw8E.js.map +1 -0
  84. package/dist/ScalarAsciiArt-BjuSnj8e.js +45 -0
  85. package/dist/ScalarAsciiArt-BjuSnj8e.js.map +1 -0
  86. package/dist/SectionFilter-hrtoRLwj.js +99 -0
  87. package/dist/SectionFilter-hrtoRLwj.js.map +1 -0
  88. package/dist/Server-DnA_BzPS.js +303 -0
  89. package/dist/Server-DnA_BzPS.js.map +1 -0
  90. package/dist/ServerVariablesForm-BRZ9XC8o.js +145 -0
  91. package/dist/ServerVariablesForm-BRZ9XC8o.js.map +1 -0
  92. package/dist/Settings-CYZzdJPO.js +347 -0
  93. package/dist/Settings-CYZzdJPO.js.map +1 -0
  94. package/dist/Sidebar-C6AdX6-N.js +73 -0
  95. package/dist/Sidebar-C6AdX6-N.js.map +1 -0
  96. package/dist/SidebarButton-BAagdMDe.js +37 -0
  97. package/dist/SidebarButton-BAagdMDe.js.map +1 -0
  98. package/dist/SidebarListElement-BfTPiihc.js +232 -0
  99. package/dist/SidebarListElement-BfTPiihc.js.map +1 -0
  100. package/dist/TheCommandPalette-Dl9TAeke.js +204 -0
  101. package/dist/TheCommandPalette-Dl9TAeke.js.map +1 -0
  102. package/dist/ValueEmitter-QYkZ9Hdc.js +20 -0
  103. package/dist/ValueEmitter-QYkZ9Hdc.js.map +1 -0
  104. package/dist/ViewLayout-BOXN0IYo.js +17 -0
  105. package/dist/ViewLayout-BOXN0IYo.js.map +1 -0
  106. package/dist/ViewLayoutCollapse-CiTb-Uml.js +86 -0
  107. package/dist/ViewLayoutCollapse-CiTb-Uml.js.map +1 -0
  108. package/dist/ViewLayoutContent-CvMoJYPF.js +13 -0
  109. package/dist/ViewLayoutContent-CvMoJYPF.js.map +1 -0
  110. package/dist/ViewLayoutSection-mUqKbQry.js +23 -0
  111. package/dist/ViewLayoutSection-mUqKbQry.js.map +1 -0
  112. package/dist/WatchModeToggle-D_eAiTWJ.js +41 -0
  113. package/dist/WatchModeToggle-D_eAiTWJ.js.map +1 -0
  114. package/dist/_plugin-vue_export-helper-BmmBcIzD.js +8 -0
  115. package/dist/analytics-BZimCWcw.js +7 -0
  116. package/dist/analytics-BZimCWcw.js.map +1 -0
  117. package/dist/build-request-security-BQjNr2MD.js +41 -0
  118. package/dist/build-request-security-BQjNr2MD.js.map +1 -0
  119. package/dist/code-input-iq-moLxi.js +775 -0
  120. package/dist/code-input-iq-moLxi.js.map +1 -0
  121. package/dist/components/AddressBar/AddressBar.vue.d.ts +1 -1
  122. package/dist/components/AddressBar/index.d.ts +1 -1
  123. package/dist/components/AddressBar/index.js +5 -4
  124. package/dist/components/CodeInput/CodeInput.vue.d.ts +1 -1
  125. package/dist/components/CodeInput/codeVariableWidget.d.ts +1 -1
  126. package/dist/components/CodeInput/index.d.ts +1 -1
  127. package/dist/components/CodeInput/index.js +2 -4
  128. package/dist/components/CommandPalette/index.d.ts +1 -1
  129. package/dist/components/CommandPalette/index.js +3 -4
  130. package/dist/components/DataTable/DataTableInput.vue.d.ts +2 -2
  131. package/dist/components/DataTable/index.d.ts +8 -8
  132. package/dist/components/DataTable/index.js +6 -18
  133. package/dist/components/Form/LabelInput.vue.d.ts +1 -1
  134. package/dist/components/HttpMethod/index.d.ts +1 -1
  135. package/dist/components/HttpMethod/index.js +2 -4
  136. package/dist/components/ImportCollection/index.d.ts +1 -1
  137. package/dist/components/ImportCollection/index.js +2 -4
  138. package/dist/components/ImportCollection/utils/import-collection.d.ts +1 -1
  139. package/dist/components/ImportCollection/utils/workspace-store-is-empty.d.ts +1 -1
  140. package/dist/components/Server/ServerVariablesForm.vue.d.ts +1 -1
  141. package/dist/components/Server/index.d.ts +3 -3
  142. package/dist/components/Server/index.js +3 -8
  143. package/dist/components/Sidebar/index.d.ts +1 -1
  144. package/dist/components/Sidebar/index.js +2 -4
  145. package/dist/components/ViewLayout/index.d.ts +1 -1
  146. package/dist/components/ViewLayout/index.js +2 -4
  147. package/dist/components/index.d.ts +3 -3
  148. package/dist/components/index.js +7 -8
  149. package/dist/components-CSxJTn6F.js +183 -0
  150. package/dist/components-CSxJTn6F.js.map +1 -0
  151. package/dist/components-ChixwQhN.js +61 -0
  152. package/dist/components-ChixwQhN.js.map +1 -0
  153. package/dist/computer-D7VW3Ruy.js +562 -0
  154. package/dist/computer-D7VW3Ruy.js.map +1 -0
  155. package/dist/consts-CyGRb9dl.js +318 -0
  156. package/dist/consts-CyGRb9dl.js.map +1 -0
  157. package/dist/curl-nbw1OxbV.js +54 -0
  158. package/dist/curl-nbw1OxbV.js.map +1 -0
  159. package/dist/data-table-PL7e8NRO.js +282 -0
  160. package/dist/data-table-PL7e8NRO.js.map +1 -0
  161. package/dist/editor-BZ_J0eze.js +466 -0
  162. package/dist/editor-BZ_J0eze.js.map +1 -0
  163. package/dist/environments-ByLK9lnC.js +592 -0
  164. package/dist/environments-ByLK9lnC.js.map +1 -0
  165. package/dist/formatters-DOGXZq9R.js +36 -0
  166. package/dist/formatters-DOGXZq9R.js.map +1 -0
  167. package/dist/forms-CZX6cFDS.js +42 -0
  168. package/dist/forms-CZX6cFDS.js.map +1 -0
  169. package/dist/get-active-environment-CkxyQ1dM.js +19 -0
  170. package/dist/get-active-environment-CkxyQ1dM.js.map +1 -0
  171. package/dist/get-resolved-url-BUCwrBzc.js +30 -0
  172. package/dist/get-resolved-url-BUCwrBzc.js.map +1 -0
  173. package/dist/get-server-url-o3On8CEr.js +32 -0
  174. package/dist/get-server-url-o3On8CEr.js.map +1 -0
  175. package/dist/get-servers-B_WNlQWB.js +106 -0
  176. package/dist/get-servers-B_WNlQWB.js.map +1 -0
  177. package/dist/get-snippet-DBRUSfZ2.js +39 -0
  178. package/dist/get-snippet-DBRUSfZ2.js.map +1 -0
  179. package/dist/global-cookies-D3ZS9ON3.js +184 -0
  180. package/dist/global-cookies-D3ZS9ON3.js.map +1 -0
  181. package/dist/hooks/index.d.ts +4 -4
  182. package/dist/hooks/index.js +3 -11
  183. package/dist/hooks/useSidebar.d.ts +1 -1
  184. package/dist/hooks-BvZxH4XB.js +80 -0
  185. package/dist/hooks-BvZxH4XB.js.map +1 -0
  186. package/dist/index.d.ts +3 -3
  187. package/dist/index.js +8 -12
  188. package/dist/layout-BWiL7dfb.js +81 -0
  189. package/dist/layout-BWiL7dfb.js.map +1 -0
  190. package/dist/layouts/App/create-api-client-app.d.ts +9 -9
  191. package/dist/layouts/App/index.d.ts +2 -2
  192. package/dist/layouts/App/index.js +5 -7
  193. package/dist/layouts/Modal/create-api-client-modal.d.ts +1 -1
  194. package/dist/layouts/Modal/index.d.ts +2 -2
  195. package/dist/layouts/Modal/index.js +3 -4
  196. package/dist/layouts/Web/create-api-client-web.d.ts +9 -9
  197. package/dist/layouts/Web/index.d.ts +2 -2
  198. package/dist/layouts/Web/index.js +101 -6
  199. package/dist/layouts/Web/index.js.map +1 -0
  200. package/dist/libs/create-client.d.ts +9 -9
  201. package/dist/libs/create-client.d.ts.map +1 -1
  202. package/dist/libs/environment-parser.d.ts +1 -1
  203. package/dist/libs/get-request-uid-by-path-method.d.ts +1 -1
  204. package/dist/libs/hot-keys.d.ts +1 -1
  205. package/dist/libs/importers/index.d.ts +1 -1
  206. package/dist/libs/importers/index.js +2 -4
  207. package/dist/libs/index.d.ts +15 -15
  208. package/dist/libs/index.js +6 -45
  209. package/dist/libs/local-storage.d.ts +1 -1
  210. package/dist/libs/send-request/create-request-operation.d.ts +3 -3
  211. package/dist/libs/send-request/index.d.ts +3 -3
  212. package/dist/libs/send-request/index.js +3 -8
  213. package/dist/libs-spbv4P0g.js +249 -0
  214. package/dist/libs-spbv4P0g.js.map +1 -0
  215. package/dist/monacoeditorwork/json.worker.bundle.js +8 -8
  216. package/dist/monacoeditorwork/yaml.worker.bundle.js +151 -151
  217. package/dist/operation-block-BnMIKAOh.js +1624 -0
  218. package/dist/operation-block-BnMIKAOh.js.map +1 -0
  219. package/dist/operation-code-sample-ZUTueV3v.js +1726 -0
  220. package/dist/operation-code-sample-ZUTueV3v.js.map +1 -0
  221. package/dist/parse-curl-BtypQT3D.js +106 -0
  222. package/dist/parse-curl-BtypQT3D.js.map +1 -0
  223. package/dist/plugins/hooks/usePluginManager.d.ts +1 -1
  224. package/dist/plugins/index.d.ts +2 -2
  225. package/dist/plugins/index.js +2 -7
  226. package/dist/plugins/plugin-manager.d.ts +10 -4
  227. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  228. package/dist/plugins-B52hCIyZ.js +50 -0
  229. package/dist/plugins-B52hCIyZ.js.map +1 -0
  230. package/dist/rabbitjump-CMZXAR6d.js +9 -0
  231. package/dist/rabbitjump-CMZXAR6d.js.map +1 -0
  232. package/dist/request-block-DwsGy64Q.js +1466 -0
  233. package/dist/request-block-DwsGy64Q.js.map +1 -0
  234. package/dist/resize-D2IYvVdh.js +114 -0
  235. package/dist/resize-D2IYvVdh.js.map +1 -0
  236. package/dist/response-block-DmkaDZYs.js +1188 -0
  237. package/dist/response-block-DmkaDZYs.js.map +1 -0
  238. package/dist/scalar-address-bar-block--Vs6IBU1.js +425 -0
  239. package/dist/scalar-address-bar-block--Vs6IBU1.js.map +1 -0
  240. package/dist/scalar-auth-selector-block-DI3DLag9.js +1886 -0
  241. package/dist/scalar-auth-selector-block-DI3DLag9.js.map +1 -0
  242. package/dist/search-CmsQQkjn.js +151 -0
  243. package/dist/search-CmsQQkjn.js.map +1 -0
  244. package/dist/send-request-BsTfRiBC.js +348 -0
  245. package/dist/send-request-BsTfRiBC.js.map +1 -0
  246. package/dist/server-tcI-OCyx.js +140 -0
  247. package/dist/server-tcI-OCyx.js.map +1 -0
  248. package/dist/set-request-cookies-BJJhsU4A.js +88 -0
  249. package/dist/set-request-cookies-BJJhsU4A.js.map +1 -0
  250. package/dist/settings-BKk_1lcH.js +455 -0
  251. package/dist/settings-BKk_1lcH.js.map +1 -0
  252. package/dist/sidebar-ceSbYmnt.js +217 -0
  253. package/dist/sidebar-ceSbYmnt.js.map +1 -0
  254. package/dist/store/collections.d.ts +1 -1
  255. package/dist/store/environment.d.ts +1 -1
  256. package/dist/store/events.d.ts +8 -8
  257. package/dist/store/import-spec.d.ts +2 -2
  258. package/dist/store/index.d.ts +2 -2
  259. package/dist/store/index.js +2 -10
  260. package/dist/store/request-example.d.ts +1 -1
  261. package/dist/store/requests.d.ts +1 -1
  262. package/dist/store/security-schemes.d.ts +1 -1
  263. package/dist/store/servers.d.ts +1 -1
  264. package/dist/store/store.d.ts +7 -7
  265. package/dist/store/tags.d.ts +1 -1
  266. package/dist/store/workspace.d.ts +1 -1
  267. package/dist/store-DpSUVhjp.js +1512 -0
  268. package/dist/store-DpSUVhjp.js.map +1 -0
  269. package/dist/string-template-sS5PtY6T.js +64 -0
  270. package/dist/string-template-sS5PtY6T.js.map +1 -0
  271. package/dist/style.css +10372 -1
  272. package/dist/types/index.js +0 -1
  273. package/dist/use-global-hot-keys-D8Ai8Qbm.js +274 -0
  274. package/dist/use-global-hot-keys-D8Ai8Qbm.js.map +1 -0
  275. package/dist/useSidebar-DLTwHDI-.js +45 -0
  276. package/dist/useSidebar-DLTwHDI-.js.map +1 -0
  277. package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts +3 -3
  278. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts +2 -2
  279. package/dist/v2/blocks/operation-block/helpers/build-request-security.d.ts +2 -2
  280. package/dist/v2/blocks/operation-block/helpers/build-request.d.ts +2 -2
  281. package/dist/v2/blocks/operation-block/helpers/build-request.d.ts.map +1 -1
  282. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.d.ts +1 -1
  283. package/dist/v2/blocks/operation-block/helpers/send-request.d.ts +1 -1
  284. package/dist/v2/blocks/operation-block/index.d.ts +4 -4
  285. package/dist/v2/blocks/operation-block/index.js +20 -11
  286. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.d.ts +2 -2
  287. package/dist/v2/blocks/operation-code-sample/helpers/find-client.d.ts +1 -1
  288. package/dist/v2/blocks/operation-code-sample/helpers/generate-client-options.d.ts +1 -1
  289. package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.d.ts +2 -2
  290. package/dist/v2/blocks/operation-code-sample/helpers/get-clients.d.ts +2 -2
  291. package/dist/v2/blocks/operation-code-sample/helpers/get-secrets.d.ts +1 -1
  292. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/operation-to-har.d.ts +1 -1
  293. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.d.ts +1 -1
  294. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-security-schemes.d.ts +1 -1
  295. package/dist/v2/blocks/operation-code-sample/index.d.ts +6 -6
  296. package/dist/v2/blocks/operation-code-sample/index.js +2 -16
  297. package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts +4 -4
  298. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.d.ts +1 -1
  299. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts +1 -1
  300. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +1 -1
  301. package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.d.ts +1 -1
  302. package/dist/v2/blocks/request-block/helpers/get-default-headers.d.ts +3 -2
  303. package/dist/v2/blocks/request-block/helpers/get-default-headers.d.ts.map +1 -1
  304. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts +1 -1
  305. package/dist/v2/blocks/request-block/index.d.ts +1 -1
  306. package/dist/v2/blocks/request-block/index.js +9 -4
  307. package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts +1 -1
  308. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.d.ts +1 -1
  309. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.d.ts +1 -1
  310. package/dist/v2/blocks/response-block/index.d.ts +1 -1
  311. package/dist/v2/blocks/response-block/index.js +6 -4
  312. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts +2 -2
  313. package/dist/v2/blocks/scalar-address-bar-block/index.d.ts +2 -2
  314. package/dist/v2/blocks/scalar-address-bar-block/index.js +5 -4
  315. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts +3 -3
  316. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts +1 -1
  317. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts +2 -2
  318. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts +1 -1
  319. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts +1 -1
  320. package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.d.ts +1 -1
  321. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts +2 -2
  322. package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.d.ts +1 -1
  323. package/dist/v2/blocks/scalar-auth-selector-block/index.d.ts +4 -4
  324. package/dist/v2/blocks/scalar-auth-selector-block/index.js +6 -8
  325. package/dist/v2/components/code-input/CodeInput.vue.d.ts +1 -1
  326. package/dist/v2/components/code-input/index.d.ts +1 -1
  327. package/dist/v2/components/code-input/index.js +2 -4
  328. package/dist/v2/components/data-table/DataTableInput.vue.d.ts +1 -1
  329. package/dist/v2/components/data-table/DataTableInputSelect.vue.d.ts +1 -1
  330. package/dist/v2/components/data-table/index.d.ts +8 -8
  331. package/dist/v2/components/data-table/index.js +3 -18
  332. package/dist/v2/components/forms/index.d.ts +1 -1
  333. package/dist/v2/components/forms/index.js +2 -4
  334. package/dist/v2/components/layout/index.d.ts +1 -1
  335. package/dist/v2/components/layout/index.js +2 -4
  336. package/dist/v2/components/modals/index.d.ts +1 -1
  337. package/dist/v2/components/modals/index.js +37 -3
  338. package/dist/v2/components/modals/index.js.map +1 -0
  339. package/dist/v2/components/resize/index.d.ts +2 -2
  340. package/dist/v2/components/resize/index.js +2 -6
  341. package/dist/v2/components/server/ServerDropdown.vue.d.ts +1 -1
  342. package/dist/v2/components/server/index.d.ts +1 -1
  343. package/dist/v2/components/server/index.js +2 -4
  344. package/dist/v2/components/sidebar/Sidebar.vue.d.ts +1 -1
  345. package/dist/v2/components/sidebar/index.d.ts +3 -3
  346. package/dist/v2/components/sidebar/index.js +3 -8
  347. package/dist/v2/features/app/App.vue.d.ts +4 -4
  348. package/dist/v2/features/app/components/AppSidebar.vue.d.ts +1 -1
  349. package/dist/v2/features/app/components/index.d.ts +1 -1
  350. package/dist/v2/features/app/components/index.js +10 -5
  351. package/dist/v2/features/app/helpers/create-api-client-app.d.ts +3 -3
  352. package/dist/v2/features/app/helpers/get-route-param.d.ts +1 -1
  353. package/dist/v2/features/app/helpers/routes.d.ts +5 -5
  354. package/dist/v2/features/app/hooks/use-theme.d.ts +1 -1
  355. package/dist/v2/features/app/index.d.ts +8 -8
  356. package/dist/v2/features/app/index.js +3161 -19
  357. package/dist/v2/features/app/index.js.map +1 -0
  358. package/dist/v2/features/collection/DocumentCollection.vue.d.ts +1 -1
  359. package/dist/v2/features/collection/OperationCollection.vue.d.ts +1 -1
  360. package/dist/v2/features/collection/WorkspaceCollection.vue.d.ts +1 -1
  361. package/dist/v2/features/collection/components/Authentication.vue.d.ts +4 -4
  362. package/dist/v2/features/collection/components/Cookies.vue.d.ts +4 -4
  363. package/dist/v2/features/collection/components/Editor/Editor.vue.d.ts +4 -4
  364. package/dist/v2/features/collection/components/Editor/index.d.ts +1 -1
  365. package/dist/v2/features/collection/components/Editor/index.js +2 -4
  366. package/dist/v2/features/collection/components/Environment.vue.d.ts +4 -4
  367. package/dist/v2/features/collection/components/Overview.vue.d.ts +4 -4
  368. package/dist/v2/features/collection/components/Servers.vue.d.ts +4 -4
  369. package/dist/v2/features/collection/components/Settings.vue.d.ts +4 -4
  370. package/dist/v2/features/collection/components/Tabs.vue.d.ts +1 -1
  371. package/dist/v2/features/command-palette/TheCommandPalette.vue.d.ts +1 -1
  372. package/dist/v2/features/command-palette/hooks/use-command-palette-state.d.ts +10 -45
  373. package/dist/v2/features/command-palette/hooks/use-command-palette-state.d.ts.map +1 -1
  374. package/dist/v2/features/command-palette/index.d.ts +2 -2
  375. package/dist/v2/features/command-palette/index.js +3 -6
  376. package/dist/v2/features/editor/helpers/json/create-json-model.d.ts +1 -1
  377. package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.d.ts +1 -1
  378. package/dist/v2/features/editor/helpers/json/json-pointer-path.d.ts +1 -1
  379. package/dist/v2/features/editor/helpers/yaml/create-yaml-model.d.ts +1 -1
  380. package/dist/v2/features/editor/helpers/yaml/get-yaml-node-range-from-path.d.ts +1 -1
  381. package/dist/v2/features/editor/hooks/use-editor.d.ts +1 -1
  382. package/dist/v2/features/editor/hooks/use-json-pointer-link-support.d.ts +1 -1
  383. package/dist/v2/features/editor/index.d.ts +4 -4
  384. package/dist/v2/features/editor/index.js +2 -10
  385. package/dist/v2/features/environments/index.d.ts +1 -1
  386. package/dist/v2/features/environments/index.js +4 -4
  387. package/dist/v2/features/global-cookies/index.d.ts +1 -1
  388. package/dist/v2/features/global-cookies/index.js +4 -4
  389. package/dist/v2/features/modal/Modal.vue.d.ts +1 -1
  390. package/dist/v2/features/modal/helpers/create-api-client-modal.d.ts +2 -2
  391. package/dist/v2/features/modal/hooks/use-modal-sidebar.d.ts +1 -1
  392. package/dist/v2/features/modal/index.d.ts +3 -3
  393. package/dist/v2/features/modal/index.js +639 -7
  394. package/dist/v2/features/modal/index.js.map +1 -0
  395. package/dist/v2/features/modal/modal-events.d.ts +1 -1
  396. package/dist/v2/features/operation/Operation.vue.d.ts +2 -2
  397. package/dist/v2/features/operation/index.d.ts +5 -5
  398. package/dist/v2/features/operation/index.js +19 -12
  399. package/dist/v2/features/search/helpers/create-fuse-instance.d.ts +1 -1
  400. package/dist/v2/features/search/helpers/create-search-index.d.ts +1 -1
  401. package/dist/v2/features/search/index.d.ts +1 -1
  402. package/dist/v2/features/search/index.js +2 -4
  403. package/dist/v2/features/settings/index.d.ts +2 -2
  404. package/dist/v2/features/settings/index.js +2 -6
  405. package/dist/v2/helpers/get-active-proxy-url.d.ts +1 -1
  406. package/dist/v2/helpers/get-tab-details.d.ts +1 -1
  407. package/dist/v2/helpers/handle-hotkeys.d.ts +1 -1
  408. package/dist/v2/helpers/index.d.ts +2 -2
  409. package/dist/v2/helpers/index.js +3 -6
  410. package/dist/v2/hooks/use-global-hot-keys.d.ts +1 -1
  411. package/dist/views/Collection/components/EnvironmentForm.vue.d.ts +1 -1
  412. package/dist/views/Collection/components/MarkdownInput.vue.d.ts +1 -1
  413. package/dist/views/Components/CodeSnippet/CodeSnippet.vue.d.ts +1 -1
  414. package/dist/views/Components/CodeSnippet/helpers/get-har-request.d.ts +1 -1
  415. package/dist/views/Components/CodeSnippet/helpers/get-snippet.d.ts +1 -1
  416. package/dist/views/Components/CodeSnippet/index.d.ts +4 -4
  417. package/dist/views/Components/CodeSnippet/index.js +3 -10
  418. package/dist/views/Environment/EnvironmentVariableDropdown.vue.d.ts +1 -1
  419. package/dist/views/Environment/handle-drag.d.ts +1 -1
  420. package/dist/views/Request/Request.vue.d.ts +1 -1
  421. package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.d.ts +1 -1
  422. package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.d.ts +1 -1
  423. package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.d.ts +1 -1
  424. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.d.ts +1 -1
  425. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.d.ts +2 -2
  426. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.d.ts +1 -1
  427. package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.d.ts +1 -1
  428. package/dist/views/Request/RequestSection/RequestAuth/index.d.ts +3 -3
  429. package/dist/views/Request/RequestSection/RequestAuth/index.js +4 -8
  430. package/dist/views/Request/RequestSection/RequestBody.vue.d.ts +1 -1
  431. package/dist/views/Request/RequestSection/RequestCodeExample.vue.d.ts +1 -1
  432. package/dist/views/Request/RequestSection/RequestParams.vue.d.ts +1 -1
  433. package/dist/views/Request/RequestSection/RequestPathParams.vue.d.ts +1 -1
  434. package/dist/views/Request/RequestSection/RequestSection.vue.d.ts +1 -1
  435. package/dist/views/Request/RequestSection/RequestTable.vue.d.ts +1 -1
  436. package/dist/views/Request/RequestSection/helpers/update-scheme.d.ts +1 -1
  437. package/dist/views/Request/RequestSection/index.d.ts +2 -2
  438. package/dist/views/Request/RequestSection/index.js +42 -5
  439. package/dist/views/Request/RequestSection/index.js.map +1 -0
  440. package/dist/views/Request/RequestSidebarItem.vue.d.ts +1 -1
  441. package/dist/views/Request/RequestSidebarItemMenu.vue.d.ts +3 -3
  442. package/dist/views/Request/RequestSubpageHeader.vue.d.ts +1 -1
  443. package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.d.ts +1 -1
  444. package/dist/views/Request/ResponseSection/ResponseSection.vue.d.ts +1 -1
  445. package/dist/views/Request/ResponseSection/index.d.ts +2 -2
  446. package/dist/views/Request/ResponseSection/index.js +7 -6
  447. package/dist/views/Request/components/index.d.ts +1 -1
  448. package/dist/views/Request/components/index.js +2 -4
  449. package/dist/views/Request/consts/index.d.ts +2 -2
  450. package/dist/views/Request/consts/index.js +2 -10
  451. package/dist/views/Request/handle-drag.d.ts +2 -2
  452. package/dist/views/Request/libs/auth.d.ts +1 -1
  453. package/dist/views/Request/libs/index.d.ts +3 -3
  454. package/dist/views/Request/libs/index.js +3 -22
  455. package/dist/views/Request/libs/oauth2.d.ts +1 -1
  456. package/dist/views/Request/libs/watch-mode.d.ts +2 -2
  457. package/dist/views/Request/types/index.js +0 -1
  458. package/dist/watch-mode-Dbaqd9bG.js +375 -0
  459. package/dist/watch-mode-Dbaqd9bG.js.map +1 -0
  460. package/package.json +29 -33
  461. package/dist/_virtual/_plugin-vue_export-helper.js +0 -9
  462. package/dist/analytics.js +0 -9
  463. package/dist/assets/computer.ascii.js +0 -34
  464. package/dist/assets/keycap.ascii.js +0 -25
  465. package/dist/assets/rabbit.ascii.js +0 -11
  466. package/dist/assets/rabbitjump.ascii.js +0 -11
  467. package/dist/components/AddressBar/AddressBar.vue.js +0 -7
  468. package/dist/components/AddressBar/AddressBar.vue2.js +0 -160
  469. package/dist/components/AddressBar/AddressBarHistory.vue.js +0 -7
  470. package/dist/components/AddressBar/AddressBarHistory.vue2.js +0 -98
  471. package/dist/components/AddressBar/httpStatusCodeColors.js +0 -38
  472. package/dist/components/CodeInput/CodeInput.vue.js +0 -8
  473. package/dist/components/CodeInput/CodeInput.vue2.js +0 -209
  474. package/dist/components/CodeInput/codeVariableWidget.js +0 -111
  475. package/dist/components/CommandPalette/CommandActionForm.vue.js +0 -44
  476. package/dist/components/CommandPalette/CommandActionForm.vue2.js +0 -4
  477. package/dist/components/CommandPalette/CommandActionInput.vue.js +0 -52
  478. package/dist/components/CommandPalette/CommandActionInput.vue2.js +0 -4
  479. package/dist/components/CommandPalette/CommandPaletteCollection.vue.js +0 -80
  480. package/dist/components/CommandPalette/CommandPaletteCollection.vue2.js +0 -4
  481. package/dist/components/CommandPalette/CommandPaletteExample.vue.js +0 -116
  482. package/dist/components/CommandPalette/CommandPaletteExample.vue2.js +0 -4
  483. package/dist/components/CommandPalette/CommandPaletteImport.vue.js +0 -217
  484. package/dist/components/CommandPalette/CommandPaletteImport.vue2.js +0 -4
  485. package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.js +0 -7
  486. package/dist/components/CommandPalette/CommandPaletteImportCurl.vue2.js +0 -136
  487. package/dist/components/CommandPalette/CommandPaletteServer.vue.js +0 -123
  488. package/dist/components/CommandPalette/CommandPaletteServer.vue2.js +0 -4
  489. package/dist/components/CommandPalette/CommandPaletteTag.vue.js +0 -84
  490. package/dist/components/CommandPalette/CommandPaletteTag.vue2.js +0 -4
  491. package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.js +0 -48
  492. package/dist/components/CommandPalette/CommandPaletteWorkspace.vue2.js +0 -4
  493. package/dist/components/CommandPalette/TheCommandPalette.vue.js +0 -7
  494. package/dist/components/CommandPalette/TheCommandPalette.vue2.js +0 -305
  495. package/dist/components/CommandPalette/WatchModeToggle.vue.js +0 -39
  496. package/dist/components/CommandPalette/WatchModeToggle.vue2.js +0 -4
  497. package/dist/components/DataTable/DataTable.vue.js +0 -38
  498. package/dist/components/DataTable/DataTable.vue2.js +0 -4
  499. package/dist/components/DataTable/DataTableCell.vue.js +0 -26
  500. package/dist/components/DataTable/DataTableCell.vue2.js +0 -4
  501. package/dist/components/DataTable/DataTableCheckbox.vue.js +0 -53
  502. package/dist/components/DataTable/DataTableCheckbox.vue2.js +0 -4
  503. package/dist/components/DataTable/DataTableHeader.vue.js +0 -18
  504. package/dist/components/DataTable/DataTableHeader.vue2.js +0 -4
  505. package/dist/components/DataTable/DataTableInput.vue.js +0 -7
  506. package/dist/components/DataTable/DataTableInput.vue2.js +0 -124
  507. package/dist/components/DataTable/DataTableInputSelect.vue.js +0 -146
  508. package/dist/components/DataTable/DataTableInputSelect.vue2.js +0 -4
  509. package/dist/components/DataTable/DataTableRow.vue.js +0 -12
  510. package/dist/components/DataTable/DataTableText.vue.js +0 -23
  511. package/dist/components/DataTable/DataTableText.vue2.js +0 -4
  512. package/dist/components/EmptyState.vue.js +0 -7
  513. package/dist/components/EmptyState.vue2.js +0 -42
  514. package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.js +0 -113
  515. package/dist/components/EnvironmentSelector/EnvironmentSelector.vue2.js +0 -4
  516. package/dist/components/Form/Form.vue.js +0 -83
  517. package/dist/components/Form/Form.vue2.js +0 -4
  518. package/dist/components/Form/LabelInput.vue.js +0 -7
  519. package/dist/components/Form/LabelInput.vue2.js +0 -42
  520. package/dist/components/HelpfulLink.vue.js +0 -20
  521. package/dist/components/HelpfulLink.vue2.js +0 -4
  522. package/dist/components/HttpMethod/HttpMethod.vue.js +0 -7
  523. package/dist/components/HttpMethod/HttpMethod.vue2.js +0 -62
  524. package/dist/components/IconSelector.vue.js +0 -75
  525. package/dist/components/IconSelector.vue2.js +0 -4
  526. package/dist/components/ImportCollection/DropEventListener.vue.js +0 -81
  527. package/dist/components/ImportCollection/DropEventListener.vue2.js +0 -4
  528. package/dist/components/ImportCollection/ImportCollectionListener.vue.js +0 -77
  529. package/dist/components/ImportCollection/ImportCollectionListener.vue2.js +0 -4
  530. package/dist/components/ImportCollection/ImportCollectionModal.vue.js +0 -208
  531. package/dist/components/ImportCollection/ImportCollectionModal.vue3.js +0 -5
  532. package/dist/components/ImportCollection/ImportNowButton.vue.js +0 -73
  533. package/dist/components/ImportCollection/ImportNowButton.vue2.js +0 -4
  534. package/dist/components/ImportCollection/IntegrationLogo.vue.js +0 -44
  535. package/dist/components/ImportCollection/IntegrationLogo.vue2.js +0 -4
  536. package/dist/components/ImportCollection/PasteEventListener.vue.js +0 -24
  537. package/dist/components/ImportCollection/PasteEventListener.vue2.js +0 -4
  538. package/dist/components/ImportCollection/PrefetchError.vue.js +0 -27
  539. package/dist/components/ImportCollection/PrefetchError.vue2.js +0 -4
  540. package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.js +0 -20
  541. package/dist/components/ImportCollection/UrlQueryParameterChecker.vue2.js +0 -4
  542. package/dist/components/ImportCollection/WorkspaceSelector.vue.js +0 -134
  543. package/dist/components/ImportCollection/WorkspaceSelector.vue2.js +0 -4
  544. package/dist/components/ImportCollection/hooks/useUrlPrefetcher.js +0 -106
  545. package/dist/components/ImportCollection/utils/get-openapi-version.js +0 -20
  546. package/dist/components/ImportCollection/utils/import-collection.js +0 -29
  547. package/dist/components/ImportCollection/utils/is-document.js +0 -9
  548. package/dist/components/ImportCollection/utils/is-url.js +0 -9
  549. package/dist/components/ImportCollection/utils/workspace-store-is-empty.js +0 -7
  550. package/dist/components/OpenApiClientButton.vue.js +0 -7
  551. package/dist/components/OpenApiClientButton.vue2.js +0 -48
  552. package/dist/components/ScalarAsciiArt.vue.js +0 -7
  553. package/dist/components/ScalarAsciiArt.vue2.js +0 -37
  554. package/dist/components/Search/useSearch.js +0 -78
  555. package/dist/components/SectionFilter.vue.js +0 -7
  556. package/dist/components/SectionFilter.vue2.js +0 -64
  557. package/dist/components/SectionFilterButton.vue.js +0 -23
  558. package/dist/components/SectionFilterButton.vue2.js +0 -4
  559. package/dist/components/Server/ServerDropdown.vue.js +0 -132
  560. package/dist/components/Server/ServerDropdown.vue2.js +0 -4
  561. package/dist/components/Server/ServerDropdownItem.vue.js +0 -7
  562. package/dist/components/Server/ServerDropdownItem.vue2.js +0 -84
  563. package/dist/components/Server/ServerSelector.vue.js +0 -82
  564. package/dist/components/Server/ServerSelector.vue2.js +0 -4
  565. package/dist/components/Server/ServerVariablesForm.vue.js +0 -49
  566. package/dist/components/Server/ServerVariablesForm.vue2.js +0 -4
  567. package/dist/components/Server/ServerVariablesSelect.vue.js +0 -54
  568. package/dist/components/Server/ServerVariablesSelect.vue2.js +0 -4
  569. package/dist/components/Server/ServerVariablesTextbox.vue.js +0 -29
  570. package/dist/components/Server/ServerVariablesTextbox.vue2.js +0 -4
  571. package/dist/components/SideNav/DownloadAppButton.vue.js +0 -7
  572. package/dist/components/SideNav/DownloadAppButton.vue2.js +0 -33
  573. package/dist/components/SideNav/SideHelp.vue.js +0 -127
  574. package/dist/components/SideNav/SideHelp.vue2.js +0 -4
  575. package/dist/components/SideNav/SideNav.vue.js +0 -96
  576. package/dist/components/SideNav/SideNav.vue2.js +0 -4
  577. package/dist/components/SideNav/SideNavGroup.vue.js +0 -16
  578. package/dist/components/SideNav/SideNavGroup.vue2.js +0 -4
  579. package/dist/components/SideNav/SideNavLink.vue.js +0 -39
  580. package/dist/components/SideNav/SideNavLink.vue2.js +0 -4
  581. package/dist/components/SideNav/SideNavRouterLink.vue.js +0 -27
  582. package/dist/components/SideNav/SideNavRouterLink.vue2.js +0 -4
  583. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.js +0 -30
  584. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue2.js +0 -4
  585. package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.js +0 -58
  586. package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue2.js +0 -4
  587. package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.js +0 -29
  588. package/dist/components/Sidebar/Actions/EditSidebarListElement.vue2.js +0 -4
  589. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.js +0 -46
  590. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue2.js +0 -4
  591. package/dist/components/Sidebar/Sidebar.vue.js +0 -7
  592. package/dist/components/Sidebar/Sidebar.vue2.js +0 -63
  593. package/dist/components/Sidebar/SidebarButton.vue.js +0 -33
  594. package/dist/components/Sidebar/SidebarButton.vue2.js +0 -4
  595. package/dist/components/Sidebar/SidebarList.vue.js +0 -12
  596. package/dist/components/Sidebar/SidebarListElement.vue.js +0 -8
  597. package/dist/components/Sidebar/SidebarListElement.vue2.js +0 -94
  598. package/dist/components/Sidebar/SidebarListElementActions.vue.js +0 -86
  599. package/dist/components/Sidebar/SidebarListElementActions.vue2.js +0 -4
  600. package/dist/components/Sidebar/SidebarToggle.vue.js +0 -49
  601. package/dist/components/Sidebar/SidebarToggle.vue2.js +0 -4
  602. package/dist/components/TopNav/TopNav.vue.js +0 -210
  603. package/dist/components/TopNav/TopNav.vue2.js +0 -4
  604. package/dist/components/TopNav/TopNavItem.vue.js +0 -7
  605. package/dist/components/TopNav/TopNavItem.vue2.js +0 -138
  606. package/dist/components/ViewLayout/ViewLayout.vue.js +0 -18
  607. package/dist/components/ViewLayout/ViewLayout.vue2.js +0 -4
  608. package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js +0 -92
  609. package/dist/components/ViewLayout/ViewLayoutCollapse.vue2.js +0 -4
  610. package/dist/components/ViewLayout/ViewLayoutContent.vue.js +0 -12
  611. package/dist/components/ViewLayout/ViewLayoutSection.vue.js +0 -23
  612. package/dist/components/ViewLayout/ViewLayoutSection.vue2.js +0 -4
  613. package/dist/constants.js +0 -40
  614. package/dist/data/httpHeaders.js +0 -537
  615. package/dist/hooks/useAnalytics.js +0 -11
  616. package/dist/hooks/useClientConfig.js +0 -7
  617. package/dist/hooks/useFileDialog.js +0 -21
  618. package/dist/hooks/useLayout.js +0 -8
  619. package/dist/hooks/useResponseBody.js +0 -20
  620. package/dist/hooks/useSidebar.js +0 -28
  621. package/dist/layouts/App/ApiClientApp.vue.js +0 -70
  622. package/dist/layouts/App/ApiClientApp.vue3.js +0 -5
  623. package/dist/layouts/App/MainLayout.vue.js +0 -26
  624. package/dist/layouts/App/MainLayout.vue2.js +0 -4
  625. package/dist/layouts/App/create-api-client-app.js +0 -35
  626. package/dist/layouts/App/hotkeys.js +0 -21
  627. package/dist/layouts/Modal/ApiClientModal.vue.js +0 -30
  628. package/dist/layouts/Modal/ApiClientModal.vue2.js +0 -4
  629. package/dist/layouts/Modal/create-api-client-modal.js +0 -32
  630. package/dist/layouts/Web/ApiClientWeb.vue.js +0 -64
  631. package/dist/layouts/Web/ApiClientWeb.vue3.js +0 -5
  632. package/dist/layouts/Web/create-api-client-web.js +0 -32
  633. package/dist/libs/create-client.js +0 -189
  634. package/dist/libs/electron.js +0 -4
  635. package/dist/libs/env-helpers.js +0 -6
  636. package/dist/libs/environment-parser.js +0 -18
  637. package/dist/libs/errors.js +0 -16
  638. package/dist/libs/event-bus.js +0 -32
  639. package/dist/libs/extractAttachmentFilename.js +0 -18
  640. package/dist/libs/find-request.js +0 -23
  641. package/dist/libs/formatters.js +0 -10
  642. package/dist/libs/get-request-uid-by-path-method.js +0 -18
  643. package/dist/libs/getOpenApiDocumentDetails.js +0 -40
  644. package/dist/libs/hot-keys.js +0 -44
  645. package/dist/libs/importers/curl.js +0 -53
  646. package/dist/libs/isUrl.js +0 -7
  647. package/dist/libs/local-storage.js +0 -41
  648. package/dist/libs/normalize-headers.js +0 -27
  649. package/dist/libs/parse-curl.js +0 -59
  650. package/dist/libs/postman.js +0 -37
  651. package/dist/libs/send-request/build-request-security.js +0 -35
  652. package/dist/libs/send-request/create-fetch-body.js +0 -25
  653. package/dist/libs/send-request/create-fetch-headers.js +0 -11
  654. package/dist/libs/send-request/create-fetch-query-params.js +0 -33
  655. package/dist/libs/send-request/create-request-operation.js +0 -140
  656. package/dist/libs/send-request/decode-buffer.js +0 -9
  657. package/dist/libs/send-request/set-request-cookies.js +0 -58
  658. package/dist/libs/string-template.js +0 -42
  659. package/dist/libs/validate-parameters.js +0 -16
  660. package/dist/plugins/hooks/usePluginManager.js +0 -10
  661. package/dist/plugins/plugin-manager.js +0 -26
  662. package/dist/routes.js +0 -210
  663. package/dist/store/active-entities.js +0 -118
  664. package/dist/store/collections.js +0 -73
  665. package/dist/store/cookies.js +0 -13
  666. package/dist/store/environment.js +0 -32
  667. package/dist/store/events.js +0 -35
  668. package/dist/store/import-spec.js +0 -55
  669. package/dist/store/request-example.js +0 -43
  670. package/dist/store/requests.js +0 -97
  671. package/dist/store/router-params.js +0 -22
  672. package/dist/store/security-schemes.js +0 -55
  673. package/dist/store/servers.js +0 -39
  674. package/dist/store/store.js +0 -144
  675. package/dist/store/tags.js +0 -45
  676. package/dist/store/workspace.js +0 -52
  677. package/dist/v2/blocks/operation-block/OperationBlock.vue.js +0 -242
  678. package/dist/v2/blocks/operation-block/OperationBlock.vue2.js +0 -4
  679. package/dist/v2/blocks/operation-block/components/Header.vue.js +0 -7
  680. package/dist/v2/blocks/operation-block/components/Header.vue2.js +0 -100
  681. package/dist/v2/blocks/operation-block/helpers/build-request-body.js +0 -40
  682. package/dist/v2/blocks/operation-block/helpers/build-request-cookie-header.js +0 -31
  683. package/dist/v2/blocks/operation-block/helpers/build-request-parameters.js +0 -107
  684. package/dist/v2/blocks/operation-block/helpers/build-request-security.js +0 -46
  685. package/dist/v2/blocks/operation-block/helpers/build-request.js +0 -70
  686. package/dist/v2/blocks/operation-block/helpers/de-serialize-parameter.js +0 -25
  687. package/dist/v2/blocks/operation-block/helpers/decode-buffer.js +0 -9
  688. package/dist/v2/blocks/operation-block/helpers/filter-global-cookies.js +0 -14
  689. package/dist/v2/blocks/operation-block/helpers/get-cookie-header-keys.js +0 -4
  690. package/dist/v2/blocks/operation-block/helpers/get-environment-variables.js +0 -7
  691. package/dist/v2/blocks/operation-block/helpers/get-example.js +0 -36
  692. package/dist/v2/blocks/operation-block/helpers/get-resolved-url.js +0 -17
  693. package/dist/v2/blocks/operation-block/helpers/get-selected-body-content-type.js +0 -4
  694. package/dist/v2/blocks/operation-block/helpers/get-server-url.js +0 -12
  695. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.js +0 -31
  696. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js +0 -43
  697. package/dist/v2/blocks/operation-block/helpers/response-cache.js +0 -12
  698. package/dist/v2/blocks/operation-block/helpers/send-request.js +0 -122
  699. package/dist/v2/blocks/operation-block/helpers/serialize-parameter.js +0 -49
  700. package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js +0 -17
  701. package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.js +0 -56
  702. package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue2.js +0 -4
  703. package/dist/v2/blocks/operation-code-sample/components/HttpMethod.vue.js +0 -30
  704. package/dist/v2/blocks/operation-code-sample/components/HttpMethod.vue2.js +0 -4
  705. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.js +0 -7
  706. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue2.js +0 -227
  707. package/dist/v2/blocks/operation-code-sample/helpers/find-client.js +0 -22
  708. package/dist/v2/blocks/operation-code-sample/helpers/generate-client-options.js +0 -27
  709. package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.js +0 -40
  710. package/dist/v2/blocks/operation-code-sample/helpers/get-clients.js +0 -20
  711. package/dist/v2/blocks/operation-code-sample/helpers/get-custom-code-samples.js +0 -4
  712. package/dist/v2/blocks/operation-code-sample/helpers/get-example-from-schema.js +0 -302
  713. package/dist/v2/blocks/operation-code-sample/helpers/get-resolved-ref-deep.js +0 -28
  714. package/dist/v2/blocks/operation-code-sample/helpers/get-secrets.js +0 -10
  715. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/operation-to-har.js +0 -67
  716. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.js +0 -66
  717. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-parameters.js +0 -172
  718. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-security-schemes.js +0 -55
  719. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-server-url.js +0 -18
  720. package/dist/v2/blocks/request-block/RequestBlock.vue.js +0 -7
  721. package/dist/v2/blocks/request-block/RequestBlock.vue2.js +0 -347
  722. package/dist/v2/blocks/request-block/components/RequestBody.vue.js +0 -7
  723. package/dist/v2/blocks/request-block/components/RequestBody.vue2.js +0 -191
  724. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.js +0 -84
  725. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue2.js +0 -4
  726. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.js +0 -135
  727. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue2.js +0 -4
  728. package/dist/v2/blocks/request-block/components/RequestParams.vue.js +0 -78
  729. package/dist/v2/blocks/request-block/components/RequestParams.vue2.js +0 -4
  730. package/dist/v2/blocks/request-block/components/RequestTable.vue.js +0 -7
  731. package/dist/v2/blocks/request-block/components/RequestTable.vue2.js +0 -74
  732. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js +0 -204
  733. package/dist/v2/blocks/request-block/components/RequestTableRow.vue2.js +0 -4
  734. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.js +0 -7
  735. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue2.js +0 -63
  736. package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js +0 -55
  737. package/dist/v2/blocks/request-block/helpers/files.js +0 -7
  738. package/dist/v2/blocks/request-block/helpers/get-default-headers.js +0 -26
  739. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +0 -29
  740. package/dist/v2/blocks/request-block/helpers/get-parameter-content.js +0 -9
  741. package/dist/v2/blocks/request-block/helpers/get-parameter-schema.js +0 -6
  742. package/dist/v2/blocks/request-block/helpers/get-request-body-example.js +0 -16
  743. package/dist/v2/blocks/request-block/helpers/group-by.js +0 -10
  744. package/dist/v2/blocks/request-block/helpers/is-param-disabled.js +0 -7
  745. package/dist/v2/blocks/request-block/helpers/validate-parameter.js +0 -32
  746. package/dist/v2/blocks/response-block/ResponseBlock.vue.js +0 -7
  747. package/dist/v2/blocks/response-block/ResponseBlock.vue2.js +0 -180
  748. package/dist/v2/blocks/response-block/components/Headers.vue.js +0 -96
  749. package/dist/v2/blocks/response-block/components/Headers.vue2.js +0 -4
  750. package/dist/v2/blocks/response-block/components/ResponseBody.vue.js +0 -7
  751. package/dist/v2/blocks/response-block/components/ResponseBody.vue2.js +0 -87
  752. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.js +0 -36
  753. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue2.js +0 -4
  754. package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js +0 -14
  755. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js +0 -7
  756. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue2.js +0 -63
  757. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js +0 -7
  758. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue2.js +0 -41
  759. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.js +0 -94
  760. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue2.js +0 -4
  761. package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.js +0 -25
  762. package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue2.js +0 -4
  763. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.js +0 -52
  764. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue3.js +0 -5
  765. package/dist/v2/blocks/response-block/components/ResponseCookies.vue.js +0 -54
  766. package/dist/v2/blocks/response-block/components/ResponseCookies.vue2.js +0 -4
  767. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js +0 -7
  768. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue2.js +0 -79
  769. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js +0 -7
  770. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue2.js +0 -46
  771. package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.js +0 -67
  772. package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue2.js +0 -4
  773. package/dist/v2/blocks/response-block/helpers/extract-filename.js +0 -18
  774. package/dist/v2/blocks/response-block/helpers/get-content-length.js +0 -12
  775. package/dist/v2/blocks/response-block/helpers/media-types.js +0 -126
  776. package/dist/v2/blocks/response-block/helpers/parse-set-cookie.js +0 -12
  777. package/dist/v2/blocks/response-block/helpers/process-response-body.js +0 -16
  778. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +0 -7
  779. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue2.js +0 -208
  780. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +0 -7
  781. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue2.js +0 -95
  782. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.js +0 -145
  783. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue2.js +0 -4
  784. package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js +0 -38
  785. package/dist/v2/blocks/scalar-address-bar-block/hooks/use-loading-animation.js +0 -25
  786. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js +0 -184
  787. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue2.js +0 -4
  788. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.js +0 -51
  789. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue2.js +0 -4
  790. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js +0 -330
  791. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue2.js +0 -4
  792. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.js +0 -7
  793. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue2.js +0 -76
  794. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js +0 -165
  795. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue3.js +0 -5
  796. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.js +0 -91
  797. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue2.js +0 -4
  798. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.js +0 -83
  799. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue2.js +0 -4
  800. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.js +0 -46
  801. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue2.js +0 -4
  802. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js +0 -244
  803. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue2.js +0 -4
  804. package/dist/v2/blocks/scalar-auth-selector-block/helpers/auth-options.js +0 -97
  805. package/dist/v2/blocks/scalar-auth-selector-block/helpers/extract-security-scheme-secrets.js +0 -135
  806. package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js +0 -35
  807. package/dist/v2/blocks/scalar-auth-selector-block/helpers/is-auth-optional.js +0 -7
  808. package/dist/v2/blocks/scalar-auth-selector-block/helpers/merge-security.js +0 -23
  809. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js +0 -139
  810. package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js +0 -27
  811. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js +0 -64
  812. package/dist/v2/components/callout/Callout.vue.js +0 -7
  813. package/dist/v2/components/callout/Callout.vue2.js +0 -43
  814. package/dist/v2/components/code-input/CodeInput.vue.js +0 -8
  815. package/dist/v2/components/code-input/CodeInput.vue2.js +0 -213
  816. package/dist/v2/components/code-input/code-variable-widget.js +0 -106
  817. package/dist/v2/components/data-table/DataTable.vue.js +0 -38
  818. package/dist/v2/components/data-table/DataTable.vue2.js +0 -4
  819. package/dist/v2/components/data-table/DataTableCell.vue.js +0 -26
  820. package/dist/v2/components/data-table/DataTableCell.vue2.js +0 -4
  821. package/dist/v2/components/data-table/DataTableCheckbox.vue.js +0 -53
  822. package/dist/v2/components/data-table/DataTableCheckbox.vue2.js +0 -4
  823. package/dist/v2/components/data-table/DataTableHeader.vue.js +0 -18
  824. package/dist/v2/components/data-table/DataTableHeader.vue2.js +0 -4
  825. package/dist/v2/components/data-table/DataTableInput.vue.js +0 -7
  826. package/dist/v2/components/data-table/DataTableInput.vue2.js +0 -121
  827. package/dist/v2/components/data-table/DataTableInputSelect.vue.js +0 -149
  828. package/dist/v2/components/data-table/DataTableInputSelect.vue2.js +0 -4
  829. package/dist/v2/components/data-table/DataTableRow.vue.js +0 -12
  830. package/dist/v2/components/data-table/DataTableText.vue.js +0 -23
  831. package/dist/v2/components/data-table/DataTableText.vue2.js +0 -4
  832. package/dist/v2/components/forms/ConfirmationForm.vue.js +0 -45
  833. package/dist/v2/components/forms/ConfirmationForm.vue2.js +0 -4
  834. package/dist/v2/components/layout/CollapsibleSection.vue.js +0 -89
  835. package/dist/v2/components/layout/CollapsibleSection.vue2.js +0 -4
  836. package/dist/v2/components/layout/ValueEmitter.vue.js +0 -21
  837. package/dist/v2/components/layout/ValueEmitter.vue2.js +0 -4
  838. package/dist/v2/components/modals/DeleteModal.vue.js +0 -31
  839. package/dist/v2/components/modals/DeleteModal.vue2.js +0 -4
  840. package/dist/v2/components/modals/ModalClientContainer.vue.js +0 -7
  841. package/dist/v2/components/modals/ModalClientContainer.vue2.js +0 -60
  842. package/dist/v2/components/resize/Resize.vue.js +0 -8
  843. package/dist/v2/components/resize/Resize.vue2.js +0 -36
  844. package/dist/v2/components/resize/use-split-resize.js +0 -57
  845. package/dist/v2/components/server/ServerDropdown.vue.js +0 -91
  846. package/dist/v2/components/server/ServerDropdown.vue2.js +0 -4
  847. package/dist/v2/components/server/ServerDropdownItem.vue.js +0 -7
  848. package/dist/v2/components/server/ServerDropdownItem.vue2.js +0 -49
  849. package/dist/v2/components/sidebar/Sidebar.vue.js +0 -115
  850. package/dist/v2/components/sidebar/Sidebar.vue2.js +0 -4
  851. package/dist/v2/components/sidebar/SidebarMenu.vue.js +0 -52
  852. package/dist/v2/components/sidebar/SidebarMenu.vue2.js +0 -4
  853. package/dist/v2/components/sidebar/SidebarToggle.vue.js +0 -52
  854. package/dist/v2/components/sidebar/SidebarToggle.vue2.js +0 -4
  855. package/dist/v2/features/app/App.vue.js +0 -152
  856. package/dist/v2/features/app/App.vue3.js +0 -5
  857. package/dist/v2/features/app/app-events.js +0 -251
  858. package/dist/v2/features/app/app-state.js +0 -415
  859. package/dist/v2/features/app/components/AppSidebar.vue.js +0 -7
  860. package/dist/v2/features/app/components/AppSidebar.vue2.js +0 -304
  861. package/dist/v2/features/app/components/CreateWorkspaceModal.vue.js +0 -56
  862. package/dist/v2/features/app/components/CreateWorkspaceModal.vue2.js +0 -4
  863. package/dist/v2/features/app/components/DesktopTab.vue.js +0 -7
  864. package/dist/v2/features/app/components/DesktopTab.vue2.js +0 -134
  865. package/dist/v2/features/app/components/DesktopTabs.vue.js +0 -56
  866. package/dist/v2/features/app/components/DesktopTabs.vue2.js +0 -4
  867. package/dist/v2/features/app/components/DownloadAppButton.vue.js +0 -7
  868. package/dist/v2/features/app/components/DownloadAppButton.vue2.js +0 -19
  869. package/dist/v2/features/app/components/SidebarItemMenu.vue.js +0 -185
  870. package/dist/v2/features/app/components/SidebarItemMenu.vue2.js +0 -4
  871. package/dist/v2/features/app/components/SplashScreen.vue.js +0 -7
  872. package/dist/v2/features/app/components/SplashScreen.vue2.js +0 -18
  873. package/dist/v2/features/app/helpers/create-api-client-app.js +0 -36
  874. package/dist/v2/features/app/helpers/filter-workspaces.js +0 -5
  875. package/dist/v2/features/app/helpers/get-route-param.js +0 -9
  876. package/dist/v2/features/app/helpers/group-workspaces.js +0 -23
  877. package/dist/v2/features/app/helpers/routes.js +0 -157
  878. package/dist/v2/features/app/hooks/use-document-watcher.js +0 -66
  879. package/dist/v2/features/app/hooks/use-theme.js +0 -48
  880. package/dist/v2/features/collection/DocumentCollection.vue.js +0 -336
  881. package/dist/v2/features/collection/DocumentCollection.vue3.js +0 -5
  882. package/dist/v2/features/collection/OperationCollection.vue.js +0 -86
  883. package/dist/v2/features/collection/OperationCollection.vue2.js +0 -4
  884. package/dist/v2/features/collection/WorkspaceCollection.vue.js +0 -68
  885. package/dist/v2/features/collection/WorkspaceCollection.vue2.js +0 -4
  886. package/dist/v2/features/collection/components/Authentication.vue.js +0 -7
  887. package/dist/v2/features/collection/components/Authentication.vue2.js +0 -154
  888. package/dist/v2/features/collection/components/Cookies.vue.js +0 -52
  889. package/dist/v2/features/collection/components/Cookies.vue2.js +0 -4
  890. package/dist/v2/features/collection/components/Editor/Editor.vue.js +0 -7
  891. package/dist/v2/features/collection/components/Editor/Editor.vue2.js +0 -344
  892. package/dist/v2/features/collection/components/Editor/components/EditorDiagnosticsPanel.vue.js +0 -78
  893. package/dist/v2/features/collection/components/Editor/components/EditorDiagnosticsPanel.vue2.js +0 -4
  894. package/dist/v2/features/collection/components/Editor/components/EditorSavePanel.vue.js +0 -83
  895. package/dist/v2/features/collection/components/Editor/components/EditorSavePanel.vue2.js +0 -4
  896. package/dist/v2/features/collection/components/Editor/helpers/get-diagnostic-counts.js +0 -10
  897. package/dist/v2/features/collection/components/Editor/helpers/get-operation-context.js +0 -5
  898. package/dist/v2/features/collection/components/Editor/helpers/get-visible-diagnostics.js +0 -5
  899. package/dist/v2/features/collection/components/Editor/helpers/parse-editor-object.js +0 -21
  900. package/dist/v2/features/collection/components/Editor/helpers/stringify-document.js +0 -5
  901. package/dist/v2/features/collection/components/Editor/hooks/use-editor-state.js +0 -25
  902. package/dist/v2/features/collection/components/Environment.vue.js +0 -54
  903. package/dist/v2/features/collection/components/Environment.vue2.js +0 -4
  904. package/dist/v2/features/collection/components/Form.vue.js +0 -78
  905. package/dist/v2/features/collection/components/Form.vue2.js +0 -4
  906. package/dist/v2/features/collection/components/LabelInput.vue.js +0 -7
  907. package/dist/v2/features/collection/components/LabelInput.vue2.js +0 -35
  908. package/dist/v2/features/collection/components/Overview.vue.js +0 -7
  909. package/dist/v2/features/collection/components/Overview.vue2.js +0 -208
  910. package/dist/v2/features/collection/components/Servers.vue.js +0 -210
  911. package/dist/v2/features/collection/components/Servers.vue2.js +0 -4
  912. package/dist/v2/features/collection/components/Settings.vue.js +0 -61
  913. package/dist/v2/features/collection/components/Settings.vue2.js +0 -4
  914. package/dist/v2/features/collection/components/SyncConflictResolutionEditor.vue.js +0 -7
  915. package/dist/v2/features/collection/components/SyncConflictResolutionEditor.vue2.js +0 -136
  916. package/dist/v2/features/collection/components/Tabs.vue.js +0 -44
  917. package/dist/v2/features/collection/components/Tabs.vue2.js +0 -4
  918. package/dist/v2/features/collection/helpers/get-default-operation-security-toggle.js +0 -13
  919. package/dist/v2/features/command-palette/TheCommandPalette.vue.js +0 -7
  920. package/dist/v2/features/command-palette/TheCommandPalette.vue2.js +0 -152
  921. package/dist/v2/features/command-palette/components/CommandActionForm.vue.js +0 -48
  922. package/dist/v2/features/command-palette/components/CommandActionForm.vue2.js +0 -4
  923. package/dist/v2/features/command-palette/components/CommandActionInput.vue.js +0 -52
  924. package/dist/v2/features/command-palette/components/CommandActionInput.vue2.js +0 -4
  925. package/dist/v2/features/command-palette/components/CommandPaletteExample.vue.js +0 -211
  926. package/dist/v2/features/command-palette/components/CommandPaletteExample.vue2.js +0 -4
  927. package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.js +0 -182
  928. package/dist/v2/features/command-palette/components/CommandPaletteImport.vue2.js +0 -4
  929. package/dist/v2/features/command-palette/components/CommandPaletteImportCurl.vue.js +0 -7
  930. package/dist/v2/features/command-palette/components/CommandPaletteImportCurl.vue2.js +0 -115
  931. package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue.js +0 -78
  932. package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue2.js +0 -4
  933. package/dist/v2/features/command-palette/components/CommandPaletteRequest.vue.js +0 -221
  934. package/dist/v2/features/command-palette/components/CommandPaletteRequest.vue2.js +0 -4
  935. package/dist/v2/features/command-palette/components/CommandPaletteTag.vue.js +0 -114
  936. package/dist/v2/features/command-palette/components/CommandPaletteTag.vue2.js +0 -4
  937. package/dist/v2/features/command-palette/components/WatchModeToggle.vue.js +0 -40
  938. package/dist/v2/features/command-palette/components/WatchModeToggle.vue2.js +0 -4
  939. package/dist/v2/features/command-palette/helpers/generate-unique-slug.js +0 -11
  940. package/dist/v2/features/command-palette/helpers/get-openapi-document-details.js +0 -31
  941. package/dist/v2/features/command-palette/helpers/get-openapi-from-postman.js +0 -11
  942. package/dist/v2/features/command-palette/helpers/get-operation-from-curl.js +0 -76
  943. package/dist/v2/features/command-palette/helpers/get-postman-document-details.js +0 -18
  944. package/dist/v2/features/command-palette/helpers/import-document-to-workspace.js +0 -33
  945. package/dist/v2/features/command-palette/helpers/is-postman-collection.js +0 -11
  946. package/dist/v2/features/command-palette/helpers/load-document-from-source.js +0 -52
  947. package/dist/v2/features/command-palette/hooks/use-command-palette-state.js +0 -139
  948. package/dist/v2/features/editor/config.js +0 -16
  949. package/dist/v2/features/editor/helpers/configure-language-support.js +0 -39
  950. package/dist/v2/features/editor/helpers/ensure-monaco-environment.js +0 -20
  951. package/dist/v2/features/editor/helpers/json/create-json-model.js +0 -19
  952. package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.js +0 -9
  953. package/dist/v2/features/editor/helpers/json/json-ast.js +0 -24
  954. package/dist/v2/features/editor/helpers/json/json-pointer-links.js +0 -72
  955. package/dist/v2/features/editor/helpers/json/json-pointer-path.js +0 -21
  956. package/dist/v2/features/editor/helpers/range-to-whole-line.js +0 -8
  957. package/dist/v2/features/editor/helpers/theme/apply-scalar-theme.js +0 -56
  958. package/dist/v2/features/editor/helpers/theme/load-css-variables.js +0 -21
  959. package/dist/v2/features/editor/helpers/yaml/create-yaml-model.js +0 -19
  960. package/dist/v2/features/editor/helpers/yaml/get-yaml-node-range-from-path.js +0 -50
  961. package/dist/v2/features/editor/hooks/use-editor-markers.js +0 -34
  962. package/dist/v2/features/editor/hooks/use-editor.js +0 -107
  963. package/dist/v2/features/editor/hooks/use-json-pointer-link-support.js +0 -27
  964. package/dist/v2/features/editor/hooks/use-three-way-merge-editor.js +0 -316
  965. package/dist/v2/features/editor/schemas/openapi-3.1-schema.json.js +0 -25
  966. package/dist/v2/features/environments/EnvironmentsList.vue.js +0 -68
  967. package/dist/v2/features/environments/EnvironmentsList.vue2.js +0 -4
  968. package/dist/v2/features/environments/components/Environment.vue.js +0 -66
  969. package/dist/v2/features/environments/components/Environment.vue2.js +0 -4
  970. package/dist/v2/features/environments/components/EnvironmentColors.vue.js +0 -121
  971. package/dist/v2/features/environments/components/EnvironmentColors.vue2.js +0 -4
  972. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.js +0 -85
  973. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue2.js +0 -4
  974. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.js +0 -53
  975. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue2.js +0 -4
  976. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.js +0 -109
  977. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue2.js +0 -4
  978. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js +0 -7
  979. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue2.js +0 -136
  980. package/dist/v2/features/global-cookies/components/CookiesTable.vue.js +0 -7
  981. package/dist/v2/features/global-cookies/components/CookiesTable.vue2.js +0 -189
  982. package/dist/v2/features/modal/Modal.vue.js +0 -122
  983. package/dist/v2/features/modal/Modal.vue2.js +0 -4
  984. package/dist/v2/features/modal/helpers/create-api-client-modal.js +0 -89
  985. package/dist/v2/features/modal/helpers/map-hidden-clients-config.js +0 -36
  986. package/dist/v2/features/modal/helpers/resolve-route-parameters.js +0 -29
  987. package/dist/v2/features/modal/helpers/restore-workspace-state.js +0 -36
  988. package/dist/v2/features/modal/hooks/use-modal-sidebar.js +0 -93
  989. package/dist/v2/features/modal/modal-events.js +0 -44
  990. package/dist/v2/features/operation/Operation.vue.js +0 -126
  991. package/dist/v2/features/operation/Operation.vue2.js +0 -4
  992. package/dist/v2/features/operation/helpers/combine-params.js +0 -14
  993. package/dist/v2/features/operation/helpers/get-security-requirements.js +0 -4
  994. package/dist/v2/features/operation/helpers/get-selected-security.js +0 -18
  995. package/dist/v2/features/operation/helpers/get-selected-server.js +0 -4
  996. package/dist/v2/features/search/helpers/create-fuse-instance.js +0 -43
  997. package/dist/v2/features/search/helpers/create-search-index.js +0 -63
  998. package/dist/v2/features/search/hooks/use-search-index.js +0 -18
  999. package/dist/v2/features/settings/CollectionSettings.vue.js +0 -275
  1000. package/dist/v2/features/settings/CollectionSettings.vue2.js +0 -4
  1001. package/dist/v2/features/settings/DocumentSettings.vue.js +0 -115
  1002. package/dist/v2/features/settings/DocumentSettings.vue2.js +0 -4
  1003. package/dist/v2/features/settings/components/Appearance.vue.js +0 -88
  1004. package/dist/v2/features/settings/components/Appearance.vue2.js +0 -4
  1005. package/dist/v2/features/settings/components/Section.vue.js +0 -35
  1006. package/dist/v2/features/settings/components/Section.vue2.js +0 -4
  1007. package/dist/v2/features/settings/helpers/get-theme-colors.js +0 -16
  1008. package/dist/v2/helpers/drag-handle-factory.js +0 -120
  1009. package/dist/v2/helpers/generate-location-id.js +0 -10
  1010. package/dist/v2/helpers/get-active-environment.js +0 -22
  1011. package/dist/v2/helpers/get-active-proxy-url.js +0 -5
  1012. package/dist/v2/helpers/get-servers.js +0 -66
  1013. package/dist/v2/helpers/get-tab-details.js +0 -34
  1014. package/dist/v2/helpers/handle-hotkeys.js +0 -54
  1015. package/dist/v2/helpers/is-url.js +0 -5
  1016. package/dist/v2/helpers/slugify.js +0 -4
  1017. package/dist/v2/helpers/storage.js +0 -16
  1018. package/dist/v2/hooks/use-color-mode.js +0 -24
  1019. package/dist/v2/hooks/use-global-hot-keys.js +0 -11
  1020. package/dist/v2/hooks/use-scroll-lock.js +0 -21
  1021. package/dist/v2/workspace-events.js +0 -252
  1022. package/dist/views/Collection/Collection.vue.js +0 -4
  1023. package/dist/views/Collection/Collection.vue2.js +0 -49
  1024. package/dist/views/Collection/CollectionAuthentication.vue.js +0 -7
  1025. package/dist/views/Collection/CollectionAuthentication.vue2.js +0 -56
  1026. package/dist/views/Collection/CollectionCookies.vue.js +0 -4
  1027. package/dist/views/Collection/CollectionCookies.vue2.js +0 -16
  1028. package/dist/views/Collection/CollectionEnvironment.vue.js +0 -5
  1029. package/dist/views/Collection/CollectionEnvironment.vue2.js +0 -229
  1030. package/dist/views/Collection/CollectionInfoForm.vue.js +0 -7
  1031. package/dist/views/Collection/CollectionInfoForm.vue2.js +0 -63
  1032. package/dist/views/Collection/CollectionNavigation.vue.js +0 -133
  1033. package/dist/views/Collection/CollectionNavigation.vue2.js +0 -4
  1034. package/dist/views/Collection/CollectionOverview.vue.js +0 -4
  1035. package/dist/views/Collection/CollectionOverview.vue2.js +0 -34
  1036. package/dist/views/Collection/CollectionScripts.vue.js +0 -4
  1037. package/dist/views/Collection/CollectionScripts.vue2.js +0 -16
  1038. package/dist/views/Collection/CollectionServerForm.vue.js +0 -75
  1039. package/dist/views/Collection/CollectionServerForm.vue2.js +0 -4
  1040. package/dist/views/Collection/CollectionServers.vue.js +0 -4
  1041. package/dist/views/Collection/CollectionServers.vue2.js +0 -94
  1042. package/dist/views/Collection/CollectionSettings.vue.js +0 -4
  1043. package/dist/views/Collection/CollectionSettings.vue2.js +0 -118
  1044. package/dist/views/Collection/CollectionSync.vue.js +0 -4
  1045. package/dist/views/Collection/CollectionSync.vue2.js +0 -16
  1046. package/dist/views/Collection/components/EnvironmentForm.vue.js +0 -7
  1047. package/dist/views/Collection/components/EnvironmentForm.vue2.js +0 -270
  1048. package/dist/views/Collection/components/MarkdownInput.vue.js +0 -7
  1049. package/dist/views/Collection/components/MarkdownInput.vue2.js +0 -100
  1050. package/dist/views/Components/CodeSnippet/CodeSnippet.vue.js +0 -50
  1051. package/dist/views/Components/CodeSnippet/CodeSnippet.vue2.js +0 -4
  1052. package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.js +0 -62
  1053. package/dist/views/Components/CodeSnippet/helpers/get-har-request.js +0 -82
  1054. package/dist/views/Components/CodeSnippet/helpers/get-snippet.js +0 -30
  1055. package/dist/views/Cookies/CookieForm.vue.js +0 -34
  1056. package/dist/views/Cookies/CookieForm.vue2.js +0 -4
  1057. package/dist/views/Cookies/CookieModal.vue.js +0 -7
  1058. package/dist/views/Cookies/CookieModal.vue2.js +0 -88
  1059. package/dist/views/Cookies/Cookies.vue.js +0 -4
  1060. package/dist/views/Cookies/Cookies.vue2.js +0 -162
  1061. package/dist/views/Environment/Environment.vue.js +0 -4
  1062. package/dist/views/Environment/Environment.vue2.js +0 -402
  1063. package/dist/views/Environment/EnvironmentColorModal.vue.js +0 -42
  1064. package/dist/views/Environment/EnvironmentColorModal.vue2.js +0 -4
  1065. package/dist/views/Environment/EnvironmentColors.vue.js +0 -118
  1066. package/dist/views/Environment/EnvironmentColors.vue2.js +0 -4
  1067. package/dist/views/Environment/EnvironmentModal.vue.js +0 -131
  1068. package/dist/views/Environment/EnvironmentModal.vue2.js +0 -4
  1069. package/dist/views/Environment/EnvironmentVariableDropdown.vue.js +0 -129
  1070. package/dist/views/Environment/EnvironmentVariableDropdown.vue2.js +0 -4
  1071. package/dist/views/Environment/handle-drag.js +0 -32
  1072. package/dist/views/Request/Request.vue.js +0 -7
  1073. package/dist/views/Request/Request.vue2.js +0 -105
  1074. package/dist/views/Request/RequestRoot.vue.js +0 -7
  1075. package/dist/views/Request/RequestRoot.vue2.js +0 -123
  1076. package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.js +0 -52
  1077. package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue2.js +0 -4
  1078. package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.js +0 -246
  1079. package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue2.js +0 -4
  1080. package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.js +0 -135
  1081. package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue2.js +0 -4
  1082. package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.js +0 -7
  1083. package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue2.js +0 -209
  1084. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.js +0 -7
  1085. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue2.js +0 -116
  1086. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.js +0 -50
  1087. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue2.js +0 -4
  1088. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.js +0 -219
  1089. package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue2.js +0 -4
  1090. package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.js +0 -28
  1091. package/dist/views/Request/RequestSection/RequestBody.vue.js +0 -7
  1092. package/dist/views/Request/RequestSection/RequestBody.vue2.js +0 -451
  1093. package/dist/views/Request/RequestSection/RequestCodeExample.vue.js +0 -7
  1094. package/dist/views/Request/RequestSection/RequestCodeExample.vue2.js +0 -170
  1095. package/dist/views/Request/RequestSection/RequestParams.vue.js +0 -162
  1096. package/dist/views/Request/RequestSection/RequestParams.vue2.js +0 -4
  1097. package/dist/views/Request/RequestSection/RequestPathParams.vue.js +0 -96
  1098. package/dist/views/Request/RequestSection/RequestPathParams.vue2.js +0 -4
  1099. package/dist/views/Request/RequestSection/RequestSection.vue.js +0 -7
  1100. package/dist/views/Request/RequestSection/RequestSection.vue2.js +0 -247
  1101. package/dist/views/Request/RequestSection/RequestTable.vue.js +0 -7
  1102. package/dist/views/Request/RequestSection/RequestTable.vue2.js +0 -227
  1103. package/dist/views/Request/RequestSection/RequestTableTooltip.vue.js +0 -7
  1104. package/dist/views/Request/RequestSection/RequestTableTooltip.vue2.js +0 -61
  1105. package/dist/views/Request/RequestSection/helpers/filter-security-requirements.js +0 -29
  1106. package/dist/views/Request/RequestSection/helpers/getting-started.js +0 -13
  1107. package/dist/views/Request/RequestSection/helpers/update-scheme.js +0 -16
  1108. package/dist/views/Request/RequestSidebar.vue.js +0 -7
  1109. package/dist/views/Request/RequestSidebar.vue2.js +0 -341
  1110. package/dist/views/Request/RequestSidebarItem.vue.js +0 -8
  1111. package/dist/views/Request/RequestSidebarItem.vue2.js +0 -464
  1112. package/dist/views/Request/RequestSidebarItemMenu.vue.js +0 -7
  1113. package/dist/views/Request/RequestSidebarItemMenu.vue2.js +0 -236
  1114. package/dist/views/Request/RequestSubpageHeader.vue.js +0 -7
  1115. package/dist/views/Request/RequestSubpageHeader.vue2.js +0 -79
  1116. package/dist/views/Request/ResponseSection/RequestHeaders.vue.js +0 -96
  1117. package/dist/views/Request/ResponseSection/RequestHeaders.vue2.js +0 -4
  1118. package/dist/views/Request/ResponseSection/ResponseBody.vue.js +0 -7
  1119. package/dist/views/Request/ResponseSection/ResponseBody.vue2.js +0 -83
  1120. package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.js +0 -36
  1121. package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue2.js +0 -4
  1122. package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.js +0 -14
  1123. package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.js +0 -7
  1124. package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue2.js +0 -63
  1125. package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.js +0 -7
  1126. package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue2.js +0 -42
  1127. package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.js +0 -74
  1128. package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue2.js +0 -4
  1129. package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.js +0 -25
  1130. package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue2.js +0 -4
  1131. package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.js +0 -50
  1132. package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue3.js +0 -5
  1133. package/dist/views/Request/ResponseSection/ResponseCookies.vue.js +0 -51
  1134. package/dist/views/Request/ResponseSection/ResponseCookies.vue2.js +0 -4
  1135. package/dist/views/Request/ResponseSection/ResponseEmpty.vue.js +0 -7
  1136. package/dist/views/Request/ResponseSection/ResponseEmpty.vue2.js +0 -103
  1137. package/dist/views/Request/ResponseSection/ResponseHeaders.vue.js +0 -96
  1138. package/dist/views/Request/ResponseSection/ResponseHeaders.vue2.js +0 -4
  1139. package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.js +0 -7
  1140. package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue2.js +0 -38
  1141. package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.js +0 -67
  1142. package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue2.js +0 -4
  1143. package/dist/views/Request/ResponseSection/ResponseSection.vue.js +0 -7
  1144. package/dist/views/Request/ResponseSection/ResponseSection.vue2.js +0 -189
  1145. package/dist/views/Request/components/WorkspaceDropdown.vue.js +0 -182
  1146. package/dist/views/Request/components/WorkspaceDropdown.vue2.js +0 -4
  1147. package/dist/views/Request/consts/mediaTypes.js +0 -131
  1148. package/dist/views/Request/consts/new-auth-options.js +0 -100
  1149. package/dist/views/Request/handle-drag.js +0 -42
  1150. package/dist/views/Request/hooks/useOpenApiWatcher.js +0 -57
  1151. package/dist/views/Request/libs/auth.js +0 -52
  1152. package/dist/views/Request/libs/oauth2.js +0 -127
  1153. package/dist/views/Request/libs/request.js +0 -40
  1154. package/dist/views/Request/libs/watch-mode.js +0 -337
  1155. package/dist/views/Settings/Settings.vue.js +0 -4
  1156. package/dist/views/Settings/Settings.vue2.js +0 -29
  1157. package/dist/views/Settings/SettingsGeneral.vue.js +0 -286
  1158. package/dist/views/Settings/SettingsGeneral.vue2.js +0 -4
  1159. package/dist/views/Settings/components/SettingsAppearance.vue.js +0 -85
  1160. package/dist/views/Settings/components/SettingsAppearance.vue2.js +0 -4
  1161. package/dist/views/Settings/components/SettingsSection.vue.js +0 -24
  1162. package/dist/views/Settings/components/SettingsSection.vue2.js +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestSection-HhdJj9hW.js","names":[],"sources":["../src/views/Request/libs/request.ts","../src/views/Request/RequestSection/RequestTableTooltip.vue","../src/views/Request/RequestSection/RequestTableTooltip.vue","../src/views/Request/RequestSection/RequestTable.vue","../src/views/Request/RequestSection/RequestTable.vue","../src/views/Request/RequestSection/RequestBody.vue","../src/views/Request/RequestSection/RequestBody.vue","../src/views/Request/RequestSection/RequestParams.vue","../src/views/Request/RequestSection/RequestParams.vue","../src/views/Request/RequestSection/RequestPathParams.vue","../src/views/Request/RequestSection/RequestPathParams.vue","../src/views/Request/RequestSection/RequestCodeExample.vue","../src/views/Request/RequestSection/RequestCodeExample.vue","../src/views/Request/RequestSection/RequestSection.vue","../src/views/Request/RequestSection/RequestSection.vue"],"sourcesContent":["import type { RequestExampleParameter } from '@scalar/oas-utils/entities/spec'\nimport { computed } from 'vue'\n\n/**\n * Check if a RequestExampleParameter has any of the following properties:\n * - description\n * - type\n * - default\n * - format\n * - minimum\n * - maximum\n */\nexport const hasItemProperties = (item: RequestExampleParameter) =>\n Boolean(item.description || item.type || item.default || item.format || item.minimum || item.maximum)\n\n/**\n * Checks if the value of a RequestExampleParameter is the expected type or format\n * Returns an alert message if the value is not in the correct type or format, otherwise false\n */\nexport const parameterIsInvalid = (item: RequestExampleParameter) => {\n return computed(() => {\n if (item.value === undefined || item.value === '') {\n return false\n }\n\n // Type validation\n if (item.type) {\n if (item.type === 'integer') {\n const value = Number(item.value)\n if (isNaN(value) || !Number.isInteger(value)) {\n return 'Value must be a whole number (e.g., 42)'\n }\n if (item.minimum !== undefined && value < item.minimum) {\n return `Value must be ${item.minimum} or greater`\n }\n if (item.maximum !== undefined && value > item.maximum) {\n return `Value must be ${item.maximum} or less`\n }\n }\n\n if (item.type === 'number') {\n const value = Number(item.value)\n if (isNaN(value)) {\n return 'Value must be a number (e.g., 42.5)'\n }\n if (item.minimum !== undefined && value < item.minimum) {\n return `Value must be ${item.minimum} or greater`\n }\n if (item.maximum !== undefined && value > item.maximum) {\n return `Value must be ${item.maximum} or less`\n }\n }\n\n if (item.type === 'string' && item.format) {\n if (item.format === 'date' && !/^\\d{4}-\\d{2}-\\d{2}$/.test(item.value)) {\n return 'Please enter a valid date in YYYY-MM-DD format (e.g., 2024-03-20)'\n }\n if (\n item.format === 'date-time' &&\n !/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/.test(item.value)\n ) {\n return 'Please enter a valid date and time in RFC 3339 format (e.g., 2024-03-20T13:45:30Z)'\n }\n if (item.format === 'email' && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(item.value)) {\n return 'Please enter a valid email address (e.g., user@example.com)'\n }\n if (item.format === 'uri' && !/^[a-zA-Z][a-zA-Z0-9+.-]*:.+$/.test(item.value)) {\n return 'Please enter a valid URI (e.g., https://example.com)'\n }\n }\n }\n\n return false\n })\n}\n\n/**\n * Checks if a RequestExampleParameter is required and has an empty value\n */\nexport const hasEmptyRequiredParameter = (item: RequestExampleParameter) => Boolean(item.required && item.value === '')\n","<script setup lang=\"ts\">\nimport { ScalarPopover } from '@scalar/components'\nimport { ScalarIconInfo, ScalarIconWarning } from '@scalar/icons'\nimport type { RequestExampleParameter } from '@scalar/oas-utils/entities/spec'\nimport { computed } from 'vue'\n\nimport { parameterIsInvalid } from '../libs/request'\n\nconst { item } = defineProps<{ item: RequestExampleParameter }>()\n\nconst isInvalid = computed(() => !!parameterIsInvalid(item).value)\n</script>\n<template>\n <ScalarPopover\n teleport\n :offset=\"4\"\n placement=\"left\">\n <button\n type=\"button\"\n :aria-label=\"isInvalid ? 'Input is invalid' : 'More Information'\"\n class=\"text-c-2 hover:text-c-1 hover:bg-b-2 rounded p-1\"\n :role=\"isInvalid ? 'alert' : 'none'\">\n <ScalarIconWarning\n v-if=\"isInvalid\"\n class=\"text-orange size-3.5 brightness-90 hover:brightness-75\" />\n <ScalarIconInfo\n v-else\n class=\"text-c-2 hover:text-c-1 size-3.5\" />\n </button>\n <template #popover>\n <div\n class=\"w-content text-xxs text-c-1 grid min-w-48 gap-1.5 rounded px-1.5 pt-2 pb-1.5 leading-none\">\n <div\n v-if=\"isInvalid\"\n class=\"text-error-1\">\n {{ parameterIsInvalid(item).value }}\n </div>\n <div\n v-else-if=\"\n item.type ||\n item.format ||\n item.minimum ||\n item.maximum ||\n item.default\n \"\n class=\"schema text-c-2 flex items-center\">\n <span v-if=\"item.type\">{{ item.type }}</span>\n <span v-if=\"item.format\">{{ item.format }}</span>\n <span v-if=\"item.minimum\">min: {{ item.minimum }}</span>\n <span v-if=\"item.maximum\">max: {{ item.maximum }}</span>\n <span v-if=\"item.default\">default: {{ item.default }}</span>\n </div>\n <span\n v-if=\"item.description && !isInvalid\"\n class=\"text-sm leading-snug text-pretty\"\n :style=\"{ maxWidth: '16rem' }\">\n {{ item.description }}\n </span>\n </div>\n </template>\n </ScalarPopover>\n</template>\n<style scoped>\n.schema > span:not(:first-child)::before {\n content: '·';\n display: block;\n margin: 0 0.5ch;\n}\n\n.schema > span {\n display: flex;\n white-space: nowrap;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarPopover } from '@scalar/components'\nimport { ScalarIconInfo, ScalarIconWarning } from '@scalar/icons'\nimport type { RequestExampleParameter } from '@scalar/oas-utils/entities/spec'\nimport { computed } from 'vue'\n\nimport { parameterIsInvalid } from '../libs/request'\n\nconst { item } = defineProps<{ item: RequestExampleParameter }>()\n\nconst isInvalid = computed(() => !!parameterIsInvalid(item).value)\n</script>\n<template>\n <ScalarPopover\n teleport\n :offset=\"4\"\n placement=\"left\">\n <button\n type=\"button\"\n :aria-label=\"isInvalid ? 'Input is invalid' : 'More Information'\"\n class=\"text-c-2 hover:text-c-1 hover:bg-b-2 rounded p-1\"\n :role=\"isInvalid ? 'alert' : 'none'\">\n <ScalarIconWarning\n v-if=\"isInvalid\"\n class=\"text-orange size-3.5 brightness-90 hover:brightness-75\" />\n <ScalarIconInfo\n v-else\n class=\"text-c-2 hover:text-c-1 size-3.5\" />\n </button>\n <template #popover>\n <div\n class=\"w-content text-xxs text-c-1 grid min-w-48 gap-1.5 rounded px-1.5 pt-2 pb-1.5 leading-none\">\n <div\n v-if=\"isInvalid\"\n class=\"text-error-1\">\n {{ parameterIsInvalid(item).value }}\n </div>\n <div\n v-else-if=\"\n item.type ||\n item.format ||\n item.minimum ||\n item.maximum ||\n item.default\n \"\n class=\"schema text-c-2 flex items-center\">\n <span v-if=\"item.type\">{{ item.type }}</span>\n <span v-if=\"item.format\">{{ item.format }}</span>\n <span v-if=\"item.minimum\">min: {{ item.minimum }}</span>\n <span v-if=\"item.maximum\">max: {{ item.maximum }}</span>\n <span v-if=\"item.default\">default: {{ item.default }}</span>\n </div>\n <span\n v-if=\"item.description && !isInvalid\"\n class=\"text-sm leading-snug text-pretty\"\n :style=\"{ maxWidth: '16rem' }\">\n {{ item.description }}\n </span>\n </div>\n </template>\n </ScalarPopover>\n</template>\n<style scoped>\n.schema > span:not(:first-child)::before {\n content: '·';\n display: block;\n margin: 0 0.5ch;\n}\n\n.schema > span {\n display: flex;\n white-space: nowrap;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarIcon, ScalarTooltip } from '@scalar/components'\nimport { ScalarIconTrash } from '@scalar/icons'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport type { RequestExampleParameter } from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { RouterLink, type RouteLocationRaw } from 'vue-router'\n\nimport CodeInput from '@/components/CodeInput/CodeInput.vue'\nimport DataTable from '@/components/DataTable/DataTable.vue'\nimport DataTableCell from '@/components/DataTable/DataTableCell.vue'\nimport DataTableCheckbox from '@/components/DataTable/DataTableCheckbox.vue'\nimport DataTableHeader from '@/components/DataTable/DataTableHeader.vue'\nimport DataTableRow from '@/components/DataTable/DataTableRow.vue'\nimport type { EnvVariable } from '@/store/active-entities'\n\nimport { hasItemProperties, parameterIsInvalid } from '../libs/request'\nimport RequestTableTooltip from './RequestTableTooltip.vue'\n\nconst props = withDefaults(\n defineProps<{\n items?: (RequestExampleParameter & { route?: RouteLocationRaw })[]\n /** Hide the enabled column */\n hasCheckboxDisabled?: boolean\n showUploadButton?: boolean\n isGlobal?: boolean\n isReadOnly?: boolean\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n invalidParams?: Set<string>\n label?: string\n }>(),\n {\n hasCheckboxDisabled: false,\n showUploadButton: false,\n isGlobal: false,\n isReadOnly: false,\n },\n)\n\nconst emit = defineEmits<{\n (e: 'updateRow', idx: number, field: 'key' | 'value', value: string): void\n (e: 'toggleRow', idx: number, enabled: boolean): void\n (e: 'addRow'): void\n (e: 'deleteRow', idx: number): void\n (e: 'inputFocus'): void\n (e: 'inputBlur'): void\n (e: 'uploadFile', idx: number): void\n (e: 'removeFile', idx: number): void\n}>()\n\nconst columns = ['', '', '36px']\n\nconst handleSelectVariable = (\n idx: number,\n field: 'key' | 'value',\n value: string,\n) => {\n emit('updateRow', idx, field, value)\n}\n\nconst handleFileUpload = (idx: number) => {\n emit('uploadFile', idx)\n}\n\nconst flattenValue = (item: RequestExampleParameter) => {\n return Array.isArray(item.default) && item.default.length === 1\n ? item.default[0]\n : item.default\n}\n\n// Shows delete button if the item has key or value filled\nconst showDeleteButton = (item: RequestExampleParameter) => {\n return Boolean(item.key || item.value)\n}\n</script>\n<template>\n <DataTable\n class=\"group/table flex-1\"\n :columns=\"columns\">\n <DataTableRow class=\"sr-only !block\">\n <DataTableHeader>{{ label }} Enabled</DataTableHeader>\n <DataTableHeader>{{ label }} Key</DataTableHeader>\n <DataTableHeader>{{ label }} Value</DataTableHeader>\n </DataTableRow>\n <DataTableRow\n v-for=\"(item, idx) in items\"\n :id=\"item.key\"\n :key=\"idx\"\n :class=\"{\n alert: parameterIsInvalid(item).value,\n error: invalidParams && invalidParams.has(item.key),\n }\">\n <template v-if=\"isGlobal\">\n <RouterLink\n class=\"text-c-2 flex items-center justify-center border-t !border-r\"\n :to=\"item.route ?? {}\">\n <span class=\"sr-only\">Global</span>\n <ScalarTooltip\n content=\"Global cookies are shared across the whole workspace.\"\n placement=\"top\">\n <ScalarIcon\n tabindex=\"0\"\n class=\"text-c-1\"\n icon=\"Globe\"\n size=\"xs\" />\n </ScalarTooltip>\n </RouterLink>\n </template>\n <template v-else>\n <DataTableCheckbox\n class=\"!border-r\"\n :disabled=\"props.hasCheckboxDisabled\"\n :modelValue=\"item.enabled\"\n @update:modelValue=\"(v) => emit('toggleRow', idx, v)\" />\n </template>\n <DataTableCell>\n <CodeInput\n :aria-label=\"`${label} Key`\"\n disableCloseBrackets\n :disabled=\"props.isReadOnly\"\n disableEnter\n disableTabIndent\n lineWrapping\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :modelValue=\"item.key\"\n placeholder=\"Key\"\n :required=\"Boolean(item.required)\"\n :workspace=\"workspace\"\n @blur=\"emit('inputBlur')\"\n @focus=\"emit('inputFocus')\"\n @selectVariable=\"(v: string) => handleSelectVariable(idx, 'key', v)\"\n @update:modelValue=\"\n (v: string) => emit('updateRow', idx, 'key', v)\n \" />\n </DataTableCell>\n <DataTableCell>\n <CodeInput\n :aria-label=\"`${label} Value`\"\n :class=\"\n hasItemProperties(item)\n ? 'pr-6 group-hover:pr-10 group-has-[.cm-focused]:pr-10'\n : 'group-hover:pr-6 group-has-[.cm-focused]:pr-6'\n \"\n :default=\"item.default\"\n disableCloseBrackets\n :disabled=\"props.isReadOnly\"\n disableEnter\n disableTabIndent\n lineWrapping\n :enum=\"item.enum ?? []\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :examples=\"item.examples ?? []\"\n :max=\"item.maximum\"\n :min=\"item.minimum\"\n :modelValue=\"item.value\"\n :nullable=\"Boolean(item.nullable)\"\n placeholder=\"Value\"\n :type=\"item.type\"\n :workspace=\"workspace\"\n @blur=\"emit('inputBlur')\"\n @focus=\"emit('inputFocus')\"\n @selectVariable=\"(v: string) => handleSelectVariable(idx, 'value', v)\"\n @update:modelValue=\"\n (v: string) => emit('updateRow', idx, 'value', v)\n \">\n <template #icon>\n <ScalarButton\n v-if=\"showDeleteButton(item) && !item.required\"\n :class=\"{\n '-mr-0.5': hasItemProperties(item),\n }\"\n class=\"text-c-2 hover:text-c-1 hover:bg-b-2 z-context hidden h-fit rounded p-1 group-hover:flex group-has-[.cm-focused]:flex\"\n size=\"sm\"\n variant=\"ghost\"\n @click=\"emit('deleteRow', idx)\">\n <ScalarIconTrash class=\"size-3.5\" />\n </ScalarButton>\n <RequestTableTooltip\n v-if=\"hasItemProperties(item)\"\n :item=\"{ ...item, default: flattenValue(item) }\" />\n </template>\n </CodeInput>\n </DataTableCell>\n <DataTableCell\n v-if=\"showUploadButton\"\n class=\"group/upload flex items-center justify-center whitespace-nowrap\">\n <template v-if=\"item.file\">\n <div\n class=\"text-c-2 filemask flex w-full max-w-[100%] items-end justify-end overflow-hidden p-1\">\n <span>{{ item.file?.name }}</span>\n </div>\n <button\n class=\"bg-b-2 centered-x centered-y absolute hidden w-[calc(100%_-_8px)] rounded p-0.5 text-center text-xs font-medium group-hover/upload:block\"\n type=\"button\"\n @click=\"emit('removeFile', idx)\">\n Delete\n </button>\n </template>\n <template v-else>\n <div class=\"p-0.5\">\n <ScalarButton\n class=\"bg-b-2 hover:bg-b-3 text-c-2 h-fit border-0 py-px shadow-none\"\n size=\"sm\"\n variant=\"outlined\"\n @click=\"handleFileUpload(idx)\">\n <span>Upload File</span>\n <ScalarIcon\n class=\"ml-1\"\n icon=\"Upload\"\n size=\"xs\"\n thickness=\"2.5\" />\n </ScalarButton>\n </div>\n </template>\n </DataTableCell>\n </DataTableRow>\n </DataTable>\n</template>\n<style scoped>\n:deep(.cm-editor) {\n padding: 0;\n}\n:deep(.cm-content) {\n align-items: center;\n background-color: transparent;\n display: flex;\n font-family: var(--scalar-font);\n font-size: var(--scalar-small);\n padding: 5px 8px;\n width: 100%;\n}\n:deep(.cm-content):has(.cm-pill) {\n padding: 5px 8px;\n}\n:deep(.cm-content .cm-pill:not(:last-of-type)) {\n margin-right: 0.5px;\n}\n:deep(.cm-content .cm-pill:not(:first-of-type)) {\n margin-left: 0.5px;\n}\n:deep(.cm-line) {\n overflow: hidden;\n padding: 0;\n text-overflow: ellipsis;\n}\n.filemask {\n mask-image: linear-gradient(\n to right,\n transparent 0,\n var(--scalar-background-2) 20px\n );\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarIcon, ScalarTooltip } from '@scalar/components'\nimport { ScalarIconTrash } from '@scalar/icons'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport type { RequestExampleParameter } from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { RouterLink, type RouteLocationRaw } from 'vue-router'\n\nimport CodeInput from '@/components/CodeInput/CodeInput.vue'\nimport DataTable from '@/components/DataTable/DataTable.vue'\nimport DataTableCell from '@/components/DataTable/DataTableCell.vue'\nimport DataTableCheckbox from '@/components/DataTable/DataTableCheckbox.vue'\nimport DataTableHeader from '@/components/DataTable/DataTableHeader.vue'\nimport DataTableRow from '@/components/DataTable/DataTableRow.vue'\nimport type { EnvVariable } from '@/store/active-entities'\n\nimport { hasItemProperties, parameterIsInvalid } from '../libs/request'\nimport RequestTableTooltip from './RequestTableTooltip.vue'\n\nconst props = withDefaults(\n defineProps<{\n items?: (RequestExampleParameter & { route?: RouteLocationRaw })[]\n /** Hide the enabled column */\n hasCheckboxDisabled?: boolean\n showUploadButton?: boolean\n isGlobal?: boolean\n isReadOnly?: boolean\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n invalidParams?: Set<string>\n label?: string\n }>(),\n {\n hasCheckboxDisabled: false,\n showUploadButton: false,\n isGlobal: false,\n isReadOnly: false,\n },\n)\n\nconst emit = defineEmits<{\n (e: 'updateRow', idx: number, field: 'key' | 'value', value: string): void\n (e: 'toggleRow', idx: number, enabled: boolean): void\n (e: 'addRow'): void\n (e: 'deleteRow', idx: number): void\n (e: 'inputFocus'): void\n (e: 'inputBlur'): void\n (e: 'uploadFile', idx: number): void\n (e: 'removeFile', idx: number): void\n}>()\n\nconst columns = ['', '', '36px']\n\nconst handleSelectVariable = (\n idx: number,\n field: 'key' | 'value',\n value: string,\n) => {\n emit('updateRow', idx, field, value)\n}\n\nconst handleFileUpload = (idx: number) => {\n emit('uploadFile', idx)\n}\n\nconst flattenValue = (item: RequestExampleParameter) => {\n return Array.isArray(item.default) && item.default.length === 1\n ? item.default[0]\n : item.default\n}\n\n// Shows delete button if the item has key or value filled\nconst showDeleteButton = (item: RequestExampleParameter) => {\n return Boolean(item.key || item.value)\n}\n</script>\n<template>\n <DataTable\n class=\"group/table flex-1\"\n :columns=\"columns\">\n <DataTableRow class=\"sr-only !block\">\n <DataTableHeader>{{ label }} Enabled</DataTableHeader>\n <DataTableHeader>{{ label }} Key</DataTableHeader>\n <DataTableHeader>{{ label }} Value</DataTableHeader>\n </DataTableRow>\n <DataTableRow\n v-for=\"(item, idx) in items\"\n :id=\"item.key\"\n :key=\"idx\"\n :class=\"{\n alert: parameterIsInvalid(item).value,\n error: invalidParams && invalidParams.has(item.key),\n }\">\n <template v-if=\"isGlobal\">\n <RouterLink\n class=\"text-c-2 flex items-center justify-center border-t !border-r\"\n :to=\"item.route ?? {}\">\n <span class=\"sr-only\">Global</span>\n <ScalarTooltip\n content=\"Global cookies are shared across the whole workspace.\"\n placement=\"top\">\n <ScalarIcon\n tabindex=\"0\"\n class=\"text-c-1\"\n icon=\"Globe\"\n size=\"xs\" />\n </ScalarTooltip>\n </RouterLink>\n </template>\n <template v-else>\n <DataTableCheckbox\n class=\"!border-r\"\n :disabled=\"props.hasCheckboxDisabled\"\n :modelValue=\"item.enabled\"\n @update:modelValue=\"(v) => emit('toggleRow', idx, v)\" />\n </template>\n <DataTableCell>\n <CodeInput\n :aria-label=\"`${label} Key`\"\n disableCloseBrackets\n :disabled=\"props.isReadOnly\"\n disableEnter\n disableTabIndent\n lineWrapping\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :modelValue=\"item.key\"\n placeholder=\"Key\"\n :required=\"Boolean(item.required)\"\n :workspace=\"workspace\"\n @blur=\"emit('inputBlur')\"\n @focus=\"emit('inputFocus')\"\n @selectVariable=\"(v: string) => handleSelectVariable(idx, 'key', v)\"\n @update:modelValue=\"\n (v: string) => emit('updateRow', idx, 'key', v)\n \" />\n </DataTableCell>\n <DataTableCell>\n <CodeInput\n :aria-label=\"`${label} Value`\"\n :class=\"\n hasItemProperties(item)\n ? 'pr-6 group-hover:pr-10 group-has-[.cm-focused]:pr-10'\n : 'group-hover:pr-6 group-has-[.cm-focused]:pr-6'\n \"\n :default=\"item.default\"\n disableCloseBrackets\n :disabled=\"props.isReadOnly\"\n disableEnter\n disableTabIndent\n lineWrapping\n :enum=\"item.enum ?? []\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :examples=\"item.examples ?? []\"\n :max=\"item.maximum\"\n :min=\"item.minimum\"\n :modelValue=\"item.value\"\n :nullable=\"Boolean(item.nullable)\"\n placeholder=\"Value\"\n :type=\"item.type\"\n :workspace=\"workspace\"\n @blur=\"emit('inputBlur')\"\n @focus=\"emit('inputFocus')\"\n @selectVariable=\"(v: string) => handleSelectVariable(idx, 'value', v)\"\n @update:modelValue=\"\n (v: string) => emit('updateRow', idx, 'value', v)\n \">\n <template #icon>\n <ScalarButton\n v-if=\"showDeleteButton(item) && !item.required\"\n :class=\"{\n '-mr-0.5': hasItemProperties(item),\n }\"\n class=\"text-c-2 hover:text-c-1 hover:bg-b-2 z-context hidden h-fit rounded p-1 group-hover:flex group-has-[.cm-focused]:flex\"\n size=\"sm\"\n variant=\"ghost\"\n @click=\"emit('deleteRow', idx)\">\n <ScalarIconTrash class=\"size-3.5\" />\n </ScalarButton>\n <RequestTableTooltip\n v-if=\"hasItemProperties(item)\"\n :item=\"{ ...item, default: flattenValue(item) }\" />\n </template>\n </CodeInput>\n </DataTableCell>\n <DataTableCell\n v-if=\"showUploadButton\"\n class=\"group/upload flex items-center justify-center whitespace-nowrap\">\n <template v-if=\"item.file\">\n <div\n class=\"text-c-2 filemask flex w-full max-w-[100%] items-end justify-end overflow-hidden p-1\">\n <span>{{ item.file?.name }}</span>\n </div>\n <button\n class=\"bg-b-2 centered-x centered-y absolute hidden w-[calc(100%_-_8px)] rounded p-0.5 text-center text-xs font-medium group-hover/upload:block\"\n type=\"button\"\n @click=\"emit('removeFile', idx)\">\n Delete\n </button>\n </template>\n <template v-else>\n <div class=\"p-0.5\">\n <ScalarButton\n class=\"bg-b-2 hover:bg-b-3 text-c-2 h-fit border-0 py-px shadow-none\"\n size=\"sm\"\n variant=\"outlined\"\n @click=\"handleFileUpload(idx)\">\n <span>Upload File</span>\n <ScalarIcon\n class=\"ml-1\"\n icon=\"Upload\"\n size=\"xs\"\n thickness=\"2.5\" />\n </ScalarButton>\n </div>\n </template>\n </DataTableCell>\n </DataTableRow>\n </DataTable>\n</template>\n<style scoped>\n:deep(.cm-editor) {\n padding: 0;\n}\n:deep(.cm-content) {\n align-items: center;\n background-color: transparent;\n display: flex;\n font-family: var(--scalar-font);\n font-size: var(--scalar-small);\n padding: 5px 8px;\n width: 100%;\n}\n:deep(.cm-content):has(.cm-pill) {\n padding: 5px 8px;\n}\n:deep(.cm-content .cm-pill:not(:last-of-type)) {\n margin-right: 0.5px;\n}\n:deep(.cm-content .cm-pill:not(:first-of-type)) {\n margin-left: 0.5px;\n}\n:deep(.cm-line) {\n overflow: hidden;\n padding: 0;\n text-overflow: ellipsis;\n}\n.filemask {\n mask-image: linear-gradient(\n to right,\n transparent 0,\n var(--scalar-background-2) 20px\n );\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarIcon, ScalarListbox } from '@scalar/components'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport {\n requestExampleParametersSchema,\n type Operation,\n type RequestExample,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { canMethodHaveBody } from '@scalar/oas-utils/helpers'\nimport type { CodeMirrorLanguage } from '@scalar/use-codemirror'\nimport type { Entries } from 'type-fest'\nimport { computed, nextTick, ref, watch } from 'vue'\n\nimport CodeInput from '@/components/CodeInput/CodeInput.vue'\nimport DataTable from '@/components/DataTable/DataTable.vue'\nimport DataTableHeader from '@/components/DataTable/DataTableHeader.vue'\nimport DataTableRow from '@/components/DataTable/DataTableRow.vue'\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport { useFileDialog } from '@/hooks'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\n\nimport RequestTable from './RequestTable.vue'\n\nconst { example, operation, environment, envVariables, workspace, title } =\n defineProps<{\n example: RequestExample\n operation: Operation\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n title: string\n }>()\n\nconst { requestExampleMutators } = useWorkspace()\n\n/** use-codemirror package to be updated accordingly */\nconst contentTypeToLanguageMap = {\n json: 'json',\n xml: 'xml',\n yaml: 'yaml',\n edn: 'edn',\n other: 'html',\n} as const\n\nconst contentTypes = {\n multipartForm: 'Multipart Form',\n formUrlEncoded: 'Form URL Encoded',\n binaryFile: 'Binary File',\n json: 'JSON',\n xml: 'XML',\n yaml: 'YAML',\n edn: 'EDN',\n other: 'Other',\n none: 'None',\n} as const\ntype ContentType = keyof typeof contentTypes\n\n/** Convert content types to options for the dropdown */\nconst contentTypeOptions = (\n Object.entries(contentTypes) as Entries<typeof contentTypes>\n).map(([id, label]) => ({\n id,\n label,\n}))\n\n/** Match the activeBody to the contentTypeOptions */\nconst activeExampleContentType = computed(() => {\n const { activeBody, formData, raw } = example.body\n\n // Form\n if (activeBody === 'formData') {\n return formData?.encoding === 'urlencoded'\n ? 'formUrlEncoded'\n : 'multipartForm'\n }\n // Binary\n if (activeBody === 'binary') {\n return 'binaryFile'\n }\n // Raw\n if (activeBody === 'raw' && raw?.encoding) {\n if (raw.encoding === 'html' || raw.encoding === 'text') {\n return 'other'\n }\n return raw.encoding\n }\n\n // Set content type from request if present\n const contentType = Object.keys(operation.requestBody?.content || {})[0]\n\n return contentType || 'none'\n})\n/** Selected ref from options above */\nconst selectedContentType = computed({\n get: () =>\n contentTypeOptions.find(\n (opt) => opt.id === activeExampleContentType.value,\n ) ??\n contentTypeOptions[contentTypeOptions.length - 1] ??\n contentTypeOptions[0],\n set: (opt) => {\n if (opt?.id) {\n updateActiveBody(opt.id)\n }\n },\n})\nconst tableWrapperRef = ref<HTMLInputElement | null>(null)\n\nconst codeInputLanguage = computed(() => {\n const type = selectedContentType.value\n ?.id as keyof typeof contentTypeToLanguageMap\n return contentTypeToLanguageMap[type] ?? 'plaintext'\n})\n\nconst deleteRow = (rowIdx: number) => {\n const currentParams = formParams.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams.splice(rowIdx, 1)\n\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n }\n}\n\n/** Update a field in a parameter row */\nconst updateRow = (rowIdx: number, field: 'key' | 'value', value: string) => {\n const currentParams = formParams.value\n\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams[rowIdx] = {\n ...updatedParams[rowIdx],\n value: updatedParams[rowIdx]?.value || '',\n key: updatedParams[rowIdx]?.key || '',\n enabled: updatedParams[rowIdx]?.enabled ?? false,\n [field]: value || '',\n }\n\n /** enable row key or value is filled */\n if (\n updatedParams[rowIdx]?.key !== '' ||\n updatedParams[rowIdx]?.value !== ''\n ) {\n updatedParams[rowIdx].enabled = true\n }\n\n /** check key and value input state */\n if (\n updatedParams[rowIdx]?.key === '' &&\n updatedParams[rowIdx]?.value === ''\n ) {\n /** remove if empty */\n updatedParams.splice(rowIdx, 1)\n }\n\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n } else {\n /** if there is no row at the index, add a new one */\n const payload = [requestExampleParametersSchema.parse({ [field]: value })]\n\n requestExampleMutators.edit(example.uid, 'body.formData.value', payload)\n\n /** focus the new row */\n nextTick(() => {\n if (!tableWrapperRef.value) {\n return\n }\n const inputs = tableWrapperRef.value.querySelectorAll('input')\n const inputsIndex = field === 'key' ? 0 : 1\n inputs[inputsIndex]?.focus()\n })\n }\n\n // Add a new row if the updated row is the last one\n if (rowIdx === currentParams.length - 1) {\n addRow()\n }\n}\n\nconst formParams = computed(() => example.body.formData?.value ?? [])\n\n/** ensure one empty row by default */\nconst defaultRow = () => {\n const lastParam = formParams.value[formParams.value.length - 1]\n if (!lastParam || lastParam.key !== '' || lastParam.value !== '') {\n addRow()\n }\n}\n\n/** Add a new row to a given parameter list */\nconst addRow = () => {\n /** Create a new parameter instance with 'enabled' set to false */\n const newParam = requestExampleParametersSchema.parse({\n enabled: false,\n })\n const newParams = [...formParams.value, newParam]\n\n // Ensure we have formData\n if (example.body.formData) {\n requestExampleMutators.edit(example.uid, 'body.formData.value', newParams)\n } else {\n requestExampleMutators.edit(example.uid, 'body.formData', {\n value: newParams,\n encoding: 'form-data',\n })\n }\n}\n\n/** Enable and disables the row */\nconst toggleRow = (rowIdx: number, enabled: boolean) => {\n const currentParams = formParams.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n if (updatedParams[rowIdx]) {\n updatedParams[rowIdx].enabled = enabled\n }\n\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n }\n}\n\nconst updateRequestBody = (value: string) =>\n requestExampleMutators.edit(example.uid, 'body.raw.value', value)\n\n/** Take the select option and return bodyType with encoding and header */\nconst getBodyType = (type: ContentType) => {\n if (type === 'multipartForm') {\n return {\n activeBody: 'formData',\n encoding: 'form-data',\n header: 'multipart/form-data',\n } as const\n }\n if (type === 'formUrlEncoded') {\n return {\n activeBody: 'formData',\n encoding: 'urlencoded',\n header: 'application/x-www-form-urlencoded',\n } as const\n }\n if (type === 'binaryFile') {\n return {\n activeBody: 'binary',\n encoding: undefined,\n header: 'application/octet-stream',\n } as const\n }\n if (type === 'json') {\n const contentTypes = Object.keys(operation.requestBody?.content ?? {})\n\n // Gets json content types including vendor specific ones\n const jsonContentType =\n contentTypes.find((t) => t.includes('json') || t.endsWith('+json')) ||\n 'application/json'\n\n return {\n activeBody: 'raw',\n encoding: 'json',\n header: jsonContentType,\n } as const\n }\n if (type === 'xml') {\n return {\n activeBody: 'raw',\n encoding: 'xml',\n header: 'application/xml',\n } as const\n }\n if (type === 'yaml') {\n return {\n activeBody: 'raw',\n encoding: 'yaml',\n header: 'application/yaml',\n } as const\n }\n if (type === 'edn') {\n return {\n activeBody: 'raw',\n encoding: 'edn',\n header: 'application/edn',\n } as const\n }\n if (type === 'other') {\n const opContentTypes = Object.keys(operation.requestBody?.content ?? {})\n const textContentType = opContentTypes.find((t) => t.startsWith('text/'))\n\n return {\n activeBody: 'raw',\n encoding: textContentType ? 'text' : 'html',\n header: textContentType ?? 'application/html',\n } as const\n }\n\n return { activeBody: 'raw', encoding: undefined, header: undefined } as const\n}\n\n/** Set active body AND encoding */\nconst updateActiveBody = (type: ContentType) => {\n const { activeBody, encoding, header } = getBodyType(type)\n requestExampleMutators.edit(example.uid, 'body.activeBody', activeBody)\n\n // Set encoding safely\n if (encoding && activeBody === 'raw') {\n requestExampleMutators.edit(example.uid, 'body.raw', {\n encoding,\n value: example.body.raw?.value ?? '',\n })\n } else if (encoding && activeBody === 'formData') {\n requestExampleMutators.edit(example.uid, 'body.formData', {\n encoding,\n value: example.body.formData?.value ?? [],\n })\n }\n // Remove raw if no encoding and not binary\n else if (!encoding && activeBody !== 'binary') {\n const { raw: deleteMe, ...body } = example.body\n requestExampleMutators.edit(example.uid, 'body', body)\n }\n\n // Handle headers\n const headers = [...example.parameters.headers]\n const contentTypeIdx = headers.findIndex(\n (h) => h.key.toLowerCase() === 'content-type',\n )\n\n if (contentTypeIdx >= 0) {\n // Update header if exists\n if (header && headers[contentTypeIdx]) {\n headers[contentTypeIdx].value = header\n }\n // Remove header if we don't want one\n else if (\n headers[contentTypeIdx] &&\n (activeBody !== 'raw' || type === 'none')\n ) {\n headers.splice(contentTypeIdx, 1)\n }\n }\n // Add header if doesn't have one\n else if (header) {\n const lastHeader = headers[headers.length - 1]\n // Add header before last if empty to prevent empty row duplication\n if (lastHeader && lastHeader.key === '' && lastHeader.value === '') {\n headers.splice(headers.length - 1, 0, {\n key: 'Content-Type',\n value: header,\n enabled: true,\n })\n } else {\n headers.push({\n key: 'Content-Type',\n value: header,\n enabled: true,\n })\n }\n }\n\n requestExampleMutators.edit(example.uid, 'parameters.headers', headers)\n}\n\nconst handleFileUploadFormData = (rowIdx: number) => {\n const { open } = useFileDialog({\n onChange: (files) => {\n const file = files?.[0]\n if (file) {\n const currentParams = formParams.value\n const updatedParams = [...currentParams]\n updatedParams[rowIdx] = {\n ...updatedParams[rowIdx],\n file,\n value: updatedParams[rowIdx]?.value || file.name,\n key: updatedParams[rowIdx]?.key || file.name,\n enabled: true,\n }\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n\n defaultRow()\n }\n },\n multiple: false,\n accept: '*/*',\n })\n open()\n}\n\nconst removeBinaryFile = () =>\n requestExampleMutators.edit(example.uid, 'body.binary', undefined)\n\nfunction handleRemoveFileFormData(rowIdx: number) {\n const currentParams = formParams.value\n const updatedParams = [...currentParams]\n const param = currentParams[rowIdx]\n const file = param?.file as File | undefined\n\n // Empty key value or non updated file name then remove the row\n if (\n currentParams.length > 1 &&\n ((!param?.key && !param?.value) ||\n (file && param?.key === file.name && param?.value === file.name))\n ) {\n updatedParams.splice(rowIdx, 1)\n } else {\n // File name updated then remove file only\n if (updatedParams[rowIdx]) {\n updatedParams[rowIdx].file = undefined\n }\n }\n requestExampleMutators.edit(example.uid, 'body.formData.value', updatedParams)\n}\n\nfunction handleFileUpload() {\n const { open } = useFileDialog({\n onChange: (files) => {\n const file = files?.[0]\n if (file) {\n requestExampleMutators.edit(example.uid, 'body.binary', file)\n }\n },\n multiple: false,\n accept: '*/*',\n })\n open()\n}\n\n// we always add an empty row if its empty :)\nwatch(\n selectedContentType,\n (val) => {\n if (['multipartForm', 'formUrlEncoded'].includes(val?.id || '')) {\n defaultRow()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => example.uid,\n () => {\n operation.method &&\n canMethodHaveBody(operation.method) &&\n updateActiveBody(activeExampleContentType.value as ContentType)\n\n // Add extra row on page route change as well\n if (\n ['multipartForm', 'formUrlEncoded'].includes(\n activeExampleContentType.value as ContentType,\n )\n ) {\n defaultRow()\n }\n },\n { immediate: true },\n)\n\nconst exampleOptions = computed(() => {\n const contentType = selectedContentType.value?.id\n const { header } = getBodyType(contentType as ContentType)\n const content = operation.requestBody?.content || {}\n const examples = header ? content[header]?.examples || {} : {}\n return Object.entries(examples).map(([key, value]) => ({\n id: key,\n label: key,\n value,\n }))\n})\n\nconst selectedExample = computed({\n get: () => {\n const rawValue = example.body.raw?.value ?? '{}'\n try {\n const parsedValue = JSON.parse(rawValue)\n const getExample = exampleOptions.value.find((e) => {\n const exampleValue = e.value as {\n value: Record<string, string>\n }\n return (\n JSON.stringify(exampleValue.value) === JSON.stringify(parsedValue)\n )\n })\n return getExample ?? exampleOptions.value[0]\n } catch {\n return exampleOptions.value[0]\n }\n },\n set: (opt) => {\n if (opt?.id) {\n const exampleOption = exampleOptions.value.find((e) => e.id === opt.id)\n if (exampleOption) {\n const exampleValue = exampleOption.value as {\n value: Record<string, string>\n }\n updateRequestBody(JSON.stringify(exampleValue.value, null, 2))\n }\n }\n },\n})\n</script>\n<template>\n <ViewLayoutCollapse>\n <template #title>{{ title }}</template>\n <DataTable\n :columns=\"['']\"\n presentational>\n <DataTableRow>\n <DataTableHeader\n class=\"relative col-span-full flex h-8 cursor-pointer items-center justify-between !p-0\">\n <ScalarListbox\n v-model=\"selectedContentType\"\n :options=\"contentTypeOptions\"\n teleport>\n <ScalarButton\n class=\"text-c-2 hover:text-c-1 flex h-full w-fit gap-1.5 px-3 font-normal\"\n variant=\"ghost\">\n <span>{{ selectedContentType?.label }}</span>\n <ScalarIcon\n icon=\"ChevronDown\"\n size=\"md\" />\n </ScalarButton>\n </ScalarListbox>\n <ScalarListbox\n v-if=\"exampleOptions.length > 0\"\n v-model=\"selectedExample\"\n :options=\"exampleOptions\"\n side=\"left\"\n teleport>\n <ScalarButton\n class=\"text-c-2 hover:text-c-1 flex h-full w-fit gap-1.5 px-2 font-normal\"\n fullWidth\n variant=\"ghost\">\n <span>{{ selectedExample?.label }}</span>\n <ScalarIcon\n icon=\"ChevronDown\"\n size=\"md\" />\n </ScalarButton>\n </ScalarListbox>\n </DataTableHeader>\n </DataTableRow>\n <DataTableRow>\n <template v-if=\"selectedContentType?.id === 'none'\">\n <div\n class=\"text-c-3 flex min-h-10 w-full items-center justify-center border-t p-2 text-sm\">\n <span>No Body</span>\n </div>\n </template>\n <template v-else-if=\"selectedContentType?.id === 'binaryFile'\">\n <div\n class=\"flex items-center justify-center overflow-hidden border-t p-1.5\">\n <template v-if=\"example.body.binary\">\n <span\n class=\"text-c-2 w-full max-w-full overflow-hidden rounded border px-1.5 py-1 text-xs whitespace-nowrap\">\n {{ (example.body.binary as File).name }}\n </span>\n <ScalarButton\n class=\"bg-b-2 hover:bg-b-3 text-c-2 ml-1 border-0 shadow-none\"\n size=\"sm\"\n variant=\"outlined\"\n @click=\"removeBinaryFile\">\n Delete\n </ScalarButton>\n </template>\n <template v-else>\n <ScalarButton\n class=\"bg-b-2 hover:bg-b-3 text-c-2 border-0 shadow-none\"\n size=\"sm\"\n variant=\"outlined\"\n @click=\"handleFileUpload\">\n <span>Upload File</span>\n <ScalarIcon\n class=\"ml-1\"\n icon=\"Upload\"\n size=\"xs\"\n thickness=\"2.5\" />\n </ScalarButton>\n </template>\n </div>\n </template>\n <template v-else-if=\"selectedContentType?.id == 'multipartForm'\">\n <RequestTable\n ref=\"tableWrapperRef\"\n class=\"!m-0 rounded-t-none border-t-0 border-r-0 border-b-0 border-l-0 shadow-none\"\n :columns=\"['32px', '', '', '104px']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :items=\"formParams\"\n showUploadButton\n :workspace=\"workspace\"\n @deleteRow=\"deleteRow\"\n @removeFile=\"handleRemoveFileFormData\"\n @toggleRow=\"toggleRow\"\n @updateRow=\"updateRow\"\n @uploadFile=\"handleFileUploadFormData\" />\n </template>\n <template v-else-if=\"selectedContentType?.id == 'formUrlEncoded'\">\n <RequestTable\n ref=\"tableWrapperRef\"\n class=\"!m-0 rounded-t-none border-t-0 border-r-0 border-b-0 border-l-0 shadow-none\"\n :columns=\"['32px', '', '', '104px']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :items=\"formParams\"\n showUploadButton\n :workspace=\"workspace\"\n @deleteRow=\"deleteRow\"\n @removeFile=\"handleRemoveFileFormData\"\n @toggleRow=\"toggleRow\"\n @updateRow=\"updateRow\"\n @uploadFile=\"handleFileUploadFormData\" />\n </template>\n <template v-else>\n <!-- TODO: remove this as type hack when we add syntax highlighting -->\n <CodeInput\n class=\"border-t px-3\"\n content=\"\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :language=\"codeInputLanguage as CodeMirrorLanguage\"\n lineNumbers\n lint\n :modelValue=\"example.body?.raw?.value ?? ''\"\n :workspace=\"workspace\"\n @update:modelValue=\"updateRequestBody\" />\n </template>\n </DataTableRow>\n <!-- Hacky... but effective, extra table row to trick the last group -->\n <DataTableRow />\n </DataTable>\n </ViewLayoutCollapse>\n</template>\n<style scoped>\n:deep(.cm-content) {\n font-size: var(--scalar-small);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarIcon, ScalarListbox } from '@scalar/components'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport {\n requestExampleParametersSchema,\n type Operation,\n type RequestExample,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { canMethodHaveBody } from '@scalar/oas-utils/helpers'\nimport type { CodeMirrorLanguage } from '@scalar/use-codemirror'\nimport type { Entries } from 'type-fest'\nimport { computed, nextTick, ref, watch } from 'vue'\n\nimport CodeInput from '@/components/CodeInput/CodeInput.vue'\nimport DataTable from '@/components/DataTable/DataTable.vue'\nimport DataTableHeader from '@/components/DataTable/DataTableHeader.vue'\nimport DataTableRow from '@/components/DataTable/DataTableRow.vue'\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport { useFileDialog } from '@/hooks'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\n\nimport RequestTable from './RequestTable.vue'\n\nconst { example, operation, environment, envVariables, workspace, title } =\n defineProps<{\n example: RequestExample\n operation: Operation\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n title: string\n }>()\n\nconst { requestExampleMutators } = useWorkspace()\n\n/** use-codemirror package to be updated accordingly */\nconst contentTypeToLanguageMap = {\n json: 'json',\n xml: 'xml',\n yaml: 'yaml',\n edn: 'edn',\n other: 'html',\n} as const\n\nconst contentTypes = {\n multipartForm: 'Multipart Form',\n formUrlEncoded: 'Form URL Encoded',\n binaryFile: 'Binary File',\n json: 'JSON',\n xml: 'XML',\n yaml: 'YAML',\n edn: 'EDN',\n other: 'Other',\n none: 'None',\n} as const\ntype ContentType = keyof typeof contentTypes\n\n/** Convert content types to options for the dropdown */\nconst contentTypeOptions = (\n Object.entries(contentTypes) as Entries<typeof contentTypes>\n).map(([id, label]) => ({\n id,\n label,\n}))\n\n/** Match the activeBody to the contentTypeOptions */\nconst activeExampleContentType = computed(() => {\n const { activeBody, formData, raw } = example.body\n\n // Form\n if (activeBody === 'formData') {\n return formData?.encoding === 'urlencoded'\n ? 'formUrlEncoded'\n : 'multipartForm'\n }\n // Binary\n if (activeBody === 'binary') {\n return 'binaryFile'\n }\n // Raw\n if (activeBody === 'raw' && raw?.encoding) {\n if (raw.encoding === 'html' || raw.encoding === 'text') {\n return 'other'\n }\n return raw.encoding\n }\n\n // Set content type from request if present\n const contentType = Object.keys(operation.requestBody?.content || {})[0]\n\n return contentType || 'none'\n})\n/** Selected ref from options above */\nconst selectedContentType = computed({\n get: () =>\n contentTypeOptions.find(\n (opt) => opt.id === activeExampleContentType.value,\n ) ??\n contentTypeOptions[contentTypeOptions.length - 1] ??\n contentTypeOptions[0],\n set: (opt) => {\n if (opt?.id) {\n updateActiveBody(opt.id)\n }\n },\n})\nconst tableWrapperRef = ref<HTMLInputElement | null>(null)\n\nconst codeInputLanguage = computed(() => {\n const type = selectedContentType.value\n ?.id as keyof typeof contentTypeToLanguageMap\n return contentTypeToLanguageMap[type] ?? 'plaintext'\n})\n\nconst deleteRow = (rowIdx: number) => {\n const currentParams = formParams.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams.splice(rowIdx, 1)\n\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n }\n}\n\n/** Update a field in a parameter row */\nconst updateRow = (rowIdx: number, field: 'key' | 'value', value: string) => {\n const currentParams = formParams.value\n\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams[rowIdx] = {\n ...updatedParams[rowIdx],\n value: updatedParams[rowIdx]?.value || '',\n key: updatedParams[rowIdx]?.key || '',\n enabled: updatedParams[rowIdx]?.enabled ?? false,\n [field]: value || '',\n }\n\n /** enable row key or value is filled */\n if (\n updatedParams[rowIdx]?.key !== '' ||\n updatedParams[rowIdx]?.value !== ''\n ) {\n updatedParams[rowIdx].enabled = true\n }\n\n /** check key and value input state */\n if (\n updatedParams[rowIdx]?.key === '' &&\n updatedParams[rowIdx]?.value === ''\n ) {\n /** remove if empty */\n updatedParams.splice(rowIdx, 1)\n }\n\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n } else {\n /** if there is no row at the index, add a new one */\n const payload = [requestExampleParametersSchema.parse({ [field]: value })]\n\n requestExampleMutators.edit(example.uid, 'body.formData.value', payload)\n\n /** focus the new row */\n nextTick(() => {\n if (!tableWrapperRef.value) {\n return\n }\n const inputs = tableWrapperRef.value.querySelectorAll('input')\n const inputsIndex = field === 'key' ? 0 : 1\n inputs[inputsIndex]?.focus()\n })\n }\n\n // Add a new row if the updated row is the last one\n if (rowIdx === currentParams.length - 1) {\n addRow()\n }\n}\n\nconst formParams = computed(() => example.body.formData?.value ?? [])\n\n/** ensure one empty row by default */\nconst defaultRow = () => {\n const lastParam = formParams.value[formParams.value.length - 1]\n if (!lastParam || lastParam.key !== '' || lastParam.value !== '') {\n addRow()\n }\n}\n\n/** Add a new row to a given parameter list */\nconst addRow = () => {\n /** Create a new parameter instance with 'enabled' set to false */\n const newParam = requestExampleParametersSchema.parse({\n enabled: false,\n })\n const newParams = [...formParams.value, newParam]\n\n // Ensure we have formData\n if (example.body.formData) {\n requestExampleMutators.edit(example.uid, 'body.formData.value', newParams)\n } else {\n requestExampleMutators.edit(example.uid, 'body.formData', {\n value: newParams,\n encoding: 'form-data',\n })\n }\n}\n\n/** Enable and disables the row */\nconst toggleRow = (rowIdx: number, enabled: boolean) => {\n const currentParams = formParams.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n if (updatedParams[rowIdx]) {\n updatedParams[rowIdx].enabled = enabled\n }\n\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n }\n}\n\nconst updateRequestBody = (value: string) =>\n requestExampleMutators.edit(example.uid, 'body.raw.value', value)\n\n/** Take the select option and return bodyType with encoding and header */\nconst getBodyType = (type: ContentType) => {\n if (type === 'multipartForm') {\n return {\n activeBody: 'formData',\n encoding: 'form-data',\n header: 'multipart/form-data',\n } as const\n }\n if (type === 'formUrlEncoded') {\n return {\n activeBody: 'formData',\n encoding: 'urlencoded',\n header: 'application/x-www-form-urlencoded',\n } as const\n }\n if (type === 'binaryFile') {\n return {\n activeBody: 'binary',\n encoding: undefined,\n header: 'application/octet-stream',\n } as const\n }\n if (type === 'json') {\n const contentTypes = Object.keys(operation.requestBody?.content ?? {})\n\n // Gets json content types including vendor specific ones\n const jsonContentType =\n contentTypes.find((t) => t.includes('json') || t.endsWith('+json')) ||\n 'application/json'\n\n return {\n activeBody: 'raw',\n encoding: 'json',\n header: jsonContentType,\n } as const\n }\n if (type === 'xml') {\n return {\n activeBody: 'raw',\n encoding: 'xml',\n header: 'application/xml',\n } as const\n }\n if (type === 'yaml') {\n return {\n activeBody: 'raw',\n encoding: 'yaml',\n header: 'application/yaml',\n } as const\n }\n if (type === 'edn') {\n return {\n activeBody: 'raw',\n encoding: 'edn',\n header: 'application/edn',\n } as const\n }\n if (type === 'other') {\n const opContentTypes = Object.keys(operation.requestBody?.content ?? {})\n const textContentType = opContentTypes.find((t) => t.startsWith('text/'))\n\n return {\n activeBody: 'raw',\n encoding: textContentType ? 'text' : 'html',\n header: textContentType ?? 'application/html',\n } as const\n }\n\n return { activeBody: 'raw', encoding: undefined, header: undefined } as const\n}\n\n/** Set active body AND encoding */\nconst updateActiveBody = (type: ContentType) => {\n const { activeBody, encoding, header } = getBodyType(type)\n requestExampleMutators.edit(example.uid, 'body.activeBody', activeBody)\n\n // Set encoding safely\n if (encoding && activeBody === 'raw') {\n requestExampleMutators.edit(example.uid, 'body.raw', {\n encoding,\n value: example.body.raw?.value ?? '',\n })\n } else if (encoding && activeBody === 'formData') {\n requestExampleMutators.edit(example.uid, 'body.formData', {\n encoding,\n value: example.body.formData?.value ?? [],\n })\n }\n // Remove raw if no encoding and not binary\n else if (!encoding && activeBody !== 'binary') {\n const { raw: deleteMe, ...body } = example.body\n requestExampleMutators.edit(example.uid, 'body', body)\n }\n\n // Handle headers\n const headers = [...example.parameters.headers]\n const contentTypeIdx = headers.findIndex(\n (h) => h.key.toLowerCase() === 'content-type',\n )\n\n if (contentTypeIdx >= 0) {\n // Update header if exists\n if (header && headers[contentTypeIdx]) {\n headers[contentTypeIdx].value = header\n }\n // Remove header if we don't want one\n else if (\n headers[contentTypeIdx] &&\n (activeBody !== 'raw' || type === 'none')\n ) {\n headers.splice(contentTypeIdx, 1)\n }\n }\n // Add header if doesn't have one\n else if (header) {\n const lastHeader = headers[headers.length - 1]\n // Add header before last if empty to prevent empty row duplication\n if (lastHeader && lastHeader.key === '' && lastHeader.value === '') {\n headers.splice(headers.length - 1, 0, {\n key: 'Content-Type',\n value: header,\n enabled: true,\n })\n } else {\n headers.push({\n key: 'Content-Type',\n value: header,\n enabled: true,\n })\n }\n }\n\n requestExampleMutators.edit(example.uid, 'parameters.headers', headers)\n}\n\nconst handleFileUploadFormData = (rowIdx: number) => {\n const { open } = useFileDialog({\n onChange: (files) => {\n const file = files?.[0]\n if (file) {\n const currentParams = formParams.value\n const updatedParams = [...currentParams]\n updatedParams[rowIdx] = {\n ...updatedParams[rowIdx],\n file,\n value: updatedParams[rowIdx]?.value || file.name,\n key: updatedParams[rowIdx]?.key || file.name,\n enabled: true,\n }\n requestExampleMutators.edit(\n example.uid,\n 'body.formData.value',\n updatedParams,\n )\n\n defaultRow()\n }\n },\n multiple: false,\n accept: '*/*',\n })\n open()\n}\n\nconst removeBinaryFile = () =>\n requestExampleMutators.edit(example.uid, 'body.binary', undefined)\n\nfunction handleRemoveFileFormData(rowIdx: number) {\n const currentParams = formParams.value\n const updatedParams = [...currentParams]\n const param = currentParams[rowIdx]\n const file = param?.file as File | undefined\n\n // Empty key value or non updated file name then remove the row\n if (\n currentParams.length > 1 &&\n ((!param?.key && !param?.value) ||\n (file && param?.key === file.name && param?.value === file.name))\n ) {\n updatedParams.splice(rowIdx, 1)\n } else {\n // File name updated then remove file only\n if (updatedParams[rowIdx]) {\n updatedParams[rowIdx].file = undefined\n }\n }\n requestExampleMutators.edit(example.uid, 'body.formData.value', updatedParams)\n}\n\nfunction handleFileUpload() {\n const { open } = useFileDialog({\n onChange: (files) => {\n const file = files?.[0]\n if (file) {\n requestExampleMutators.edit(example.uid, 'body.binary', file)\n }\n },\n multiple: false,\n accept: '*/*',\n })\n open()\n}\n\n// we always add an empty row if its empty :)\nwatch(\n selectedContentType,\n (val) => {\n if (['multipartForm', 'formUrlEncoded'].includes(val?.id || '')) {\n defaultRow()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => example.uid,\n () => {\n operation.method &&\n canMethodHaveBody(operation.method) &&\n updateActiveBody(activeExampleContentType.value as ContentType)\n\n // Add extra row on page route change as well\n if (\n ['multipartForm', 'formUrlEncoded'].includes(\n activeExampleContentType.value as ContentType,\n )\n ) {\n defaultRow()\n }\n },\n { immediate: true },\n)\n\nconst exampleOptions = computed(() => {\n const contentType = selectedContentType.value?.id\n const { header } = getBodyType(contentType as ContentType)\n const content = operation.requestBody?.content || {}\n const examples = header ? content[header]?.examples || {} : {}\n return Object.entries(examples).map(([key, value]) => ({\n id: key,\n label: key,\n value,\n }))\n})\n\nconst selectedExample = computed({\n get: () => {\n const rawValue = example.body.raw?.value ?? '{}'\n try {\n const parsedValue = JSON.parse(rawValue)\n const getExample = exampleOptions.value.find((e) => {\n const exampleValue = e.value as {\n value: Record<string, string>\n }\n return (\n JSON.stringify(exampleValue.value) === JSON.stringify(parsedValue)\n )\n })\n return getExample ?? exampleOptions.value[0]\n } catch {\n return exampleOptions.value[0]\n }\n },\n set: (opt) => {\n if (opt?.id) {\n const exampleOption = exampleOptions.value.find((e) => e.id === opt.id)\n if (exampleOption) {\n const exampleValue = exampleOption.value as {\n value: Record<string, string>\n }\n updateRequestBody(JSON.stringify(exampleValue.value, null, 2))\n }\n }\n },\n})\n</script>\n<template>\n <ViewLayoutCollapse>\n <template #title>{{ title }}</template>\n <DataTable\n :columns=\"['']\"\n presentational>\n <DataTableRow>\n <DataTableHeader\n class=\"relative col-span-full flex h-8 cursor-pointer items-center justify-between !p-0\">\n <ScalarListbox\n v-model=\"selectedContentType\"\n :options=\"contentTypeOptions\"\n teleport>\n <ScalarButton\n class=\"text-c-2 hover:text-c-1 flex h-full w-fit gap-1.5 px-3 font-normal\"\n variant=\"ghost\">\n <span>{{ selectedContentType?.label }}</span>\n <ScalarIcon\n icon=\"ChevronDown\"\n size=\"md\" />\n </ScalarButton>\n </ScalarListbox>\n <ScalarListbox\n v-if=\"exampleOptions.length > 0\"\n v-model=\"selectedExample\"\n :options=\"exampleOptions\"\n side=\"left\"\n teleport>\n <ScalarButton\n class=\"text-c-2 hover:text-c-1 flex h-full w-fit gap-1.5 px-2 font-normal\"\n fullWidth\n variant=\"ghost\">\n <span>{{ selectedExample?.label }}</span>\n <ScalarIcon\n icon=\"ChevronDown\"\n size=\"md\" />\n </ScalarButton>\n </ScalarListbox>\n </DataTableHeader>\n </DataTableRow>\n <DataTableRow>\n <template v-if=\"selectedContentType?.id === 'none'\">\n <div\n class=\"text-c-3 flex min-h-10 w-full items-center justify-center border-t p-2 text-sm\">\n <span>No Body</span>\n </div>\n </template>\n <template v-else-if=\"selectedContentType?.id === 'binaryFile'\">\n <div\n class=\"flex items-center justify-center overflow-hidden border-t p-1.5\">\n <template v-if=\"example.body.binary\">\n <span\n class=\"text-c-2 w-full max-w-full overflow-hidden rounded border px-1.5 py-1 text-xs whitespace-nowrap\">\n {{ (example.body.binary as File).name }}\n </span>\n <ScalarButton\n class=\"bg-b-2 hover:bg-b-3 text-c-2 ml-1 border-0 shadow-none\"\n size=\"sm\"\n variant=\"outlined\"\n @click=\"removeBinaryFile\">\n Delete\n </ScalarButton>\n </template>\n <template v-else>\n <ScalarButton\n class=\"bg-b-2 hover:bg-b-3 text-c-2 border-0 shadow-none\"\n size=\"sm\"\n variant=\"outlined\"\n @click=\"handleFileUpload\">\n <span>Upload File</span>\n <ScalarIcon\n class=\"ml-1\"\n icon=\"Upload\"\n size=\"xs\"\n thickness=\"2.5\" />\n </ScalarButton>\n </template>\n </div>\n </template>\n <template v-else-if=\"selectedContentType?.id == 'multipartForm'\">\n <RequestTable\n ref=\"tableWrapperRef\"\n class=\"!m-0 rounded-t-none border-t-0 border-r-0 border-b-0 border-l-0 shadow-none\"\n :columns=\"['32px', '', '', '104px']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :items=\"formParams\"\n showUploadButton\n :workspace=\"workspace\"\n @deleteRow=\"deleteRow\"\n @removeFile=\"handleRemoveFileFormData\"\n @toggleRow=\"toggleRow\"\n @updateRow=\"updateRow\"\n @uploadFile=\"handleFileUploadFormData\" />\n </template>\n <template v-else-if=\"selectedContentType?.id == 'formUrlEncoded'\">\n <RequestTable\n ref=\"tableWrapperRef\"\n class=\"!m-0 rounded-t-none border-t-0 border-r-0 border-b-0 border-l-0 shadow-none\"\n :columns=\"['32px', '', '', '104px']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :items=\"formParams\"\n showUploadButton\n :workspace=\"workspace\"\n @deleteRow=\"deleteRow\"\n @removeFile=\"handleRemoveFileFormData\"\n @toggleRow=\"toggleRow\"\n @updateRow=\"updateRow\"\n @uploadFile=\"handleFileUploadFormData\" />\n </template>\n <template v-else>\n <!-- TODO: remove this as type hack when we add syntax highlighting -->\n <CodeInput\n class=\"border-t px-3\"\n content=\"\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :language=\"codeInputLanguage as CodeMirrorLanguage\"\n lineNumbers\n lint\n :modelValue=\"example.body?.raw?.value ?? ''\"\n :workspace=\"workspace\"\n @update:modelValue=\"updateRequestBody\" />\n </template>\n </DataTableRow>\n <!-- Hacky... but effective, extra table row to trick the last group -->\n <DataTableRow />\n </DataTable>\n </ViewLayoutCollapse>\n</template>\n<style scoped>\n:deep(.cm-content) {\n font-size: var(--scalar-small);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarTooltip } from '@scalar/components'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport {\n requestExampleParametersSchema,\n type RequestExample,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\n\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\nimport RequestTable from '@/views/Request/RequestSection/RequestTable.vue'\n\nconst {\n example,\n environment,\n envVariables,\n workspace,\n title,\n paramKey,\n readOnlyEntries = [],\n} = defineProps<{\n example: RequestExample\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n title: string\n label: string\n paramKey: keyof RequestExample['parameters']\n readOnlyEntries?: {\n key: string\n value: string\n enabled: boolean\n route: RouteLocationRaw\n }[]\n invalidParams: Set<string>\n}>()\n\nconst { requestExampleMutators } = useWorkspace()\n\nconst params = computed(() => example.parameters[paramKey] ?? [])\n\nonMounted(() => {\n nextTick(() => {\n defaultRow()\n })\n})\n\n/** Add a new row to a given parameter list */\nconst addRow = () => {\n /** Create a new parameter instance with 'enabled' set to false */\n const newParam = requestExampleParametersSchema.parse({ enabled: false })\n const newParams = [...params.value, newParam]\n\n requestExampleMutators.edit(example.uid, `parameters.${paramKey}`, newParams)\n}\n\nconst tableWrapperRef = ref<HTMLInputElement | null>(null)\n\n/** Update a field in a parameter row */\nconst updateRow = (rowIdx: number, field: 'key' | 'value', value: string) => {\n const currentParams = params.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n if (!updatedParams[rowIdx]) {\n return\n }\n\n updatedParams[rowIdx] = { ...updatedParams[rowIdx], [field]: value }\n\n /** enable row key or value is filled */\n if (\n updatedParams[rowIdx].key !== '' ||\n updatedParams[rowIdx].value !== ''\n ) {\n updatedParams[rowIdx].enabled = true\n }\n\n /** check key and value input state */\n if (\n updatedParams[rowIdx].key === '' &&\n updatedParams[rowIdx].value === ''\n ) {\n /** remove if empty */\n updatedParams.splice(rowIdx, 1)\n }\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n updatedParams,\n )\n } else {\n /** if there is no row at the index, add a new one */\n const payload = [requestExampleParametersSchema.parse({ [field]: value })]\n requestExampleMutators.edit(example.uid, `parameters.${paramKey}`, payload)\n\n /** focus the new row */\n nextTick(() => {\n if (!tableWrapperRef.value) {\n return\n }\n const inputs = tableWrapperRef.value.querySelectorAll('input')\n const inputsIndex = field === 'key' ? 0 : 1\n inputs[inputsIndex]?.focus()\n })\n }\n\n // Add a new row if the updated row is the last one\n if (rowIdx === currentParams.length - 1) {\n addRow()\n }\n}\n\n/** Toggle a parameter row on or off */\nconst toggleRow = (rowIdx: number, enabled: boolean) =>\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}.${rowIdx}.enabled`,\n enabled,\n )\n\nconst deleteAllRows = () => {\n // filter out params that are enabled or required\n const exampleParams = params.value.filter((param) => param.required)\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n exampleParams,\n )\n\n /** ensure one empty row after deleting all rows */\n nextTick(() => addRow())\n}\n\nconst deleteRow = (rowIdx: number) => {\n const currentParams = params.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams.splice(rowIdx, 1)\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n updatedParams,\n )\n }\n}\n\nfunction defaultRow() {\n /** ensure one empty row by default */\n if (params.value.length === 0) {\n addRow()\n } else if (params.value.length >= 1) {\n /** ensure we always have a trailing empty row */\n const lastParam = params.value[params.value.length - 1]\n if (lastParam && lastParam.key !== '' && lastParam.value !== '') {\n addRow()\n }\n }\n}\n\nconst itemCount = computed(\n () => params.value.filter((param) => param.key || param.value).length,\n)\n\nconst showTooltip = computed(() => params.value.length > 1)\n\nwatch(\n () => example,\n (newVal, oldVal) => {\n if (newVal !== oldVal) {\n defaultRow()\n }\n },\n { immediate: true },\n)\n\nconst hasReadOnlyEntries = computed(() => (readOnlyEntries ?? []).length > 0)\n</script>\n<template>\n <ViewLayoutCollapse\n class=\"group/params\"\n :itemCount=\"itemCount\">\n <template #title>{{ title }}</template>\n <template #actions>\n <div\n class=\"text-c-2 request-meta-buttons flex whitespace-nowrap opacity-0 group-hover/params:opacity-100 has-[:focus-visible]:opacity-100\">\n <ScalarTooltip\n v-if=\"showTooltip\"\n content=\"Clear optional parameters\"\n placement=\"left\">\n <ScalarButton\n class=\"pr-0.75 pl-1 transition-none\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop=\"deleteAllRows\">\n Clear\n <span class=\"sr-only\">All {{ title }}</span>\n </ScalarButton>\n </ScalarTooltip>\n </div>\n </template>\n <div ref=\"tableWrapperRef\">\n <!-- Read-only entries pinned to the top -->\n <RequestTable\n v-if=\"hasReadOnlyEntries\"\n class=\"flex-1\"\n :class=\"{ 'bg-c-3/5': hasReadOnlyEntries }\"\n :columns=\"['32px', '', '']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :invalidParams=\"invalidParams\"\n isGlobal\n isReadOnly\n :items=\"readOnlyEntries\"\n :label\n :workspace=\"workspace\" />\n <!-- Dynamic entries -->\n <RequestTable\n class=\"flex-1\"\n :columns=\"['32px', '', '']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :invalidParams=\"invalidParams\"\n :items=\"params\"\n :label\n :workspace=\"workspace\"\n @toggleRow=\"toggleRow\"\n @updateRow=\"updateRow\"\n @deleteRow=\"deleteRow\" />\n </div>\n </ViewLayoutCollapse>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarTooltip } from '@scalar/components'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport {\n requestExampleParametersSchema,\n type RequestExample,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\n\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\nimport RequestTable from '@/views/Request/RequestSection/RequestTable.vue'\n\nconst {\n example,\n environment,\n envVariables,\n workspace,\n title,\n paramKey,\n readOnlyEntries = [],\n} = defineProps<{\n example: RequestExample\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n title: string\n label: string\n paramKey: keyof RequestExample['parameters']\n readOnlyEntries?: {\n key: string\n value: string\n enabled: boolean\n route: RouteLocationRaw\n }[]\n invalidParams: Set<string>\n}>()\n\nconst { requestExampleMutators } = useWorkspace()\n\nconst params = computed(() => example.parameters[paramKey] ?? [])\n\nonMounted(() => {\n nextTick(() => {\n defaultRow()\n })\n})\n\n/** Add a new row to a given parameter list */\nconst addRow = () => {\n /** Create a new parameter instance with 'enabled' set to false */\n const newParam = requestExampleParametersSchema.parse({ enabled: false })\n const newParams = [...params.value, newParam]\n\n requestExampleMutators.edit(example.uid, `parameters.${paramKey}`, newParams)\n}\n\nconst tableWrapperRef = ref<HTMLInputElement | null>(null)\n\n/** Update a field in a parameter row */\nconst updateRow = (rowIdx: number, field: 'key' | 'value', value: string) => {\n const currentParams = params.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n if (!updatedParams[rowIdx]) {\n return\n }\n\n updatedParams[rowIdx] = { ...updatedParams[rowIdx], [field]: value }\n\n /** enable row key or value is filled */\n if (\n updatedParams[rowIdx].key !== '' ||\n updatedParams[rowIdx].value !== ''\n ) {\n updatedParams[rowIdx].enabled = true\n }\n\n /** check key and value input state */\n if (\n updatedParams[rowIdx].key === '' &&\n updatedParams[rowIdx].value === ''\n ) {\n /** remove if empty */\n updatedParams.splice(rowIdx, 1)\n }\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n updatedParams,\n )\n } else {\n /** if there is no row at the index, add a new one */\n const payload = [requestExampleParametersSchema.parse({ [field]: value })]\n requestExampleMutators.edit(example.uid, `parameters.${paramKey}`, payload)\n\n /** focus the new row */\n nextTick(() => {\n if (!tableWrapperRef.value) {\n return\n }\n const inputs = tableWrapperRef.value.querySelectorAll('input')\n const inputsIndex = field === 'key' ? 0 : 1\n inputs[inputsIndex]?.focus()\n })\n }\n\n // Add a new row if the updated row is the last one\n if (rowIdx === currentParams.length - 1) {\n addRow()\n }\n}\n\n/** Toggle a parameter row on or off */\nconst toggleRow = (rowIdx: number, enabled: boolean) =>\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}.${rowIdx}.enabled`,\n enabled,\n )\n\nconst deleteAllRows = () => {\n // filter out params that are enabled or required\n const exampleParams = params.value.filter((param) => param.required)\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n exampleParams,\n )\n\n /** ensure one empty row after deleting all rows */\n nextTick(() => addRow())\n}\n\nconst deleteRow = (rowIdx: number) => {\n const currentParams = params.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams.splice(rowIdx, 1)\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n updatedParams,\n )\n }\n}\n\nfunction defaultRow() {\n /** ensure one empty row by default */\n if (params.value.length === 0) {\n addRow()\n } else if (params.value.length >= 1) {\n /** ensure we always have a trailing empty row */\n const lastParam = params.value[params.value.length - 1]\n if (lastParam && lastParam.key !== '' && lastParam.value !== '') {\n addRow()\n }\n }\n}\n\nconst itemCount = computed(\n () => params.value.filter((param) => param.key || param.value).length,\n)\n\nconst showTooltip = computed(() => params.value.length > 1)\n\nwatch(\n () => example,\n (newVal, oldVal) => {\n if (newVal !== oldVal) {\n defaultRow()\n }\n },\n { immediate: true },\n)\n\nconst hasReadOnlyEntries = computed(() => (readOnlyEntries ?? []).length > 0)\n</script>\n<template>\n <ViewLayoutCollapse\n class=\"group/params\"\n :itemCount=\"itemCount\">\n <template #title>{{ title }}</template>\n <template #actions>\n <div\n class=\"text-c-2 request-meta-buttons flex whitespace-nowrap opacity-0 group-hover/params:opacity-100 has-[:focus-visible]:opacity-100\">\n <ScalarTooltip\n v-if=\"showTooltip\"\n content=\"Clear optional parameters\"\n placement=\"left\">\n <ScalarButton\n class=\"pr-0.75 pl-1 transition-none\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop=\"deleteAllRows\">\n Clear\n <span class=\"sr-only\">All {{ title }}</span>\n </ScalarButton>\n </ScalarTooltip>\n </div>\n </template>\n <div ref=\"tableWrapperRef\">\n <!-- Read-only entries pinned to the top -->\n <RequestTable\n v-if=\"hasReadOnlyEntries\"\n class=\"flex-1\"\n :class=\"{ 'bg-c-3/5': hasReadOnlyEntries }\"\n :columns=\"['32px', '', '']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :invalidParams=\"invalidParams\"\n isGlobal\n isReadOnly\n :items=\"readOnlyEntries\"\n :label\n :workspace=\"workspace\" />\n <!-- Dynamic entries -->\n <RequestTable\n class=\"flex-1\"\n :columns=\"['32px', '', '']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :invalidParams=\"invalidParams\"\n :items=\"params\"\n :label\n :workspace=\"workspace\"\n @toggleRow=\"toggleRow\"\n @updateRow=\"updateRow\"\n @deleteRow=\"deleteRow\" />\n </div>\n </ViewLayoutCollapse>\n</template>\n","<script setup lang=\"ts\">\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport type { Operation, RequestExample } from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { REGEX } from '@scalar/oas-utils/helpers'\nimport { computed, watch } from 'vue'\n\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\nimport RequestTable from '@/views/Request/RequestSection/RequestTable.vue'\n\nconst {\n example,\n operation,\n paramKey,\n title,\n environment,\n envVariables,\n workspace,\n} = defineProps<{\n example: RequestExample\n operation: Operation\n paramKey: keyof RequestExample['parameters']\n title: string\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n invalidParams: Set<string>\n}>()\n\nconst { requestMutators, requestExampleMutators } = useWorkspace()\n\nconst params = computed(() =>\n example.parameters[paramKey].map((param) => ({\n ...param,\n enum: param.enum,\n })),\n)\n\n/** Update a field in a parameter row */\nconst updateRow = (rowIdx: number, field: 'key' | 'value', value: string) => {\n const parameters = example.parameters[paramKey]\n const oldKey = parameters[rowIdx]?.key\n if (!oldKey) {\n return\n }\n\n /** Change variable in path as well */\n if (field === 'key') {\n if (parameters[rowIdx]?.required) {\n /** Prevent updating the key of a required item */\n return\n }\n if (!value) {\n /** Remove parameter if path params table key is empty */\n parameters.splice(rowIdx, 1)\n const regx = new RegExp(`/:${encodeURIComponent(oldKey)}(?=[/?#]|$)`, 'g')\n const newPath = operation.path.replace(regx, '')\n\n requestMutators.edit(operation.uid, 'path', newPath)\n } else {\n /** Update URL with path params table key */\n const encodedOldKey = encodeURIComponent(oldKey)\n const encodedNewKey = encodeURIComponent(value)\n const regx = new RegExp(`(?<=/):${encodedOldKey}(?=[/?#]|$)`, 'g')\n const newPath = operation.path.replace(regx, `:${encodedNewKey}`)\n requestMutators.edit(operation.uid, 'path', newPath)\n }\n }\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}.${rowIdx}.${field}`,\n value,\n )\n}\n\nconst deleteRow = (rowIdx: number) => {\n const currentParams = params.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams.splice(rowIdx, 1)\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n updatedParams,\n )\n }\n}\n\nconst setPathVariable = (url: string) => {\n const pathVariables = url.match(REGEX.PATH)?.map((v) => v.slice(1, -1)) || []\n const parameters = example.parameters[paramKey]\n\n const paramMap = new Map(parameters.map((param) => [param.key, param]))\n const updatedParameters = pathVariables.map(\n (key) => paramMap.get(key) || { key, value: '', enabled: true },\n )\n\n parameters.forEach((param) => {\n /** prevent removing required parameters or with a value */\n if (!pathVariables.includes(param.key) && (param.value || param.required)) {\n updatedParameters.push(param)\n }\n })\n parameters.splice(0, parameters.length, ...updatedParameters)\n\n requestExampleMutators.edit(example.uid, `parameters.${paramKey}`, parameters)\n}\n\nconst handlePathVariableUpdate = (url: string) => {\n if (url) {\n setPathVariable(url)\n }\n}\n\nwatch(\n () => operation.path,\n (newURL) => {\n if (newURL) {\n handlePathVariableUpdate(newURL)\n }\n },\n)\n</script>\n<template>\n <ViewLayoutCollapse :itemCount=\"params.length\">\n <template #title>\n {{ title }}\n </template>\n\n <RequestTable\n v-if=\"params.length\"\n class=\"flex-1\"\n :columns=\"['32px', '', '']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :invalidParams=\"invalidParams\"\n :items=\"params\"\n :workspace=\"workspace\"\n @updateRow=\"updateRow\"\n @deleteRow=\"deleteRow\" />\n </ViewLayoutCollapse>\n</template>\n","<script setup lang=\"ts\">\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport type { Operation, RequestExample } from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { REGEX } from '@scalar/oas-utils/helpers'\nimport { computed, watch } from 'vue'\n\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\nimport RequestTable from '@/views/Request/RequestSection/RequestTable.vue'\n\nconst {\n example,\n operation,\n paramKey,\n title,\n environment,\n envVariables,\n workspace,\n} = defineProps<{\n example: RequestExample\n operation: Operation\n paramKey: keyof RequestExample['parameters']\n title: string\n environment: Environment\n envVariables: EnvVariable[]\n workspace: Workspace\n invalidParams: Set<string>\n}>()\n\nconst { requestMutators, requestExampleMutators } = useWorkspace()\n\nconst params = computed(() =>\n example.parameters[paramKey].map((param) => ({\n ...param,\n enum: param.enum,\n })),\n)\n\n/** Update a field in a parameter row */\nconst updateRow = (rowIdx: number, field: 'key' | 'value', value: string) => {\n const parameters = example.parameters[paramKey]\n const oldKey = parameters[rowIdx]?.key\n if (!oldKey) {\n return\n }\n\n /** Change variable in path as well */\n if (field === 'key') {\n if (parameters[rowIdx]?.required) {\n /** Prevent updating the key of a required item */\n return\n }\n if (!value) {\n /** Remove parameter if path params table key is empty */\n parameters.splice(rowIdx, 1)\n const regx = new RegExp(`/:${encodeURIComponent(oldKey)}(?=[/?#]|$)`, 'g')\n const newPath = operation.path.replace(regx, '')\n\n requestMutators.edit(operation.uid, 'path', newPath)\n } else {\n /** Update URL with path params table key */\n const encodedOldKey = encodeURIComponent(oldKey)\n const encodedNewKey = encodeURIComponent(value)\n const regx = new RegExp(`(?<=/):${encodedOldKey}(?=[/?#]|$)`, 'g')\n const newPath = operation.path.replace(regx, `:${encodedNewKey}`)\n requestMutators.edit(operation.uid, 'path', newPath)\n }\n }\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}.${rowIdx}.${field}`,\n value,\n )\n}\n\nconst deleteRow = (rowIdx: number) => {\n const currentParams = params.value\n if (currentParams.length > rowIdx) {\n const updatedParams = [...currentParams]\n updatedParams.splice(rowIdx, 1)\n\n requestExampleMutators.edit(\n example.uid,\n `parameters.${paramKey}`,\n updatedParams,\n )\n }\n}\n\nconst setPathVariable = (url: string) => {\n const pathVariables = url.match(REGEX.PATH)?.map((v) => v.slice(1, -1)) || []\n const parameters = example.parameters[paramKey]\n\n const paramMap = new Map(parameters.map((param) => [param.key, param]))\n const updatedParameters = pathVariables.map(\n (key) => paramMap.get(key) || { key, value: '', enabled: true },\n )\n\n parameters.forEach((param) => {\n /** prevent removing required parameters or with a value */\n if (!pathVariables.includes(param.key) && (param.value || param.required)) {\n updatedParameters.push(param)\n }\n })\n parameters.splice(0, parameters.length, ...updatedParameters)\n\n requestExampleMutators.edit(example.uid, `parameters.${paramKey}`, parameters)\n}\n\nconst handlePathVariableUpdate = (url: string) => {\n if (url) {\n setPathVariable(url)\n }\n}\n\nwatch(\n () => operation.path,\n (newURL) => {\n if (newURL) {\n handlePathVariableUpdate(newURL)\n }\n },\n)\n</script>\n<template>\n <ViewLayoutCollapse :itemCount=\"params.length\">\n <template #title>\n {{ title }}\n </template>\n\n <RequestTable\n v-if=\"params.length\"\n class=\"flex-1\"\n :columns=\"['32px', '', '']\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :invalidParams=\"invalidParams\"\n :items=\"params\"\n :workspace=\"workspace\"\n @updateRow=\"updateRow\"\n @deleteRow=\"deleteRow\" />\n </ViewLayoutCollapse>\n</template>\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarCodeBlock,\n ScalarCombobox,\n ScalarIcon,\n type ScalarComboboxOption,\n} from '@scalar/components'\nimport type {\n Collection,\n Operation,\n RequestExample,\n SecurityScheme,\n Server,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { snippetz, type ClientId, type TargetId } from '@scalar/snippetz'\nimport { computed, ref } from 'vue'\n\nimport DataTable from '@/components/DataTable/DataTable.vue'\nimport DataTableRow from '@/components/DataTable/DataTableRow.vue'\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport type { EnvVariables } from '@/libs/env-helpers'\nimport { useWorkspace } from '@/store'\nimport { CodeSnippet } from '@/views/Components/CodeSnippet'\n\nconst { collection, example, operation, server, workspace } = defineProps<{\n collection: Collection\n example: RequestExample\n operation: Operation\n server: Server | undefined\n workspace: Workspace\n environment: EnvVariables\n}>()\n\nconst { securitySchemes, workspaceMutators } = useWorkspace()\n\nconst localSelectedClient = computed(() => {\n // If the current selection is a custom example\n if (localSelectedClientState.value.targetKey === 'custom') {\n // Check if this custom example still exists in the new operation\n const customExampleExists = codeSamples.value?.some(\n (sample) => sample.lang === localSelectedClientState.value.clientKey,\n )\n\n // If it exists, keep using it\n if (customExampleExists) {\n return localSelectedClientState.value\n }\n }\n\n // Otherwise fall back to workspace selection\n return {\n targetKey: workspace.selectedHttpClient?.targetKey ?? 'js',\n clientKey: workspace.selectedHttpClient?.clientKey ?? 'fetch',\n }\n})\n\nconst codeSamples = computed(\n () =>\n operation['x-codeSamples'] ||\n operation['x-code-samples'] ||\n operation['x-custom-examples'],\n)\n\n// Store the actual selected state\nconst localSelectedClientState = ref(\n codeSamples.value?.length\n ? {\n targetKey: 'custom',\n clientKey: codeSamples.value[0]?.lang,\n }\n : {\n targetKey: workspace.selectedHttpClient?.targetKey ?? 'js',\n clientKey: workspace.selectedHttpClient?.clientKey ?? 'fetch',\n },\n)\n\n/**\n * Returns selected security schemes for the request\n */\nconst selectedSecuritySchemes = computed(() => {\n const uids =\n operation.selectedSecuritySchemeUids ||\n collection.selectedSecuritySchemeUids ||\n []\n return uids\n .flat()\n .map((uid) => securitySchemes[uid])\n .filter((scheme): scheme is SecurityScheme => Boolean(scheme))\n})\n\n/**\n * Group plugins by target/language to show in a dropdown, also build a dictionary in the same loop\n **/\nconst snippets = computed(() => {\n const dict: Record<string, string> = {}\n\n // Get the built-in snippets\n const builtInOptions = snippetz()\n .clients()\n .map((group) => ({\n label: group.title,\n options: group.clients.map((plugin) => {\n dict[`${group.key},${plugin.client}`] = plugin.title\n return {\n id: `${group.key},${plugin.client}`,\n label: plugin.title,\n }\n }),\n }))\n\n // Get any custom code samples from x-codeSamples\n const customExamples = (\n operation['x-codeSamples'] ||\n operation['x-code-samples'] ||\n operation['x-custom-examples'] ||\n []\n ).map((sample) => ({\n id: `custom,${sample.lang}`,\n label: sample.label || sample.lang,\n }))\n\n // If we have custom samples, add them as a new group\n const options =\n customExamples.length > 0\n ? [\n {\n id: 'customExamples',\n label: 'Code Examples',\n options: customExamples.map((customExample) => ({\n id: customExample.id,\n label: customExample.label ?? customExample.id,\n })),\n },\n ...builtInOptions,\n ]\n : builtInOptions\n\n // Add custom samples to the dictionary\n customExamples.forEach((sample) => {\n dict[sample.id] = sample.label ?? sample.id\n })\n\n return {\n options,\n dict,\n }\n})\n\n/** The currently selected plugin */\nconst selectedPlugin = computed(() => {\n const client = localSelectedClient.value\n\n // Handle custom examples\n if (client.targetKey === 'custom') {\n const id = `custom,${client.clientKey}`\n return {\n id,\n label: snippets.value.dict[id] ?? 'Unknown',\n }\n }\n\n // Handle regular snippetz plugins\n const id = `${client.targetKey},${client.clientKey}`\n return {\n id,\n label: snippets.value.dict[id] ?? 'Unknown',\n }\n})\n\n/** The currently selected target */\nconst selectedTarget = computed(\n () => localSelectedClient.value.targetKey as TargetId,\n)\n\n/** The currently selected client */\nconst selectedClient = computed(\n () => localSelectedClient.value.clientKey as ClientId<TargetId>,\n)\n\n/** Update the selection when a new client is picked */\nconst selectClient = (value: ScalarComboboxOption | undefined) => {\n if (!value) {\n return\n }\n const { id } = value\n const [target, client] = id.split(',')\n\n if (!target || !client) {\n return\n }\n\n // Update the state ref\n localSelectedClientState.value = {\n targetKey: target,\n clientKey: client,\n }\n\n // Only update workspace for non-custom selections\n if (target !== 'custom') {\n workspaceMutators.edit(workspace.uid, 'selectedHttpClient', {\n targetKey: target,\n clientKey: client,\n })\n }\n}\n\n/** Get the code sample content for a custom example */\nconst customCodeContent = computed(() => {\n if (!selectedPlugin.value.id.startsWith('custom,')) {\n return undefined\n }\n\n const lang = selectedPlugin.value.id.split(',')[1]\n const sample = codeSamples.value?.find((s) => s.lang === lang)\n return sample?.source\n})\n</script>\n\n<template>\n <div class=\"w-full\">\n <ViewLayoutCollapse\n class=\"group/preview w-full border-b-0\"\n :defaultOpen=\"false\">\n <template #title>Code Snippet</template>\n <template #actions>\n <div class=\"flex flex-1\">\n <ScalarCombobox\n :modelValue=\"selectedPlugin\"\n :options=\"snippets.options\"\n placement=\"bottom-end\"\n @update:modelValue=\"selectClient\">\n <ScalarButton\n class=\"text-c-2 hover:text-c-1 flex h-full w-fit gap-1.5 px-1.25 py-0.75 font-normal\"\n variant=\"ghost\">\n <span>{{ selectedPlugin?.label }}</span>\n <ScalarIcon\n icon=\"ChevronDown\"\n size=\"md\" />\n </ScalarButton>\n </ScalarCombobox>\n </div>\n </template>\n <DataTable\n :columns=\"['']\"\n presentational>\n <DataTableRow>\n <div\n class=\"bg-b-1 flex items-center justify-center overflow-hidden border-t\">\n <!-- Use the given code example -->\n <template v-if=\"customCodeContent\">\n <ScalarCodeBlock\n :content=\"customCodeContent\"\n :lang=\"selectedPlugin.id.split(',')[1] ?? 'plaintext'\" />\n </template>\n <!-- Generate a code snippet -->\n <template v-else>\n <CodeSnippet\n :client=\"selectedClient\"\n :example=\"example\"\n :operation=\"operation\"\n :securitySchemes=\"selectedSecuritySchemes\"\n :server=\"server\"\n :target=\"selectedTarget\"\n :environment=\"environment\" />\n </template>\n </div>\n </DataTableRow>\n </DataTable>\n </ViewLayoutCollapse>\n </div>\n</template>\n<style scoped>\n:deep(code.hljs *) {\n font-size: var(--scalar-small);\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarCodeBlock,\n ScalarCombobox,\n ScalarIcon,\n type ScalarComboboxOption,\n} from '@scalar/components'\nimport type {\n Collection,\n Operation,\n RequestExample,\n SecurityScheme,\n Server,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { snippetz, type ClientId, type TargetId } from '@scalar/snippetz'\nimport { computed, ref } from 'vue'\n\nimport DataTable from '@/components/DataTable/DataTable.vue'\nimport DataTableRow from '@/components/DataTable/DataTableRow.vue'\nimport ViewLayoutCollapse from '@/components/ViewLayout/ViewLayoutCollapse.vue'\nimport type { EnvVariables } from '@/libs/env-helpers'\nimport { useWorkspace } from '@/store'\nimport { CodeSnippet } from '@/views/Components/CodeSnippet'\n\nconst { collection, example, operation, server, workspace } = defineProps<{\n collection: Collection\n example: RequestExample\n operation: Operation\n server: Server | undefined\n workspace: Workspace\n environment: EnvVariables\n}>()\n\nconst { securitySchemes, workspaceMutators } = useWorkspace()\n\nconst localSelectedClient = computed(() => {\n // If the current selection is a custom example\n if (localSelectedClientState.value.targetKey === 'custom') {\n // Check if this custom example still exists in the new operation\n const customExampleExists = codeSamples.value?.some(\n (sample) => sample.lang === localSelectedClientState.value.clientKey,\n )\n\n // If it exists, keep using it\n if (customExampleExists) {\n return localSelectedClientState.value\n }\n }\n\n // Otherwise fall back to workspace selection\n return {\n targetKey: workspace.selectedHttpClient?.targetKey ?? 'js',\n clientKey: workspace.selectedHttpClient?.clientKey ?? 'fetch',\n }\n})\n\nconst codeSamples = computed(\n () =>\n operation['x-codeSamples'] ||\n operation['x-code-samples'] ||\n operation['x-custom-examples'],\n)\n\n// Store the actual selected state\nconst localSelectedClientState = ref(\n codeSamples.value?.length\n ? {\n targetKey: 'custom',\n clientKey: codeSamples.value[0]?.lang,\n }\n : {\n targetKey: workspace.selectedHttpClient?.targetKey ?? 'js',\n clientKey: workspace.selectedHttpClient?.clientKey ?? 'fetch',\n },\n)\n\n/**\n * Returns selected security schemes for the request\n */\nconst selectedSecuritySchemes = computed(() => {\n const uids =\n operation.selectedSecuritySchemeUids ||\n collection.selectedSecuritySchemeUids ||\n []\n return uids\n .flat()\n .map((uid) => securitySchemes[uid])\n .filter((scheme): scheme is SecurityScheme => Boolean(scheme))\n})\n\n/**\n * Group plugins by target/language to show in a dropdown, also build a dictionary in the same loop\n **/\nconst snippets = computed(() => {\n const dict: Record<string, string> = {}\n\n // Get the built-in snippets\n const builtInOptions = snippetz()\n .clients()\n .map((group) => ({\n label: group.title,\n options: group.clients.map((plugin) => {\n dict[`${group.key},${plugin.client}`] = plugin.title\n return {\n id: `${group.key},${plugin.client}`,\n label: plugin.title,\n }\n }),\n }))\n\n // Get any custom code samples from x-codeSamples\n const customExamples = (\n operation['x-codeSamples'] ||\n operation['x-code-samples'] ||\n operation['x-custom-examples'] ||\n []\n ).map((sample) => ({\n id: `custom,${sample.lang}`,\n label: sample.label || sample.lang,\n }))\n\n // If we have custom samples, add them as a new group\n const options =\n customExamples.length > 0\n ? [\n {\n id: 'customExamples',\n label: 'Code Examples',\n options: customExamples.map((customExample) => ({\n id: customExample.id,\n label: customExample.label ?? customExample.id,\n })),\n },\n ...builtInOptions,\n ]\n : builtInOptions\n\n // Add custom samples to the dictionary\n customExamples.forEach((sample) => {\n dict[sample.id] = sample.label ?? sample.id\n })\n\n return {\n options,\n dict,\n }\n})\n\n/** The currently selected plugin */\nconst selectedPlugin = computed(() => {\n const client = localSelectedClient.value\n\n // Handle custom examples\n if (client.targetKey === 'custom') {\n const id = `custom,${client.clientKey}`\n return {\n id,\n label: snippets.value.dict[id] ?? 'Unknown',\n }\n }\n\n // Handle regular snippetz plugins\n const id = `${client.targetKey},${client.clientKey}`\n return {\n id,\n label: snippets.value.dict[id] ?? 'Unknown',\n }\n})\n\n/** The currently selected target */\nconst selectedTarget = computed(\n () => localSelectedClient.value.targetKey as TargetId,\n)\n\n/** The currently selected client */\nconst selectedClient = computed(\n () => localSelectedClient.value.clientKey as ClientId<TargetId>,\n)\n\n/** Update the selection when a new client is picked */\nconst selectClient = (value: ScalarComboboxOption | undefined) => {\n if (!value) {\n return\n }\n const { id } = value\n const [target, client] = id.split(',')\n\n if (!target || !client) {\n return\n }\n\n // Update the state ref\n localSelectedClientState.value = {\n targetKey: target,\n clientKey: client,\n }\n\n // Only update workspace for non-custom selections\n if (target !== 'custom') {\n workspaceMutators.edit(workspace.uid, 'selectedHttpClient', {\n targetKey: target,\n clientKey: client,\n })\n }\n}\n\n/** Get the code sample content for a custom example */\nconst customCodeContent = computed(() => {\n if (!selectedPlugin.value.id.startsWith('custom,')) {\n return undefined\n }\n\n const lang = selectedPlugin.value.id.split(',')[1]\n const sample = codeSamples.value?.find((s) => s.lang === lang)\n return sample?.source\n})\n</script>\n\n<template>\n <div class=\"w-full\">\n <ViewLayoutCollapse\n class=\"group/preview w-full border-b-0\"\n :defaultOpen=\"false\">\n <template #title>Code Snippet</template>\n <template #actions>\n <div class=\"flex flex-1\">\n <ScalarCombobox\n :modelValue=\"selectedPlugin\"\n :options=\"snippets.options\"\n placement=\"bottom-end\"\n @update:modelValue=\"selectClient\">\n <ScalarButton\n class=\"text-c-2 hover:text-c-1 flex h-full w-fit gap-1.5 px-1.25 py-0.75 font-normal\"\n variant=\"ghost\">\n <span>{{ selectedPlugin?.label }}</span>\n <ScalarIcon\n icon=\"ChevronDown\"\n size=\"md\" />\n </ScalarButton>\n </ScalarCombobox>\n </div>\n </template>\n <DataTable\n :columns=\"['']\"\n presentational>\n <DataTableRow>\n <div\n class=\"bg-b-1 flex items-center justify-center overflow-hidden border-t\">\n <!-- Use the given code example -->\n <template v-if=\"customCodeContent\">\n <ScalarCodeBlock\n :content=\"customCodeContent\"\n :lang=\"selectedPlugin.id.split(',')[1] ?? 'plaintext'\" />\n </template>\n <!-- Generate a code snippet -->\n <template v-else>\n <CodeSnippet\n :client=\"selectedClient\"\n :example=\"example\"\n :operation=\"operation\"\n :securitySchemes=\"selectedSecuritySchemes\"\n :server=\"server\"\n :target=\"selectedTarget\"\n :environment=\"environment\" />\n </template>\n </div>\n </DataTableRow>\n </DataTable>\n </ViewLayoutCollapse>\n </div>\n</template>\n<style scoped>\n:deep(code.hljs *) {\n font-size: var(--scalar-small);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarErrorBoundary } from '@scalar/components'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport type { SelectedSecuritySchemeUids } from '@scalar/oas-utils/entities/shared'\nimport type {\n Collection,\n Operation,\n RequestExample,\n Server,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { canMethodHaveBody, isDefined, REGEX } from '@scalar/oas-utils/helpers'\nimport { computed, ref, useId, watch } from 'vue'\n\nimport SectionFilter from '@/components/SectionFilter.vue'\nimport ViewLayoutSection from '@/components/ViewLayout/ViewLayoutSection.vue'\nimport { useLayout } from '@/hooks'\nimport { matchesDomain } from '@/libs/send-request/set-request-cookies'\nimport { usePluginManager } from '@/plugins'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\nimport RequestBody from '@/views/Request/RequestSection/RequestBody.vue'\nimport RequestParams from '@/views/Request/RequestSection/RequestParams.vue'\nimport RequestPathParams from '@/views/Request/RequestSection/RequestPathParams.vue'\n\nimport RequestAuth from './RequestAuth/RequestAuth.vue'\nimport RequestCodeExample from './RequestCodeExample.vue'\n\nconst {\n collection,\n environment,\n envVariables,\n example,\n operation,\n selectedSecuritySchemeUids,\n server,\n workspace,\n} = defineProps<{\n collection: Collection\n environment: Environment\n envVariables: EnvVariable[]\n example: RequestExample\n invalidParams: Set<string>\n operation: Operation\n selectedSecuritySchemeUids: SelectedSecuritySchemeUids\n server: Server | undefined\n workspace: Workspace\n}>()\n\nconst requestSections = [\n 'Auth',\n 'Path Parameters',\n 'Cookies',\n 'Headers',\n 'Query',\n 'Body',\n // 'Scripts',\n] as const\n\ntype Filter = 'All' | (typeof requestSections)[number]\n\nconst { requestMutators, cookies, securitySchemes } = useWorkspace()\nconst { layout } = useLayout()\n\nconst filters = computed<Filter[]>(() => {\n const allSections = new Set<Filter>(['All', ...requestSections])\n\n if (!example.parameters.path.length) {\n allSections.delete('Path Parameters')\n }\n if (!canMethodHaveBody(operation.method ?? 'get')) {\n allSections.delete('Body')\n }\n if (isAuthHidden.value) {\n allSections.delete('Auth')\n }\n\n return [...allSections]\n})\n\n/** A list of section ids */\nconst filterIds = computed(\n () =>\n Object.fromEntries(\n filters.value.map((section) => [section, useId()]),\n ) as Record<Filter, string>,\n)\n\n// If security = [] or [{}] just hide it on readOnly mode\nconst isAuthHidden = computed(\n () =>\n layout === 'modal' &&\n !operation.security &&\n !Object.keys(securitySchemes ?? {}).length,\n)\n\nconst selectedFilter = ref<Filter>('All')\n\nwatch(\n () => operation,\n (newOperation) => {\n if (\n selectedFilter.value === 'Body' &&\n newOperation &&\n !canMethodHaveBody(newOperation.method)\n ) {\n selectedFilter.value = 'All'\n }\n },\n)\n\nconst updateRequestNameHandler = (event: Event) => {\n const target = event.target as HTMLInputElement\n requestMutators.edit(operation.uid, 'summary', target.value)\n}\n\n/**\n * Add the global cookies as static entries to the cookies section\n */\nconst activeWorkspaceCookies = computed(() =>\n (workspace.cookies ?? [])\n .map((uid) => cookies[uid])\n .filter(isDefined)\n .filter((cookie) => cookie.name)\n .filter((cookie) =>\n matchesDomain(server?.url || operation.path, cookie.domain),\n )\n .map((cookie) => ({\n key: cookie.name,\n value: cookie.value,\n route: {\n name: 'cookies',\n params: {\n cookies: cookie.uid,\n },\n },\n enabled: true,\n })),\n)\n\n// If the request has no summary, use the path or fallback\nconst handleRequestNamePlaceholder = () => {\n return operation.summary\n ? operation.summary\n : operation.path.replace(REGEX.PROTOCOL, '')\n ? operation.path.replace(REGEX.PROTOCOL, '')\n : 'Request Name'\n}\n\nconst labelRequestNameId = useId()\n\n// Plugins\nconst pluginManager = usePluginManager()\n\nconst requestSectionViews = pluginManager.getViewComponents('request.section')\n\nconst updateOperationHandler = (key: keyof Operation, value: string) =>\n requestMutators.edit(operation.uid, key, value)\n\n// Sets to all when auth filter is hidden but was previously selected to prevent empty section\nwatch(\n () => isAuthHidden.value,\n (authHidden) => {\n if (authHidden && selectedFilter.value === 'Auth') {\n selectedFilter.value = 'All'\n }\n },\n)\n</script>\n<template>\n <ViewLayoutSection :aria-label=\"`Request: ${operation.summary}`\">\n <template #title>\n <div\n class=\"group pointer-events-none flex flex-1 items-center gap-1 lg:pr-24\">\n <label\n v-if=\"layout !== 'modal'\"\n class=\"pointer-events-auto absolute top-0 left-0 h-full w-full cursor-text opacity-0\"\n :for=\"labelRequestNameId\" />\n <input\n v-if=\"layout !== 'modal'\"\n :id=\"labelRequestNameId\"\n class=\"text-c-1 group-hover-input pointer-events-auto relative z-10 -ml-0.5 h-8 w-full rounded pl-1.25 has-[:focus-visible]:outline md:-ml-1.25\"\n :placeholder=\"handleRequestNamePlaceholder()\"\n :value=\"operation.summary\"\n @input=\"updateRequestNameHandler\" />\n <span\n v-else\n class=\"text-c-1 flex h-8 items-center\">\n {{ operation.summary }}\n </span>\n </div>\n <SectionFilter\n v-model=\"selectedFilter\"\n :filterIds=\"filterIds\"\n :filters=\"filters\" />\n </template>\n <div\n :id=\"filterIds.All\"\n class=\"request-section-content custom-scroll relative flex flex-1 flex-col\"\n :role=\"selectedFilter === 'All' ? 'tabpanel' : 'none'\">\n <RequestAuth\n v-if=\"\n collection &&\n workspace &&\n (layout !== 'modal' || Object.keys(securitySchemes ?? {}).length)\n \"\n v-show=\"\n !isAuthHidden &&\n (selectedFilter === 'All' || selectedFilter === 'Auth')\n \"\n :id=\"filterIds.Auth\"\n class=\"request-section-content-auth\"\n :collection=\"collection\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :isReadOnly=\"layout === 'modal'\"\n layout=\"client\"\n :operation=\"operation\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n :selectedSecuritySchemeUids=\"selectedSecuritySchemeUids\"\n :server=\"server\"\n title=\"Authentication\"\n :workspace=\"workspace\" />\n <RequestPathParams\n v-show=\"\n (selectedFilter === 'All' || selectedFilter === 'Path Parameters') &&\n example.parameters.path.length\n \"\n :id=\"filterIds['Path Parameters']\"\n class=\"request-section-content-path-params\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n :operation=\"operation\"\n paramKey=\"path\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Path Parameters\"\n :workspace=\"workspace\" />\n <RequestParams\n v-show=\"selectedFilter === 'All' || selectedFilter === 'Cookies'\"\n :id=\"filterIds.Cookies\"\n class=\"request-section-content-cookies\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n label=\"Cookie\"\n :operation=\"operation\"\n paramKey=\"cookies\"\n :readOnlyEntries=\"activeWorkspaceCookies\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Cookies\"\n :workspace=\"workspace\" />\n <RequestParams\n v-show=\"selectedFilter === 'All' || selectedFilter === 'Headers'\"\n :id=\"filterIds.Headers\"\n class=\"request-section-content-headers\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n label=\"Header\"\n :operation=\"operation\"\n paramKey=\"headers\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Headers\"\n :workspace=\"workspace\" />\n <RequestParams\n v-show=\"selectedFilter === 'All' || selectedFilter === 'Query'\"\n :id=\"filterIds.Query\"\n class=\"request-section-content-query\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n label=\"Parameter\"\n :operation=\"operation\"\n paramKey=\"query\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Query Parameters\"\n :workspace=\"workspace\" />\n <RequestBody\n v-if=\"\n operation.method &&\n (selectedFilter === 'All' || selectedFilter === 'Body') &&\n canMethodHaveBody(operation.method)\n \"\n :id=\"filterIds.Body\"\n class=\"request-section-content-body\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :operation=\"operation\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Body\"\n :workspace=\"workspace\" />\n\n <template\n v-for=\"(view, index) in requestSectionViews\"\n :key=\"view.title ?? index\">\n <ScalarErrorBoundary>\n <component\n :is=\"view.component\"\n v-show=\"selectedFilter === 'All' || selectedFilter === view.title\"\n :operation=\"operation\"\n @update:operation=\"updateOperationHandler\" />\n </ScalarErrorBoundary>\n </template>\n\n <!-- Spacer -->\n <div class=\"flex flex-grow\" />\n\n <!-- Code Snippet -->\n <ScalarErrorBoundary>\n <RequestCodeExample\n class=\"request-section-content-code-example -mt-1/2 border-t\"\n :collection=\"collection\"\n :environment=\"envVariables\"\n :example=\"example\"\n :operation=\"operation\"\n :server=\"server\"\n :workspace=\"workspace\" />\n </ScalarErrorBoundary>\n </div>\n </ViewLayoutSection>\n</template>\n<style scoped>\n.request-section-content {\n --scalar-border-width: 0.5px;\n}\n.request-section-content-filter {\n box-shadow: 0 -10px 0 10px var(--scalar-background-1);\n}\n.request-item:focus-within .request-meta-buttons {\n opacity: 1;\n}\n.group-hover-input {\n border-width: var(--scalar-border-width);\n border-color: transparent;\n}\n.group:hover .group-hover-input {\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n border-color: var(--scalar-border-color);\n}\n.group-hover-input:focus {\n background: transparent !important;\n border-color: var(--scalar-border-color) !important;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarErrorBoundary } from '@scalar/components'\nimport type { Environment } from '@scalar/oas-utils/entities/environment'\nimport type { SelectedSecuritySchemeUids } from '@scalar/oas-utils/entities/shared'\nimport type {\n Collection,\n Operation,\n RequestExample,\n Server,\n} from '@scalar/oas-utils/entities/spec'\nimport type { Workspace } from '@scalar/oas-utils/entities/workspace'\nimport { canMethodHaveBody, isDefined, REGEX } from '@scalar/oas-utils/helpers'\nimport { computed, ref, useId, watch } from 'vue'\n\nimport SectionFilter from '@/components/SectionFilter.vue'\nimport ViewLayoutSection from '@/components/ViewLayout/ViewLayoutSection.vue'\nimport { useLayout } from '@/hooks'\nimport { matchesDomain } from '@/libs/send-request/set-request-cookies'\nimport { usePluginManager } from '@/plugins'\nimport { useWorkspace } from '@/store'\nimport type { EnvVariable } from '@/store/active-entities'\nimport RequestBody from '@/views/Request/RequestSection/RequestBody.vue'\nimport RequestParams from '@/views/Request/RequestSection/RequestParams.vue'\nimport RequestPathParams from '@/views/Request/RequestSection/RequestPathParams.vue'\n\nimport RequestAuth from './RequestAuth/RequestAuth.vue'\nimport RequestCodeExample from './RequestCodeExample.vue'\n\nconst {\n collection,\n environment,\n envVariables,\n example,\n operation,\n selectedSecuritySchemeUids,\n server,\n workspace,\n} = defineProps<{\n collection: Collection\n environment: Environment\n envVariables: EnvVariable[]\n example: RequestExample\n invalidParams: Set<string>\n operation: Operation\n selectedSecuritySchemeUids: SelectedSecuritySchemeUids\n server: Server | undefined\n workspace: Workspace\n}>()\n\nconst requestSections = [\n 'Auth',\n 'Path Parameters',\n 'Cookies',\n 'Headers',\n 'Query',\n 'Body',\n // 'Scripts',\n] as const\n\ntype Filter = 'All' | (typeof requestSections)[number]\n\nconst { requestMutators, cookies, securitySchemes } = useWorkspace()\nconst { layout } = useLayout()\n\nconst filters = computed<Filter[]>(() => {\n const allSections = new Set<Filter>(['All', ...requestSections])\n\n if (!example.parameters.path.length) {\n allSections.delete('Path Parameters')\n }\n if (!canMethodHaveBody(operation.method ?? 'get')) {\n allSections.delete('Body')\n }\n if (isAuthHidden.value) {\n allSections.delete('Auth')\n }\n\n return [...allSections]\n})\n\n/** A list of section ids */\nconst filterIds = computed(\n () =>\n Object.fromEntries(\n filters.value.map((section) => [section, useId()]),\n ) as Record<Filter, string>,\n)\n\n// If security = [] or [{}] just hide it on readOnly mode\nconst isAuthHidden = computed(\n () =>\n layout === 'modal' &&\n !operation.security &&\n !Object.keys(securitySchemes ?? {}).length,\n)\n\nconst selectedFilter = ref<Filter>('All')\n\nwatch(\n () => operation,\n (newOperation) => {\n if (\n selectedFilter.value === 'Body' &&\n newOperation &&\n !canMethodHaveBody(newOperation.method)\n ) {\n selectedFilter.value = 'All'\n }\n },\n)\n\nconst updateRequestNameHandler = (event: Event) => {\n const target = event.target as HTMLInputElement\n requestMutators.edit(operation.uid, 'summary', target.value)\n}\n\n/**\n * Add the global cookies as static entries to the cookies section\n */\nconst activeWorkspaceCookies = computed(() =>\n (workspace.cookies ?? [])\n .map((uid) => cookies[uid])\n .filter(isDefined)\n .filter((cookie) => cookie.name)\n .filter((cookie) =>\n matchesDomain(server?.url || operation.path, cookie.domain),\n )\n .map((cookie) => ({\n key: cookie.name,\n value: cookie.value,\n route: {\n name: 'cookies',\n params: {\n cookies: cookie.uid,\n },\n },\n enabled: true,\n })),\n)\n\n// If the request has no summary, use the path or fallback\nconst handleRequestNamePlaceholder = () => {\n return operation.summary\n ? operation.summary\n : operation.path.replace(REGEX.PROTOCOL, '')\n ? operation.path.replace(REGEX.PROTOCOL, '')\n : 'Request Name'\n}\n\nconst labelRequestNameId = useId()\n\n// Plugins\nconst pluginManager = usePluginManager()\n\nconst requestSectionViews = pluginManager.getViewComponents('request.section')\n\nconst updateOperationHandler = (key: keyof Operation, value: string) =>\n requestMutators.edit(operation.uid, key, value)\n\n// Sets to all when auth filter is hidden but was previously selected to prevent empty section\nwatch(\n () => isAuthHidden.value,\n (authHidden) => {\n if (authHidden && selectedFilter.value === 'Auth') {\n selectedFilter.value = 'All'\n }\n },\n)\n</script>\n<template>\n <ViewLayoutSection :aria-label=\"`Request: ${operation.summary}`\">\n <template #title>\n <div\n class=\"group pointer-events-none flex flex-1 items-center gap-1 lg:pr-24\">\n <label\n v-if=\"layout !== 'modal'\"\n class=\"pointer-events-auto absolute top-0 left-0 h-full w-full cursor-text opacity-0\"\n :for=\"labelRequestNameId\" />\n <input\n v-if=\"layout !== 'modal'\"\n :id=\"labelRequestNameId\"\n class=\"text-c-1 group-hover-input pointer-events-auto relative z-10 -ml-0.5 h-8 w-full rounded pl-1.25 has-[:focus-visible]:outline md:-ml-1.25\"\n :placeholder=\"handleRequestNamePlaceholder()\"\n :value=\"operation.summary\"\n @input=\"updateRequestNameHandler\" />\n <span\n v-else\n class=\"text-c-1 flex h-8 items-center\">\n {{ operation.summary }}\n </span>\n </div>\n <SectionFilter\n v-model=\"selectedFilter\"\n :filterIds=\"filterIds\"\n :filters=\"filters\" />\n </template>\n <div\n :id=\"filterIds.All\"\n class=\"request-section-content custom-scroll relative flex flex-1 flex-col\"\n :role=\"selectedFilter === 'All' ? 'tabpanel' : 'none'\">\n <RequestAuth\n v-if=\"\n collection &&\n workspace &&\n (layout !== 'modal' || Object.keys(securitySchemes ?? {}).length)\n \"\n v-show=\"\n !isAuthHidden &&\n (selectedFilter === 'All' || selectedFilter === 'Auth')\n \"\n :id=\"filterIds.Auth\"\n class=\"request-section-content-auth\"\n :collection=\"collection\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :isReadOnly=\"layout === 'modal'\"\n layout=\"client\"\n :operation=\"operation\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n :selectedSecuritySchemeUids=\"selectedSecuritySchemeUids\"\n :server=\"server\"\n title=\"Authentication\"\n :workspace=\"workspace\" />\n <RequestPathParams\n v-show=\"\n (selectedFilter === 'All' || selectedFilter === 'Path Parameters') &&\n example.parameters.path.length\n \"\n :id=\"filterIds['Path Parameters']\"\n class=\"request-section-content-path-params\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n :operation=\"operation\"\n paramKey=\"path\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Path Parameters\"\n :workspace=\"workspace\" />\n <RequestParams\n v-show=\"selectedFilter === 'All' || selectedFilter === 'Cookies'\"\n :id=\"filterIds.Cookies\"\n class=\"request-section-content-cookies\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n label=\"Cookie\"\n :operation=\"operation\"\n paramKey=\"cookies\"\n :readOnlyEntries=\"activeWorkspaceCookies\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Cookies\"\n :workspace=\"workspace\" />\n <RequestParams\n v-show=\"selectedFilter === 'All' || selectedFilter === 'Headers'\"\n :id=\"filterIds.Headers\"\n class=\"request-section-content-headers\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n label=\"Header\"\n :operation=\"operation\"\n paramKey=\"headers\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Headers\"\n :workspace=\"workspace\" />\n <RequestParams\n v-show=\"selectedFilter === 'All' || selectedFilter === 'Query'\"\n :id=\"filterIds.Query\"\n class=\"request-section-content-query\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :invalidParams=\"invalidParams\"\n label=\"Parameter\"\n :operation=\"operation\"\n paramKey=\"query\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Query Parameters\"\n :workspace=\"workspace\" />\n <RequestBody\n v-if=\"\n operation.method &&\n (selectedFilter === 'All' || selectedFilter === 'Body') &&\n canMethodHaveBody(operation.method)\n \"\n :id=\"filterIds.Body\"\n class=\"request-section-content-body\"\n :envVariables=\"envVariables\"\n :environment=\"environment\"\n :example=\"example\"\n :operation=\"operation\"\n :role=\"selectedFilter === 'All' ? 'none' : 'tabpanel'\"\n title=\"Body\"\n :workspace=\"workspace\" />\n\n <template\n v-for=\"(view, index) in requestSectionViews\"\n :key=\"view.title ?? index\">\n <ScalarErrorBoundary>\n <component\n :is=\"view.component\"\n v-show=\"selectedFilter === 'All' || selectedFilter === view.title\"\n :operation=\"operation\"\n @update:operation=\"updateOperationHandler\" />\n </ScalarErrorBoundary>\n </template>\n\n <!-- Spacer -->\n <div class=\"flex flex-grow\" />\n\n <!-- Code Snippet -->\n <ScalarErrorBoundary>\n <RequestCodeExample\n class=\"request-section-content-code-example -mt-1/2 border-t\"\n :collection=\"collection\"\n :environment=\"envVariables\"\n :example=\"example\"\n :operation=\"operation\"\n :server=\"server\"\n :workspace=\"workspace\" />\n </ScalarErrorBoundary>\n </div>\n </ViewLayoutSection>\n</template>\n<style scoped>\n.request-section-content {\n --scalar-border-width: 0.5px;\n}\n.request-section-content-filter {\n box-shadow: 0 -10px 0 10px var(--scalar-background-1);\n}\n.request-item:focus-within .request-meta-buttons {\n opacity: 1;\n}\n.group-hover-input {\n border-width: var(--scalar-border-width);\n border-color: transparent;\n}\n.group:hover .group-hover-input {\n background: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-background-2)\n );\n border-color: var(--scalar-border-color);\n}\n.group-hover-input:focus {\n background: transparent !important;\n border-color: var(--scalar-border-color) !important;\n}\n</style>\n"],"mappings":"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"}