@scalar/api-client 3.8.1 → 3.8.3

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 (263) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/components/HttpMethod/HttpMethod.vue.d.ts.map +1 -1
  3. package/dist/components/HttpMethod/HttpMethod.vue.js +1 -1
  4. package/dist/components/HttpMethod/HttpMethod.vue.js.map +1 -1
  5. package/dist/components/HttpMethod/HttpMethod.vue.script.js +2 -1
  6. package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
  7. package/dist/components/SectionFilter.vue.js +1 -1
  8. package/dist/components/SectionFilter.vue.js.map +1 -1
  9. package/dist/components/SectionFilter.vue.script.js +1 -1
  10. package/dist/components/SectionFilter.vue.script.js.map +1 -1
  11. package/dist/components/Server/ServerVariablesSelect.vue.js.map +1 -1
  12. package/dist/components/Server/ServerVariablesSelect.vue.script.js +2 -1
  13. package/dist/components/Server/ServerVariablesSelect.vue.script.js.map +1 -1
  14. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.js.map +1 -1
  15. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js +1 -1
  16. package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js.map +1 -1
  17. package/dist/components/ViewLayout/ViewLayout.vue.js.map +1 -1
  18. package/dist/components/ViewLayout/ViewLayout.vue.script.js +1 -1
  19. package/dist/components/ViewLayout/ViewLayout.vue.script.js.map +1 -1
  20. package/dist/components/ViewLayout/ViewLayoutSection.vue.js.map +1 -1
  21. package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js +1 -1
  22. package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js.map +1 -1
  23. package/dist/plugins/posthog/sanitize-event-payload.js +2 -2
  24. package/dist/plugins/posthog/sanitize-event-payload.js.map +1 -1
  25. package/dist/style.css +105 -105
  26. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
  27. package/dist/v2/blocks/operation-block/components/Header.vue.js +1 -1
  28. package/dist/v2/blocks/operation-block/components/Header.vue.js.map +1 -1
  29. package/dist/v2/blocks/operation-block/components/Header.vue.script.js +6 -1
  30. package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -1
  31. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.d.ts +4 -0
  32. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.d.ts.map +1 -1
  33. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js +1 -1
  34. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js.map +1 -1
  35. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js +7 -1
  36. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js.map +1 -1
  37. package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.js.map +1 -1
  38. package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.script.js +2 -1
  39. package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.script.js.map +1 -1
  40. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.js +1 -1
  41. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.js.map +1 -1
  42. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.script.js +5 -1
  43. package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.script.js.map +1 -1
  44. package/dist/v2/blocks/operation-code-sample/helpers/filter-clients-by-query.js.map +1 -1
  45. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.d.ts.map +1 -1
  46. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.js +171 -15
  47. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.js.map +1 -1
  48. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-parameters.d.ts.map +1 -1
  49. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-parameters.js +14 -1
  50. package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-parameters.js.map +1 -1
  51. package/dist/v2/blocks/operation-code-sample/types.d.ts +1 -1
  52. package/dist/v2/blocks/operation-code-sample/types.d.ts.map +1 -1
  53. package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
  54. package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
  55. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +1 -1
  56. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
  57. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
  58. package/dist/v2/blocks/request-block/components/RequestBody.vue.js +1 -1
  59. package/dist/v2/blocks/request-block/components/RequestBody.vue.js.map +1 -1
  60. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +3 -1
  61. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -1
  62. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.d.ts.map +1 -1
  63. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.js.map +1 -1
  64. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js +4 -1
  65. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js.map +1 -1
  66. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts.map +1 -1
  67. package/dist/v2/blocks/request-block/components/RequestParams.vue.js.map +1 -1
  68. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js +2 -1
  69. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js.map +1 -1
  70. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts.map +1 -1
  71. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js.map +1 -1
  72. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js +3 -1
  73. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js.map +1 -1
  74. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.d.ts.map +1 -1
  75. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.js.map +1 -1
  76. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js +2 -1
  77. package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js.map +1 -1
  78. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts.map +1 -1
  79. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +74 -3
  80. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js.map +1 -1
  81. package/dist/v2/blocks/response-block/ResponseBlock.vue.js +1 -1
  82. package/dist/v2/blocks/response-block/ResponseBlock.vue.js.map +1 -1
  83. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +1 -1
  84. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -1
  85. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.js.map +1 -1
  86. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js +1 -1
  87. package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js.map +1 -1
  88. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.d.ts.map +1 -1
  89. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js +1 -1
  90. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js.map +1 -1
  91. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js +54 -12
  92. package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js.map +1 -1
  93. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js +1 -1
  94. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js.map +1 -1
  95. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js +1 -1
  96. package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js.map +1 -1
  97. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.d.ts.map +1 -1
  98. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.js.map +1 -1
  99. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js +2 -1
  100. package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js.map +1 -1
  101. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.js.map +1 -1
  102. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js +1 -1
  103. package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js.map +1 -1
  104. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js +1 -1
  105. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js.map +1 -1
  106. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js +1 -1
  107. package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js.map +1 -1
  108. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.d.ts.map +1 -1
  109. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js +1 -1
  110. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js.map +1 -1
  111. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js +2 -1
  112. package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js.map +1 -1
  113. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
  114. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +1 -1
  115. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js.map +1 -1
  116. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +19 -4
  117. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -1
  118. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +1 -1
  119. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js.map +1 -1
  120. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js +2 -1
  121. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -1
  122. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.js.map +1 -1
  123. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js +3 -1
  124. package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js.map +1 -1
  125. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts +1 -1
  126. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts.map +1 -1
  127. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js.map +1 -1
  128. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +5 -1
  129. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
  130. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.d.ts.map +1 -1
  131. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.js.map +1 -1
  132. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js +2 -1
  133. package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js.map +1 -1
  134. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts.map +1 -1
  135. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js.map +1 -1
  136. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +2 -1
  137. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -1
  138. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.d.ts +1 -1
  139. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.d.ts.map +1 -1
  140. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.js.map +1 -1
  141. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js +1 -1
  142. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js.map +1 -1
  143. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.d.ts.map +1 -1
  144. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js.map +1 -1
  145. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js +5 -1
  146. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js.map +1 -1
  147. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.d.ts.map +1 -1
  148. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.js.map +1 -1
  149. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js +2 -1
  150. package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js.map +1 -1
  151. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js.map +1 -1
  152. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +1 -1
  153. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -1
  154. package/dist/v2/components/code-input/PillTooltipHost.vue.js.map +1 -1
  155. package/dist/v2/components/code-input/PillTooltipHost.vue.script.js +1 -1
  156. package/dist/v2/components/code-input/PillTooltipHost.vue.script.js.map +1 -1
  157. package/dist/v2/components/data-table/DataTable.vue.js.map +1 -1
  158. package/dist/v2/components/data-table/DataTable.vue.script.js +1 -1
  159. package/dist/v2/components/data-table/DataTable.vue.script.js.map +1 -1
  160. package/dist/v2/components/data-table/DataTableCell.vue.js.map +1 -1
  161. package/dist/v2/components/data-table/DataTableCell.vue.script.js +1 -1
  162. package/dist/v2/components/data-table/DataTableCell.vue.script.js.map +1 -1
  163. package/dist/v2/components/data-table/DataTableCheckbox.vue.d.ts.map +1 -1
  164. package/dist/v2/components/data-table/DataTableCheckbox.vue.js.map +1 -1
  165. package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js +2 -1
  166. package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js.map +1 -1
  167. package/dist/v2/components/data-table/DataTableHeader.vue.js.map +1 -1
  168. package/dist/v2/components/data-table/DataTableHeader.vue.script.js +1 -1
  169. package/dist/v2/components/data-table/DataTableHeader.vue.script.js.map +1 -1
  170. package/dist/v2/components/data-table/DataTableInput.vue.js +1 -1
  171. package/dist/v2/components/data-table/DataTableInput.vue.js.map +1 -1
  172. package/dist/v2/components/data-table/DataTableInput.vue.script.js +1 -1
  173. package/dist/v2/components/data-table/DataTableInput.vue.script.js.map +1 -1
  174. package/dist/v2/components/data-table/DataTableInputSelect.vue.js.map +1 -1
  175. package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js +4 -1
  176. package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js.map +1 -1
  177. package/dist/v2/components/forms/ConfirmationForm.vue.js.map +1 -1
  178. package/dist/v2/components/forms/ConfirmationForm.vue.script.js +1 -1
  179. package/dist/v2/components/forms/ConfirmationForm.vue.script.js.map +1 -1
  180. package/dist/v2/components/layout/CollapsibleSection.vue.js.map +1 -1
  181. package/dist/v2/components/layout/CollapsibleSection.vue.script.js +1 -1
  182. package/dist/v2/components/layout/CollapsibleSection.vue.script.js.map +1 -1
  183. package/dist/v2/components/modals/ModalClientContainer.vue.d.ts +1 -1
  184. package/dist/v2/components/modals/ModalClientContainer.vue.d.ts.map +1 -1
  185. package/dist/v2/components/modals/ModalClientContainer.vue.js +1 -1
  186. package/dist/v2/components/modals/ModalClientContainer.vue.js.map +1 -1
  187. package/dist/v2/components/modals/ModalClientContainer.vue.script.js +2 -1
  188. package/dist/v2/components/modals/ModalClientContainer.vue.script.js.map +1 -1
  189. package/dist/v2/components/server/ServerDropdown.vue.d.ts.map +1 -1
  190. package/dist/v2/components/server/ServerDropdown.vue.js.map +1 -1
  191. package/dist/v2/components/server/ServerDropdown.vue.script.js +3 -1
  192. package/dist/v2/components/server/ServerDropdown.vue.script.js.map +1 -1
  193. package/dist/v2/components/server/ServerDropdownItem.vue.d.ts.map +1 -1
  194. package/dist/v2/components/server/ServerDropdownItem.vue.js +1 -1
  195. package/dist/v2/components/server/ServerDropdownItem.vue.js.map +1 -1
  196. package/dist/v2/components/server/ServerDropdownItem.vue.script.js +2 -1
  197. package/dist/v2/components/server/ServerDropdownItem.vue.script.js.map +1 -1
  198. package/dist/v2/components/sidebar/Sidebar.vue.d.ts +1 -1
  199. package/dist/v2/components/sidebar/Sidebar.vue.d.ts.map +1 -1
  200. package/dist/v2/components/sidebar/Sidebar.vue.js.map +1 -1
  201. package/dist/v2/components/sidebar/Sidebar.vue.script.js +2 -1
  202. package/dist/v2/components/sidebar/Sidebar.vue.script.js.map +1 -1
  203. package/dist/v2/components/sidebar/SidebarMenu.vue.d.ts +1 -1
  204. package/dist/v2/components/sidebar/SidebarMenu.vue.d.ts.map +1 -1
  205. package/dist/v2/components/sidebar/SidebarMenu.vue.js.map +1 -1
  206. package/dist/v2/components/sidebar/SidebarMenu.vue.script.js +1 -1
  207. package/dist/v2/components/sidebar/SidebarMenu.vue.script.js.map +1 -1
  208. package/dist/v2/constants.js +1 -1
  209. package/dist/v2/features/command-palette/components/CommandActionForm.vue.d.ts +1 -1
  210. package/dist/v2/features/command-palette/components/CommandActionForm.vue.d.ts.map +1 -1
  211. package/dist/v2/features/command-palette/components/CommandActionForm.vue.js.map +1 -1
  212. package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js +2 -1
  213. package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js.map +1 -1
  214. package/dist/v2/features/environments/EnvironmentsList.vue.d.ts.map +1 -1
  215. package/dist/v2/features/environments/EnvironmentsList.vue.js.map +1 -1
  216. package/dist/v2/features/environments/EnvironmentsList.vue.script.js +2 -1
  217. package/dist/v2/features/environments/EnvironmentsList.vue.script.js.map +1 -1
  218. package/dist/v2/features/environments/components/Environment.vue.js.map +1 -1
  219. package/dist/v2/features/environments/components/Environment.vue.script.js +1 -1
  220. package/dist/v2/features/environments/components/Environment.vue.script.js.map +1 -1
  221. package/dist/v2/features/environments/components/EnvironmentColors.vue.js.map +1 -1
  222. package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js +1 -1
  223. package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js.map +1 -1
  224. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.d.ts +1 -1
  225. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.d.ts.map +1 -1
  226. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.js.map +1 -1
  227. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js +1 -1
  228. package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js.map +1 -1
  229. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.d.ts +1 -1
  230. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.d.ts.map +1 -1
  231. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.js.map +1 -1
  232. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js +2 -1
  233. package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js.map +1 -1
  234. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.d.ts.map +1 -1
  235. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.js.map +1 -1
  236. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js +2 -1
  237. package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map +1 -1
  238. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js +1 -1
  239. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js.map +1 -1
  240. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js +1 -1
  241. package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js.map +1 -1
  242. package/dist/v2/features/modal/Modal.vue.d.ts +1 -1
  243. package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
  244. package/dist/v2/features/modal/Modal.vue.js.map +1 -1
  245. package/dist/v2/features/modal/Modal.vue.script.js.map +1 -1
  246. package/dist/v2/features/modal/helpers/create-api-client-modal.d.ts +1 -1
  247. package/dist/v2/features/modal/helpers/create-api-client-modal.d.ts.map +1 -1
  248. package/dist/v2/features/modal/helpers/create-api-client-modal.js +1 -1
  249. package/dist/v2/features/modal/helpers/create-api-client-modal.js.map +1 -1
  250. package/dist/v2/features/modal/modal-events.d.ts +1 -1
  251. package/dist/v2/features/modal/modal-events.d.ts.map +1 -1
  252. package/dist/v2/features/modal/modal-events.js.map +1 -1
  253. package/dist/v2/features/search/components/DocumentSearchModal.vue.d.ts +1 -1
  254. package/dist/v2/features/search/components/DocumentSearchModal.vue.d.ts.map +1 -1
  255. package/dist/v2/features/search/components/DocumentSearchModal.vue.js +1 -1
  256. package/dist/v2/features/search/components/DocumentSearchModal.vue.js.map +1 -1
  257. package/dist/v2/features/search/components/DocumentSearchModal.vue.script.js +3 -1
  258. package/dist/v2/features/search/components/DocumentSearchModal.vue.script.js.map +1 -1
  259. package/dist/v2/features/search/components/SearchResult.vue.js.map +1 -1
  260. package/dist/v2/features/search/components/SearchResult.vue.script.js +1 -1
  261. package/dist/v2/features/search/components/SearchResult.vue.script.js.map +1 -1
  262. package/dist/vue-styles.css +105 -105
  263. package/package.json +10 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @scalar/api-client
2
2
 
3
+ ## 3.8.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#9145](https://github.com/scalar/scalar/pull/9145): fix(api-client): ignore `encoding.contentType` on `application/x-www-form-urlencoded` request bodies
8
+
9
+ Per OAS 3.1.x Encoding Object, `contentType` SHALL be ignored when the request body media type is not a multipart. After the recent change that lifted the multipart gate on `encoding.style`/`explode`/`allowReserved`, the `encoding` map started being passed for urlencoded bodies too. As a side effect, a urlencoded encoding entry that only set `contentType` would JSON-stringify object values into a single part instead of keeping the spec-default dotted-key flattening. Suppress `contentType` for non-multipart bodies so the flattening branch is restored.
10
+
11
+ - [#9145](https://github.com/scalar/scalar/pull/9145): fix(api-client): encode nested object properties in multipart/form-data as a single JSON part instead of flattening them with dotted keys
12
+ - [#9145](https://github.com/scalar/scalar/pull/9145): fix(api-client): serialize `multipart/form-data` and `application/x-www-form-urlencoded` parts with form / spaceDelimited / pipeDelimited / deepObject styles per RFC6570 when `encoding.style` / `explode` / `allowReserved` is set, matching how query parameters are already serialized. Replaces the dotted-key flattening previously emitted for `style: form, explode: true`.
13
+ - [#9145](https://github.com/scalar/scalar/pull/9145): fix(api-client): JSON-stringify nested object/array values under `style: form` instead of emitting `[object Object]` in `multipart/form-data` and `application/x-www-form-urlencoded` bodies. RFC 6570 form-style serialization only addresses one level of nesting and OpenAPI 3.1 leaves deeper structures undefined; readable JSON is more useful than `String(value)` garble. The documented escape hatch for cleaner output remains `style: deepObject` with `explode: true`.
14
+ - [#9155](https://github.com/scalar/scalar/pull/9155): feat(api-client): expand nested object properties of multipart form-data schemas into individual editable rows (e.g. `props.name`, `props.description`); the wire still sends one `application/json` multipart part per top-level object property — both for the initial schema-derived example and for edited form rows
15
+ - [#9248](https://github.com/scalar/scalar/pull/9248): feat: open the API client on the selected operation when launching from API Reference. The modal "Open API Client" link now includes `operation_path` and `operation_method` query params; scalar-app reads them after import and navigates to that request. Also fixes address bar blur replay when focus moves programmatically on first navigation into a draft operation.
16
+ - [#9259](https://github.com/scalar/scalar/pull/9259): fix(api-client): harden response body preview against XSS and referrer leakage
17
+
18
+ The response body preview now validates `src` against an allow-list of safe
19
+ protocols (`blob:`, `http:`, `https:`, and `data:` URIs limited to known media
20
+ types) before rendering, replaces the `<object>` fallback with a fully
21
+ sandboxed `<iframe>` (`sandbox=""`), and sets `referrerpolicy="no-referrer"`
22
+ on all media elements so untrusted response URLs cannot execute script in the
23
+ app origin or leak the user's location to third-party hosts.
24
+
25
+ ## 3.8.2
26
+
27
+ ### Patch Changes
28
+
29
+ - [#9236](https://github.com/scalar/scalar/pull/9236): fix: some analytics events not firing
30
+
3
31
  ## 3.8.1
4
32
 
5
33
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"HttpMethod.vue.d.ts","sourceRoot":"","sources":["../../../src/components/HttpMethod/HttpMethod.vue"],"names":[],"mappings":"AAuGA,KAAK,WAAW,GAAG;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC;AAgIJ,QAAA,MAAM,YAAY;;;;;cAnIH,OAAO;gBAEL,OAAO;6EAqItB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"HttpMethod.vue.d.ts","sourceRoot":"","sources":["../../../src/components/HttpMethod/HttpMethod.vue"],"names":[],"mappings":"AAyGA,KAAK,WAAW,GAAG;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC;AAgIJ,QAAA,MAAM,YAAY;;;;;cAnIH,OAAO;gBAEL,OAAO;6EAqItB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -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-7a19f363"]]);
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
 
@@ -1 +1 @@
1
- {"version":3,"file":"HttpMethod.vue.js","names":[],"sources":["../../../src/components/HttpMethod/HttpMethod.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { cva, cx, ScalarListbox } from '@scalar/components'\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 { 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":""}
1
+ {"version":3,"file":"HttpMethod.vue.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":""}
@@ -1,7 +1,8 @@
1
1
  import { computed, createBlock, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref, withCtx } from "vue";
2
- import { ScalarListbox, cva, cx } from "@scalar/components";
2
+ import { ScalarListbox } from "@scalar/components/listbox";
3
3
  import { REQUEST_METHODS, getHttpMethodInfo } from "@scalar/helpers/http/http-info";
4
4
  import { objectEntries } from "@scalar/helpers/object/object-entries";
5
+ import { cva, cx } from "@scalar/use-hooks/useBindCx";
5
6
  //#region src/components/HttpMethod/HttpMethod.vue?vue&type=script&setup=true&lang.ts
6
7
  var HttpMethod_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
8
  __name: "HttpMethod",
@@ -1 +1 @@
1
- {"version":3,"file":"HttpMethod.vue.script.js","names":[],"sources":["../../../src/components/HttpMethod/HttpMethod.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { cva, cx, ScalarListbox } from '@scalar/components'\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 { 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":";;;;;;;;;;;;;;;;;;;;EAUA,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,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"}
@@ -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-f97cc68c"]]);
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
 
@@ -1 +1 @@
1
- {"version":3,"file":"SectionFilter.vue.js","names":[],"sources":["../../src/components/SectionFilter.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends string\">\nimport { ScalarIcon } from '@scalar/components'\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":""}
1
+ {"version":3,"file":"SectionFilter.vue.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":""}
@@ -1,6 +1,6 @@
1
1
  import SectionFilterButton_default from "./SectionFilterButton.vue.js";
2
2
  import { Fragment, createBlock, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, openBlock, ref, renderList, toDisplayString, unref, useModel, withCtx, withKeys } from "vue";
3
- import { ScalarIcon } from "@scalar/components";
3
+ import { ScalarIcon } from "@scalar/components/icon";
4
4
  //#region src/components/SectionFilter.vue?vue&type=script&setup=true&lang.ts
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" };
@@ -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'\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,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 +1 @@
1
- {"version":3,"file":"ServerVariablesSelect.vue.js","names":[],"sources":["../../../src/components/Server/ServerVariablesSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarListbox,\n type ScalarListboxOption,\n} from '@scalar/components'\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":""}
1
+ {"version":3,"file":"ServerVariablesSelect.vue.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":""}
@@ -1,5 +1,6 @@
1
1
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref, withCtx } from "vue";
2
- import { ScalarButton, ScalarListbox } from "@scalar/components";
2
+ import { ScalarButton } from "@scalar/components/button";
3
+ import { ScalarListbox } from "@scalar/components/listbox";
3
4
  import { ScalarIconCaretDown } from "@scalar/icons";
4
5
  //#region src/components/Server/ServerVariablesSelect.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = {
@@ -1 +1 @@
1
- {"version":3,"file":"ServerVariablesSelect.vue.script.js","names":[],"sources":["../../../src/components/Server/ServerVariablesSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarListbox,\n type ScalarListboxOption,\n} from '@scalar/components'\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;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 +1 @@
1
- {"version":3,"file":"SidebarListElementForm.vue.js","names":[],"sources":["../../../../src/components/Sidebar/Actions/SidebarListElementForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components'\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":""}
1
+ {"version":3,"file":"SidebarListElementForm.vue.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":""}
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
2
- import { ScalarButton } from "@scalar/components";
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
5
  var SidebarListElementForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -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'\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,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 +1 @@
1
- {"version":3,"file":"ViewLayout.vue.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/components'\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":""}
1
+ {"version":3,"file":"ViewLayout.vue.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":""}
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref } from "vue";
2
- import { useBindCx } from "@scalar/components";
2
+ import { useBindCx } from "@scalar/use-hooks/useBindCx";
3
3
  //#region src/components/ViewLayout/ViewLayout.vue?vue&type=script&setup=true&lang.ts
4
4
  var ViewLayout_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
5
  __name: "ViewLayout",
@@ -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/components'\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,WAAU;;uBAIvB,mBAOM,OAAA,eAAA,mBANW,MAAA,GAAE,CAAA,sHAAA,CAAA,CAAA,EAAA,CAKjB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewLayoutSection.vue.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayoutSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/components'\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":""}
1
+ {"version":3,"file":"ViewLayoutSection.vue.js","names":[],"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":""}
@@ -1,5 +1,5 @@
1
1
  import { createCommentVNode, createElementBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderSlot, unref } from "vue";
2
- import { useBindCx } from "@scalar/components";
2
+ import { useBindCx } from "@scalar/use-hooks/useBindCx";
3
3
  //#region src/components/ViewLayout/ViewLayoutSection.vue?vue&type=script&setup=true&lang.ts
4
4
  var _hoisted_1 = {
5
5
  key: 0,
@@ -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/components'\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,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"}
@@ -76,12 +76,12 @@ var TRACKED_EVENTS = {
76
76
  "update:selected-client": empty,
77
77
  "log:login-click": empty,
78
78
  "log:register-click": empty,
79
+ "log:user-login": empty,
80
+ "log:user-logout": empty,
79
81
  "auth:update:security-scheme-secrets": void 0,
80
82
  "analytics:on:show-more": void 0,
81
83
  "analytics:on:loaded": void 0,
82
84
  "document:update:extension": void 0,
83
- "log:user-login": void 0,
84
- "log:user-logout": void 0,
85
85
  "operation:update:meta": void 0,
86
86
  "operation:update:extension": void 0,
87
87
  "operation:upsert:parameter": void 0,
@@ -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: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\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 'log:user-login': undefined,\n 'log:user-logout': 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 '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":"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"}
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: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 // ---------------------------------------------------------------------------\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 '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":"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"}