@scalar/api-reference 1.64.0 → 1.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/blocks/scalar-asyncapi-server-selector-block/components/AsyncApiServerSelector.vue.d.ts.map +1 -1
  3. package/dist/blocks/scalar-asyncapi-server-selector-block/components/AsyncApiServerSelector.vue.script.js +1 -1
  4. package/dist/blocks/scalar-asyncapi-server-selector-block/components/AsyncApiServerSelector.vue.script.js.map +1 -1
  5. package/dist/blocks/scalar-asyncapi-server-selector-block/components/Selector.vue.d.ts.map +1 -1
  6. package/dist/blocks/scalar-asyncapi-server-selector-block/components/Selector.vue.script.js +1 -1
  7. package/dist/blocks/scalar-asyncapi-server-selector-block/components/Selector.vue.script.js.map +1 -1
  8. package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/AsyncApiSidebarFilters.vue.script.js +2 -2
  9. package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/AsyncApiSidebarFilters.vue.script.js.map +1 -1
  10. package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/SidebarFilter.vue.d.ts.map +1 -1
  11. package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/SidebarFilter.vue.script.js +1 -1
  12. package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/SidebarFilter.vue.script.js.map +1 -1
  13. package/dist/blocks/scalar-asyncapi-sidebar-filters-block/helpers/filter-async-api-navigation.js.map +1 -1
  14. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.d.ts +1 -3
  15. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.d.ts.map +1 -1
  16. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.js +1 -1
  17. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.js.map +1 -1
  18. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.script.js +13 -27
  19. package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.script.js.map +1 -1
  20. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.d.ts.map +1 -1
  21. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.js +1 -1
  22. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.js.map +1 -1
  23. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.script.js +37 -25
  24. package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.script.js.map +1 -1
  25. package/dist/blocks/scalar-client-selector-block/helpers/featured-clients.js.map +1 -1
  26. package/dist/blocks/scalar-info-block/components/DownloadLink.vue.d.ts.map +1 -1
  27. package/dist/blocks/scalar-info-block/components/DownloadLink.vue.js +1 -1
  28. package/dist/blocks/scalar-info-block/components/DownloadLink.vue.js.map +1 -1
  29. package/dist/blocks/scalar-info-block/components/DownloadLink.vue.script.js +10 -4
  30. package/dist/blocks/scalar-info-block/components/DownloadLink.vue.script.js.map +1 -1
  31. package/dist/blocks/scalar-info-block/components/InfoBlock.vue.script.js +1 -1
  32. package/dist/blocks/scalar-info-block/components/InfoBlock.vue.script.js.map +1 -1
  33. package/dist/blocks/scalar-info-block/components/InfoDescription.vue.js +1 -1
  34. package/dist/blocks/scalar-info-block/components/InfoDescription.vue.script.js +1 -1
  35. package/dist/blocks/scalar-info-block/components/InfoDescription.vue.script.js.map +1 -1
  36. package/dist/blocks/scalar-info-block/components/InfoLinks.vue.script.js +1 -1
  37. package/dist/blocks/scalar-info-block/components/InfoLinks.vue.script.js.map +1 -1
  38. package/dist/blocks/scalar-info-block/components/InfoMarkdownSection.vue.script.js +1 -1
  39. package/dist/blocks/scalar-info-block/components/InfoMarkdownSection.vue.script.js.map +1 -1
  40. package/dist/blocks/scalar-info-block/components/InfoVersion.vue.script.js +1 -1
  41. package/dist/blocks/scalar-info-block/components/InfoVersion.vue.script.js.map +1 -1
  42. package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.js +1 -1
  43. package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.script.js +1 -1
  44. package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.script.js.map +1 -1
  45. package/dist/blocks/scalar-info-block/components/IntroductionCardItem.vue.js +1 -1
  46. package/dist/blocks/scalar-info-block/components/IntroductionCardItem.vue.js.map +1 -1
  47. package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.d.ts.map +1 -1
  48. package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.js +1 -1
  49. package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.script.js +1 -1
  50. package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.script.js.map +1 -1
  51. package/dist/blocks/scalar-info-block/components/IntroductionLoading.vue.js +1 -1
  52. package/dist/blocks/scalar-info-block/components/IntroductionLoading.vue.script.js +1 -1
  53. package/dist/blocks/scalar-info-block/components/IntroductionLoading.vue.script.js.map +1 -1
  54. package/dist/blocks/scalar-info-block/components/SpecificationVersion.vue.script.js +1 -1
  55. package/dist/blocks/scalar-info-block/components/SpecificationVersion.vue.script.js.map +1 -1
  56. package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.d.ts.map +1 -1
  57. package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.js +1 -1
  58. package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.js.map +1 -1
  59. package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.script.js +16 -9
  60. package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.script.js.map +1 -1
  61. package/dist/blocks/scalar-sdk-installation-instructions/helpers/language-icon.js.map +1 -1
  62. package/dist/blocks/scalar-sdk-installation-instructions/helpers/renderable-sdks.js.map +1 -1
  63. package/dist/blocks/scalar-sdk-installation-instructions/helpers/visible-tab-count.js.map +1 -1
  64. package/dist/blocks/scalar-server-selector-block/components/Selector.vue.d.ts.map +1 -1
  65. package/dist/blocks/scalar-server-selector-block/components/Selector.vue.script.js +1 -1
  66. package/dist/blocks/scalar-server-selector-block/components/Selector.vue.script.js.map +1 -1
  67. package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.d.ts.map +1 -1
  68. package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.script.js +1 -1
  69. package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.script.js.map +1 -1
  70. package/dist/browser/chunks/AgentScalarChatInterface-2lNB6wO-.js +27 -0
  71. package/dist/browser/chunks/ScalarTextInput.vue-DVmXRWbS.js +27 -0
  72. package/dist/browser/chunks/{basic-shape-diamond.svg-BTEOT1FL.js → basic-shape-diamond.svg-o5eiY2I7.js} +2 -2
  73. package/dist/browser/chunks/{basic-shape-hexagon.svg-BSPzaCgF.js → basic-shape-hexagon.svg-CGuS7mbd.js} +2 -2
  74. package/dist/browser/chunks/{basic-shape-primary-circle-ellipse-round.svg-DKmZ8UUU.js → basic-shape-primary-circle-ellipse-round.svg-DDIpXiBm.js} +2 -2
  75. package/dist/browser/chunks/{basic-shape-primary-square-rectangle.svg-n2YRykHD.js → basic-shape-primary-square-rectangle.svg-DzVEJHMB.js} +2 -2
  76. package/dist/browser/chunks/{basic-shape-shield.svg-Bec9cJDA.js → basic-shape-shield.svg-BZzapRqv.js} +2 -2
  77. package/dist/browser/chunks/browser-CTPPEMEL.js +129 -0
  78. package/dist/browser/chunks/{computer-device-desktop-monitor.svg-m6j893Hb.js → computer-device-desktop-monitor.svg-OSM05r1I.js} +2 -2
  79. package/dist/browser/chunks/{computer-device-desktop.svg-Dk1VVO7k.js → computer-device-desktop.svg-BMFzGZ27.js} +2 -2
  80. package/dist/browser/chunks/{computer-device-laptop.svg-BNGVUCYS.js → computer-device-laptop.svg-CMAjzuB-.js} +2 -2
  81. package/dist/browser/chunks/{computer-device-mobile-phone-android-samsung-back.svg-CC4UUTFw.js → computer-device-mobile-phone-android-samsung-back.svg-D4xBONmL.js} +2 -2
  82. package/dist/browser/chunks/{computer-device-mobile-phone-android-samsung.svg-D8ExpMpL.js → computer-device-mobile-phone-android-samsung.svg-gbMJLjJw.js} +2 -2
  83. package/dist/browser/chunks/{computer-device-mobile-phone-iphone-x-back.svg-CLm7sgMM.js → computer-device-mobile-phone-iphone-x-back.svg-Bl1rmdKA.js} +2 -2
  84. package/dist/browser/chunks/{computer-device-mobile-phone-iphone-x.svg-Xrttg6_7.js → computer-device-mobile-phone-iphone-x.svg-DVetP0aa.js} +2 -2
  85. package/dist/browser/chunks/{computer-device-mobile-tablet-touch.svg-DQ2oTvOG.js → computer-device-mobile-tablet-touch.svg-Zi88BP4L.js} +2 -2
  86. package/dist/browser/chunks/{computer-device-mobile-tablet.svg-DCr0XlRc.js → computer-device-mobile-tablet.svg-C1ggisWP.js} +2 -2
  87. package/dist/browser/chunks/{computer-device-network-ethernet-cat6.svg-AK9l0iOl.js → computer-device-network-ethernet-cat6.svg-BIUymdC1.js} +2 -2
  88. package/dist/browser/chunks/{computer-device-network-lan-www.svg-gUIdFBlE.js → computer-device-network-lan-www.svg-CoFUlIVO.js} +2 -2
  89. package/dist/browser/chunks/{computer-device-network-wifi-connection.svg-Be-EMm4e.js → computer-device-network-wifi-connection.svg-DeWsacxI.js} +2 -2
  90. package/dist/browser/chunks/{computer-device-network-wifi-router.svg-Dc2VzyqK.js → computer-device-network-wifi-router.svg-BjpZEot4.js} +2 -2
  91. package/dist/browser/chunks/{ecology-science-erlenmeyer-flask.svg-DHgy7Jfd.js → ecology-science-erlenmeyer-flask.svg-ftjGGirE.js} +2 -2
  92. package/dist/browser/chunks/{image-flash-lightning.svg-EETR_y1q.js → image-flash-lightning.svg-DYQ0W4Fi.js} +2 -2
  93. package/dist/browser/chunks/{image-picture-flower.svg-DN1AYzJU.js → image-picture-flower.svg-Bfe5SVDf.js} +2 -2
  94. package/dist/browser/chunks/{interface-alert-exclamation-diamond.svg-C5NozMV_.js → interface-alert-exclamation-diamond.svg-D1HePDNM.js} +2 -2
  95. package/dist/browser/chunks/{interface-alert-exclamation-triangle-warning.svg-DaAg2fF5.js → interface-alert-exclamation-triangle-warning.svg-CILUsxBC.js} +2 -2
  96. package/dist/browser/chunks/{interface-alert-information-circle.svg-ckkkt9Mv.js → interface-alert-information-circle.svg-9LrbJM5J.js} +2 -2
  97. package/dist/browser/chunks/{interface-award-crown.svg-pjvn9hY-.js → interface-award-crown.svg-DllWgiU1.js} +2 -2
  98. package/dist/browser/chunks/{interface-bookmark.svg-BK9HKQBT.js → interface-bookmark-tag.svg-Dc-JL-Kc.js} +2 -2
  99. package/dist/browser/chunks/{interface-bookmark-tag.svg-r2r-lQq4.js → interface-bookmark.svg-Dc-JL-Kc.js} +2 -2
  100. package/dist/browser/chunks/{interface-calendar-date-one.svg-DNnF0M1I.js → interface-calendar-date-one.svg-DO2jelhF.js} +2 -2
  101. package/dist/browser/chunks/{interface-content-book-open-pages.svg-CQj_w9Vp.js → interface-content-book-open-pages.svg-BJjMjIgA.js} +2 -2
  102. package/dist/browser/chunks/{interface-content-book-page.svg-DppoeJRe.js → interface-content-book-page.svg-C6rKB2fs.js} +2 -2
  103. package/dist/browser/chunks/{interface-content-file.svg-CvcD7OiY.js → interface-content-file.svg-CS0q2FKx.js} +2 -2
  104. package/dist/browser/chunks/{interface-content-folder.svg-BmtS5I9A.js → interface-content-folder.svg-CThTWsJX.js} +2 -2
  105. package/dist/browser/chunks/{interface-copy-clipboard.svg-Be6EI50X.js → interface-copy-clipboard.svg-DdN67cLv.js} +2 -2
  106. package/dist/browser/chunks/{interface-edit-attachment.svg-G5TKzpWX.js → interface-edit-attachment.svg-Ciizphuh.js} +2 -2
  107. package/dist/browser/chunks/{interface-edit-binocular.svg-jzL-DvGB.js → interface-edit-binocular.svg-Dw1nDqmL.js} +2 -2
  108. package/dist/browser/chunks/{interface-edit-magic-wand.svg-BOTlymvp.js → interface-edit-magic-wand.svg-BYS0jm_E.js} +2 -2
  109. package/dist/browser/chunks/{interface-edit-tool-paint-roller.svg-s9dwryx7.js → interface-edit-tool-paint-roller.svg-NioSHZC2.js} +2 -2
  110. package/dist/browser/chunks/{interface-edit-tool-pencil.svg-C7v0dbB3.js → interface-edit-tool-pencil.svg-P87QFlat.js} +2 -2
  111. package/dist/browser/chunks/{interface-favorite-award.svg-CYHUgUG0.js → interface-favorite-award.svg-DBBAChSi.js} +2 -2
  112. package/dist/browser/chunks/{interface-favorite-flag.svg-C10zlKOb.js → interface-favorite-flag.svg-HlhPomHY.js} +2 -2
  113. package/dist/browser/chunks/{interface-favorite-heart.svg-eoduXxlz.js → interface-favorite-heart.svg-Cqu2GYDo.js} +2 -2
  114. package/dist/browser/chunks/{interface-favorite-star.svg-BSmxJetr.js → interface-favorite-star.svg-BD4JY_J2.js} +2 -2
  115. package/dist/browser/chunks/{interface-favorite-stars-sparkles.svg-JTFLj3Ls.js → interface-favorite-stars-sparkles.svg-BXi6aO8q.js} +2 -2
  116. package/dist/browser/chunks/{interface-hierarchy-flowchart.svg-Cg_Wy0kN.js → interface-hierarchy-flowchart.svg-CDEVSsD4.js} +2 -2
  117. package/dist/browser/chunks/{interface-home-house.svg-DytoGRnv.js → interface-home-house.svg-DJetUjwj.js} +2 -2
  118. package/dist/browser/chunks/{interface-hyperlink.svg-CuEfmmQI.js → interface-hyperlink.svg-DJ1LREmz.js} +2 -2
  119. package/dist/browser/chunks/{interface-lighting-brightness.svg-DSK0h_Pa.js → interface-lighting-brightness.svg-TGKAaHYV.js} +2 -2
  120. package/dist/browser/chunks/{interface-lock-closed.svg-Cn6TaLYv.js → interface-lock-closed.svg-3hehWr3i.js} +2 -2
  121. package/dist/browser/chunks/{interface-lock-open-unlock.svg-CVkG5-9W.js → interface-lock-open-unlock.svg-CuXKcv1m.js} +2 -2
  122. package/dist/browser/chunks/{interface-login-key.svg-y-cwwXjN.js → interface-login-key.svg-Chwvvywd.js} +2 -2
  123. package/dist/browser/chunks/{interface-search.svg-S-puVFJB.js → interface-search.svg-JDE3fk0u.js} +2 -2
  124. package/dist/browser/chunks/{interface-setting-cog.svg-CTH4_lLg.js → interface-setting-cog.svg-BBCkeh4K.js} +2 -2
  125. package/dist/browser/chunks/{interface-share-megaphone-bullhorn.svg-Pbp39MyC.js → interface-share-megaphone-bullhorn.svg-CDdxF-4y.js} +2 -2
  126. package/dist/browser/chunks/{interface-share-rocket.svg-BgCsIRZO.js → interface-share-rocket.svg-DSbdn_o7.js} +2 -2
  127. package/dist/browser/chunks/{interface-share-satellite.svg-DAMN9d5G.js → interface-share-satellite.svg-CefBVZvY.js} +2 -2
  128. package/dist/browser/chunks/{interface-share-space-ship.svg-Dt-Mejxk.js → interface-share-space-ship.svg-tFA2dsSU.js} +2 -2
  129. package/dist/browser/chunks/{interface-share.svg-vFYTXSti.js → interface-share.svg-BpOGopyv.js} +2 -2
  130. package/dist/browser/chunks/{interface-signal-square.svg-DNG4LpAe.js → interface-signal-square.svg-BcX_BoaC.js} +2 -2
  131. package/dist/browser/chunks/{interface-time-clock-circle.svg-Bpz-nLxo.js → interface-time-clock-circle.svg-C8B_L_RM.js} +2 -2
  132. package/dist/browser/chunks/{interface-time-hour-glass.svg-D7agfKsH.js → interface-time-hour-glass.svg-qw-oeoVn.js} +2 -2
  133. package/dist/browser/chunks/{interface-users-multiple.svg-CkPJBBnG.js → interface-users-multiple.svg-Cs13Eewq.js} +2 -2
  134. package/dist/browser/chunks/{interface-weather-moon.svg-CaTZFMPO.js → interface-weather-moon.svg-CV-oDTae.js} +2 -2
  135. package/dist/browser/chunks/{mail-chat-bubble-square.svg-DC8RIihp.js → mail-chat-bubble-square.svg-dpauJhin.js} +2 -2
  136. package/dist/browser/chunks/{mail-send-email-paper-airplane.svg-D8OLs9jz.js → mail-send-email-paper-airplane.svg-BBofxojL.js} +2 -2
  137. package/dist/browser/chunks/{mail-send-envelope.svg-CV33h5Sx.js → mail-send-envelope.svg-DyENgYOI.js} +2 -2
  138. package/dist/browser/chunks/modal-70ibkEHi.js +102 -0
  139. package/dist/browser/chunks/{money-cashier-receipt.svg-CJL8C2gs.js → money-cashier-receipt.svg-dNTr5aio.js} +2 -2
  140. package/dist/browser/chunks/{money-currency-dollar-pay.svg-VdBplCTx.js → money-currency-dollar-pay.svg-1ZESPtFY.js} +2 -2
  141. package/dist/browser/chunks/{money-graph-arrow-increase.svg-DcRov3zk.js → money-graph-arrow-increase.svg-kEZ2u2z2.js} +2 -2
  142. package/dist/browser/chunks/{money-graph-bar-chart-increase.svg-Cc7KxjX-.js → money-graph-bar-chart-increase.svg-B-t2UWB3.js} +2 -2
  143. package/dist/browser/chunks/{nature-ecology-leaf.svg-DR3cTZxt.js → nature-ecology-leaf.svg-DZ2GJV8m.js} +2 -2
  144. package/dist/browser/chunks/{phone-telephone.svg-DyY0gUlk.js → phone-telephone.svg-C12QjpN7.js} +2 -2
  145. package/dist/browser/chunks/{programming-bug.svg-BHLT-Qhp.js → programming-bug.svg-wLTsruN9.js} +2 -2
  146. package/dist/browser/chunks/{programming-cloud.svg-B6YW33ba.js → programming-cloud.svg-3XU6dNUg.js} +2 -2
  147. package/dist/browser/chunks/{programming-computer-database-server.svg-B6o5Sdn-.js → programming-computer-database-server.svg-B1JrHSPd.js} +2 -2
  148. package/dist/browser/chunks/{programming-computer-database.svg-Cl7OVtpJ.js → programming-computer-database.svg-BxHSuFl7.js} +2 -2
  149. package/dist/browser/chunks/{programming-module-four-layout.svg-BQrerL1x.js → programming-module-four-layout.svg-CeV35q45.js} +2 -2
  150. package/dist/browser/chunks/{programming-module-three.svg-B2KTQzBM.js → programming-module-three.svg-YIBpLt45.js} +2 -2
  151. package/dist/browser/chunks/{programming-module.svg-CiID7kPm.js → programming-module.svg-CU_pEibI.js} +2 -2
  152. package/dist/browser/chunks/{programming-script-code.svg-D1M5rtkN.js → programming-script-code.svg-CLzinmHT.js} +2 -2
  153. package/dist/browser/chunks/runtime-core.esm-bundler-CqqEw5ds.js +17 -0
  154. package/dist/browser/chunks/{shopping-cart.svg-BEegiIR9.js → shopping-cart.svg-Brzddu3K.js} +2 -2
  155. package/dist/browser/chunks/{shopping-gift-present.svg-BUHwuLix.js → shopping-gift-present.svg-l2K48g7L.js} +2 -2
  156. package/dist/browser/chunks/{shopping-shipping-box-parcel-package.svg-D6fxWdYx.js → shopping-shipping-box-parcel-package.svg-DesGopPo.js} +2 -2
  157. package/dist/browser/chunks/{tag-new-circle.svg-jsg1bGs0.js → tag-new-circle.svg-DE-VaLZU.js} +2 -2
  158. package/dist/browser/chunks/{travel-map-earth-globe.svg-ClbMiU-f.js → travel-map-earth-globe.svg-DLaOMzx6.js} +2 -2
  159. package/dist/browser/chunks/vendor-BcTep96u.js +306 -0
  160. package/dist/browser/standalone.esm.js +22 -20
  161. package/dist/browser/standalone.js +256 -254
  162. package/dist/components/AgentScalar/AgentScalarButton.vue.script.js +1 -1
  163. package/dist/components/AgentScalar/AgentScalarButton.vue.script.js.map +1 -1
  164. package/dist/components/AgentScalar/AgentScalarChatInterface.vue.script.js +1 -1
  165. package/dist/components/AgentScalar/AgentScalarChatInterface.vue.script.js.map +1 -1
  166. package/dist/components/AgentScalar/AgentScalarDrawer.vue.d.ts.map +1 -1
  167. package/dist/components/AgentScalar/AgentScalarDrawer.vue.js +1 -1
  168. package/dist/components/AgentScalar/AgentScalarDrawer.vue.script.js +1 -1
  169. package/dist/components/AgentScalar/AgentScalarDrawer.vue.script.js.map +1 -1
  170. package/dist/components/AgentScalar/OpenMCPButton.vue.d.ts.map +1 -1
  171. package/dist/components/AgentScalar/OpenMCPButton.vue.js +1 -1
  172. package/dist/components/AgentScalar/OpenMCPButton.vue.js.map +1 -1
  173. package/dist/components/AgentScalar/OpenMCPButton.vue.script.js +47 -32
  174. package/dist/components/AgentScalar/OpenMCPButton.vue.script.js.map +1 -1
  175. package/dist/components/Anchor/Anchor.vue.d.ts.map +1 -1
  176. package/dist/components/Anchor/Anchor.vue.script.js +1 -1
  177. package/dist/components/Anchor/Anchor.vue.script.js.map +1 -1
  178. package/dist/components/Anchor/WithBreadcrumb.vue.script.js +2 -2
  179. package/dist/components/Anchor/WithBreadcrumb.vue.script.js.map +1 -1
  180. package/dist/components/ApiReference.vue.d.ts.map +1 -1
  181. package/dist/components/ApiReference.vue.js +1 -1
  182. package/dist/components/ApiReference.vue.js.map +1 -1
  183. package/dist/components/ApiReference.vue.script.js +55 -22
  184. package/dist/components/ApiReference.vue.script.js.map +1 -1
  185. package/dist/components/Badge/Badge.vue.js +1 -1
  186. package/dist/components/Badge/Badge.vue.script.js +1 -1
  187. package/dist/components/Badge/Badge.vue.script.js.map +1 -1
  188. package/dist/components/ClassicHeader.vue.js +1 -1
  189. package/dist/components/ClassicHeader.vue.js.map +1 -1
  190. package/dist/components/Content/AsyncApi/AsyncApiLabels.vue.js +1 -1
  191. package/dist/components/Content/AsyncApi/AsyncApiLabels.vue.script.js +1 -1
  192. package/dist/components/Content/AsyncApi/AsyncApiLabels.vue.script.js.map +1 -1
  193. package/dist/components/Content/AsyncApi/AsyncApiTraversedEntry.vue.script.js +1 -1
  194. package/dist/components/Content/AsyncApi/AsyncApiTraversedEntry.vue.script.js.map +1 -1
  195. package/dist/components/Content/AsyncApi/Channel.vue.d.ts.map +1 -1
  196. package/dist/components/Content/AsyncApi/Channel.vue.js +1 -1
  197. package/dist/components/Content/AsyncApi/Channel.vue.script.js +1 -1
  198. package/dist/components/Content/AsyncApi/Channel.vue.script.js.map +1 -1
  199. package/dist/components/Content/AsyncApi/ChannelsList.vue.js +1 -1
  200. package/dist/components/Content/AsyncApi/ChannelsList.vue.script.js +1 -1
  201. package/dist/components/Content/AsyncApi/ChannelsList.vue.script.js.map +1 -1
  202. package/dist/components/Content/AsyncApi/Message.vue.d.ts.map +1 -1
  203. package/dist/components/Content/AsyncApi/Message.vue.js +1 -1
  204. package/dist/components/Content/AsyncApi/Message.vue.script.js +2 -2
  205. package/dist/components/Content/AsyncApi/Message.vue.script.js.map +1 -1
  206. package/dist/components/Content/AsyncApi/Operation.vue.d.ts.map +1 -1
  207. package/dist/components/Content/AsyncApi/Operation.vue.js +1 -1
  208. package/dist/components/Content/AsyncApi/Operation.vue.script.js +1 -1
  209. package/dist/components/Content/AsyncApi/Operation.vue.script.js.map +1 -1
  210. package/dist/components/Content/AsyncApi/helpers/adapt-async-api-parameters.js.map +1 -1
  211. package/dist/components/Content/AsyncApi/helpers/async-api-render-options.js.map +1 -1
  212. package/dist/components/Content/AsyncApi/helpers/filter-children-by-type.js.map +1 -1
  213. package/dist/components/Content/AsyncApi/helpers/get-async-api-labels.js.map +1 -1
  214. package/dist/components/Content/AsyncApi/helpers/get-async-api-required-security.js.map +1 -1
  215. package/dist/components/Content/AsyncApi/helpers/pick-heading.js.map +1 -1
  216. package/dist/components/Content/AsyncApi/helpers/resolve-async-api-nodes.js.map +1 -1
  217. package/dist/components/Content/AsyncApi/index.d.ts +3 -0
  218. package/dist/components/Content/AsyncApi/index.d.ts.map +1 -1
  219. package/dist/components/Content/Auth/Auth.vue.script.js +1 -1
  220. package/dist/components/Content/Auth/Auth.vue.script.js.map +1 -1
  221. package/dist/components/Content/Content.vue.script.js +1 -1
  222. package/dist/components/Content/Content.vue.script.js.map +1 -1
  223. package/dist/components/Content/Models/Model.vue.script.js +1 -1
  224. package/dist/components/Content/Models/Model.vue.script.js.map +1 -1
  225. package/dist/components/Content/Models/ModelTag.vue.d.ts.map +1 -1
  226. package/dist/components/Content/Models/ModelTag.vue.script.js +2 -2
  227. package/dist/components/Content/Models/ModelTag.vue.script.js.map +1 -1
  228. package/dist/components/Content/Models/components/ClassicLayout.vue.d.ts.map +1 -1
  229. package/dist/components/Content/Models/components/ClassicLayout.vue.js +1 -1
  230. package/dist/components/Content/Models/components/ClassicLayout.vue.script.js +1 -1
  231. package/dist/components/Content/Models/components/ClassicLayout.vue.script.js.map +1 -1
  232. package/dist/components/Content/Models/components/ModernLayout.vue.d.ts.map +1 -1
  233. package/dist/components/Content/Models/components/ModernLayout.vue.script.js +1 -1
  234. package/dist/components/Content/Models/components/ModernLayout.vue.script.js.map +1 -1
  235. package/dist/components/Content/Operations/TraversedEntry.vue.script.js +1 -1
  236. package/dist/components/Content/Operations/TraversedEntry.vue.script.js.map +1 -1
  237. package/dist/components/Content/Schema/LinkButton.vue.js +1 -1
  238. package/dist/components/Content/Schema/LinkButton.vue.js.map +1 -1
  239. package/dist/components/Content/Schema/RenderString.vue.script.js +1 -1
  240. package/dist/components/Content/Schema/RenderString.vue.script.js.map +1 -1
  241. package/dist/components/Content/Schema/Schema.vue.d.ts.map +1 -1
  242. package/dist/components/Content/Schema/Schema.vue.js +1 -1
  243. package/dist/components/Content/Schema/Schema.vue.js.map +1 -1
  244. package/dist/components/Content/Schema/Schema.vue.script.js +5 -13
  245. package/dist/components/Content/Schema/Schema.vue.script.js.map +1 -1
  246. package/dist/components/Content/Schema/SchemaComposition.vue.d.ts.map +1 -1
  247. package/dist/components/Content/Schema/SchemaComposition.vue.script.js +1 -1
  248. package/dist/components/Content/Schema/SchemaComposition.vue.script.js.map +1 -1
  249. package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.js +1 -1
  250. package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.script.js +1 -1
  251. package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.script.js.map +1 -1
  252. package/dist/components/Content/Schema/SchemaEnums.vue.d.ts.map +1 -1
  253. package/dist/components/Content/Schema/SchemaEnums.vue.js +1 -1
  254. package/dist/components/Content/Schema/SchemaEnums.vue.script.js +1 -1
  255. package/dist/components/Content/Schema/SchemaEnums.vue.script.js.map +1 -1
  256. package/dist/components/Content/Schema/SchemaHeading.vue.js +1 -1
  257. package/dist/components/Content/Schema/SchemaHeading.vue.script.js +1 -1
  258. package/dist/components/Content/Schema/SchemaHeading.vue.script.js.map +1 -1
  259. package/dist/components/Content/Schema/SchemaObjectExampleCodeBlock.vue.script.js +1 -1
  260. package/dist/components/Content/Schema/SchemaObjectExampleCodeBlock.vue.script.js.map +1 -1
  261. package/dist/components/Content/Schema/SchemaObjectProperties.vue.script.js +1 -1
  262. package/dist/components/Content/Schema/SchemaObjectProperties.vue.script.js.map +1 -1
  263. package/dist/components/Content/Schema/SchemaProperty.vue.d.ts.map +1 -1
  264. package/dist/components/Content/Schema/SchemaProperty.vue.js +1 -1
  265. package/dist/components/Content/Schema/SchemaProperty.vue.js.map +1 -1
  266. package/dist/components/Content/Schema/SchemaProperty.vue.script.js +9 -3
  267. package/dist/components/Content/Schema/SchemaProperty.vue.script.js.map +1 -1
  268. package/dist/components/Content/Schema/SchemaPropertyDefault.vue.js +1 -1
  269. package/dist/components/Content/Schema/SchemaPropertyDefault.vue.script.js +1 -1
  270. package/dist/components/Content/Schema/SchemaPropertyDefault.vue.script.js.map +1 -1
  271. package/dist/components/Content/Schema/SchemaPropertyDetail.vue.js +1 -1
  272. package/dist/components/Content/Schema/SchemaPropertyDetail.vue.script.js +1 -1
  273. package/dist/components/Content/Schema/SchemaPropertyDetail.vue.script.js.map +1 -1
  274. package/dist/components/Content/Schema/SchemaPropertyExamples.vue.js +1 -1
  275. package/dist/components/Content/Schema/SchemaPropertyExamples.vue.script.js +1 -1
  276. package/dist/components/Content/Schema/SchemaPropertyExamples.vue.script.js.map +1 -1
  277. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.d.ts +6 -0
  278. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.d.ts.map +1 -1
  279. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.js +1 -1
  280. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.js.map +1 -1
  281. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.script.js +6 -2
  282. package/dist/components/Content/Schema/SchemaPropertyHeading.vue.script.js.map +1 -1
  283. package/dist/components/Content/Schema/helpers/dynamic-scope.js.map +1 -1
  284. package/dist/components/Content/Schema/helpers/format-example.js.map +1 -1
  285. package/dist/components/Content/Schema/helpers/format-value.js.map +1 -1
  286. package/dist/components/Content/Schema/helpers/get-compositions-to-render.js.map +1 -1
  287. package/dist/components/Content/Schema/helpers/get-enum-values.js.map +1 -1
  288. package/dist/components/Content/Schema/helpers/get-property-description.js.map +1 -1
  289. package/dist/components/Content/Schema/helpers/get-ref-name.d.ts +16 -0
  290. package/dist/components/Content/Schema/helpers/get-ref-name.d.ts.map +1 -1
  291. package/dist/components/Content/Schema/helpers/get-ref-name.js +28 -1
  292. package/dist/components/Content/Schema/helpers/get-ref-name.js.map +1 -1
  293. package/dist/components/Content/Schema/helpers/get-schema-type.js.map +1 -1
  294. package/dist/components/Content/Schema/helpers/has-complex-array-items.js.map +1 -1
  295. package/dist/components/Content/Schema/helpers/is-empty-schema-object.js.map +1 -1
  296. package/dist/components/Content/Schema/helpers/is-model-linkable.d.ts +15 -0
  297. package/dist/components/Content/Schema/helpers/is-model-linkable.d.ts.map +1 -0
  298. package/dist/components/Content/Schema/helpers/is-model-linkable.js +22 -0
  299. package/dist/components/Content/Schema/helpers/is-model-linkable.js.map +1 -0
  300. package/dist/components/Content/Schema/helpers/is-type-object.js.map +1 -1
  301. package/dist/components/Content/Schema/helpers/merge-all-of-schemas.js +3 -3
  302. package/dist/components/Content/Schema/helpers/merge-all-of-schemas.js.map +1 -1
  303. package/dist/components/Content/Schema/helpers/optimize-value-for-display.js.map +1 -1
  304. package/dist/components/Content/Schema/helpers/partition-all-of-compositions.js.map +1 -1
  305. package/dist/components/Content/Schema/helpers/schema-composition.js.map +1 -1
  306. package/dist/components/Content/Schema/helpers/schema-cycle.js.map +1 -1
  307. package/dist/components/Content/Schema/helpers/schema-name.d.ts +6 -1
  308. package/dist/components/Content/Schema/helpers/schema-name.d.ts.map +1 -1
  309. package/dist/components/Content/Schema/helpers/schema-name.js +5 -4
  310. package/dist/components/Content/Schema/helpers/schema-name.js.map +1 -1
  311. package/dist/components/Content/Schema/helpers/should-display-description.js.map +1 -1
  312. package/dist/components/Content/Schema/helpers/should-display-heading.js.map +1 -1
  313. package/dist/components/Content/Schema/helpers/should-render-array-item-composition.js.map +1 -1
  314. package/dist/components/Content/Schema/helpers/sort-property-names.js.map +1 -1
  315. package/dist/components/Content/Schema/types.d.ts +7 -0
  316. package/dist/components/Content/Schema/types.d.ts.map +1 -1
  317. package/dist/components/Content/Tags/Tag.vue.script.js +1 -1
  318. package/dist/components/Content/Tags/Tag.vue.script.js.map +1 -1
  319. package/dist/components/Content/Tags/components/ClassicLayout.vue.d.ts.map +1 -1
  320. package/dist/components/Content/Tags/components/ClassicLayout.vue.js +1 -1
  321. package/dist/components/Content/Tags/components/ClassicLayout.vue.script.js +1 -1
  322. package/dist/components/Content/Tags/components/ClassicLayout.vue.script.js.map +1 -1
  323. package/dist/components/Content/Tags/components/ModernLayout.vue.d.ts.map +1 -1
  324. package/dist/components/Content/Tags/components/ModernLayout.vue.js +1 -1
  325. package/dist/components/Content/Tags/components/ModernLayout.vue.script.js +1 -1
  326. package/dist/components/Content/Tags/components/ModernLayout.vue.script.js.map +1 -1
  327. package/dist/components/Content/Tags/components/TagSection.vue.d.ts.map +1 -1
  328. package/dist/components/Content/Tags/components/TagSection.vue.script.js +1 -1
  329. package/dist/components/Content/Tags/components/TagSection.vue.script.js.map +1 -1
  330. package/dist/components/GettingStarted.vue.d.ts.map +1 -1
  331. package/dist/components/GettingStarted.vue.js +1 -1
  332. package/dist/components/GettingStarted.vue.js.map +1 -1
  333. package/dist/components/GettingStarted.vue.script.js +4 -3
  334. package/dist/components/GettingStarted.vue.script.js.map +1 -1
  335. package/dist/components/HttpMethod/HttpMethod.vue.script.js +1 -1
  336. package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
  337. package/dist/components/IntersectionObserver.vue.script.js +10 -7
  338. package/dist/components/IntersectionObserver.vue.script.js.map +1 -1
  339. package/dist/components/Lazy/Lazy.vue.script.js +2 -2
  340. package/dist/components/Lazy/Lazy.vue.script.js.map +1 -1
  341. package/dist/components/LinkList/LinkList.vue.js +1 -1
  342. package/dist/components/LinkList/LinkList.vue.script.js +1 -1
  343. package/dist/components/LinkList/LinkList.vue.script.js.map +1 -1
  344. package/dist/components/MobileHeader.vue.d.ts.map +1 -1
  345. package/dist/components/MobileHeader.vue.script.js +4 -4
  346. package/dist/components/MobileHeader.vue.script.js.map +1 -1
  347. package/dist/components/OperationPath.vue.d.ts.map +1 -1
  348. package/dist/components/OperationPath.vue.js +1 -1
  349. package/dist/components/OperationPath.vue.script.js +1 -1
  350. package/dist/components/OperationPath.vue.script.js.map +1 -1
  351. package/dist/components/OperationsList/OperationsList.vue.js +1 -1
  352. package/dist/components/OperationsList/OperationsList.vue.script.js +1 -1
  353. package/dist/components/OperationsList/OperationsList.vue.script.js.map +1 -1
  354. package/dist/components/OperationsList/OperationsListItem.vue.js +1 -1
  355. package/dist/components/OperationsList/OperationsListItem.vue.script.js +1 -1
  356. package/dist/components/OperationsList/OperationsListItem.vue.script.js.map +1 -1
  357. package/dist/components/RenderPlugins/RenderPluginView.vue.script.js +1 -1
  358. package/dist/components/RenderPlugins/RenderPluginView.vue.script.js.map +1 -1
  359. package/dist/components/RenderPlugins/RenderPlugins.vue.script.js +1 -1
  360. package/dist/components/RenderPlugins/RenderPlugins.vue.script.js.map +1 -1
  361. package/dist/components/ScreenReader.vue.js +1 -1
  362. package/dist/components/ScreenReader.vue.script.js +2 -2
  363. package/dist/components/ScreenReader.vue.script.js.map +1 -1
  364. package/dist/components/Section/CompactSection.vue.d.ts.map +1 -1
  365. package/dist/components/Section/CompactSection.vue.js +1 -1
  366. package/dist/components/Section/CompactSection.vue.script.js +1 -1
  367. package/dist/components/Section/CompactSection.vue.script.js.map +1 -1
  368. package/dist/components/Section/Section.vue.js +1 -1
  369. package/dist/components/Section/Section.vue.script.js +1 -1
  370. package/dist/components/Section/Section.vue.script.js.map +1 -1
  371. package/dist/components/Section/SectionAccordion.vue.d.ts.map +1 -1
  372. package/dist/components/Section/SectionAccordion.vue.js +1 -1
  373. package/dist/components/Section/SectionAccordion.vue.script.js +1 -1
  374. package/dist/components/Section/SectionAccordion.vue.script.js.map +1 -1
  375. package/dist/components/Section/SectionColumn.vue.js +1 -1
  376. package/dist/components/Section/SectionColumn.vue.js.map +1 -1
  377. package/dist/components/Section/SectionColumns.vue.js +1 -1
  378. package/dist/components/Section/SectionColumns.vue.js.map +1 -1
  379. package/dist/components/Section/SectionContainer.vue.js +1 -1
  380. package/dist/components/Section/SectionContainer.vue.script.js +2 -2
  381. package/dist/components/Section/SectionContainer.vue.script.js.map +1 -1
  382. package/dist/components/Section/SectionContainerAccordion.vue.d.ts.map +1 -1
  383. package/dist/components/Section/SectionContainerAccordion.vue.js +1 -1
  384. package/dist/components/Section/SectionContainerAccordion.vue.script.js +1 -1
  385. package/dist/components/Section/SectionContainerAccordion.vue.script.js.map +1 -1
  386. package/dist/components/Section/SectionContent.vue.js +1 -1
  387. package/dist/components/Section/SectionContent.vue.js.map +1 -1
  388. package/dist/components/Section/SectionHeader.vue.js +1 -1
  389. package/dist/components/Section/SectionHeader.vue.script.js +2 -2
  390. package/dist/components/Section/SectionHeader.vue.script.js.map +1 -1
  391. package/dist/components/Section/SectionHeaderTag.vue.js +1 -1
  392. package/dist/components/Section/SectionHeaderTag.vue.script.js +1 -1
  393. package/dist/components/Section/SectionHeaderTag.vue.script.js.map +1 -1
  394. package/dist/components/SectionFlare/SectionFlare.vue.js +1 -1
  395. package/dist/components/SectionFlare/SectionFlare.vue.js.map +1 -1
  396. package/dist/components/ShowMoreButton.vue.js +1 -1
  397. package/dist/components/ShowMoreButton.vue.script.js +1 -1
  398. package/dist/components/ShowMoreButton.vue.script.js.map +1 -1
  399. package/dist/components/index.d.ts +1 -0
  400. package/dist/components/index.d.ts.map +1 -1
  401. package/dist/components/index.js +5 -1
  402. package/dist/features/Operation/Operation.vue.script.js +1 -1
  403. package/dist/features/Operation/Operation.vue.script.js.map +1 -1
  404. package/dist/features/Operation/components/ContentTypeSelect.vue.d.ts.map +1 -1
  405. package/dist/features/Operation/components/ContentTypeSelect.vue.script.js +2 -2
  406. package/dist/features/Operation/components/ContentTypeSelect.vue.script.js.map +1 -1
  407. package/dist/features/Operation/components/Header.vue.d.ts +2 -0
  408. package/dist/features/Operation/components/Header.vue.d.ts.map +1 -1
  409. package/dist/features/Operation/components/Header.vue.js.map +1 -1
  410. package/dist/features/Operation/components/Header.vue.script.js +4 -2
  411. package/dist/features/Operation/components/Header.vue.script.js.map +1 -1
  412. package/dist/features/Operation/components/Headers.vue.d.ts +2 -0
  413. package/dist/features/Operation/components/Headers.vue.d.ts.map +1 -1
  414. package/dist/features/Operation/components/Headers.vue.js +1 -1
  415. package/dist/features/Operation/components/Headers.vue.js.map +1 -1
  416. package/dist/features/Operation/components/Headers.vue.script.js +5 -2
  417. package/dist/features/Operation/components/Headers.vue.script.js.map +1 -1
  418. package/dist/features/Operation/components/OperationParameters.vue.d.ts.map +1 -1
  419. package/dist/features/Operation/components/OperationParameters.vue.js.map +1 -1
  420. package/dist/features/Operation/components/OperationParameters.vue.script.js +4 -4
  421. package/dist/features/Operation/components/OperationParameters.vue.script.js.map +1 -1
  422. package/dist/features/Operation/components/OperationResponses.vue.script.js +1 -1
  423. package/dist/features/Operation/components/OperationResponses.vue.script.js.map +1 -1
  424. package/dist/features/Operation/components/OperationScopes.vue.script.js +1 -1
  425. package/dist/features/Operation/components/OperationScopes.vue.script.js.map +1 -1
  426. package/dist/features/Operation/components/ParameterList.vue.script.js +1 -1
  427. package/dist/features/Operation/components/ParameterList.vue.script.js.map +1 -1
  428. package/dist/features/Operation/components/ParameterListItem.vue.d.ts.map +1 -1
  429. package/dist/features/Operation/components/ParameterListItem.vue.js +1 -1
  430. package/dist/features/Operation/components/ParameterListItem.vue.js.map +1 -1
  431. package/dist/features/Operation/components/ParameterListItem.vue.script.js +4 -1
  432. package/dist/features/Operation/components/ParameterListItem.vue.script.js.map +1 -1
  433. package/dist/features/Operation/components/RequestBody.vue.d.ts.map +1 -1
  434. package/dist/features/Operation/components/RequestBody.vue.js +1 -1
  435. package/dist/features/Operation/components/RequestBody.vue.js.map +1 -1
  436. package/dist/features/Operation/components/RequestBody.vue.script.js +12 -3
  437. package/dist/features/Operation/components/RequestBody.vue.script.js.map +1 -1
  438. package/dist/features/Operation/components/SecurityRequirementBadge.vue.script.js +1 -1
  439. package/dist/features/Operation/components/SecurityRequirementBadge.vue.script.js.map +1 -1
  440. package/dist/features/Operation/components/SecurityRequirementBadgeScheme.vue.script.js +1 -1
  441. package/dist/features/Operation/components/SecurityRequirementBadgeScheme.vue.script.js.map +1 -1
  442. package/dist/features/Operation/components/callbacks/Callback.vue.js +1 -1
  443. package/dist/features/Operation/components/callbacks/Callback.vue.script.js +1 -1
  444. package/dist/features/Operation/components/callbacks/Callback.vue.script.js.map +1 -1
  445. package/dist/features/Operation/components/callbacks/Callbacks.vue.script.js +1 -1
  446. package/dist/features/Operation/components/callbacks/Callbacks.vue.script.js.map +1 -1
  447. package/dist/features/Operation/components/helpers/get-parameter-examples.js.map +1 -1
  448. package/dist/features/Operation/helpers/filter-selected-security.js.map +1 -1
  449. package/dist/features/Operation/helpers/flatten-deep-object-query-parameter.js.map +1 -1
  450. package/dist/features/Operation/helpers/get-required-security.js.map +1 -1
  451. package/dist/features/Operation/helpers/operation-stability.js.map +1 -1
  452. package/dist/features/Operation/layouts/ClassicLayout.vue.d.ts.map +1 -1
  453. package/dist/features/Operation/layouts/ClassicLayout.vue.js +1 -1
  454. package/dist/features/Operation/layouts/ClassicLayout.vue.script.js +1 -1
  455. package/dist/features/Operation/layouts/ClassicLayout.vue.script.js.map +1 -1
  456. package/dist/features/Operation/layouts/ModernLayout.vue.d.ts.map +1 -1
  457. package/dist/features/Operation/layouts/ModernLayout.vue.js +1 -1
  458. package/dist/features/Operation/layouts/ModernLayout.vue.script.js +1 -1
  459. package/dist/features/Operation/layouts/ModernLayout.vue.script.js.map +1 -1
  460. package/dist/features/Operation/request-body-composition-index.js.map +1 -1
  461. package/dist/features/Search/components/SearchButton.vue.d.ts.map +1 -1
  462. package/dist/features/Search/components/SearchButton.vue.script.js +1 -1
  463. package/dist/features/Search/components/SearchButton.vue.script.js.map +1 -1
  464. package/dist/features/Search/components/SearchModal.vue.d.ts.map +1 -1
  465. package/dist/features/Search/components/SearchModal.vue.js +1 -1
  466. package/dist/features/Search/components/SearchModal.vue.script.js +1 -1
  467. package/dist/features/Search/components/SearchModal.vue.script.js.map +1 -1
  468. package/dist/features/Search/components/SearchResult.vue.d.ts.map +1 -1
  469. package/dist/features/Search/components/SearchResult.vue.js.map +1 -1
  470. package/dist/features/Search/components/SearchResult.vue.script.js +3 -3
  471. package/dist/features/Search/components/SearchResult.vue.script.js.map +1 -1
  472. package/dist/features/Search/helpers/create-fuse-instance.js.map +1 -1
  473. package/dist/features/Search/helpers/create-search-index.js.map +1 -1
  474. package/dist/features/Search/hooks/useSearchIndex.js.map +1 -1
  475. package/dist/features/ask-agent-button/AskAgentButton.vue.js +1 -1
  476. package/dist/features/ask-agent-button/AskAgentButton.vue.script.js +1 -1
  477. package/dist/features/ask-agent-button/AskAgentButton.vue.script.js.map +1 -1
  478. package/dist/features/developer-tools/DeveloperTools.vue.script.js +2 -2
  479. package/dist/features/developer-tools/DeveloperTools.vue.script.js.map +1 -1
  480. package/dist/features/developer-tools/components/ApiReferenceToolbarBlurb.vue.js +1 -1
  481. package/dist/features/developer-tools/components/ApiReferenceToolbarBlurb.vue.js.map +1 -1
  482. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayout.vue.script.js +1 -1
  483. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayout.vue.script.js.map +1 -1
  484. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.d.ts.map +1 -1
  485. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.js.map +1 -1
  486. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.script.js +3 -3
  487. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.script.js.map +1 -1
  488. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigTheme.vue.script.js +1 -1
  489. package/dist/features/developer-tools/components/ApiReferenceToolbarConfigTheme.vue.script.js.map +1 -1
  490. package/dist/features/developer-tools/components/ApiReferenceToolbarPopover.vue.script.js +1 -1
  491. package/dist/features/developer-tools/components/ApiReferenceToolbarPopover.vue.script.js.map +1 -1
  492. package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.d.ts.map +1 -1
  493. package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.script.js +4 -3
  494. package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.script.js.map +1 -1
  495. package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.d.ts.map +1 -1
  496. package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.js.map +1 -1
  497. package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.script.js +2 -1
  498. package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.script.js.map +1 -1
  499. package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.d.ts.map +1 -1
  500. package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.script.js +4 -3
  501. package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.script.js.map +1 -1
  502. package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.d.ts.map +1 -1
  503. package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.script.js +1 -1
  504. package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.script.js.map +1 -1
  505. package/dist/features/developer-tools/components/DeployApiReference.vue.script.js +1 -1
  506. package/dist/features/developer-tools/components/DeployApiReference.vue.script.js.map +1 -1
  507. package/dist/features/developer-tools/components/ModifyConfiguration.vue.script.js +2 -2
  508. package/dist/features/developer-tools/components/ModifyConfiguration.vue.script.js.map +1 -1
  509. package/dist/features/developer-tools/components/ShareApiReference.vue.script.js +1 -1
  510. package/dist/features/developer-tools/components/ShareApiReference.vue.script.js.map +1 -1
  511. package/dist/features/example-responses/ExampleResponse.vue.js +1 -1
  512. package/dist/features/example-responses/ExampleResponse.vue.script.js +1 -1
  513. package/dist/features/example-responses/ExampleResponse.vue.script.js.map +1 -1
  514. package/dist/features/example-responses/ExampleResponseTab.vue.js +1 -1
  515. package/dist/features/example-responses/ExampleResponseTab.vue.script.js +1 -1
  516. package/dist/features/example-responses/ExampleResponseTab.vue.script.js.map +1 -1
  517. package/dist/features/example-responses/ExampleResponseTabList.vue.d.ts.map +1 -1
  518. package/dist/features/example-responses/ExampleResponseTabList.vue.js +1 -1
  519. package/dist/features/example-responses/ExampleResponseTabList.vue.script.js +1 -1
  520. package/dist/features/example-responses/ExampleResponseTabList.vue.script.js.map +1 -1
  521. package/dist/features/example-responses/ExampleResponses.vue.d.ts.map +1 -1
  522. package/dist/features/example-responses/ExampleResponses.vue.js +1 -1
  523. package/dist/features/example-responses/ExampleResponses.vue.script.js +1 -1
  524. package/dist/features/example-responses/ExampleResponses.vue.script.js.map +1 -1
  525. package/dist/features/example-responses/ExampleSchema.vue.script.js +1 -1
  526. package/dist/features/example-responses/ExampleSchema.vue.script.js.map +1 -1
  527. package/dist/features/example-responses/helpers/has-response-content.js.map +1 -1
  528. package/dist/features/example-responses/helpers/normalize-mime-type-object.js.map +1 -1
  529. package/dist/features/example-responses/helpers/normalize-mime-type.js.map +1 -1
  530. package/dist/features/external-docs/ExternalDocs.vue.d.ts.map +1 -1
  531. package/dist/features/external-docs/ExternalDocs.vue.js.map +1 -1
  532. package/dist/features/external-docs/ExternalDocs.vue.script.js +25 -13
  533. package/dist/features/external-docs/ExternalDocs.vue.script.js.map +1 -1
  534. package/dist/features/info-object/Contact.vue.d.ts.map +1 -1
  535. package/dist/features/info-object/Contact.vue.js.map +1 -1
  536. package/dist/features/info-object/Contact.vue.script.js +10 -4
  537. package/dist/features/info-object/Contact.vue.script.js.map +1 -1
  538. package/dist/features/info-object/InfoLink.vue.d.ts.map +1 -1
  539. package/dist/features/info-object/InfoLink.vue.js.map +1 -1
  540. package/dist/features/info-object/InfoLink.vue.script.js +17 -5
  541. package/dist/features/info-object/InfoLink.vue.script.js.map +1 -1
  542. package/dist/features/info-object/License.vue.d.ts.map +1 -1
  543. package/dist/features/info-object/License.vue.js.map +1 -1
  544. package/dist/features/info-object/License.vue.script.js +11 -5
  545. package/dist/features/info-object/License.vue.script.js.map +1 -1
  546. package/dist/features/info-object/TermsOfService.vue.d.ts.map +1 -1
  547. package/dist/features/info-object/TermsOfService.vue.js.map +1 -1
  548. package/dist/features/info-object/TermsOfService.vue.script.js +10 -4
  549. package/dist/features/info-object/TermsOfService.vue.script.js.map +1 -1
  550. package/dist/features/localization/locales/ar.js.map +1 -1
  551. package/dist/features/localization/locales/de.js.map +1 -1
  552. package/dist/features/localization/locales/en.js.map +1 -1
  553. package/dist/features/localization/locales/es.js.map +1 -1
  554. package/dist/features/localization/locales/fr.js.map +1 -1
  555. package/dist/features/localization/locales/pt.d.ts +229 -0
  556. package/dist/features/localization/locales/pt.d.ts.map +1 -0
  557. package/dist/features/localization/locales/pt.js +227 -0
  558. package/dist/features/localization/locales/pt.js.map +1 -0
  559. package/dist/features/localization/locales/ru.js.map +1 -1
  560. package/dist/features/localization/locales/zh-cn.js.map +1 -1
  561. package/dist/features/localization/translations.d.ts +228 -0
  562. package/dist/features/localization/translations.d.ts.map +1 -1
  563. package/dist/features/localization/translations.js +4 -2
  564. package/dist/features/localization/translations.js.map +1 -1
  565. package/dist/features/localization/use-localization.js.map +1 -1
  566. package/dist/features/multiple-documents/DocumentSelector.vue.d.ts.map +1 -1
  567. package/dist/features/multiple-documents/DocumentSelector.vue.script.js +1 -1
  568. package/dist/features/multiple-documents/DocumentSelector.vue.script.js.map +1 -1
  569. package/dist/features/specification-extension/SpecificationExtension.vue.script.js +1 -1
  570. package/dist/features/specification-extension/SpecificationExtension.vue.script.js.map +1 -1
  571. package/dist/features/specification-extension/helpers.js.map +1 -1
  572. package/dist/features/test-request-button/TestRequestButton.vue.js +1 -1
  573. package/dist/features/test-request-button/TestRequestButton.vue.script.js +1 -1
  574. package/dist/features/test-request-button/TestRequestButton.vue.script.js.map +1 -1
  575. package/dist/features/x-badges/XBadges.vue.d.ts.map +1 -1
  576. package/dist/features/x-badges/XBadges.vue.script.js +1 -1
  577. package/dist/features/x-badges/XBadges.vue.script.js.map +1 -1
  578. package/dist/helpers/build-models-index.d.ts +15 -0
  579. package/dist/helpers/build-models-index.d.ts.map +1 -0
  580. package/dist/helpers/build-models-index.js +28 -0
  581. package/dist/helpers/build-models-index.js.map +1 -0
  582. package/dist/helpers/color-mode.js.map +1 -1
  583. package/dist/helpers/download.js.map +1 -1
  584. package/dist/helpers/get-async-api-message-payload-schema.js.map +1 -1
  585. package/dist/helpers/get-async-api-model-schema.js.map +1 -1
  586. package/dist/helpers/id-routing.d.ts +18 -4
  587. package/dist/helpers/id-routing.d.ts.map +1 -1
  588. package/dist/helpers/id-routing.js +67 -20
  589. package/dist/helpers/id-routing.js.map +1 -1
  590. package/dist/helpers/is-introduction-entry.js.map +1 -1
  591. package/dist/helpers/lazy-bus.js.map +1 -1
  592. package/dist/helpers/load-from-perssistance.js.map +1 -1
  593. package/dist/helpers/map-config-plugins.js.map +1 -1
  594. package/dist/helpers/map-config-to-workspace-store.js.map +1 -1
  595. package/dist/helpers/normalize-configurations.js +1 -1
  596. package/dist/helpers/normalize-configurations.js.map +1 -1
  597. package/dist/helpers/openapi.d.ts +6 -1
  598. package/dist/helpers/openapi.d.ts.map +1 -1
  599. package/dist/helpers/openapi.js +37 -6
  600. package/dist/helpers/openapi.js.map +1 -1
  601. package/dist/helpers/safe-deep-clone.js.map +1 -1
  602. package/dist/helpers/storage.d.ts +16 -0
  603. package/dist/helpers/storage.d.ts.map +1 -1
  604. package/dist/helpers/storage.js +14 -0
  605. package/dist/helpers/storage.js.map +1 -1
  606. package/dist/helpers/upload-temp-document.js.map +1 -1
  607. package/dist/hooks/use-agent.js.map +1 -1
  608. package/dist/hooks/use-intersection.js.map +1 -1
  609. package/dist/plugins/hooks/usePluginManager.js.map +1 -1
  610. package/dist/plugins/persistence-plugin.js +6 -1
  611. package/dist/plugins/persistence-plugin.js.map +1 -1
  612. package/dist/plugins/plugin-manager.js +35 -0
  613. package/dist/plugins/plugin-manager.js.map +1 -1
  614. package/dist/plugins/posthog/index.js.map +1 -1
  615. package/dist/standalone/lib/html-api.js.map +1 -1
  616. package/dist/standalone/lib/load-plugins-from-urls.js.map +1 -1
  617. package/dist/style.css +1419 -1316
  618. package/dist/vue-styles.css +918 -831
  619. package/package.json +27 -27
  620. package/dist/browser/chunks/AgentScalarChatInterface-C8lX3RCo.js +0 -27
  621. package/dist/browser/chunks/ScalarTextInput.vue-Xf60Nwf-.js +0 -27
  622. package/dist/browser/chunks/browser-67K6wmG9.js +0 -129
  623. package/dist/browser/chunks/modal-B8Opb61-.js +0 -15
  624. package/dist/browser/chunks/modal-Dcl-Y2Zk.js +0 -99
  625. package/dist/browser/chunks/runtime-core.esm-bundler-Byrbbu5Q.js +0 -17
  626. package/dist/browser/chunks/vendor-CBP43oHJ.js +0 -306
  627. package/dist/features/Operation/helpers/should-ignore-entity.d.ts +0 -8
  628. package/dist/features/Operation/helpers/should-ignore-entity.d.ts.map +0 -1
  629. package/dist/features/Operation/helpers/should-ignore-entity.js +0 -9
  630. package/dist/features/Operation/helpers/should-ignore-entity.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaComposition.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaComposition.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n ScalarListbox,\n type ScalarListboxOption,\n} from '@scalar/components/listbox'\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport { ScalarIconCaretDown } from '@scalar/icons'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type {\n DiscriminatorObject,\n SchemaObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, inject, ref, watch } from 'vue'\n\nimport type { SchemaOptions } from '@/components/Content/Schema/types'\nimport { useLocalization } from '@/features/localization'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\n\nimport { getSchemaType } from './helpers/get-schema-type'\nimport { partitionAllOfCompositions } from './helpers/partition-all-of-compositions'\nimport { type CompositionKeyword } from './helpers/schema-composition'\nimport { getCycleKey } from './helpers/schema-cycle'\nimport { getModelNameFromSchema } from './helpers/schema-name'\nimport Schema from './Schema.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** The composition keyword (oneOf, anyOf, allOf) */\n composition: CompositionKeyword\n /** Optional discriminator object for polymorphic schemas */\n discriminator?: DiscriminatorObject\n /** Optional name for the schema */\n name?: string\n /** The schema value containing the composition */\n schema: SchemaObject\n /** Nesting level for proper indentation */\n level: number\n /** Whether to use compact layout */\n compact?: boolean\n /** Whether to hide the heading */\n hideHeading?: boolean\n /** Hide model names in type display */\n hideModelNames?: boolean\n /** Breadcrumb for navigation */\n breadcrumb?: string[]\n /** Event bus emitting actions */\n eventBus: WorkspaceEventBus | null\n /** Move the options into single prop so they are easy to pass around */\n options: SchemaOptions\n /** When \"requestBody\", sync selected index with the example snippet */\n schemaContext?: string\n /** Internal path used to sync nested request body compositions with the code sample */\n compositionPath?: string[]\n }>(),\n {\n compact: false,\n hideHeading: false,\n },\n)\nconst { translate } = useLocalization()\n\n/**\n * Split an `allOf` into an ordered list of segments (object chunks + choice\n * pickers) so multiple mutually-exclusive selections each render their own\n * picker, in the position they were declared, instead of all but the first\n * being dropped and the rest bubbling to the end.\n */\nconst allOfSegments = computed(() =>\n props.composition === 'allOf'\n ? partitionAllOfCompositions(props.schema).segments\n : [],\n)\n\n/** The current composition */\nconst composition = computed(() =>\n [props.schema[props.composition]]\n .flat()\n .map((schema) => ({ value: resolve.schema(schema), original: schema }))\n .filter((it) => isDefined(it.value)),\n)\n\n/**\n * Generate listbox options for the composition selector.\n * Each option represents a schema in the composition with a human-readable label.\n * Prefers schema title/name over structural type when present.\n */\nconst listboxOptions = computed((): ScalarListboxOption[] =>\n composition.value.map((schema, index: number) => {\n const resolved = resolve.schema(schema.original!)\n const label =\n (getModelNameFromSchema(resolved)?.label ?? getSchemaType(resolved)) ||\n translate('schema.schema')\n return { id: String(index), label }\n }),\n)\n\nconst compositionSelectionKey = computed(() =>\n props.compositionPath?.length\n ? [...props.compositionPath, props.composition].join('.')\n : '',\n)\n\n/** When this composition is in the request body, sync selection with the example snippet */\nconst requestBodyCompositionSelectionRef = inject(\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n undefined,\n)\n\nconst initialSelectedIndex = computed(() => {\n if (\n props.schemaContext !== 'requestBody' ||\n !requestBodyCompositionSelectionRef?.value ||\n !compositionSelectionKey.value\n ) {\n return 0\n }\n\n const selectedIndex =\n requestBodyCompositionSelectionRef.value[compositionSelectionKey.value]\n\n if (typeof selectedIndex !== 'number' || Number.isNaN(selectedIndex)) {\n return 0\n }\n\n return Math.max(0, Math.min(selectedIndex, listboxOptions.value.length - 1))\n})\n\n/**\n * Two-way computed property for the selected option.\n * Handles conversion between the selected index and the listbox option format.\n */\nconst selectedOption = ref<ScalarListboxOption | undefined>()\n\nwatch(\n [listboxOptions, initialSelectedIndex],\n ([options, selectedIndex]) => {\n if (\n !selectedOption.value ||\n !options.some((option) => option.id === selectedOption.value?.id)\n ) {\n selectedOption.value = options[selectedIndex] ?? options[0]\n }\n },\n { immediate: true },\n)\n\nconst compositionLabel = (type: CompositionKeyword): string =>\n translate(`schema.${type}`)\n\n/** Inside the currently selected composition */\nconst selectedComposition = computed(\n () => composition.value[Number(selectedOption.value?.id ?? '0')]?.value,\n)\n\n/**\n * The request body card renders the merged `allOf` description on its outer card\n * (see `Schema.vue`), but only for the top-level request body schema. For that\n * single composition we hide the nested merged `Schema`'s description so the text\n * is not shown twice. Nested request-body compositions (deeper properties) are\n * not shown on the outer card and would otherwise lose their description\n * entirely, because the property row already skips it when `allOf` is present.\n *\n * The top-level request body composition is the one whose `compositionPath` is\n * still the request body root (`['requestBody']`); nested compositions append\n * property segments and therefore have a longer path.\n */\nconst isRequestBodyRootComposition = computed(\n () =>\n props.schemaContext === 'requestBody' &&\n props.compositionPath?.length === 1,\n)\n\n/**\n * Cycle key for the selected composition member, derived from its raw\n * (unresolved) value so a member that references an ancestor is detected as a\n * cycle.\n */\nconst selectedCompositionCycleKey = computed(() =>\n getCycleKey(\n composition.value[Number(selectedOption.value?.id ?? '0')]?.original,\n ),\n)\n\n/**\n * Controls whether the nested schema is displayed. When expanding all schema\n * properties we open it by default; the nested Schema handles cycle detection,\n * so finite compositions render fully while recursive ones still stop.\n */\nconst showNestedSchema = ref(!!props.options.expandAllSchemaProperties)\n\nif (\n requestBodyCompositionSelectionRef &&\n props.schemaContext === 'requestBody' &&\n compositionSelectionKey.value\n) {\n watch(\n selectedOption,\n (option) => {\n const index = option ? Number(option.id) : 0\n if (!Number.isNaN(index)) {\n requestBodyCompositionSelectionRef.value = {\n ...requestBodyCompositionSelectionRef.value,\n [compositionSelectionKey.value]: index,\n } satisfies RequestBodyCompositionSelection\n }\n },\n { immediate: true },\n )\n}\n</script>\n\n<template>\n <div class=\"property-rule\">\n <!--\n allOf: render the members in source order — object chunks as fields, each\n oneOf/anyOf group as its own picker in place. Keeps every mutually-exclusive\n selection (mergeAllOfSchemas alone drops all but the first) and preserves the\n position of each choice group among the surrounding fields, flowing inline\n with them as one continuous list (no extra spacing or card).\n -->\n <template v-if=\"props.composition === 'allOf'\">\n <template\n v-for=\"(segment, segmentIndex) in allOfSegments\"\n :key=\"segmentIndex\">\n <Schema\n v-if=\"segment.kind === 'object'\"\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :compositionPath=\"compositionPath\"\n :discriminator=\"discriminator\"\n :eventBus=\"eventBus\"\n :hideDescription=\"isRequestBodyRootComposition\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"true\"\n :options=\"options\"\n :schema=\"segment.schema\"\n :schemaContext=\"schemaContext\" />\n <SchemaComposition\n v-else\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :composition=\"segment.composition\"\n :compositionPath=\"[\n ...(compositionPath ?? []),\n String(segment.choiceIndex),\n ]\"\n :eventBus=\"eventBus\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level\"\n :options=\"options\"\n :schema=\"segment.value\"\n :schemaContext=\"schemaContext\" />\n </template>\n </template>\n\n <template v-else>\n <!-- Composition selector + selected branch -->\n <ScalarListbox\n v-model=\"selectedOption\"\n :options=\"listboxOptions\"\n resize>\n <button\n class=\"composition-selector bg-b-1.5 hover:bg-b-2 flex w-full cursor-pointer items-center gap-1 rounded-t-lg border px-2.5 py-2.5 pr-3 text-left\"\n type=\"button\">\n <span class=\"text-c-2\">{{\n compositionLabel(props.composition)\n }}</span>\n <span\n class=\"composition-selector-label text-c-1\"\n :class=\"{\n 'line-through': selectedComposition?.deprecated,\n }\">\n {{ selectedOption?.label || translate('schema.schema') }}\n </span>\n <div\n v-if=\"selectedComposition?.deprecated\"\n class=\"text-red\">\n {{ translate('common.deprecated') }}\n </div>\n <ScalarIconCaretDown />\n </button>\n </ScalarListbox>\n\n <div class=\"composition-panel\">\n <!-- Button to toggle nested schema display -->\n <button\n v-if=\"!showNestedSchema && level > 2\"\n class=\"bg-b-1 hover:bg-b-2 text-c-1 flex w-full items-center justify-center gap-2 rounded-b-lg border border-t-0 px-2 py-2 text-sm font-medium transition-colors\"\n type=\"button\"\n @click=\"showNestedSchema = true\">\n {{ translate('schema.showSchemaDetails') }}\n <ScalarIconCaretDown class=\"h-3 w-3\" />\n </button>\n\n <!-- Render the selected schema if it has content to display -->\n <Schema\n v-else\n :key=\"selectedOption?.id ?? '0'\"\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :compositionPath=\"compositionPath\"\n :cycleKey=\"selectedCompositionCycleKey\"\n :discriminator=\"discriminator\"\n :eventBus=\"eventBus\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"true\"\n :options=\"options\"\n :schema=\"selectedComposition\"\n :schemaContext=\"schemaContext\" />\n </div>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaComposition.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaComposition.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n ScalarListbox,\n type ScalarListboxOption,\n} from '@scalar/components/listbox'\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport { ScalarIconCaretDown } from '@scalar/icons'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type {\n DiscriminatorObject,\n SchemaObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, inject, ref, watch } from 'vue'\n\nimport type { SchemaOptions } from '@/components/Content/Schema/types'\nimport { useLocalization } from '@/features/localization'\nimport {\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n type RequestBodyCompositionSelection,\n} from '@/features/Operation/request-body-composition-index'\n\nimport { getSchemaType } from './helpers/get-schema-type'\nimport { partitionAllOfCompositions } from './helpers/partition-all-of-compositions'\nimport { type CompositionKeyword } from './helpers/schema-composition'\nimport { getCycleKey } from './helpers/schema-cycle'\nimport { getModelNameFromSchema } from './helpers/schema-name'\nimport Schema from './Schema.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** The composition keyword (oneOf, anyOf, allOf) */\n composition: CompositionKeyword\n /** Optional discriminator object for polymorphic schemas */\n discriminator?: DiscriminatorObject\n /** Optional name for the schema */\n name?: string\n /** The schema value containing the composition */\n schema: SchemaObject\n /** Nesting level for proper indentation */\n level: number\n /** Whether to use compact layout */\n compact?: boolean\n /** Whether to hide the heading */\n hideHeading?: boolean\n /** Hide model names in type display */\n hideModelNames?: boolean\n /** Breadcrumb for navigation */\n breadcrumb?: string[]\n /** Event bus emitting actions */\n eventBus: WorkspaceEventBus | null\n /** Move the options into single prop so they are easy to pass around */\n options: SchemaOptions\n /** When \"requestBody\", sync selected index with the example snippet */\n schemaContext?: string\n /** Internal path used to sync nested request body compositions with the code sample */\n compositionPath?: string[]\n }>(),\n {\n compact: false,\n hideHeading: false,\n },\n)\nconst { translate } = useLocalization()\n\n/**\n * Split an `allOf` into an ordered list of segments (object chunks + choice\n * pickers) so multiple mutually-exclusive selections each render their own\n * picker, in the position they were declared, instead of all but the first\n * being dropped and the rest bubbling to the end.\n */\nconst allOfSegments = computed(() =>\n props.composition === 'allOf'\n ? partitionAllOfCompositions(props.schema).segments\n : [],\n)\n\n/** The current composition */\nconst composition = computed(() =>\n [props.schema[props.composition]]\n .flat()\n .map((schema) => ({ value: resolve.schema(schema), original: schema }))\n .filter((it) => isDefined(it.value)),\n)\n\n/**\n * Generate listbox options for the composition selector.\n * Each option represents a schema in the composition with a human-readable label.\n * Prefers schema title/name over structural type when present.\n */\nconst listboxOptions = computed((): ScalarListboxOption[] =>\n composition.value.map((schema, index: number) => {\n const resolved = resolve.schema(schema.original!)\n const label =\n (getModelNameFromSchema(resolved)?.label ?? getSchemaType(resolved)) ||\n translate('schema.schema')\n return { id: String(index), label }\n }),\n)\n\nconst compositionSelectionKey = computed(() =>\n props.compositionPath?.length\n ? [...props.compositionPath, props.composition].join('.')\n : '',\n)\n\n/** When this composition is in the request body, sync selection with the example snippet */\nconst requestBodyCompositionSelectionRef = inject(\n REQUEST_BODY_COMPOSITION_INDEX_SYMBOL,\n undefined,\n)\n\nconst initialSelectedIndex = computed(() => {\n if (\n props.schemaContext !== 'requestBody' ||\n !requestBodyCompositionSelectionRef?.value ||\n !compositionSelectionKey.value\n ) {\n return 0\n }\n\n const selectedIndex =\n requestBodyCompositionSelectionRef.value[compositionSelectionKey.value]\n\n if (typeof selectedIndex !== 'number' || Number.isNaN(selectedIndex)) {\n return 0\n }\n\n return Math.max(0, Math.min(selectedIndex, listboxOptions.value.length - 1))\n})\n\n/**\n * Two-way computed property for the selected option.\n * Handles conversion between the selected index and the listbox option format.\n */\nconst selectedOption = ref<ScalarListboxOption | undefined>()\n\nwatch(\n [listboxOptions, initialSelectedIndex],\n ([options, selectedIndex]) => {\n if (\n !selectedOption.value ||\n !options.some((option) => option.id === selectedOption.value?.id)\n ) {\n selectedOption.value = options[selectedIndex] ?? options[0]\n }\n },\n { immediate: true },\n)\n\nconst compositionLabel = (type: CompositionKeyword): string =>\n translate(`schema.${type}`)\n\n/** Inside the currently selected composition */\nconst selectedComposition = computed(\n () => composition.value[Number(selectedOption.value?.id ?? '0')]?.value,\n)\n\n/**\n * The request body card renders the merged `allOf` description on its outer card\n * (see `Schema.vue`), but only for the top-level request body schema. For that\n * single composition we hide the nested merged `Schema`'s description so the text\n * is not shown twice. Nested request-body compositions (deeper properties) are\n * not shown on the outer card and would otherwise lose their description\n * entirely, because the property row already skips it when `allOf` is present.\n *\n * The top-level request body composition is the one whose `compositionPath` is\n * still the request body root (`['requestBody']`); nested compositions append\n * property segments and therefore have a longer path.\n */\nconst isRequestBodyRootComposition = computed(\n () =>\n props.schemaContext === 'requestBody' &&\n props.compositionPath?.length === 1,\n)\n\n/**\n * Cycle key for the selected composition member, derived from its raw\n * (unresolved) value so a member that references an ancestor is detected as a\n * cycle.\n */\nconst selectedCompositionCycleKey = computed(() =>\n getCycleKey(\n composition.value[Number(selectedOption.value?.id ?? '0')]?.original,\n ),\n)\n\n/**\n * Controls whether the nested schema is displayed. When expanding all schema\n * properties we open it by default; the nested Schema handles cycle detection,\n * so finite compositions render fully while recursive ones still stop.\n */\nconst showNestedSchema = ref(!!props.options.expandAllSchemaProperties)\n\nif (\n requestBodyCompositionSelectionRef &&\n props.schemaContext === 'requestBody' &&\n compositionSelectionKey.value\n) {\n watch(\n selectedOption,\n (option) => {\n const index = option ? Number(option.id) : 0\n if (!Number.isNaN(index)) {\n requestBodyCompositionSelectionRef.value = {\n ...requestBodyCompositionSelectionRef.value,\n [compositionSelectionKey.value]: index,\n } satisfies RequestBodyCompositionSelection\n }\n },\n { immediate: true },\n )\n}\n</script>\n\n<template>\n <div class=\"property-rule\">\n <!--\n allOf: render the members in source order — object chunks as fields, each\n oneOf/anyOf group as its own picker in place. Keeps every mutually-exclusive\n selection (mergeAllOfSchemas alone drops all but the first) and preserves the\n position of each choice group among the surrounding fields, flowing inline\n with them as one continuous list (no extra spacing or card).\n -->\n <template v-if=\"props.composition === 'allOf'\">\n <template\n v-for=\"(segment, segmentIndex) in allOfSegments\"\n :key=\"segmentIndex\">\n <Schema\n v-if=\"segment.kind === 'object'\"\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :compositionPath=\"compositionPath\"\n :discriminator=\"discriminator\"\n :eventBus=\"eventBus\"\n :hideDescription=\"isRequestBodyRootComposition\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"true\"\n :options=\"options\"\n :schema=\"segment.schema\"\n :schemaContext=\"schemaContext\" />\n <SchemaComposition\n v-else\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :composition=\"segment.composition\"\n :compositionPath=\"[\n ...(compositionPath ?? []),\n String(segment.choiceIndex),\n ]\"\n :eventBus=\"eventBus\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level\"\n :options=\"options\"\n :schema=\"segment.value\"\n :schemaContext=\"schemaContext\" />\n </template>\n </template>\n\n <template v-else>\n <!-- Composition selector + selected branch -->\n <ScalarListbox\n v-model=\"selectedOption\"\n :options=\"listboxOptions\"\n resize>\n <button\n class=\"composition-selector bg-b-1.5 hover:bg-b-2 flex w-full cursor-pointer items-center gap-1 rounded-t-lg border px-2.5 py-2.5 pr-3 text-left\"\n type=\"button\">\n <span class=\"text-c-2\">{{\n compositionLabel(props.composition)\n }}</span>\n <span\n class=\"composition-selector-label text-c-1\"\n :class=\"{\n 'line-through': selectedComposition?.deprecated,\n }\">\n {{ selectedOption?.label || translate('schema.schema') }}\n </span>\n <div\n v-if=\"selectedComposition?.deprecated\"\n class=\"text-red\">\n {{ translate('common.deprecated') }}\n </div>\n <ScalarIconCaretDown />\n </button>\n </ScalarListbox>\n\n <div class=\"composition-panel\">\n <!-- Button to toggle nested schema display -->\n <button\n v-if=\"!showNestedSchema && level > 2\"\n class=\"bg-b-1 hover:bg-b-2 text-c-1 flex w-full items-center justify-center gap-2 rounded-b-lg border border-t-0 px-2 py-2 text-sm font-medium transition-colors\"\n type=\"button\"\n @click=\"showNestedSchema = true\">\n {{ translate('schema.showSchemaDetails') }}\n <ScalarIconCaretDown class=\"h-3 w-3\" />\n </button>\n\n <!-- Render the selected schema if it has content to display -->\n <Schema\n v-else\n :key=\"selectedOption?.id ?? '0'\"\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :compositionPath=\"compositionPath\"\n :cycleKey=\"selectedCompositionCycleKey\"\n :discriminator=\"discriminator\"\n :eventBus=\"eventBus\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"true\"\n :options=\"options\"\n :schema=\"selectedComposition\"\n :schemaContext=\"schemaContext\" />\n </div>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import SchemaEnumPropertyItem_vue_vue_type_script_setup_true_lang_default from "./SchemaEnumPropertyItem.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/Content/Schema/SchemaEnumPropertyItem.vue
5
- var SchemaEnumPropertyItem_default = /* @__PURE__ */ _plugin_vue_export_helper_default(SchemaEnumPropertyItem_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4375ecfd"]]);
5
+ var SchemaEnumPropertyItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(SchemaEnumPropertyItem_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4375ecfd"]]);
6
6
  //#endregion
7
7
  export { SchemaEnumPropertyItem_default as default };
8
8
 
@@ -9,7 +9,7 @@ var _hoisted_4 = {
9
9
  key: 0,
10
10
  class: "property-enum-value-description"
11
11
  };
12
- var SchemaEnumPropertyItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var SchemaEnumPropertyItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  __name: "SchemaEnumPropertyItem",
14
14
  props: {
15
15
  label: {},
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaEnumPropertyItem.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaEnumPropertyItem.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport { ScalarWrappingText } from '@scalar/components/wrapping-text'\n\ndefineProps<{\n label: string\n description?: string\n}>()\n</script>\n\n<template>\n <li class=\"property-enum-value\">\n <div class=\"property-enum-value-content\">\n <span class=\"property-enum-value-label\">\n <ScalarWrappingText\n :text=\"label\"\n preset=\"property\" />\n </span>\n <span\n v-if=\"description\"\n class=\"property-enum-value-description\">\n <ScalarMarkdown :value=\"description\" />\n </span>\n </div>\n </li>\n</template>\n\n<style scoped>\n.property-enum-value {\n color: var(--scalar-color-3);\n line-height: 1.5;\n overflow-wrap: break-word;\n display: flex;\n align-items: stretch;\n position: relative;\n\n --decorator-width: 1px;\n --decorator-color: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-color-1) 25%\n );\n}\n\n.property-enum-value-content {\n display: flex;\n flex-direction: column;\n padding: 3px 0;\n}\n\n.property-enum-value-label {\n font-family: var(--scalar-font-code);\n color: var(--scalar-color-1);\n font-size: var(--scalar-font-size-4);\n position: relative;\n}\n\n.property-enum-value:last-of-type .property-enum-value-label {\n padding-bottom: 0;\n}\n\n.property-enum-value::before {\n content: '';\n margin-right: 12px;\n width: var(--decorator-width);\n display: block;\n background-color: var(--decorator-color);\n}\n\n.property-enum-value:last-of-type::before,\n.property-enum-values:has(.enum-toggle-button)\n .property-enum-value:nth-last-child(2)::before {\n height: calc(0.5lh + 4px);\n}\n\n.property-enum-value-label::after {\n content: '';\n position: absolute;\n top: calc(0.5lh);\n left: -12px;\n width: 8px;\n height: var(--decorator-width);\n background-color: var(--decorator-color);\n}\n\n.property-enum-value:last-of-type::after {\n bottom: 0;\n height: 50%;\n background: var(--scalar-background-1);\n border-top: var(--scalar-border-width) solid var(--decorator-color);\n}\n\n.property-enum-value-description {\n color: var(--scalar-color-3);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;uBAWE,mBAaK,MAbL,YAaK,CAZH,mBAWM,OAXN,YAWM,CAVJ,mBAIO,QAJP,YAIO,CAHL,YAEsB,MAAA,mBAAA,EAAA;IADnB,MAAM,QAAA;IACP,QAAO;4BAGH,QAAA,eAAA,WAAA,EADR,mBAIO,QAJP,YAIO,CADL,YAAuC,MAAA,eAAA,EAAA,EAAtB,OAAO,QAAA,aAAW,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SchemaEnumPropertyItem.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaEnumPropertyItem.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport { ScalarWrappingText } from '@scalar/components/wrapping-text'\n\ndefineProps<{\n label: string\n description?: string\n}>()\n</script>\n\n<template>\n <li class=\"property-enum-value\">\n <div class=\"property-enum-value-content\">\n <span class=\"property-enum-value-label\">\n <ScalarWrappingText\n :text=\"label\"\n preset=\"property\" />\n </span>\n <span\n v-if=\"description\"\n class=\"property-enum-value-description\">\n <ScalarMarkdown :value=\"description\" />\n </span>\n </div>\n </li>\n</template>\n\n<style scoped>\n.property-enum-value {\n color: var(--scalar-color-3);\n line-height: 1.5;\n overflow-wrap: break-word;\n display: flex;\n align-items: stretch;\n position: relative;\n\n --decorator-width: 1px;\n --decorator-color: color-mix(\n in srgb,\n var(--scalar-background-1),\n var(--scalar-color-1) 25%\n );\n}\n\n.property-enum-value-content {\n display: flex;\n flex-direction: column;\n padding: 3px 0;\n}\n\n.property-enum-value-label {\n font-family: var(--scalar-font-code);\n color: var(--scalar-color-1);\n font-size: var(--scalar-font-size-4);\n position: relative;\n}\n\n.property-enum-value:last-of-type .property-enum-value-label {\n padding-bottom: 0;\n}\n\n.property-enum-value::before {\n content: '';\n margin-right: 12px;\n width: var(--decorator-width);\n display: block;\n background-color: var(--decorator-color);\n}\n\n.property-enum-value:last-of-type::before,\n.property-enum-values:has(.enum-toggle-button)\n .property-enum-value:nth-last-child(2)::before {\n height: calc(0.5lh + 4px);\n}\n\n.property-enum-value-label::after {\n content: '';\n position: absolute;\n top: calc(0.5lh);\n left: -12px;\n width: 8px;\n height: var(--decorator-width);\n background-color: var(--decorator-color);\n}\n\n.property-enum-value:last-of-type::after {\n bottom: 0;\n height: 50%;\n background: var(--scalar-background-1);\n border-top: var(--scalar-border-width) solid var(--decorator-color);\n}\n\n.property-enum-value-description {\n color: var(--scalar-color-3);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;uBAWE,mBAaK,MAbL,YAaK,CAZH,mBAWM,OAXN,YAWM,CAVJ,mBAIO,QAJP,YAIO,CAHL,YAEsB,MAAA,kBAAA,GAAA;IADnB,MAAM,QAAA;IACP,QAAO;4BAGH,QAAA,eAAA,UAAA,GADR,mBAIO,QAJP,YAIO,CADL,YAAuC,MAAA,cAAA,GAAA,EAAtB,OAAO,QAAA,YAAW,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaEnums.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Content/Schema/SchemaEnums.vue"],"names":[],"mappings":"AAqNA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAQhG,KAAK,WAAW,GAAG;IACjB,4DAA4D;IAC5D,KAAK,EAAE,YAAY,GAAG,SAAS,CAAA;IAC/B,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAC;AAyQF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"SchemaEnums.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Content/Schema/SchemaEnums.vue"],"names":[],"mappings":"AAqNA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAQhG,KAAK,WAAW,GAAG;IACjB,4DAA4D;IAC5D,KAAK,EAAE,YAAY,GAAG,SAAS,CAAA;IAC/B,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAC;AA0QF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import SchemaEnums_vue_vue_type_script_setup_true_lang_default from "./SchemaEnums.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/Content/Schema/SchemaEnums.vue
5
- var SchemaEnums_default = /* @__PURE__ */ _plugin_vue_export_helper_default(SchemaEnums_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-602e2e26"]]);
5
+ var SchemaEnums_default = /*#__PURE__*/ _plugin_vue_export_helper_default(SchemaEnums_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-602e2e26"]]);
6
6
  //#endregion
7
7
  export { SchemaEnums_default as default };
8
8
 
@@ -28,7 +28,7 @@ var THIN_SPACE = " ";
28
28
  * For arrays, the enum and its x-enum-* metadata live on the items schema, so
29
29
  * both the values and their varnames/descriptions have to be read from there.
30
30
  */
31
- var SchemaEnums_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
31
+ var SchemaEnums_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
32
32
  __name: "SchemaEnums",
33
33
  props: {
34
34
  value: {},
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaEnums.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaEnums.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarIconPlus } from '@scalar/icons'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\nimport { computed, ref } from 'vue'\n\nimport { useLocalization } from '@/features/localization'\n\nimport SchemaEnumPropertyItem from './SchemaEnumPropertyItem.vue'\n\nconst { value } = defineProps<{\n /** The schema object containing enum values and metadata */\n value: SchemaObject | undefined\n /** Whether to display the enum for property names */\n propertyNames?: boolean\n}>()\nconst { translate } = useLocalization()\n\nconst ENUM_DISPLAY_THRESHOLD = 9\nconst INITIAL_VISIBLE_COUNT = 5\nconst THIN_SPACE = '\\u2009'\n\n/**\n * Resolves the schema that carries the enum values.\n * For arrays, the enum and its x-enum-* metadata live on the items schema, so\n * both the values and their varnames/descriptions have to be read from there.\n */\nconst enumSchema = computed(() => {\n if (!value) {\n return undefined\n }\n if (value.enum) {\n return value\n }\n return isArraySchema(value) ? resolve.schema(value.items) : undefined\n})\n\n/**\n * Extracts enum values from the schema object.\n * Handles both direct enum values and nested enum arrays.\n */\nconst enumValues = computed(() => enumSchema.value?.enum ?? [])\n\n/**\n * Determines if we should show the long enum list UI.\n * When there are many enum values, we initially show only a subset.\n */\nconst shouldUseLongListDisplay = computed(\n () => enumValues.value.length > ENUM_DISPLAY_THRESHOLD,\n)\n\nconst initialVisibleCount = computed(() =>\n shouldUseLongListDisplay.value\n ? INITIAL_VISIBLE_COUNT\n : enumValues.value.length,\n)\n\nconst visibleEnumValues = computed(() =>\n enumValues.value.slice(0, initialVisibleCount.value),\n)\n\nconst hiddenEnumValues = computed(() =>\n enumValues.value.slice(initialVisibleCount.value),\n)\n\n/**\n * Gets the description for an enum value.\n * Supports both array and object formats for x-enumDescriptions.\n */\nconst getEnumValueDescription = (\n enumValue: any,\n index: number,\n): string | undefined => {\n const schema = enumSchema.value\n const descriptions =\n schema?.['x-enumDescriptions'] ?? schema?.['x-enum-descriptions']\n\n if (!descriptions) {\n return undefined\n }\n\n if (Array.isArray(descriptions)) {\n return descriptions[index]\n }\n\n if (typeof descriptions === 'object' && descriptions !== null) {\n return (descriptions as Record<string, string>)[String(enumValue)]\n }\n\n return undefined\n}\n\n/**\n * Formats an enum value with its variable name if available.\n * This supports both x-enum-varnames and x-enumNames extensions.\n */\nconst formatEnumValueWithName = (enumValue: any, index: number): string => {\n const varNames =\n enumSchema.value?.['x-enum-varnames'] ?? enumSchema.value?.['x-enumNames']\n const varName = Array.isArray(varNames) ? varNames[index] : undefined\n return varName\n ? `${enumValue}${THIN_SPACE}=${THIN_SPACE}${varName}`\n : String(enumValue)\n}\n\n/**\n * Controls whether the hidden enum values are visible.\n */\nconst isExpanded = ref(false)\n\nconst toggleExpanded = () => {\n isExpanded.value = !isExpanded.value\n}\n</script>\n\n<template>\n <div\n v-if=\"enumValues.length > 0\"\n class=\"property-enum\">\n <div\n v-if=\"propertyNames\"\n class=\"property-enum-property-names\">\n {{ translate('common.propertyNames') }}\n </div>\n <div\n v-else\n class=\"property-enum-property-names\">\n {{ translate('common.values') }}\n </div>\n <ul class=\"property-enum-values\">\n <!-- Visible enum values -->\n <SchemaEnumPropertyItem\n v-for=\"(enumValue, index) in visibleEnumValues\"\n :key=\"String(enumValue)\"\n :description=\"getEnumValueDescription(enumValue, index)\"\n :label=\"formatEnumValueWithName(enumValue, index)\" />\n\n <!-- Hidden enum values (when expanded) -->\n <template v-if=\"shouldUseLongListDisplay && isExpanded\">\n <SchemaEnumPropertyItem\n v-for=\"(enumValue, index) in hiddenEnumValues\"\n :key=\"String(enumValue)\"\n :description=\"\n getEnumValueDescription(enumValue, initialVisibleCount + index)\n \"\n :label=\"\n formatEnumValueWithName(enumValue, initialVisibleCount + index)\n \" />\n </template>\n\n <!-- Toggle button for long lists -->\n <li v-if=\"shouldUseLongListDisplay\">\n <ScalarButton\n class=\"enum-toggle-button my-2 flex h-fit gap-1 rounded-full border py-1.5 pr-2.5 pl-2 leading-none\"\n variant=\"ghost\"\n @click=\"toggleExpanded\">\n <ScalarIconPlus\n :class=\"{ 'rotate-45': isExpanded }\"\n weight=\"bold\" />\n {{\n isExpanded\n ? translate('common.hideValues')\n : translate('common.showAllValues')\n }}\n </ScalarButton>\n </li>\n </ul>\n </div>\n</template>\n\n<style scoped>\n.property-heading:empty + .property-description:last-of-type,\n.property-description:first-of-type:last-of-type {\n margin-top: 0;\n}\n\n.property-list {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius);\n margin-top: 10px;\n}\n\n.property-list .property:last-of-type {\n padding-bottom: 10px;\n}\n\n.property-enum-values {\n font-size: var(--scalar-font-size-3);\n list-style: none;\n margin-top: 8px;\n padding-left: 2px;\n}\n\n.enum-toggle-button:hover {\n color: var(--scalar-color-1);\n}\n\n.property-enum-property-names {\n font-size: var(--scalar-font-size-4);\n color: var(--scalar-color-2);\n display: inline-block;\n padding: 0 2px;\n margin-top: 8px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoBA,IAAM,yBAAyB;AAC/B,IAAM,wBAAwB;AAC9B,IAAM,aAAa;;;;;;;;;;;;;EAJnB,MAAM,EAAE,cAAc,iBAAgB;EAWtC,MAAM,aAAa,eAAe;AAChC,OAAI,CAAC,QAAA,MACH;AAEF,OAAI,QAAA,MAAM,KACR,QAAO,QAAA;AAET,UAAO,cAAc,QAAA,MAAM,GAAG,QAAQ,OAAO,QAAA,MAAM,MAAM,GAAG,KAAA;IAC7D;;;;;EAMD,MAAM,aAAa,eAAe,WAAW,OAAO,QAAQ,EAAE,CAAA;;;;;EAM9D,MAAM,2BAA2B,eACzB,WAAW,MAAM,SAAS,uBAClC;EAEA,MAAM,sBAAsB,eAC1B,yBAAyB,QACrB,wBACA,WAAW,MAAM,OACvB;EAEA,MAAM,oBAAoB,eACxB,WAAW,MAAM,MAAM,GAAG,oBAAoB,MAAM,CACtD;EAEA,MAAM,mBAAmB,eACvB,WAAW,MAAM,MAAM,oBAAoB,MAAM,CACnD;;;;;EAMA,MAAM,2BACJ,WACA,UACuB;GACvB,MAAM,SAAS,WAAW;GAC1B,MAAM,eACJ,SAAS,yBAAyB,SAAS;AAE7C,OAAI,CAAC,aACH;AAGF,OAAI,MAAM,QAAQ,aAAa,CAC7B,QAAO,aAAa;AAGtB,OAAI,OAAO,iBAAiB,YAAY,iBAAiB,KACvD,QAAQ,aAAwC,OAAO,UAAU;;;;;;EAUrE,MAAM,2BAA2B,WAAgB,UAA0B;GACzE,MAAM,WACJ,WAAW,QAAQ,sBAAsB,WAAW,QAAQ;GAC9D,MAAM,UAAU,MAAM,QAAQ,SAAS,GAAG,SAAS,SAAS,KAAA;AAC5D,UAAO,UACH,GAAG,YAAY,WAAW,GAAG,aAAa,YAC1C,OAAO,UAAS;;;;;EAMtB,MAAM,aAAa,IAAI,MAAK;EAE5B,MAAM,uBAAuB;AAC3B,cAAW,QAAQ,CAAC,WAAW;;;UAMvB,WAAA,MAAW,SAAM,KAAA,WAAA,EADzB,mBAmDM,OAnDN,YAmDM,CA/CI,QAAA,iBAAA,WAAA,EADR,mBAIM,OAJN,YAIM,gBADD,MAAA,UAAS,CAAA,uBAAA,CAAA,EAAA,EAAA,KAAA,WAAA,EAEd,mBAIM,OAJN,YAIM,gBADD,MAAA,UAAS,CAAA,gBAAA,CAAA,EAAA,EAAA,GAEd,mBAqCK,MArCL,YAqCK;sBAnCH,mBAIuD,UAAA,MAAA,WAHxB,kBAAA,QAArB,WAAW,UAAK;yBAD1B,YAIuD,gCAAA;MAFpD,KAAK,OAAO,UAAS;MACrB,aAAa,wBAAwB,WAAW,MAAK;MACrD,OAAO,wBAAwB,WAAW,MAAK;;;IAGlC,yBAAA,SAA4B,WAAA,SAAA,UAAA,KAAA,EAC1C,mBAQM,UAAA,EAAA,KAAA,GAAA,EAAA,WAPyB,iBAAA,QAArB,WAAW,UAAK;yBAD1B,YAQM,gCAAA;MANH,KAAK,OAAO,UAAS;MACrB,aAA0B,wBAAwB,WAAW,oBAAA,QAAsB,MAAK;MAGxF,OAAoB,wBAAwB,WAAW,oBAAA,QAAsB,MAAK;;;IAM7E,yBAAA,SAAA,WAAA,EAAV,mBAcK,MAAA,YAAA,CAbH,YAYe,MAAA,aAAA,EAAA;KAXb,OAAM;KACN,SAAQ;KACP,SAAO;;4BAGU,CAFlB,YAEkB,MAAA,eAAA,EAAA;MADf,OAAK,eAAA,EAAA,aAAiB,WAAA,OAAU,CAAA;MACjC,QAAO;6CAAS,MAClB,gBACE,WAAA,QAA2B,MAAA,UAAS,CAAA,oBAAA,GAAsC,MAAA,UAAS,CAAA,uBAAA,CAAA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SchemaEnums.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaEnums.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarIconPlus } from '@scalar/icons'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\nimport { computed, ref } from 'vue'\n\nimport { useLocalization } from '@/features/localization'\n\nimport SchemaEnumPropertyItem from './SchemaEnumPropertyItem.vue'\n\nconst { value } = defineProps<{\n /** The schema object containing enum values and metadata */\n value: SchemaObject | undefined\n /** Whether to display the enum for property names */\n propertyNames?: boolean\n}>()\nconst { translate } = useLocalization()\n\nconst ENUM_DISPLAY_THRESHOLD = 9\nconst INITIAL_VISIBLE_COUNT = 5\nconst THIN_SPACE = '\\u2009'\n\n/**\n * Resolves the schema that carries the enum values.\n * For arrays, the enum and its x-enum-* metadata live on the items schema, so\n * both the values and their varnames/descriptions have to be read from there.\n */\nconst enumSchema = computed(() => {\n if (!value) {\n return undefined\n }\n if (value.enum) {\n return value\n }\n return isArraySchema(value) ? resolve.schema(value.items) : undefined\n})\n\n/**\n * Extracts enum values from the schema object.\n * Handles both direct enum values and nested enum arrays.\n */\nconst enumValues = computed(() => enumSchema.value?.enum ?? [])\n\n/**\n * Determines if we should show the long enum list UI.\n * When there are many enum values, we initially show only a subset.\n */\nconst shouldUseLongListDisplay = computed(\n () => enumValues.value.length > ENUM_DISPLAY_THRESHOLD,\n)\n\nconst initialVisibleCount = computed(() =>\n shouldUseLongListDisplay.value\n ? INITIAL_VISIBLE_COUNT\n : enumValues.value.length,\n)\n\nconst visibleEnumValues = computed(() =>\n enumValues.value.slice(0, initialVisibleCount.value),\n)\n\nconst hiddenEnumValues = computed(() =>\n enumValues.value.slice(initialVisibleCount.value),\n)\n\n/**\n * Gets the description for an enum value.\n * Supports both array and object formats for x-enumDescriptions.\n */\nconst getEnumValueDescription = (\n enumValue: any,\n index: number,\n): string | undefined => {\n const schema = enumSchema.value\n const descriptions =\n schema?.['x-enumDescriptions'] ?? schema?.['x-enum-descriptions']\n\n if (!descriptions) {\n return undefined\n }\n\n if (Array.isArray(descriptions)) {\n return descriptions[index]\n }\n\n if (typeof descriptions === 'object' && descriptions !== null) {\n return (descriptions as Record<string, string>)[String(enumValue)]\n }\n\n return undefined\n}\n\n/**\n * Formats an enum value with its variable name if available.\n * This supports both x-enum-varnames and x-enumNames extensions.\n */\nconst formatEnumValueWithName = (enumValue: any, index: number): string => {\n const varNames =\n enumSchema.value?.['x-enum-varnames'] ?? enumSchema.value?.['x-enumNames']\n const varName = Array.isArray(varNames) ? varNames[index] : undefined\n return varName\n ? `${enumValue}${THIN_SPACE}=${THIN_SPACE}${varName}`\n : String(enumValue)\n}\n\n/**\n * Controls whether the hidden enum values are visible.\n */\nconst isExpanded = ref(false)\n\nconst toggleExpanded = () => {\n isExpanded.value = !isExpanded.value\n}\n</script>\n\n<template>\n <div\n v-if=\"enumValues.length > 0\"\n class=\"property-enum\">\n <div\n v-if=\"propertyNames\"\n class=\"property-enum-property-names\">\n {{ translate('common.propertyNames') }}\n </div>\n <div\n v-else\n class=\"property-enum-property-names\">\n {{ translate('common.values') }}\n </div>\n <ul class=\"property-enum-values\">\n <!-- Visible enum values -->\n <SchemaEnumPropertyItem\n v-for=\"(enumValue, index) in visibleEnumValues\"\n :key=\"String(enumValue)\"\n :description=\"getEnumValueDescription(enumValue, index)\"\n :label=\"formatEnumValueWithName(enumValue, index)\" />\n\n <!-- Hidden enum values (when expanded) -->\n <template v-if=\"shouldUseLongListDisplay && isExpanded\">\n <SchemaEnumPropertyItem\n v-for=\"(enumValue, index) in hiddenEnumValues\"\n :key=\"String(enumValue)\"\n :description=\"\n getEnumValueDescription(enumValue, initialVisibleCount + index)\n \"\n :label=\"\n formatEnumValueWithName(enumValue, initialVisibleCount + index)\n \" />\n </template>\n\n <!-- Toggle button for long lists -->\n <li v-if=\"shouldUseLongListDisplay\">\n <ScalarButton\n class=\"enum-toggle-button my-2 flex h-fit gap-1 rounded-full border py-1.5 pr-2.5 pl-2 leading-none\"\n variant=\"ghost\"\n @click=\"toggleExpanded\">\n <ScalarIconPlus\n :class=\"{ 'rotate-45': isExpanded }\"\n weight=\"bold\" />\n {{\n isExpanded\n ? translate('common.hideValues')\n : translate('common.showAllValues')\n }}\n </ScalarButton>\n </li>\n </ul>\n </div>\n</template>\n\n<style scoped>\n.property-heading:empty + .property-description:last-of-type,\n.property-description:first-of-type:last-of-type {\n margin-top: 0;\n}\n\n.property-list {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius);\n margin-top: 10px;\n}\n\n.property-list .property:last-of-type {\n padding-bottom: 10px;\n}\n\n.property-enum-values {\n font-size: var(--scalar-font-size-3);\n list-style: none;\n margin-top: 8px;\n padding-left: 2px;\n}\n\n.enum-toggle-button:hover {\n color: var(--scalar-color-1);\n}\n\n.property-enum-property-names {\n font-size: var(--scalar-font-size-4);\n color: var(--scalar-color-2);\n display: inline-block;\n padding: 0 2px;\n margin-top: 8px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoBA,IAAM,yBAAyB;AAC/B,IAAM,wBAAwB;AAC9B,IAAM,aAAa;;;;;;;;;;;;;EAJnB,MAAM,EAAE,cAAc,gBAAgB;EAWtC,MAAM,aAAa,eAAe;GAChC,IAAI,CAAC,QAAA,OACH;GAEF,IAAI,QAAA,MAAM,MACR,OAAO,QAAA;GAET,OAAO,cAAc,QAAA,KAAK,IAAI,QAAQ,OAAO,QAAA,MAAM,KAAK,IAAI,KAAA;EAC9D,CAAC;;;;;EAMD,MAAM,aAAa,eAAe,WAAW,OAAO,QAAQ,CAAC,CAAC;;;;;EAM9D,MAAM,2BAA2B,eACzB,WAAW,MAAM,SAAS,sBAClC;EAEA,MAAM,sBAAsB,eAC1B,yBAAyB,QACrB,wBACA,WAAW,MAAM,MACvB;EAEA,MAAM,oBAAoB,eACxB,WAAW,MAAM,MAAM,GAAG,oBAAoB,KAAK,CACrD;EAEA,MAAM,mBAAmB,eACvB,WAAW,MAAM,MAAM,oBAAoB,KAAK,CAClD;;;;;EAMA,MAAM,2BACJ,WACA,UACuB;GACvB,MAAM,SAAS,WAAW;GAC1B,MAAM,eACJ,SAAS,yBAAyB,SAAS;GAE7C,IAAI,CAAC,cACH;GAGF,IAAI,MAAM,QAAQ,YAAY,GAC5B,OAAO,aAAa;GAGtB,IAAI,OAAO,iBAAiB,YAAY,iBAAiB,MACvD,OAAQ,aAAwC,OAAO,SAAS;EAIpE;;;;;EAMA,MAAM,2BAA2B,WAAgB,UAA0B;GACzE,MAAM,WACJ,WAAW,QAAQ,sBAAsB,WAAW,QAAQ;GAC9D,MAAM,UAAU,MAAM,QAAQ,QAAQ,IAAI,SAAS,SAAS,KAAA;GAC5D,OAAO,UACH,GAAG,YAAY,WAAW,GAAG,aAAa,YAC1C,OAAO,SAAS;EACtB;;;;EAKA,MAAM,aAAa,IAAI,KAAK;EAE5B,MAAM,uBAAuB;GAC3B,WAAW,QAAQ,CAAC,WAAW;EACjC;;UAKU,WAAA,MAAW,SAAM,KAAA,UAAA,GADzB,mBAmDM,OAnDN,YAmDM,CA/CI,QAAA,iBAAA,UAAA,GADR,mBAIM,OAJN,YAIM,gBADD,MAAA,SAAA,CAAS,CAAA,sBAAA,CAAA,GAAA,CAAA,MAAA,UAAA,GAEd,mBAIM,OAJN,YAIM,gBADD,MAAA,SAAA,CAAS,CAAA,eAAA,CAAA,GAAA,CAAA,IAEd,mBAqCK,MArCL,YAqCK;sBAnCH,mBAIuD,UAAA,MAAA,WAHxB,kBAAA,QAArB,WAAW,UAAK;yBAD1B,YAIuD,gCAAA;MAFpD,KAAK,OAAO,SAAS;MACrB,aAAa,wBAAwB,WAAW,KAAK;MACrD,OAAO,wBAAwB,WAAW,KAAK;;;IAGlC,yBAAA,SAA4B,WAAA,SAAA,UAAA,IAAA,GAC1C,mBAQM,UAAA,EAAA,KAAA,EAAA,GAAA,WAPyB,iBAAA,QAArB,WAAW,UAAK;yBAD1B,YAQM,gCAAA;MANH,KAAK,OAAO,SAAS;MACrB,aAA0B,wBAAwB,WAAW,oBAAA,QAAsB,KAAK;MAGxF,OAAoB,wBAAwB,WAAW,oBAAA,QAAsB,KAAK;;;IAM7E,yBAAA,SAAA,UAAA,GAAV,mBAcK,MAAA,YAAA,CAbH,YAYe,MAAA,YAAA,GAAA;KAXb,OAAM;KACN,SAAQ;KACP,SAAO;;4BAGU,CAFlB,YAEkB,MAAA,cAAA,GAAA;MADf,OAAK,eAAA,EAAA,aAAiB,WAAA,MAAU,CAAA;MACjC,QAAO;6CAAS,MAClB,gBACE,WAAA,QAA2B,MAAA,SAAA,CAAS,CAAA,mBAAA,IAAsC,MAAA,SAAA,CAAS,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import SchemaHeading_vue_vue_type_script_setup_true_lang_default from "./SchemaHeading.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/Content/Schema/SchemaHeading.vue
5
- var SchemaHeading_default = /* @__PURE__ */ _plugin_vue_export_helper_default(SchemaHeading_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e2018ca6"]]);
5
+ var SchemaHeading_default = /*#__PURE__*/ _plugin_vue_export_helper_default(SchemaHeading_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e2018ca6"]]);
6
6
  //#endregion
7
7
  export { SchemaHeading_default as default };
8
8
 
@@ -9,7 +9,7 @@ var _hoisted_1 = {
9
9
  class: "schema-type"
10
10
  };
11
11
  var _hoisted_2 = ["title"];
12
- var SchemaHeading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var SchemaHeading_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  __name: "SchemaHeading",
14
14
  props: {
15
15
  value: {},
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaHeading.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaHeading.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ScalarWrappingText } from '@scalar/components/wrapping-text'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\nimport { computed } from 'vue'\n\nimport { isTypeObject } from '@/components/Content/Schema/helpers/is-type-object'\nimport { useLocalization } from '@/features/localization'\n\nconst { value } = defineProps<{\n value: SchemaObject\n name?: string\n}>()\nconst { translate } = useLocalization()\n\n/** Generate a failsafe type from the properties when we don't have one */\nconst failsafeType = computed(() => {\n if ('type' in value) {\n return value.type\n }\n\n if (value.enum) {\n return 'enum'\n }\n\n if (isArraySchema(value) && value.items) {\n return 'array'\n }\n\n if (isTypeObject(value) && (value.properties || value.additionalProperties)) {\n return 'object'\n }\n\n return 'unknown'\n})\n</script>\n\n<template>\n <span\n v-if=\"typeof value === 'object'\"\n class=\"schema-type\">\n <span\n class=\"schema-type-icon\"\n :title=\"\n 'type' in value && typeof value.type === 'string'\n ? value.type\n : 'type' in value && Array.isArray(value.type)\n ? value.type.join(' | ')\n : translate('schema.unknownType')\n \">\n <template v-if=\"isTypeObject(value)\"> {} </template>\n <template v-if=\"isArraySchema(value)\"> [] </template>\n <template v-if=\"value.enum\"> enum </template>\n </span>\n <template v-if=\"name\">\n <ScalarWrappingText\n preset=\"property\"\n :text=\"name\" />\n </template>\n <template v-else>\n {{ failsafeType }}\n </template>\n </span>\n</template>\n<style scoped>\n/* Style the \"icon\" */\n.schema-type-icon {\n color: var(--scalar-color-1);\n display: none;\n}\n.schema-type {\n font-family: var(--scalar-font-code);\n color: var(--scalar-color-1);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAaA,MAAM,EAAE,cAAc,iBAAgB;;EAGtC,MAAM,eAAe,eAAe;AAClC,OAAI,UAAU,QAAA,MACZ,QAAO,QAAA,MAAM;AAGf,OAAI,QAAA,MAAM,KACR,QAAO;AAGT,OAAI,cAAc,QAAA,MAAM,IAAI,QAAA,MAAM,MAChC,QAAO;AAGT,OAAI,aAAa,QAAA,MAAM,KAAK,QAAA,MAAM,cAAc,QAAA,MAAM,sBACpD,QAAO;AAGT,UAAO;IACR;;iBAKgB,QAAA,UAAK,YAAA,WAAA,EADpB,mBAwBO,QAxBP,YAwBO,CArBL,mBAYO,QAAA;IAXL,OAAM;IACL,OAAA,UAA0B,QAAA,SAAK,OAAW,QAAA,MAAM,SAAI,WAA0B,QAAA,MAAM,OAAA,UAA2B,QAAA,SAAS,MAAM,QAAQ,QAAA,MAAM,KAAI,GAAgB,QAAA,MAAM,KAAK,KAAI,MAAA,GAAsB,MAAA,UAAS,CAAA,qBAAA;;IAO/L,MAAA,aAAY,CAAC,QAAA,MAAK,IAAA,WAAA,EAAlC,mBAAoD,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAf,OAAI,CAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,KAAA;IACzB,MAAA,cAAa,CAAC,QAAA,MAAK,IAAA,WAAA,EAAnC,mBAAqD,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAf,OAAI,CAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,KAAA;IAC1B,QAAA,MAAM,QAAA,WAAA,EAAtB,mBAA6C,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAjB,SAAM,CAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,KAAA;sBAEpB,QAAA,QAAA,WAAA,EACd,YAEiB,MAAA,mBAAA,EAAA;;IADf,QAAO;IACN,MAAM,QAAA;0CAEX,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,aAAA,MAAY,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,IAAA,mBAAA,IAAA,KAAA"}
1
+ {"version":3,"file":"SchemaHeading.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaHeading.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ScalarWrappingText } from '@scalar/components/wrapping-text'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\nimport { computed } from 'vue'\n\nimport { isTypeObject } from '@/components/Content/Schema/helpers/is-type-object'\nimport { useLocalization } from '@/features/localization'\n\nconst { value } = defineProps<{\n value: SchemaObject\n name?: string\n}>()\nconst { translate } = useLocalization()\n\n/** Generate a failsafe type from the properties when we don't have one */\nconst failsafeType = computed(() => {\n if ('type' in value) {\n return value.type\n }\n\n if (value.enum) {\n return 'enum'\n }\n\n if (isArraySchema(value) && value.items) {\n return 'array'\n }\n\n if (isTypeObject(value) && (value.properties || value.additionalProperties)) {\n return 'object'\n }\n\n return 'unknown'\n})\n</script>\n\n<template>\n <span\n v-if=\"typeof value === 'object'\"\n class=\"schema-type\">\n <span\n class=\"schema-type-icon\"\n :title=\"\n 'type' in value && typeof value.type === 'string'\n ? value.type\n : 'type' in value && Array.isArray(value.type)\n ? value.type.join(' | ')\n : translate('schema.unknownType')\n \">\n <template v-if=\"isTypeObject(value)\"> {} </template>\n <template v-if=\"isArraySchema(value)\"> [] </template>\n <template v-if=\"value.enum\"> enum </template>\n </span>\n <template v-if=\"name\">\n <ScalarWrappingText\n preset=\"property\"\n :text=\"name\" />\n </template>\n <template v-else>\n {{ failsafeType }}\n </template>\n </span>\n</template>\n<style scoped>\n/* Style the \"icon\" */\n.schema-type-icon {\n color: var(--scalar-color-1);\n display: none;\n}\n.schema-type {\n font-family: var(--scalar-font-code);\n color: var(--scalar-color-1);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAaA,MAAM,EAAE,cAAc,gBAAgB;;EAGtC,MAAM,eAAe,eAAe;GAClC,IAAI,UAAU,QAAA,OACZ,OAAO,QAAA,MAAM;GAGf,IAAI,QAAA,MAAM,MACR,OAAO;GAGT,IAAI,cAAc,QAAA,KAAK,KAAK,QAAA,MAAM,OAChC,OAAO;GAGT,IAAI,aAAa,QAAA,KAAK,MAAM,QAAA,MAAM,cAAc,QAAA,MAAM,uBACpD,OAAO;GAGT,OAAO;EACT,CAAC;;iBAKgB,QAAA,UAAK,YAAA,UAAA,GADpB,mBAwBO,QAxBP,YAwBO,CArBL,mBAYO,QAAA;IAXL,OAAM;IACL,OAAA,UAA0B,QAAA,SAAK,OAAW,QAAA,MAAM,SAAI,WAA0B,QAAA,MAAM,OAAA,UAA2B,QAAA,SAAS,MAAM,QAAQ,QAAA,MAAM,IAAI,IAAgB,QAAA,MAAM,KAAK,KAAI,KAAA,IAAsB,MAAA,SAAA,CAAS,CAAA,oBAAA;;IAO/L,MAAA,YAAA,CAAY,CAAC,QAAA,KAAK,KAAA,UAAA,GAAlC,mBAAoD,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAf,MAAI,CAAA,GAAA,EAAA,KAAA,mBAAA,IAAA,IAAA;IACzB,MAAA,aAAA,CAAa,CAAC,QAAA,KAAK,KAAA,UAAA,GAAnC,mBAAqD,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAf,MAAI,CAAA,GAAA,EAAA,KAAA,mBAAA,IAAA,IAAA;IAC1B,QAAA,MAAM,QAAA,UAAA,GAAtB,mBAA6C,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAjB,QAAM,CAAA,GAAA,EAAA,KAAA,mBAAA,IAAA,IAAA;sBAEpB,QAAA,QAAA,UAAA,GACd,YAEiB,MAAA,kBAAA,GAAA;;IADf,QAAO;IACN,MAAM,QAAA;0CAEX,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,aAAA,KAAY,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
@@ -4,7 +4,7 @@ import { ScalarCard, ScalarCardFooter, ScalarCardSection } from "@scalar/compone
4
4
  import { ScalarCodeBlock } from "@scalar/components/code-block";
5
5
  //#region src/components/Content/Schema/SchemaObjectExampleCodeBlock.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = { class: "code-snippet" };
7
- var SchemaObjectExampleCodeBlock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ var SchemaObjectExampleCodeBlock_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  __name: "SchemaObjectExampleCodeBlock",
9
9
  props: { schema: {} },
10
10
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaObjectExampleCodeBlock.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaObjectExampleCodeBlock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ExamplePicker } from '@scalar/blocks/code-example'\nimport {\n ScalarCard,\n ScalarCardFooter,\n ScalarCardSection,\n} from '@scalar/components/card'\nimport { ScalarCodeBlock } from '@scalar/components/code-block'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, ref } from 'vue'\n\nconst { schema } = defineProps<{ schema: SchemaObject }>()\n\n/** Grab the examples for the schema object */\nconst examples = computed<Record<string, string>>(() => {\n const base: Record<string, string> = {}\n\n // x-examples extension\n if (schema['x-examples']) {\n Object.entries(schema['x-examples']).forEach(([key, value]) => {\n base[key] =\n typeof value === 'object'\n ? JSON.stringify(value, null, 2)\n : String(value)\n })\n }\n\n // Regular schema examples array\n if (schema.examples) {\n schema.examples.forEach((value, index) => {\n base[`Example ${index + 1}`] =\n typeof value === 'object'\n ? JSON.stringify(value, null, 2)\n : String(value)\n })\n }\n\n return base\n})\n\n/** The currently selected example key */\nconst selectedExampleKey = ref<string>(Object.keys(examples.value)[0] ?? '')\n</script>\n<template>\n <ScalarCard\n v-if=\"Object.keys(examples).length > 0\"\n class=\"dark-mode\">\n <!-- Code snippet -->\n <ScalarCardSection>\n <div class=\"code-snippet\">\n <ScalarCodeBlock\n class=\"bg-b-2\"\n lang=\"json\"\n lineNumbers\n :prettyPrintedContent=\"\n examples[selectedExampleKey] ??\n 'There was an error loading the example'\n \" />\n </div>\n </ScalarCardSection>\n\n <!-- Example picker -->\n <ScalarCardFooter\n v-if=\"Object.keys(examples).length > 1\"\n class=\"bg-b-3\">\n <ExamplePicker\n v-model=\"selectedExampleKey\"\n :examples />\n </ScalarCardFooter>\n </ScalarCard>\n</template>\n"],"mappings":";;;;;;;;;;;EAcA,MAAM,WAAW,eAAuC;GACtD,MAAM,OAA+B,EAAC;AAGtC,OAAI,QAAA,OAAO,cACT,QAAO,QAAQ,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,WAAW;AAC7D,SAAK,OACH,OAAO,UAAU,WACb,KAAK,UAAU,OAAO,MAAM,EAAC,GAC7B,OAAO,MAAK;KACnB;AAIH,OAAI,QAAA,OAAO,SACT,SAAA,OAAO,SAAS,SAAS,OAAO,UAAU;AACxC,SAAK,WAAW,QAAQ,OACtB,OAAO,UAAU,WACb,KAAK,UAAU,OAAO,MAAM,EAAC,GAC7B,OAAO,MAAK;KACnB;AAGH,UAAO;IACR;;EAGD,MAAM,qBAAqB,IAAY,OAAO,KAAK,SAAS,MAAM,CAAC,MAAM,GAAE;;UAIjE,OAAO,KAAK,SAAA,MAAQ,CAAE,SAAM,KAAA,WAAA,EADpC,YAyBa,MAAA,WAAA,EAAA;;IAvBX,OAAM;;2BAac,CAXpB,YAWoB,MAAA,kBAAA,EAAA,MAAA;4BADZ,CATN,mBASM,OATN,YASM,CARJ,YAOM,MAAA,gBAAA,EAAA;MANJ,OAAM;MACN,MAAK;MACL,aAAA;MACC,sBAAmC,SAAA,MAAS,mBAAA,UAAA;;;QAS3C,OAAO,KAAK,SAAA,MAAQ,CAAE,SAAM,KAAA,WAAA,EADpC,YAMmB,MAAA,iBAAA,EAAA;;KAJjB,OAAM;;4BAGQ,CAFd,YAEc,MAAA,cAAA,EAAA;kBADH,mBAAA;sFAAkB,QAAA;MAC1B,UAAA,SAAA"}
1
+ {"version":3,"file":"SchemaObjectExampleCodeBlock.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaObjectExampleCodeBlock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ExamplePicker } from '@scalar/blocks/code-example'\nimport {\n ScalarCard,\n ScalarCardFooter,\n ScalarCardSection,\n} from '@scalar/components/card'\nimport { ScalarCodeBlock } from '@scalar/components/code-block'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed, ref } from 'vue'\n\nconst { schema } = defineProps<{ schema: SchemaObject }>()\n\n/** Grab the examples for the schema object */\nconst examples = computed<Record<string, string>>(() => {\n const base: Record<string, string> = {}\n\n // x-examples extension\n if (schema['x-examples']) {\n Object.entries(schema['x-examples']).forEach(([key, value]) => {\n base[key] =\n typeof value === 'object'\n ? JSON.stringify(value, null, 2)\n : String(value)\n })\n }\n\n // Regular schema examples array\n if (schema.examples) {\n schema.examples.forEach((value, index) => {\n base[`Example ${index + 1}`] =\n typeof value === 'object'\n ? JSON.stringify(value, null, 2)\n : String(value)\n })\n }\n\n return base\n})\n\n/** The currently selected example key */\nconst selectedExampleKey = ref<string>(Object.keys(examples.value)[0] ?? '')\n</script>\n<template>\n <ScalarCard\n v-if=\"Object.keys(examples).length > 0\"\n class=\"dark-mode\">\n <!-- Code snippet -->\n <ScalarCardSection>\n <div class=\"code-snippet\">\n <ScalarCodeBlock\n class=\"bg-b-2\"\n lang=\"json\"\n lineNumbers\n :prettyPrintedContent=\"\n examples[selectedExampleKey] ??\n 'There was an error loading the example'\n \" />\n </div>\n </ScalarCardSection>\n\n <!-- Example picker -->\n <ScalarCardFooter\n v-if=\"Object.keys(examples).length > 1\"\n class=\"bg-b-3\">\n <ExamplePicker\n v-model=\"selectedExampleKey\"\n :examples />\n </ScalarCardFooter>\n </ScalarCard>\n</template>\n"],"mappings":";;;;;;;;;;;EAcA,MAAM,WAAW,eAAuC;GACtD,MAAM,OAA+B,CAAC;GAGtC,IAAI,QAAA,OAAO,eACT,OAAO,QAAQ,QAAA,OAAO,aAAa,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;IAC7D,KAAK,OACH,OAAO,UAAU,WACb,KAAK,UAAU,OAAO,MAAM,CAAC,IAC7B,OAAO,KAAK;GACpB,CAAC;GAIH,IAAI,QAAA,OAAO,UACT,QAAA,OAAO,SAAS,SAAS,OAAO,UAAU;IACxC,KAAK,WAAW,QAAQ,OACtB,OAAO,UAAU,WACb,KAAK,UAAU,OAAO,MAAM,CAAC,IAC7B,OAAO,KAAK;GACpB,CAAC;GAGH,OAAO;EACT,CAAC;;EAGD,MAAM,qBAAqB,IAAY,OAAO,KAAK,SAAS,KAAK,CAAC,CAAC,MAAM,EAAE;;UAIjE,OAAO,KAAK,SAAA,KAAQ,CAAA,CAAE,SAAM,KAAA,UAAA,GADpC,YAyBa,MAAA,UAAA,GAAA;;IAvBX,OAAM;;2BAac,CAXpB,YAWoB,MAAA,iBAAA,GAAA,MAAA;4BADZ,CATN,mBASM,OATN,YASM,CARJ,YAOM,MAAA,eAAA,GAAA;MANJ,OAAM;MACN,MAAK;MACL,aAAA;MACC,sBAAmC,SAAA,MAAS,mBAAA,UAAA;;;QAS3C,OAAO,KAAK,SAAA,KAAQ,CAAA,CAAE,SAAM,KAAA,UAAA,GADpC,YAMmB,MAAA,gBAAA,GAAA;;KAJjB,OAAM;;4BAGQ,CAFd,YAEc,MAAA,aAAA,GAAA;kBADH,mBAAA;sFAAkB,QAAA;MAC1B,UAAA,SAAA"}
@@ -5,7 +5,7 @@ import SchemaProperty_default from "./SchemaProperty.vue.js";
5
5
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, defineComponent, openBlock, renderList, unref } from "vue";
6
6
  import { resolve } from "@scalar/workspace-store/resolve";
7
7
  //#region src/components/Content/Schema/SchemaObjectProperties.vue?vue&type=script&setup=true&lang.ts
8
- var SchemaObjectProperties_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var SchemaObjectProperties_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
9
  __name: "SchemaObjectProperties",
10
10
  props: {
11
11
  schema: {},
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaObjectProperties.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaObjectProperties.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type {\n DiscriminatorObject,\n SchemaObject,\n SchemaReferenceType,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed } from 'vue'\n\nimport { isTypeObject } from '@/components/Content/Schema/helpers/is-type-object'\nimport { getCycleKey } from '@/components/Content/Schema/helpers/schema-cycle'\nimport { sortPropertyNames } from '@/components/Content/Schema/helpers/sort-property-names'\nimport type { SchemaOptions } from '@/components/Content/Schema/types'\n\nimport SchemaProperty from './SchemaProperty.vue'\n\nconst { schema, discriminator, options, schemaContext, compositionPath } =\n defineProps<{\n schema: SchemaObject\n discriminator?: DiscriminatorObject\n compact?: boolean\n hideHeading?: boolean\n level?: number\n hideModelNames?: boolean\n breadcrumb?: string[]\n eventBus: WorkspaceEventBus | null\n options: SchemaOptions\n schemaContext?: string\n compositionPath?: string[]\n }>()\n\n/**\n * Sorts properties by required status first, then alphabetically.\n * Required properties appear first, followed by optional properties.\n */\nconst sortedProperties = computed(() =>\n sortPropertyNames(schema, discriminator, options),\n)\n\n/**\n * Get the display name for additional properties.\n *\n * Checks x-additionalPropertiesName extension first, then falls back to the\n * propertyNames schema title if available.\n */\nconst getAdditionalPropertiesName = (\n _additionalProperties: Extract<\n SchemaObject,\n { type: 'object' }\n >['additionalProperties'],\n _propertyNames?: Extract<SchemaObject, { type: 'object' }>['propertyNames'],\n) => {\n const additionalProperties =\n typeof _additionalProperties === 'boolean'\n ? _additionalProperties\n : resolve.schema(_additionalProperties)\n\n if (\n typeof additionalProperties === 'object' &&\n typeof additionalProperties['x-additionalPropertiesName'] === 'string' &&\n additionalProperties['x-additionalPropertiesName'].trim().length > 0\n ) {\n return `${additionalProperties['x-additionalPropertiesName'].trim()}`\n }\n\n // Fall back to the propertyNames title when available\n if (_propertyNames) {\n const resolved = resolve.schema(_propertyNames)\n if (resolved?.title) {\n return resolved.title\n }\n }\n\n return 'propertyName'\n}\n\n/**\n * Extract enum values from the propertyNames schema.\n *\n * JSON Schema's propertyNames keyword constrains which keys are valid\n * in an object with additionalProperties. When it contains an enum,\n * these are the allowed key names.\n */\nconst getPropertyNamesEnum = (\n _propertyNames?: Extract<SchemaObject, { type: 'object' }>['propertyNames'],\n): string[] | undefined => {\n if (!_propertyNames) {\n return undefined\n }\n\n const resolved = resolve.schema(_propertyNames)\n if (\n resolved &&\n 'enum' in resolved &&\n Array.isArray(resolved.enum) &&\n resolved.enum.length > 0\n ) {\n return resolved.enum as string[]\n }\n\n return undefined\n}\n\n/** Enum values for the property keys, derived from propertyNames if present. */\nconst additionalPropertiesEnum = computed(() => {\n if (!isTypeObject(schema) || !schema.additionalProperties) {\n return undefined\n }\n return getPropertyNamesEnum(schema.propertyNames)\n})\n\n/**\n * The resolved propertyNames schema for the property keys.\n *\n * Surfaces key constraints such as `format` (for example `uuid`) so they are\n * not lost when rendering a map of additional properties.\n */\nconst additionalPropertiesKeySchema = computed(() => {\n if (!isTypeObject(schema) || !schema.additionalProperties) {\n return undefined\n }\n return schema.propertyNames ? resolve.schema(schema.propertyNames) : undefined\n})\n\n/**\n * Keep sibling property descriptions separate from the referenced schema.\n *\n * This allows us to render both:\n * - the property-specific description written next to the $ref, and\n * - the referenced schema's own description (for example discriminator parent docs)\n */\nconst getPropertySchema = (\n property: SchemaReferenceType<SchemaObject> | undefined,\n): SchemaObject | undefined => {\n if (!property) {\n return undefined\n }\n return resolve.schema(property)\n}\n\nconst getPropertyDescription = (\n property: SchemaReferenceType<SchemaObject> | undefined,\n): string | undefined => {\n if (!property) {\n return undefined\n }\n\n return typeof property.description === 'string'\n ? property.description\n : undefined\n}\n\n/**\n * Get the value for additional properties.\n *\n * When additionalProperties is true or an empty object, it should render as { type: 'anything' }.\n * $ref values are resolved before the type check so the referenced schema is rendered correctly.\n */\nconst getAdditionalPropertiesValue = (\n additionalProperties: Extract<\n SchemaObject,\n { type: 'object' }\n >['additionalProperties'],\n): SchemaObject => {\n // Resolve $ref first so the type check below works on the actual schema\n const resolved =\n typeof additionalProperties === 'boolean'\n ? additionalProperties\n : resolve.schema(additionalProperties)\n\n if (\n resolved === true ||\n (typeof resolved === 'object' && Object.keys(resolved).length === 0) ||\n typeof resolved !== 'object' ||\n !('type' in resolved)\n ) {\n return {\n // @ts-expect-error - ask hans\n type: 'anything',\n ...(typeof resolved === 'object' ? resolved : {}),\n }\n }\n\n return resolved\n}\n</script>\n\n<template>\n <!-- Properties -->\n <template v-if=\"isTypeObject(schema) && schema.properties\">\n <SchemaProperty\n v-for=\"property in sortedProperties\"\n :key=\"property\"\n :breadcrumb\n :compact\n :compositionPath=\"compositionPath\"\n :compositionPathSegment=\"property\"\n :cycleKey=\"getCycleKey(schema.properties[property])\"\n :description=\"getPropertyDescription(schema.properties[property])\"\n :discriminator\n :eventBus=\"eventBus\"\n :hideHeading\n :hideModelNames\n :level\n :name=\"property\"\n :options=\"options\"\n :required=\"schema.required?.includes(property)\"\n :schema=\"getPropertySchema(schema.properties[property])\"\n :schemaContext=\"schemaContext\" />\n </template>\n\n <!-- patternProperties -->\n <template v-if=\"isTypeObject(schema) && schema.patternProperties\">\n <SchemaProperty\n v-for=\"[key, property] in Object.entries(schema.patternProperties)\"\n :key=\"key\"\n :breadcrumb\n :compact\n :compositionPath=\"compositionPath\"\n :compositionPathSegment=\"key\"\n :cycleKey=\"getCycleKey(property)\"\n :description=\"getPropertyDescription(property)\"\n :discriminator\n :eventBus=\"eventBus\"\n :hideHeading\n :hideModelNames=\"hideModelNames\"\n :level\n :name=\"key\"\n :options=\"options\"\n :schema=\"getPropertySchema(property)\"\n :schemaContext=\"schemaContext\" />\n </template>\n\n <!-- additionalProperties -->\n <template v-if=\"isTypeObject(schema) && schema.additionalProperties\">\n <SchemaProperty\n :breadcrumb\n :compact\n :compositionPath=\"compositionPath\"\n :compositionPathSegment=\"\n getAdditionalPropertiesName(\n schema.additionalProperties,\n schema.propertyNames,\n )\n \"\n :cycleKey=\"getCycleKey(schema.additionalProperties)\"\n :discriminator\n :eventBus=\"eventBus\"\n :hideHeading\n :hideModelNames\n :level\n :name=\"\n getAdditionalPropertiesName(\n schema.additionalProperties,\n schema.propertyNames,\n )\n \"\n noncollapsible\n :options=\"options\"\n :propertyNamesEnum=\"additionalPropertiesEnum\"\n :propertyNamesSchema=\"additionalPropertiesKeySchema\"\n :schema=\"getAdditionalPropertiesValue(schema.additionalProperties)\"\n :schemaContext=\"schemaContext\"\n variant=\"additionalProperties\" />\n </template>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaObjectProperties.vue.script.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaObjectProperties.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type {\n DiscriminatorObject,\n SchemaObject,\n SchemaReferenceType,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed } from 'vue'\n\nimport { isTypeObject } from '@/components/Content/Schema/helpers/is-type-object'\nimport { getCycleKey } from '@/components/Content/Schema/helpers/schema-cycle'\nimport { sortPropertyNames } from '@/components/Content/Schema/helpers/sort-property-names'\nimport type { SchemaOptions } from '@/components/Content/Schema/types'\n\nimport SchemaProperty from './SchemaProperty.vue'\n\nconst { schema, discriminator, options, schemaContext, compositionPath } =\n defineProps<{\n schema: SchemaObject\n discriminator?: DiscriminatorObject\n compact?: boolean\n hideHeading?: boolean\n level?: number\n hideModelNames?: boolean\n breadcrumb?: string[]\n eventBus: WorkspaceEventBus | null\n options: SchemaOptions\n schemaContext?: string\n compositionPath?: string[]\n }>()\n\n/**\n * Sorts properties by required status first, then alphabetically.\n * Required properties appear first, followed by optional properties.\n */\nconst sortedProperties = computed(() =>\n sortPropertyNames(schema, discriminator, options),\n)\n\n/**\n * Get the display name for additional properties.\n *\n * Checks x-additionalPropertiesName extension first, then falls back to the\n * propertyNames schema title if available.\n */\nconst getAdditionalPropertiesName = (\n _additionalProperties: Extract<\n SchemaObject,\n { type: 'object' }\n >['additionalProperties'],\n _propertyNames?: Extract<SchemaObject, { type: 'object' }>['propertyNames'],\n) => {\n const additionalProperties =\n typeof _additionalProperties === 'boolean'\n ? _additionalProperties\n : resolve.schema(_additionalProperties)\n\n if (\n typeof additionalProperties === 'object' &&\n typeof additionalProperties['x-additionalPropertiesName'] === 'string' &&\n additionalProperties['x-additionalPropertiesName'].trim().length > 0\n ) {\n return `${additionalProperties['x-additionalPropertiesName'].trim()}`\n }\n\n // Fall back to the propertyNames title when available\n if (_propertyNames) {\n const resolved = resolve.schema(_propertyNames)\n if (resolved?.title) {\n return resolved.title\n }\n }\n\n return 'propertyName'\n}\n\n/**\n * Extract enum values from the propertyNames schema.\n *\n * JSON Schema's propertyNames keyword constrains which keys are valid\n * in an object with additionalProperties. When it contains an enum,\n * these are the allowed key names.\n */\nconst getPropertyNamesEnum = (\n _propertyNames?: Extract<SchemaObject, { type: 'object' }>['propertyNames'],\n): string[] | undefined => {\n if (!_propertyNames) {\n return undefined\n }\n\n const resolved = resolve.schema(_propertyNames)\n if (\n resolved &&\n 'enum' in resolved &&\n Array.isArray(resolved.enum) &&\n resolved.enum.length > 0\n ) {\n return resolved.enum as string[]\n }\n\n return undefined\n}\n\n/** Enum values for the property keys, derived from propertyNames if present. */\nconst additionalPropertiesEnum = computed(() => {\n if (!isTypeObject(schema) || !schema.additionalProperties) {\n return undefined\n }\n return getPropertyNamesEnum(schema.propertyNames)\n})\n\n/**\n * The resolved propertyNames schema for the property keys.\n *\n * Surfaces key constraints such as `format` (for example `uuid`) so they are\n * not lost when rendering a map of additional properties.\n */\nconst additionalPropertiesKeySchema = computed(() => {\n if (!isTypeObject(schema) || !schema.additionalProperties) {\n return undefined\n }\n return schema.propertyNames ? resolve.schema(schema.propertyNames) : undefined\n})\n\n/**\n * Keep sibling property descriptions separate from the referenced schema.\n *\n * This allows us to render both:\n * - the property-specific description written next to the $ref, and\n * - the referenced schema's own description (for example discriminator parent docs)\n */\nconst getPropertySchema = (\n property: SchemaReferenceType<SchemaObject> | undefined,\n): SchemaObject | undefined => {\n if (!property) {\n return undefined\n }\n return resolve.schema(property)\n}\n\nconst getPropertyDescription = (\n property: SchemaReferenceType<SchemaObject> | undefined,\n): string | undefined => {\n if (!property) {\n return undefined\n }\n\n return typeof property.description === 'string'\n ? property.description\n : undefined\n}\n\n/**\n * Get the value for additional properties.\n *\n * When additionalProperties is true or an empty object, it should render as { type: 'anything' }.\n * $ref values are resolved before the type check so the referenced schema is rendered correctly.\n */\nconst getAdditionalPropertiesValue = (\n additionalProperties: Extract<\n SchemaObject,\n { type: 'object' }\n >['additionalProperties'],\n): SchemaObject => {\n // Resolve $ref first so the type check below works on the actual schema\n const resolved =\n typeof additionalProperties === 'boolean'\n ? additionalProperties\n : resolve.schema(additionalProperties)\n\n if (\n resolved === true ||\n (typeof resolved === 'object' && Object.keys(resolved).length === 0) ||\n typeof resolved !== 'object' ||\n !('type' in resolved)\n ) {\n return {\n // @ts-expect-error - ask hans\n type: 'anything',\n ...(typeof resolved === 'object' ? resolved : {}),\n }\n }\n\n return resolved\n}\n</script>\n\n<template>\n <!-- Properties -->\n <template v-if=\"isTypeObject(schema) && schema.properties\">\n <SchemaProperty\n v-for=\"property in sortedProperties\"\n :key=\"property\"\n :breadcrumb\n :compact\n :compositionPath=\"compositionPath\"\n :compositionPathSegment=\"property\"\n :cycleKey=\"getCycleKey(schema.properties[property])\"\n :description=\"getPropertyDescription(schema.properties[property])\"\n :discriminator\n :eventBus=\"eventBus\"\n :hideHeading\n :hideModelNames\n :level\n :name=\"property\"\n :options=\"options\"\n :required=\"schema.required?.includes(property)\"\n :schema=\"getPropertySchema(schema.properties[property])\"\n :schemaContext=\"schemaContext\" />\n </template>\n\n <!-- patternProperties -->\n <template v-if=\"isTypeObject(schema) && schema.patternProperties\">\n <SchemaProperty\n v-for=\"[key, property] in Object.entries(schema.patternProperties)\"\n :key=\"key\"\n :breadcrumb\n :compact\n :compositionPath=\"compositionPath\"\n :compositionPathSegment=\"key\"\n :cycleKey=\"getCycleKey(property)\"\n :description=\"getPropertyDescription(property)\"\n :discriminator\n :eventBus=\"eventBus\"\n :hideHeading\n :hideModelNames=\"hideModelNames\"\n :level\n :name=\"key\"\n :options=\"options\"\n :schema=\"getPropertySchema(property)\"\n :schemaContext=\"schemaContext\" />\n </template>\n\n <!-- additionalProperties -->\n <template v-if=\"isTypeObject(schema) && schema.additionalProperties\">\n <SchemaProperty\n :breadcrumb\n :compact\n :compositionPath=\"compositionPath\"\n :compositionPathSegment=\"\n getAdditionalPropertiesName(\n schema.additionalProperties,\n schema.propertyNames,\n )\n \"\n :cycleKey=\"getCycleKey(schema.additionalProperties)\"\n :discriminator\n :eventBus=\"eventBus\"\n :hideHeading\n :hideModelNames\n :level\n :name=\"\n getAdditionalPropertiesName(\n schema.additionalProperties,\n schema.propertyNames,\n )\n \"\n noncollapsible\n :options=\"options\"\n :propertyNamesEnum=\"additionalPropertiesEnum\"\n :propertyNamesSchema=\"additionalPropertiesKeySchema\"\n :schema=\"getAdditionalPropertiesValue(schema.additionalProperties)\"\n :schemaContext=\"schemaContext\"\n variant=\"additionalProperties\" />\n </template>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaProperty.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Content/Schema/SchemaProperty.vue"],"names":[],"mappings":"AAimBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAMvE,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,8DAA8D,CAAA;AAErE,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,KAAK,CAAA;AAS9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAyBtE,KAAK,WAAW,GAAG;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,sBAAsB,GAAG,mBAAmB,CAAA;IACtD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,aAAa,CAAA;IACtB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,YAAY,CAAA;IAClC,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,oFAAoF;IACpF,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC;AAqnBJ,QAAA,MAAM,YAAY;cA7oBH,OAAO;WAFV,MAAM;aAGJ,OAAO;oBAGA,OAAO;6EA4oB1B,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"SchemaProperty.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Content/Schema/SchemaProperty.vue"],"names":[],"mappings":"AA6mBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAMvE,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,8DAA8D,CAAA;AAErE,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,KAAK,CAAA;AAS9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AA0BtE,KAAK,WAAW,GAAG;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,sBAAsB,GAAG,mBAAmB,CAAA;IACtD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,aAAa,CAAA;IACtB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,YAAY,CAAA;IAClC,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,oFAAoF;IACpF,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC;AAooBJ,QAAA,MAAM,YAAY;cA5pBH,OAAO;WAFV,MAAM;aAGJ,OAAO;oBAGA,OAAO;6EA2pB1B,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import SchemaProperty_vue_vue_type_script_setup_true_lang_default from "./SchemaProperty.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/Content/Schema/SchemaProperty.vue
5
- var SchemaProperty_default = /* @__PURE__ */ _plugin_vue_export_helper_default(SchemaProperty_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-df25c065"]]);
5
+ var SchemaProperty_default = /*#__PURE__*/ _plugin_vue_export_helper_default(SchemaProperty_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-933ce0d5"]]);
6
6
  //#endregion
7
7
  export { SchemaProperty_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaProperty.vue.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaProperty.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport { ScalarWrappingText } from '@scalar/components/wrapping-text'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport {\n isDynamicRef,\n resolveDynamicRef,\n} from '@scalar/workspace-store/helpers/dynamic-ref'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type {\n DiscriminatorObject,\n SchemaObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\nimport { computed, type Component } from 'vue'\n\nimport { WithBreadcrumb } from '@/components/Anchor'\nimport {\n resolveDynamicSchema,\n useDynamicScope,\n} from '@/components/Content/Schema/helpers/dynamic-scope'\nimport { isTypeObject } from '@/components/Content/Schema/helpers/is-type-object'\nimport { getCycleKey } from '@/components/Content/Schema/helpers/schema-cycle'\nimport type { SchemaOptions } from '@/components/Content/Schema/types'\nimport { SpecificationExtension } from '@/features/specification-extension'\n\nimport { getCompositionsToRender } from './helpers/get-compositions-to-render'\nimport { getEnumValues } from './helpers/get-enum-values'\nimport { getPropertyDescription } from './helpers/get-property-description'\nimport { hasComplexArrayItems } from './helpers/has-complex-array-items'\nimport { optimizeValueForDisplay } from './helpers/optimize-value-for-display'\nimport { shouldDisplayDescription } from './helpers/should-display-description'\nimport { shouldDisplayHeading } from './helpers/should-display-heading'\nimport Schema from './Schema.vue'\nimport SchemaComposition from './SchemaComposition.vue'\nimport SchemaEnums from './SchemaEnums.vue'\nimport SchemaPropertyHeading from './SchemaPropertyHeading.vue'\n\n/**\n * Note: We're taking in a prop called `value` which should be a JSON Schema.\n *\n * We're using `optimizeValueForDisplay` to merge null types in compositions (anyOf, allOf, oneOf, not).\n * So you should basically use the optimizedValue everywhere in the component.\n */\n\n/** Composition keywords that hold a list of schemas and can be flattened when they contain a single member. */\nconst SINGLE_ITEM_COMPOSITIONS = ['oneOf', 'anyOf', 'allOf'] as const\n\nconst props = withDefaults(\n defineProps<{\n is?: string | Component\n schema: SchemaObject | undefined\n noncollapsible?: boolean\n level?: number\n name?: string\n required?: boolean\n compact?: boolean\n discriminator?: DiscriminatorObject\n description?: string\n hideModelNames?: boolean\n hideHeading?: boolean\n /** When the root schema was resolved from a $ref, pass the ref name for display (e.g. \"Data\"). */\n modelName?: string | null\n variant?: 'additionalProperties' | 'patternProperties'\n breadcrumb?: string[]\n eventBus: WorkspaceEventBus | null\n options: SchemaOptions\n /** Enum values for property names (from JSON Schema propertyNames keyword). */\n propertyNamesEnum?: string[]\n /** Resolved propertyNames schema, used to show key constraints like `format`. */\n propertyNamesSchema?: SchemaObject\n /** When \"requestBody\", composition selection is synced with the example snippet */\n schemaContext?: string\n /** Internal path used to sync nested request body compositions with the code sample */\n compositionPath?: string[]\n /** Internal path segment for this property when building nested composition keys */\n compositionPathSegment?: string\n /** Stable identity of this property's schema, used for cycle detection. */\n cycleKey?: unknown\n }>(),\n {\n level: 0,\n required: false,\n compact: false,\n hideModelNames: false,\n },\n)\n\n/** The dynamic scope inherited from the enclosing schema resources, used to bind `$dynamicRef`s. */\nconst dynamicScope = useDynamicScope()\n\n/**\n * Simplified composition with `null` type.\n *\n * A top-level `$dynamicRef` (e.g. a linked-list `next` node) is bound to its concrete type via the\n * dynamic scope first; for ordinary schemas this is a no-op.\n */\nconst optimizedValue = computed(() =>\n optimizeValueForDisplay(resolveDynamicSchema(props.schema, dynamicScope)),\n)\n\nconst childBreadcrumb = computed<string[] | undefined>(() =>\n props.breadcrumb\n ? // A named property extends the breadcrumb with its own name. A nameless\n // container (e.g. a response object, rendered without a name to avoid a\n // duplicate heading) passes its breadcrumb straight through so its\n // properties stay linkable.\n props.name\n ? [...props.breadcrumb, props.name]\n : props.breadcrumb\n : undefined,\n)\n\nconst currentCompositionPath = computed<string[]>(() =>\n props.compositionPathSegment\n ? [...(props.compositionPath ?? []), props.compositionPathSegment]\n : (props.compositionPath ?? []),\n)\n\nconst arrayItemsCompositionPath = computed<string[]>(() => [\n ...currentCompositionPath.value,\n 'items',\n])\n\nconst shouldHaveLink = computed(() => props.level <= 2)\n\n/**\n * The array schema used for item inspection, with a `$dynamicRef` item bound to its concrete type.\n *\n * Returns the schema unchanged unless `items` is a `$dynamicRef` that resolves against the dynamic\n * scope, so ordinary arrays (including `$ref` items) keep their existing behavior exactly.\n */\nconst arrayValueWithBoundItems = computed(() => {\n const value = optimizedValue.value\n if (!value || !isArraySchema(value) || !isDynamicRef(value.items)) {\n return value\n }\n\n const bound = resolveDynamicRef(value.items.$dynamicRef, dynamicScope)\n return bound ? ({ ...value, items: bound } as SchemaObject) : value\n})\n\n/** Checks if array items have complex structure */\nconst hasComplexArrayItemsComputed = computed(() =>\n hasComplexArrayItems(arrayValueWithBoundItems.value),\n)\n\n/** Check if enum should be displayed (from value schema or from propertyNames) */\nconst hasEnum = computed(() => enumValues.value.length > 0)\n\n/** Determine if object properties should be displayed */\nconst shouldRenderObjectProperties = computed(() => {\n const value = optimizedValue.value\n if (!value) {\n return false\n }\n\n if (!('properties' in value || 'additionalProperties' in value)) {\n return false\n }\n\n // `allOf` already merges the factored-out sibling `properties` into its\n // rendered result (see `mergeAllOfSchemas`), so rendering a separate object\n // block here would show those properties twice. Let the composition handle it.\n if ('allOf' in value) {\n return false\n }\n\n // A schema may factor its common `properties` out to the top level alongside\n // a composition keyword (anyOf/oneOf/not), as described in the JSON Schema\n // \"factoring schemas\" guide. `isTypeObject` deliberately rejects such schemas\n // so the composition is rendered, but the factored-out properties must still\n // show. Unlike `allOf`, these compositions do not merge sibling properties.\n // Render them unless the schema is an explicit non-object (scalar or array)\n // type. See https://github.com/scalar/scalar/issues/8593\n const type = (value as { type?: unknown }).type\n const isExplicitNonObject = typeof type === 'string' && type !== 'object'\n\n return isTypeObject(value) || !isExplicitNonObject\n})\n\n/** Determine if array of objects should be rendered */\nconst shouldRenderArrayOfObjects = computed(() => {\n const value = optimizedValue.value\n if (!value || !isArraySchema(value) || typeof value.items !== 'object') {\n return false\n }\n\n return hasComplexArrayItemsComputed.value\n})\n\n/** Extract enum values from schema or array items */\nconst enumValues = computed(() => getEnumValues(optimizedValue.value))\n\n/** Generate property description from type/format */\nconst propertyDescription = computed(() =>\n getPropertyDescription(optimizedValue.value),\n)\n\n/** Determine if description should be displayed */\nconst displayDescription = computed(() =>\n shouldDisplayDescription(optimizedValue.value, props.description),\n)\n\n/**\n * The schema used to render the object's own properties.\n *\n * Composition keywords are stripped so the nested object renders only its\n * properties. The compositions are rendered separately below; leaving them here\n * would route the nested `Schema` back through `SchemaProperty` and recurse.\n *\n * The `discriminator` is stripped too: its variant selector is part of the\n * composition rendered below (including the one inferred from a bare\n * `discriminator.mapping`), so keeping it here would make the nested `Schema`\n * infer and render a second, identical selector.\n *\n * When the property already renders the description, we also drop it to avoid\n * repeating it in the nested object schema card.\n */\nconst objectSchemaForChildren = computed(() => {\n const value = optimizedValue.value\n if (!value) {\n return value\n }\n\n const {\n oneOf: _oneOf,\n anyOf: _anyOf,\n allOf: _allOf,\n not: _not,\n discriminator: _discriminator,\n ...objectSchema\n } = value as Record<string, unknown>\n\n if (displayDescription.value && 'description' in objectSchema) {\n const { description: _description, ...schemaWithoutDescription } =\n objectSchema\n return schemaWithoutDescription as SchemaObject\n }\n\n return objectSchema as SchemaObject\n})\n\n/** Determine if property heading should be displayed */\nconst shouldDisplayHeadingComputed = computed(() =>\n shouldDisplayHeading(optimizedValue.value, props.name, props.required),\n)\n\n/** Computes which compositions should be rendered and with which values */\nconst compositionsToRender = computed(() =>\n getCompositionsToRender(optimizedValue.value, props.options.document),\n)\n\n/**\n * Get resolved array items for rendering (with any `$dynamicRef` bound to the concrete type).\n *\n * When the items are wrapped in a single-item composition (e.g. `items: { allOf: [{ type: 'object', ... }] }`), we\n * flatten that wrapper into its plain form. A composition with a single member is equivalent to that member, so\n * keeping the composition keyword only makes the items render through an extra schema layer, which adds an\n * unnecessary level of nesting and duplicates the item description. See https://github.com/scalar/scalar/issues/5900\n */\nconst resolvedArrayItems = computed(() => {\n const value = arrayValueWithBoundItems.value\n if (!value || !isArraySchema(value) || typeof value.items !== 'object') {\n return undefined\n }\n\n const items = resolve.schema(value.items)\n const hasSingleItemComposition = SINGLE_ITEM_COMPOSITIONS.some(\n (keyword) =>\n Array.isArray(items?.[keyword]) && items[keyword]?.length === 1,\n )\n\n return hasSingleItemComposition ? optimizeValueForDisplay(items) : items\n})\n\n/**\n * Cycle key for the array items schema, derived from the raw (unresolved) items\n * so a self-referential array element is detected as a cycle.\n */\nconst arrayItemsCycleKey = computed(() => {\n const value = optimizedValue.value\n if (!value || !isArraySchema(value)) {\n return undefined\n }\n return getCycleKey(value.items)\n})\n\n/** Check if discriminator matches current property */\nconst isDiscriminatorProperty = computed(() =>\n Boolean(props.name && props.discriminator?.propertyName === props.name),\n)\n</script>\n<template>\n <component\n :is=\"is ?? 'li'\"\n class=\"property\"\n :class=\"[\n `property--level-${level}`,\n {\n 'property--compact': compact,\n 'property--deprecated': optimizedValue?.deprecated,\n },\n ]\">\n <SchemaPropertyHeading\n v-if=\"shouldDisplayHeadingComputed\"\n class=\"group\"\n :enum=\"hasEnum\"\n :eventBus=\"eventBus\"\n :hideModelNames\n :isDiscriminator=\"isDiscriminatorProperty\"\n :modelName=\"modelName\"\n :propertyNames=\"propertyNamesSchema\"\n :required\n :value=\"optimizedValue\">\n <template\n v-if=\"name\"\n #name>\n <WithBreadcrumb\n :breadcrumb=\"shouldHaveLink ? childBreadcrumb : undefined\"\n :eventBus=\"eventBus\">\n <span\n v-if=\"variant === 'patternProperties'\"\n class=\"property-name-pattern-properties\">\n <ScalarWrappingText\n preset=\"property\"\n :text=\"name\" />\n </span>\n <span\n v-else-if=\"variant === 'additionalProperties'\"\n class=\"property-name-additional-properties\">\n <ScalarWrappingText\n preset=\"property\"\n :text=\"name\" />\n </span>\n <ScalarWrappingText\n v-else\n preset=\"property\"\n :text=\"name\" />\n </WithBreadcrumb>\n </template>\n <template\n v-if=\"optimizedValue?.example !== undefined\"\n #example>\n Example:\n {{ optimizedValue.example }}\n </template>\n </SchemaPropertyHeading>\n\n <!-- Description -->\n <div\n v-if=\"displayDescription || propertyDescription\"\n class=\"property-description\">\n <ScalarMarkdown\n :value=\"displayDescription || propertyDescription || ''\" />\n </div>\n\n <!-- Enum for property names -->\n <SchemaEnums\n v-if=\"propertyNamesEnum && propertyNamesEnum.length > 0\"\n propertyNames\n :value=\"{ enum: propertyNamesEnum } as SchemaObject\" />\n\n <!-- Enum values -->\n <SchemaEnums\n v-if=\"enumValues.length > 0\"\n :value=\"optimizedValue\" />\n\n <!-- Object -->\n <div\n v-if=\"shouldRenderObjectProperties\"\n class=\"children\">\n <Schema\n :breadcrumb=\"childBreadcrumb\"\n :compact=\"compact\"\n :compositionPath=\"currentCompositionPath\"\n :cycleKey=\"cycleKey\"\n :eventBus=\"eventBus\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"noncollapsible\"\n :options=\"options\"\n :schema=\"objectSchemaForChildren\"\n :schemaContext=\"schemaContext\" />\n </div>\n\n <!-- Array of objects or nested arrays -->\n <div\n v-if=\"shouldRenderArrayOfObjects && resolvedArrayItems\"\n class=\"children\">\n <Schema\n :compact=\"compact\"\n :compositionPath=\"arrayItemsCompositionPath\"\n :cycleKey=\"arrayItemsCycleKey\"\n :eventBus=\"eventBus\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"noncollapsible\"\n :options=\"options\"\n :schema=\"resolve.schema(resolvedArrayItems)\"\n :schemaContext=\"schemaContext\" />\n </div>\n\n <!-- Compositions -->\n <SchemaComposition\n v-for=\"compositionData in compositionsToRender\"\n :key=\"compositionData.composition\"\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :composition=\"compositionData.composition\"\n :compositionPath=\"currentCompositionPath\"\n :discriminator=\"schema?.discriminator\"\n :eventBus=\"eventBus\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level\"\n :name=\"name\"\n :noncollapsible=\"noncollapsible\"\n :options=\"options\"\n :schema=\"compositionData.value\"\n :schemaContext=\"schemaContext\" />\n <SpecificationExtension :value=\"optimizedValue\" />\n </component>\n</template>\n\n<style scoped>\n.property {\n color: var(--scalar-color-1);\n display: flex;\n flex-direction: column;\n padding: 10px;\n font-size: var(--scalar-small);\n position: relative;\n}\n\n/** Remove top padding for top level schema card */\n.property.property--level-0:has(\n > .property-rule\n > .schema-card\n > .schema-properties.schema-properties-open\n > ul\n > li.property\n ) {\n padding-top: 0;\n}\n\n.property--compact.property--level-0,\n.property--compact.property--level-1 {\n padding: 10px 0;\n}\n\n.composition-panel .property.property.property.property--level-0 {\n padding: 0px;\n}\n\n.property--compact.property--level-0\n .composition-panel\n .property--compact.property--level-1 {\n padding: 8px;\n}\n\n/* if a property doesn't have a heading, remove the top padding */\n.property:has(> .property-rule:nth-of-type(1)):not(.property--compact) {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.property--deprecated {\n background: repeating-linear-gradient(\n -45deg,\n var(--scalar-background-2) 0,\n var(--scalar-background-2) 2px,\n transparent 2px,\n transparent 5px\n );\n background-size: 100%;\n}\n\n.property--deprecated > * {\n opacity: 0.75;\n}\n\n.property-description {\n margin-top: 6px;\n line-height: 1.4;\n font-size: var(--scalar-small);\n}\n\n.property-description:has(+ .property-rule) {\n margin-bottom: 9px;\n}\n\n:deep(.property-description) * {\n color: var(--scalar-color-2) !important;\n}\n\n.property:not(:last-of-type) {\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.property-description + .children,\n.children + .property-rule {\n margin-top: 9px;\n}\n\n.children {\n display: flex;\n flex-direction: column;\n}\n\n.children .property--compact.property--level-1 {\n padding: 12px;\n}\n\n.property-example-value {\n all: unset;\n font-family: var(--scalar-font-code);\n padding: 6px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.property-rule {\n border-radius: var(--scalar-radius-lg);\n display: flex;\n flex-direction: column;\n}\n\n.property--level-2 :deep(.relative > button) {\n left: -2rem;\n}\n\n.property-rule\n :deep(\n .composition-panel\n .schema-card--level-1\n > .schema-properties.schema-properties-open\n ) {\n border-radius: 0 0 var(--scalar-radius-lg) var(--scalar-radius-lg);\n}\n\n.property-rule\n :deep(.composition-panel > .schema-card > .schema-card-description) {\n padding: 10px;\n border-left: var(--scalar-border-width) solid var(--scalar-border-color);\n border-right: var(--scalar-border-width) solid var(--scalar-border-color);\n\n & + .schema-properties {\n margin-top: 0;\n }\n}\n\n.property-example {\n background: transparent;\n border: none;\n display: flex;\n flex-direction: row;\n gap: 8px;\n}\n\n.property-example-label,\n.property-example-value {\n padding: 3px 0 0 0;\n}\n\n.property-example-value {\n background: var(--scalar-background-2);\n border-top: 0;\n border-radius: var(--scalar-radius);\n padding: 3px 4px;\n}\n\n.property-name {\n font-family: var(--scalar-font-code);\n font-weight: var(--scalar-semibold);\n}\n\n.property-name-additional-properties::before,\n.property-name-pattern-properties::before {\n text-transform: uppercase;\n font-size: var(--scalar-micro);\n display: inline-block;\n padding: 2px 4px;\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-1);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n background-color: var(--scalar-background-2);\n margin-right: 4px;\n}\n\n.property-name-pattern-properties::before {\n content: 'regex';\n}\n\n.property-name-additional-properties,\n.property-name-pattern-properties {\n border: 1px dashed var(--scalar-border-color);\n color: var(--scalar-color-accent);\n display: inline-block;\n padding: 2px;\n border-radius: var(--scalar-radius);\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"SchemaProperty.vue.js","names":[],"sources":["../../../../src/components/Content/Schema/SchemaProperty.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport { ScalarWrappingText } from '@scalar/components/wrapping-text'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport {\n isDynamicRef,\n resolveDynamicRef,\n} from '@scalar/workspace-store/helpers/dynamic-ref'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type {\n DiscriminatorObject,\n SchemaObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\nimport { computed, type Component } from 'vue'\n\nimport { WithBreadcrumb } from '@/components/Anchor'\nimport {\n resolveDynamicSchema,\n useDynamicScope,\n} from '@/components/Content/Schema/helpers/dynamic-scope'\nimport { isTypeObject } from '@/components/Content/Schema/helpers/is-type-object'\nimport { getCycleKey } from '@/components/Content/Schema/helpers/schema-cycle'\nimport type { SchemaOptions } from '@/components/Content/Schema/types'\nimport { SpecificationExtension } from '@/features/specification-extension'\n\nimport { getCompositionsToRender } from './helpers/get-compositions-to-render'\nimport { getEnumValues } from './helpers/get-enum-values'\nimport { getPropertyDescription } from './helpers/get-property-description'\nimport { hasComplexArrayItems } from './helpers/has-complex-array-items'\nimport { optimizeValueForDisplay } from './helpers/optimize-value-for-display'\nimport type { CompositionKeyword } from './helpers/schema-composition'\nimport { shouldDisplayDescription } from './helpers/should-display-description'\nimport { shouldDisplayHeading } from './helpers/should-display-heading'\nimport Schema from './Schema.vue'\nimport SchemaComposition from './SchemaComposition.vue'\nimport SchemaEnums from './SchemaEnums.vue'\nimport SchemaPropertyHeading from './SchemaPropertyHeading.vue'\n\n/**\n * Note: We're taking in a prop called `value` which should be a JSON Schema.\n *\n * We're using `optimizeValueForDisplay` to merge null types in compositions (anyOf, allOf, oneOf, not).\n * So you should basically use the optimizedValue everywhere in the component.\n */\n\n/** Composition keywords that hold a list of schemas and can be flattened when they contain a single member. */\nconst SINGLE_ITEM_COMPOSITIONS = ['oneOf', 'anyOf', 'allOf'] as const\n\nconst props = withDefaults(\n defineProps<{\n is?: string | Component\n schema: SchemaObject | undefined\n noncollapsible?: boolean\n level?: number\n name?: string\n required?: boolean\n compact?: boolean\n discriminator?: DiscriminatorObject\n description?: string\n hideModelNames?: boolean\n hideHeading?: boolean\n /** When the root schema was resolved from a $ref, pass the ref name for display (e.g. \"Data\"). */\n modelName?: string | null\n variant?: 'additionalProperties' | 'patternProperties'\n breadcrumb?: string[]\n eventBus: WorkspaceEventBus | null\n options: SchemaOptions\n /** Enum values for property names (from JSON Schema propertyNames keyword). */\n propertyNamesEnum?: string[]\n /** Resolved propertyNames schema, used to show key constraints like `format`. */\n propertyNamesSchema?: SchemaObject\n /** When \"requestBody\", composition selection is synced with the example snippet */\n schemaContext?: string\n /** Internal path used to sync nested request body compositions with the code sample */\n compositionPath?: string[]\n /** Internal path segment for this property when building nested composition keys */\n compositionPathSegment?: string\n /** Stable identity of this property's schema, used for cycle detection. */\n cycleKey?: unknown\n }>(),\n {\n level: 0,\n required: false,\n compact: false,\n hideModelNames: false,\n },\n)\n\n/** The dynamic scope inherited from the enclosing schema resources, used to bind `$dynamicRef`s. */\nconst dynamicScope = useDynamicScope()\n\n/**\n * Simplified composition with `null` type.\n *\n * A top-level `$dynamicRef` (e.g. a linked-list `next` node) is bound to its concrete type via the\n * dynamic scope first; for ordinary schemas this is a no-op.\n */\nconst optimizedValue = computed(() =>\n optimizeValueForDisplay(resolveDynamicSchema(props.schema, dynamicScope)),\n)\n\nconst childBreadcrumb = computed<string[] | undefined>(() =>\n props.breadcrumb\n ? // A named property extends the breadcrumb with its own name. A nameless\n // container (e.g. a response object, rendered without a name to avoid a\n // duplicate heading) passes its breadcrumb straight through so its\n // properties stay linkable.\n props.name\n ? [...props.breadcrumb, props.name]\n : props.breadcrumb\n : undefined,\n)\n\nconst currentCompositionPath = computed<string[]>(() =>\n props.compositionPathSegment\n ? [...(props.compositionPath ?? []), props.compositionPathSegment]\n : (props.compositionPath ?? []),\n)\n\nconst arrayItemsCompositionPath = computed<string[]>(() => [\n ...currentCompositionPath.value,\n 'items',\n])\n\nconst shouldHaveLink = computed(() => props.level <= 2)\n\n/**\n * The array schema used for item inspection, with a `$dynamicRef` item bound to its concrete type.\n *\n * Returns the schema unchanged unless `items` is a `$dynamicRef` that resolves against the dynamic\n * scope, so ordinary arrays (including `$ref` items) keep their existing behavior exactly.\n */\nconst arrayValueWithBoundItems = computed(() => {\n const value = optimizedValue.value\n if (!value || !isArraySchema(value) || !isDynamicRef(value.items)) {\n return value\n }\n\n const bound = resolveDynamicRef(value.items.$dynamicRef, dynamicScope)\n return bound ? ({ ...value, items: bound } as SchemaObject) : value\n})\n\n/** Checks if array items have complex structure */\nconst hasComplexArrayItemsComputed = computed(() =>\n hasComplexArrayItems(arrayValueWithBoundItems.value),\n)\n\n/** Check if enum should be displayed (from value schema or from propertyNames) */\nconst hasEnum = computed(() => enumValues.value.length > 0)\n\n/** Determine if object properties should be displayed */\nconst shouldRenderObjectProperties = computed(() => {\n const value = optimizedValue.value\n if (!value) {\n return false\n }\n\n if (!('properties' in value || 'additionalProperties' in value)) {\n return false\n }\n\n // `allOf` already merges the factored-out sibling `properties` into its\n // rendered result (see `mergeAllOfSchemas`), so rendering a separate object\n // block here would show those properties twice. Let the composition handle it.\n if ('allOf' in value) {\n return false\n }\n\n // A schema may factor its common `properties` out to the top level alongside\n // a composition keyword (anyOf/oneOf/not), as described in the JSON Schema\n // \"factoring schemas\" guide. `isTypeObject` deliberately rejects such schemas\n // so the composition is rendered, but the factored-out properties must still\n // show. Unlike `allOf`, these compositions do not merge sibling properties.\n // Render them unless the schema is an explicit non-object (scalar or array)\n // type. See https://github.com/scalar/scalar/issues/8593\n const type = (value as { type?: unknown }).type\n const isExplicitNonObject = typeof type === 'string' && type !== 'object'\n\n return isTypeObject(value) || !isExplicitNonObject\n})\n\n/** Determine if array of objects should be rendered */\nconst shouldRenderArrayOfObjects = computed(() => {\n const value = optimizedValue.value\n if (!value || !isArraySchema(value) || typeof value.items !== 'object') {\n return false\n }\n\n return hasComplexArrayItemsComputed.value\n})\n\n/** Extract enum values from schema or array items */\nconst enumValues = computed(() => getEnumValues(optimizedValue.value))\n\n/** Generate property description from type/format */\nconst propertyDescription = computed(() =>\n getPropertyDescription(optimizedValue.value),\n)\n\n/** Determine if description should be displayed */\nconst displayDescription = computed(() =>\n shouldDisplayDescription(optimizedValue.value, props.description),\n)\n\n/**\n * The schema used to render the object's own properties.\n *\n * Composition keywords are stripped so the nested object renders only its\n * properties. The compositions are rendered separately below; leaving them here\n * would route the nested `Schema` back through `SchemaProperty` and recurse.\n *\n * The `discriminator` is stripped too: its variant selector is part of the\n * composition rendered below (including the one inferred from a bare\n * `discriminator.mapping`), so keeping it here would make the nested `Schema`\n * infer and render a second, identical selector.\n *\n * When the property already renders the description, we also drop it to avoid\n * repeating it in the nested object schema card.\n */\nconst objectSchemaForChildren = computed(() => {\n const value = optimizedValue.value\n if (!value) {\n return value\n }\n\n const {\n oneOf: _oneOf,\n anyOf: _anyOf,\n allOf: _allOf,\n not: _not,\n discriminator: _discriminator,\n ...objectSchema\n } = value as Record<string, unknown>\n\n if (displayDescription.value && 'description' in objectSchema) {\n const { description: _description, ...schemaWithoutDescription } =\n objectSchema\n return schemaWithoutDescription as SchemaObject\n }\n\n return objectSchema as SchemaObject\n})\n\n/** Determine if property heading should be displayed */\nconst shouldDisplayHeadingComputed = computed(() =>\n shouldDisplayHeading(optimizedValue.value, props.name, props.required),\n)\n\n/** Computes which compositions should be rendered and with which values */\nconst compositionsToRender = computed(() =>\n getCompositionsToRender(optimizedValue.value, props.options.document),\n)\nconst getCompositionDiscriminator = (\n composition: CompositionKeyword,\n): DiscriminatorObject | undefined =>\n composition === 'allOf'\n ? (props.schema?.discriminator ?? props.discriminator)\n : props.schema?.discriminator\n\n/**\n * Get resolved array items for rendering (with any `$dynamicRef` bound to the concrete type).\n *\n * When the items are wrapped in a single-item composition (e.g. `items: { allOf: [{ type: 'object', ... }] }`), we\n * flatten that wrapper into its plain form. A composition with a single member is equivalent to that member, so\n * keeping the composition keyword only makes the items render through an extra schema layer, which adds an\n * unnecessary level of nesting and duplicates the item description. See https://github.com/scalar/scalar/issues/5900\n */\nconst resolvedArrayItems = computed(() => {\n const value = arrayValueWithBoundItems.value\n if (!value || !isArraySchema(value) || typeof value.items !== 'object') {\n return undefined\n }\n\n const items = resolve.schema(value.items)\n const hasSingleItemComposition = SINGLE_ITEM_COMPOSITIONS.some(\n (keyword) =>\n Array.isArray(items?.[keyword]) && items[keyword]?.length === 1,\n )\n\n return hasSingleItemComposition ? optimizeValueForDisplay(items) : items\n})\n\n/**\n * Cycle key for the array items schema, derived from the raw (unresolved) items\n * so a self-referential array element is detected as a cycle.\n */\nconst arrayItemsCycleKey = computed(() => {\n const value = optimizedValue.value\n if (!value || !isArraySchema(value)) {\n return undefined\n }\n return getCycleKey(value.items)\n})\n\n/** Check if discriminator matches current property */\nconst isDiscriminatorProperty = computed(() =>\n Boolean(props.name && props.discriminator?.propertyName === props.name),\n)\n</script>\n<template>\n <component\n :is=\"is ?? 'li'\"\n class=\"property\"\n :class=\"[\n `property--level-${level}`,\n {\n 'property--compact': compact,\n 'property--deprecated': optimizedValue?.deprecated,\n },\n ]\">\n <SchemaPropertyHeading\n v-if=\"shouldDisplayHeadingComputed\"\n class=\"group\"\n :enum=\"hasEnum\"\n :eventBus=\"eventBus\"\n :hideModelNames\n :isDiscriminator=\"isDiscriminatorProperty\"\n :modelLinkOptions=\"{\n hideModels: options.hideModels,\n document: options.document,\n }\"\n :modelName=\"modelName\"\n :propertyNames=\"propertyNamesSchema\"\n :required\n :value=\"optimizedValue\">\n <template\n v-if=\"name\"\n #name>\n <WithBreadcrumb\n :breadcrumb=\"shouldHaveLink ? childBreadcrumb : undefined\"\n :eventBus=\"eventBus\">\n <span\n v-if=\"variant === 'patternProperties'\"\n class=\"property-name-pattern-properties\">\n <ScalarWrappingText\n preset=\"property\"\n :text=\"name\" />\n </span>\n <span\n v-else-if=\"variant === 'additionalProperties'\"\n class=\"property-name-additional-properties\">\n <ScalarWrappingText\n preset=\"property\"\n :text=\"name\" />\n </span>\n <ScalarWrappingText\n v-else\n preset=\"property\"\n :text=\"name\" />\n </WithBreadcrumb>\n </template>\n <template\n v-if=\"optimizedValue?.example !== undefined\"\n #example>\n Example:\n {{ optimizedValue.example }}\n </template>\n </SchemaPropertyHeading>\n\n <!-- Description -->\n <div\n v-if=\"displayDescription || propertyDescription\"\n class=\"property-description\">\n <ScalarMarkdown\n :value=\"displayDescription || propertyDescription || ''\" />\n </div>\n\n <!-- Enum for property names -->\n <SchemaEnums\n v-if=\"propertyNamesEnum && propertyNamesEnum.length > 0\"\n propertyNames\n :value=\"{ enum: propertyNamesEnum } as SchemaObject\" />\n\n <!-- Enum values -->\n <!-- The array items card rendered below already lists these same values. -->\n <SchemaEnums\n v-if=\"enumValues.length > 0 && !shouldRenderArrayOfObjects\"\n :value=\"optimizedValue\" />\n\n <!-- Object -->\n <div\n v-if=\"shouldRenderObjectProperties\"\n class=\"children\">\n <Schema\n :breadcrumb=\"childBreadcrumb\"\n :compact=\"compact\"\n :compositionPath=\"currentCompositionPath\"\n :cycleKey=\"cycleKey\"\n :eventBus=\"eventBus\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"noncollapsible\"\n :options=\"options\"\n :schema=\"objectSchemaForChildren\"\n :schemaContext=\"schemaContext\" />\n </div>\n\n <!-- Array of objects or nested arrays -->\n <div\n v-if=\"shouldRenderArrayOfObjects && resolvedArrayItems\"\n class=\"children\">\n <Schema\n :compact=\"compact\"\n :compositionPath=\"arrayItemsCompositionPath\"\n :cycleKey=\"arrayItemsCycleKey\"\n :eventBus=\"eventBus\"\n :hideModelNames\n :level=\"level + 1\"\n :name=\"name\"\n :noncollapsible=\"noncollapsible\"\n :options=\"options\"\n :schema=\"resolve.schema(resolvedArrayItems)\"\n :schemaContext=\"schemaContext\" />\n </div>\n\n <!-- Compositions -->\n <SchemaComposition\n v-for=\"compositionData in compositionsToRender\"\n :key=\"compositionData.composition\"\n :breadcrumb=\"breadcrumb\"\n :compact=\"compact\"\n :composition=\"compositionData.composition\"\n :compositionPath=\"currentCompositionPath\"\n :discriminator=\"getCompositionDiscriminator(compositionData.composition)\"\n :eventBus=\"eventBus\"\n :hideHeading=\"hideHeading\"\n :hideModelNames\n :level=\"level\"\n :name=\"name\"\n :noncollapsible=\"noncollapsible\"\n :options=\"options\"\n :schema=\"compositionData.value\"\n :schemaContext=\"schemaContext\" />\n <SpecificationExtension :value=\"optimizedValue\" />\n </component>\n</template>\n\n<style scoped>\n.property {\n color: var(--scalar-color-1);\n display: flex;\n flex-direction: column;\n padding: 10px;\n font-size: var(--scalar-small);\n position: relative;\n}\n\n/** Remove top padding for top level schema card */\n.property.property--level-0:has(\n > .property-rule\n > .schema-card\n > .schema-properties.schema-properties-open\n > ul\n > li.property\n ) {\n padding-top: 0;\n}\n\n.property--compact.property--level-0,\n.property--compact.property--level-1 {\n padding: 10px 0;\n}\n\n.composition-panel .property.property.property.property--level-0 {\n padding: 0px;\n}\n\n.property--compact.property--level-0\n .composition-panel\n .property--compact.property--level-1 {\n padding: 8px;\n}\n\n/* if a property doesn't have a heading, remove the top padding */\n.property:has(> .property-rule:nth-of-type(1)):not(.property--compact) {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.property--deprecated {\n background: repeating-linear-gradient(\n -45deg,\n var(--scalar-background-2) 0,\n var(--scalar-background-2) 2px,\n transparent 2px,\n transparent 5px\n );\n background-size: 100%;\n}\n\n.property--deprecated > * {\n opacity: 0.75;\n}\n\n.property-description {\n margin-top: 6px;\n line-height: 1.4;\n font-size: var(--scalar-small);\n}\n\n.property-description:has(+ .property-rule) {\n margin-bottom: 9px;\n}\n\n:deep(.property-description) * {\n color: var(--scalar-color-2) !important;\n}\n\n.property:not(:last-of-type) {\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.property-description + .children,\n.children + .property-rule {\n margin-top: 9px;\n}\n\n.children {\n display: flex;\n flex-direction: column;\n}\n\n.children .property--compact.property--level-1 {\n padding: 12px;\n}\n\n.property-example-value {\n all: unset;\n font-family: var(--scalar-font-code);\n padding: 6px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n\n.property-rule {\n border-radius: var(--scalar-radius-lg);\n display: flex;\n flex-direction: column;\n}\n\n.property--level-2 :deep(.relative > button) {\n left: -2rem;\n}\n\n.property-rule\n :deep(\n .composition-panel\n .schema-card--level-1\n > .schema-properties.schema-properties-open\n ) {\n border-radius: 0 0 var(--scalar-radius-lg) var(--scalar-radius-lg);\n}\n\n.property-rule\n :deep(.composition-panel > .schema-card > .schema-card-description) {\n padding: 10px;\n border-left: var(--scalar-border-width) solid var(--scalar-border-color);\n border-right: var(--scalar-border-width) solid var(--scalar-border-color);\n\n & + .schema-properties {\n margin-top: 0;\n }\n}\n\n.property-example {\n background: transparent;\n border: none;\n display: flex;\n flex-direction: row;\n gap: 8px;\n}\n\n.property-example-label,\n.property-example-value {\n padding: 3px 0 0 0;\n}\n\n.property-example-value {\n background: var(--scalar-background-2);\n border-top: 0;\n border-radius: var(--scalar-radius);\n padding: 3px 4px;\n}\n\n.property-name {\n font-family: var(--scalar-font-code);\n font-weight: var(--scalar-semibold);\n}\n\n.property-name-additional-properties::before,\n.property-name-pattern-properties::before {\n text-transform: uppercase;\n font-size: var(--scalar-micro);\n display: inline-block;\n padding: 2px 4px;\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-1);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n background-color: var(--scalar-background-2);\n margin-right: 4px;\n}\n\n.property-name-pattern-properties::before {\n content: 'regex';\n}\n\n.property-name-additional-properties,\n.property-name-pattern-properties {\n border: 1px dashed var(--scalar-border-color);\n color: var(--scalar-color-accent);\n display: inline-block;\n padding: 2px;\n border-radius: var(--scalar-radius);\n}\n</style>\n"],"mappings":""}
@@ -48,7 +48,7 @@ var _hoisted_5 = {
48
48
  * So you should basically use the optimizedValue everywhere in the component.
49
49
  */
50
50
  /** Composition keywords that hold a list of schemas and can be flattened when they contain a single member. */
51
- var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
51
+ var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
52
52
  __name: "SchemaProperty",
53
53
  props: {
54
54
  is: {},
@@ -173,6 +173,7 @@ var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
173
173
  const shouldDisplayHeadingComputed = computed(() => shouldDisplayHeading(optimizedValue.value, props.name, props.required));
174
174
  /** Computes which compositions should be rendered and with which values */
175
175
  const compositionsToRender = computed(() => getCompositionsToRender(optimizedValue.value, props.options.document));
176
+ const getCompositionDiscriminator = (composition) => composition === "allOf" ? props.schema?.discriminator ?? props.discriminator : props.schema?.discriminator;
176
177
  /**
177
178
  * Get resolved array items for rendering (with any `$dynamicRef` bound to the concrete type).
178
179
  *
@@ -211,6 +212,10 @@ var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
211
212
  eventBus: __props.eventBus,
212
213
  hideModelNames: __props.hideModelNames,
213
214
  isDiscriminator: isDiscriminatorProperty.value,
215
+ modelLinkOptions: {
216
+ hideModels: __props.options.hideModels,
217
+ document: __props.options.document
218
+ },
214
219
  modelName: __props.modelName,
215
220
  propertyNames: __props.propertyNamesSchema,
216
221
  required: __props.required,
@@ -244,6 +249,7 @@ var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
244
249
  "eventBus",
245
250
  "hideModelNames",
246
251
  "isDiscriminator",
252
+ "modelLinkOptions",
247
253
  "modelName",
248
254
  "propertyNames",
249
255
  "required",
@@ -255,7 +261,7 @@ var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
255
261
  propertyNames: "",
256
262
  value: { enum: __props.propertyNamesEnum }
257
263
  }, null, 8, ["value"])) : createCommentVNode("", true),
258
- enumValues.value.length > 0 ? (openBlock(), createBlock(SchemaEnums_default, {
264
+ enumValues.value.length > 0 && !shouldRenderArrayOfObjects.value ? (openBlock(), createBlock(SchemaEnums_default, {
259
265
  key: 3,
260
266
  value: optimizedValue.value
261
267
  }, null, 8, ["value"])) : createCommentVNode("", true),
@@ -318,7 +324,7 @@ var SchemaProperty_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
318
324
  compact: __props.compact,
319
325
  composition: compositionData.composition,
320
326
  compositionPath: currentCompositionPath.value,
321
- discriminator: __props.schema?.discriminator,
327
+ discriminator: getCompositionDiscriminator(compositionData.composition),
322
328
  eventBus: __props.eventBus,
323
329
  hideHeading: __props.hideHeading,
324
330
  hideModelNames: __props.hideModelNames,