@scalar/api-reference 1.49.0 → 1.49.1

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 (365) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/AgentScalarChatInterface-MUbtSqMw.js +41 -0
  3. package/dist/AgentScalarChatInterface-MUbtSqMw.js.map +1 -0
  4. package/dist/ExternalDocs-phu7GxpZ.js +272 -0
  5. package/dist/ExternalDocs-phu7GxpZ.js.map +1 -0
  6. package/dist/MobileHeader-B71jYJdT.js +1373 -0
  7. package/dist/MobileHeader-B71jYJdT.js.map +1 -0
  8. package/dist/Operation-CixLVfKd.js +3827 -0
  9. package/dist/Operation-CixLVfKd.js.map +1 -0
  10. package/dist/SearchButton-xzhIpMCZ.js +621 -0
  11. package/dist/SearchButton-xzhIpMCZ.js.map +1 -0
  12. package/dist/ServerSelector-5y29y2BJ.js +852 -0
  13. package/dist/ServerSelector-5y29y2BJ.js.map +1 -0
  14. package/dist/blocks/index.js +3 -10
  15. package/dist/blocks/scalar-client-selector-block/index.d.ts +1 -1
  16. package/dist/blocks/scalar-info-block/index.d.ts +2 -2
  17. package/dist/blocks/scalar-server-selector-block/index.d.ts +1 -1
  18. package/dist/browser/standalone.js +40759 -34701
  19. package/dist/browser/webpack-stats.json +1 -1
  20. package/dist/components/AgentScalar/index.d.ts +3 -3
  21. package/dist/components/Anchor/index.d.ts +2 -2
  22. package/dist/components/Badge/index.d.ts +1 -1
  23. package/dist/components/Content/Auth/index.d.ts +1 -1
  24. package/dist/components/Content/Models/index.d.ts +2 -2
  25. package/dist/components/Content/Schema/Schema.vue.d.ts +1 -1
  26. package/dist/components/Content/Schema/SchemaComposition.vue.d.ts +2 -2
  27. package/dist/components/Content/Schema/SchemaObjectProperties.vue.d.ts +1 -1
  28. package/dist/components/Content/Schema/SchemaProperty.vue.d.ts +1 -1
  29. package/dist/components/Content/Schema/SchemaPropertyExamples.vue.d.ts.map +1 -1
  30. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.d.ts.map +1 -1
  31. package/dist/components/Content/Schema/helpers/get-compositions-to-render.d.ts +1 -1
  32. package/dist/components/Content/Schema/index.d.ts +4 -4
  33. package/dist/components/Content/Tags/index.d.ts +1 -1
  34. package/dist/components/Content/index.d.ts +2 -2
  35. package/dist/components/HttpMethod/index.d.ts +1 -1
  36. package/dist/components/LinkList/index.d.ts +1 -1
  37. package/dist/components/OperationsList/index.d.ts +1 -1
  38. package/dist/components/RenderPlugins/index.d.ts +1 -1
  39. package/dist/components/Section/index.d.ts +10 -10
  40. package/dist/components/SectionFlare/index.d.ts +1 -1
  41. package/dist/components/index.d.ts +5 -5
  42. package/dist/components/index.js +102 -42
  43. package/dist/components/index.js.map +1 -0
  44. package/dist/features/Operation/components/OperationParameters.vue.d.ts +1 -1
  45. package/dist/features/Operation/components/OperationResponses.vue.d.ts +1 -1
  46. package/dist/features/Operation/components/ParameterList.vue.d.ts +1 -1
  47. package/dist/features/Operation/components/ParameterListItem.vue.d.ts +1 -1
  48. package/dist/features/Operation/components/callbacks/Callback.vue.d.ts +1 -1
  49. package/dist/features/Operation/components/callbacks/Callbacks.vue.d.ts +1 -1
  50. package/dist/features/Operation/index.d.ts +1 -1
  51. package/dist/features/Operation/layouts/ClassicLayout.vue.d.ts +1 -1
  52. package/dist/features/Operation/layouts/ModernLayout.vue.d.ts +1 -1
  53. package/dist/features/Search/components/SearchResult.vue.d.ts +1 -1
  54. package/dist/features/Search/helpers/create-fuse-instance.d.ts +1 -1
  55. package/dist/features/Search/helpers/create-search-index.d.ts +1 -1
  56. package/dist/features/Search/index.d.ts +2 -2
  57. package/dist/features/Search/types.d.ts +1 -1
  58. package/dist/features/developer-tools/index.d.ts +1 -1
  59. package/dist/features/example-responses/index.d.ts +1 -1
  60. package/dist/features/external-docs/index.d.ts +1 -1
  61. package/dist/features/index.d.ts +2 -2
  62. package/dist/features/index.js +4 -10
  63. package/dist/features/info-object/index.d.ts +3 -3
  64. package/dist/features/specification-extension/index.d.ts +2 -2
  65. package/dist/features/test-request-button/index.d.ts +1 -1
  66. package/dist/features/x-badges/index.d.ts +1 -1
  67. package/dist/helpers/download.d.ts +1 -1
  68. package/dist/helpers/download.d.ts.map +1 -1
  69. package/dist/helpers/index.d.ts +8 -8
  70. package/dist/helpers/index.js +3 -24
  71. package/dist/hooks/index.d.ts +2 -2
  72. package/dist/hooks/index.js +3 -8
  73. package/dist/index.d.ts +5 -5
  74. package/dist/index.js +7 -14
  75. package/dist/lazy-bus-CV8Ox5hD.js +333 -0
  76. package/dist/lazy-bus-CV8Ox5hD.js.map +1 -0
  77. package/dist/normalize-configurations-DcVpOEjD.js +232 -0
  78. package/dist/normalize-configurations-DcVpOEjD.js.map +1 -0
  79. package/dist/plugins/hooks/usePluginManager.d.ts +1 -1
  80. package/dist/plugins/index.d.ts +3 -3
  81. package/dist/plugins/index.js +2 -9
  82. package/dist/plugins-4EyiUD_A.js +80 -0
  83. package/dist/plugins-4EyiUD_A.js.map +1 -0
  84. package/dist/src-DqcYVBWI.js +1686 -0
  85. package/dist/src-DqcYVBWI.js.map +1 -0
  86. package/dist/ssr.d.ts +2 -2
  87. package/dist/ssr.js +7 -14
  88. package/dist/storage--3JuzjCI.js +42 -0
  89. package/dist/storage--3JuzjCI.js.map +1 -0
  90. package/dist/style.css +6773 -7332
  91. package/dist/urls-gPTXGgbj.js +17 -0
  92. package/dist/urls-gPTXGgbj.js.map +1 -0
  93. package/dist/use-agent-Bnm1de0n.js +60 -0
  94. package/dist/use-agent-Bnm1de0n.js.map +1 -0
  95. package/dist/use-intersection-8QqPi2O-.js +24 -0
  96. package/dist/use-intersection-8QqPi2O-.js.map +1 -0
  97. package/package.json +25 -27
  98. package/dist/_virtual/_plugin-vue_export-helper.js +0 -10
  99. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.js +0 -7
  100. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue2.js +0 -123
  101. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.js +0 -7
  102. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue2.js +0 -142
  103. package/dist/blocks/scalar-client-selector-block/helpers/featured-clients.js +0 -24
  104. package/dist/blocks/scalar-info-block/components/DownloadLink.vue.js +0 -7
  105. package/dist/blocks/scalar-info-block/components/DownloadLink.vue2.js +0 -63
  106. package/dist/blocks/scalar-info-block/components/InfoBlock.vue.js +0 -59
  107. package/dist/blocks/scalar-info-block/components/InfoBlock.vue2.js +0 -4
  108. package/dist/blocks/scalar-info-block/components/InfoDescription.vue.js +0 -7
  109. package/dist/blocks/scalar-info-block/components/InfoDescription.vue2.js +0 -70
  110. package/dist/blocks/scalar-info-block/components/InfoLinks.vue.js +0 -38
  111. package/dist/blocks/scalar-info-block/components/InfoLinks.vue2.js +0 -4
  112. package/dist/blocks/scalar-info-block/components/InfoMarkdownSection.vue.js +0 -38
  113. package/dist/blocks/scalar-info-block/components/InfoMarkdownSection.vue2.js +0 -4
  114. package/dist/blocks/scalar-info-block/components/InfoVersion.vue.js +0 -28
  115. package/dist/blocks/scalar-info-block/components/InfoVersion.vue2.js +0 -4
  116. package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.js +0 -7
  117. package/dist/blocks/scalar-info-block/components/IntroductionCard.vue2.js +0 -19
  118. package/dist/blocks/scalar-info-block/components/IntroductionCardItem.vue.js +0 -14
  119. package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.js +0 -7
  120. package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue2.js +0 -112
  121. package/dist/blocks/scalar-info-block/components/OpenApiVersion.vue.js +0 -21
  122. package/dist/blocks/scalar-info-block/components/OpenApiVersion.vue2.js +0 -4
  123. package/dist/blocks/scalar-server-selector-block/components/Selector.vue.js +0 -76
  124. package/dist/blocks/scalar-server-selector-block/components/Selector.vue2.js +0 -4
  125. package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.js +0 -72
  126. package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue2.js +0 -4
  127. package/dist/components/AgentScalar/AgentScalarButton.vue.js +0 -22
  128. package/dist/components/AgentScalar/AgentScalarButton.vue2.js +0 -4
  129. package/dist/components/AgentScalar/AgentScalarChatInterface.vue.js +0 -4
  130. package/dist/components/AgentScalar/AgentScalarChatInterface.vue2.js +0 -29
  131. package/dist/components/AgentScalar/AgentScalarDrawer.vue.js +0 -7
  132. package/dist/components/AgentScalar/AgentScalarDrawer.vue2.js +0 -78
  133. package/dist/components/AgentScalar/OpenMCPButton.vue.js +0 -7
  134. package/dist/components/AgentScalar/OpenMCPButton.vue2.js +0 -191
  135. package/dist/components/Anchor/Anchor.vue.js +0 -51
  136. package/dist/components/Anchor/Anchor.vue2.js +0 -4
  137. package/dist/components/Anchor/WithBreadcrumb.vue.js +0 -41
  138. package/dist/components/Anchor/WithBreadcrumb.vue2.js +0 -4
  139. package/dist/components/ApiReference.vue.js +0 -10
  140. package/dist/components/ApiReference.vue2.js +0 -742
  141. package/dist/components/Badge/Badge.vue.js +0 -7
  142. package/dist/components/Badge/Badge.vue2.js +0 -26
  143. package/dist/components/ClassicHeader.vue.js +0 -21
  144. package/dist/components/Content/Auth/Auth.vue.js +0 -77
  145. package/dist/components/Content/Auth/Auth.vue2.js +0 -4
  146. package/dist/components/Content/Auth/helpers/get-default-security.js +0 -55
  147. package/dist/components/Content/Content.vue.js +0 -171
  148. package/dist/components/Content/Content.vue3.js +0 -5
  149. package/dist/components/Content/Models/Model.vue.js +0 -47
  150. package/dist/components/Content/Models/Model.vue2.js +0 -4
  151. package/dist/components/Content/Models/ModelTag.vue.js +0 -76
  152. package/dist/components/Content/Models/ModelTag.vue2.js +0 -4
  153. package/dist/components/Content/Models/components/ClassicLayout.vue.js +0 -7
  154. package/dist/components/Content/Models/components/ClassicLayout.vue2.js +0 -78
  155. package/dist/components/Content/Models/components/ModernLayout.vue.js +0 -61
  156. package/dist/components/Content/Models/components/ModernLayout.vue2.js +0 -4
  157. package/dist/components/Content/Operations/TraversedEntry.vue.js +0 -146
  158. package/dist/components/Content/Operations/TraversedEntry.vue2.js +0 -4
  159. package/dist/components/Content/Schema/RenderString.vue.js +0 -27
  160. package/dist/components/Content/Schema/RenderString.vue2.js +0 -4
  161. package/dist/components/Content/Schema/Schema.vue.js +0 -7
  162. package/dist/components/Content/Schema/Schema.vue2.js +0 -193
  163. package/dist/components/Content/Schema/SchemaComposition.vue.js +0 -120
  164. package/dist/components/Content/Schema/SchemaComposition.vue2.js +0 -4
  165. package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.js +0 -7
  166. package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue2.js +0 -36
  167. package/dist/components/Content/Schema/SchemaEnums.vue.js +0 -7
  168. package/dist/components/Content/Schema/SchemaEnums.vue2.js +0 -112
  169. package/dist/components/Content/Schema/SchemaHeading.vue.js +0 -7
  170. package/dist/components/Content/Schema/SchemaHeading.vue2.js +0 -61
  171. package/dist/components/Content/Schema/SchemaObjectExampleCodeBlock.vue.js +0 -66
  172. package/dist/components/Content/Schema/SchemaObjectExampleCodeBlock.vue2.js +0 -4
  173. package/dist/components/Content/Schema/SchemaObjectProperties.vue.js +0 -120
  174. package/dist/components/Content/Schema/SchemaObjectProperties.vue2.js +0 -4
  175. package/dist/components/Content/Schema/SchemaProperty.vue.js +0 -7
  176. package/dist/components/Content/Schema/SchemaProperty.vue2.js +0 -236
  177. package/dist/components/Content/Schema/SchemaPropertyDefault.vue.js +0 -7
  178. package/dist/components/Content/Schema/SchemaPropertyDefault.vue2.js +0 -45
  179. package/dist/components/Content/Schema/SchemaPropertyDetail.vue.js +0 -7
  180. package/dist/components/Content/Schema/SchemaPropertyDetail.vue2.js +0 -40
  181. package/dist/components/Content/Schema/SchemaPropertyExamples.vue.js +0 -7
  182. package/dist/components/Content/Schema/SchemaPropertyExamples.vue2.js +0 -80
  183. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.js +0 -7
  184. package/dist/components/Content/Schema/SchemaPropertyHeading.vue2.js +0 -318
  185. package/dist/components/Content/Schema/helpers/format-example.js +0 -41
  186. package/dist/components/Content/Schema/helpers/format-value.js +0 -35
  187. package/dist/components/Content/Schema/helpers/get-compositions-to-render.js +0 -31
  188. package/dist/components/Content/Schema/helpers/get-enum-values.js +0 -20
  189. package/dist/components/Content/Schema/helpers/get-property-description.js +0 -34
  190. package/dist/components/Content/Schema/helpers/get-ref-name.js +0 -14
  191. package/dist/components/Content/Schema/helpers/get-schema-type.js +0 -47
  192. package/dist/components/Content/Schema/helpers/has-complex-array-items.js +0 -48
  193. package/dist/components/Content/Schema/helpers/is-empty-schema-object.js +0 -13
  194. package/dist/components/Content/Schema/helpers/is-type-object.js +0 -27
  195. package/dist/components/Content/Schema/helpers/merge-all-of-schemas.js +0 -215
  196. package/dist/components/Content/Schema/helpers/optimize-value-for-display.js +0 -64
  197. package/dist/components/Content/Schema/helpers/schema-composition.js +0 -4
  198. package/dist/components/Content/Schema/helpers/schema-name.js +0 -24
  199. package/dist/components/Content/Schema/helpers/should-display-description.js +0 -12
  200. package/dist/components/Content/Schema/helpers/should-display-heading.js +0 -12
  201. package/dist/components/Content/Schema/helpers/should-render-array-item-composition.js +0 -15
  202. package/dist/components/Content/Schema/helpers/sort-property-names.js +0 -71
  203. package/dist/components/Content/Tags/Tag.vue.js +0 -46
  204. package/dist/components/Content/Tags/Tag.vue2.js +0 -4
  205. package/dist/components/Content/Tags/components/ClassicLayout.vue.js +0 -7
  206. package/dist/components/Content/Tags/components/ClassicLayout.vue2.js +0 -57
  207. package/dist/components/Content/Tags/components/ModernLayout.vue.js +0 -7
  208. package/dist/components/Content/Tags/components/ModernLayout.vue2.js +0 -56
  209. package/dist/components/Content/Tags/components/TagSection.vue.js +0 -100
  210. package/dist/components/Content/Tags/components/TagSection.vue2.js +0 -4
  211. package/dist/components/GettingStarted.vue.js +0 -7
  212. package/dist/components/GettingStarted.vue2.js +0 -82
  213. package/dist/components/HttpMethod/HttpMethod.vue.js +0 -34
  214. package/dist/components/HttpMethod/HttpMethod.vue2.js +0 -4
  215. package/dist/components/IntersectionObserver.vue.js +0 -55
  216. package/dist/components/IntersectionObserver.vue2.js +0 -4
  217. package/dist/components/Lazy/Lazy.vue.js +0 -106
  218. package/dist/components/Lazy/Lazy.vue2.js +0 -4
  219. package/dist/components/LinkList/LinkList.vue.js +0 -7
  220. package/dist/components/LinkList/LinkList.vue2.js +0 -48
  221. package/dist/components/LoadingSkeleton.vue.js +0 -7
  222. package/dist/components/LoadingSkeleton.vue2.js +0 -20
  223. package/dist/components/MobileHeader.vue.js +0 -62
  224. package/dist/components/MobileHeader.vue2.js +0 -4
  225. package/dist/components/OperationPath.vue.js +0 -7
  226. package/dist/components/OperationPath.vue2.js +0 -30
  227. package/dist/components/OperationsList/OperationsList.vue.js +0 -7
  228. package/dist/components/OperationsList/OperationsList.vue2.js +0 -61
  229. package/dist/components/OperationsList/OperationsListItem.vue.js +0 -7
  230. package/dist/components/OperationsList/OperationsListItem.vue2.js +0 -68
  231. package/dist/components/RenderPlugins/RenderPlugins.vue.js +0 -43
  232. package/dist/components/RenderPlugins/RenderPlugins.vue2.js +0 -4
  233. package/dist/components/ScreenReader.vue.js +0 -7
  234. package/dist/components/ScreenReader.vue2.js +0 -21
  235. package/dist/components/Section/CompactSection.vue.js +0 -7
  236. package/dist/components/Section/CompactSection.vue2.js +0 -60
  237. package/dist/components/Section/Section.vue.js +0 -7
  238. package/dist/components/Section/Section.vue2.js +0 -23
  239. package/dist/components/Section/SectionAccordion.vue.js +0 -7
  240. package/dist/components/Section/SectionAccordion.vue2.js +0 -76
  241. package/dist/components/Section/SectionColumn.vue.js +0 -14
  242. package/dist/components/Section/SectionColumns.vue.js +0 -14
  243. package/dist/components/Section/SectionContainer.vue.js +0 -7
  244. package/dist/components/Section/SectionContainer.vue2.js +0 -21
  245. package/dist/components/Section/SectionContainerAccordion.vue.js +0 -7
  246. package/dist/components/Section/SectionContainerAccordion.vue2.js +0 -54
  247. package/dist/components/Section/SectionContent.vue.js +0 -7
  248. package/dist/components/Section/SectionContent.vue2.js +0 -22
  249. package/dist/components/Section/SectionHeader.vue.js +0 -7
  250. package/dist/components/Section/SectionHeader.vue2.js +0 -26
  251. package/dist/components/Section/SectionHeaderTag.vue.js +0 -7
  252. package/dist/components/Section/SectionHeaderTag.vue2.js +0 -20
  253. package/dist/components/SectionFlare/SectionFlare.vue.js +0 -14
  254. package/dist/components/ShowMoreButton.vue.js +0 -7
  255. package/dist/components/ShowMoreButton.vue2.js +0 -23
  256. package/dist/consts/urls.js +0 -16
  257. package/dist/features/Operation/Operation.vue.js +0 -100
  258. package/dist/features/Operation/Operation.vue2.js +0 -4
  259. package/dist/features/Operation/components/ContentTypeSelect.vue.js +0 -88
  260. package/dist/features/Operation/components/ContentTypeSelect.vue2.js +0 -4
  261. package/dist/features/Operation/components/Header.vue.js +0 -33
  262. package/dist/features/Operation/components/Header.vue2.js +0 -4
  263. package/dist/features/Operation/components/Headers.vue.js +0 -7
  264. package/dist/features/Operation/components/Headers.vue2.js +0 -71
  265. package/dist/features/Operation/components/OperationParameters.vue.js +0 -92
  266. package/dist/features/Operation/components/OperationParameters.vue2.js +0 -4
  267. package/dist/features/Operation/components/OperationResponses.vue.js +0 -44
  268. package/dist/features/Operation/components/OperationResponses.vue2.js +0 -4
  269. package/dist/features/Operation/components/ParameterList.vue.js +0 -50
  270. package/dist/features/Operation/components/ParameterList.vue2.js +0 -4
  271. package/dist/features/Operation/components/ParameterListItem.vue.js +0 -7
  272. package/dist/features/Operation/components/ParameterListItem.vue2.js +0 -163
  273. package/dist/features/Operation/components/RequestBody.vue.js +0 -7
  274. package/dist/features/Operation/components/RequestBody.vue2.js +0 -164
  275. package/dist/features/Operation/components/callbacks/Callback.vue.js +0 -7
  276. package/dist/features/Operation/components/callbacks/Callback.vue2.js +0 -60
  277. package/dist/features/Operation/components/callbacks/Callbacks.vue.js +0 -63
  278. package/dist/features/Operation/components/callbacks/Callbacks.vue2.js +0 -4
  279. package/dist/features/Operation/helpers/filter-selected-security.js +0 -28
  280. package/dist/features/Operation/helpers/get-first-server.js +0 -25
  281. package/dist/features/Operation/layouts/ClassicLayout.vue.js +0 -7
  282. package/dist/features/Operation/layouts/ClassicLayout.vue2.js +0 -243
  283. package/dist/features/Operation/layouts/ModernLayout.vue.js +0 -7
  284. package/dist/features/Operation/layouts/ModernLayout.vue2.js +0 -256
  285. package/dist/features/Search/components/SearchButton.vue.js +0 -88
  286. package/dist/features/Search/components/SearchButton.vue2.js +0 -4
  287. package/dist/features/Search/components/SearchModal.vue.js +0 -7
  288. package/dist/features/Search/components/SearchModal.vue2.js +0 -120
  289. package/dist/features/Search/components/SearchResult.vue.js +0 -84
  290. package/dist/features/Search/components/SearchResult.vue2.js +0 -4
  291. package/dist/features/Search/helpers/create-fuse-instance.js +0 -43
  292. package/dist/features/Search/helpers/create-search-index.js +0 -119
  293. package/dist/features/Search/hooks/useSearchIndex.js +0 -33
  294. package/dist/features/ask-agent-button/AskAgentButton.vue.js +0 -7
  295. package/dist/features/ask-agent-button/AskAgentButton.vue2.js +0 -51
  296. package/dist/features/developer-tools/DeveloperTools.vue.js +0 -60
  297. package/dist/features/developer-tools/DeveloperTools.vue2.js +0 -4
  298. package/dist/features/developer-tools/components/ApiReferenceToolbarBlurb.vue.js +0 -13
  299. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayout.vue.js +0 -33
  300. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayout.vue2.js +0 -4
  301. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.js +0 -138
  302. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue2.js +0 -4
  303. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigTheme.vue.js +0 -66
  304. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigTheme.vue2.js +0 -4
  305. package/dist/features/developer-tools/components/ApiReferenceToolbarPopover.vue.js +0 -54
  306. package/dist/features/developer-tools/components/ApiReferenceToolbarPopover.vue2.js +0 -4
  307. package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.js +0 -71
  308. package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue2.js +0 -4
  309. package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.js +0 -63
  310. package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue2.js +0 -4
  311. package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.js +0 -73
  312. package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue2.js +0 -4
  313. package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.js +0 -57
  314. package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue2.js +0 -4
  315. package/dist/features/developer-tools/components/DeployApiReference.vue.js +0 -35
  316. package/dist/features/developer-tools/components/DeployApiReference.vue2.js +0 -4
  317. package/dist/features/developer-tools/components/ModifyConfiguration.vue.js +0 -103
  318. package/dist/features/developer-tools/components/ModifyConfiguration.vue2.js +0 -4
  319. package/dist/features/developer-tools/components/ShareApiReference.vue.js +0 -35
  320. package/dist/features/developer-tools/components/ShareApiReference.vue2.js +0 -4
  321. package/dist/features/example-responses/ExampleResponse.vue.js +0 -7
  322. package/dist/features/example-responses/ExampleResponse.vue2.js +0 -61
  323. package/dist/features/example-responses/ExampleResponseTab.vue.js +0 -7
  324. package/dist/features/example-responses/ExampleResponseTab.vue2.js +0 -25
  325. package/dist/features/example-responses/ExampleResponseTabList.vue.js +0 -7
  326. package/dist/features/example-responses/ExampleResponseTabList.vue2.js +0 -37
  327. package/dist/features/example-responses/ExampleResponses.vue.js +0 -7
  328. package/dist/features/example-responses/ExampleResponses.vue2.js +0 -181
  329. package/dist/features/example-responses/ExampleSchema.vue.js +0 -42
  330. package/dist/features/example-responses/ExampleSchema.vue2.js +0 -4
  331. package/dist/features/example-responses/has-response-content.js +0 -28
  332. package/dist/features/external-docs/ExternalDocs.vue.js +0 -42
  333. package/dist/features/external-docs/ExternalDocs.vue2.js +0 -4
  334. package/dist/features/info-object/Contact.vue.js +0 -46
  335. package/dist/features/info-object/Contact.vue2.js +0 -4
  336. package/dist/features/info-object/License.vue.js +0 -40
  337. package/dist/features/info-object/License.vue2.js +0 -4
  338. package/dist/features/info-object/TermsOfService.vue.js +0 -34
  339. package/dist/features/info-object/TermsOfService.vue2.js +0 -4
  340. package/dist/features/multiple-documents/DocumentSelector.vue.js +0 -54
  341. package/dist/features/multiple-documents/DocumentSelector.vue2.js +0 -4
  342. package/dist/features/specification-extension/SpecificationExtension.vue.js +0 -4
  343. package/dist/features/specification-extension/SpecificationExtension.vue2.js +0 -52
  344. package/dist/features/specification-extension/helpers.js +0 -9
  345. package/dist/features/test-request-button/TestRequestButton.vue.js +0 -7
  346. package/dist/features/test-request-button/TestRequestButton.vue2.js +0 -46
  347. package/dist/features/x-badges/XBadges.vue.js +0 -35
  348. package/dist/features/x-badges/XBadges.vue2.js +0 -4
  349. package/dist/helpers/color-mode.js +0 -9
  350. package/dist/helpers/download.js +0 -45
  351. package/dist/helpers/id-routing.js +0 -109
  352. package/dist/helpers/lazy-bus.js +0 -195
  353. package/dist/helpers/load-from-perssistance.js +0 -17
  354. package/dist/helpers/map-config-plugins.js +0 -27
  355. package/dist/helpers/map-config-to-workspace-store.js +0 -45
  356. package/dist/helpers/normalize-configurations.js +0 -69
  357. package/dist/helpers/openapi.js +0 -135
  358. package/dist/helpers/storage.js +0 -47
  359. package/dist/helpers/upload-temp-document.js +0 -24
  360. package/dist/hooks/use-agent.js +0 -42
  361. package/dist/hooks/use-intersection.js +0 -32
  362. package/dist/plugins/hooks/usePluginManager.js +0 -14
  363. package/dist/plugins/persistance-plugin.js +0 -48
  364. package/dist/plugins/plugin-manager.js +0 -39
  365. package/dist/standalone/lib/html-api.js +0 -81
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileHeader-B71jYJdT.js","names":[],"sources":["../src/components/ClassicHeader.vue","../src/components/Section/SectionContainerAccordion.vue","../src/components/Section/SectionContainerAccordion.vue","../src/components/Section/CompactSection.vue","../src/components/Section/CompactSection.vue","../src/components/Content/Auth/helpers/get-default-security.ts","../src/components/Content/Auth/Auth.vue","../src/components/Content/Auth/Auth.vue","../src/components/Content/Models/components/ClassicLayout.vue","../src/components/Content/Models/components/ClassicLayout.vue","../src/components/Content/Models/components/ModernLayout.vue","../src/components/Content/Models/components/ModernLayout.vue","../src/components/Content/Models/Model.vue","../src/components/Content/Models/Model.vue","../src/components/ShowMoreButton.vue","../src/components/ShowMoreButton.vue","../src/components/Content/Models/ModelTag.vue","../src/components/Content/Models/ModelTag.vue","../src/components/Content/Tags/components/ClassicLayout.vue","../src/components/Content/Tags/components/ClassicLayout.vue","../src/components/OperationsList/OperationsListItem.vue","../src/components/OperationsList/OperationsListItem.vue","../src/components/OperationsList/OperationsList.vue","../src/components/OperationsList/OperationsList.vue","../src/components/Content/Tags/components/TagSection.vue","../src/components/Content/Tags/components/TagSection.vue","../src/components/Content/Tags/components/ModernLayout.vue","../src/components/Content/Tags/components/ModernLayout.vue","../src/components/Content/Tags/Tag.vue","../src/components/Content/Tags/Tag.vue","../src/components/Lazy/Lazy.vue","../src/components/Lazy/Lazy.vue","../src/components/Content/Operations/TraversedEntry.vue","../src/components/Content/Operations/TraversedEntry.vue","../src/components/RenderPlugins/RenderPlugins.vue","../src/components/RenderPlugins/RenderPlugins.vue","../src/components/SectionFlare/SectionFlare.vue","../src/components/Content/Content.vue","../src/components/Content/Content.vue","../src/components/MobileHeader.vue","../src/components/MobileHeader.vue"],"sourcesContent":["<script setup lang=\"ts\"></script>\n<template>\n <div class=\"references-classic-header-container\">\n <div class=\"references-classic-header\">\n <div class=\"references-classic-header-content\">\n <slot />\n </div>\n <slot name=\"dark-mode-toggle\" />\n </div>\n </div>\n</template>\n<style scoped>\n.references-classic-header {\n display: flex;\n align-items: center;\n gap: 12px;\n\n max-width: var(--refs-content-max-width);\n margin: auto;\n padding: 12px 0;\n}\n.references-classic-header-content {\n display: flex;\n gap: 12px;\n flex-grow: 1;\n}\n\n.references-classic-header-container {\n position: relative;\n padding: 0 60px;\n}\n@container narrow-references-container (max-width: 900px) {\n .references-classic-header {\n padding: 12px 24px;\n }\n .references-classic-header-container {\n padding: 0;\n }\n}\n.references-classic-header-icon {\n height: 24px;\n color: var(--scalar-color-1);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue'\nimport { ScalarIconCaretRight } from '@scalar/icons'\n\ndefineProps<{\n modelValue: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n</script>\n<template>\n <section class=\"section-accordion-wrapper\">\n <Disclosure\n as=\"div\"\n class=\"section-accordion\">\n <DisclosureButton\n class=\"section-accordion-button\"\n @click=\"emit('update:modelValue', !modelValue)\">\n <ScalarIconCaretRight\n class=\"section-accordion-chevron size-5 transition-transform\"\n :class=\"{ 'rotate-90': modelValue }\" />\n <div class=\"section-accordion-title\">\n <slot name=\"title\" />\n </div>\n </DisclosureButton>\n <DisclosurePanel\n v-if=\"modelValue\"\n class=\"section-accordion-content\"\n static>\n <slot />\n </DisclosurePanel>\n </Disclosure>\n </section>\n</template>\n<style scoped>\n.section-accordion-wrapper {\n padding: 0 60px;\n}\n.section-accordion {\n position: relative;\n width: 100%;\n max-width: var(--refs-content-max-width);\n margin: auto;\n}\n.section-accordion-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n padding-top: 12px;\n}\n.section-accordion-button {\n width: 100%;\n display: flex;\n\n cursor: pointer;\n\n padding: 6px 0 6px 0;\n margin: -6px 0 -6px 0;\n border-radius: var(--scalar-radius);\n}\n.section-accordion-chevron {\n position: absolute;\n left: -22px;\n top: 12px;\n color: var(--scalar-color-3);\n}\n\n.section-accordion-button:hover .section-accordion-chevron {\n color: var(--scalar-color-1);\n}\n.section-accordion-title {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n flex: 1;\n padding: 0 6px;\n}\n.section-accordion-title :deep(.section-header-wrapper) {\n grid-template-columns: 1fr;\n}\n.section-accordion-title :deep(.section-header) {\n margin-bottom: 0;\n}\n@container narrow-references-container (max-width: 900px) {\n .section-accordion-chevron {\n width: 16px;\n left: -16px;\n top: 14px;\n }\n .section-accordion-wrapper {\n padding: calc(var(--refs-viewport-offset)) 24px 0 24px;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue'\nimport { ScalarIconCaretRight } from '@scalar/icons'\n\ndefineProps<{\n modelValue: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n</script>\n<template>\n <section class=\"section-accordion-wrapper\">\n <Disclosure\n as=\"div\"\n class=\"section-accordion\">\n <DisclosureButton\n class=\"section-accordion-button\"\n @click=\"emit('update:modelValue', !modelValue)\">\n <ScalarIconCaretRight\n class=\"section-accordion-chevron size-5 transition-transform\"\n :class=\"{ 'rotate-90': modelValue }\" />\n <div class=\"section-accordion-title\">\n <slot name=\"title\" />\n </div>\n </DisclosureButton>\n <DisclosurePanel\n v-if=\"modelValue\"\n class=\"section-accordion-content\"\n static>\n <slot />\n </DisclosurePanel>\n </Disclosure>\n </section>\n</template>\n<style scoped>\n.section-accordion-wrapper {\n padding: 0 60px;\n}\n.section-accordion {\n position: relative;\n width: 100%;\n max-width: var(--refs-content-max-width);\n margin: auto;\n}\n.section-accordion-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n padding-top: 12px;\n}\n.section-accordion-button {\n width: 100%;\n display: flex;\n\n cursor: pointer;\n\n padding: 6px 0 6px 0;\n margin: -6px 0 -6px 0;\n border-radius: var(--scalar-radius);\n}\n.section-accordion-chevron {\n position: absolute;\n left: -22px;\n top: 12px;\n color: var(--scalar-color-3);\n}\n\n.section-accordion-button:hover .section-accordion-chevron {\n color: var(--scalar-color-1);\n}\n.section-accordion-title {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n flex: 1;\n padding: 0 6px;\n}\n.section-accordion-title :deep(.section-header-wrapper) {\n grid-template-columns: 1fr;\n}\n.section-accordion-title :deep(.section-header) {\n margin-bottom: 0;\n}\n@container narrow-references-container (max-width: 900px) {\n .section-accordion-chevron {\n width: 16px;\n left: -16px;\n top: 14px;\n }\n .section-accordion-wrapper {\n padding: calc(var(--refs-viewport-offset)) 24px 0 24px;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarIconCaretRight } from '@scalar/icons'\n\nimport { Anchor } from '@/components/Anchor'\n\nimport Section from './Section.vue'\n\nconst { id } = defineProps<{\n id: string\n label?: string\n modelValue: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'copyAnchorUrl'): void\n}>()\n</script>\n<template>\n <section\n :aria-label=\"label\"\n class=\"collapsible-section\">\n <button\n :id=\"id\"\n :aria-controls=\"id\"\n :aria-expanded=\"modelValue\"\n class=\"collapsible-section-trigger\"\n :class=\"{ 'collapsible-section-trigger-open': modelValue }\"\n type=\"button\"\n @click=\"emit('update:modelValue', !modelValue)\">\n <ScalarIconCaretRight\n class=\"size-3 transition-transform duration-100\"\n :class=\"{ 'rotate-90': modelValue }\"\n weight=\"bold\" />\n <Anchor\n class=\"collapsible-section-header\"\n @copyAnchorUrl=\"() => emit('copyAnchorUrl')\">\n <slot name=\"heading\" />\n </Anchor>\n </button>\n <Section\n v-if=\"modelValue\"\n class=\"collapsible-section-content\"\n :label=\"label\">\n <slot />\n </Section>\n </section>\n</template>\n<style scoped>\n.collapsible-section {\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n position: relative;\n}\n.collapsible-section-header {\n color: var(--scalar-color-1);\n}\n.collapsible-section .collapsible-section-trigger {\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 10px 0;\n font-size: var(--scalar-font-size-3);\n z-index: 1;\n position: relative;\n}\n.collapsible-section-trigger svg {\n color: var(--scalar-color-3);\n position: absolute;\n left: -19px;\n}\n.collapsible-section:hover .collapsible-section-trigger svg {\n color: var(--scalar-color-1);\n}\n.collapsible-section .collapsible-section-trigger :deep(.anchor-copy) {\n line-height: 18.5px;\n}\n.collapsible-section-content {\n padding: 0;\n margin: 0;\n margin-bottom: 10px;\n scroll-margin-top: 140px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarIconCaretRight } from '@scalar/icons'\n\nimport { Anchor } from '@/components/Anchor'\n\nimport Section from './Section.vue'\n\nconst { id } = defineProps<{\n id: string\n label?: string\n modelValue: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'copyAnchorUrl'): void\n}>()\n</script>\n<template>\n <section\n :aria-label=\"label\"\n class=\"collapsible-section\">\n <button\n :id=\"id\"\n :aria-controls=\"id\"\n :aria-expanded=\"modelValue\"\n class=\"collapsible-section-trigger\"\n :class=\"{ 'collapsible-section-trigger-open': modelValue }\"\n type=\"button\"\n @click=\"emit('update:modelValue', !modelValue)\">\n <ScalarIconCaretRight\n class=\"size-3 transition-transform duration-100\"\n :class=\"{ 'rotate-90': modelValue }\"\n weight=\"bold\" />\n <Anchor\n class=\"collapsible-section-header\"\n @copyAnchorUrl=\"() => emit('copyAnchorUrl')\">\n <slot name=\"heading\" />\n </Anchor>\n </button>\n <Section\n v-if=\"modelValue\"\n class=\"collapsible-section-content\"\n :label=\"label\">\n <slot />\n </Section>\n </section>\n</template>\n<style scoped>\n.collapsible-section {\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n position: relative;\n}\n.collapsible-section-header {\n color: var(--scalar-color-1);\n}\n.collapsible-section .collapsible-section-trigger {\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 10px 0;\n font-size: var(--scalar-font-size-3);\n z-index: 1;\n position: relative;\n}\n.collapsible-section-trigger svg {\n color: var(--scalar-color-3);\n position: absolute;\n left: -19px;\n}\n.collapsible-section:hover .collapsible-section-trigger svg {\n color: var(--scalar-color-1);\n}\n.collapsible-section .collapsible-section-trigger :deep(.anchor-copy) {\n line-height: 18.5px;\n}\n.collapsible-section-content {\n padding: 0;\n margin: 0;\n margin-bottom: 10px;\n scroll-margin-top: 140px;\n}\n</style>\n","import type { MergedSecuritySchemes } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport type { AuthenticationConfiguration } from '@scalar/types/api-reference'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport { unpackProxyObject } from '@scalar/workspace-store/helpers/unpack-proxy'\nimport type {\n SecurityRequirementObject,\n SecuritySchemeObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\n/**\n * Extracts the default scopes for a security scheme.\n * Only OAuth2 schemes can have default scopes via the x-default-scopes extension.\n */\nexport const getDefaultScopes = (scheme: SecuritySchemeObject | undefined): string[] => {\n if (!scheme || scheme.type !== 'oauth2') {\n return []\n }\n\n return scheme['x-default-scopes'] ?? []\n}\n\n/**\n * Hydrates an existing security requirement with configured default scopes.\n * Explicit scopes from the OpenAPI requirement take precedence over x-default-scopes.\n */\nconst hydrateSecurityRequirement = (\n requirement: SecurityRequirementObject,\n securitySchemes: MergedSecuritySchemes,\n): SecurityRequirementObject => {\n const hydratedRequirement: SecurityRequirementObject = {}\n\n for (const [schemeName, scopes] of Object.entries(unpackProxyObject(requirement, { depth: 1 }) ?? requirement)) {\n if (Array.isArray(scopes) && scopes.length > 0) {\n hydratedRequirement[schemeName] = scopes\n continue\n }\n\n const scheme = getResolvedRef(securitySchemes[schemeName])\n hydratedRequirement[schemeName] = getDefaultScopes(scheme)\n }\n\n return hydratedRequirement\n}\n\n/**\n * Processes a single scheme name and adds it to the accumulator with its default scopes.\n */\nconst addSchemeToRequirement = (\n acc: SecurityRequirementObject,\n schemeName: string,\n securitySchemes: MergedSecuritySchemes,\n): void => {\n const scheme = getResolvedRef(securitySchemes[schemeName])\n acc[schemeName] = getDefaultScopes(scheme)\n}\n\n/**\n * Converts the preferred security scheme configuration into a SecurityRequirementObject.\n * Handles both flat arrays and nested arrays (for complex auth scenarios).\n */\nconst buildSecurityRequirementFromPreferred = (\n preferredSecurityScheme: string | (string | string[])[],\n securitySchemes: MergedSecuritySchemes,\n): SecurityRequirementObject => {\n if (!Array.isArray(preferredSecurityScheme)) {\n const scheme = getResolvedRef(securitySchemes[preferredSecurityScheme])\n return { [preferredSecurityScheme]: getDefaultScopes(scheme) }\n }\n\n const requirement: SecurityRequirementObject = {}\n\n for (const item of preferredSecurityScheme) {\n if (Array.isArray(item)) {\n // Handle nested arrays for complex auth (e.g., [['oauth2', 'apiKey'], 'basic'])\n for (const schemeName of item) {\n addSchemeToRequirement(requirement, schemeName, securitySchemes)\n }\n } else {\n addSchemeToRequirement(requirement, item, securitySchemes)\n }\n }\n\n return requirement\n}\n\n/**\n * Determines the default security scheme to use for an operation.\n *\n * Priority order:\n * 1. User-configured preferred security scheme (if provided)\n * 2. First security requirement from the OpenAPI spec\n * 3. null (no security required)\n */\nexport const getDefaultSecurity = (\n securityRequirements: SecurityRequirementObject[],\n preferredSecurityScheme: AuthenticationConfiguration['preferredSecurityScheme'],\n securitySchemes: MergedSecuritySchemes,\n): SecurityRequirementObject | null => {\n if (preferredSecurityScheme) {\n return buildSecurityRequirementFromPreferred(preferredSecurityScheme, securitySchemes)\n }\n\n const firstRequirement = securityRequirements[0]\n if (firstRequirement) {\n return hydrateSecurityRequirement(firstRequirement, securitySchemes)\n }\n\n return null\n}\n","<script setup lang=\"ts\">\nimport {\n AuthSelector,\n type MergedSecuritySchemes,\n} from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n} from '@scalar/api-client/v2/features/operation'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\nimport { computed, watch } from 'vue'\n\nimport { getDefaultSecurity } from '@/components/Content/Auth/helpers/get-default-security'\n\nconst { document, environment, eventBus, options, securitySchemes, authStore } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n authStore: AuthStore\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n securitySchemes: MergedSecuritySchemes\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** Grab the selected security for the document from the auth store */\nconst documentSelectedSecurity = computed(() =>\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName: document?.['x-scalar-navigation']?.name ?? '',\n }),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n documentSelectedSecurity.value,\n undefined,\n securityRequirements.value,\n ),\n)\n\n// We set the initial security on the document to the default if it doesn't exist\nwatch(\n documentSelectedSecurity,\n (newDocumentSelectedSecurity) => {\n if (typeof newDocumentSelectedSecurity !== 'undefined') {\n return\n }\n\n const defaultSecurity = getDefaultSecurity(\n securityRequirements.value,\n options.authentication?.preferredSecurityScheme,\n securitySchemes,\n )\n if (!defaultSecurity) {\n return\n }\n\n eventBus.emit('auth:update:selected-security-schemes', {\n selectedRequirements: [defaultSecurity],\n newSchemes: [],\n meta: { type: 'document' },\n })\n },\n { immediate: true },\n)\n</script>\n<template>\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :createAnySecurityScheme=\"\n options.authentication?.createAnySecurityScheme ?? false\n \"\n :environment\n :eventBus\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n</template>\n","<script setup lang=\"ts\">\nimport {\n AuthSelector,\n type MergedSecuritySchemes,\n} from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n} from '@scalar/api-client/v2/features/operation'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\nimport { computed, watch } from 'vue'\n\nimport { getDefaultSecurity } from '@/components/Content/Auth/helpers/get-default-security'\n\nconst { document, environment, eventBus, options, securitySchemes, authStore } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n authStore: AuthStore\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n securitySchemes: MergedSecuritySchemes\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** Grab the selected security for the document from the auth store */\nconst documentSelectedSecurity = computed(() =>\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName: document?.['x-scalar-navigation']?.name ?? '',\n }),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n documentSelectedSecurity.value,\n undefined,\n securityRequirements.value,\n ),\n)\n\n// We set the initial security on the document to the default if it doesn't exist\nwatch(\n documentSelectedSecurity,\n (newDocumentSelectedSecurity) => {\n if (typeof newDocumentSelectedSecurity !== 'undefined') {\n return\n }\n\n const defaultSecurity = getDefaultSecurity(\n securityRequirements.value,\n options.authentication?.preferredSecurityScheme,\n securitySchemes,\n )\n if (!defaultSecurity) {\n return\n }\n\n eventBus.emit('auth:update:selected-security-schemes', {\n selectedRequirements: [defaultSecurity],\n newSchemes: [],\n meta: { type: 'document' },\n })\n },\n { immediate: true },\n)\n</script>\n<template>\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :createAnySecurityScheme=\"\n options.authentication?.createAnySecurityScheme ?? false\n \"\n :environment\n :eventBus\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n</template>\n","<script setup lang=\"ts\">\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { Anchor } from '@/components/Anchor'\nimport { SectionAccordion, SectionHeaderTag } from '@/components/Section'\n\nimport { SchemaHeading, SchemaProperty } from '../../Schema'\n\nconst { eventBus, id } = defineProps<{\n id: string\n name: string\n schema: SchemaObject\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'orderRequiredPropertiesFirst' | 'orderSchemaPropertiesBy'\n >\n}>()\n</script>\n<template>\n <SectionAccordion\n :aria-label=\"schema.title ?? name\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #title>\n <Anchor\n class=\"reference-models-anchor\"\n :eventBus=\"eventBus\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <SectionHeaderTag :level=\"3\">\n <SchemaHeading\n class=\"reference-models-label\"\n :name=\"schema.title ?? name\"\n :value=\"schema\" />\n </SectionHeaderTag>\n </Anchor>\n </template>\n <!-- Schema -->\n <div\n v-if=\"'properties' in schema\"\n class=\"properties\">\n <SchemaProperty\n v-for=\"[property, value] in Object.entries(schema.properties ?? {})\"\n :key=\"property\"\n :eventBus=\"eventBus\"\n :name=\"property\"\n :options\n :required=\"schema.required?.includes(property)\"\n :schema=\"resolve.schema(value)\" />\n </div>\n <div v-else>\n <SchemaProperty\n :eventBus=\"eventBus\"\n :options\n :schema=\"schema\" />\n </div>\n </SectionAccordion>\n</template>\n<style scoped>\n.reference-models-anchor {\n display: flex;\n align-items: center;\n font-size: 20px;\n padding-left: 6px;\n color: var(--scalar-color-1);\n}\n.reference-models-label {\n display: block;\n font-size: var(--scalar-mini);\n}\n\n/* Style the \"icon\" */\n.reference-models-label :deep(em) {\n font-weight: var(--scalar-bold);\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { Anchor } from '@/components/Anchor'\nimport { SectionAccordion, SectionHeaderTag } from '@/components/Section'\n\nimport { SchemaHeading, SchemaProperty } from '../../Schema'\n\nconst { eventBus, id } = defineProps<{\n id: string\n name: string\n schema: SchemaObject\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'orderRequiredPropertiesFirst' | 'orderSchemaPropertiesBy'\n >\n}>()\n</script>\n<template>\n <SectionAccordion\n :aria-label=\"schema.title ?? name\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #title>\n <Anchor\n class=\"reference-models-anchor\"\n :eventBus=\"eventBus\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\">\n <SectionHeaderTag :level=\"3\">\n <SchemaHeading\n class=\"reference-models-label\"\n :name=\"schema.title ?? name\"\n :value=\"schema\" />\n </SectionHeaderTag>\n </Anchor>\n </template>\n <!-- Schema -->\n <div\n v-if=\"'properties' in schema\"\n class=\"properties\">\n <SchemaProperty\n v-for=\"[property, value] in Object.entries(schema.properties ?? {})\"\n :key=\"property\"\n :eventBus=\"eventBus\"\n :name=\"property\"\n :options\n :required=\"schema.required?.includes(property)\"\n :schema=\"resolve.schema(value)\" />\n </div>\n <div v-else>\n <SchemaProperty\n :eventBus=\"eventBus\"\n :options\n :schema=\"schema\" />\n </div>\n </SectionAccordion>\n</template>\n<style scoped>\n.reference-models-anchor {\n display: flex;\n align-items: center;\n font-size: 20px;\n padding-left: 6px;\n color: var(--scalar-color-1);\n}\n.reference-models-label {\n display: block;\n font-size: var(--scalar-mini);\n}\n\n/* Style the \"icon\" */\n.reference-models-label :deep(em) {\n font-weight: var(--scalar-bold);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarErrorBoundary } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { CompactSection, SectionHeaderTag } from '@/components/Section'\n\nimport { Schema, SchemaHeading } from '../../Schema'\n\nconst { schema, options } = defineProps<{\n id: string\n name: string\n schema: SchemaObject\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n options: {\n orderRequiredPropertiesFirst: boolean | undefined\n orderSchemaPropertiesBy: 'alpha' | 'preserve' | undefined\n }\n}>()\n</script>\n<template>\n <CompactSection\n :id=\"id\"\n :key=\"name\"\n :label=\"name\"\n :modelValue=\"!isCollapsed\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #heading>\n <SectionHeaderTag :level=\"3\">\n <SchemaHeading\n :name=\"schema.title ?? name\"\n :value=\"schema\" />\n </SectionHeaderTag>\n </template>\n <ScalarErrorBoundary>\n <Schema\n :eventBus\n hideHeading\n hideModelNames\n :level=\"1\"\n noncollapsible\n :options=\"options\"\n :schema=\"schema\" />\n </ScalarErrorBoundary>\n </CompactSection>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarErrorBoundary } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { CompactSection, SectionHeaderTag } from '@/components/Section'\n\nimport { Schema, SchemaHeading } from '../../Schema'\n\nconst { schema, options } = defineProps<{\n id: string\n name: string\n schema: SchemaObject\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n options: {\n orderRequiredPropertiesFirst: boolean | undefined\n orderSchemaPropertiesBy: 'alpha' | 'preserve' | undefined\n }\n}>()\n</script>\n<template>\n <CompactSection\n :id=\"id\"\n :key=\"name\"\n :label=\"name\"\n :modelValue=\"!isCollapsed\"\n @copyAnchorUrl=\"() => eventBus?.emit('copy-url:nav-item', { id })\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id, open: value })\n \">\n <template #heading>\n <SectionHeaderTag :level=\"3\">\n <SchemaHeading\n :name=\"schema.title ?? name\"\n :value=\"schema\" />\n </SectionHeaderTag>\n </template>\n <ScalarErrorBoundary>\n <Schema\n :eventBus\n hideHeading\n hideModelNames\n :level=\"1\"\n noncollapsible\n :options=\"options\"\n :schema=\"schema\" />\n </ScalarErrorBoundary>\n </CompactSection>\n</template>\n","<script setup lang=\"ts\">\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { useTemplateRef } from 'vue'\n\nimport { useIntersection } from '@/hooks/use-intersection'\n\nimport ClassicLayout from './components/ClassicLayout.vue'\nimport ModernLayout from './components/ModernLayout.vue'\n\nconst { schema, isCollapsed, id, options, eventBus } = defineProps<{\n id: string\n name: string\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'layout' | 'orderRequiredPropertiesFirst' | 'orderSchemaPropertiesBy'\n >\n schema: SchemaObject | undefined\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n}>()\n\nconst section = useTemplateRef<HTMLElement>('section')\n\nuseIntersection(section, () => eventBus?.emit('intersecting:nav-item', { id }))\n</script>\n<template>\n <div\n v-if=\"schema\"\n ref=\"section\">\n <ClassicLayout\n v-if=\"options.layout === 'classic'\"\n :id\n :eventBus\n :isCollapsed\n :name\n :options\n :schema />\n <ModernLayout\n v-else\n :id\n :eventBus\n :isCollapsed\n :name\n :options\n :schema />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { useTemplateRef } from 'vue'\n\nimport { useIntersection } from '@/hooks/use-intersection'\n\nimport ClassicLayout from './components/ClassicLayout.vue'\nimport ModernLayout from './components/ModernLayout.vue'\n\nconst { schema, isCollapsed, id, options, eventBus } = defineProps<{\n id: string\n name: string\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'layout' | 'orderRequiredPropertiesFirst' | 'orderSchemaPropertiesBy'\n >\n schema: SchemaObject | undefined\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n}>()\n\nconst section = useTemplateRef<HTMLElement>('section')\n\nuseIntersection(section, () => eventBus?.emit('intersecting:nav-item', { id }))\n</script>\n<template>\n <div\n v-if=\"schema\"\n ref=\"section\">\n <ClassicLayout\n v-if=\"options.layout === 'classic'\"\n :id\n :eventBus\n :isCollapsed\n :name\n :options\n :schema />\n <ModernLayout\n v-else\n :id\n :eventBus\n :isCollapsed\n :name\n :options\n :schema />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n</script>\n\n<template>\n <button\n class=\"show-more\"\n type=\"button\">\n Show More\n <ScalarIconCaretDown\n class=\"text-c-2 mt-0.25 size-3\"\n weight=\"bold\" />\n </button>\n</template>\n\n<style scoped>\n.show-more {\n appearance: none;\n border: none;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n margin: auto;\n padding: 8px 12px 8px 16px;\n border-radius: 30px;\n color: var(--scalar-color-1);\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-small);\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n gap: 6px;\n top: -48px;\n}\n\n.show-more:hover {\n background: var(--scalar-background-2);\n cursor: pointer;\n}\n\n.show-more:active {\n box-shadow: 0 0 0 1px var(--scalar-border-color);\n}\n\n@container narrow-references-container (max-width: 900px) {\n .show-more {\n top: -24px;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarIconCaretDown } from '@scalar/icons'\n</script>\n\n<template>\n <button\n class=\"show-more\"\n type=\"button\">\n Show More\n <ScalarIconCaretDown\n class=\"text-c-2 mt-0.25 size-3\"\n weight=\"bold\" />\n </button>\n</template>\n\n<style scoped>\n.show-more {\n appearance: none;\n border: none;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n margin: auto;\n padding: 8px 12px 8px 16px;\n border-radius: 30px;\n color: var(--scalar-color-1);\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-small);\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n gap: 6px;\n top: -48px;\n}\n\n.show-more:hover {\n background: var(--scalar-background-2);\n cursor: pointer;\n}\n\n.show-more:active {\n box-shadow: 0 0 0 1px var(--scalar-border-color);\n}\n\n@container narrow-references-container (max-width: 900px) {\n .show-more {\n top: -24px;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\n\nimport { Section, SectionHeader } from '@/components/Section'\nimport SectionContainer from '@/components/Section/SectionContainer.vue'\nimport SectionContainerAccordion from '@/components/Section/SectionContainerAccordion.vue'\nimport SectionHeaderTag from '@/components/Section/SectionHeaderTag.vue'\nimport ShowMoreButton from '@/components/ShowMoreButton.vue'\n\ndefineProps<{\n id: string\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n layout: 'classic' | 'modern'\n}>()\n</script>\n<template>\n <!-- Modern Layout Model Container -->\n <SectionContainer\n v-if=\"layout === 'modern'\"\n id=\"model\">\n <Section\n :id=\"id\"\n aria-label=\"Models\"\n @intersecting=\"() => eventBus?.emit('intersecting:nav-item', { id })\">\n <SectionHeader>\n <SectionHeaderTag :level=\"2\"> Models </SectionHeaderTag>\n </SectionHeader>\n <template v-if=\"!isCollapsed\">\n <slot />\n </template>\n <template v-else>\n <ShowMoreButton\n :id\n class=\"top-0\"\n @click=\"() => eventBus.emit('toggle:nav-item', { id, open: true })\">\n </ShowMoreButton>\n </template>\n </Section>\n </SectionContainer>\n <!-- Classic Layout Model Container -->\n <SectionContainerAccordion\n v-else\n aria-label=\"Models\"\n class=\"pb-12\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n () => eventBus?.emit('toggle:nav-item', { id, open: isCollapsed })\n \">\n <template #title>\n <SectionHeader :level=\"2\">Models</SectionHeader>\n </template>\n <slot />\n </SectionContainerAccordion>\n</template>\n","<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\n\nimport { Section, SectionHeader } from '@/components/Section'\nimport SectionContainer from '@/components/Section/SectionContainer.vue'\nimport SectionContainerAccordion from '@/components/Section/SectionContainerAccordion.vue'\nimport SectionHeaderTag from '@/components/Section/SectionHeaderTag.vue'\nimport ShowMoreButton from '@/components/ShowMoreButton.vue'\n\ndefineProps<{\n id: string\n isCollapsed: boolean\n eventBus: WorkspaceEventBus\n layout: 'classic' | 'modern'\n}>()\n</script>\n<template>\n <!-- Modern Layout Model Container -->\n <SectionContainer\n v-if=\"layout === 'modern'\"\n id=\"model\">\n <Section\n :id=\"id\"\n aria-label=\"Models\"\n @intersecting=\"() => eventBus?.emit('intersecting:nav-item', { id })\">\n <SectionHeader>\n <SectionHeaderTag :level=\"2\"> Models </SectionHeaderTag>\n </SectionHeader>\n <template v-if=\"!isCollapsed\">\n <slot />\n </template>\n <template v-else>\n <ShowMoreButton\n :id\n class=\"top-0\"\n @click=\"() => eventBus.emit('toggle:nav-item', { id, open: true })\">\n </ShowMoreButton>\n </template>\n </Section>\n </SectionContainer>\n <!-- Classic Layout Model Container -->\n <SectionContainerAccordion\n v-else\n aria-label=\"Models\"\n class=\"pb-12\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n () => eventBus?.emit('toggle:nav-item', { id, open: isCollapsed })\n \">\n <template #title>\n <SectionHeader :level=\"2\">Models</SectionHeader>\n </template>\n <slot />\n </SectionContainerAccordion>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport { Anchor } from '@/components/Anchor'\nimport {\n SectionContainerAccordion,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\n\nconst { tag, isCollapsed } = defineProps<{\n tag: TraversedTag\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <SectionContainerAccordion\n :aria-label=\"tag.title\"\n class=\"tag-section\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id: tag.id, open: value })\n \">\n <template #title>\n <SectionHeader class=\"tag-name\">\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag :level=\"2\">\n {{ tag.title }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <ScalarMarkdown\n class=\"tag-description\"\n :value=\"tag?.description\"\n withImages />\n </template>\n <slot />\n </SectionContainerAccordion>\n</template>\n\n<style scoped>\n.tag-section {\n margin-bottom: 48px;\n}\n.tag-name {\n text-transform: capitalize;\n}\n.tag-description {\n padding-bottom: 4px;\n text-align: left;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport { Anchor } from '@/components/Anchor'\nimport {\n SectionContainerAccordion,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\n\nconst { tag, isCollapsed } = defineProps<{\n tag: TraversedTag\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <SectionContainerAccordion\n :aria-label=\"tag.title\"\n class=\"tag-section\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id: tag.id, open: value })\n \">\n <template #title>\n <SectionHeader class=\"tag-name\">\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag :level=\"2\">\n {{ tag.title }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <ScalarMarkdown\n class=\"tag-description\"\n :value=\"tag?.description\"\n withImages />\n </template>\n <slot />\n </SectionContainerAccordion>\n</template>\n\n<style scoped>\n.tag-section {\n margin-bottom: 48px;\n}\n.tag-name {\n text-transform: capitalize;\n}\n.tag-description {\n padding-bottom: 4px;\n text-align: left;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { getHttpMethodInfo } from '@scalar/helpers/http/http-info'\nimport { ScalarIconWebhooksLogo } from '@scalar/icons'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type {\n TraversedEntry,\n TraversedOperation,\n TraversedWebhook,\n} from '@scalar/workspace-store/schemas/navigation'\nimport { computed } from 'vue'\n\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { SectionHeaderTag } from '@/components/Section'\n\nconst { operation } = defineProps<{\n operation: TraversedOperation | TraversedWebhook\n isCollapsed?: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n\nconst pathOrTitle = computed(() => {\n if ('path' in operation) {\n return operation.path\n }\n\n return operation.title\n})\n\nconst isWebhook = (\n _operation: TraversedEntry,\n): _operation is TraversedWebhook => _operation.type === 'webhook'\n</script>\n\n<template>\n <li\n :key=\"operation.id\"\n class=\"contents\">\n <!-- If collapsed add hidden headers so they show up for screen readers -->\n <SectionHeaderTag\n v-if=\"isCollapsed\"\n class=\"sr-only\"\n :level=\"3\">\n {{ operation.title }} (Hidden)\n </SectionHeaderTag>\n <a\n class=\"endpoint\"\n @click.prevent=\"\n () => eventBus?.emit('scroll-to:nav-item', { id: operation.id })\n \">\n <HttpMethod\n class=\"endpoint-method items-center justify-end gap-2\"\n :method=\"operation.method\">\n <ScalarIconWebhooksLogo\n v-if=\"isWebhook(operation)\"\n class=\"size-3.5\"\n :style=\"{\n color: getHttpMethodInfo(operation.method).colorVar,\n }\" />\n </HttpMethod>\n <span\n class=\"endpoint-path\"\n :class=\"{ deprecated: operation.isDeprecated }\">\n {{ pathOrTitle }}\n </span>\n </a>\n </li>\n</template>\n\n<style scoped>\n.endpoint {\n display: flex;\n white-space: nowrap;\n cursor: pointer;\n text-decoration: none;\n}\n.endpoint:hover .endpoint-path,\n.endpoint:focus-visible .endpoint-path {\n text-decoration: underline;\n}\n.endpoint .post,\n.endpoint .get,\n.endpoint .delete,\n.endpoint .put {\n white-space: nowrap;\n}\n\n.endpoint-method,\n.endpoint-path {\n color: var(--scalar-color-1);\n min-width: 62px;\n display: inline-flex;\n line-height: 1.55;\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n cursor: pointer;\n}\n\n.endpoint-method {\n text-align: right;\n}\n\n.endpoint-path {\n margin-left: 12px;\n text-transform: initial;\n}\n\n.deprecated {\n text-decoration: line-through;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { getHttpMethodInfo } from '@scalar/helpers/http/http-info'\nimport { ScalarIconWebhooksLogo } from '@scalar/icons'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type {\n TraversedEntry,\n TraversedOperation,\n TraversedWebhook,\n} from '@scalar/workspace-store/schemas/navigation'\nimport { computed } from 'vue'\n\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { SectionHeaderTag } from '@/components/Section'\n\nconst { operation } = defineProps<{\n operation: TraversedOperation | TraversedWebhook\n isCollapsed?: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n\nconst pathOrTitle = computed(() => {\n if ('path' in operation) {\n return operation.path\n }\n\n return operation.title\n})\n\nconst isWebhook = (\n _operation: TraversedEntry,\n): _operation is TraversedWebhook => _operation.type === 'webhook'\n</script>\n\n<template>\n <li\n :key=\"operation.id\"\n class=\"contents\">\n <!-- If collapsed add hidden headers so they show up for screen readers -->\n <SectionHeaderTag\n v-if=\"isCollapsed\"\n class=\"sr-only\"\n :level=\"3\">\n {{ operation.title }} (Hidden)\n </SectionHeaderTag>\n <a\n class=\"endpoint\"\n @click.prevent=\"\n () => eventBus?.emit('scroll-to:nav-item', { id: operation.id })\n \">\n <HttpMethod\n class=\"endpoint-method items-center justify-end gap-2\"\n :method=\"operation.method\">\n <ScalarIconWebhooksLogo\n v-if=\"isWebhook(operation)\"\n class=\"size-3.5\"\n :style=\"{\n color: getHttpMethodInfo(operation.method).colorVar,\n }\" />\n </HttpMethod>\n <span\n class=\"endpoint-path\"\n :class=\"{ deprecated: operation.isDeprecated }\">\n {{ pathOrTitle }}\n </span>\n </a>\n </li>\n</template>\n\n<style scoped>\n.endpoint {\n display: flex;\n white-space: nowrap;\n cursor: pointer;\n text-decoration: none;\n}\n.endpoint:hover .endpoint-path,\n.endpoint:focus-visible .endpoint-path {\n text-decoration: underline;\n}\n.endpoint .post,\n.endpoint .get,\n.endpoint .delete,\n.endpoint .put {\n white-space: nowrap;\n}\n\n.endpoint-method,\n.endpoint-path {\n color: var(--scalar-color-1);\n min-width: 62px;\n display: inline-flex;\n line-height: 1.55;\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n cursor: pointer;\n}\n\n.endpoint-method {\n text-align: right;\n}\n\n.endpoint-path {\n margin-left: 12px;\n text-transform: initial;\n}\n\n.deprecated {\n text-decoration: line-through;\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarCard,\n ScalarCardHeader,\n ScalarCardSection,\n} from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed } from 'vue'\n\nimport ScreenReader from '@/components/ScreenReader.vue'\n\nimport OperationsListItem from './OperationsListItem.vue'\n\nconst { tag } = defineProps<{\n tag: TraversedTag\n eventBus: WorkspaceEventBus | null\n}>()\n\nconst operationsAndWebhooks = computed(() => {\n return (\n tag.children?.filter(\n (child) => child.type === 'operation' || child.type === 'webhook',\n ) ?? []\n )\n})\n</script>\n\n<template>\n <template v-if=\"tag.children && tag.children?.length > 0\">\n <ScalarCard class=\"endpoints-card\">\n <ScalarCardHeader muted>\n <ScreenReader>{{ tag.title }}</ScreenReader>\n {{ tag.isWebhooks ? 'Webhooks' : 'Operations' }}\n </ScalarCardHeader>\n <ScalarCardSection class=\"custom-scroll max-h-[60vh]\">\n <ul\n :aria-label=\"`${tag.title} endpoints`\"\n class=\"endpoints\">\n <OperationsListItem\n v-for=\"operationOrWebhook in operationsAndWebhooks\"\n :key=\"operationOrWebhook.id\"\n :eventBus=\"eventBus\"\n :operation=\"operationOrWebhook\" />\n </ul>\n </ScalarCardSection>\n </ScalarCard>\n </template>\n</template>\n\n<style scoped>\n.endpoints-card {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n font-size: var(--scalar-font-size-3);\n}\n.endpoints {\n overflow: auto;\n background: var(--scalar-background-2);\n padding: 10px 12px;\n width: 100%;\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarCard,\n ScalarCardHeader,\n ScalarCardSection,\n} from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed } from 'vue'\n\nimport ScreenReader from '@/components/ScreenReader.vue'\n\nimport OperationsListItem from './OperationsListItem.vue'\n\nconst { tag } = defineProps<{\n tag: TraversedTag\n eventBus: WorkspaceEventBus | null\n}>()\n\nconst operationsAndWebhooks = computed(() => {\n return (\n tag.children?.filter(\n (child) => child.type === 'operation' || child.type === 'webhook',\n ) ?? []\n )\n})\n</script>\n\n<template>\n <template v-if=\"tag.children && tag.children?.length > 0\">\n <ScalarCard class=\"endpoints-card\">\n <ScalarCardHeader muted>\n <ScreenReader>{{ tag.title }}</ScreenReader>\n {{ tag.isWebhooks ? 'Webhooks' : 'Operations' }}\n </ScalarCardHeader>\n <ScalarCardSection class=\"custom-scroll max-h-[60vh]\">\n <ul\n :aria-label=\"`${tag.title} endpoints`\"\n class=\"endpoints\">\n <OperationsListItem\n v-for=\"operationOrWebhook in operationsAndWebhooks\"\n :key=\"operationOrWebhook.id\"\n :eventBus=\"eventBus\"\n :operation=\"operationOrWebhook\" />\n </ul>\n </ScalarCardSection>\n </ScalarCard>\n </template>\n</template>\n\n<style scoped>\n.endpoints-card {\n position: sticky;\n top: calc(var(--refs-viewport-offset) + 24px);\n font-size: var(--scalar-font-size-3);\n}\n.endpoints {\n overflow: auto;\n background: var(--scalar-background-2);\n padding: 10px 12px;\n width: 100%;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport { Anchor } from '@/components/Anchor'\nimport { OperationsList } from '@/components/OperationsList'\nimport ScreenReader from '@/components/ScreenReader.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport { SpecificationExtension } from '@/features/specification-extension'\n\nconst { tag, headerId, isCollapsed } = defineProps<{\n tag: TraversedTag\n headerId?: string\n isCollapsed?: boolean\n isLoading?: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n<template>\n <Section\n v-if=\"tag\"\n :id=\"tag.id\"\n role=\"none\"\n @intersecting=\"\n () => eventBus?.emit('intersecting:nav-item', { id: tag.id })\n \">\n <SectionHeader v-show=\"!isLoading\">\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag\n :id=\"headerId\"\n :level=\"2\">\n {{ tag.title }}\n <ScreenReader v-if=\"isCollapsed\"> (Collapsed)</ScreenReader>\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <SectionContent :loading=\"isLoading\">\n <SectionColumns>\n <SectionColumn>\n <ScalarMarkdown\n :clamp=\"isCollapsed ? 7 : undefined\"\n :value=\"tag?.description ?? ''\"\n withImages />\n </SectionColumn>\n <SectionColumn>\n <OperationsList\n :eventBus=\"eventBus\"\n :tag=\"tag\" />\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n <SpecificationExtension :value=\"tag.xKeys\" />\n </Section>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport { Anchor } from '@/components/Anchor'\nimport { OperationsList } from '@/components/OperationsList'\nimport ScreenReader from '@/components/ScreenReader.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport { SpecificationExtension } from '@/features/specification-extension'\n\nconst { tag, headerId, isCollapsed } = defineProps<{\n tag: TraversedTag\n headerId?: string\n isCollapsed?: boolean\n isLoading?: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n<template>\n <Section\n v-if=\"tag\"\n :id=\"tag.id\"\n role=\"none\"\n @intersecting=\"\n () => eventBus?.emit('intersecting:nav-item', { id: tag.id })\n \">\n <SectionHeader v-show=\"!isLoading\">\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag\n :id=\"headerId\"\n :level=\"2\">\n {{ tag.title }}\n <ScreenReader v-if=\"isCollapsed\"> (Collapsed)</ScreenReader>\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <SectionContent :loading=\"isLoading\">\n <SectionColumns>\n <SectionColumn>\n <ScalarMarkdown\n :clamp=\"isCollapsed ? 7 : undefined\"\n :value=\"tag?.description ?? ''\"\n withImages />\n </SectionColumn>\n <SectionColumn>\n <OperationsList\n :eventBus=\"eventBus\"\n :tag=\"tag\" />\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n <SpecificationExtension :value=\"tag.xKeys\" />\n </Section>\n</template>\n","<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed, useId } from 'vue'\n\nimport { SectionContainer } from '@/components/Section'\nimport ShowMoreButton from '@/components/ShowMoreButton.vue'\n\nimport TagSection from './TagSection.vue'\n\nconst { tag, moreThanOneTag } = defineProps<{\n tag: TraversedTag\n moreThanOneTag: boolean\n isLoading: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n\nconst headerId = useId()\n\nconst moreThanOneDefaultTag = computed(\n () => moreThanOneTag || tag?.title !== 'default' || tag?.description !== '',\n)\n\nconst hasChildren = computed(() => (tag?.children?.length ?? 0) > 0)\n</script>\n\n<template>\n <SectionContainer\n :aria-labelledby=\"headerId\"\n class=\"tag-section-container\"\n role=\"region\">\n <TagSection\n v-if=\"moreThanOneDefaultTag\"\n :eventBus=\"eventBus\"\n :headerId=\"headerId\"\n :isCollapsed=\"isCollapsed\"\n :isLoading=\"isLoading\"\n :tag=\"tag\" />\n <ShowMoreButton\n v-if=\"isCollapsed && moreThanOneTag && hasChildren\"\n :id=\"tag.id\"\n :aria-label=\"`Show all ${tag.title} endpoints`\"\n @click=\"\n () => eventBus?.emit('toggle:nav-item', { id: tag.id, open: true })\n \" />\n\n <!-- Show slot when section is expanded or single-tag (inverse of ShowMoreButton visibility). -->\n <div\n v-if=\"!(isCollapsed && moreThanOneTag)\"\n class=\"contents divide-y\">\n <slot />\n </div>\n </SectionContainer>\n</template>\n\n<style scoped>\n.section-container {\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.section-container:has(.show-more) {\n background-color: color-mix(in srgb, var(--scalar-background-2), transparent);\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed, useId } from 'vue'\n\nimport { SectionContainer } from '@/components/Section'\nimport ShowMoreButton from '@/components/ShowMoreButton.vue'\n\nimport TagSection from './TagSection.vue'\n\nconst { tag, moreThanOneTag } = defineProps<{\n tag: TraversedTag\n moreThanOneTag: boolean\n isLoading: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n\nconst headerId = useId()\n\nconst moreThanOneDefaultTag = computed(\n () => moreThanOneTag || tag?.title !== 'default' || tag?.description !== '',\n)\n\nconst hasChildren = computed(() => (tag?.children?.length ?? 0) > 0)\n</script>\n\n<template>\n <SectionContainer\n :aria-labelledby=\"headerId\"\n class=\"tag-section-container\"\n role=\"region\">\n <TagSection\n v-if=\"moreThanOneDefaultTag\"\n :eventBus=\"eventBus\"\n :headerId=\"headerId\"\n :isCollapsed=\"isCollapsed\"\n :isLoading=\"isLoading\"\n :tag=\"tag\" />\n <ShowMoreButton\n v-if=\"isCollapsed && moreThanOneTag && hasChildren\"\n :id=\"tag.id\"\n :aria-label=\"`Show all ${tag.title} endpoints`\"\n @click=\"\n () => eventBus?.emit('toggle:nav-item', { id: tag.id, open: true })\n \" />\n\n <!-- Show slot when section is expanded or single-tag (inverse of ShowMoreButton visibility). -->\n <div\n v-if=\"!(isCollapsed && moreThanOneTag)\"\n class=\"contents divide-y\">\n <slot />\n </div>\n </SectionContainer>\n</template>\n\n<style scoped>\n.section-container {\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.section-container:has(.show-more) {\n background-color: color-mix(in srgb, var(--scalar-background-2), transparent);\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport ClassicLayout from './components/ClassicLayout.vue'\nimport ModernLayout from './components/ModernLayout.vue'\n\nconst { tag, layout, moreThanOneTag, isLoading } = defineProps<{\n tag: TraversedTag\n layout: 'classic' | 'modern'\n moreThanOneTag: boolean\n isLoading: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <template v-if=\"layout === 'classic'\">\n <ClassicLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :layout=\"layout\"\n :tag=\"tag\">\n <slot />\n </ClassicLayout>\n </template>\n <template v-else>\n <ModernLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :isLoading=\"isLoading\"\n :layout=\"layout\"\n :moreThanOneTag=\"moreThanOneTag\"\n :tag=\"tag\">\n <slot />\n </ModernLayout>\n </template>\n</template>\n","<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport ClassicLayout from './components/ClassicLayout.vue'\nimport ModernLayout from './components/ModernLayout.vue'\n\nconst { tag, layout, moreThanOneTag, isLoading } = defineProps<{\n tag: TraversedTag\n layout: 'classic' | 'modern'\n moreThanOneTag: boolean\n isLoading: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <template v-if=\"layout === 'classic'\">\n <ClassicLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :layout=\"layout\"\n :tag=\"tag\">\n <slot />\n </ClassicLayout>\n </template>\n <template v-else>\n <ModernLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :isLoading=\"isLoading\"\n :layout=\"layout\"\n :moreThanOneTag=\"moreThanOneTag\"\n :tag=\"tag\">\n <slot />\n </ModernLayout>\n </template>\n</template>\n","<script lang=\"ts\" setup>\n/**\n * Lazily renders content when the element is within the viewport overscan.\n * Uses a fixed-height placeholder so layout is stable while we block during render.\n *\n * When server-side rendering, content renders immediately.\n *\n * @link https://medium.com/js-dojo/lazy-rendering-in-vue-to-improve-performance-dcccd445d5f\n */\n\nimport { useIntersectionObserver } from '@vueuse/core'\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport {\n getLazyPlaceholderHeight,\n requestLazyRender,\n setLazyPlaceholderHeight,\n useLazyBus,\n} from '@/helpers/lazy-bus'\n\nconst { id, expanded = false } = defineProps<{\n /** Identifier for this lazy section; used for scroll-to and bus registration. */\n id: string\n /** When true, render the slot so child Lazy placeholders mount (e.g. for navigation). */\n expanded?: boolean\n}>()\n\n/** Fixed height for all placeholders so we do not measure or jump. */\nconst PLACEHOLDER_HEIGHT_PX = 760\n\n/** Overscan: render items within this many pixels above and below the viewport. */\nconst VIEWPORT_OVERSCAN_PX = 1200\nconst VIEWPORT_ROOT_MARGIN = `${VIEWPORT_OVERSCAN_PX}px 0px`\n\nconst { isReady } = useLazyBus(id)\nconst lazyContainerRef = ref<HTMLElement | null>(null)\n\nconst placeholderHeight = ref(\n getLazyPlaceholderHeight(id) ?? PLACEHOLDER_HEIGHT_PX,\n)\nlet contentResizeObserver: ResizeObserver | null = null\n\n/** Once ready we always show (no eviction). Otherwise show when expanded (e.g. so child Lazy placeholders mount). */\nconst shouldRender = computed(() => isReady.value || expanded)\n\nonMounted(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n if (!('IntersectionObserver' in window)) {\n requestLazyRender(id, true)\n return\n }\n\n useIntersectionObserver(\n lazyContainerRef,\n ([entry]) => {\n if (entry?.isIntersecting && !isReady.value) {\n requestLazyRender(id, true)\n }\n },\n { rootMargin: VIEWPORT_ROOT_MARGIN },\n )\n})\n\n/**\n * Capture content height right before we switch to placeholder (pre-flush so content\n * is still in the DOM). Ensures we never measure the container or leave the cache stale.\n */\nwatch(\n () => shouldRender.value,\n (rendered, wasRendered) => {\n if (wasRendered && !rendered && lazyContainerRef.value) {\n const h = lazyContainerRef.value.offsetHeight\n if (Number.isFinite(h) && h > 0) {\n placeholderHeight.value = h\n setLazyPlaceholderHeight(id, h)\n }\n }\n },\n { flush: 'pre' },\n)\n\n/** When content is visible, set up ResizeObserver and measure. */\nwatch(\n () => shouldRender.value,\n (rendered) => {\n if (!rendered) {\n contentResizeObserver?.disconnect()\n contentResizeObserver = null\n return\n }\n void nextTick(() => {\n if (!lazyContainerRef.value || typeof ResizeObserver === 'undefined') {\n return\n }\n if (!contentResizeObserver) {\n contentResizeObserver = new ResizeObserver(() => {\n if (!lazyContainerRef.value) {\n return\n }\n const h = lazyContainerRef.value.offsetHeight\n if (Number.isFinite(h) && h > 0) {\n placeholderHeight.value = h\n setLazyPlaceholderHeight(id, h)\n }\n })\n }\n contentResizeObserver.observe(lazyContainerRef.value)\n const h = lazyContainerRef.value.offsetHeight\n if (Number.isFinite(h) && h > 0) {\n placeholderHeight.value = h\n setLazyPlaceholderHeight(id, h)\n }\n })\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n contentResizeObserver?.disconnect()\n})\n</script>\n<template>\n <div\n :id=\"!shouldRender ? id : undefined\"\n ref=\"lazyContainerRef\"\n :data-placeholder=\"!shouldRender\"\n data-testid=\"lazy-container\"\n :style=\"{ height: shouldRender ? undefined : `${placeholderHeight}px` }\">\n <slot v-if=\"shouldRender\" />\n </div>\n</template>\n","<script lang=\"ts\" setup>\n/**\n * Lazily renders content when the element is within the viewport overscan.\n * Uses a fixed-height placeholder so layout is stable while we block during render.\n *\n * When server-side rendering, content renders immediately.\n *\n * @link https://medium.com/js-dojo/lazy-rendering-in-vue-to-improve-performance-dcccd445d5f\n */\n\nimport { useIntersectionObserver } from '@vueuse/core'\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport {\n getLazyPlaceholderHeight,\n requestLazyRender,\n setLazyPlaceholderHeight,\n useLazyBus,\n} from '@/helpers/lazy-bus'\n\nconst { id, expanded = false } = defineProps<{\n /** Identifier for this lazy section; used for scroll-to and bus registration. */\n id: string\n /** When true, render the slot so child Lazy placeholders mount (e.g. for navigation). */\n expanded?: boolean\n}>()\n\n/** Fixed height for all placeholders so we do not measure or jump. */\nconst PLACEHOLDER_HEIGHT_PX = 760\n\n/** Overscan: render items within this many pixels above and below the viewport. */\nconst VIEWPORT_OVERSCAN_PX = 1200\nconst VIEWPORT_ROOT_MARGIN = `${VIEWPORT_OVERSCAN_PX}px 0px`\n\nconst { isReady } = useLazyBus(id)\nconst lazyContainerRef = ref<HTMLElement | null>(null)\n\nconst placeholderHeight = ref(\n getLazyPlaceholderHeight(id) ?? PLACEHOLDER_HEIGHT_PX,\n)\nlet contentResizeObserver: ResizeObserver | null = null\n\n/** Once ready we always show (no eviction). Otherwise show when expanded (e.g. so child Lazy placeholders mount). */\nconst shouldRender = computed(() => isReady.value || expanded)\n\nonMounted(() => {\n if (typeof window === 'undefined') {\n return\n }\n\n if (!('IntersectionObserver' in window)) {\n requestLazyRender(id, true)\n return\n }\n\n useIntersectionObserver(\n lazyContainerRef,\n ([entry]) => {\n if (entry?.isIntersecting && !isReady.value) {\n requestLazyRender(id, true)\n }\n },\n { rootMargin: VIEWPORT_ROOT_MARGIN },\n )\n})\n\n/**\n * Capture content height right before we switch to placeholder (pre-flush so content\n * is still in the DOM). Ensures we never measure the container or leave the cache stale.\n */\nwatch(\n () => shouldRender.value,\n (rendered, wasRendered) => {\n if (wasRendered && !rendered && lazyContainerRef.value) {\n const h = lazyContainerRef.value.offsetHeight\n if (Number.isFinite(h) && h > 0) {\n placeholderHeight.value = h\n setLazyPlaceholderHeight(id, h)\n }\n }\n },\n { flush: 'pre' },\n)\n\n/** When content is visible, set up ResizeObserver and measure. */\nwatch(\n () => shouldRender.value,\n (rendered) => {\n if (!rendered) {\n contentResizeObserver?.disconnect()\n contentResizeObserver = null\n return\n }\n void nextTick(() => {\n if (!lazyContainerRef.value || typeof ResizeObserver === 'undefined') {\n return\n }\n if (!contentResizeObserver) {\n contentResizeObserver = new ResizeObserver(() => {\n if (!lazyContainerRef.value) {\n return\n }\n const h = lazyContainerRef.value.offsetHeight\n if (Number.isFinite(h) && h > 0) {\n placeholderHeight.value = h\n setLazyPlaceholderHeight(id, h)\n }\n })\n }\n contentResizeObserver.observe(lazyContainerRef.value)\n const h = lazyContainerRef.value.offsetHeight\n if (Number.isFinite(h) && h > 0) {\n placeholderHeight.value = h\n setLazyPlaceholderHeight(id, h)\n }\n })\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n contentResizeObserver?.disconnect()\n})\n</script>\n<template>\n <div\n :id=\"!shouldRender ? id : undefined\"\n ref=\"lazyContainerRef\"\n :data-placeholder=\"!shouldRender\"\n data-testid=\"lazy-container\"\n :style=\"{ height: shouldRender ? undefined : `${placeholderHeight}px` }\">\n <slot v-if=\"shouldRender\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { ClientOptionGroup } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport type { MergedSecuritySchemes } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas'\nimport type {\n TraversedEntry,\n TraversedModels,\n TraversedOperation,\n TraversedSchema,\n TraversedTag,\n TraversedWebhook,\n} from '@scalar/workspace-store/schemas/navigation'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport Model from '@/components/Content/Models/Model.vue'\nimport ModelTag from '@/components/Content/Models/ModelTag.vue'\nimport { Tag } from '@/components/Content/Tags'\nimport Lazy from '@/components/Lazy/Lazy.vue'\nimport { SectionContainer } from '@/components/Section'\nimport { Operation } from '@/features/Operation'\n\nconst {\n level = 0,\n clientOptions,\n document,\n authStore,\n entries,\n} = defineProps<{\n /** The auth store */\n authStore: AuthStore\n /** The level of depth */\n level?: number\n /** Traversed entries to render */\n entries: TraversedEntry[]\n /** The document object */\n document: WorkspaceDocument\n /** The http client options for the dropdown */\n clientOptions: ClientOptionGroup[]\n /** The subset of the configuration object required for the operation component */\n options: Pick<\n ApiReferenceConfigurationRaw,\n | 'expandAllResponses'\n | 'hideTestRequestButton'\n | 'layout'\n | 'orderRequiredPropertiesFirst'\n | 'orderSchemaPropertiesBy'\n | 'showOperationId'\n >\n /** Currently selected server for the document */\n selectedServer: ServerObject | null\n /** The merged security schemes for the document and the authentication configuration */\n securitySchemes: MergedSecuritySchemes\n /** Currently selected http client for the document */\n selectedClient: WorkspaceStore['workspace']['x-scalar-default-client']\n /** Used to determine if an entry is collapsed */\n expandedItems: Record<string, boolean>\n /** The event bus for the handling all events. */\n eventBus: WorkspaceEventBus\n}>()\n\n/**\n * Type guards for different entry types\n */\nconst isTagGroup = (\n entry: TraversedEntry,\n): entry is TraversedTag & { isGroup: true } =>\n entry['type'] === 'tag' && entry.isGroup === true\n\nconst isTag = (\n entry: TraversedEntry,\n): entry is TraversedTag & { isGroup: false } =>\n entry['type'] === 'tag' && !isTagGroup(entry) && entry.id !== 'models'\n\nconst isOperation = (entry: TraversedEntry): entry is TraversedOperation =>\n entry['type'] === 'operation'\n\nconst isWebhook = (entry: TraversedEntry): entry is TraversedWebhook =>\n entry['type'] === 'webhook'\n\n/** Models are special form of tag entry */\nconst isModelsTag = (entry: TraversedEntry): entry is TraversedModels =>\n entry['type'] === 'models'\n\nconst isModel = (entry: TraversedEntry): entry is TraversedSchema =>\n entry['type'] === 'model'\n\nfunction getPathValue(entry: TraversedOperation | TraversedWebhook) {\n return isWebhook(entry)\n ? document.webhooks?.[entry.name]\n : document.paths?.[entry.path]\n}\n</script>\n\n<template>\n <!-- The key must be joined with the layout to force a re-render when the layout changes -->\n <!-- Without this we get a timing issue where the lazy bus is reset and the element is not rendered -->\n <Lazy\n v-for=\"entry in entries\"\n :id=\"entry.id\"\n :key=\"`${entry.id}-${options.layout}`\"\n :expanded=\"!!expandedItems[entry.id]\">\n <!-- Operation or Webhook -->\n <SectionContainer\n v-if=\"isOperation(entry) || isWebhook(entry)\"\n :omit=\"level !== 0\">\n <Operation\n :id=\"entry.id\"\n :authStore\n :clientOptions\n :document\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :isWebhook=\"isWebhook(entry)\"\n :method=\"entry.method\"\n :options=\"options\"\n :path=\"isWebhook(entry) ? entry.name : entry.path\"\n :pathValue=\"getPathValue(entry)\"\n :securitySchemes=\"securitySchemes\"\n :selectedClient=\"selectedClient\"\n :server=\"selectedServer\" />\n </SectionContainer>\n\n <!-- Webhook Group or Tag -->\n <Tag\n v-else-if=\"isTag(entry)\"\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :isLoading=\"false\"\n :layout=\"options.layout\"\n :moreThanOneTag=\"entries.filter(isTag).length > 1\"\n :tag=\"entry\">\n <template v-if=\"'children' in entry && entry.children?.length\">\n <TraversedEntry\n :authStore\n :clientOptions\n :document\n :entries=\"entry.children\"\n :eventBus\n :expandedItems\n :level=\"level + 1\"\n :options\n :securitySchemes\n :selectedClient\n :selectedServer>\n </TraversedEntry>\n </template>\n </Tag>\n\n <!-- Tag Group -->\n <TraversedEntry\n v-else-if=\"isTagGroup(entry)\"\n :authStore\n :clientOptions\n :document\n :entries=\"entry.children || []\"\n :eventBus\n :expandedItems\n :level=\"level + 1\"\n :options\n :securitySchemes\n :selectedClient\n :selectedServer>\n </TraversedEntry>\n\n <!-- Models -->\n <ModelTag\n v-else-if=\"isModelsTag(entry) && document.components?.schemas\"\n :id=\"entry.id\"\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :layout=\"options.layout\">\n <TraversedEntry\n :authStore\n :clientOptions\n :document\n :entries=\"entry.children || []\"\n :eventBus\n :expandedItems=\"expandedItems\"\n :level=\"level + 1\"\n :options\n :securitySchemes\n :selectedClient\n :selectedServer>\n </TraversedEntry>\n </ModelTag>\n\n <Model\n v-else-if=\"isModel(entry) && document.components?.schemas?.[entry.name]\"\n :id=\"entry.id\"\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :name=\"entry.name\"\n :options\n :schema=\"getResolvedRef(document.components.schemas[entry.name])\">\n </Model>\n </Lazy>\n</template>\n","<script setup lang=\"ts\">\nimport type { ClientOptionGroup } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport type { MergedSecuritySchemes } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas'\nimport type {\n TraversedEntry,\n TraversedModels,\n TraversedOperation,\n TraversedSchema,\n TraversedTag,\n TraversedWebhook,\n} from '@scalar/workspace-store/schemas/navigation'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport Model from '@/components/Content/Models/Model.vue'\nimport ModelTag from '@/components/Content/Models/ModelTag.vue'\nimport { Tag } from '@/components/Content/Tags'\nimport Lazy from '@/components/Lazy/Lazy.vue'\nimport { SectionContainer } from '@/components/Section'\nimport { Operation } from '@/features/Operation'\n\nconst {\n level = 0,\n clientOptions,\n document,\n authStore,\n entries,\n} = defineProps<{\n /** The auth store */\n authStore: AuthStore\n /** The level of depth */\n level?: number\n /** Traversed entries to render */\n entries: TraversedEntry[]\n /** The document object */\n document: WorkspaceDocument\n /** The http client options for the dropdown */\n clientOptions: ClientOptionGroup[]\n /** The subset of the configuration object required for the operation component */\n options: Pick<\n ApiReferenceConfigurationRaw,\n | 'expandAllResponses'\n | 'hideTestRequestButton'\n | 'layout'\n | 'orderRequiredPropertiesFirst'\n | 'orderSchemaPropertiesBy'\n | 'showOperationId'\n >\n /** Currently selected server for the document */\n selectedServer: ServerObject | null\n /** The merged security schemes for the document and the authentication configuration */\n securitySchemes: MergedSecuritySchemes\n /** Currently selected http client for the document */\n selectedClient: WorkspaceStore['workspace']['x-scalar-default-client']\n /** Used to determine if an entry is collapsed */\n expandedItems: Record<string, boolean>\n /** The event bus for the handling all events. */\n eventBus: WorkspaceEventBus\n}>()\n\n/**\n * Type guards for different entry types\n */\nconst isTagGroup = (\n entry: TraversedEntry,\n): entry is TraversedTag & { isGroup: true } =>\n entry['type'] === 'tag' && entry.isGroup === true\n\nconst isTag = (\n entry: TraversedEntry,\n): entry is TraversedTag & { isGroup: false } =>\n entry['type'] === 'tag' && !isTagGroup(entry) && entry.id !== 'models'\n\nconst isOperation = (entry: TraversedEntry): entry is TraversedOperation =>\n entry['type'] === 'operation'\n\nconst isWebhook = (entry: TraversedEntry): entry is TraversedWebhook =>\n entry['type'] === 'webhook'\n\n/** Models are special form of tag entry */\nconst isModelsTag = (entry: TraversedEntry): entry is TraversedModels =>\n entry['type'] === 'models'\n\nconst isModel = (entry: TraversedEntry): entry is TraversedSchema =>\n entry['type'] === 'model'\n\nfunction getPathValue(entry: TraversedOperation | TraversedWebhook) {\n return isWebhook(entry)\n ? document.webhooks?.[entry.name]\n : document.paths?.[entry.path]\n}\n</script>\n\n<template>\n <!-- The key must be joined with the layout to force a re-render when the layout changes -->\n <!-- Without this we get a timing issue where the lazy bus is reset and the element is not rendered -->\n <Lazy\n v-for=\"entry in entries\"\n :id=\"entry.id\"\n :key=\"`${entry.id}-${options.layout}`\"\n :expanded=\"!!expandedItems[entry.id]\">\n <!-- Operation or Webhook -->\n <SectionContainer\n v-if=\"isOperation(entry) || isWebhook(entry)\"\n :omit=\"level !== 0\">\n <Operation\n :id=\"entry.id\"\n :authStore\n :clientOptions\n :document\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :isWebhook=\"isWebhook(entry)\"\n :method=\"entry.method\"\n :options=\"options\"\n :path=\"isWebhook(entry) ? entry.name : entry.path\"\n :pathValue=\"getPathValue(entry)\"\n :securitySchemes=\"securitySchemes\"\n :selectedClient=\"selectedClient\"\n :server=\"selectedServer\" />\n </SectionContainer>\n\n <!-- Webhook Group or Tag -->\n <Tag\n v-else-if=\"isTag(entry)\"\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :isLoading=\"false\"\n :layout=\"options.layout\"\n :moreThanOneTag=\"entries.filter(isTag).length > 1\"\n :tag=\"entry\">\n <template v-if=\"'children' in entry && entry.children?.length\">\n <TraversedEntry\n :authStore\n :clientOptions\n :document\n :entries=\"entry.children\"\n :eventBus\n :expandedItems\n :level=\"level + 1\"\n :options\n :securitySchemes\n :selectedClient\n :selectedServer>\n </TraversedEntry>\n </template>\n </Tag>\n\n <!-- Tag Group -->\n <TraversedEntry\n v-else-if=\"isTagGroup(entry)\"\n :authStore\n :clientOptions\n :document\n :entries=\"entry.children || []\"\n :eventBus\n :expandedItems\n :level=\"level + 1\"\n :options\n :securitySchemes\n :selectedClient\n :selectedServer>\n </TraversedEntry>\n\n <!-- Models -->\n <ModelTag\n v-else-if=\"isModelsTag(entry) && document.components?.schemas\"\n :id=\"entry.id\"\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :layout=\"options.layout\">\n <TraversedEntry\n :authStore\n :clientOptions\n :document\n :entries=\"entry.children || []\"\n :eventBus\n :expandedItems=\"expandedItems\"\n :level=\"level + 1\"\n :options\n :securitySchemes\n :selectedClient\n :selectedServer>\n </TraversedEntry>\n </ModelTag>\n\n <Model\n v-else-if=\"isModel(entry) && document.components?.schemas?.[entry.name]\"\n :id=\"entry.id\"\n :eventBus\n :isCollapsed=\"!expandedItems[entry.id]\"\n :name=\"entry.name\"\n :options\n :schema=\"getResolvedRef(document.components.schemas[entry.name])\">\n </Model>\n </Lazy>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarErrorBoundary } from '@scalar/components'\n\nimport { usePluginManager } from '@/plugins'\n\nconst { viewName, options } = defineProps<{\n viewName: 'content.end'\n options: Record<string, any>\n}>()\n\nconst { getViewComponents } = usePluginManager()\nconst components = getViewComponents(viewName)\n</script>\n\n<template>\n <template v-if=\"components.length\">\n <div class=\"plugin-view\">\n <template\n v-for=\"(item, _index) in components\"\n :key=\"_index\">\n <ScalarErrorBoundary>\n <template v-if=\"item.renderer\">\n <!-- Custom renderer (e.g. React) -->\n <component\n :is=\"item.renderer\"\n v-bind=\"{\n component: item.component,\n options,\n ...item.props,\n }\" />\n </template>\n <template v-else>\n <!-- Vue component -->\n <component\n :is=\"item.component\"\n v-bind=\"{ options, ...item.props }\" />\n </template>\n </ScalarErrorBoundary>\n </template>\n </div>\n </template>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarErrorBoundary } from '@scalar/components'\n\nimport { usePluginManager } from '@/plugins'\n\nconst { viewName, options } = defineProps<{\n viewName: 'content.end'\n options: Record<string, any>\n}>()\n\nconst { getViewComponents } = usePluginManager()\nconst components = getViewComponents(viewName)\n</script>\n\n<template>\n <template v-if=\"components.length\">\n <div class=\"plugin-view\">\n <template\n v-for=\"(item, _index) in components\"\n :key=\"_index\">\n <ScalarErrorBoundary>\n <template v-if=\"item.renderer\">\n <!-- Custom renderer (e.g. React) -->\n <component\n :is=\"item.renderer\"\n v-bind=\"{\n component: item.component,\n options,\n ...item.props,\n }\" />\n </template>\n <template v-else>\n <!-- Vue component -->\n <component\n :is=\"item.component\"\n v-bind=\"{ options, ...item.props }\" />\n </template>\n </ScalarErrorBoundary>\n </template>\n </div>\n </template>\n</template>\n","<template>\n <!-- For adding gradients + animations to introduction of documents that :before / :after won't work for -->\n <div class=\"section-flare\">\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n <div class=\"section-flare-item\"></div>\n </div>\n</template>\n\n<style scoped>\n.section-flare {\n top: 0;\n right: 0;\n pointer-events: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { generateClientOptions } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport { mergeSecurity } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { mapHiddenClientsConfig } from '@scalar/api-client/v2/features/modal'\nimport { getSelectedServer } from '@scalar/api-client/v2/features/operation'\nimport { getServers } from '@scalar/api-client/v2/helpers'\nimport { ScalarErrorBoundary } from '@scalar/components'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { Heading } from '@scalar/types/legacy'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { TraversedEntry as TraversedEntryType } from '@scalar/workspace-store/schemas/navigation'\nimport type {\n Workspace,\n WorkspaceDocument,\n} from '@scalar/workspace-store/schemas/workspace'\nimport { computed, onMounted } from 'vue'\n\nimport { ClientSelector } from '@/blocks/scalar-client-selector-block'\nimport { InfoBlock } from '@/blocks/scalar-info-block'\nimport { IntroductionCardItem } from '@/blocks/scalar-info-block/'\nimport { ServerSelector } from '@/blocks/scalar-server-selector-block'\nimport { Auth } from '@/components/Content/Auth'\nimport TraversedEntry from '@/components/Content/Operations/TraversedEntry.vue'\nimport { RenderPlugins } from '@/components/RenderPlugins'\nimport { SectionFlare } from '@/components/SectionFlare'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport {\n firstLazyLoadComplete,\n scheduleInitialLoadComplete,\n} from '@/helpers/lazy-bus'\n\nconst { document, items, environment, eventBus, options, authStore } =\n defineProps<{\n infoSectionId: string\n /** The subset of the configuration object required for the content component */\n options: Pick<\n ApiReferenceConfigurationRaw,\n | 'authentication'\n | 'baseServerURL'\n | 'documentDownloadType'\n | 'expandAllResponses'\n | 'hiddenClients'\n | 'hideTestRequestButton'\n | 'layout'\n | 'orderRequiredPropertiesFirst'\n | 'orderSchemaPropertiesBy'\n | 'persistAuth'\n | 'proxyUrl'\n | 'servers'\n | 'showOperationId'\n >\n document: WorkspaceDocument | undefined\n authStore: AuthStore\n xScalarDefaultClient: Workspace['x-scalar-default-client']\n items: TraversedEntryType[]\n expandedItems: Record<string, boolean>\n eventBus: WorkspaceEventBus\n environment: XScalarEnvironment\n /** Heading id generator for Markdown headings */\n headingSlugGenerator: (heading: Heading) => string\n }>()\n\n/** Generate all client options so that it can be shared between the top client picker and the operations */\nconst clientOptions = computed(() =>\n generateClientOptions(mapHiddenClientsConfig(options.hiddenClients)),\n)\n\n/** Computed property to get all OpenAPI extension fields from the root document object */\nconst documentExtensions = computed(() => getXKeysFromObject(document))\n\n/** Computed property to get all OpenAPI extension fields from the document's info object */\nconst infoExtensions = computed(() => getXKeysFromObject(document?.info))\n\n/** Compute the servers for the document */\nconst servers = computed(() =>\n getServers(options?.servers ?? document?.servers, {\n baseServerUrl: options?.baseServerURL,\n documentUrl: document?.['x-scalar-original-source-url'],\n }),\n)\n\n/** Compute the selected server for the document only (for now) */\nconst selectedServer = computed(() =>\n getSelectedServer(servers.value, document?.['x-scalar-selected-server']),\n)\n\n/** Merge authentication config with the document security schemes */\nconst securitySchemes = computed(() =>\n mergeSecurity(\n document?.components?.securitySchemes,\n options.authentication?.securitySchemes,\n authStore,\n document?.['x-scalar-navigation']?.name ?? '',\n ),\n)\n\n/** Ensures firstLazyLoadComplete is set for documents with no Lazy sections (e.g. no operations/tags/models). */\nonMounted(() => {\n scheduleInitialLoadComplete()\n})\n</script>\n<template>\n <SectionFlare />\n\n <div class=\"narrow-references-container\">\n <slot name=\"start\" />\n\n <!-- Introduction -->\n\n <InfoBlock\n :id=\"infoSectionId\"\n :documentDownloadType=\"options.documentDownloadType\"\n :documentExtensions\n :documentUrl=\"document?.['x-scalar-original-source-url']\"\n :eventBus\n :externalDocs=\"document?.externalDocs\"\n :headingSlugGenerator\n :info=\"document?.info\"\n :infoExtensions\n :layout=\"options.layout\"\n :oasVersion=\"document?.['x-original-oas-version']\">\n <template #selectors>\n <!-- Server Selector -->\n <ScalarErrorBoundary>\n <IntroductionCardItem\n v-if=\"servers?.length\"\n class=\"scalar-reference-intro-server scalar-client introduction-card-item text-base leading-normal [--scalar-address-bar-height:0px]\">\n <ServerSelector\n :eventBus\n :selectedServer\n :servers />\n </IntroductionCardItem>\n </ScalarErrorBoundary>\n\n <!-- Auth selector -->\n <ScalarErrorBoundary>\n <IntroductionCardItem\n v-if=\"document && !options.hideTestRequestButton\"\n class=\"scalar-reference-intro-auth scalar-client introduction-card-item leading-normal\">\n <Auth\n :authStore\n :document\n :environment\n :eventBus\n :options\n :securitySchemes\n :selectedServer />\n </IntroductionCardItem>\n </ScalarErrorBoundary>\n\n <!-- Client selector -->\n <ScalarErrorBoundary>\n <IntroductionCardItem\n v-if=\"clientOptions.length\"\n class=\"introduction-card-item scalar-reference-intro-clients\">\n <ClientSelector\n class=\"introduction-card-item scalar-reference-intro-clients\"\n :clientOptions\n :eventBus\n :selectedClient=\"xScalarDefaultClient\"\n :xScalarSdkInstallation=\"\n document?.info?.['x-scalar-sdk-installation']\n \" />\n </IntroductionCardItem>\n </ScalarErrorBoundary>\n </template>\n </InfoBlock>\n\n <!-- Render traversed operations and webhooks -->\n <!-- Use recursive component for cleaner rendering -->\n <TraversedEntry\n v-if=\"items.length && document\"\n :authStore\n :clientOptions\n :document\n :entries=\"items\"\n :eventBus\n :expandedItems\n :options\n :securitySchemes\n :selectedClient=\"xScalarDefaultClient\"\n :selectedServer>\n </TraversedEntry>\n\n <!-- Render plugins at content.end view -->\n <RenderPlugins\n :options\n viewName=\"content.end\" />\n\n <slot name=\"end\" />\n <!-- Placeholder content to allow the active item to be scrolled to the top while the rest of the content is lazy loaded -->\n <div\n v-if=\"!firstLazyLoadComplete\"\n class=\"h-dvh\"></div>\n </div>\n</template>\n\n<style>\n.narrow-references-container {\n container-name: narrow-references-container;\n container-type: inline-size;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { generateClientOptions } from '@scalar/api-client/v2/blocks/operation-code-sample'\nimport { mergeSecurity } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { mapHiddenClientsConfig } from '@scalar/api-client/v2/features/modal'\nimport { getSelectedServer } from '@scalar/api-client/v2/features/operation'\nimport { getServers } from '@scalar/api-client/v2/helpers'\nimport { ScalarErrorBoundary } from '@scalar/components'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { Heading } from '@scalar/types/legacy'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { TraversedEntry as TraversedEntryType } from '@scalar/workspace-store/schemas/navigation'\nimport type {\n Workspace,\n WorkspaceDocument,\n} from '@scalar/workspace-store/schemas/workspace'\nimport { computed, onMounted } from 'vue'\n\nimport { ClientSelector } from '@/blocks/scalar-client-selector-block'\nimport { InfoBlock } from '@/blocks/scalar-info-block'\nimport { IntroductionCardItem } from '@/blocks/scalar-info-block/'\nimport { ServerSelector } from '@/blocks/scalar-server-selector-block'\nimport { Auth } from '@/components/Content/Auth'\nimport TraversedEntry from '@/components/Content/Operations/TraversedEntry.vue'\nimport { RenderPlugins } from '@/components/RenderPlugins'\nimport { SectionFlare } from '@/components/SectionFlare'\nimport { getXKeysFromObject } from '@/features/specification-extension'\nimport {\n firstLazyLoadComplete,\n scheduleInitialLoadComplete,\n} from '@/helpers/lazy-bus'\n\nconst { document, items, environment, eventBus, options, authStore } =\n defineProps<{\n infoSectionId: string\n /** The subset of the configuration object required for the content component */\n options: Pick<\n ApiReferenceConfigurationRaw,\n | 'authentication'\n | 'baseServerURL'\n | 'documentDownloadType'\n | 'expandAllResponses'\n | 'hiddenClients'\n | 'hideTestRequestButton'\n | 'layout'\n | 'orderRequiredPropertiesFirst'\n | 'orderSchemaPropertiesBy'\n | 'persistAuth'\n | 'proxyUrl'\n | 'servers'\n | 'showOperationId'\n >\n document: WorkspaceDocument | undefined\n authStore: AuthStore\n xScalarDefaultClient: Workspace['x-scalar-default-client']\n items: TraversedEntryType[]\n expandedItems: Record<string, boolean>\n eventBus: WorkspaceEventBus\n environment: XScalarEnvironment\n /** Heading id generator for Markdown headings */\n headingSlugGenerator: (heading: Heading) => string\n }>()\n\n/** Generate all client options so that it can be shared between the top client picker and the operations */\nconst clientOptions = computed(() =>\n generateClientOptions(mapHiddenClientsConfig(options.hiddenClients)),\n)\n\n/** Computed property to get all OpenAPI extension fields from the root document object */\nconst documentExtensions = computed(() => getXKeysFromObject(document))\n\n/** Computed property to get all OpenAPI extension fields from the document's info object */\nconst infoExtensions = computed(() => getXKeysFromObject(document?.info))\n\n/** Compute the servers for the document */\nconst servers = computed(() =>\n getServers(options?.servers ?? document?.servers, {\n baseServerUrl: options?.baseServerURL,\n documentUrl: document?.['x-scalar-original-source-url'],\n }),\n)\n\n/** Compute the selected server for the document only (for now) */\nconst selectedServer = computed(() =>\n getSelectedServer(servers.value, document?.['x-scalar-selected-server']),\n)\n\n/** Merge authentication config with the document security schemes */\nconst securitySchemes = computed(() =>\n mergeSecurity(\n document?.components?.securitySchemes,\n options.authentication?.securitySchemes,\n authStore,\n document?.['x-scalar-navigation']?.name ?? '',\n ),\n)\n\n/** Ensures firstLazyLoadComplete is set for documents with no Lazy sections (e.g. no operations/tags/models). */\nonMounted(() => {\n scheduleInitialLoadComplete()\n})\n</script>\n<template>\n <SectionFlare />\n\n <div class=\"narrow-references-container\">\n <slot name=\"start\" />\n\n <!-- Introduction -->\n\n <InfoBlock\n :id=\"infoSectionId\"\n :documentDownloadType=\"options.documentDownloadType\"\n :documentExtensions\n :documentUrl=\"document?.['x-scalar-original-source-url']\"\n :eventBus\n :externalDocs=\"document?.externalDocs\"\n :headingSlugGenerator\n :info=\"document?.info\"\n :infoExtensions\n :layout=\"options.layout\"\n :oasVersion=\"document?.['x-original-oas-version']\">\n <template #selectors>\n <!-- Server Selector -->\n <ScalarErrorBoundary>\n <IntroductionCardItem\n v-if=\"servers?.length\"\n class=\"scalar-reference-intro-server scalar-client introduction-card-item text-base leading-normal [--scalar-address-bar-height:0px]\">\n <ServerSelector\n :eventBus\n :selectedServer\n :servers />\n </IntroductionCardItem>\n </ScalarErrorBoundary>\n\n <!-- Auth selector -->\n <ScalarErrorBoundary>\n <IntroductionCardItem\n v-if=\"document && !options.hideTestRequestButton\"\n class=\"scalar-reference-intro-auth scalar-client introduction-card-item leading-normal\">\n <Auth\n :authStore\n :document\n :environment\n :eventBus\n :options\n :securitySchemes\n :selectedServer />\n </IntroductionCardItem>\n </ScalarErrorBoundary>\n\n <!-- Client selector -->\n <ScalarErrorBoundary>\n <IntroductionCardItem\n v-if=\"clientOptions.length\"\n class=\"introduction-card-item scalar-reference-intro-clients\">\n <ClientSelector\n class=\"introduction-card-item scalar-reference-intro-clients\"\n :clientOptions\n :eventBus\n :selectedClient=\"xScalarDefaultClient\"\n :xScalarSdkInstallation=\"\n document?.info?.['x-scalar-sdk-installation']\n \" />\n </IntroductionCardItem>\n </ScalarErrorBoundary>\n </template>\n </InfoBlock>\n\n <!-- Render traversed operations and webhooks -->\n <!-- Use recursive component for cleaner rendering -->\n <TraversedEntry\n v-if=\"items.length && document\"\n :authStore\n :clientOptions\n :document\n :entries=\"items\"\n :eventBus\n :expandedItems\n :options\n :securitySchemes\n :selectedClient=\"xScalarDefaultClient\"\n :selectedServer>\n </TraversedEntry>\n\n <!-- Render plugins at content.end view -->\n <RenderPlugins\n :options\n viewName=\"content.end\" />\n\n <slot name=\"end\" />\n <!-- Placeholder content to allow the active item to be scrolled to the top while the rest of the content is lazy loaded -->\n <div\n v-if=\"!firstLazyLoadComplete\"\n class=\"h-dvh\"></div>\n </div>\n</template>\n\n<style>\n.narrow-references-container {\n container-name: narrow-references-container;\n container-type: inline-size;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { cva, ScalarIconButton } from '@scalar/components'\nimport { ScalarIconList, ScalarIconX } from '@scalar/icons'\nimport { useBreakpoints } from '@scalar/use-hooks/useBreakpoints'\n\ndefineProps<{\n breadcrumb: string\n isSidebarOpen: boolean\n showSidebar: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'toggleSidebar'): void\n}>()\n\ndefineSlots<{\n actions?(): never\n sidebar?(props: { sidebarClasses: string }): never\n search?(): never\n}>()\n\nconst { mediaQueries } = useBreakpoints()\n\nconst variants = cva({\n base: 'items-center bg-b-1 sticky top-(--scalar-custom-header-height,0) z-10',\n variants: {\n open: {\n true: 'h-(--refs-sidebar-height) custom-scrollbar flex flex-col',\n },\n lg: {\n true: 'hidden [grid-area:header]',\n },\n },\n})\n</script>\n<template>\n <!-- In desktop layout, just render the default slot for the sidebar -->\n <slot\n v-if=\"mediaQueries.lg.value\"\n v-bind=\"{\n sidebarClasses:\n 'sticky top-(--refs-header-height) h-(--refs-sidebar-height) w-(--refs-sidebar-width) [grid-area:navigation]',\n }\"\n name=\"sidebar\" />\n <div\n v-else\n class=\"t-doc__header\"\n :class=\"variants({ open: isSidebarOpen, lg: mediaQueries.lg.value })\">\n <header\n class=\"flex h-(--scalar-header-height) w-full items-center border-b bg-inherit px-2\">\n <ScalarIconButton\n v-if=\"showSidebar\"\n :icon=\"isSidebarOpen ? ScalarIconX : ScalarIconList\"\n :label=\"isSidebarOpen ? 'Close Menu' : 'Open Menu'\"\n size=\"md\"\n @click=\"emit('toggleSidebar')\" />\n\n <span\n v-if=\"showSidebar\"\n class=\"flex-1 text-sm font-medium whitespace-nowrap\">\n {{ breadcrumb }}\n </span>\n <slot\n v-else\n name=\"search\" />\n\n <div class=\"flex h-6 items-center gap-1 pl-1\">\n <slot name=\"actions\" />\n </div>\n </header>\n <!-- In mobile layout, render the sidebar slot into the header panel -->\n <slot\n v-if=\"isSidebarOpen\"\n v-bind=\"{\n sidebarClasses:\n 'overflow-y-auto custom-scrollbar min-h-0 flex-1 w-full border-none',\n }\"\n name=\"sidebar\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { cva, ScalarIconButton } from '@scalar/components'\nimport { ScalarIconList, ScalarIconX } from '@scalar/icons'\nimport { useBreakpoints } from '@scalar/use-hooks/useBreakpoints'\n\ndefineProps<{\n breadcrumb: string\n isSidebarOpen: boolean\n showSidebar: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'toggleSidebar'): void\n}>()\n\ndefineSlots<{\n actions?(): never\n sidebar?(props: { sidebarClasses: string }): never\n search?(): never\n}>()\n\nconst { mediaQueries } = useBreakpoints()\n\nconst variants = cva({\n base: 'items-center bg-b-1 sticky top-(--scalar-custom-header-height,0) z-10',\n variants: {\n open: {\n true: 'h-(--refs-sidebar-height) custom-scrollbar flex flex-col',\n },\n lg: {\n true: 'hidden [grid-area:header]',\n },\n },\n})\n</script>\n<template>\n <!-- In desktop layout, just render the default slot for the sidebar -->\n <slot\n v-if=\"mediaQueries.lg.value\"\n v-bind=\"{\n sidebarClasses:\n 'sticky top-(--refs-header-height) h-(--refs-sidebar-height) w-(--refs-sidebar-width) [grid-area:navigation]',\n }\"\n name=\"sidebar\" />\n <div\n v-else\n class=\"t-doc__header\"\n :class=\"variants({ open: isSidebarOpen, lg: mediaQueries.lg.value })\">\n <header\n class=\"flex h-(--scalar-header-height) w-full items-center border-b bg-inherit px-2\">\n <ScalarIconButton\n v-if=\"showSidebar\"\n :icon=\"isSidebarOpen ? ScalarIconX : ScalarIconList\"\n :label=\"isSidebarOpen ? 'Close Menu' : 'Open Menu'\"\n size=\"md\"\n @click=\"emit('toggleSidebar')\" />\n\n <span\n v-if=\"showSidebar\"\n class=\"flex-1 text-sm font-medium whitespace-nowrap\">\n {{ breadcrumb }}\n </span>\n <slot\n v-else\n name=\"search\" />\n\n <div class=\"flex h-6 items-center gap-1 pl-1\">\n <slot name=\"actions\" />\n </div>\n </header>\n <!-- In mobile layout, render the sidebar slot into the header panel -->\n <slot\n v-if=\"isSidebarOpen\"\n v-bind=\"{\n sidebarClasses:\n 'overflow-y-auto custom-scrollbar min-h-0 flex-1 w-full border-none',\n }\"\n name=\"sidebar\" />\n </div>\n</template>\n"],"mappings":"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"}