@scalar/api-client 3.14.0 → 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 (349) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/assets/computer.ascii.virtual.js.map +1 -1
  3. package/dist/components/HelpfulLink.vue.script.js +1 -1
  4. package/dist/components/HelpfulLink.vue.script.js.map +1 -1
  5. package/dist/components/HttpMethod/HttpMethod.vue.js +1 -1
  6. package/dist/components/HttpMethod/HttpMethod.vue.script.js +1 -1
  7. package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
  8. package/dist/components/ScalarAsciiArt/ScalarAsciiArt.vue.js +1 -1
  9. package/dist/components/ScalarAsciiArt/ScalarAsciiArt.vue.script.js +1 -1
  10. package/dist/components/ScalarAsciiArt/ScalarAsciiArt.vue.script.js.map +1 -1
  11. package/dist/components/SectionFilter.vue.d.ts +1 -1
  12. package/dist/components/SectionFilter.vue.d.ts.map +1 -1
  13. package/dist/components/SectionFilter.vue.js +1 -1
  14. package/dist/components/SectionFilter.vue.script.js +2 -2
  15. package/dist/components/SectionFilter.vue.script.js.map +1 -1
  16. package/dist/components/SectionFilterButton.vue.script.js +1 -1
  17. package/dist/components/SectionFilterButton.vue.script.js.map +1 -1
  18. package/dist/components/Server/ServerVariablesForm.vue.d.ts.map +1 -1
  19. package/dist/components/Server/ServerVariablesForm.vue.script.js +1 -1
  20. package/dist/components/Server/ServerVariablesForm.vue.script.js.map +1 -1
  21. package/dist/components/Server/ServerVariablesSelect.vue.script.js +1 -1
  22. package/dist/components/Server/ServerVariablesSelect.vue.script.js.map +1 -1
  23. package/dist/components/Server/ServerVariablesTextbox.vue.script.js +1 -1
  24. package/dist/components/Server/ServerVariablesTextbox.vue.script.js.map +1 -1
  25. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.d.ts.map +1 -1
  26. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.script.js +1 -1
  27. package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.script.js.map +1 -1
  28. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.d.ts.map +1 -1
  29. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js +1 -1
  30. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js.map +1 -1
  31. package/dist/components/ViewLayout/ViewLayout.vue.script.js +1 -1
  32. package/dist/components/ViewLayout/ViewLayout.vue.script.js.map +1 -1
  33. package/dist/components/ViewLayout/ViewLayoutContent.vue.js +1 -1
  34. package/dist/components/ViewLayout/ViewLayoutContent.vue.js.map +1 -1
  35. package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js +1 -1
  36. package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js.map +1 -1
  37. package/dist/hooks/use-file-dialog.js +2 -1
  38. package/dist/hooks/use-file-dialog.js.map +1 -1
  39. package/dist/plugins/posthog/index.js.map +1 -1
  40. package/dist/plugins/posthog/sanitize-event-payload.js +1 -1
  41. package/dist/plugins/posthog/sanitize-event-payload.js.map +1 -1
  42. package/dist/style.css +296 -273
  43. package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
  44. package/dist/v2/blocks/operation-block/OperationBlock.vue.js.map +1 -1
  45. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js +4 -2
  46. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js.map +1 -1
  47. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
  48. package/dist/v2/blocks/operation-block/components/Header.vue.js +1 -1
  49. package/dist/v2/blocks/operation-block/components/Header.vue.script.js +1 -1
  50. package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -1
  51. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js +1 -1
  52. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js +1 -1
  53. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js.map +1 -1
  54. package/dist/v2/blocks/operation-block/helpers/decode-buffer.js.map +1 -1
  55. package/dist/v2/blocks/operation-block/helpers/get-cookie-header-keys.js.map +1 -1
  56. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.js.map +1 -1
  57. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js.map +1 -1
  58. package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.js.map +1 -1
  59. package/dist/v2/blocks/operation-block/helpers/response-cache.js.map +1 -1
  60. package/dist/v2/blocks/operation-block/helpers/send-request.js.map +1 -1
  61. package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js.map +1 -1
  62. package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
  63. package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
  64. package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
  65. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +58 -29
  66. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
  67. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
  68. package/dist/v2/blocks/request-block/components/RequestBody.vue.js +1 -1
  69. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +1 -1
  70. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -1
  71. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.d.ts.map +1 -1
  72. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js +1 -1
  73. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js.map +1 -1
  74. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.d.ts.map +1 -1
  75. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.script.js +1 -1
  76. package/dist/v2/blocks/request-block/components/RequestBodyStructured.vue.script.js.map +1 -1
  77. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.script.js +1 -1
  78. package/dist/v2/blocks/request-block/components/RequestBodyViewToggle.vue.script.js.map +1 -1
  79. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.d.ts.map +1 -1
  80. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js +1 -1
  81. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js.map +1 -1
  82. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts +2 -0
  83. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts.map +1 -1
  84. package/dist/v2/blocks/request-block/components/RequestParams.vue.js.map +1 -1
  85. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js +5 -3
  86. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js.map +1 -1
  87. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +2 -0
  88. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts.map +1 -1
  89. package/dist/v2/blocks/request-block/components/RequestTable.vue.js +1 -1
  90. package/dist/v2/blocks/request-block/components/RequestTable.vue.js.map +1 -1
  91. package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js +6 -3
  92. package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js.map +1 -1
  93. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts +8 -0
  94. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts.map +1 -1
  95. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js.map +1 -1
  96. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js +29 -16
  97. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js.map +1 -1
  98. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js +1 -1
  99. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js.map +1 -1
  100. package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js.map +1 -1
  101. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js +1 -1
  102. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js.map +1 -1
  103. package/dist/v2/blocks/request-block/helpers/files.js.map +1 -1
  104. package/dist/v2/blocks/request-block/helpers/fold-structured-body-rows.js.map +1 -1
  105. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +10 -5
  106. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js.map +1 -1
  107. package/dist/v2/blocks/request-block/helpers/get-parameter-content.js.map +1 -1
  108. package/dist/v2/blocks/request-block/helpers/get-parameter-schema.js.map +1 -1
  109. package/dist/v2/blocks/request-block/helpers/get-structured-body-rows.js.map +1 -1
  110. package/dist/v2/blocks/request-block/helpers/group-by.js.map +1 -1
  111. package/dist/v2/blocks/request-block/helpers/group-global-cookies.d.ts +54 -0
  112. package/dist/v2/blocks/request-block/helpers/group-global-cookies.d.ts.map +1 -0
  113. package/dist/v2/blocks/request-block/helpers/group-global-cookies.js +56 -0
  114. package/dist/v2/blocks/request-block/helpers/group-global-cookies.js.map +1 -0
  115. package/dist/v2/blocks/request-block/helpers/structured-body-codec.js +1 -1
  116. package/dist/v2/blocks/request-block/helpers/structured-body-codec.js.map +1 -1
  117. package/dist/v2/blocks/request-block/helpers/validate-parameter.js.map +1 -1
  118. package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts.map +1 -1
  119. package/dist/v2/blocks/response-block/ResponseBlock.vue.js +1 -1
  120. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +1 -1
  121. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -1
  122. package/dist/v2/blocks/response-block/components/Headers.vue.script.js +1 -1
  123. package/dist/v2/blocks/response-block/components/Headers.vue.script.js.map +1 -1
  124. package/dist/v2/blocks/response-block/components/ResponseBody.vue.js +1 -1
  125. package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js +1 -1
  126. package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js.map +1 -1
  127. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js +1 -1
  128. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js.map +1 -1
  129. package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js +1 -1
  130. package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js.map +1 -1
  131. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js +1 -1
  132. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js +1 -1
  133. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js.map +1 -1
  134. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js +1 -1
  135. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js +1 -1
  136. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js.map +1 -1
  137. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.d.ts.map +1 -1
  138. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js +1 -1
  139. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js.map +1 -1
  140. package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.script.js +1 -1
  141. package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.script.js.map +1 -1
  142. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js +1 -1
  143. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js.map +1 -1
  144. package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js +1 -1
  145. package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js.map +1 -1
  146. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js +1 -1
  147. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js +1 -1
  148. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js.map +1 -1
  149. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.d.ts.map +1 -1
  150. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js +1 -1
  151. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js +1 -1
  152. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js.map +1 -1
  153. package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js +1 -1
  154. package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js.map +1 -1
  155. package/dist/v2/blocks/response-block/helpers/extract-filename.js.map +1 -1
  156. package/dist/v2/blocks/response-block/helpers/get-content-length.js.map +1 -1
  157. package/dist/v2/blocks/response-block/helpers/media-types.js.map +1 -1
  158. package/dist/v2/blocks/response-block/helpers/parse-set-cookie.js.map +1 -1
  159. package/dist/v2/blocks/response-block/helpers/prettify-jsonc-string.js.map +1 -1
  160. package/dist/v2/blocks/response-block/helpers/process-response-body.js.map +1 -1
  161. package/dist/v2/blocks/response-block/helpers/resolve-response-body-handler.js.map +1 -1
  162. package/dist/v2/blocks/response-block/helpers/resolve-response-content-type.js +7 -1
  163. package/dist/v2/blocks/response-block/helpers/resolve-response-content-type.js.map +1 -1
  164. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
  165. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +1 -1
  166. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +1 -1
  167. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -1
  168. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts.map +1 -1
  169. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +1 -1
  170. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js +1 -1
  171. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -1
  172. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.d.ts.map +1 -1
  173. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js +1 -1
  174. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js.map +1 -1
  175. package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js +3 -1
  176. package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js.map +1 -1
  177. package/dist/v2/blocks/scalar-address-bar-block/helpers/is-placeholder-path.js.map +1 -1
  178. package/dist/v2/blocks/scalar-address-bar-block/helpers/refocus-blur-target.js.map +1 -1
  179. package/dist/v2/blocks/scalar-address-bar-block/hooks/use-loading-animation.js.map +1 -1
  180. package/dist/v2/blocks/scalar-address-bar-block/hooks/use-path-masking.js.map +1 -1
  181. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts.map +1 -1
  182. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +1 -1
  183. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
  184. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.d.ts.map +1 -1
  185. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js +1 -1
  186. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js.map +1 -1
  187. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts.map +1 -1
  188. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +1 -1
  189. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -1
  190. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.d.ts.map +1 -1
  191. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js +1 -1
  192. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js.map +1 -1
  193. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.d.ts.map +1 -1
  194. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js +1 -1
  195. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js.map +1 -1
  196. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.d.ts.map +1 -1
  197. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js +1 -1
  198. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js.map +1 -1
  199. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts.map +1 -1
  200. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js +1 -1
  201. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js.map +1 -1
  202. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts.map +1 -1
  203. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js +3 -3
  204. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js.map +1 -1
  205. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts.map +1 -1
  206. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +1 -1
  207. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -1
  208. package/dist/v2/blocks/scalar-auth-selector-block/helpers/auth-options.js.map +1 -1
  209. package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js +5 -0
  210. package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js.map +1 -1
  211. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth-callback.js +1 -1
  212. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth-callback.js.map +1 -1
  213. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js +2 -2
  214. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js.map +1 -1
  215. package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js.map +1 -1
  216. package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.js.map +1 -1
  217. package/dist/v2/blocks/scalar-auth-selector-block/helpers/run-oauth2-authorize.js.map +1 -1
  218. package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js.map +1 -1
  219. package/dist/v2/components/code-input/CodeInput.vue.d.ts.map +1 -1
  220. package/dist/v2/components/code-input/CodeInput.vue.js +1 -1
  221. package/dist/v2/components/code-input/CodeInput.vue.script.js +6 -1
  222. package/dist/v2/components/code-input/CodeInput.vue.script.js.map +1 -1
  223. package/dist/v2/components/code-input/CodeInputLite.vue.d.ts.map +1 -1
  224. package/dist/v2/components/code-input/CodeInputLite.vue.js +1 -1
  225. package/dist/v2/components/code-input/CodeInputLite.vue.script.js +5 -1
  226. package/dist/v2/components/code-input/CodeInputLite.vue.script.js.map +1 -1
  227. package/dist/v2/components/code-input/PillTooltipHost.vue.script.js +1 -1
  228. package/dist/v2/components/code-input/PillTooltipHost.vue.script.js.map +1 -1
  229. package/dist/v2/components/code-input/code-variable-widget.js +1 -0
  230. package/dist/v2/components/code-input/code-variable-widget.js.map +1 -1
  231. package/dist/v2/components/code-input/helpers/build-pill-context.js.map +1 -1
  232. package/dist/v2/components/code-input/helpers/lookup-variable-value.js.map +1 -1
  233. package/dist/v2/components/code-input/helpers/pill-signature.js.map +1 -1
  234. package/dist/v2/components/code-input/helpers/serialize-value.js.map +1 -1
  235. package/dist/v2/components/context-menu/ContextMenu.vue.script.js +1 -1
  236. package/dist/v2/components/context-menu/ContextMenu.vue.script.js.map +1 -1
  237. package/dist/v2/components/data-table/DataTable.vue.script.js +1 -1
  238. package/dist/v2/components/data-table/DataTable.vue.script.js.map +1 -1
  239. package/dist/v2/components/data-table/DataTableCell.vue.script.js +1 -1
  240. package/dist/v2/components/data-table/DataTableCell.vue.script.js.map +1 -1
  241. package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js +1 -1
  242. package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js.map +1 -1
  243. package/dist/v2/components/data-table/DataTableHeader.vue.script.js +1 -1
  244. package/dist/v2/components/data-table/DataTableHeader.vue.script.js.map +1 -1
  245. package/dist/v2/components/data-table/DataTableInput.vue.d.ts.map +1 -1
  246. package/dist/v2/components/data-table/DataTableInput.vue.js +1 -1
  247. package/dist/v2/components/data-table/DataTableInput.vue.script.js +1 -1
  248. package/dist/v2/components/data-table/DataTableInput.vue.script.js.map +1 -1
  249. package/dist/v2/components/data-table/DataTableInputSelect.vue.d.ts.map +1 -1
  250. package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js +3 -2
  251. package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js.map +1 -1
  252. package/dist/v2/components/data-table/DataTableRow.vue.js +1 -1
  253. package/dist/v2/components/data-table/DataTableRow.vue.js.map +1 -1
  254. package/dist/v2/components/data-table/DataTableText.vue.script.js +1 -1
  255. package/dist/v2/components/data-table/DataTableText.vue.script.js.map +1 -1
  256. package/dist/v2/components/forms/ConfirmationForm.vue.d.ts.map +1 -1
  257. package/dist/v2/components/forms/ConfirmationForm.vue.script.js +1 -1
  258. package/dist/v2/components/forms/ConfirmationForm.vue.script.js.map +1 -1
  259. package/dist/v2/components/layout/CollapsibleSection.vue.d.ts.map +1 -1
  260. package/dist/v2/components/layout/CollapsibleSection.vue.script.js +1 -1
  261. package/dist/v2/components/layout/CollapsibleSection.vue.script.js.map +1 -1
  262. package/dist/v2/components/layout/ValueEmitter.vue.d.ts +1 -1
  263. package/dist/v2/components/layout/ValueEmitter.vue.d.ts.map +1 -1
  264. package/dist/v2/components/layout/ValueEmitter.vue.script.js +1 -1
  265. package/dist/v2/components/layout/ValueEmitter.vue.script.js.map +1 -1
  266. package/dist/v2/components/modals/DeleteModal.vue.d.ts.map +1 -1
  267. package/dist/v2/components/modals/DeleteModal.vue.script.js +1 -1
  268. package/dist/v2/components/modals/DeleteModal.vue.script.js.map +1 -1
  269. package/dist/v2/components/modals/ModalClientContainer.vue.js +1 -1
  270. package/dist/v2/components/modals/ModalClientContainer.vue.script.js +1 -1
  271. package/dist/v2/components/modals/ModalClientContainer.vue.script.js.map +1 -1
  272. package/dist/v2/components/resize/Resize.vue.js +1 -1
  273. package/dist/v2/components/resize/Resize.vue.script.js +1 -1
  274. package/dist/v2/components/resize/Resize.vue.script.js.map +1 -1
  275. package/dist/v2/components/resize/use-split-resize.js +4 -2
  276. package/dist/v2/components/resize/use-split-resize.js.map +1 -1
  277. package/dist/v2/components/server/ServerDropdown.vue.d.ts.map +1 -1
  278. package/dist/v2/components/server/ServerDropdown.vue.script.js +1 -1
  279. package/dist/v2/components/server/ServerDropdown.vue.script.js.map +1 -1
  280. package/dist/v2/components/server/ServerDropdownItem.vue.d.ts.map +1 -1
  281. package/dist/v2/components/server/ServerDropdownItem.vue.js +1 -1
  282. package/dist/v2/components/server/ServerDropdownItem.vue.script.js +1 -1
  283. package/dist/v2/components/server/ServerDropdownItem.vue.script.js.map +1 -1
  284. package/dist/v2/components/sidebar/Sidebar.vue.d.ts.map +1 -1
  285. package/dist/v2/components/sidebar/Sidebar.vue.script.js +3 -3
  286. package/dist/v2/components/sidebar/Sidebar.vue.script.js.map +1 -1
  287. package/dist/v2/components/sidebar/SidebarMenu.vue.d.ts.map +1 -1
  288. package/dist/v2/components/sidebar/SidebarMenu.vue.script.js +1 -1
  289. package/dist/v2/components/sidebar/SidebarMenu.vue.script.js.map +1 -1
  290. package/dist/v2/components/sidebar/SidebarToggle.vue.script.js +1 -1
  291. package/dist/v2/components/sidebar/SidebarToggle.vue.script.js.map +1 -1
  292. package/dist/v2/constants.js +1 -1
  293. package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js +1 -1
  294. package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js.map +1 -1
  295. package/dist/v2/features/command-palette/components/CommandActionInput.vue.script.js +1 -1
  296. package/dist/v2/features/command-palette/components/CommandActionInput.vue.script.js.map +1 -1
  297. package/dist/v2/features/environments/EnvironmentsList.vue.d.ts.map +1 -1
  298. package/dist/v2/features/environments/EnvironmentsList.vue.script.js +1 -1
  299. package/dist/v2/features/environments/EnvironmentsList.vue.script.js.map +1 -1
  300. package/dist/v2/features/environments/components/Environment.vue.d.ts.map +1 -1
  301. package/dist/v2/features/environments/components/Environment.vue.script.js +1 -1
  302. package/dist/v2/features/environments/components/Environment.vue.script.js.map +1 -1
  303. package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js +3 -2
  304. package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js.map +1 -1
  305. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.d.ts.map +1 -1
  306. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js +1 -1
  307. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js.map +1 -1
  308. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.d.ts.map +1 -1
  309. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js +1 -1
  310. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js.map +1 -1
  311. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.d.ts.map +1 -1
  312. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js +1 -1
  313. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map +1 -1
  314. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.d.ts.map +1 -1
  315. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js +1 -1
  316. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js +1 -1
  317. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js.map +1 -1
  318. package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
  319. package/dist/v2/features/modal/Modal.vue.script.js +1 -1
  320. package/dist/v2/features/modal/Modal.vue.script.js.map +1 -1
  321. package/dist/v2/features/modal/helpers/create-api-client-modal.js +11 -0
  322. package/dist/v2/features/modal/helpers/create-api-client-modal.js.map +1 -1
  323. package/dist/v2/features/modal/helpers/map-hidden-clients-config.js.map +1 -1
  324. package/dist/v2/features/modal/helpers/resolve-route-parameters.js +1 -1
  325. package/dist/v2/features/modal/helpers/resolve-route-parameters.js.map +1 -1
  326. package/dist/v2/features/modal/hooks/use-modal-sidebar.js.map +1 -1
  327. package/dist/v2/features/modal/modal-events.js.map +1 -1
  328. package/dist/v2/features/operation/Operation.vue.script.js +1 -1
  329. package/dist/v2/features/operation/Operation.vue.script.js.map +1 -1
  330. package/dist/v2/features/search/components/DocumentSearchModal.vue.d.ts.map +1 -1
  331. package/dist/v2/features/search/components/DocumentSearchModal.vue.js +1 -1
  332. package/dist/v2/features/search/components/DocumentSearchModal.vue.script.js +1 -1
  333. package/dist/v2/features/search/components/DocumentSearchModal.vue.script.js.map +1 -1
  334. package/dist/v2/features/search/components/SearchResult.vue.d.ts.map +1 -1
  335. package/dist/v2/features/search/components/SearchResult.vue.script.js +1 -1
  336. package/dist/v2/features/search/components/SearchResult.vue.script.js.map +1 -1
  337. package/dist/v2/features/search/helpers/create-fuse-instance.js.map +1 -1
  338. package/dist/v2/features/search/helpers/create-search-index.js.map +1 -1
  339. package/dist/v2/features/search/hooks/use-document-search.js.map +1 -1
  340. package/dist/v2/features/search/hooks/use-search-index.js.map +1 -1
  341. package/dist/v2/helpers/generate-location-id.js.map +1 -1
  342. package/dist/v2/helpers/handle-hotkeys.js +1 -1
  343. package/dist/v2/helpers/handle-hotkeys.js.map +1 -1
  344. package/dist/v2/helpers/test-utils.js.map +1 -1
  345. package/dist/v2/hooks/use-global-hot-keys.js.map +1 -1
  346. package/dist/v2/hooks/use-scroll-lock.js.map +1 -1
  347. package/dist/v2/workspace-events.js.map +1 -1
  348. package/dist/vue-styles.css +227 -234
  349. package/package.json +20 -20
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
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
+
3
26
  ## 3.14.0
4
27
 
5
28
  ### Minor Changes
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize-event-payload.js","names":[],"sources":["../../../src/plugins/posthog/sanitize-event-payload.ts"],"sourcesContent":["import { getValueAtPath } from '@scalar/helpers/object/get-value-at-path'\nimport type { ApiReferenceEvents } from '@scalar/workspace-store/events'\n\n/**\n * Builds an extractor that pulls a string from `payload` at `path` and emits\n * it under `{ [key]: value }`. Returns `{}` when the leaf is missing or is\n * not a string.\n *\n * `key` defaults to the dotted form of `path` (e.g. `['meta', 'type']` becomes\n * `'meta.type'`), matching the existing PostHog property names.\n *\n * Built on `getValueAtPath`, so null/undefined traversal and missing segments\n * are handled centrally.\n */\nconst stringAtPath = (path: string[], key: string = path.join('.')) => {\n return (payload: unknown): Record<string, unknown> => {\n const value = getValueAtPath(payload, path)\n return typeof value === 'string' ? { [key]: value } : {}\n }\n}\n\n/** Extractor for events whose only useful property is the fact they fired. */\nconst empty = (): Record<string, unknown> => ({})\n\n/**\n * Allowlist of events that should be forwarded to PostHog.\n *\n * Each key is an event name; its value is an extractor that pulls only the\n * safe, non-PII properties we want to track. Events not in this map are\n * silently dropped — this keeps the analytics surface explicit and auditable.\n */\ntype PayloadExtractor<K extends keyof ApiReferenceEvents = keyof ApiReferenceEvents> = (\n payload: ApiReferenceEvents[K],\n) => Record<string, unknown> | ApiReferenceEvents[K]\n\n/** Maps every event to either a typed extractor or `undefined` (opt-out) */\ntype TrackedEventsMap = {\n [K in keyof ApiReferenceEvents]: PayloadExtractor<K> | undefined\n}\n\nexport const TRACKED_EVENTS: TrackedEventsMap = {\n // Auth events — track the scheme type so we know which auth methods are popular\n 'auth:update:selected-security-schemes': stringAtPath(['meta', 'type']),\n 'auth:update:active-index': stringAtPath(['meta', 'type']),\n 'auth:update:security-scheme': stringAtPath(['payload', 'type']),\n 'auth:clear:selected-security-schemes': stringAtPath(['meta', 'type']),\n 'auth:update:selected-scopes': stringAtPath(['meta', 'type']),\n 'auth:delete:security-scheme': empty,\n 'auth:clear:security-scheme-secrets': empty,\n 'auth:upsert:scopes': empty,\n 'auth:delete:scopes': empty,\n\n // Cookie events — track whether it belongs to a document or workspace\n 'cookie:upsert:cookie': stringAtPath(['collectionType']),\n 'cookie:delete:cookie': stringAtPath(['collectionType']),\n\n // Environment events — same document-vs-workspace distinction\n 'environment:upsert:environment': stringAtPath(['collectionType']),\n 'environment:delete:environment': stringAtPath(['collectionType']),\n 'environment:upsert:environment-variable': stringAtPath(['collectionType']),\n 'environment:delete:environment-variable': stringAtPath(['collectionType']),\n\n // Document lifecycle\n 'document:create:empty-document': empty,\n 'document:delete:document': empty,\n 'document:update:info': empty,\n 'document:update:icon': empty,\n 'document:update:watch-mode': empty,\n\n // Operation events — contentType helps us understand payload format usage\n 'operation:send:request:hotkey': empty,\n 'operation:cancel:request': empty,\n 'operation:create:operation': empty,\n 'operation:delete:operation': empty,\n 'operation:create:draft-example': empty,\n 'operation:delete:example': empty,\n 'operation:update:requestBody:contentType': stringAtPath(['payload', 'contentType']),\n 'operation:update:pathMethod': empty,\n 'operation:rename:example': empty,\n 'operation:reload:history': empty,\n\n // UI events — track which surfaces users interact with\n 'ui:open:client-modal': empty,\n 'ui:open:command-palette': empty,\n 'ui:open:settings': empty,\n 'ui:download:document': stringAtPath(['format']),\n 'ui:toggle:sidebar': empty,\n 'ui:save:local-document': empty,\n 'copy-url:address-bar': empty,\n 'tabs:add:tab': empty,\n 'tabs:copy:url': empty,\n\n // Server events\n 'server:add:server': empty,\n 'server:delete:server': empty,\n\n // Tag events\n 'tag:create:tag': empty,\n 'tag:delete:tag': empty,\n\n // Request lifecycle hooks — lets us measure request volume without capturing bodies\n 'hooks:on:request:sent': empty,\n 'hooks:on:request:complete': empty,\n 'hooks:on:rebase:document:complete': empty,\n\n // Workspace preference events\n 'workspace:update:color-mode': empty,\n 'workspace:update:theme': empty,\n 'workspace:update:selected-client': empty,\n 'workspace:update:selected-example': empty,\n 'workspace:update:active-proxy': (payload) => ({ enabled: !!payload }),\n 'workspace:update:active-environment': empty,\n\n // Meta events\n 'update:dark-mode': empty,\n 'update:active-document': empty,\n 'update:selected-client': empty,\n\n // Account funnel events\n 'log:login-click': empty,\n 'log:register-click': empty,\n 'log:user-login': empty,\n 'log:user-logout': empty,\n\n // Document sync and save events\n 'log:save-document': empty,\n 'log:sync-pull-document': empty,\n 'log:sync-push-document': empty,\n\n // ---------------------------------------------------------------------------\n // Do not track — explicitly opted out so new events cause a type error\n // until they are consciously placed above with a payload\n // ---------------------------------------------------------------------------\n 'auth:update:security-scheme-secrets': undefined,\n 'analytics:on:show-more': undefined,\n 'analytics:on:loaded': undefined,\n 'document:update:extension': undefined,\n 'operation:update:meta': undefined,\n 'operation:update:extension': undefined,\n 'operation:upsert:parameter': undefined,\n 'operation:update:extra-parameters': undefined,\n 'operation:delete:parameter': undefined,\n 'operation:delete-all:parameters': undefined,\n 'operation:update:requestBody:value': undefined,\n 'operation:update:requestBody:formValue': undefined,\n 'server:initialize:servers': undefined,\n 'server:update:server': undefined,\n 'server:update:variables': undefined,\n 'server:update:selected': undefined,\n 'server:clear:servers': undefined,\n 'asyncapi-server:update:selected': undefined,\n 'asyncapi-server:update:variables': undefined,\n 'tabs:update:tabs': undefined,\n 'tabs:close:tab': undefined,\n 'tabs:close:other-tabs': undefined,\n 'tabs:navigate:previous': undefined,\n 'tabs:navigate:next': undefined,\n 'tabs:focus:tab': undefined,\n 'tabs:focus:tab-last': undefined,\n 'ui:focus:address-bar': undefined,\n 'ui:focus:send-button': undefined,\n 'ui:focus:search': undefined,\n 'ui:open:create-workspace': undefined,\n 'ui:close:client-modal': undefined,\n 'ui:navigate': undefined,\n 'toggle:nav-item': undefined,\n 'select:nav-item': undefined,\n 'intersecting:nav-item': undefined,\n 'scroll-to:nav-item': undefined,\n 'scroll-to:model-by-name': undefined,\n 'copy-url:nav-item': undefined,\n 'tag:edit:tag': undefined,\n 'workspace:update:name': undefined,\n}\n\n/**\n * Returns sanitized properties for a tracked event, or `null` if the event\n * should not be captured at all.\n *\n * This is the only function that the PostHog plugin needs to call — it\n * encapsulates both the \"should we track this?\" decision and the \"what\n * properties are safe to send?\" extraction in one step.\n */\nexport const sanitizeEventPayload = <K extends keyof ApiReferenceEvents>(\n event: K,\n payload: ApiReferenceEvents[K],\n): Record<string, unknown> | ApiReferenceEvents[K] | null => {\n const extractor = TRACKED_EVENTS[event]\n if (!extractor) {\n return null\n }\n return extractor(payload)\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAM,gBAAgB,MAAgB,MAAc,KAAK,KAAK,IAAI,KAAK;AACrE,SAAQ,YAA8C;EACpD,MAAM,QAAQ,eAAe,SAAS,KAAK;AAC3C,SAAO,OAAO,UAAU,WAAW,GAAG,MAAM,OAAO,GAAG,EAAE;;;;AAK5D,IAAM,eAAwC,EAAE;AAkBhD,IAAa,iBAAmC;CAE9C,yCAAyC,aAAa,CAAC,QAAQ,OAAO,CAAC;CACvE,4BAA4B,aAAa,CAAC,QAAQ,OAAO,CAAC;CAC1D,+BAA+B,aAAa,CAAC,WAAW,OAAO,CAAC;CAChE,wCAAwC,aAAa,CAAC,QAAQ,OAAO,CAAC;CACtE,+BAA+B,aAAa,CAAC,QAAQ,OAAO,CAAC;CAC7D,+BAA+B;CAC/B,sCAAsC;CACtC,sBAAsB;CACtB,sBAAsB;CAGtB,wBAAwB,aAAa,CAAC,iBAAiB,CAAC;CACxD,wBAAwB,aAAa,CAAC,iBAAiB,CAAC;CAGxD,kCAAkC,aAAa,CAAC,iBAAiB,CAAC;CAClE,kCAAkC,aAAa,CAAC,iBAAiB,CAAC;CAClE,2CAA2C,aAAa,CAAC,iBAAiB,CAAC;CAC3E,2CAA2C,aAAa,CAAC,iBAAiB,CAAC;CAG3E,kCAAkC;CAClC,4BAA4B;CAC5B,wBAAwB;CACxB,wBAAwB;CACxB,8BAA8B;CAG9B,iCAAiC;CACjC,4BAA4B;CAC5B,8BAA8B;CAC9B,8BAA8B;CAC9B,kCAAkC;CAClC,4BAA4B;CAC5B,4CAA4C,aAAa,CAAC,WAAW,cAAc,CAAC;CACpF,+BAA+B;CAC/B,4BAA4B;CAC5B,4BAA4B;CAG5B,wBAAwB;CACxB,2BAA2B;CAC3B,oBAAoB;CACpB,wBAAwB,aAAa,CAAC,SAAS,CAAC;CAChD,qBAAqB;CACrB,0BAA0B;CAC1B,wBAAwB;CACxB,gBAAgB;CAChB,iBAAiB;CAGjB,qBAAqB;CACrB,wBAAwB;CAGxB,kBAAkB;CAClB,kBAAkB;CAGlB,yBAAyB;CACzB,6BAA6B;CAC7B,qCAAqC;CAGrC,+BAA+B;CAC/B,0BAA0B;CAC1B,oCAAoC;CACpC,qCAAqC;CACrC,kCAAkC,aAAa,EAAE,SAAS,CAAC,CAAC,SAAS;CACrE,uCAAuC;CAGvC,oBAAoB;CACpB,0BAA0B;CAC1B,0BAA0B;CAG1B,mBAAmB;CACnB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CAGnB,qBAAqB;CACrB,0BAA0B;CAC1B,0BAA0B;CAM1B,uCAAuC,KAAA;CACvC,0BAA0B,KAAA;CAC1B,uBAAuB,KAAA;CACvB,6BAA6B,KAAA;CAC7B,yBAAyB,KAAA;CACzB,8BAA8B,KAAA;CAC9B,8BAA8B,KAAA;CAC9B,qCAAqC,KAAA;CACrC,8BAA8B,KAAA;CAC9B,mCAAmC,KAAA;CACnC,sCAAsC,KAAA;CACtC,0CAA0C,KAAA;CAC1C,6BAA6B,KAAA;CAC7B,wBAAwB,KAAA;CACxB,2BAA2B,KAAA;CAC3B,0BAA0B,KAAA;CAC1B,wBAAwB,KAAA;CACxB,mCAAmC,KAAA;CACnC,oCAAoC,KAAA;CACpC,oBAAoB,KAAA;CACpB,kBAAkB,KAAA;CAClB,yBAAyB,KAAA;CACzB,0BAA0B,KAAA;CAC1B,sBAAsB,KAAA;CACtB,kBAAkB,KAAA;CAClB,uBAAuB,KAAA;CACvB,wBAAwB,KAAA;CACxB,wBAAwB,KAAA;CACxB,mBAAmB,KAAA;CACnB,4BAA4B,KAAA;CAC5B,yBAAyB,KAAA;CACzB,eAAe,KAAA;CACf,mBAAmB,KAAA;CACnB,mBAAmB,KAAA;CACnB,yBAAyB,KAAA;CACzB,sBAAsB,KAAA;CACtB,2BAA2B,KAAA;CAC3B,qBAAqB,KAAA;CACrB,gBAAgB,KAAA;CAChB,yBAAyB,KAAA;CAC1B;;;;;;;;;AAUD,IAAa,wBACX,OACA,YAC2D;CAC3D,MAAM,YAAY,eAAe;AACjC,KAAI,CAAC,UACH,QAAO;AAET,QAAO,UAAU,QAAQ"}
1
+ {"version":3,"file":"sanitize-event-payload.js","names":[],"sources":["../../../src/plugins/posthog/sanitize-event-payload.ts"],"sourcesContent":["import { getValueAtPath } from '@scalar/helpers/object/get-value-at-path'\nimport type { ApiReferenceEvents } from '@scalar/workspace-store/events'\n\n/**\n * Builds an extractor that pulls a string from `payload` at `path` and emits\n * it under `{ [key]: value }`. Returns `{}` when the leaf is missing or is\n * not a string.\n *\n * `key` defaults to the dotted form of `path` (e.g. `['meta', 'type']` becomes\n * `'meta.type'`), matching the existing PostHog property names.\n *\n * Built on `getValueAtPath`, so null/undefined traversal and missing segments\n * are handled centrally.\n */\nconst stringAtPath = (path: string[], key: string = path.join('.')) => {\n return (payload: unknown): Record<string, unknown> => {\n const value = getValueAtPath(payload, path)\n return typeof value === 'string' ? { [key]: value } : {}\n }\n}\n\n/** Extractor for events whose only useful property is the fact they fired. */\nconst empty = (): Record<string, unknown> => ({})\n\n/**\n * Allowlist of events that should be forwarded to PostHog.\n *\n * Each key is an event name; its value is an extractor that pulls only the\n * safe, non-PII properties we want to track. Events not in this map are\n * silently dropped — this keeps the analytics surface explicit and auditable.\n */\ntype PayloadExtractor<K extends keyof ApiReferenceEvents = keyof ApiReferenceEvents> = (\n payload: ApiReferenceEvents[K],\n) => Record<string, unknown> | ApiReferenceEvents[K]\n\n/** Maps every event to either a typed extractor or `undefined` (opt-out) */\ntype TrackedEventsMap = {\n [K in keyof ApiReferenceEvents]: PayloadExtractor<K> | undefined\n}\n\nexport const TRACKED_EVENTS: TrackedEventsMap = {\n // Auth events — track the scheme type so we know which auth methods are popular\n 'auth:update:selected-security-schemes': stringAtPath(['meta', 'type']),\n 'auth:update:active-index': stringAtPath(['meta', 'type']),\n 'auth:update:security-scheme': stringAtPath(['payload', 'type']),\n 'auth:clear:selected-security-schemes': stringAtPath(['meta', 'type']),\n 'auth:update:selected-scopes': stringAtPath(['meta', 'type']),\n 'auth:delete:security-scheme': empty,\n 'auth:clear:security-scheme-secrets': empty,\n 'auth:upsert:scopes': empty,\n 'auth:delete:scopes': empty,\n\n // Cookie events — track whether it belongs to a document or workspace\n 'cookie:upsert:cookie': stringAtPath(['collectionType']),\n 'cookie:delete:cookie': stringAtPath(['collectionType']),\n\n // Environment events — same document-vs-workspace distinction\n 'environment:upsert:environment': stringAtPath(['collectionType']),\n 'environment:delete:environment': stringAtPath(['collectionType']),\n 'environment:upsert:environment-variable': stringAtPath(['collectionType']),\n 'environment:delete:environment-variable': stringAtPath(['collectionType']),\n\n // Document lifecycle\n 'document:create:empty-document': empty,\n 'document:delete:document': empty,\n 'document:update:info': empty,\n 'document:update:icon': empty,\n 'document:update:watch-mode': empty,\n\n // Operation events — contentType helps us understand payload format usage\n 'operation:send:request:hotkey': empty,\n 'operation:cancel:request': empty,\n 'operation:create:operation': empty,\n 'operation:delete:operation': empty,\n 'operation:create:draft-example': empty,\n 'operation:delete:example': empty,\n 'operation:update:requestBody:contentType': stringAtPath(['payload', 'contentType']),\n 'operation:update:pathMethod': empty,\n 'operation:rename:example': empty,\n 'operation:reload:history': empty,\n\n // UI events — track which surfaces users interact with\n 'ui:open:client-modal': empty,\n 'ui:open:command-palette': empty,\n 'ui:open:settings': empty,\n 'ui:download:document': stringAtPath(['format']),\n 'ui:toggle:sidebar': empty,\n 'ui:save:local-document': empty,\n 'copy-url:address-bar': empty,\n 'tabs:add:tab': empty,\n 'tabs:copy:url': empty,\n\n // Server events\n 'server:add:server': empty,\n 'server:delete:server': empty,\n\n // Tag events\n 'tag:create:tag': empty,\n 'tag:delete:tag': empty,\n\n // Request lifecycle hooks — lets us measure request volume without capturing bodies\n 'hooks:on:request:sent': empty,\n 'hooks:on:request:complete': empty,\n 'hooks:on:rebase:document:complete': empty,\n\n // Workspace preference events\n 'workspace:update:color-mode': empty,\n 'workspace:update:theme': empty,\n 'workspace:update:selected-client': empty,\n 'workspace:update:selected-example': empty,\n 'workspace:update:active-proxy': (payload) => ({ enabled: !!payload }),\n 'workspace:update:active-environment': empty,\n\n // Meta events\n 'update:dark-mode': empty,\n 'update:active-document': empty,\n 'update:selected-client': empty,\n\n // Account funnel events\n 'log:login-click': empty,\n 'log:register-click': empty,\n 'log:user-login': empty,\n 'log:user-logout': empty,\n\n // Document sync and save events\n 'log:save-document': empty,\n 'log:sync-pull-document': empty,\n 'log:sync-push-document': empty,\n\n // ---------------------------------------------------------------------------\n // Do not track — explicitly opted out so new events cause a type error\n // until they are consciously placed above with a payload\n // ---------------------------------------------------------------------------\n 'auth:update:security-scheme-secrets': undefined,\n 'analytics:on:show-more': undefined,\n 'analytics:on:loaded': undefined,\n 'document:update:extension': undefined,\n 'operation:update:meta': undefined,\n 'operation:update:extension': undefined,\n 'operation:upsert:parameter': undefined,\n 'operation:update:extra-parameters': undefined,\n 'operation:delete:parameter': undefined,\n 'operation:delete-all:parameters': undefined,\n 'operation:update:requestBody:value': undefined,\n 'operation:update:requestBody:formValue': undefined,\n 'server:initialize:servers': undefined,\n 'server:update:server': undefined,\n 'server:update:variables': undefined,\n 'server:update:selected': undefined,\n 'server:clear:servers': undefined,\n 'asyncapi-server:update:selected': undefined,\n 'asyncapi-server:update:variables': undefined,\n 'tabs:update:tabs': undefined,\n 'tabs:close:tab': undefined,\n 'tabs:close:other-tabs': undefined,\n 'tabs:navigate:previous': undefined,\n 'tabs:navigate:next': undefined,\n 'tabs:focus:tab': undefined,\n 'tabs:focus:tab-last': undefined,\n 'ui:focus:address-bar': undefined,\n 'ui:focus:send-button': undefined,\n 'ui:focus:search': undefined,\n 'ui:open:create-workspace': undefined,\n 'ui:close:client-modal': undefined,\n 'ui:navigate': undefined,\n 'toggle:nav-item': undefined,\n 'select:nav-item': undefined,\n 'intersecting:nav-item': undefined,\n 'scroll-to:nav-item': undefined,\n 'scroll-to:model-by-name': undefined,\n 'copy-url:nav-item': undefined,\n 'tag:edit:tag': undefined,\n 'workspace:update:name': undefined,\n}\n\n/**\n * Returns sanitized properties for a tracked event, or `null` if the event\n * should not be captured at all.\n *\n * This is the only function that the PostHog plugin needs to call — it\n * encapsulates both the \"should we track this?\" decision and the \"what\n * properties are safe to send?\" extraction in one step.\n */\nexport const sanitizeEventPayload = <K extends keyof ApiReferenceEvents>(\n event: K,\n payload: ApiReferenceEvents[K],\n): Record<string, unknown> | ApiReferenceEvents[K] | null => {\n const extractor = TRACKED_EVENTS[event]\n if (!extractor) {\n return null\n }\n return extractor(payload)\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAM,gBAAgB,MAAgB,MAAc,KAAK,KAAK,GAAG,MAAM;CACrE,QAAQ,YAA8C;EACpD,MAAM,QAAQ,eAAe,SAAS,IAAI;EAC1C,OAAO,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM,IAAI,CAAC;CACzD;AACF;;AAGA,IAAM,eAAwC,CAAC;AAkB/C,IAAa,iBAAmC;CAE9C,yCAAyC,aAAa,CAAC,QAAQ,MAAM,CAAC;CACtE,4BAA4B,aAAa,CAAC,QAAQ,MAAM,CAAC;CACzD,+BAA+B,aAAa,CAAC,WAAW,MAAM,CAAC;CAC/D,wCAAwC,aAAa,CAAC,QAAQ,MAAM,CAAC;CACrE,+BAA+B,aAAa,CAAC,QAAQ,MAAM,CAAC;CAC5D,+BAA+B;CAC/B,sCAAsC;CACtC,sBAAsB;CACtB,sBAAsB;CAGtB,wBAAwB,aAAa,CAAC,gBAAgB,CAAC;CACvD,wBAAwB,aAAa,CAAC,gBAAgB,CAAC;CAGvD,kCAAkC,aAAa,CAAC,gBAAgB,CAAC;CACjE,kCAAkC,aAAa,CAAC,gBAAgB,CAAC;CACjE,2CAA2C,aAAa,CAAC,gBAAgB,CAAC;CAC1E,2CAA2C,aAAa,CAAC,gBAAgB,CAAC;CAG1E,kCAAkC;CAClC,4BAA4B;CAC5B,wBAAwB;CACxB,wBAAwB;CACxB,8BAA8B;CAG9B,iCAAiC;CACjC,4BAA4B;CAC5B,8BAA8B;CAC9B,8BAA8B;CAC9B,kCAAkC;CAClC,4BAA4B;CAC5B,4CAA4C,aAAa,CAAC,WAAW,aAAa,CAAC;CACnF,+BAA+B;CAC/B,4BAA4B;CAC5B,4BAA4B;CAG5B,wBAAwB;CACxB,2BAA2B;CAC3B,oBAAoB;CACpB,wBAAwB,aAAa,CAAC,QAAQ,CAAC;CAC/C,qBAAqB;CACrB,0BAA0B;CAC1B,wBAAwB;CACxB,gBAAgB;CAChB,iBAAiB;CAGjB,qBAAqB;CACrB,wBAAwB;CAGxB,kBAAkB;CAClB,kBAAkB;CAGlB,yBAAyB;CACzB,6BAA6B;CAC7B,qCAAqC;CAGrC,+BAA+B;CAC/B,0BAA0B;CAC1B,oCAAoC;CACpC,qCAAqC;CACrC,kCAAkC,aAAa,EAAE,SAAS,CAAC,CAAC,QAAQ;CACpE,uCAAuC;CAGvC,oBAAoB;CACpB,0BAA0B;CAC1B,0BAA0B;CAG1B,mBAAmB;CACnB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CAGnB,qBAAqB;CACrB,0BAA0B;CAC1B,0BAA0B;CAM1B,uCAAuC,KAAA;CACvC,0BAA0B,KAAA;CAC1B,uBAAuB,KAAA;CACvB,6BAA6B,KAAA;CAC7B,yBAAyB,KAAA;CACzB,8BAA8B,KAAA;CAC9B,8BAA8B,KAAA;CAC9B,qCAAqC,KAAA;CACrC,8BAA8B,KAAA;CAC9B,mCAAmC,KAAA;CACnC,sCAAsC,KAAA;CACtC,0CAA0C,KAAA;CAC1C,6BAA6B,KAAA;CAC7B,wBAAwB,KAAA;CACxB,2BAA2B,KAAA;CAC3B,0BAA0B,KAAA;CAC1B,wBAAwB,KAAA;CACxB,mCAAmC,KAAA;CACnC,oCAAoC,KAAA;CACpC,oBAAoB,KAAA;CACpB,kBAAkB,KAAA;CAClB,yBAAyB,KAAA;CACzB,0BAA0B,KAAA;CAC1B,sBAAsB,KAAA;CACtB,kBAAkB,KAAA;CAClB,uBAAuB,KAAA;CACvB,wBAAwB,KAAA;CACxB,wBAAwB,KAAA;CACxB,mBAAmB,KAAA;CACnB,4BAA4B,KAAA;CAC5B,yBAAyB,KAAA;CACzB,eAAe,KAAA;CACf,mBAAmB,KAAA;CACnB,mBAAmB,KAAA;CACnB,yBAAyB,KAAA;CACzB,sBAAsB,KAAA;CACtB,2BAA2B,KAAA;CAC3B,qBAAqB,KAAA;CACrB,gBAAgB,KAAA;CAChB,yBAAyB,KAAA;AAC3B;;;;;;;;;AAUA,IAAa,wBACX,OACA,YAC2D;CAC3D,MAAM,YAAY,eAAe;CACjC,IAAI,CAAC,WACH,OAAO;CAET,OAAO,UAAU,OAAO;AAC1B"}