@scalar/api-client 3.13.7 → 3.15.0

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 (385) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +2 -1
  3. package/dist/assets/computer.ascii.virtual.js.map +1 -1
  4. package/dist/components/HelpfulLink.vue.script.js +1 -1
  5. package/dist/components/HelpfulLink.vue.script.js.map +1 -1
  6. package/dist/components/HttpMethod/HttpMethod.vue.js +1 -1
  7. package/dist/components/HttpMethod/HttpMethod.vue.script.js +1 -1
  8. package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
  9. package/dist/components/ScalarAsciiArt/ScalarAsciiArt.vue.js +1 -1
  10. package/dist/components/ScalarAsciiArt/ScalarAsciiArt.vue.script.js +1 -1
  11. package/dist/components/ScalarAsciiArt/ScalarAsciiArt.vue.script.js.map +1 -1
  12. package/dist/components/SectionFilter.vue.d.ts +1 -1
  13. package/dist/components/SectionFilter.vue.d.ts.map +1 -1
  14. package/dist/components/SectionFilter.vue.js +1 -1
  15. package/dist/components/SectionFilter.vue.script.js +2 -2
  16. package/dist/components/SectionFilter.vue.script.js.map +1 -1
  17. package/dist/components/SectionFilterButton.vue.script.js +1 -1
  18. package/dist/components/SectionFilterButton.vue.script.js.map +1 -1
  19. package/dist/components/Server/ServerVariablesForm.vue.d.ts.map +1 -1
  20. package/dist/components/Server/ServerVariablesForm.vue.script.js +1 -1
  21. package/dist/components/Server/ServerVariablesForm.vue.script.js.map +1 -1
  22. package/dist/components/Server/ServerVariablesSelect.vue.script.js +1 -1
  23. package/dist/components/Server/ServerVariablesSelect.vue.script.js.map +1 -1
  24. package/dist/components/Server/ServerVariablesTextbox.vue.script.js +1 -1
  25. package/dist/components/Server/ServerVariablesTextbox.vue.script.js.map +1 -1
  26. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.d.ts.map +1 -1
  27. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.script.js +1 -1
  28. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.script.js.map +1 -1
  29. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.d.ts.map +1 -1
  30. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js +1 -1
  31. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js.map +1 -1
  32. package/dist/components/ViewLayout/ViewLayout.vue.script.js +1 -1
  33. package/dist/components/ViewLayout/ViewLayout.vue.script.js.map +1 -1
  34. package/dist/components/ViewLayout/ViewLayoutContent.vue.js +1 -1
  35. package/dist/components/ViewLayout/ViewLayoutContent.vue.js.map +1 -1
  36. package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js +1 -1
  37. package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js.map +1 -1
  38. package/dist/hooks/use-file-dialog.js +2 -1
  39. package/dist/hooks/use-file-dialog.js.map +1 -1
  40. package/dist/plugins/posthog/index.js.map +1 -1
  41. package/dist/plugins/posthog/sanitize-event-payload.js +1 -1
  42. package/dist/plugins/posthog/sanitize-event-payload.js.map +1 -1
  43. package/dist/style.css +420 -382
  44. package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
  45. package/dist/v2/blocks/operation-block/OperationBlock.vue.js.map +1 -1
  46. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js +4 -2
  47. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js.map +1 -1
  48. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
  49. package/dist/v2/blocks/operation-block/components/Header.vue.js +1 -1
  50. package/dist/v2/blocks/operation-block/components/Header.vue.script.js +1 -1
  51. package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -1
  52. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js +1 -1
  53. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js +1 -1
  54. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js.map +1 -1
  55. package/dist/v2/blocks/operation-block/helpers/decode-buffer.js.map +1 -1
  56. package/dist/v2/blocks/operation-block/helpers/get-cookie-header-keys.js.map +1 -1
  57. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.js.map +1 -1
  58. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js.map +1 -1
  59. package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.js.map +1 -1
  60. package/dist/v2/blocks/operation-block/helpers/response-cache.js.map +1 -1
  61. package/dist/v2/blocks/operation-block/helpers/send-request.js.map +1 -1
  62. package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js.map +1 -1
  63. package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
  64. package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
  65. package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
  66. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +58 -29
  67. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
  68. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts +6 -6
  69. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
  70. package/dist/v2/blocks/request-block/components/RequestBody.vue.js +1 -1
  71. package/dist/v2/blocks/request-block/components/RequestBody.vue.js.map +1 -1
  72. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +73 -12
  73. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -1
  74. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.d.ts.map +1 -1
  75. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js +1 -1
  76. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js.map +1 -1
  77. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.d.ts +19 -0
  78. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.d.ts.map +1 -0
  79. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.js +7 -0
  80. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.js.map +1 -0
  81. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.script.js +81 -0
  82. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.script.js.map +1 -0
  83. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.d.ts +13 -0
  84. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.d.ts.map +1 -0
  85. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.js +7 -0
  86. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.js.map +1 -0
  87. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.script.js +34 -0
  88. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.script.js.map +1 -0
  89. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.d.ts.map +1 -1
  90. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js +1 -1
  91. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js.map +1 -1
  92. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts +2 -0
  93. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts.map +1 -1
  94. package/dist/v2/blocks/request-block/components/RequestParams.vue.js.map +1 -1
  95. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js +5 -3
  96. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js.map +1 -1
  97. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +2 -0
  98. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts.map +1 -1
  99. package/dist/v2/blocks/request-block/components/RequestTable.vue.js +1 -1
  100. package/dist/v2/blocks/request-block/components/RequestTable.vue.js.map +1 -1
  101. package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js +6 -3
  102. package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js.map +1 -1
  103. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts +8 -0
  104. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts.map +1 -1
  105. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js.map +1 -1
  106. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js +37 -18
  107. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js.map +1 -1
  108. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js +1 -1
  109. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js.map +1 -1
  110. package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js.map +1 -1
  111. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js +1 -1
  112. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js.map +1 -1
  113. package/dist/v2/blocks/request-block/helpers/files.js.map +1 -1
  114. package/dist/v2/blocks/request-block/helpers/fold-structured-body-rows.d.ts +17 -0
  115. package/dist/v2/blocks/request-block/helpers/fold-structured-body-rows.d.ts.map +1 -0
  116. package/dist/v2/blocks/request-block/helpers/fold-structured-body-rows.js +33 -0
  117. package/dist/v2/blocks/request-block/helpers/fold-structured-body-rows.js.map +1 -0
  118. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts +28 -0
  119. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts.map +1 -1
  120. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +12 -7
  121. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js.map +1 -1
  122. package/dist/v2/blocks/request-block/helpers/get-parameter-content.js.map +1 -1
  123. package/dist/v2/blocks/request-block/helpers/get-parameter-schema.js.map +1 -1
  124. package/dist/v2/blocks/request-block/helpers/get-structured-body-rows.d.ts +13 -0
  125. package/dist/v2/blocks/request-block/helpers/get-structured-body-rows.d.ts.map +1 -0
  126. package/dist/v2/blocks/request-block/helpers/get-structured-body-rows.js +39 -0
  127. package/dist/v2/blocks/request-block/helpers/get-structured-body-rows.js.map +1 -0
  128. package/dist/v2/blocks/request-block/helpers/group-by.js.map +1 -1
  129. package/dist/v2/blocks/request-block/helpers/group-global-cookies.d.ts +54 -0
  130. package/dist/v2/blocks/request-block/helpers/group-global-cookies.d.ts.map +1 -0
  131. package/dist/v2/blocks/request-block/helpers/group-global-cookies.js +56 -0
  132. package/dist/v2/blocks/request-block/helpers/group-global-cookies.js.map +1 -0
  133. package/dist/v2/blocks/request-block/helpers/structured-body-codec.d.ts +15 -0
  134. package/dist/v2/blocks/request-block/helpers/structured-body-codec.d.ts.map +1 -0
  135. package/dist/v2/blocks/request-block/helpers/structured-body-codec.js +33 -0
  136. package/dist/v2/blocks/request-block/helpers/structured-body-codec.js.map +1 -0
  137. package/dist/v2/blocks/request-block/helpers/validate-parameter.js.map +1 -1
  138. package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts.map +1 -1
  139. package/dist/v2/blocks/response-block/ResponseBlock.vue.js +1 -1
  140. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +1 -1
  141. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -1
  142. package/dist/v2/blocks/response-block/components/Headers.vue.script.js +1 -1
  143. package/dist/v2/blocks/response-block/components/Headers.vue.script.js.map +1 -1
  144. package/dist/v2/blocks/response-block/components/ResponseBody.vue.js +1 -1
  145. package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js +1 -1
  146. package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js.map +1 -1
  147. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js +1 -1
  148. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js.map +1 -1
  149. package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js +1 -1
  150. package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js.map +1 -1
  151. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js +1 -1
  152. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js +1 -1
  153. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js.map +1 -1
  154. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js +1 -1
  155. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js +1 -1
  156. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js.map +1 -1
  157. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.d.ts.map +1 -1
  158. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js +1 -1
  159. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js.map +1 -1
  160. package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.script.js +1 -1
  161. package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.script.js.map +1 -1
  162. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js +1 -1
  163. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js.map +1 -1
  164. package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js +1 -1
  165. package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js.map +1 -1
  166. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js +1 -1
  167. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js +1 -1
  168. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js.map +1 -1
  169. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.d.ts.map +1 -1
  170. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js +1 -1
  171. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js +1 -1
  172. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js.map +1 -1
  173. package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js +1 -1
  174. package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js.map +1 -1
  175. package/dist/v2/blocks/response-block/helpers/extract-filename.js.map +1 -1
  176. package/dist/v2/blocks/response-block/helpers/get-content-length.js.map +1 -1
  177. package/dist/v2/blocks/response-block/helpers/media-types.js.map +1 -1
  178. package/dist/v2/blocks/response-block/helpers/parse-set-cookie.js.map +1 -1
  179. package/dist/v2/blocks/response-block/helpers/prettify-jsonc-string.js.map +1 -1
  180. package/dist/v2/blocks/response-block/helpers/process-response-body.js.map +1 -1
  181. package/dist/v2/blocks/response-block/helpers/resolve-response-body-handler.js.map +1 -1
  182. package/dist/v2/blocks/response-block/helpers/resolve-response-content-type.js +7 -1
  183. package/dist/v2/blocks/response-block/helpers/resolve-response-content-type.js.map +1 -1
  184. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
  185. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +1 -1
  186. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +1 -1
  187. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -1
  188. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts.map +1 -1
  189. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +1 -1
  190. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js +1 -1
  191. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -1
  192. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.d.ts.map +1 -1
  193. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js +1 -1
  194. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js.map +1 -1
  195. package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js +3 -1
  196. package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js.map +1 -1
  197. package/dist/v2/blocks/scalar-address-bar-block/helpers/is-placeholder-path.js.map +1 -1
  198. package/dist/v2/blocks/scalar-address-bar-block/helpers/refocus-blur-target.js.map +1 -1
  199. package/dist/v2/blocks/scalar-address-bar-block/hooks/use-loading-animation.js.map +1 -1
  200. package/dist/v2/blocks/scalar-address-bar-block/hooks/use-path-masking.js.map +1 -1
  201. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts.map +1 -1
  202. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +1 -1
  203. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
  204. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.d.ts.map +1 -1
  205. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js +1 -1
  206. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js.map +1 -1
  207. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts +18 -2
  208. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts.map +1 -1
  209. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js.map +1 -1
  210. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +19 -14
  211. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -1
  212. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.d.ts.map +1 -1
  213. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js +1 -1
  214. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js.map +1 -1
  215. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.d.ts +6 -2
  216. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.d.ts.map +1 -1
  217. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js.map +1 -1
  218. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js +17 -9
  219. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js.map +1 -1
  220. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.d.ts.map +1 -1
  221. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js +1 -1
  222. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js.map +1 -1
  223. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts.map +1 -1
  224. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js +1 -1
  225. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js.map +1 -1
  226. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts.map +1 -1
  227. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js +3 -3
  228. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js.map +1 -1
  229. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts +7 -3
  230. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts.map +1 -1
  231. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js.map +1 -1
  232. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +339 -26
  233. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -1
  234. package/dist/v2/blocks/scalar-auth-selector-block/helpers/auth-options.js.map +1 -1
  235. package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js +5 -0
  236. package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js.map +1 -1
  237. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth-callback.js +1 -1
  238. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth-callback.js.map +1 -1
  239. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts.map +1 -1
  240. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js +9 -13
  241. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js.map +1 -1
  242. package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js.map +1 -1
  243. package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.js.map +1 -1
  244. package/dist/v2/blocks/scalar-auth-selector-block/helpers/run-oauth2-authorize.d.ts +42 -0
  245. package/dist/v2/blocks/scalar-auth-selector-block/helpers/run-oauth2-authorize.d.ts.map +1 -0
  246. package/dist/v2/blocks/scalar-auth-selector-block/helpers/run-oauth2-authorize.js +60 -0
  247. package/dist/v2/blocks/scalar-auth-selector-block/helpers/run-oauth2-authorize.js.map +1 -0
  248. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.d.ts +17 -1
  249. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.d.ts.map +1 -1
  250. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js +33 -1
  251. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js.map +1 -1
  252. package/dist/v2/components/code-input/CodeInput.vue.d.ts.map +1 -1
  253. package/dist/v2/components/code-input/CodeInput.vue.js +1 -1
  254. package/dist/v2/components/code-input/CodeInput.vue.script.js +6 -1
  255. package/dist/v2/components/code-input/CodeInput.vue.script.js.map +1 -1
  256. package/dist/v2/components/code-input/CodeInputLite.vue.d.ts.map +1 -1
  257. package/dist/v2/components/code-input/CodeInputLite.vue.js +1 -1
  258. package/dist/v2/components/code-input/CodeInputLite.vue.script.js +5 -1
  259. package/dist/v2/components/code-input/CodeInputLite.vue.script.js.map +1 -1
  260. package/dist/v2/components/code-input/PillTooltipHost.vue.script.js +1 -1
  261. package/dist/v2/components/code-input/PillTooltipHost.vue.script.js.map +1 -1
  262. package/dist/v2/components/code-input/code-variable-widget.js +1 -0
  263. package/dist/v2/components/code-input/code-variable-widget.js.map +1 -1
  264. package/dist/v2/components/code-input/helpers/build-pill-context.js.map +1 -1
  265. package/dist/v2/components/code-input/helpers/lookup-variable-value.js.map +1 -1
  266. package/dist/v2/components/code-input/helpers/pill-signature.js.map +1 -1
  267. package/dist/v2/components/code-input/helpers/serialize-value.js.map +1 -1
  268. package/dist/v2/components/context-menu/ContextMenu.vue.script.js +1 -1
  269. package/dist/v2/components/context-menu/ContextMenu.vue.script.js.map +1 -1
  270. package/dist/v2/components/data-table/DataTable.vue.script.js +1 -1
  271. package/dist/v2/components/data-table/DataTable.vue.script.js.map +1 -1
  272. package/dist/v2/components/data-table/DataTableCell.vue.script.js +1 -1
  273. package/dist/v2/components/data-table/DataTableCell.vue.script.js.map +1 -1
  274. package/dist/v2/components/data-table/DataTableCheckbox.vue.d.ts +2 -0
  275. package/dist/v2/components/data-table/DataTableCheckbox.vue.d.ts.map +1 -1
  276. package/dist/v2/components/data-table/DataTableCheckbox.vue.js.map +1 -1
  277. package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js +9 -3
  278. package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js.map +1 -1
  279. package/dist/v2/components/data-table/DataTableHeader.vue.script.js +1 -1
  280. package/dist/v2/components/data-table/DataTableHeader.vue.script.js.map +1 -1
  281. package/dist/v2/components/data-table/DataTableInput.vue.d.ts.map +1 -1
  282. package/dist/v2/components/data-table/DataTableInput.vue.js +1 -1
  283. package/dist/v2/components/data-table/DataTableInput.vue.script.js +1 -1
  284. package/dist/v2/components/data-table/DataTableInput.vue.script.js.map +1 -1
  285. package/dist/v2/components/data-table/DataTableInputSelect.vue.d.ts.map +1 -1
  286. package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js +3 -2
  287. package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js.map +1 -1
  288. package/dist/v2/components/data-table/DataTableRow.vue.js +1 -1
  289. package/dist/v2/components/data-table/DataTableRow.vue.js.map +1 -1
  290. package/dist/v2/components/data-table/DataTableText.vue.script.js +1 -1
  291. package/dist/v2/components/data-table/DataTableText.vue.script.js.map +1 -1
  292. package/dist/v2/components/forms/ConfirmationForm.vue.d.ts.map +1 -1
  293. package/dist/v2/components/forms/ConfirmationForm.vue.script.js +1 -1
  294. package/dist/v2/components/forms/ConfirmationForm.vue.script.js.map +1 -1
  295. package/dist/v2/components/layout/CollapsibleSection.vue.d.ts.map +1 -1
  296. package/dist/v2/components/layout/CollapsibleSection.vue.script.js +1 -1
  297. package/dist/v2/components/layout/CollapsibleSection.vue.script.js.map +1 -1
  298. package/dist/v2/components/layout/ValueEmitter.vue.d.ts +1 -1
  299. package/dist/v2/components/layout/ValueEmitter.vue.d.ts.map +1 -1
  300. package/dist/v2/components/layout/ValueEmitter.vue.script.js +1 -1
  301. package/dist/v2/components/layout/ValueEmitter.vue.script.js.map +1 -1
  302. package/dist/v2/components/modals/DeleteModal.vue.d.ts.map +1 -1
  303. package/dist/v2/components/modals/DeleteModal.vue.script.js +1 -1
  304. package/dist/v2/components/modals/DeleteModal.vue.script.js.map +1 -1
  305. package/dist/v2/components/modals/ModalClientContainer.vue.js +1 -1
  306. package/dist/v2/components/modals/ModalClientContainer.vue.script.js +1 -1
  307. package/dist/v2/components/modals/ModalClientContainer.vue.script.js.map +1 -1
  308. package/dist/v2/components/resize/Resize.vue.js +1 -1
  309. package/dist/v2/components/resize/Resize.vue.script.js +1 -1
  310. package/dist/v2/components/resize/Resize.vue.script.js.map +1 -1
  311. package/dist/v2/components/resize/use-split-resize.js +4 -2
  312. package/dist/v2/components/resize/use-split-resize.js.map +1 -1
  313. package/dist/v2/components/server/ServerDropdown.vue.d.ts.map +1 -1
  314. package/dist/v2/components/server/ServerDropdown.vue.script.js +1 -1
  315. package/dist/v2/components/server/ServerDropdown.vue.script.js.map +1 -1
  316. package/dist/v2/components/server/ServerDropdownItem.vue.d.ts.map +1 -1
  317. package/dist/v2/components/server/ServerDropdownItem.vue.js +1 -1
  318. package/dist/v2/components/server/ServerDropdownItem.vue.script.js +1 -1
  319. package/dist/v2/components/server/ServerDropdownItem.vue.script.js.map +1 -1
  320. package/dist/v2/components/sidebar/Sidebar.vue.d.ts.map +1 -1
  321. package/dist/v2/components/sidebar/Sidebar.vue.script.js +3 -3
  322. package/dist/v2/components/sidebar/Sidebar.vue.script.js.map +1 -1
  323. package/dist/v2/components/sidebar/SidebarMenu.vue.d.ts.map +1 -1
  324. package/dist/v2/components/sidebar/SidebarMenu.vue.script.js +1 -1
  325. package/dist/v2/components/sidebar/SidebarMenu.vue.script.js.map +1 -1
  326. package/dist/v2/components/sidebar/SidebarToggle.vue.script.js +1 -1
  327. package/dist/v2/components/sidebar/SidebarToggle.vue.script.js.map +1 -1
  328. package/dist/v2/constants.js +1 -1
  329. package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js +1 -1
  330. package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js.map +1 -1
  331. package/dist/v2/features/command-palette/components/CommandActionInput.vue.script.js +1 -1
  332. package/dist/v2/features/command-palette/components/CommandActionInput.vue.script.js.map +1 -1
  333. package/dist/v2/features/environments/EnvironmentsList.vue.d.ts.map +1 -1
  334. package/dist/v2/features/environments/EnvironmentsList.vue.script.js +1 -1
  335. package/dist/v2/features/environments/EnvironmentsList.vue.script.js.map +1 -1
  336. package/dist/v2/features/environments/components/Environment.vue.d.ts.map +1 -1
  337. package/dist/v2/features/environments/components/Environment.vue.script.js +1 -1
  338. package/dist/v2/features/environments/components/Environment.vue.script.js.map +1 -1
  339. package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js +3 -2
  340. package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js.map +1 -1
  341. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.d.ts.map +1 -1
  342. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js +1 -1
  343. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js.map +1 -1
  344. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.d.ts.map +1 -1
  345. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js +1 -1
  346. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js.map +1 -1
  347. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.d.ts.map +1 -1
  348. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js +1 -1
  349. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map +1 -1
  350. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.d.ts.map +1 -1
  351. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js +1 -1
  352. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js +1 -1
  353. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js.map +1 -1
  354. package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
  355. package/dist/v2/features/modal/Modal.vue.script.js +1 -1
  356. package/dist/v2/features/modal/Modal.vue.script.js.map +1 -1
  357. package/dist/v2/features/modal/helpers/create-api-client-modal.js +11 -0
  358. package/dist/v2/features/modal/helpers/create-api-client-modal.js.map +1 -1
  359. package/dist/v2/features/modal/helpers/map-hidden-clients-config.js.map +1 -1
  360. package/dist/v2/features/modal/helpers/resolve-route-parameters.js +1 -1
  361. package/dist/v2/features/modal/helpers/resolve-route-parameters.js.map +1 -1
  362. package/dist/v2/features/modal/hooks/use-modal-sidebar.js.map +1 -1
  363. package/dist/v2/features/modal/modal-events.js.map +1 -1
  364. package/dist/v2/features/operation/Operation.vue.script.js +1 -1
  365. package/dist/v2/features/operation/Operation.vue.script.js.map +1 -1
  366. package/dist/v2/features/search/components/DocumentSearchModal.vue.d.ts.map +1 -1
  367. package/dist/v2/features/search/components/DocumentSearchModal.vue.js +1 -1
  368. package/dist/v2/features/search/components/DocumentSearchModal.vue.script.js +1 -1
  369. package/dist/v2/features/search/components/DocumentSearchModal.vue.script.js.map +1 -1
  370. package/dist/v2/features/search/components/SearchResult.vue.d.ts.map +1 -1
  371. package/dist/v2/features/search/components/SearchResult.vue.script.js +1 -1
  372. package/dist/v2/features/search/components/SearchResult.vue.script.js.map +1 -1
  373. package/dist/v2/features/search/helpers/create-fuse-instance.js.map +1 -1
  374. package/dist/v2/features/search/helpers/create-search-index.js.map +1 -1
  375. package/dist/v2/features/search/hooks/use-document-search.js.map +1 -1
  376. package/dist/v2/features/search/hooks/use-search-index.js.map +1 -1
  377. package/dist/v2/helpers/generate-location-id.js.map +1 -1
  378. package/dist/v2/helpers/handle-hotkeys.js +1 -1
  379. package/dist/v2/helpers/handle-hotkeys.js.map +1 -1
  380. package/dist/v2/helpers/test-utils.js.map +1 -1
  381. package/dist/v2/hooks/use-global-hot-keys.js.map +1 -1
  382. package/dist/v2/hooks/use-scroll-lock.js.map +1 -1
  383. package/dist/v2/workspace-events.js.map +1 -1
  384. package/dist/vue-styles.css +228 -235
  385. package/package.json +22 -22
package/CHANGELOG.md CHANGED
@@ -1,5 +1,60 @@
1
1
  # @scalar/api-client
2
2
 
3
+ ## 3.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#9836](https://github.com/scalar/scalar/pull/9836): Add a preset switcher for global cookies that share a name. Instead of rendering one row per value (where toggling one toggled them all), same-named `x-scalar-cookies` now collapse into a single row with a dropdown to switch between the predefined values — for example a `Culture` cookie with `PL` and `EN`. Only the selected value is sent, and the choice persists.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#9793](https://github.com/scalar/scalar/pull/9793): Expose `server` and `customFetch` in the ClientPlugin `beforeRequest` hook
12
+ payload (both optional, additive) so plugins can resolve relative URLs and run
13
+ network calls — e.g. a token refresh — through the host fetch without closing
14
+ over external state.
15
+ - [#9828](https://github.com/scalar/scalar/pull/9828): Bump shared build and runtime dependencies to their latest compatible versions
16
+ (fuse.js, vite, vitest, tailwindcss, @vitejs/plugin-vue, @vue/test-utils,
17
+ posthog-js, yaml, and the CSS injection plugin). The fuse.js 7.5.0 upgrade
18
+ tightened generic inference, so the empty `new Fuse([])` search instances now
19
+ pass an explicit `FuseData` type argument.
20
+ - [#9798](https://github.com/scalar/scalar/pull/9798): fix: header parameters with `x-disabled: false` (e.g. `x-scenario-id`) now stay enabled while editing
21
+
22
+ `RequestTableRow`'s `handleUpdateRow` unconditionally ran `isDisabled.value = payload.isDisabled ?? false`. When `CodeInputLite` fired `@update:modelValue` for the name or value field it called `handleUpdateRow({ name: v })` with no `isDisabled`, which reset the row to enabled on every keystroke and overrode the correct initial state read from `x-disabled`. It now only updates `isDisabled` when it is explicitly present in the payload.
23
+
24
+ - [#9804](https://github.com/scalar/scalar/pull/9804): Long file names in the multipart form no longer stretch the request table past its container. The name now truncates with an ellipsis, and hovering shows the full name.
25
+
26
+ ## 3.14.0
27
+
28
+ ### Minor Changes
29
+
30
+ - [#9709](https://github.com/scalar/scalar/pull/9709): Add an OAuth2 token-acquisition shortcut to HTTP bearer schemes, so a bearer
31
+ token can be obtained through an OAuth2 flow without switching auth methods.
32
+ - The bearer scheme's form gains an inline **Authorize via OAuth2** shortcut
33
+ (and, for authorization-code, **Refresh**) that runs the flow and writes the
34
+ resulting access token onto the bearer scheme — so the panel never switches
35
+ to oauth2 and the request sends `Authorization: Bearer`. A gear opens the
36
+ oauth2 configuration in a modal (`OAuth2.hideActions`).
37
+ - A new `getOauth2AcquisitionTarget` helper finds the oauth2 flow the shortcut
38
+ uses, preferring the authorization-code grant (which can refresh) over
39
+ implicit. Every defined security scheme, oauth2 included, stays selectable in
40
+ the auth dropdown — the shortcut is purely additive.
41
+ - `runOAuth2Authorize` + `storeOAuth2Tokens` route the access token to the
42
+ bearer scheme and the refresh token to the oauth2 scheme.
43
+
44
+ - [#9726](https://github.com/scalar/scalar/pull/9726): feat: add a switchable form view for JSON and YAML request bodies
45
+
46
+ When a request body's content type is JSON or YAML and its schema (or the current example) describes an object, a "Form / Raw" toggle now appears next to the content type selector. The form view renders one row per schema property — with enum dropdowns, required badges, defaults, and per-field validation, matching the existing `multipart/form-data` editor — and folds edits back into a nested object using the schema's declared types (numbers, booleans, arrays, and nested objects survive the round-trip instead of becoming strings). The raw code editor remains the default and is unaffected for non-object bodies or unparseable text.
47
+
48
+ `@scalar/workspace-store` gains reusable exports for this: `buildDottedNestedRowPredicate`, `coerceLeafValueToSchemaType`, `coerceUntypedValue`, and `resolveLeafSchema` from `@scalar/workspace-store/request-example`, factored out of the existing multipart request-body builder.
49
+
50
+ ### Patch Changes
51
+
52
+ - [#9697](https://github.com/scalar/scalar/pull/9697): Add credential input UIs for the AsyncAPI broker-specific security scheme types, which previously showed a "not supported yet" message in the Authentication selector. The SASL-style schemes (`userPassword`, `plain`, `scramSha256`, `scramSha512`) get a username + password form like HTTP basic, `X509` gets client certificate + private key (PEM) inputs, `symmetricEncryption`/`asymmetricEncryption` get a single key input, and `gssapi` gets a service name input. The entered credentials are persisted in the auth store with new type-specific secret shapes (`x-scalar-secret-client-certificate`, `x-scalar-secret-private-key`, `x-scalar-secret-service-name`, plus the existing username/password/token extensions) and round-trip through the merged scheme objects the same way as the OpenAPI types. The Galaxy AsyncAPI sample document now defines one scheme of each broker group so the inputs can be exercised.
53
+ - [#9723](https://github.com/scalar/scalar/pull/9723): Fix missing accessible names on request/scopes table checkboxes and their row delete buttons. `DataTableCheckbox` now accepts an `ariaLabel` prop, and `RequestTableRow`/`OAuthScopesInput` pass row-specific labels (e.g. "Include x-api-key in request", "Select read:users scope") so screen reader users can tell which row a control acts on.
54
+ - [#9595](https://github.com/scalar/scalar/pull/9595): Clicking an OAuth2 scope checkbox no longer toggles the scope twice. The click no longer bubbles to the surrounding row, which had its own toggle handler.
55
+ - [#9594](https://github.com/scalar/scalar/pull/9594): Fix OAuth2 scope checkboxes losing selections on quick clicks. Each scope is now toggled against the stored selection instead of a list computed in the component, so the "Scopes Selected" counter and the scopes sent to the token endpoint stay in sync with the checkboxes.
56
+ - [#9773](https://github.com/scalar/scalar/pull/9773): Allow using a client secret together with PKCE in the OAuth authorization code flow, so confidential clients can use both (as recommended by RFC 9700).
57
+
3
58
  ## 3.13.7
4
59
 
5
60
  ### Patch Changes
package/README.md CHANGED
@@ -17,7 +17,7 @@ Scalar is an open-source API platform for teams who want beautiful developer int
17
17
 
18
18
  - **[API References](https://scalar.com/products/api-references/getting-started)** — Interactive API documentation from OpenAPI and AsyncAPI specs.
19
19
  - **[Developer Docs](https://scalar.com/products/docs/getting-started)** — Write in Markdown/MDX, generate API references, sync with two-way Git.
20
- - **[SDK Generator](https://scalar.com/products/sdks/getting-started)** — Type-safe SDKs and CLIs in TypeScript, Python, Go, PHP, Java, and Ruby.
20
+ - **[SDK Generator](https://scalar.com/products/sdk-generator/getting-started)** — Type-safe SDKs and CLIs in TypeScript, Python, Go, PHP, Java, and Ruby.
21
21
  - **[API Client](https://scalar.com/products/api-client/getting-started)** — Open-source, offline-first Postman alternative built on OpenAPI.
22
22
 
23
23
  20M+ monthly npm installs · 15,500+ GitHub stars · MIT licensed · [scalar.com](https://scalar.com)
@@ -35,6 +35,7 @@ We have removed the old version of the clients so you must update your imports a
35
35
  - Real-time request/response logging
36
36
  - Customizable request headers and parameters
37
37
  - Response visualization and formatting options
38
+ - Switchable form/raw editor for JSON and YAML request bodies, driven by the OpenAPI schema (enum dropdowns, required fields, validation)
38
39
 
39
40
  ## Installation
40
41
 
@@ -1 +1 @@
1
- {"version":3,"file":"computer.ascii.virtual.js","names":[],"sources":["../../src/assets/computer.ascii?raw"],"sourcesContent":["export default \" .,,uod8B8bou,,.\\n ..,uod8BBBBBBBBBBBBBBBBRPFT?l!i:.\\n ||||||||||||||!?TFPRBBBBBBBBBBBBBBB8m=,\\n |||| '\\\"\\\"^^!!||||||||||TFPRBBBVT!:...!\\n |||| '\\\"\\\"^^!!|||||?!:.......!\\n |||| ||||.........!\\n |||| ||||.........!\\n |||| ||||.........!\\n |||| ||||.........!\\n |||| ||||.........!\\n |||| ||||.........!\\n ||||, ||||.........`\\n |||||!!-._ ||||.......;.\\n ':!|||||||||!!-._ ||||.....bBBBBWdou,.\\n bBBBBB86foi!|||||||!!-..:|||!..bBBBBBBBBBBBBBBY!\\n ::!?TFPRBBBBBB86foi!||||||||!!bBBBBBBBBBBBBBBY..!\\n :::::::::!?TFPRBBBBBB86ftiaabBBBBBBBBBBBBBBY....!\\n :::;`\\\"^!:;::::::!?TFPRBBBBBBBBBBBBBBBBBBBY......!\\n ;::::::...''^::::::::::!?TFPRBBBBBBBBBBY........!\\n .ob86foi;::::::::::::::::::::::::!?TFPRBY..........`\\n .b888888888886foi;:::::::::::::::::::::::..........`\\n .b888888888888888888886foi;::::::::::::::::..........\\n.b888888888888888888888888888886foi;:::::::::......`\\n!Tf998888888888888888888888888888888886foi;:::....`\\n '\\\"^!|Tf9988888888888888888888888888888888!::..`\\n '\\\"^!|Tf998888888888888888888888889!! '`\\n '\\\"^!|Tf9988888888888888888!!` iBBbo.\\n '\\\"^!|Tf998888888889!` WBBBBbo.\\n '\\\"^!|Tf9989!` YBBBP^'\\n '\\\"^!` `\\n\""],"mappings":";AAAA,IAAA,mBAAe"}
1
+ {"version":3,"file":"computer.ascii.virtual.js","names":[],"sources":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import { createElementBlock, defineComponent, openBlock, renderSlot } from "vue";
2
2
  //#region src/components/HelpfulLink.vue?vue&type=script&setup=true&lang.ts
3
3
  var _hoisted_1 = ["href"];
4
- var HelpfulLink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var HelpfulLink_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  __name: "HelpfulLink",
6
6
  props: { href: {} },
7
7
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"HelpfulLink.vue.script.js","names":[],"sources":["../../src/components/HelpfulLink.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ndefineProps<{ href: string }>()\n</script>\n<template>\n <a\n class=\"decoration-c-3 cursor-help underline underline-offset-2\"\n :href=\"href\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <slot />\n </a>\n</template>\n"],"mappings":";;;;;;;;uBAIE,mBAMI,KAAA;IALF,OAAM;IACL,MAAM,QAAA;IACP,KAAI;IACJ,QAAO;OACP,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA,WAAA"}
1
+ {"version":3,"file":"HelpfulLink.vue.script.js","names":[],"sources":["../../src/components/HelpfulLink.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ndefineProps<{ href: string }>()\n</script>\n<template>\n <a\n class=\"decoration-c-3 cursor-help underline underline-offset-2\"\n :href=\"href\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <slot />\n </a>\n</template>\n"],"mappings":";;;;;;;;uBAIE,mBAMI,KAAA;IALF,OAAM;IACL,MAAM,QAAA;IACP,KAAI;IACJ,QAAO;OACP,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,GAAA,UAAA"}
@@ -2,7 +2,7 @@ import HttpMethod_vue_vue_type_script_setup_true_lang_default from "./HttpMethod
2
2
  /* empty css */
3
3
  import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  //#region src/components/HttpMethod/HttpMethod.vue
5
- var HttpMethod_default = /* @__PURE__ */ _plugin_vue_export_helper_default(HttpMethod_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-86e2b3ea"]]);
5
+ var HttpMethod_default = /*#__PURE__*/ _plugin_vue_export_helper_default(HttpMethod_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-86e2b3ea"]]);
6
6
  //#endregion
7
7
  export { HttpMethod_default as default };
8
8
 
@@ -4,7 +4,7 @@ import { REQUEST_METHODS, getHttpMethodInfo } from "@scalar/helpers/http/http-in
4
4
  import { objectEntries } from "@scalar/helpers/object/object-entries";
5
5
  import { cva, cx } from "@scalar/use-hooks/useBindCx";
6
6
  //#region src/components/HttpMethod/HttpMethod.vue?vue&type=script&setup=true&lang.ts
7
- var HttpMethod_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ var HttpMethod_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  __name: "HttpMethod",
9
9
  props: {
10
10
  isSquare: {
@@ -1 +1 @@
1
- {"version":3,"file":"HttpMethod.vue.script.js","names":[],"sources":["../../../src/components/HttpMethod/HttpMethod.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarListbox } from '@scalar/components/listbox'\nimport {\n getHttpMethodInfo,\n REQUEST_METHODS,\n} from '@scalar/helpers/http/http-info'\nimport type { HttpMethod } from '@scalar/helpers/http/http-methods'\nimport { objectEntries } from '@scalar/helpers/object/object-entries'\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\nimport { computed } from 'vue'\n\nconst props = withDefaults(\n defineProps<{\n isSquare?: boolean\n method: string\n isEditable?: boolean\n }>(),\n { isSquare: false, isDisable: false, isEditable: false },\n)\n\nconst emit = defineEmits<{\n (e: 'change', value: HttpMethod): void\n}>()\n\nconst method = computed(() => getHttpMethodInfo(props.method))\nconst methodOptions = objectEntries(REQUEST_METHODS).map(([id]) => ({\n id,\n label: id.toUpperCase(),\n color: getHttpMethodInfo(id).colorClass,\n}))\nconst selectedMethod = computed({\n get: () => methodOptions.find(({ id }) => id === props.method),\n set: (opt) => opt?.id && emit('change', opt.id),\n})\n\nconst variants = cva({\n base: 'text-center font-code text-3xs justify-center items-center flex',\n variants: {\n isSquare: {\n true: 'px-2.5 whitespace-nowrap font-bold border-r h-fit m-auto',\n false: 'rounded-full',\n },\n isEditable: {\n true: 'http-bg-gradient rounded-md border',\n false: 'cursor-auto',\n },\n },\n})\n\nconst httpLabel = computed(() => method.value.short)\n</script>\n<template>\n <!-- Dropdown select -->\n <ScalarListbox\n v-if=\"isEditable\"\n v-model=\"selectedMethod\"\n class=\"font-code scalar-client mt-1 text-sm\"\n :options=\"methodOptions\">\n <div\n class=\"h-full\"\n :class=\"{ 'pointer-events-none': !isEditable }\">\n <button\n class=\"relative h-full\"\n :class=\"cx(variants({ isSquare, isEditable }), method.colorClass)\"\n type=\"button\">\n <span>{{ httpLabel }}</span>\n </button>\n </div>\n </ScalarListbox>\n <!-- Display only -->\n <div\n v-else\n class=\"relative gap-1 whitespace-nowrap\"\n :class=\"cx(variants({ isSquare, isEditable }), method.colorClass)\"\n type=\"button\">\n {{ method.short }}\n </div>\n</template>\n<style scoped>\n.http-bg-gradient {\n background: linear-gradient(rgba(255, 255, 255, 0.75), rgba(0, 0, 0, 0.035));\n}\n.http-bg-gradient:hover {\n background: linear-gradient(rgba(0, 0, 0, 0.035), rgba(255, 255, 255, 0.75));\n}\n.dark-mode .http-bg-gradient {\n background: linear-gradient(rgba(255, 255, 255, 0.035), rgba(0, 0, 0, 0.15));\n}\n.dark-mode .http-bg-gradient:hover {\n background: linear-gradient(rgba(0, 0, 0, 0.15), rgba(255, 255, 255, 0.035));\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EASd,MAAM,OAAO;EAIb,MAAM,SAAS,eAAe,kBAAkB,MAAM,OAAO,CAAA;EAC7D,MAAM,gBAAgB,cAAc,gBAAgB,CAAC,KAAK,CAAC,SAAS;GAClE;GACA,OAAO,GAAG,aAAa;GACvB,OAAO,kBAAkB,GAAG,CAAC;GAC9B,EAAC;EACF,MAAM,iBAAiB,SAAS;GAC9B,WAAW,cAAc,MAAM,EAAE,SAAS,OAAO,MAAM,OAAO;GAC9D,MAAM,QAAQ,KAAK,MAAM,KAAK,UAAU,IAAI,GAAG;GAChD,CAAA;EAED,MAAM,WAAW,IAAI;GACnB,MAAM;GACN,UAAU;IACR,UAAU;KACR,MAAM;KACN,OAAO;KACR;IACD,YAAY;KACV,MAAM;KACN,OAAO;KACR;IACF;GACF,CAAA;EAED,MAAM,YAAY,eAAe,OAAO,MAAM,MAAK;;UAKzC,QAAA,cAAA,WAAA,EADR,YAegB,MAAA,cAAA,EAAA;;gBAbL,eAAA;gFAAc,QAAA;IACvB,OAAM;IACL,SAAS,MAAA,cAAa;;2BAUjB,CATN,mBASM,OAAA,EARJ,OAAK,eAAA,CAAC,UAAQ,EAAA,uBAAA,CACoB,QAAA,YAAU,CAAA,CAAA,EAAA,EAAA,CAC5C,mBAKS,UAAA;KAJP,OAAK,eAAA,CAAC,mBACE,MAAA,GAAE,CAAC,MAAA,SAAQ,CAAA;MAAA,UAAG,QAAA;MAAQ,YAAE,QAAA;MAAU,CAAA,EAAK,OAAA,MAAO,WAAU,CAAA,CAAA;KAChE,MAAK;QACL,mBAA4B,QAAA,MAAA,gBAAnB,UAAA,MAAS,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;qDAKxB,mBAMM,OAAA;;IAJJ,OAAK,eAAA,CAAC,oCACE,MAAA,GAAE,CAAC,MAAA,SAAQ,CAAA;KAAA,UAAG,QAAA;KAAQ,YAAE,QAAA;KAAU,CAAA,EAAK,OAAA,MAAO,WAAU,CAAA,CAAA;IAChE,MAAK;sBACF,OAAA,MAAO,MAAK,EAAA,EAAA"}
1
+ {"version":3,"file":"HttpMethod.vue.script.js","names":[],"sources":["../../../src/components/HttpMethod/HttpMethod.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarListbox } from '@scalar/components/listbox'\nimport {\n getHttpMethodInfo,\n REQUEST_METHODS,\n} from '@scalar/helpers/http/http-info'\nimport type { HttpMethod } from '@scalar/helpers/http/http-methods'\nimport { objectEntries } from '@scalar/helpers/object/object-entries'\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\nimport { computed } from 'vue'\n\nconst props = withDefaults(\n defineProps<{\n isSquare?: boolean\n method: string\n isEditable?: boolean\n }>(),\n { isSquare: false, isDisable: false, isEditable: false },\n)\n\nconst emit = defineEmits<{\n (e: 'change', value: HttpMethod): void\n}>()\n\nconst method = computed(() => getHttpMethodInfo(props.method))\nconst methodOptions = objectEntries(REQUEST_METHODS).map(([id]) => ({\n id,\n label: id.toUpperCase(),\n color: getHttpMethodInfo(id).colorClass,\n}))\nconst selectedMethod = computed({\n get: () => methodOptions.find(({ id }) => id === props.method),\n set: (opt) => opt?.id && emit('change', opt.id),\n})\n\nconst variants = cva({\n base: 'text-center font-code text-3xs justify-center items-center flex',\n variants: {\n isSquare: {\n true: 'px-2.5 whitespace-nowrap font-bold border-r h-fit m-auto',\n false: 'rounded-full',\n },\n isEditable: {\n true: 'http-bg-gradient rounded-md border',\n false: 'cursor-auto',\n },\n },\n})\n\nconst httpLabel = computed(() => method.value.short)\n</script>\n<template>\n <!-- Dropdown select -->\n <ScalarListbox\n v-if=\"isEditable\"\n v-model=\"selectedMethod\"\n class=\"font-code scalar-client mt-1 text-sm\"\n :options=\"methodOptions\">\n <div\n class=\"h-full\"\n :class=\"{ 'pointer-events-none': !isEditable }\">\n <button\n class=\"relative h-full\"\n :class=\"cx(variants({ isSquare, isEditable }), method.colorClass)\"\n type=\"button\">\n <span>{{ httpLabel }}</span>\n </button>\n </div>\n </ScalarListbox>\n <!-- Display only -->\n <div\n v-else\n class=\"relative gap-1 whitespace-nowrap\"\n :class=\"cx(variants({ isSquare, isEditable }), method.colorClass)\"\n type=\"button\">\n {{ method.short }}\n </div>\n</template>\n<style scoped>\n.http-bg-gradient {\n background: linear-gradient(rgba(255, 255, 255, 0.75), rgba(0, 0, 0, 0.035));\n}\n.http-bg-gradient:hover {\n background: linear-gradient(rgba(0, 0, 0, 0.035), rgba(255, 255, 255, 0.75));\n}\n.dark-mode .http-bg-gradient {\n background: linear-gradient(rgba(255, 255, 255, 0.035), rgba(0, 0, 0, 0.15));\n}\n.dark-mode .http-bg-gradient:hover {\n background: linear-gradient(rgba(0, 0, 0, 0.15), rgba(255, 255, 255, 0.035));\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EASd,MAAM,OAAO;EAIb,MAAM,SAAS,eAAe,kBAAkB,MAAM,MAAM,CAAC;EAC7D,MAAM,gBAAgB,cAAc,eAAe,CAAC,CAAC,KAAK,CAAC,SAAS;GAClE;GACA,OAAO,GAAG,YAAY;GACtB,OAAO,kBAAkB,EAAE,CAAC,CAAC;EAC/B,EAAE;EACF,MAAM,iBAAiB,SAAS;GAC9B,WAAW,cAAc,MAAM,EAAE,SAAS,OAAO,MAAM,MAAM;GAC7D,MAAM,QAAQ,KAAK,MAAM,KAAK,UAAU,IAAI,EAAE;EAChD,CAAC;EAED,MAAM,WAAW,IAAI;GACnB,MAAM;GACN,UAAU;IACR,UAAU;KACR,MAAM;KACN,OAAO;IACT;IACA,YAAY;KACV,MAAM;KACN,OAAO;IACT;GACF;EACF,CAAC;EAED,MAAM,YAAY,eAAe,OAAO,MAAM,KAAK;;UAKzC,QAAA,cAAA,UAAA,GADR,YAegB,MAAA,aAAA,GAAA;;gBAbL,eAAA;gFAAc,QAAA;IACvB,OAAM;IACL,SAAS,MAAA,aAAA;;2BAUJ,CATN,mBASM,OAAA,EARJ,OAAK,eAAA,CAAC,UAAQ,EAAA,uBAAA,CACoB,QAAA,WAAU,CAAA,CAAA,EAAA,GAAA,CAC5C,mBAKS,UAAA;KAJP,OAAK,eAAA,CAAC,mBACE,MAAA,EAAA,CAAE,CAAC,MAAA,QAAA,CAAQ,CAAA;MAAA,UAAG,QAAA;MAAQ,YAAE,QAAA;KAAU,CAAA,GAAK,OAAA,MAAO,UAAU,CAAA,CAAA;KAChE,MAAK;QACL,mBAA4B,QAAA,MAAA,gBAAnB,UAAA,KAAS,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;qDAKxB,mBAMM,OAAA;;IAJJ,OAAK,eAAA,CAAC,oCACE,MAAA,EAAA,CAAE,CAAC,MAAA,QAAA,CAAQ,CAAA;KAAA,UAAG,QAAA;KAAQ,YAAE,QAAA;IAAU,CAAA,GAAK,OAAA,MAAO,UAAU,CAAA,CAAA;IAChE,MAAK;sBACF,OAAA,MAAO,KAAK,GAAA,CAAA"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import ScalarAsciiArt_vue_vue_type_script_setup_true_lang_default from "./ScalarAsciiArt.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/ScalarAsciiArt/ScalarAsciiArt.vue
5
- var ScalarAsciiArt_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ScalarAsciiArt_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9a695e58"]]);
5
+ var ScalarAsciiArt_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ScalarAsciiArt_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9a695e58"]]);
6
6
  //#endregion
7
7
  export { ScalarAsciiArt_default as default };
8
8
 
@@ -2,7 +2,7 @@ import { Fragment, computed, createElementBlock, createElementVNode, defineCompo
2
2
  //#region src/components/ScalarAsciiArt/ScalarAsciiArt.vue?vue&type=script&setup=true&lang.ts
3
3
  var BLINK = 500;
4
4
  var PRINT = 100;
5
- var ScalarAsciiArt_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var ScalarAsciiArt_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  __name: "ScalarAsciiArt",
7
7
  props: {
8
8
  art: {},
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarAsciiArt.vue.script.js","names":[],"sources":["../../../src/components/ScalarAsciiArt/ScalarAsciiArt.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, type StyleValue } from 'vue'\n\nconst props = defineProps<{ art: string; animate?: boolean }>()\n\nconst BLINK = 500 // ms - Cursor blink speed\nconst PRINT = 100 // ms - Text print speed\n\nconst lines = computed<string[]>(() => props.art.split('\\n'))\n\nconst getLineAnimation = (chars: number, row: number): StyleValue => ({\n animationDuration: `${chars * PRINT}ms, ${BLINK}ms`,\n animationTimingFunction: `steps(${chars}), step-end`,\n animationDelay: `${row * PRINT}ms, 0ms`,\n animationIterationCount: `1, ${(((lines.value?.length ?? 0) + (lines.value?.[lines.value?.length - 1]?.length ?? 0) + 5) * PRINT) / BLINK}`,\n})\n</script>\n<template>\n <div\n aria-hidden=\"true\"\n class=\"ascii-art font-code flex flex-col items-start text-[6px] leading-[7px]\"\n :class=\"{ 'ascii-art-animate': animate }\"\n role=\"presentation\"\n inert>\n <span\n v-for=\"(line, i) in lines\"\n :key=\"i\"\n class=\"inline-block\"\n :style=\"{ width: `calc(${line.length + 1}ch)` }\">\n <!-- prettier-ignore -->\n <span\nclass=\"inline-block whitespace-pre overflow-hidden\"\n:style=\"getLineAnimation(line.length, i)\">{{\n line\n }}</span>\n </span>\n </div>\n</template>\n<style scoped>\n.ascii-art-animate .ascii-art-line {\n border-right: 1ch solid transparent;\n animation:\n typewriter 4s steps(1) 1s 1 normal both,\n blinkTextCursor 500ms steps(1) infinite normal;\n}\n\n@keyframes typewriter {\n from {\n width: 0;\n }\n to {\n width: 100%;\n }\n}\n@keyframes blinkTextCursor {\n 0% {\n border-right-color: currentColor;\n }\n 50% {\n border-right-color: transparent;\n }\n}\n</style>\n"],"mappings":";;AAKA,IAAM,QAAQ;AACd,IAAM,QAAQ;;;;;;;;EAHd,MAAM,QAAQ;EAKd,MAAM,QAAQ,eAAyB,MAAM,IAAI,MAAM,KAAK,CAAA;EAE5D,MAAM,oBAAoB,OAAe,SAA6B;GACpE,mBAAmB,GAAG,QAAQ,MAAM,MAAM,MAAM;GAChD,yBAAyB,SAAS,MAAM;GACxC,gBAAgB,GAAG,MAAM,MAAM;GAC/B,yBAAyB,QAAS,MAAM,OAAO,UAAU,MAAM,MAAM,QAAQ,MAAM,OAAO,SAAS,IAAI,UAAU,KAAK,KAAK,QAAS;GACrI;;uBAGC,mBAkBM,OAAA;IAjBJ,eAAY;IACZ,OAAK,eAAA,CAAC,0EAAwE,EAAA,qBAC/C,QAAA,SAAO,CAAA,CAAA;IACtC,MAAK;IACL,OAAA;yBACA,mBAWO,UAAA,MAAA,WAVe,MAAA,QAAZ,MAAM,MAAC;wBADjB,mBAWO,QAAA;KATJ,KAAK;KACN,OAAM;KACL,OAAK,eAAA,EAAA,OAAA,QAAmB,KAAK,SAAM,EAAA,MAAA,CAAA;QAEpC,mBAIS,QAAA;KAHf,OAAM;KACL,OAAK,eAAE,iBAAiB,KAAK,QAAQ,EAAC,CAAA;uBAChC,KAAI,EAAA,EAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"ScalarAsciiArt.vue.script.js","names":[],"sources":["../../../src/components/ScalarAsciiArt/ScalarAsciiArt.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, type StyleValue } from 'vue'\n\nconst props = defineProps<{ art: string; animate?: boolean }>()\n\nconst BLINK = 500 // ms - Cursor blink speed\nconst PRINT = 100 // ms - Text print speed\n\nconst lines = computed<string[]>(() => props.art.split('\\n'))\n\nconst getLineAnimation = (chars: number, row: number): StyleValue => ({\n animationDuration: `${chars * PRINT}ms, ${BLINK}ms`,\n animationTimingFunction: `steps(${chars}), step-end`,\n animationDelay: `${row * PRINT}ms, 0ms`,\n animationIterationCount: `1, ${(((lines.value?.length ?? 0) + (lines.value?.[lines.value?.length - 1]?.length ?? 0) + 5) * PRINT) / BLINK}`,\n})\n</script>\n<template>\n <div\n aria-hidden=\"true\"\n class=\"ascii-art font-code flex flex-col items-start text-[6px] leading-[7px]\"\n :class=\"{ 'ascii-art-animate': animate }\"\n role=\"presentation\"\n inert>\n <span\n v-for=\"(line, i) in lines\"\n :key=\"i\"\n class=\"inline-block\"\n :style=\"{ width: `calc(${line.length + 1}ch)` }\">\n <!-- prettier-ignore -->\n <span\nclass=\"inline-block whitespace-pre overflow-hidden\"\n:style=\"getLineAnimation(line.length, i)\">{{\n line\n }}</span>\n </span>\n </div>\n</template>\n<style scoped>\n.ascii-art-animate .ascii-art-line {\n border-right: 1ch solid transparent;\n animation:\n typewriter 4s steps(1) 1s 1 normal both,\n blinkTextCursor 500ms steps(1) infinite normal;\n}\n\n@keyframes typewriter {\n from {\n width: 0;\n }\n to {\n width: 100%;\n }\n}\n@keyframes blinkTextCursor {\n 0% {\n border-right-color: currentColor;\n }\n 50% {\n border-right-color: transparent;\n }\n}\n</style>\n"],"mappings":";;AAKA,IAAM,QAAQ;AACd,IAAM,QAAQ;;;;;;;;EAHd,MAAM,QAAQ;EAKd,MAAM,QAAQ,eAAyB,MAAM,IAAI,MAAM,IAAI,CAAC;EAE5D,MAAM,oBAAoB,OAAe,SAA6B;GACpE,mBAAmB,GAAG,QAAQ,MAAM,MAAM,MAAM;GAChD,yBAAyB,SAAS,MAAM;GACxC,gBAAgB,GAAG,MAAM,MAAM;GAC/B,yBAAyB,QAAS,MAAM,OAAO,UAAU,MAAM,MAAM,QAAQ,MAAM,OAAO,SAAS,EAAE,EAAE,UAAU,KAAK,KAAK,QAAS;EACtI;;uBAGE,mBAkBM,OAAA;IAjBJ,eAAY;IACZ,OAAK,eAAA,CAAC,0EAAwE,EAAA,qBAC/C,QAAA,QAAO,CAAA,CAAA;IACtC,MAAK;IACL,OAAA;yBACA,mBAWO,UAAA,MAAA,WAVe,MAAA,QAAZ,MAAM,MAAC;wBADjB,mBAWO,QAAA;KATJ,KAAK;KACN,OAAM;KACL,OAAK,eAAA,EAAA,OAAA,QAAmB,KAAK,SAAM,EAAA,KAAA,CAAA;QAEpC,mBAIS,QAAA;KAHf,OAAM;KACL,OAAK,eAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAA;uBAChC,IAAI,GAAA,CAAA,CAAA,GAAA,CAAA"}
@@ -14,7 +14,7 @@ declare const __VLS_export: <T extends string>(__VLS_props: NonNullable<Awaited<
14
14
  slots: {};
15
15
  emit: (event: "update:modelValue", value: T | undefined) => void;
16
16
  }>) => import("vue").VNode & {
17
- __ctx?: Awaited<typeof __VLS_setup>;
17
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
18
18
  };
19
19
  declare const _default: typeof __VLS_export;
20
20
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"SectionFilter.vue.d.ts","sourceRoot":"","sources":["../../src/components/SectionFilter.vue"],"names":[],"mappings":"AAuKA,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS,MAAM,EACtC,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAgNO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;kBA9M5C,CAAC,EAAE;oBACD,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;;qBAkClB,CAAC;;;KA2K6E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;WACH,EAAE;;EAGN,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAI,CAAC;wBACvD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"SectionFilter.vue.d.ts","sourceRoot":"","sources":["../../src/components/SectionFilter.vue"],"names":[],"mappings":"AAuKA,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS,MAAM,EACtC,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAiNO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;kBA/M5C,CAAC,EAAE;oBACD,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;;qBAkClB,CAAC;;;KA4K6E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;WACH,EAAE;;EAGN,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;wBACpE,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
2
2
  import SectionFilter_vue_vue_type_script_setup_true_lang_default from "./SectionFilter.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/SectionFilter.vue
5
- var SectionFilter_default = /* @__PURE__ */ _plugin_vue_export_helper_default(SectionFilter_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-07ff8fc3"]]);
5
+ var SectionFilter_default = /*#__PURE__*/ _plugin_vue_export_helper_default(SectionFilter_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-07ff8fc3"]]);
6
6
  //#endregion
7
7
  export { SectionFilter_default as default };
8
8
 
@@ -5,9 +5,9 @@ import { ScalarIcon } from "@scalar/components/icon";
5
5
  var _hoisted_1 = { class: "request-section-content request-section-content-filter fade-request-section-content text-c-3 pointer-events-auto relative hidden w-full justify-end gap-[1.5px] rounded py-1.75 text-xs xl:flex" };
6
6
  var _hoisted_2 = { class: "filter-button context-bar-group-hover:text-c-1 absolute -right-[30px] flex items-center" };
7
7
  var _hoisted_3 = { class: "context-bar-group-hover:hidden mr-1.5" };
8
- var SectionFilter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var SectionFilter_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
9
  __name: "SectionFilter",
10
- props: /* @__PURE__ */ mergeModels({
10
+ props: /*@__PURE__*/ mergeModels({
11
11
  filters: { default: () => [] },
12
12
  filterIds: {}
13
13
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"SectionFilter.vue.script.js","names":[],"sources":["../../src/components/SectionFilter.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends string\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { nextTick, ref } from 'vue'\n\nimport SectionFilterButton from '@/components/SectionFilterButton.vue'\n\nconst { filters = [], filterIds } = defineProps<{\n filters?: T[]\n filterIds?: Record<T, string>\n}>()\n\nconst model = defineModel<T>()\n\nconst tablist = ref<HTMLDivElement>()\n\n/** Keyboard navigation */\nconst navigateSection = (direction: 'next' | 'prev') => {\n const offset = direction === 'prev' ? -1 : 1\n const index = model.value ? filters.indexOf(model.value) : 0\n const length = filters.length\n\n // Ensures we loop around the array by using the remainder\n const newIndex = (index + offset + length) % length\n model.value = filters[newIndex]\n\n // Focus the selected button\n nextTick(() => {\n if (tablist.value) {\n const selectedButton = tablist.value.querySelector(\n `button[aria-selected=\"true\"]`,\n ) satisfies HTMLButtonElement | null\n if (selectedButton) {\n selectedButton.focus()\n }\n }\n })\n}\n</script>\n<template>\n <div\n ref=\"tablist\"\n class=\"filter-hover context-bar-group ml-auto hidden lg:flex\"\n role=\"tablist\"\n @keydown.left=\"navigateSection('prev')\"\n @keydown.right=\"navigateSection('next')\">\n <div\n class=\"request-section-content request-section-content-filter fade-request-section-content text-c-3 pointer-events-auto relative hidden w-full justify-end gap-[1.5px] rounded py-1.75 text-xs xl:flex\">\n <SectionFilterButton\n v-for=\"filter in filters\"\n :key=\"filter\"\n class=\"filter-hover-item\"\n :controls=\"filterIds?.[filter]\"\n role=\"tab\"\n :selected=\"model === filter\"\n @click=\"model = filter\">\n {{ filter }}\n </SectionFilterButton>\n <div\n class=\"filter-button context-bar-group-hover:text-c-1 absolute -right-[30px] flex items-center\">\n <span class=\"context-bar-group-hover:hidden mr-1.5\">{{ model }}</span>\n <ScalarIcon\n icon=\"FilterList\"\n size=\"md\"\n thickness=\"2\" />\n </div>\n </div>\n </div>\n</template>\n<style scoped>\n.fade-request-section-content {\n background: linear-gradient(\n to left,\n var(--scalar-background-1) 64%,\n transparent\n );\n}\n.filter-hover {\n height: 100%;\n padding-right: 39px;\n padding-left: 24px;\n position: absolute;\n right: 0;\n transition: width 0s ease-in-out 0.2s;\n overflow: hidden;\n}\n.filter-hover:hover,\n.filter-hover:has(:focus-visible) {\n width: 100%;\n z-index: 10;\n}\n.filter-hover:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: fit-content;\n background-color: var(--scalar-background-1);\n opacity: 0;\n transition: all 0.3s ease-in-out;\n pointer-events: none;\n}\n.filter-hover-item {\n opacity: 0;\n}\n.filter-hover-item:not(:last-of-type) {\n transform: translate3d(0, 3px, 0);\n}\n.filter-hover:hover .filter-hover-item {\n transition:\n opacity 0.2s ease-in-out,\n transform 0.2s ease-in-out;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(1) {\n transition-delay: 0.05s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(2) {\n transition-delay: 0.1s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(3) {\n transition-delay: 0.15s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(4) {\n transition-delay: 0.2s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(5) {\n transition-delay: 0.25s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(6) {\n transition-delay: 0.3s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(7) {\n transition-delay: 0.35s;\n}\n.filter-hover:hover .filter-hover-item,\n.filter-hover:has(:focus-visible) .filter-hover-item {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n}\n.filter-hover:hover:before,\n.filter-hover:has(:focus-visible):before {\n opacity: 0.9;\n backdrop-filter: blur(10px);\n}\n.filter-button {\n top: 50%;\n transform: translateY(-50%);\n}\n.context-bar-group:hover .context-bar-group-hover\\:text-c-1,\n.context-bar-group:has(:focus-visible) .context-bar-group-hover\\:text-c-1 {\n --tw-text-opacity: 1;\n color: rgb(var(--scalar-color-1) / var(--tw-text-opacity));\n}\n\n.context-bar-group:hover .context-bar-group-hover\\:hidden,\n.context-bar-group:has(:focus-visible) .context-bar-group-hover\\:hidden {\n display: none;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ,SAAc,SAAA,aAAC;EAE7B,MAAM,UAAU,KAAoB;;EAGpC,MAAM,mBAAmB,cAA+B;GACtD,MAAM,SAAS,cAAc,SAAS,KAAK;GAC3C,MAAM,QAAQ,MAAM,QAAQ,QAAA,QAAQ,QAAQ,MAAM,MAAM,GAAG;GAC3D,MAAM,SAAS,QAAA,QAAQ;GAGvB,MAAM,YAAY,QAAQ,SAAS,UAAU;AAC7C,SAAM,QAAQ,QAAA,QAAQ;AAGtB,kBAAe;AACb,QAAI,QAAQ,OAAO;KACjB,MAAM,iBAAiB,QAAQ,MAAM,cACnC,+BACD;AACD,SAAI,eACF,gBAAe,OAAM;;KAG1B;;;uBAID,mBA2BM,OAAA;aA1BA;IAAJ,KAAI;IACJ,OAAM;IACN,MAAK;IACJ,WAAO,CAAA,OAAA,OAAA,OAAA,KAAA,UAAA,WAAO,gBAAe,OAAA,EAAA,CAAA,OAAA,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,UAAA,WACd,gBAAe,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA;OAC/B,mBAoBM,OApBN,YAoBM,EAAA,UAAA,KAAA,EAlBJ,mBASsB,UAAA,MAAA,WARH,QAAA,UAAV,WAAM;wBADf,YASsB,6BAAA;KAPnB,KAAK;KACN,OAAM;KACL,UAAU,QAAA,YAAY;KACvB,MAAK;KACJ,UAAU,MAAA,UAAU;KACpB,UAAK,WAAE,MAAA,QAAQ;;4BACJ,CAAA,gBAAA,gBAAT,OAAM,EAAA,EAAA,CAAA,CAAA;;;;;;;cAEX,mBAOM,OAPN,YAOM,CALJ,mBAAsE,QAAtE,YAAsE,gBAAf,MAAA,MAAK,EAAA,EAAA,EAC5D,YAGkB,MAAA,WAAA,EAAA;IAFhB,MAAK;IACL,MAAK;IACL,WAAU"}
1
+ {"version":3,"file":"SectionFilter.vue.script.js","names":[],"sources":["../../src/components/SectionFilter.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends string\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { nextTick, ref } from 'vue'\n\nimport SectionFilterButton from '@/components/SectionFilterButton.vue'\n\nconst { filters = [], filterIds } = defineProps<{\n filters?: T[]\n filterIds?: Record<T, string>\n}>()\n\nconst model = defineModel<T>()\n\nconst tablist = ref<HTMLDivElement>()\n\n/** Keyboard navigation */\nconst navigateSection = (direction: 'next' | 'prev') => {\n const offset = direction === 'prev' ? -1 : 1\n const index = model.value ? filters.indexOf(model.value) : 0\n const length = filters.length\n\n // Ensures we loop around the array by using the remainder\n const newIndex = (index + offset + length) % length\n model.value = filters[newIndex]\n\n // Focus the selected button\n nextTick(() => {\n if (tablist.value) {\n const selectedButton = tablist.value.querySelector(\n `button[aria-selected=\"true\"]`,\n ) satisfies HTMLButtonElement | null\n if (selectedButton) {\n selectedButton.focus()\n }\n }\n })\n}\n</script>\n<template>\n <div\n ref=\"tablist\"\n class=\"filter-hover context-bar-group ml-auto hidden lg:flex\"\n role=\"tablist\"\n @keydown.left=\"navigateSection('prev')\"\n @keydown.right=\"navigateSection('next')\">\n <div\n class=\"request-section-content request-section-content-filter fade-request-section-content text-c-3 pointer-events-auto relative hidden w-full justify-end gap-[1.5px] rounded py-1.75 text-xs xl:flex\">\n <SectionFilterButton\n v-for=\"filter in filters\"\n :key=\"filter\"\n class=\"filter-hover-item\"\n :controls=\"filterIds?.[filter]\"\n role=\"tab\"\n :selected=\"model === filter\"\n @click=\"model = filter\">\n {{ filter }}\n </SectionFilterButton>\n <div\n class=\"filter-button context-bar-group-hover:text-c-1 absolute -right-[30px] flex items-center\">\n <span class=\"context-bar-group-hover:hidden mr-1.5\">{{ model }}</span>\n <ScalarIcon\n icon=\"FilterList\"\n size=\"md\"\n thickness=\"2\" />\n </div>\n </div>\n </div>\n</template>\n<style scoped>\n.fade-request-section-content {\n background: linear-gradient(\n to left,\n var(--scalar-background-1) 64%,\n transparent\n );\n}\n.filter-hover {\n height: 100%;\n padding-right: 39px;\n padding-left: 24px;\n position: absolute;\n right: 0;\n transition: width 0s ease-in-out 0.2s;\n overflow: hidden;\n}\n.filter-hover:hover,\n.filter-hover:has(:focus-visible) {\n width: 100%;\n z-index: 10;\n}\n.filter-hover:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: fit-content;\n background-color: var(--scalar-background-1);\n opacity: 0;\n transition: all 0.3s ease-in-out;\n pointer-events: none;\n}\n.filter-hover-item {\n opacity: 0;\n}\n.filter-hover-item:not(:last-of-type) {\n transform: translate3d(0, 3px, 0);\n}\n.filter-hover:hover .filter-hover-item {\n transition:\n opacity 0.2s ease-in-out,\n transform 0.2s ease-in-out;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(1) {\n transition-delay: 0.05s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(2) {\n transition-delay: 0.1s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(3) {\n transition-delay: 0.15s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(4) {\n transition-delay: 0.2s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(5) {\n transition-delay: 0.25s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(6) {\n transition-delay: 0.3s;\n}\n.filter-hover:hover .filter-hover-item:nth-last-of-type(7) {\n transition-delay: 0.35s;\n}\n.filter-hover:hover .filter-hover-item,\n.filter-hover:has(:focus-visible) .filter-hover-item {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n}\n.filter-hover:hover:before,\n.filter-hover:has(:focus-visible):before {\n opacity: 0.9;\n backdrop-filter: blur(10px);\n}\n.filter-button {\n top: 50%;\n transform: translateY(-50%);\n}\n.context-bar-group:hover .context-bar-group-hover\\:text-c-1,\n.context-bar-group:has(:focus-visible) .context-bar-group-hover\\:text-c-1 {\n --tw-text-opacity: 1;\n color: rgb(var(--scalar-color-1) / var(--tw-text-opacity));\n}\n\n.context-bar-group:hover .context-bar-group-hover\\:hidden,\n.context-bar-group:has(:focus-visible) .context-bar-group-hover\\:hidden {\n display: none;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ,SAAc,SAAA,YAAC;EAE7B,MAAM,UAAU,IAAoB;;EAGpC,MAAM,mBAAmB,cAA+B;GACtD,MAAM,SAAS,cAAc,SAAS,KAAK;GAC3C,MAAM,QAAQ,MAAM,QAAQ,QAAA,QAAQ,QAAQ,MAAM,KAAK,IAAI;GAC3D,MAAM,SAAS,QAAA,QAAQ;GAGvB,MAAM,YAAY,QAAQ,SAAS,UAAU;GAC7C,MAAM,QAAQ,QAAA,QAAQ;GAGtB,eAAe;IACb,IAAI,QAAQ,OAAO;KACjB,MAAM,iBAAiB,QAAQ,MAAM,cACnC,8BACF;KACA,IAAI,gBACF,eAAe,MAAM;IAEzB;GACF,CAAC;EACH;;uBAGE,mBA2BM,OAAA;aA1BA;IAAJ,KAAI;IACJ,OAAM;IACN,MAAK;IACJ,WAAO,CAAA,OAAA,OAAA,OAAA,KAAA,UAAA,WAAO,gBAAe,MAAA,GAAA,CAAA,MAAA,CAAA,IAAA,OAAA,OAAA,OAAA,KAAA,UAAA,WACd,gBAAe,MAAA,GAAA,CAAA,OAAA,CAAA,EAAA;OAC/B,mBAoBM,OApBN,YAoBM,EAAA,UAAA,IAAA,GAlBJ,mBASsB,UAAA,MAAA,WARH,QAAA,UAAV,WAAM;wBADf,YASsB,6BAAA;KAPnB,KAAK;KACN,OAAM;KACL,UAAU,QAAA,YAAY;KACvB,MAAK;KACJ,UAAU,MAAA,UAAU;KACpB,UAAK,WAAE,MAAA,QAAQ;;4BACJ,CAAA,gBAAA,gBAAT,MAAM,GAAA,CAAA,CAAA,CAAA;;;;;;;cAEX,mBAOM,OAPN,YAOM,CALJ,mBAAsE,QAAtE,YAAsE,gBAAf,MAAA,KAAK,GAAA,CAAA,GAC5D,YAGkB,MAAA,UAAA,GAAA;IAFhB,MAAK;IACL,MAAK;IACL,WAAU"}
@@ -5,7 +5,7 @@ var _hoisted_1 = [
5
5
  "aria-selected",
6
6
  "tabindex"
7
7
  ];
8
- var SectionFilterButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var SectionFilterButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
9
  __name: "SectionFilterButton",
10
10
  props: {
11
11
  selected: { type: Boolean },
@@ -1 +1 @@
1
- {"version":3,"file":"SectionFilterButton.vue.script.js","names":[],"sources":["../../src/components/SectionFilterButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nconst { selected, controls } = defineProps<{\n selected?: boolean\n controls?: string | undefined\n}>()\n</script>\n<template>\n <button\n :aria-controls=\"controls ?? ''\"\n :aria-selected=\"!!selected\"\n class=\"hover:bg-b-2 flex w-fit cursor-pointer items-center rounded p-1 px-2 text-center font-medium whitespace-nowrap has-[:focus-visible]:outline\"\n :class=\"{ 'text-c-1 pointer-events-none': selected }\"\n role=\"tab\"\n :tabindex=\"selected ? 0 : -1\"\n type=\"button\">\n <slot />\n </button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;uBAOE,mBASS,UAAA;IARN,iBAAe,QAAA,YAAQ;IACvB,iBAAa,CAAA,CAAI,QAAA;IAClB,OAAK,eAAA,CAAC,+IAA6I,EAAA,gCACzG,QAAA,UAAQ,CAAA,CAAA;IAClD,MAAK;IACJ,UAAU,QAAA,WAAQ,IAAA;IACnB,MAAK;OACL,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA"}
1
+ {"version":3,"file":"SectionFilterButton.vue.script.js","names":[],"sources":["../../src/components/SectionFilterButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nconst { selected, controls } = defineProps<{\n selected?: boolean\n controls?: string | undefined\n}>()\n</script>\n<template>\n <button\n :aria-controls=\"controls ?? ''\"\n :aria-selected=\"!!selected\"\n class=\"hover:bg-b-2 flex w-fit cursor-pointer items-center rounded p-1 px-2 text-center font-medium whitespace-nowrap has-[:focus-visible]:outline\"\n :class=\"{ 'text-c-1 pointer-events-none': selected }\"\n role=\"tab\"\n :tabindex=\"selected ? 0 : -1\"\n type=\"button\">\n <slot />\n </button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;uBAOE,mBASS,UAAA;IARN,iBAAe,QAAA,YAAQ;IACvB,iBAAa,CAAA,CAAI,QAAA;IAClB,OAAK,eAAA,CAAC,+IAA6I,EAAA,gCACzG,QAAA,SAAQ,CAAA,CAAA;IAClD,MAAK;IACJ,UAAU,QAAA,WAAQ,IAAA;IACnB,MAAK;OACL,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ServerVariablesForm.vue.d.ts","sourceRoot":"","sources":["../../../src/components/Server/ServerVariablesForm.vue"],"names":[],"mappings":"AA+EA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACrB,MAAM,2BAA2B,CAAA;AAElC,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACvC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;CAChC,CAAC;AAyHF,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"ServerVariablesForm.vue.d.ts","sourceRoot":"","sources":["../../../src/components/Server/ServerVariablesForm.vue"],"names":[],"mappings":"AA+EA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACrB,MAAM,2BAA2B,CAAA;AAElC,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACvC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;CAChC,CAAC;AA6HF,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -3,7 +3,7 @@ import ServerVariablesTextbox_default from "./ServerVariablesTextbox.vue.js";
3
3
  import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, renderList, toDisplayString, unref, useId } from "vue";
4
4
  //#region src/components/Server/ServerVariablesForm.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["for"];
6
- var ServerVariablesForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ var ServerVariablesForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
7
  __name: "ServerVariablesForm",
8
8
  props: {
9
9
  variables: {},
@@ -1 +1 @@
1
- {"version":3,"file":"ServerVariablesForm.vue.script.js","names":[],"sources":["../../../src/components/Server/ServerVariablesForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useId } from 'vue'\n\nimport ServerVariablesSelect from '@/components/Server/ServerVariablesSelect.vue'\nimport ServerVariablesTextbox from '@/components/Server/ServerVariablesTextbox.vue'\nimport type {\n ServerVariables,\n ServerVariableValues,\n} from '@/components/Server/types'\n\nconst {\n values,\n variables,\n layout = 'client',\n} = defineProps<{\n variables?: ServerVariables | undefined\n values?: ServerVariableValues\n /** The ID of the input controlled by the variables form */\n controls?: string\n /** The layout of the server variables form */\n layout?: 'client' | 'reference'\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:variable', name: string, value: string): void\n}>()\n\nconst id = useId()\n\nfunction setVariable(name: string, value: string) {\n emit('update:variable', name, value)\n}\n\nconst getVariable = (name: string) => {\n return (values?.[name] ?? variables?.[name]?.default ?? '').toString()\n}\n</script>\n<template>\n <template v-if=\"variables && Object.keys(variables ?? {}).length\">\n <template\n v-for=\"name in Object.keys(variables)\"\n :key=\"name\">\n <div\n class=\"group/label flex h-8 w-full\"\n :class=\"\n layout === 'reference' &&\n 'items-center border-x border-b last:rounded-b-lg'\n \">\n <label\n class=\"flex items-center py-2 pl-3 group-has-[input]/label:mr-0 after:content-[':']\"\n :for=\"`${id}-${name}`\">\n {{ name }}\n </label>\n <template v-if=\"variables?.[name]?.enum?.length\">\n <ServerVariablesSelect\n :id=\"`${id}-${name}`\"\n :controls=\"controls\"\n :enum=\"variables[name]?.enum?.map((v) => `${v}`) ?? []\"\n :value=\"getVariable(name)\"\n @change=\"(s) => setVariable(name, s)\" />\n </template>\n <template v-else>\n <ServerVariablesTextbox\n :id=\"`${id}-${name}`\"\n :controls=\"controls\"\n :value=\"getVariable(name)\"\n @change=\"(s) => setVariable(name, s)\" />\n </template>\n </div>\n </template>\n </template>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAuBA,MAAM,OAAO;EAIb,MAAM,KAAK,OAAM;EAEjB,SAAS,YAAY,MAAc,OAAe;AAChD,QAAK,mBAAmB,MAAM,MAAK;;EAGrC,MAAM,eAAe,SAAiB;AACpC,WAAQ,QAAA,SAAS,SAAS,QAAA,YAAY,OAAO,WAAW,IAAI,UAAS;;;UAIrD,QAAA,aAAa,OAAO,KAAK,QAAA,aAAS,EAAA,CAAA,CAAQ,UAAA,UAAA,KAAA,EACxD,mBA8BW,UAAA,EAAA,KAAA,GAAA,EAAA,WA7BM,OAAO,KAAK,QAAA,UAAS,GAA7B,SAAI;wBAEX,mBA0BM,OAAA;UA3BA;KAEJ,OAAK,eAAA,CAAC,+BACa,QAAA,WAAM,eAAA,mDAAA,CAAA;QAIzB,mBAIQ,SAAA;KAHN,OAAM;KACL,KAAG,GAAK,MAAA,GAAE,CAAA,GAAI;uBACZ,KAAI,EAAA,GAAA,WAAA,EAEO,QAAA,YAAY,OAAO,MAAM,UAAA,WAAA,EACvC,YAK0C,+BAAA;;KAJvC,IAAE,GAAK,MAAA,GAAE,CAAA,GAAI;KACb,UAAU,QAAA;KACV,MAAM,QAAA,UAAU,OAAO,MAAM,KAAK,MAAC,GAAQ,IAAC,IAAA,EAAA;KAC5C,OAAO,YAAY,KAAI;KACvB,WAAS,MAAM,YAAY,MAAM,EAAC;;;;;;;wBAGrC,YAI0C,gCAAA;;KAHvC,IAAE,GAAK,MAAA,GAAE,CAAA,GAAI;KACb,UAAU,QAAA;KACV,OAAO,YAAY,KAAI;KACvB,WAAS,MAAM,YAAY,MAAM,EAAC"}
1
+ {"version":3,"file":"ServerVariablesForm.vue.script.js","names":[],"sources":["../../../src/components/Server/ServerVariablesForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useId } from 'vue'\n\nimport ServerVariablesSelect from '@/components/Server/ServerVariablesSelect.vue'\nimport ServerVariablesTextbox from '@/components/Server/ServerVariablesTextbox.vue'\nimport type {\n ServerVariables,\n ServerVariableValues,\n} from '@/components/Server/types'\n\nconst {\n values,\n variables,\n layout = 'client',\n} = defineProps<{\n variables?: ServerVariables | undefined\n values?: ServerVariableValues\n /** The ID of the input controlled by the variables form */\n controls?: string\n /** The layout of the server variables form */\n layout?: 'client' | 'reference'\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:variable', name: string, value: string): void\n}>()\n\nconst id = useId()\n\nfunction setVariable(name: string, value: string) {\n emit('update:variable', name, value)\n}\n\nconst getVariable = (name: string) => {\n return (values?.[name] ?? variables?.[name]?.default ?? '').toString()\n}\n</script>\n<template>\n <template v-if=\"variables && Object.keys(variables ?? {}).length\">\n <template\n v-for=\"name in Object.keys(variables)\"\n :key=\"name\">\n <div\n class=\"group/label flex h-8 w-full\"\n :class=\"\n layout === 'reference' &&\n 'items-center border-x border-b last:rounded-b-lg'\n \">\n <label\n class=\"flex items-center py-2 pl-3 group-has-[input]/label:mr-0 after:content-[':']\"\n :for=\"`${id}-${name}`\">\n {{ name }}\n </label>\n <template v-if=\"variables?.[name]?.enum?.length\">\n <ServerVariablesSelect\n :id=\"`${id}-${name}`\"\n :controls=\"controls\"\n :enum=\"variables[name]?.enum?.map((v) => `${v}`) ?? []\"\n :value=\"getVariable(name)\"\n @change=\"(s) => setVariable(name, s)\" />\n </template>\n <template v-else>\n <ServerVariablesTextbox\n :id=\"`${id}-${name}`\"\n :controls=\"controls\"\n :value=\"getVariable(name)\"\n @change=\"(s) => setVariable(name, s)\" />\n </template>\n </div>\n </template>\n </template>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAuBA,MAAM,OAAO;EAIb,MAAM,KAAK,MAAM;EAEjB,SAAS,YAAY,MAAc,OAAe;GAChD,KAAK,mBAAmB,MAAM,KAAK;EACrC;EAEA,MAAM,eAAe,SAAiB;GACpC,QAAQ,QAAA,SAAS,SAAS,QAAA,YAAY,KAAK,EAAE,WAAW,GAAA,CAAI,SAAS;EACvE;;UAGkB,QAAA,aAAa,OAAO,KAAK,QAAA,aAAS,CAAA,CAAA,CAAA,CAAQ,UAAA,UAAA,IAAA,GACxD,mBA8BW,UAAA,EAAA,KAAA,EAAA,GAAA,WA7BM,OAAO,KAAK,QAAA,SAAS,IAA7B,SAAI;wBAEX,mBA0BM,OAAA;UA3BA;KAEJ,OAAK,eAAA,CAAC,+BACa,QAAA,WAAM,eAAA,kDAAA,CAAA;QAIzB,mBAIQ,SAAA;KAHN,OAAM;KACL,KAAG,GAAK,MAAA,EAAA,EAAE,GAAI;uBACZ,IAAI,GAAA,GAAA,UAAA,GAEO,QAAA,YAAY,KAAI,EAAG,MAAM,UAAA,UAAA,GACvC,YAK0C,+BAAA;;KAJvC,IAAE,GAAK,MAAA,EAAA,EAAE,GAAI;KACb,UAAU,QAAA;KACV,MAAM,QAAA,UAAU,KAAI,EAAG,MAAM,KAAK,MAAC,GAAQ,GAAC,KAAA,CAAA;KAC5C,OAAO,YAAY,IAAI;KACvB,WAAS,MAAM,YAAY,MAAM,CAAC;;;;;;;wBAGrC,YAI0C,gCAAA;;KAHvC,IAAE,GAAK,MAAA,EAAA,EAAE,GAAI;KACb,UAAU,QAAA;KACV,OAAO,YAAY,IAAI;KACvB,WAAS,MAAM,YAAY,MAAM,CAAC"}
@@ -7,7 +7,7 @@ var _hoisted_1 = {
7
7
  key: 0,
8
8
  class: "sr-only"
9
9
  };
10
- var ServerVariablesSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var ServerVariablesSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  __name: "ServerVariablesSelect",
12
12
  props: {
13
13
  enum: {},
@@ -1 +1 @@
1
- {"version":3,"file":"ServerVariablesSelect.vue.script.js","names":[],"sources":["../../../src/components/Server/ServerVariablesSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport {\n ScalarListbox,\n type ScalarListboxOption,\n} from '@scalar/components/listbox'\nimport { ScalarIconCaretDown } from '@scalar/icons'\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n enum: string[]\n value: string\n controls: string | undefined\n}>()\n\nconst emit = defineEmits<{\n (e: 'change', v: string): void\n}>()\n\nconst options = computed<ScalarListboxOption[]>(() =>\n props.enum.map((s) => ({ id: s, label: s })),\n)\n\nconst selected = computed<ScalarListboxOption | undefined>({\n get: () => options.value.find((opt) => opt.id === props.value),\n set: (opt?: ScalarListboxOption) => emit('change', opt?.id ?? ''),\n})\n</script>\n<template>\n <ScalarListbox\n v-model=\"selected\"\n :options=\"options\">\n <ScalarButton\n :aria-controls=\"controls\"\n class=\"group/button h-8 gap-1.5 p-1.5 text-base font-normal\"\n variant=\"ghost\">\n <span :class=\"{ 'text-c-1': value }\">\n <span\n v-if=\"value\"\n class=\"sr-only\">\n Selected:\n </span>\n {{ value || 'Select value' }}\n </span>\n <ScalarIconCaretDown\n weight=\"bold\"\n class=\"mt-0.25 size-3 transition-transform duration-100 group-aria-expanded/button:rotate-180\" />\n </ScalarButton>\n </ScalarListbox>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EASA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAIb,MAAM,UAAU,eACd,MAAM,KAAK,KAAK,OAAO;GAAE,IAAI;GAAG,OAAO;GAAG,EAAE,CAC9C;EAEA,MAAM,WAAW,SAA0C;GACzD,WAAW,QAAQ,MAAM,MAAM,QAAQ,IAAI,OAAO,MAAM,MAAM;GAC9D,MAAM,QAA8B,KAAK,UAAU,KAAK,MAAM,GAAG;GAClE,CAAA;;uBAGC,YAmBgB,MAAA,cAAA,EAAA;gBAlBL,SAAA;0EAAQ,QAAA;IAChB,SAAS,QAAA;;2BAgBK,CAff,YAee,MAAA,aAAA,EAAA;KAdZ,iBAAe,QAAA;KAChB,OAAM;KACN,SAAQ;;4BAQD,CAPP,mBAOO,QAAA,EAPA,OAAK,eAAA,EAAA,YAAgB,QAAA,OAAK,CAAA,EAAA,EAAA,CAEvB,QAAA,SAAA,WAAA,EADR,mBAIO,QAJP,YAEkB,cAElB,IAAA,mBAAA,IAAA,KAAA,EAAA,gBAAO,MACP,gBAAG,QAAA,SAAK,eAAA,EAAA,EAAA,CAAA,EAAA,EAAA,EAEV,YAEmG,MAAA,oBAAA,EAAA;MADjG,QAAO;MACP,OAAM"}
1
+ {"version":3,"file":"ServerVariablesSelect.vue.script.js","names":[],"sources":["../../../src/components/Server/ServerVariablesSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport {\n ScalarListbox,\n type ScalarListboxOption,\n} from '@scalar/components/listbox'\nimport { ScalarIconCaretDown } from '@scalar/icons'\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n enum: string[]\n value: string\n controls: string | undefined\n}>()\n\nconst emit = defineEmits<{\n (e: 'change', v: string): void\n}>()\n\nconst options = computed<ScalarListboxOption[]>(() =>\n props.enum.map((s) => ({ id: s, label: s })),\n)\n\nconst selected = computed<ScalarListboxOption | undefined>({\n get: () => options.value.find((opt) => opt.id === props.value),\n set: (opt?: ScalarListboxOption) => emit('change', opt?.id ?? ''),\n})\n</script>\n<template>\n <ScalarListbox\n v-model=\"selected\"\n :options=\"options\">\n <ScalarButton\n :aria-controls=\"controls\"\n class=\"group/button h-8 gap-1.5 p-1.5 text-base font-normal\"\n variant=\"ghost\">\n <span :class=\"{ 'text-c-1': value }\">\n <span\n v-if=\"value\"\n class=\"sr-only\">\n Selected:\n </span>\n {{ value || 'Select value' }}\n </span>\n <ScalarIconCaretDown\n weight=\"bold\"\n class=\"mt-0.25 size-3 transition-transform duration-100 group-aria-expanded/button:rotate-180\" />\n </ScalarButton>\n </ScalarListbox>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EASA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAIb,MAAM,UAAU,eACd,MAAM,KAAK,KAAK,OAAO;GAAE,IAAI;GAAG,OAAO;EAAE,EAAE,CAC7C;EAEA,MAAM,WAAW,SAA0C;GACzD,WAAW,QAAQ,MAAM,MAAM,QAAQ,IAAI,OAAO,MAAM,KAAK;GAC7D,MAAM,QAA8B,KAAK,UAAU,KAAK,MAAM,EAAE;EAClE,CAAC;;uBAGC,YAmBgB,MAAA,aAAA,GAAA;gBAlBL,SAAA;0EAAQ,QAAA;IAChB,SAAS,QAAA;;2BAgBK,CAff,YAee,MAAA,YAAA,GAAA;KAdZ,iBAAe,QAAA;KAChB,OAAM;KACN,SAAQ;;4BAQD,CAPP,mBAOO,QAAA,EAPA,OAAK,eAAA,EAAA,YAAgB,QAAA,MAAK,CAAA,EAAA,GAAA,CAEvB,QAAA,SAAA,UAAA,GADR,mBAIO,QAJP,YAEkB,aAElB,KAAA,mBAAA,IAAA,IAAA,GAAA,gBAAO,MACP,gBAAG,QAAA,SAAK,cAAA,GAAA,CAAA,CAAA,GAAA,CAAA,GAEV,YAEmG,MAAA,mBAAA,GAAA;MADjG,QAAO;MACP,OAAM"}
@@ -1,6 +1,6 @@
1
1
  import { computed, createElementBlock, defineComponent, mergeProps, openBlock, vModelText, withDirectives } from "vue";
2
2
  //#region src/components/Server/ServerVariablesTextbox.vue?vue&type=script&setup=true&lang.ts
3
- var ServerVariablesTextbox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
3
+ var ServerVariablesTextbox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
4
  __name: "ServerVariablesTextbox",
5
5
  props: {
6
6
  value: {},
@@ -1 +1 @@
1
- {"version":3,"file":"ServerVariablesTextbox.vue.script.js","names":["$attrs"],"sources":["../../../src/components/Server/ServerVariablesTextbox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n value: string\n controls: string | undefined\n}>()\n\nconst emit = defineEmits<{\n (e: 'change', v: string): void\n}>()\n\nconst model = computed<string>({\n get: () => props.value,\n set: (v) => emit('change', v),\n})\n</script>\n<template>\n <input\n v-model=\"model\"\n v-bind=\"controls ? { ...$attrs, 'aria-controls': controls } : {}\"\n autocomplete=\"off\"\n class=\"text-c-1 w-full border-transparent px-1.5 py-1.25 -outline-offset-1 group-last/label:rounded-br-lg\"\n placeholder=\"value\"\n spellcheck=\"false\"\n type=\"text\" />\n</template>\n"],"mappings":";;;;;;;;;;EAGA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAIb,MAAM,QAAQ,SAAiB;GAC7B,WAAW,MAAM;GACjB,MAAM,MAAM,KAAK,UAAU,EAAE;GAC9B,CAAA;;uCAGC,mBAOgB,SAPhB,WAOgB,EAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,MANA,QAAA,SAAA,EACN,QAAA,WAAQ;IAAA,GAAQA,KAAAA;IAAM,iBAAmB,QAAA;IAAQ,GAAA,EAAA,EAAA;IACzD,cAAa;IACb,OAAM;IACN,aAAY;IACZ,YAAW;IACX,MAAK;iCANI,MAAA,MAAK,CAAA,CAAA"}
1
+ {"version":3,"file":"ServerVariablesTextbox.vue.script.js","names":["$attrs"],"sources":["../../../src/components/Server/ServerVariablesTextbox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n value: string\n controls: string | undefined\n}>()\n\nconst emit = defineEmits<{\n (e: 'change', v: string): void\n}>()\n\nconst model = computed<string>({\n get: () => props.value,\n set: (v) => emit('change', v),\n})\n</script>\n<template>\n <input\n v-model=\"model\"\n v-bind=\"controls ? { ...$attrs, 'aria-controls': controls } : {}\"\n autocomplete=\"off\"\n class=\"text-c-1 w-full border-transparent px-1.5 py-1.25 -outline-offset-1 group-last/label:rounded-br-lg\"\n placeholder=\"value\"\n spellcheck=\"false\"\n type=\"text\" />\n</template>\n"],"mappings":";;;;;;;;;;EAGA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAIb,MAAM,QAAQ,SAAiB;GAC7B,WAAW,MAAM;GACjB,MAAM,MAAM,KAAK,UAAU,CAAC;EAC9B,CAAC;;uCAGC,mBAOgB,SAPhB,WAOgB,EAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,MANA,QAAA,QAAA,GACN,QAAA,WAAQ;IAAA,GAAQA,KAAAA;IAAM,iBAAmB,QAAA;GAAQ,IAAA,CAAA,GAAA;IACzD,cAAa;IACb,OAAM;IACN,aAAY;IACZ,YAAW;IACX,MAAK;iCANI,MAAA,KAAK,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteSidebarListElement.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/Actions/DeleteSidebarListElement.vue"],"names":[],"mappings":"AA0CA,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC,CAAC;AAqFF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"DeleteSidebarListElement.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/Actions/DeleteSidebarListElement.vue"],"names":[],"mappings":"AA0CA,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC,CAAC;AAuFF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -5,7 +5,7 @@ var _hoisted_1 = {
5
5
  key: 0,
6
6
  class: "text-c-2 text-sm leading-normal text-pretty"
7
7
  };
8
- var DeleteSidebarListElement_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var DeleteSidebarListElement_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
9
  __name: "DeleteSidebarListElement",
10
10
  props: {
11
11
  variableName: {},
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteSidebarListElement.vue.script.js","names":[],"sources":["../../../../src/components/Sidebar/Actions/DeleteSidebarListElement.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport SidebarListElementForm from '@/components/Sidebar/Actions/SidebarListElementForm.vue'\n\nconst props = defineProps<{\n variableName: string\n warningMessage: string | undefined\n}>()\n\nconst emit = defineEmits<{\n (e: 'close'): void\n (e: 'delete'): void\n}>()\n\nconst truncatedName = computed(() => {\n if (props.variableName.length > 18) {\n return props.variableName.slice(0, 18) + '…'\n }\n return props.variableName\n})\n</script>\n<template>\n <SidebarListElementForm\n danger\n :label=\"`Delete ${truncatedName}`\"\n @cancel=\"emit('close')\"\n @submit=\"emit('delete')\">\n <p\n v-if=\"warningMessage\"\n class=\"text-c-2 text-sm leading-normal text-pretty\">\n {{ warningMessage }}\n </p>\n </SidebarListElementForm>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAKb,MAAM,gBAAgB,eAAe;AACnC,OAAI,MAAM,aAAa,SAAS,GAC9B,QAAO,MAAM,aAAa,MAAM,GAAG,GAAG,GAAG;AAE3C,UAAO,MAAM;IACd;;uBAGC,YAUyB,gCAAA;IATvB,QAAA;IACC,OAAK,UAAY,cAAA;IACjB,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;IACZ,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;;2BAKT,CAHI,QAAA,kBAAA,WAAA,EADR,mBAII,KAJJ,YAII,gBADC,QAAA,eAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"DeleteSidebarListElement.vue.script.js","names":[],"sources":["../../../../src/components/Sidebar/Actions/DeleteSidebarListElement.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport SidebarListElementForm from '@/components/Sidebar/Actions/SidebarListElementForm.vue'\n\nconst props = defineProps<{\n variableName: string\n warningMessage: string | undefined\n}>()\n\nconst emit = defineEmits<{\n (e: 'close'): void\n (e: 'delete'): void\n}>()\n\nconst truncatedName = computed(() => {\n if (props.variableName.length > 18) {\n return props.variableName.slice(0, 18) + '…'\n }\n return props.variableName\n})\n</script>\n<template>\n <SidebarListElementForm\n danger\n :label=\"`Delete ${truncatedName}`\"\n @cancel=\"emit('close')\"\n @submit=\"emit('delete')\">\n <p\n v-if=\"warningMessage\"\n class=\"text-c-2 text-sm leading-normal text-pretty\">\n {{ warningMessage }}\n </p>\n </SidebarListElementForm>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAKb,MAAM,gBAAgB,eAAe;GACnC,IAAI,MAAM,aAAa,SAAS,IAC9B,OAAO,MAAM,aAAa,MAAM,GAAG,EAAE,IAAI;GAE3C,OAAO,MAAM;EACf,CAAC;;uBAGC,YAUyB,gCAAA;IATvB,QAAA;IACC,OAAK,UAAY,cAAA;IACjB,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,OAAA;IACZ,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;;2BAKT,CAHI,QAAA,kBAAA,UAAA,GADR,mBAII,KAJJ,YAII,gBADC,QAAA,cAAc,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarListElementForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/Actions/SidebarListElementForm.vue"],"names":[],"mappings":"AAyCA,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AAoGF,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU;;;;;;kFAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"SidebarListElementForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/Actions/SidebarListElementForm.vue"],"names":[],"mappings":"AAyCA,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AAqGF,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU;;;;;;kFAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -2,7 +2,7 @@ import { createElementBlock, createElementVNode, createTextVNode, createVNode, d
2
2
  import { ScalarButton } from "@scalar/components/button";
3
3
  //#region src/components/Sidebar/Actions/SidebarListElementForm.vue?vue&type=script&setup=true&lang.ts
4
4
  var _hoisted_1 = { class: "flex justify-between gap-10" };
5
- var SidebarListElementForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var SidebarListElementForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  __name: "SidebarListElementForm",
7
7
  props: {
8
8
  danger: { type: Boolean },
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarListElementForm.vue.script.js","names":[],"sources":["../../../../src/components/Sidebar/Actions/SidebarListElementForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\n\ndefineProps<{\n danger?: boolean\n label?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'cancel'): void\n (e: 'submit'): void\n}>()\n</script>\n<template>\n <form\n class=\"flex flex-col gap-4 text-base\"\n @submit.prevent=\"emit('submit')\">\n <slot />\n <div class=\"flex justify-between gap-10\">\n <ScalarButton\n size=\"sm\"\n type=\"button\"\n variant=\"outlined\"\n @click=\"emit('cancel')\">\n Cancel\n </ScalarButton>\n <ScalarButton\n data-testid=\"sidebar-list-element-form-submit-button\"\n size=\"sm\"\n type=\"submit\"\n :variant=\"danger ? 'danger' : 'solid'\">\n {{ label ?? 'Save' }}\n </ScalarButton>\n </div>\n </form>\n</template>\n"],"mappings":";;;;;;;;;;;;EAQA,MAAM,OAAO;;uBAMX,mBAoBO,QAAA;IAnBL,OAAM;IACL,UAAM,OAAA,OAAA,OAAA,KAAA,eAAA,WAAU,KAAI,SAAA,EAAA,CAAA,UAAA,CAAA;OACrB,WAAQ,KAAA,QAAA,UAAA,EACR,mBAeM,OAfN,YAeM,CAdJ,YAMe,MAAA,aAAA,EAAA;IALb,MAAK;IACL,MAAK;IACL,SAAQ;IACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;;2BAEd,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF0B,YAE1B,GAAA,CAAA,EAAA,CAAA;;OACA,YAMe,MAAA,aAAA,EAAA;IALb,eAAY;IACZ,MAAK;IACL,MAAK;IACJ,SAAS,QAAA,SAAM,WAAA;;2BACK,CAAA,gBAAA,gBAAlB,QAAA,SAAK,OAAA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SidebarListElementForm.vue.script.js","names":[],"sources":["../../../../src/components/Sidebar/Actions/SidebarListElementForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\n\ndefineProps<{\n danger?: boolean\n label?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'cancel'): void\n (e: 'submit'): void\n}>()\n</script>\n<template>\n <form\n class=\"flex flex-col gap-4 text-base\"\n @submit.prevent=\"emit('submit')\">\n <slot />\n <div class=\"flex justify-between gap-10\">\n <ScalarButton\n size=\"sm\"\n type=\"button\"\n variant=\"outlined\"\n @click=\"emit('cancel')\">\n Cancel\n </ScalarButton>\n <ScalarButton\n data-testid=\"sidebar-list-element-form-submit-button\"\n size=\"sm\"\n type=\"submit\"\n :variant=\"danger ? 'danger' : 'solid'\">\n {{ label ?? 'Save' }}\n </ScalarButton>\n </div>\n </form>\n</template>\n"],"mappings":";;;;;;;;;;;;EAQA,MAAM,OAAO;;uBAMX,mBAoBO,QAAA;IAnBL,OAAM;IACL,UAAM,OAAA,OAAA,OAAA,KAAA,eAAA,WAAU,KAAI,QAAA,GAAA,CAAA,SAAA,CAAA;OACrB,WAAQ,KAAA,QAAA,SAAA,GACR,mBAeM,OAfN,YAeM,CAdJ,YAMe,MAAA,YAAA,GAAA;IALb,MAAK;IACL,MAAK;IACL,SAAQ;IACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;;2BAEd,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF0B,YAE1B,EAAA,CAAA,EAAA,CAAA;;OACA,YAMe,MAAA,YAAA,GAAA;IALb,eAAY;IACZ,MAAK;IACL,MAAK;IACJ,SAAS,QAAA,SAAM,WAAA;;2BACK,CAAA,gBAAA,gBAAlB,QAAA,SAAK,MAAA,GAAA,CAAA,CAAA,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { createElementBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref } from "vue";
2
2
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
3
3
  //#region src/components/ViewLayout/ViewLayout.vue?vue&type=script&setup=true&lang.ts
4
- var ViewLayout_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var ViewLayout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  __name: "ViewLayout",
6
6
  setup(__props) {
7
7
  const { cx } = useBindCx();
@@ -1 +1 @@
1
- {"version":3,"file":"ViewLayout.vue.script.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nconst { cx } = useBindCx()\n</script>\n\n<template>\n <div\n v-bind=\"\n cx(\n 'flex flex-col min-h-0 flex-1 *:border-t first:*:border-t-0 md:*:border-t-0 xl:overflow-hidden md:flex-row leading-5',\n )\n \">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;EAGA,MAAM,EAAE,OAAO,WAAU;;uBAIvB,mBAOM,OAAA,eAAA,mBANW,MAAA,GAAE,CAAA,sHAAA,CAAA,CAAA,EAAA,CAKjB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"ViewLayout.vue.script.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\nconst { cx } = useBindCx()\n</script>\n\n<template>\n <div\n v-bind=\"\n cx(\n 'flex flex-col min-h-0 flex-1 *:border-t first:*:border-t-0 md:*:border-t-0 xl:overflow-hidden md:flex-row leading-5',\n )\n \">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;EAGA,MAAM,EAAE,OAAO,UAAU;;uBAIvB,mBAOM,OAAA,eAAA,mBANW,MAAA,EAAA,CAAE,CAAA,qHAAA,CAAA,CAAA,GAAA,CAKjB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA"}
@@ -6,7 +6,7 @@ var _hoisted_1 = { class: "custom-scroll flex flex-col pr-0 *:border-t *:first:b
6
6
  function _sfc_render(_ctx, _cache) {
7
7
  return openBlock(), createElementBlock("div", _hoisted_1, [renderSlot(_ctx.$slots, "default")]);
8
8
  }
9
- var ViewLayoutContent_default = /* @__PURE__ */ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
9
+ var ViewLayoutContent_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
10
10
  //#endregion
11
11
  export { ViewLayoutContent_default as default };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"ViewLayoutContent.vue.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayoutContent.vue"],"sourcesContent":["<template>\n <!-- Using *:border-* to avoid chrome performance issue with adjacent sibling selector (~) -->\n <div\n class=\"custom-scroll flex flex-col pr-0 *:border-t *:first:border-t-0 xl:flex-row *:xl:border-t-0 *:xl:border-l *:first:xl:border-l-0\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;mBAGI,OAAM,kIAAgI;;qBADxI,mBAGM,OAHN,YAGM,CADJ,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ViewLayoutContent.vue.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayoutContent.vue"],"sourcesContent":["<template>\n <!-- Using *:border-* to avoid chrome performance issue with adjacent sibling selector (~) -->\n <div\n class=\"custom-scroll flex flex-col pr-0 *:border-t *:first:border-t-0 xl:flex-row *:xl:border-t-0 *:xl:border-l *:first:xl:border-l-0\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;mBAGI,OAAM,iIAAgI;;qBADxI,mBAGM,OAHN,YAGM,CADJ,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
@@ -5,7 +5,7 @@ var _hoisted_1 = {
5
5
  key: 0,
6
6
  class: "request-response-header bg-b-1 -mb-1/2 sticky top-0 z-1 flex min-h-11 items-center border-b px-2.5 text-base font-medium xl:rounded-none"
7
7
  };
8
- var ViewLayoutSection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var ViewLayoutSection_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
9
  inheritAttrs: false,
10
10
  __name: "ViewLayoutSection",
11
11
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ViewLayoutSection.vue.script.js","names":["$slots"],"sources":["../../../src/components/ViewLayout/ViewLayoutSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineOptions({ inheritAttrs: false })\n\nconst { cx } = useBindCx()\n</script>\n\n<template>\n <section\n v-bind=\"\n cx('xl:custom-scroll bg-b-1 flex flex-1 flex-col xl:h-full xl:min-w-0')\n \">\n <div\n v-if=\"$slots.title\"\n class=\"request-response-header bg-b-1 -mb-1/2 sticky top-0 z-1 flex min-h-11 items-center border-b px-2.5 text-base font-medium xl:rounded-none\">\n <slot name=\"title\" />\n </div>\n <slot />\n </section>\n</template>\n"],"mappings":";;;;;;;;;;;EAKA,MAAM,EAAE,OAAO,WAAU;;uBAIvB,mBAUU,WAAA,eAAA,mBATO,MAAA,GAAE,CAAA,oEAAA,CAAA,CAAA,EAAA,CAITA,KAAAA,OAAO,SAAA,WAAA,EADf,mBAIM,OAJN,YAIM,CADJ,WAAqB,KAAA,QAAA,QAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA,EAEvB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"ViewLayoutSection.vue.script.js","names":["$slots"],"sources":["../../../src/components/ViewLayout/ViewLayoutSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineOptions({ inheritAttrs: false })\n\nconst { cx } = useBindCx()\n</script>\n\n<template>\n <section\n v-bind=\"\n cx('xl:custom-scroll bg-b-1 flex flex-1 flex-col xl:h-full xl:min-w-0')\n \">\n <div\n v-if=\"$slots.title\"\n class=\"request-response-header bg-b-1 -mb-1/2 sticky top-0 z-1 flex min-h-11 items-center border-b px-2.5 text-base font-medium xl:rounded-none\">\n <slot name=\"title\" />\n </div>\n <slot />\n </section>\n</template>\n"],"mappings":";;;;;;;;;;;EAKA,MAAM,EAAE,OAAO,UAAU;;uBAIvB,mBAUU,WAAA,eAAA,mBATO,MAAA,EAAA,CAAE,CAAA,mEAAA,CAAA,CAAA,GAAA,CAITA,KAAAA,OAAO,SAAA,UAAA,GADf,mBAIM,OAJN,YAIM,CADJ,WAAqB,KAAA,QAAA,OAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAEvB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA"}
@@ -11,7 +11,8 @@ function useFileDialog({ multiple, accept, onChange, onError } = {}) {
11
11
  input = document.createElement("input");
12
12
  input.type = "file";
13
13
  input.onchange = (event) => {
14
- files.value = event.target.files;
14
+ const result = event.target;
15
+ files.value = result.files;
15
16
  onChange?.(files.value);
16
17
  };
17
18
  input.onerror = () => onError?.();
@@ -1 +1 @@
1
- {"version":3,"file":"use-file-dialog.js","names":[],"sources":["../../src/hooks/use-file-dialog.ts"],"sourcesContent":["import { readonly, ref } from 'vue'\n\ntype UseFileDialogOptions = {\n multiple?: boolean\n /** @default '*' */\n accept?: string\n onChange?: (files: FileList | null) => void | Promise<void>\n onError?: () => void | Promise<void>\n}\n\n/**\n * Simplified interface for opening a file picker dialog\n * Derived from vueuse @see https://vueuse.org/useFileDialog\n */\nexport function useFileDialog({ multiple, accept, onChange, onError }: UseFileDialogOptions = {}) {\n const files = ref<FileList | null>(null)\n\n let input: HTMLInputElement | undefined\n if (typeof document !== 'undefined') {\n input = document.createElement('input')\n input.type = 'file'\n\n input.onchange = (event: Event) => {\n const result = event.target as HTMLInputElement\n files.value = result.files\n onChange?.(files.value)\n }\n\n input.onerror = () => onError?.()\n\n input.multiple = multiple!\n input.accept = accept!\n }\n\n const open = () => {\n if (!input) {\n return onError?.()\n }\n\n input.click()\n }\n\n return {\n files: readonly(files),\n open,\n }\n}\n"],"mappings":";;;;;;AAcA,SAAgB,cAAc,EAAE,UAAU,QAAQ,UAAU,YAAkC,EAAE,EAAE;CAChG,MAAM,QAAQ,IAAqB,KAAK;CAExC,IAAI;AACJ,KAAI,OAAO,aAAa,aAAa;AACnC,UAAQ,SAAS,cAAc,QAAQ;AACvC,QAAM,OAAO;AAEb,QAAM,YAAY,UAAiB;AAEjC,SAAM,QADS,MAAM,OACA;AACrB,cAAW,MAAM,MAAM;;AAGzB,QAAM,gBAAgB,WAAW;AAEjC,QAAM,WAAW;AACjB,QAAM,SAAS;;CAGjB,MAAM,aAAa;AACjB,MAAI,CAAC,MACH,QAAO,WAAW;AAGpB,QAAM,OAAO;;AAGf,QAAO;EACL,OAAO,SAAS,MAAM;EACtB;EACD"}
1
+ {"version":3,"file":"use-file-dialog.js","names":[],"sources":["../../src/hooks/use-file-dialog.ts"],"sourcesContent":["import { readonly, ref } from 'vue'\n\ntype UseFileDialogOptions = {\n multiple?: boolean\n /** @default '*' */\n accept?: string\n onChange?: (files: FileList | null) => void | Promise<void>\n onError?: () => void | Promise<void>\n}\n\n/**\n * Simplified interface for opening a file picker dialog\n * Derived from vueuse @see https://vueuse.org/useFileDialog\n */\nexport function useFileDialog({ multiple, accept, onChange, onError }: UseFileDialogOptions = {}) {\n const files = ref<FileList | null>(null)\n\n let input: HTMLInputElement | undefined\n if (typeof document !== 'undefined') {\n input = document.createElement('input')\n input.type = 'file'\n\n input.onchange = (event: Event) => {\n const result = event.target as HTMLInputElement\n files.value = result.files\n onChange?.(files.value)\n }\n\n input.onerror = () => onError?.()\n\n input.multiple = multiple!\n input.accept = accept!\n }\n\n const open = () => {\n if (!input) {\n return onError?.()\n }\n\n input.click()\n }\n\n return {\n files: readonly(files),\n open,\n }\n}\n"],"mappings":";;;;;;AAcA,SAAgB,cAAc,EAAE,UAAU,QAAQ,UAAU,YAAkC,CAAC,GAAG;CAChG,MAAM,QAAQ,IAAqB,IAAI;CAEvC,IAAI;CACJ,IAAI,OAAO,aAAa,aAAa;EACnC,QAAQ,SAAS,cAAc,OAAO;EACtC,MAAM,OAAO;EAEb,MAAM,YAAY,UAAiB;GACjC,MAAM,SAAS,MAAM;GACrB,MAAM,QAAQ,OAAO;GACrB,WAAW,MAAM,KAAK;EACxB;EAEA,MAAM,gBAAgB,UAAU;EAEhC,MAAM,WAAW;EACjB,MAAM,SAAS;CACjB;CAEA,MAAM,aAAa;EACjB,IAAI,CAAC,OACH,OAAO,UAAU;EAGnB,MAAM,MAAM;CACd;CAEA,OAAO;EACL,OAAO,SAAS,KAAK;EACrB;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/plugins/posthog/index.ts"],"sourcesContent":["import type { ClientPlugin } from '@scalar/oas-utils/helpers'\nimport type { ConfigDefaults, PostHog } from 'posthog-js'\nimport ph from 'posthog-js'\n\nimport { sanitizeEventPayload } from './sanitize-event-payload'\n\nexport type PostHogConfig = {\n /** Your PostHog project API key */\n apiKey: string\n /** The PostHog API host URL */\n apiHost: string\n /** The PostHog UI host URL (for session recordings, surveys, etc.) */\n uiHost?: string\n /** PostHog defaults version identifier */\n defaults?: ConfigDefaults\n}\n\n/**\n * PostHog analytics plugin for the API Client.\n *\n * Loading this plugin opts in to analytics. If the plugin is not loaded,\n * no tracking occurs.\n *\n * Respects the `telemetry` configuration option — when set to `false`,\n * capturing is disabled. Reacts dynamically to config changes at runtime.\n */\nexport const PostHogClientPlugin = (config: PostHogConfig): ClientPlugin => {\n let posthog: PostHog | null = null\n\n return {\n on: ({ event, payload }) => {\n // User logs in — never capture this event; identify only when payload has a uid.\n // Thanks to the tagged-union narrowing, `payload` is the login payload here;\n // the `payload?.uid` guard is purely defensive against bad runtime data.\n if (event === 'log:user-login') {\n if (payload?.uid) {\n posthog?.identify(payload.uid, { email: payload.email, teamUid: payload.teamUid })\n }\n return\n }\n\n // User logs out\n if (event === 'log:user-logout') {\n posthog?.reset()\n return\n }\n\n // Only capture events that are in the allowlist\n const result = sanitizeEventPayload(event, payload)\n if (result === null) {\n return\n }\n\n const properties = typeof result === 'object' && result !== null ? result : { value: result }\n\n // When the extractor returned no useful properties, fire the event\n // without a properties argument so PostHog records the event fact alone\n // (rather than a noisy `{}` payload).\n if (Object.keys(properties).length === 0) {\n posthog?.capture(event)\n return\n }\n\n posthog?.capture(event, properties)\n },\n lifecycle: {\n onInit(context) {\n if (typeof window === 'undefined') {\n return\n }\n\n const instance = ph.init(\n config.apiKey,\n {\n api_host: config.apiHost,\n ...(config.uiHost ? { ui_host: config.uiHost } : {}),\n ...(config.defaults ? { defaults: config.defaults } : {}),\n opt_out_capturing_by_default: true,\n },\n 'scalar-api-client',\n )\n\n if (instance) {\n posthog = instance\n posthog.register({ product: 'api-client' })\n\n if (context?.config.telemetry !== false) {\n posthog.opt_in_capturing()\n }\n }\n },\n onConfigChange(context) {\n if (!posthog) {\n return\n }\n\n if (context.config.telemetry === false) {\n posthog.opt_out_capturing()\n } else {\n posthog.opt_in_capturing()\n }\n },\n onDestroy() {\n posthog?.reset()\n posthog = null\n },\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,IAAa,uBAAuB,WAAwC;CAC1E,IAAI,UAA0B;AAE9B,QAAO;EACL,KAAK,EAAE,OAAO,cAAc;AAI1B,OAAI,UAAU,kBAAkB;AAC9B,QAAI,SAAS,IACX,UAAS,SAAS,QAAQ,KAAK;KAAE,OAAO,QAAQ;KAAO,SAAS,QAAQ;KAAS,CAAC;AAEpF;;AAIF,OAAI,UAAU,mBAAmB;AAC/B,aAAS,OAAO;AAChB;;GAIF,MAAM,SAAS,qBAAqB,OAAO,QAAQ;AACnD,OAAI,WAAW,KACb;GAGF,MAAM,aAAa,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS,EAAE,OAAO,QAAQ;AAK7F,OAAI,OAAO,KAAK,WAAW,CAAC,WAAW,GAAG;AACxC,aAAS,QAAQ,MAAM;AACvB;;AAGF,YAAS,QAAQ,OAAO,WAAW;;EAErC,WAAW;GACT,OAAO,SAAS;AACd,QAAI,OAAO,WAAW,YACpB;IAGF,MAAM,WAAW,GAAG,KAClB,OAAO,QACP;KACE,UAAU,OAAO;KACjB,GAAI,OAAO,SAAS,EAAE,SAAS,OAAO,QAAQ,GAAG,EAAE;KACnD,GAAI,OAAO,WAAW,EAAE,UAAU,OAAO,UAAU,GAAG,EAAE;KACxD,8BAA8B;KAC/B,EACD,oBACD;AAED,QAAI,UAAU;AACZ,eAAU;AACV,aAAQ,SAAS,EAAE,SAAS,cAAc,CAAC;AAE3C,SAAI,SAAS,OAAO,cAAc,MAChC,SAAQ,kBAAkB;;;GAIhC,eAAe,SAAS;AACtB,QAAI,CAAC,QACH;AAGF,QAAI,QAAQ,OAAO,cAAc,MAC/B,SAAQ,mBAAmB;QAE3B,SAAQ,kBAAkB;;GAG9B,YAAY;AACV,aAAS,OAAO;AAChB,cAAU;;GAEb;EACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/plugins/posthog/index.ts"],"sourcesContent":["import type { ClientPlugin } from '@scalar/oas-utils/helpers'\nimport type { ConfigDefaults, PostHog } from 'posthog-js'\nimport ph from 'posthog-js'\n\nimport { sanitizeEventPayload } from './sanitize-event-payload'\n\nexport type PostHogConfig = {\n /** Your PostHog project API key */\n apiKey: string\n /** The PostHog API host URL */\n apiHost: string\n /** The PostHog UI host URL (for session recordings, surveys, etc.) */\n uiHost?: string\n /** PostHog defaults version identifier */\n defaults?: ConfigDefaults\n}\n\n/**\n * PostHog analytics plugin for the API Client.\n *\n * Loading this plugin opts in to analytics. If the plugin is not loaded,\n * no tracking occurs.\n *\n * Respects the `telemetry` configuration option — when set to `false`,\n * capturing is disabled. Reacts dynamically to config changes at runtime.\n */\nexport const PostHogClientPlugin = (config: PostHogConfig): ClientPlugin => {\n let posthog: PostHog | null = null\n\n return {\n on: ({ event, payload }) => {\n // User logs in — never capture this event; identify only when payload has a uid.\n // Thanks to the tagged-union narrowing, `payload` is the login payload here;\n // the `payload?.uid` guard is purely defensive against bad runtime data.\n if (event === 'log:user-login') {\n if (payload?.uid) {\n posthog?.identify(payload.uid, { email: payload.email, teamUid: payload.teamUid })\n }\n return\n }\n\n // User logs out\n if (event === 'log:user-logout') {\n posthog?.reset()\n return\n }\n\n // Only capture events that are in the allowlist\n const result = sanitizeEventPayload(event, payload)\n if (result === null) {\n return\n }\n\n const properties = typeof result === 'object' && result !== null ? result : { value: result }\n\n // When the extractor returned no useful properties, fire the event\n // without a properties argument so PostHog records the event fact alone\n // (rather than a noisy `{}` payload).\n if (Object.keys(properties).length === 0) {\n posthog?.capture(event)\n return\n }\n\n posthog?.capture(event, properties)\n },\n lifecycle: {\n onInit(context) {\n if (typeof window === 'undefined') {\n return\n }\n\n const instance = ph.init(\n config.apiKey,\n {\n api_host: config.apiHost,\n ...(config.uiHost ? { ui_host: config.uiHost } : {}),\n ...(config.defaults ? { defaults: config.defaults } : {}),\n opt_out_capturing_by_default: true,\n },\n 'scalar-api-client',\n )\n\n if (instance) {\n posthog = instance\n posthog.register({ product: 'api-client' })\n\n if (context?.config.telemetry !== false) {\n posthog.opt_in_capturing()\n }\n }\n },\n onConfigChange(context) {\n if (!posthog) {\n return\n }\n\n if (context.config.telemetry === false) {\n posthog.opt_out_capturing()\n } else {\n posthog.opt_in_capturing()\n }\n },\n onDestroy() {\n posthog?.reset()\n posthog = null\n },\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,IAAa,uBAAuB,WAAwC;CAC1E,IAAI,UAA0B;CAE9B,OAAO;EACL,KAAK,EAAE,OAAO,cAAc;GAI1B,IAAI,UAAU,kBAAkB;IAC9B,IAAI,SAAS,KACX,SAAS,SAAS,QAAQ,KAAK;KAAE,OAAO,QAAQ;KAAO,SAAS,QAAQ;IAAQ,CAAC;IAEnF;GACF;GAGA,IAAI,UAAU,mBAAmB;IAC/B,SAAS,MAAM;IACf;GACF;GAGA,MAAM,SAAS,qBAAqB,OAAO,OAAO;GAClD,IAAI,WAAW,MACb;GAGF,MAAM,aAAa,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS,EAAE,OAAO,OAAO;GAK5F,IAAI,OAAO,KAAK,UAAU,CAAC,CAAC,WAAW,GAAG;IACxC,SAAS,QAAQ,KAAK;IACtB;GACF;GAEA,SAAS,QAAQ,OAAO,UAAU;EACpC;EACA,WAAW;GACT,OAAO,SAAS;IACd,IAAI,OAAO,WAAW,aACpB;IAGF,MAAM,WAAW,GAAG,KAClB,OAAO,QACP;KACE,UAAU,OAAO;KACjB,GAAI,OAAO,SAAS,EAAE,SAAS,OAAO,OAAO,IAAI,CAAC;KAClD,GAAI,OAAO,WAAW,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;KACvD,8BAA8B;IAChC,GACA,mBACF;IAEA,IAAI,UAAU;KACZ,UAAU;KACV,QAAQ,SAAS,EAAE,SAAS,aAAa,CAAC;KAE1C,IAAI,SAAS,OAAO,cAAc,OAChC,QAAQ,iBAAiB;IAE7B;GACF;GACA,eAAe,SAAS;IACtB,IAAI,CAAC,SACH;IAGF,IAAI,QAAQ,OAAO,cAAc,OAC/B,QAAQ,kBAAkB;SAE1B,QAAQ,iBAAiB;GAE7B;GACA,YAAY;IACV,SAAS,MAAM;IACf,UAAU;GACZ;EACF;CACF;AACF"}
@@ -137,6 +137,6 @@ var sanitizeEventPayload = (event, payload) => {
137
137
  return extractor(payload);
138
138
  };
139
139
  //#endregion
140
- export { sanitizeEventPayload };
140
+ export { TRACKED_EVENTS, sanitizeEventPayload };
141
141
 
142
142
  //# sourceMappingURL=sanitize-event-payload.js.map