@scalar/api-reference 1.64.0 → 1.64.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/dist/blocks/scalar-asyncapi-server-selector-block/components/AsyncApiServerSelector.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-asyncapi-server-selector-block/components/AsyncApiServerSelector.vue.script.js +1 -1
- package/dist/blocks/scalar-asyncapi-server-selector-block/components/AsyncApiServerSelector.vue.script.js.map +1 -1
- package/dist/blocks/scalar-asyncapi-server-selector-block/components/Selector.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-asyncapi-server-selector-block/components/Selector.vue.script.js +1 -1
- package/dist/blocks/scalar-asyncapi-server-selector-block/components/Selector.vue.script.js.map +1 -1
- package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/AsyncApiSidebarFilters.vue.script.js +2 -2
- package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/AsyncApiSidebarFilters.vue.script.js.map +1 -1
- package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/SidebarFilter.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/SidebarFilter.vue.script.js +1 -1
- package/dist/blocks/scalar-asyncapi-sidebar-filters-block/components/SidebarFilter.vue.script.js.map +1 -1
- package/dist/blocks/scalar-asyncapi-sidebar-filters-block/helpers/filter-async-api-navigation.js.map +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.d.ts +1 -3
- package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.js +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.js.map +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.script.js +13 -27
- package/dist/blocks/scalar-client-selector-block/components/ClientDropdown.vue.script.js.map +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.js +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.js.map +1 -1
- package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.script.js +37 -25
- package/dist/blocks/scalar-client-selector-block/components/ClientSelector.vue.script.js.map +1 -1
- package/dist/blocks/scalar-client-selector-block/helpers/featured-clients.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/DownloadLink.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-info-block/components/DownloadLink.vue.js +1 -1
- package/dist/blocks/scalar-info-block/components/DownloadLink.vue.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/DownloadLink.vue.script.js +10 -4
- package/dist/blocks/scalar-info-block/components/DownloadLink.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/InfoBlock.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/InfoBlock.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/InfoDescription.vue.js +1 -1
- package/dist/blocks/scalar-info-block/components/InfoDescription.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/InfoDescription.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/InfoLinks.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/InfoLinks.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/InfoMarkdownSection.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/InfoMarkdownSection.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/InfoVersion.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/InfoVersion.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionCard.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionCardItem.vue.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionCardItem.vue.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLayout.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLoading.vue.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLoading.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/IntroductionLoading.vue.script.js.map +1 -1
- package/dist/blocks/scalar-info-block/components/SpecificationVersion.vue.script.js +1 -1
- package/dist/blocks/scalar-info-block/components/SpecificationVersion.vue.script.js.map +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.js +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.js.map +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.script.js +16 -9
- package/dist/blocks/scalar-sdk-installation-instructions/components/SdkInstallationInstructions.vue.script.js.map +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/helpers/language-icon.js.map +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/helpers/renderable-sdks.js.map +1 -1
- package/dist/blocks/scalar-sdk-installation-instructions/helpers/visible-tab-count.js.map +1 -1
- package/dist/blocks/scalar-server-selector-block/components/Selector.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-server-selector-block/components/Selector.vue.script.js +1 -1
- package/dist/blocks/scalar-server-selector-block/components/Selector.vue.script.js.map +1 -1
- package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.d.ts.map +1 -1
- package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.script.js +1 -1
- package/dist/blocks/scalar-server-selector-block/components/ServerSelector.vue.script.js.map +1 -1
- package/dist/browser/chunks/AgentScalarChatInterface-D1mzA447.js +27 -0
- package/dist/browser/chunks/ScalarTextInput.vue-OfiA6SHf.js +27 -0
- package/dist/browser/chunks/{basic-shape-diamond.svg-BTEOT1FL.js → basic-shape-diamond.svg-o5eiY2I7.js} +2 -2
- package/dist/browser/chunks/{basic-shape-hexagon.svg-BSPzaCgF.js → basic-shape-hexagon.svg-CGuS7mbd.js} +2 -2
- package/dist/browser/chunks/{basic-shape-primary-circle-ellipse-round.svg-DKmZ8UUU.js → basic-shape-primary-circle-ellipse-round.svg-DDIpXiBm.js} +2 -2
- package/dist/browser/chunks/{basic-shape-primary-square-rectangle.svg-n2YRykHD.js → basic-shape-primary-square-rectangle.svg-DzVEJHMB.js} +2 -2
- package/dist/browser/chunks/{basic-shape-shield.svg-Bec9cJDA.js → basic-shape-shield.svg-BZzapRqv.js} +2 -2
- package/dist/browser/chunks/browser-CTPPEMEL.js +129 -0
- package/dist/browser/chunks/{computer-device-desktop-monitor.svg-m6j893Hb.js → computer-device-desktop-monitor.svg-OSM05r1I.js} +2 -2
- package/dist/browser/chunks/{computer-device-desktop.svg-Dk1VVO7k.js → computer-device-desktop.svg-BMFzGZ27.js} +2 -2
- package/dist/browser/chunks/{computer-device-laptop.svg-BNGVUCYS.js → computer-device-laptop.svg-CMAjzuB-.js} +2 -2
- 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
- package/dist/browser/chunks/{computer-device-mobile-phone-android-samsung.svg-D8ExpMpL.js → computer-device-mobile-phone-android-samsung.svg-gbMJLjJw.js} +2 -2
- 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
- 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
- package/dist/browser/chunks/{computer-device-mobile-tablet-touch.svg-DQ2oTvOG.js → computer-device-mobile-tablet-touch.svg-Zi88BP4L.js} +2 -2
- package/dist/browser/chunks/{computer-device-mobile-tablet.svg-DCr0XlRc.js → computer-device-mobile-tablet.svg-C1ggisWP.js} +2 -2
- package/dist/browser/chunks/{computer-device-network-ethernet-cat6.svg-AK9l0iOl.js → computer-device-network-ethernet-cat6.svg-BIUymdC1.js} +2 -2
- package/dist/browser/chunks/{computer-device-network-lan-www.svg-gUIdFBlE.js → computer-device-network-lan-www.svg-CoFUlIVO.js} +2 -2
- package/dist/browser/chunks/{computer-device-network-wifi-connection.svg-Be-EMm4e.js → computer-device-network-wifi-connection.svg-DeWsacxI.js} +2 -2
- package/dist/browser/chunks/{computer-device-network-wifi-router.svg-Dc2VzyqK.js → computer-device-network-wifi-router.svg-BjpZEot4.js} +2 -2
- package/dist/browser/chunks/{ecology-science-erlenmeyer-flask.svg-DHgy7Jfd.js → ecology-science-erlenmeyer-flask.svg-ftjGGirE.js} +2 -2
- package/dist/browser/chunks/{image-flash-lightning.svg-EETR_y1q.js → image-flash-lightning.svg-DYQ0W4Fi.js} +2 -2
- package/dist/browser/chunks/{image-picture-flower.svg-DN1AYzJU.js → image-picture-flower.svg-Bfe5SVDf.js} +2 -2
- package/dist/browser/chunks/{interface-alert-exclamation-diamond.svg-C5NozMV_.js → interface-alert-exclamation-diamond.svg-D1HePDNM.js} +2 -2
- package/dist/browser/chunks/{interface-alert-exclamation-triangle-warning.svg-DaAg2fF5.js → interface-alert-exclamation-triangle-warning.svg-CILUsxBC.js} +2 -2
- package/dist/browser/chunks/{interface-alert-information-circle.svg-ckkkt9Mv.js → interface-alert-information-circle.svg-9LrbJM5J.js} +2 -2
- package/dist/browser/chunks/{interface-award-crown.svg-pjvn9hY-.js → interface-award-crown.svg-DllWgiU1.js} +2 -2
- package/dist/browser/chunks/{interface-bookmark.svg-BK9HKQBT.js → interface-bookmark-tag.svg-Dc-JL-Kc.js} +2 -2
- package/dist/browser/chunks/{interface-bookmark-tag.svg-r2r-lQq4.js → interface-bookmark.svg-Dc-JL-Kc.js} +2 -2
- package/dist/browser/chunks/{interface-calendar-date-one.svg-DNnF0M1I.js → interface-calendar-date-one.svg-DO2jelhF.js} +2 -2
- package/dist/browser/chunks/{interface-content-book-open-pages.svg-CQj_w9Vp.js → interface-content-book-open-pages.svg-BJjMjIgA.js} +2 -2
- package/dist/browser/chunks/{interface-content-book-page.svg-DppoeJRe.js → interface-content-book-page.svg-C6rKB2fs.js} +2 -2
- package/dist/browser/chunks/{interface-content-file.svg-CvcD7OiY.js → interface-content-file.svg-CS0q2FKx.js} +2 -2
- package/dist/browser/chunks/{interface-content-folder.svg-BmtS5I9A.js → interface-content-folder.svg-CThTWsJX.js} +2 -2
- package/dist/browser/chunks/{interface-copy-clipboard.svg-Be6EI50X.js → interface-copy-clipboard.svg-DdN67cLv.js} +2 -2
- package/dist/browser/chunks/{interface-edit-attachment.svg-G5TKzpWX.js → interface-edit-attachment.svg-Ciizphuh.js} +2 -2
- package/dist/browser/chunks/{interface-edit-binocular.svg-jzL-DvGB.js → interface-edit-binocular.svg-Dw1nDqmL.js} +2 -2
- package/dist/browser/chunks/{interface-edit-magic-wand.svg-BOTlymvp.js → interface-edit-magic-wand.svg-BYS0jm_E.js} +2 -2
- package/dist/browser/chunks/{interface-edit-tool-paint-roller.svg-s9dwryx7.js → interface-edit-tool-paint-roller.svg-NioSHZC2.js} +2 -2
- package/dist/browser/chunks/{interface-edit-tool-pencil.svg-C7v0dbB3.js → interface-edit-tool-pencil.svg-P87QFlat.js} +2 -2
- package/dist/browser/chunks/{interface-favorite-award.svg-CYHUgUG0.js → interface-favorite-award.svg-DBBAChSi.js} +2 -2
- package/dist/browser/chunks/{interface-favorite-flag.svg-C10zlKOb.js → interface-favorite-flag.svg-HlhPomHY.js} +2 -2
- package/dist/browser/chunks/{interface-favorite-heart.svg-eoduXxlz.js → interface-favorite-heart.svg-Cqu2GYDo.js} +2 -2
- package/dist/browser/chunks/{interface-favorite-star.svg-BSmxJetr.js → interface-favorite-star.svg-BD4JY_J2.js} +2 -2
- package/dist/browser/chunks/{interface-favorite-stars-sparkles.svg-JTFLj3Ls.js → interface-favorite-stars-sparkles.svg-BXi6aO8q.js} +2 -2
- package/dist/browser/chunks/{interface-hierarchy-flowchart.svg-Cg_Wy0kN.js → interface-hierarchy-flowchart.svg-CDEVSsD4.js} +2 -2
- package/dist/browser/chunks/{interface-home-house.svg-DytoGRnv.js → interface-home-house.svg-DJetUjwj.js} +2 -2
- package/dist/browser/chunks/{interface-hyperlink.svg-CuEfmmQI.js → interface-hyperlink.svg-DJ1LREmz.js} +2 -2
- package/dist/browser/chunks/{interface-lighting-brightness.svg-DSK0h_Pa.js → interface-lighting-brightness.svg-TGKAaHYV.js} +2 -2
- package/dist/browser/chunks/{interface-lock-closed.svg-Cn6TaLYv.js → interface-lock-closed.svg-3hehWr3i.js} +2 -2
- package/dist/browser/chunks/{interface-lock-open-unlock.svg-CVkG5-9W.js → interface-lock-open-unlock.svg-CuXKcv1m.js} +2 -2
- package/dist/browser/chunks/{interface-login-key.svg-y-cwwXjN.js → interface-login-key.svg-Chwvvywd.js} +2 -2
- package/dist/browser/chunks/{interface-search.svg-S-puVFJB.js → interface-search.svg-JDE3fk0u.js} +2 -2
- package/dist/browser/chunks/{interface-setting-cog.svg-CTH4_lLg.js → interface-setting-cog.svg-BBCkeh4K.js} +2 -2
- package/dist/browser/chunks/{interface-share-megaphone-bullhorn.svg-Pbp39MyC.js → interface-share-megaphone-bullhorn.svg-CDdxF-4y.js} +2 -2
- package/dist/browser/chunks/{interface-share-rocket.svg-BgCsIRZO.js → interface-share-rocket.svg-DSbdn_o7.js} +2 -2
- package/dist/browser/chunks/{interface-share-satellite.svg-DAMN9d5G.js → interface-share-satellite.svg-CefBVZvY.js} +2 -2
- package/dist/browser/chunks/{interface-share-space-ship.svg-Dt-Mejxk.js → interface-share-space-ship.svg-tFA2dsSU.js} +2 -2
- package/dist/browser/chunks/{interface-share.svg-vFYTXSti.js → interface-share.svg-BpOGopyv.js} +2 -2
- package/dist/browser/chunks/{interface-signal-square.svg-DNG4LpAe.js → interface-signal-square.svg-BcX_BoaC.js} +2 -2
- package/dist/browser/chunks/{interface-time-clock-circle.svg-Bpz-nLxo.js → interface-time-clock-circle.svg-C8B_L_RM.js} +2 -2
- package/dist/browser/chunks/{interface-time-hour-glass.svg-D7agfKsH.js → interface-time-hour-glass.svg-qw-oeoVn.js} +2 -2
- package/dist/browser/chunks/{interface-users-multiple.svg-CkPJBBnG.js → interface-users-multiple.svg-Cs13Eewq.js} +2 -2
- package/dist/browser/chunks/{interface-weather-moon.svg-CaTZFMPO.js → interface-weather-moon.svg-CV-oDTae.js} +2 -2
- package/dist/browser/chunks/{mail-chat-bubble-square.svg-DC8RIihp.js → mail-chat-bubble-square.svg-dpauJhin.js} +2 -2
- package/dist/browser/chunks/{mail-send-email-paper-airplane.svg-D8OLs9jz.js → mail-send-email-paper-airplane.svg-BBofxojL.js} +2 -2
- package/dist/browser/chunks/{mail-send-envelope.svg-CV33h5Sx.js → mail-send-envelope.svg-DyENgYOI.js} +2 -2
- package/dist/browser/chunks/modal-BS4e2gew.js +99 -0
- package/dist/browser/chunks/{money-cashier-receipt.svg-CJL8C2gs.js → money-cashier-receipt.svg-dNTr5aio.js} +2 -2
- package/dist/browser/chunks/{money-currency-dollar-pay.svg-VdBplCTx.js → money-currency-dollar-pay.svg-1ZESPtFY.js} +2 -2
- package/dist/browser/chunks/{money-graph-arrow-increase.svg-DcRov3zk.js → money-graph-arrow-increase.svg-kEZ2u2z2.js} +2 -2
- package/dist/browser/chunks/{money-graph-bar-chart-increase.svg-Cc7KxjX-.js → money-graph-bar-chart-increase.svg-B-t2UWB3.js} +2 -2
- package/dist/browser/chunks/{nature-ecology-leaf.svg-DR3cTZxt.js → nature-ecology-leaf.svg-DZ2GJV8m.js} +2 -2
- package/dist/browser/chunks/{phone-telephone.svg-DyY0gUlk.js → phone-telephone.svg-C12QjpN7.js} +2 -2
- package/dist/browser/chunks/{programming-bug.svg-BHLT-Qhp.js → programming-bug.svg-wLTsruN9.js} +2 -2
- package/dist/browser/chunks/{programming-cloud.svg-B6YW33ba.js → programming-cloud.svg-3XU6dNUg.js} +2 -2
- package/dist/browser/chunks/{programming-computer-database-server.svg-B6o5Sdn-.js → programming-computer-database-server.svg-B1JrHSPd.js} +2 -2
- package/dist/browser/chunks/{programming-computer-database.svg-Cl7OVtpJ.js → programming-computer-database.svg-BxHSuFl7.js} +2 -2
- package/dist/browser/chunks/{programming-module-four-layout.svg-BQrerL1x.js → programming-module-four-layout.svg-CeV35q45.js} +2 -2
- package/dist/browser/chunks/{programming-module-three.svg-B2KTQzBM.js → programming-module-three.svg-YIBpLt45.js} +2 -2
- package/dist/browser/chunks/{programming-module.svg-CiID7kPm.js → programming-module.svg-CU_pEibI.js} +2 -2
- package/dist/browser/chunks/{programming-script-code.svg-D1M5rtkN.js → programming-script-code.svg-CLzinmHT.js} +2 -2
- package/dist/browser/chunks/runtime-core.esm-bundler-CqqEw5ds.js +17 -0
- package/dist/browser/chunks/{shopping-cart.svg-BEegiIR9.js → shopping-cart.svg-Brzddu3K.js} +2 -2
- package/dist/browser/chunks/{shopping-gift-present.svg-BUHwuLix.js → shopping-gift-present.svg-l2K48g7L.js} +2 -2
- package/dist/browser/chunks/{shopping-shipping-box-parcel-package.svg-D6fxWdYx.js → shopping-shipping-box-parcel-package.svg-DesGopPo.js} +2 -2
- package/dist/browser/chunks/{tag-new-circle.svg-jsg1bGs0.js → tag-new-circle.svg-DE-VaLZU.js} +2 -2
- package/dist/browser/chunks/{travel-map-earth-globe.svg-ClbMiU-f.js → travel-map-earth-globe.svg-DLaOMzx6.js} +2 -2
- package/dist/browser/chunks/vendor-DWZAEyBy.js +306 -0
- package/dist/browser/standalone.esm.js +8 -6
- package/dist/browser/standalone.js +253 -254
- package/dist/components/AgentScalar/AgentScalarButton.vue.script.js +1 -1
- package/dist/components/AgentScalar/AgentScalarButton.vue.script.js.map +1 -1
- package/dist/components/AgentScalar/AgentScalarChatInterface.vue.script.js +1 -1
- package/dist/components/AgentScalar/AgentScalarChatInterface.vue.script.js.map +1 -1
- package/dist/components/AgentScalar/AgentScalarDrawer.vue.d.ts.map +1 -1
- package/dist/components/AgentScalar/AgentScalarDrawer.vue.js +1 -1
- package/dist/components/AgentScalar/AgentScalarDrawer.vue.script.js +1 -1
- package/dist/components/AgentScalar/AgentScalarDrawer.vue.script.js.map +1 -1
- package/dist/components/AgentScalar/OpenMCPButton.vue.d.ts.map +1 -1
- package/dist/components/AgentScalar/OpenMCPButton.vue.js +1 -1
- package/dist/components/AgentScalar/OpenMCPButton.vue.js.map +1 -1
- package/dist/components/AgentScalar/OpenMCPButton.vue.script.js +47 -32
- package/dist/components/AgentScalar/OpenMCPButton.vue.script.js.map +1 -1
- package/dist/components/Anchor/Anchor.vue.d.ts.map +1 -1
- package/dist/components/Anchor/Anchor.vue.script.js +1 -1
- package/dist/components/Anchor/Anchor.vue.script.js.map +1 -1
- package/dist/components/Anchor/WithBreadcrumb.vue.script.js +2 -2
- package/dist/components/Anchor/WithBreadcrumb.vue.script.js.map +1 -1
- package/dist/components/ApiReference.vue.d.ts.map +1 -1
- package/dist/components/ApiReference.vue.js +1 -1
- package/dist/components/ApiReference.vue.js.map +1 -1
- package/dist/components/ApiReference.vue.script.js +48 -15
- package/dist/components/ApiReference.vue.script.js.map +1 -1
- package/dist/components/Badge/Badge.vue.js +1 -1
- package/dist/components/Badge/Badge.vue.script.js +1 -1
- package/dist/components/Badge/Badge.vue.script.js.map +1 -1
- package/dist/components/ClassicHeader.vue.js +1 -1
- package/dist/components/ClassicHeader.vue.js.map +1 -1
- package/dist/components/Content/AsyncApi/AsyncApiLabels.vue.js +1 -1
- package/dist/components/Content/AsyncApi/AsyncApiLabels.vue.script.js +1 -1
- package/dist/components/Content/AsyncApi/AsyncApiLabels.vue.script.js.map +1 -1
- package/dist/components/Content/AsyncApi/AsyncApiTraversedEntry.vue.script.js +1 -1
- package/dist/components/Content/AsyncApi/AsyncApiTraversedEntry.vue.script.js.map +1 -1
- package/dist/components/Content/AsyncApi/Channel.vue.d.ts.map +1 -1
- package/dist/components/Content/AsyncApi/Channel.vue.js +1 -1
- package/dist/components/Content/AsyncApi/Channel.vue.script.js +1 -1
- package/dist/components/Content/AsyncApi/Channel.vue.script.js.map +1 -1
- package/dist/components/Content/AsyncApi/ChannelsList.vue.js +1 -1
- package/dist/components/Content/AsyncApi/ChannelsList.vue.script.js +1 -1
- package/dist/components/Content/AsyncApi/ChannelsList.vue.script.js.map +1 -1
- package/dist/components/Content/AsyncApi/Message.vue.d.ts.map +1 -1
- package/dist/components/Content/AsyncApi/Message.vue.js +1 -1
- package/dist/components/Content/AsyncApi/Message.vue.script.js +2 -2
- package/dist/components/Content/AsyncApi/Message.vue.script.js.map +1 -1
- package/dist/components/Content/AsyncApi/Operation.vue.d.ts.map +1 -1
- package/dist/components/Content/AsyncApi/Operation.vue.js +1 -1
- package/dist/components/Content/AsyncApi/Operation.vue.script.js +1 -1
- package/dist/components/Content/AsyncApi/Operation.vue.script.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/adapt-async-api-parameters.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/async-api-render-options.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/filter-children-by-type.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/get-async-api-labels.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/get-async-api-required-security.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/pick-heading.js.map +1 -1
- package/dist/components/Content/AsyncApi/helpers/resolve-async-api-nodes.js.map +1 -1
- package/dist/components/Content/Auth/Auth.vue.script.js +1 -1
- package/dist/components/Content/Auth/Auth.vue.script.js.map +1 -1
- package/dist/components/Content/Content.vue.script.js +1 -1
- package/dist/components/Content/Content.vue.script.js.map +1 -1
- package/dist/components/Content/Models/Model.vue.script.js +1 -1
- package/dist/components/Content/Models/Model.vue.script.js.map +1 -1
- package/dist/components/Content/Models/ModelTag.vue.d.ts.map +1 -1
- package/dist/components/Content/Models/ModelTag.vue.script.js +2 -2
- package/dist/components/Content/Models/ModelTag.vue.script.js.map +1 -1
- package/dist/components/Content/Models/components/ClassicLayout.vue.d.ts.map +1 -1
- package/dist/components/Content/Models/components/ClassicLayout.vue.js +1 -1
- package/dist/components/Content/Models/components/ClassicLayout.vue.script.js +1 -1
- package/dist/components/Content/Models/components/ClassicLayout.vue.script.js.map +1 -1
- package/dist/components/Content/Models/components/ModernLayout.vue.d.ts.map +1 -1
- package/dist/components/Content/Models/components/ModernLayout.vue.script.js +1 -1
- package/dist/components/Content/Models/components/ModernLayout.vue.script.js.map +1 -1
- package/dist/components/Content/Operations/TraversedEntry.vue.script.js +1 -1
- package/dist/components/Content/Operations/TraversedEntry.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/LinkButton.vue.js +1 -1
- package/dist/components/Content/Schema/LinkButton.vue.js.map +1 -1
- package/dist/components/Content/Schema/RenderString.vue.script.js +1 -1
- package/dist/components/Content/Schema/RenderString.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/Schema.vue.d.ts.map +1 -1
- package/dist/components/Content/Schema/Schema.vue.js +1 -1
- package/dist/components/Content/Schema/Schema.vue.js.map +1 -1
- package/dist/components/Content/Schema/Schema.vue.script.js +5 -13
- package/dist/components/Content/Schema/Schema.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaComposition.vue.d.ts.map +1 -1
- package/dist/components/Content/Schema/SchemaComposition.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaComposition.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaEnumPropertyItem.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaEnums.vue.d.ts.map +1 -1
- package/dist/components/Content/Schema/SchemaEnums.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaEnums.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaEnums.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaHeading.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaHeading.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaHeading.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaObjectExampleCodeBlock.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaObjectExampleCodeBlock.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaObjectProperties.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaObjectProperties.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaProperty.vue.d.ts.map +1 -1
- package/dist/components/Content/Schema/SchemaProperty.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaProperty.vue.js.map +1 -1
- package/dist/components/Content/Schema/SchemaProperty.vue.script.js +4 -3
- package/dist/components/Content/Schema/SchemaProperty.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaPropertyDefault.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyDefault.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyDefault.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaPropertyDetail.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyDetail.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyDetail.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaPropertyExamples.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyExamples.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyExamples.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/SchemaPropertyHeading.vue.d.ts.map +1 -1
- package/dist/components/Content/Schema/SchemaPropertyHeading.vue.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyHeading.vue.script.js +1 -1
- package/dist/components/Content/Schema/SchemaPropertyHeading.vue.script.js.map +1 -1
- package/dist/components/Content/Schema/helpers/dynamic-scope.js.map +1 -1
- package/dist/components/Content/Schema/helpers/format-example.js.map +1 -1
- package/dist/components/Content/Schema/helpers/format-value.js.map +1 -1
- package/dist/components/Content/Schema/helpers/get-compositions-to-render.js.map +1 -1
- package/dist/components/Content/Schema/helpers/get-enum-values.js.map +1 -1
- package/dist/components/Content/Schema/helpers/get-property-description.js.map +1 -1
- package/dist/components/Content/Schema/helpers/get-ref-name.js.map +1 -1
- package/dist/components/Content/Schema/helpers/get-schema-type.js.map +1 -1
- package/dist/components/Content/Schema/helpers/has-complex-array-items.js.map +1 -1
- package/dist/components/Content/Schema/helpers/is-empty-schema-object.js.map +1 -1
- package/dist/components/Content/Schema/helpers/is-type-object.js.map +1 -1
- package/dist/components/Content/Schema/helpers/merge-all-of-schemas.js +3 -3
- package/dist/components/Content/Schema/helpers/merge-all-of-schemas.js.map +1 -1
- package/dist/components/Content/Schema/helpers/optimize-value-for-display.js.map +1 -1
- package/dist/components/Content/Schema/helpers/partition-all-of-compositions.js.map +1 -1
- package/dist/components/Content/Schema/helpers/schema-composition.js.map +1 -1
- package/dist/components/Content/Schema/helpers/schema-cycle.js.map +1 -1
- package/dist/components/Content/Schema/helpers/schema-name.js.map +1 -1
- package/dist/components/Content/Schema/helpers/should-display-description.js.map +1 -1
- package/dist/components/Content/Schema/helpers/should-display-heading.js.map +1 -1
- package/dist/components/Content/Schema/helpers/should-render-array-item-composition.js.map +1 -1
- package/dist/components/Content/Schema/helpers/sort-property-names.js.map +1 -1
- package/dist/components/Content/Tags/Tag.vue.script.js +1 -1
- package/dist/components/Content/Tags/Tag.vue.script.js.map +1 -1
- package/dist/components/Content/Tags/components/ClassicLayout.vue.d.ts.map +1 -1
- package/dist/components/Content/Tags/components/ClassicLayout.vue.js +1 -1
- package/dist/components/Content/Tags/components/ClassicLayout.vue.script.js +1 -1
- package/dist/components/Content/Tags/components/ClassicLayout.vue.script.js.map +1 -1
- package/dist/components/Content/Tags/components/ModernLayout.vue.d.ts.map +1 -1
- package/dist/components/Content/Tags/components/ModernLayout.vue.js +1 -1
- package/dist/components/Content/Tags/components/ModernLayout.vue.script.js +1 -1
- package/dist/components/Content/Tags/components/ModernLayout.vue.script.js.map +1 -1
- package/dist/components/Content/Tags/components/TagSection.vue.d.ts.map +1 -1
- package/dist/components/Content/Tags/components/TagSection.vue.script.js +1 -1
- package/dist/components/Content/Tags/components/TagSection.vue.script.js.map +1 -1
- package/dist/components/GettingStarted.vue.d.ts.map +1 -1
- package/dist/components/GettingStarted.vue.js +1 -1
- package/dist/components/GettingStarted.vue.js.map +1 -1
- package/dist/components/GettingStarted.vue.script.js +4 -3
- package/dist/components/GettingStarted.vue.script.js.map +1 -1
- package/dist/components/HttpMethod/HttpMethod.vue.script.js +1 -1
- package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
- package/dist/components/IntersectionObserver.vue.script.js +10 -7
- package/dist/components/IntersectionObserver.vue.script.js.map +1 -1
- package/dist/components/Lazy/Lazy.vue.script.js +2 -2
- package/dist/components/Lazy/Lazy.vue.script.js.map +1 -1
- package/dist/components/LinkList/LinkList.vue.js +1 -1
- package/dist/components/LinkList/LinkList.vue.script.js +1 -1
- package/dist/components/LinkList/LinkList.vue.script.js.map +1 -1
- package/dist/components/MobileHeader.vue.d.ts.map +1 -1
- package/dist/components/MobileHeader.vue.script.js +4 -4
- package/dist/components/MobileHeader.vue.script.js.map +1 -1
- package/dist/components/OperationPath.vue.d.ts.map +1 -1
- package/dist/components/OperationPath.vue.js +1 -1
- package/dist/components/OperationPath.vue.script.js +1 -1
- package/dist/components/OperationPath.vue.script.js.map +1 -1
- package/dist/components/OperationsList/OperationsList.vue.js +1 -1
- package/dist/components/OperationsList/OperationsList.vue.script.js +1 -1
- package/dist/components/OperationsList/OperationsList.vue.script.js.map +1 -1
- package/dist/components/OperationsList/OperationsListItem.vue.js +1 -1
- package/dist/components/OperationsList/OperationsListItem.vue.script.js +1 -1
- package/dist/components/OperationsList/OperationsListItem.vue.script.js.map +1 -1
- package/dist/components/RenderPlugins/RenderPluginView.vue.script.js +1 -1
- package/dist/components/RenderPlugins/RenderPluginView.vue.script.js.map +1 -1
- package/dist/components/RenderPlugins/RenderPlugins.vue.script.js +1 -1
- package/dist/components/RenderPlugins/RenderPlugins.vue.script.js.map +1 -1
- package/dist/components/ScreenReader.vue.js +1 -1
- package/dist/components/ScreenReader.vue.script.js +2 -2
- package/dist/components/ScreenReader.vue.script.js.map +1 -1
- package/dist/components/Section/CompactSection.vue.d.ts.map +1 -1
- package/dist/components/Section/CompactSection.vue.js +1 -1
- package/dist/components/Section/CompactSection.vue.script.js +1 -1
- package/dist/components/Section/CompactSection.vue.script.js.map +1 -1
- package/dist/components/Section/Section.vue.js +1 -1
- package/dist/components/Section/Section.vue.script.js +1 -1
- package/dist/components/Section/Section.vue.script.js.map +1 -1
- package/dist/components/Section/SectionAccordion.vue.d.ts.map +1 -1
- package/dist/components/Section/SectionAccordion.vue.js +1 -1
- package/dist/components/Section/SectionAccordion.vue.script.js +1 -1
- package/dist/components/Section/SectionAccordion.vue.script.js.map +1 -1
- package/dist/components/Section/SectionColumn.vue.js +1 -1
- package/dist/components/Section/SectionColumn.vue.js.map +1 -1
- package/dist/components/Section/SectionColumns.vue.js +1 -1
- package/dist/components/Section/SectionColumns.vue.js.map +1 -1
- package/dist/components/Section/SectionContainer.vue.js +1 -1
- package/dist/components/Section/SectionContainer.vue.script.js +2 -2
- package/dist/components/Section/SectionContainer.vue.script.js.map +1 -1
- package/dist/components/Section/SectionContainerAccordion.vue.d.ts.map +1 -1
- package/dist/components/Section/SectionContainerAccordion.vue.js +1 -1
- package/dist/components/Section/SectionContainerAccordion.vue.script.js +1 -1
- package/dist/components/Section/SectionContainerAccordion.vue.script.js.map +1 -1
- package/dist/components/Section/SectionContent.vue.js +1 -1
- package/dist/components/Section/SectionContent.vue.js.map +1 -1
- package/dist/components/Section/SectionHeader.vue.js +1 -1
- package/dist/components/Section/SectionHeader.vue.script.js +2 -2
- package/dist/components/Section/SectionHeader.vue.script.js.map +1 -1
- package/dist/components/Section/SectionHeaderTag.vue.js +1 -1
- package/dist/components/Section/SectionHeaderTag.vue.script.js +1 -1
- package/dist/components/Section/SectionHeaderTag.vue.script.js.map +1 -1
- package/dist/components/SectionFlare/SectionFlare.vue.js +1 -1
- package/dist/components/SectionFlare/SectionFlare.vue.js.map +1 -1
- package/dist/components/ShowMoreButton.vue.js +1 -1
- package/dist/components/ShowMoreButton.vue.script.js +1 -1
- package/dist/components/ShowMoreButton.vue.script.js.map +1 -1
- package/dist/features/Operation/Operation.vue.script.js +1 -1
- package/dist/features/Operation/Operation.vue.script.js.map +1 -1
- package/dist/features/Operation/components/ContentTypeSelect.vue.d.ts.map +1 -1
- package/dist/features/Operation/components/ContentTypeSelect.vue.script.js +2 -2
- package/dist/features/Operation/components/ContentTypeSelect.vue.script.js.map +1 -1
- package/dist/features/Operation/components/Header.vue.script.js +1 -1
- package/dist/features/Operation/components/Header.vue.script.js.map +1 -1
- package/dist/features/Operation/components/Headers.vue.d.ts.map +1 -1
- package/dist/features/Operation/components/Headers.vue.js +1 -1
- package/dist/features/Operation/components/Headers.vue.script.js +1 -1
- package/dist/features/Operation/components/Headers.vue.script.js.map +1 -1
- package/dist/features/Operation/components/OperationParameters.vue.script.js +2 -2
- package/dist/features/Operation/components/OperationParameters.vue.script.js.map +1 -1
- package/dist/features/Operation/components/OperationResponses.vue.script.js +1 -1
- package/dist/features/Operation/components/OperationResponses.vue.script.js.map +1 -1
- package/dist/features/Operation/components/OperationScopes.vue.script.js +1 -1
- package/dist/features/Operation/components/OperationScopes.vue.script.js.map +1 -1
- package/dist/features/Operation/components/ParameterList.vue.script.js +1 -1
- package/dist/features/Operation/components/ParameterList.vue.script.js.map +1 -1
- package/dist/features/Operation/components/ParameterListItem.vue.js +1 -1
- package/dist/features/Operation/components/ParameterListItem.vue.script.js +1 -1
- package/dist/features/Operation/components/ParameterListItem.vue.script.js.map +1 -1
- package/dist/features/Operation/components/RequestBody.vue.d.ts.map +1 -1
- package/dist/features/Operation/components/RequestBody.vue.js +1 -1
- package/dist/features/Operation/components/RequestBody.vue.script.js +2 -2
- package/dist/features/Operation/components/RequestBody.vue.script.js.map +1 -1
- package/dist/features/Operation/components/SecurityRequirementBadge.vue.script.js +1 -1
- package/dist/features/Operation/components/SecurityRequirementBadge.vue.script.js.map +1 -1
- package/dist/features/Operation/components/SecurityRequirementBadgeScheme.vue.script.js +1 -1
- package/dist/features/Operation/components/SecurityRequirementBadgeScheme.vue.script.js.map +1 -1
- package/dist/features/Operation/components/callbacks/Callback.vue.js +1 -1
- package/dist/features/Operation/components/callbacks/Callback.vue.script.js +1 -1
- package/dist/features/Operation/components/callbacks/Callback.vue.script.js.map +1 -1
- package/dist/features/Operation/components/callbacks/Callbacks.vue.script.js +1 -1
- package/dist/features/Operation/components/callbacks/Callbacks.vue.script.js.map +1 -1
- package/dist/features/Operation/components/helpers/get-parameter-examples.js.map +1 -1
- package/dist/features/Operation/helpers/filter-selected-security.js.map +1 -1
- package/dist/features/Operation/helpers/flatten-deep-object-query-parameter.js.map +1 -1
- package/dist/features/Operation/helpers/get-required-security.js.map +1 -1
- package/dist/features/Operation/helpers/operation-stability.js.map +1 -1
- package/dist/features/Operation/helpers/should-ignore-entity.js.map +1 -1
- package/dist/features/Operation/layouts/ClassicLayout.vue.d.ts.map +1 -1
- package/dist/features/Operation/layouts/ClassicLayout.vue.js +1 -1
- package/dist/features/Operation/layouts/ClassicLayout.vue.script.js +1 -1
- package/dist/features/Operation/layouts/ClassicLayout.vue.script.js.map +1 -1
- package/dist/features/Operation/layouts/ModernLayout.vue.d.ts.map +1 -1
- package/dist/features/Operation/layouts/ModernLayout.vue.js +1 -1
- package/dist/features/Operation/layouts/ModernLayout.vue.script.js +1 -1
- package/dist/features/Operation/layouts/ModernLayout.vue.script.js.map +1 -1
- package/dist/features/Operation/request-body-composition-index.js.map +1 -1
- package/dist/features/Search/components/SearchButton.vue.d.ts.map +1 -1
- package/dist/features/Search/components/SearchButton.vue.script.js +1 -1
- package/dist/features/Search/components/SearchButton.vue.script.js.map +1 -1
- package/dist/features/Search/components/SearchModal.vue.d.ts.map +1 -1
- package/dist/features/Search/components/SearchModal.vue.js +1 -1
- package/dist/features/Search/components/SearchModal.vue.script.js +1 -1
- package/dist/features/Search/components/SearchModal.vue.script.js.map +1 -1
- package/dist/features/Search/components/SearchResult.vue.d.ts.map +1 -1
- package/dist/features/Search/components/SearchResult.vue.script.js +1 -1
- package/dist/features/Search/components/SearchResult.vue.script.js.map +1 -1
- package/dist/features/Search/helpers/create-fuse-instance.js.map +1 -1
- package/dist/features/Search/helpers/create-search-index.js.map +1 -1
- package/dist/features/Search/hooks/useSearchIndex.js.map +1 -1
- package/dist/features/ask-agent-button/AskAgentButton.vue.js +1 -1
- package/dist/features/ask-agent-button/AskAgentButton.vue.script.js +1 -1
- package/dist/features/ask-agent-button/AskAgentButton.vue.script.js.map +1 -1
- package/dist/features/developer-tools/DeveloperTools.vue.script.js +2 -2
- package/dist/features/developer-tools/DeveloperTools.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarBlurb.vue.js +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarBlurb.vue.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayout.vue.script.js +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayout.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.d.ts.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.script.js +3 -3
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigLayoutOptions.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigTheme.vue.script.js +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarConfigTheme.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarPopover.vue.script.js +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarPopover.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.d.ts.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.script.js +4 -3
- package/dist/features/developer-tools/components/ApiReferenceToolbarRegisterButton.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.d.ts.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.script.js +2 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareRegister.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.d.ts.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.script.js +4 -3
- package/dist/features/developer-tools/components/ApiReferenceToolbarShareTemporary.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.d.ts.map +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.script.js +1 -1
- package/dist/features/developer-tools/components/ApiReferenceToolbarTitle.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/DeployApiReference.vue.script.js +1 -1
- package/dist/features/developer-tools/components/DeployApiReference.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ModifyConfiguration.vue.script.js +2 -2
- package/dist/features/developer-tools/components/ModifyConfiguration.vue.script.js.map +1 -1
- package/dist/features/developer-tools/components/ShareApiReference.vue.script.js +1 -1
- package/dist/features/developer-tools/components/ShareApiReference.vue.script.js.map +1 -1
- package/dist/features/example-responses/ExampleResponse.vue.js +1 -1
- package/dist/features/example-responses/ExampleResponse.vue.script.js +1 -1
- package/dist/features/example-responses/ExampleResponse.vue.script.js.map +1 -1
- package/dist/features/example-responses/ExampleResponseTab.vue.js +1 -1
- package/dist/features/example-responses/ExampleResponseTab.vue.script.js +1 -1
- package/dist/features/example-responses/ExampleResponseTab.vue.script.js.map +1 -1
- package/dist/features/example-responses/ExampleResponseTabList.vue.d.ts.map +1 -1
- package/dist/features/example-responses/ExampleResponseTabList.vue.js +1 -1
- package/dist/features/example-responses/ExampleResponseTabList.vue.script.js +1 -1
- package/dist/features/example-responses/ExampleResponseTabList.vue.script.js.map +1 -1
- package/dist/features/example-responses/ExampleResponses.vue.d.ts.map +1 -1
- package/dist/features/example-responses/ExampleResponses.vue.js +1 -1
- package/dist/features/example-responses/ExampleResponses.vue.script.js +1 -1
- package/dist/features/example-responses/ExampleResponses.vue.script.js.map +1 -1
- package/dist/features/example-responses/ExampleSchema.vue.script.js +1 -1
- package/dist/features/example-responses/ExampleSchema.vue.script.js.map +1 -1
- package/dist/features/example-responses/helpers/has-response-content.js.map +1 -1
- package/dist/features/example-responses/helpers/normalize-mime-type-object.js.map +1 -1
- package/dist/features/example-responses/helpers/normalize-mime-type.js.map +1 -1
- package/dist/features/external-docs/ExternalDocs.vue.d.ts.map +1 -1
- package/dist/features/external-docs/ExternalDocs.vue.js.map +1 -1
- package/dist/features/external-docs/ExternalDocs.vue.script.js +25 -13
- package/dist/features/external-docs/ExternalDocs.vue.script.js.map +1 -1
- package/dist/features/info-object/Contact.vue.d.ts.map +1 -1
- package/dist/features/info-object/Contact.vue.js.map +1 -1
- package/dist/features/info-object/Contact.vue.script.js +10 -4
- package/dist/features/info-object/Contact.vue.script.js.map +1 -1
- package/dist/features/info-object/InfoLink.vue.d.ts.map +1 -1
- package/dist/features/info-object/InfoLink.vue.js.map +1 -1
- package/dist/features/info-object/InfoLink.vue.script.js +17 -5
- package/dist/features/info-object/InfoLink.vue.script.js.map +1 -1
- package/dist/features/info-object/License.vue.d.ts.map +1 -1
- package/dist/features/info-object/License.vue.js.map +1 -1
- package/dist/features/info-object/License.vue.script.js +11 -5
- package/dist/features/info-object/License.vue.script.js.map +1 -1
- package/dist/features/info-object/TermsOfService.vue.d.ts.map +1 -1
- package/dist/features/info-object/TermsOfService.vue.js.map +1 -1
- package/dist/features/info-object/TermsOfService.vue.script.js +10 -4
- package/dist/features/info-object/TermsOfService.vue.script.js.map +1 -1
- package/dist/features/localization/locales/ar.js.map +1 -1
- package/dist/features/localization/locales/de.js.map +1 -1
- package/dist/features/localization/locales/en.js.map +1 -1
- package/dist/features/localization/locales/es.js.map +1 -1
- package/dist/features/localization/locales/fr.js.map +1 -1
- package/dist/features/localization/locales/pt.d.ts +229 -0
- package/dist/features/localization/locales/pt.d.ts.map +1 -0
- package/dist/features/localization/locales/pt.js +227 -0
- package/dist/features/localization/locales/pt.js.map +1 -0
- package/dist/features/localization/locales/ru.js.map +1 -1
- package/dist/features/localization/locales/zh-cn.js.map +1 -1
- package/dist/features/localization/translations.d.ts +228 -0
- package/dist/features/localization/translations.d.ts.map +1 -1
- package/dist/features/localization/translations.js +4 -2
- package/dist/features/localization/translations.js.map +1 -1
- package/dist/features/localization/use-localization.js.map +1 -1
- package/dist/features/multiple-documents/DocumentSelector.vue.d.ts.map +1 -1
- package/dist/features/multiple-documents/DocumentSelector.vue.script.js +1 -1
- package/dist/features/multiple-documents/DocumentSelector.vue.script.js.map +1 -1
- package/dist/features/specification-extension/SpecificationExtension.vue.script.js +1 -1
- package/dist/features/specification-extension/SpecificationExtension.vue.script.js.map +1 -1
- package/dist/features/specification-extension/helpers.js.map +1 -1
- package/dist/features/test-request-button/TestRequestButton.vue.js +1 -1
- package/dist/features/test-request-button/TestRequestButton.vue.script.js +1 -1
- package/dist/features/test-request-button/TestRequestButton.vue.script.js.map +1 -1
- package/dist/features/x-badges/XBadges.vue.d.ts.map +1 -1
- package/dist/features/x-badges/XBadges.vue.script.js +1 -1
- package/dist/features/x-badges/XBadges.vue.script.js.map +1 -1
- package/dist/helpers/color-mode.js.map +1 -1
- package/dist/helpers/download.js.map +1 -1
- package/dist/helpers/get-async-api-message-payload-schema.js.map +1 -1
- package/dist/helpers/get-async-api-model-schema.js.map +1 -1
- package/dist/helpers/id-routing.d.ts +18 -4
- package/dist/helpers/id-routing.d.ts.map +1 -1
- package/dist/helpers/id-routing.js +67 -20
- package/dist/helpers/id-routing.js.map +1 -1
- package/dist/helpers/is-introduction-entry.js.map +1 -1
- package/dist/helpers/lazy-bus.js.map +1 -1
- package/dist/helpers/load-from-perssistance.js.map +1 -1
- package/dist/helpers/map-config-plugins.js.map +1 -1
- package/dist/helpers/map-config-to-workspace-store.js.map +1 -1
- package/dist/helpers/normalize-configurations.js +1 -1
- package/dist/helpers/normalize-configurations.js.map +1 -1
- package/dist/helpers/openapi.d.ts +6 -1
- package/dist/helpers/openapi.d.ts.map +1 -1
- package/dist/helpers/openapi.js +37 -6
- package/dist/helpers/openapi.js.map +1 -1
- package/dist/helpers/safe-deep-clone.js.map +1 -1
- package/dist/helpers/storage.js +14 -0
- package/dist/helpers/storage.js.map +1 -1
- package/dist/helpers/upload-temp-document.js.map +1 -1
- package/dist/hooks/use-agent.js.map +1 -1
- package/dist/hooks/use-intersection.js.map +1 -1
- package/dist/plugins/hooks/usePluginManager.js.map +1 -1
- package/dist/plugins/persistence-plugin.js +6 -1
- package/dist/plugins/persistence-plugin.js.map +1 -1
- package/dist/plugins/plugin-manager.js +35 -0
- package/dist/plugins/plugin-manager.js.map +1 -1
- package/dist/plugins/posthog/index.js.map +1 -1
- package/dist/standalone/lib/html-api.js.map +1 -1
- package/dist/standalone/lib/load-plugins-from-urls.js.map +1 -1
- package/dist/style.css +1441 -1347
- package/dist/vue-styles.css +989 -911
- package/package.json +27 -27
- package/dist/browser/chunks/AgentScalarChatInterface-C8lX3RCo.js +0 -27
- package/dist/browser/chunks/ScalarTextInput.vue-Xf60Nwf-.js +0 -27
- package/dist/browser/chunks/browser-67K6wmG9.js +0 -129
- package/dist/browser/chunks/modal-B8Opb61-.js +0 -15
- package/dist/browser/chunks/modal-Dcl-Y2Zk.js +0 -99
- package/dist/browser/chunks/runtime-core.esm-bundler-Byrbbu5Q.js +0 -17
- package/dist/browser/chunks/vendor-CBP43oHJ.js +0 -306
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-all-of-schemas.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/merge-all-of-schemas.ts"],"sourcesContent":["import { objectKeys } from '@scalar/helpers/object/object-keys'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\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'\n\n/**\n * Schema keywords whose value should reflect the *last* occurrence when merging\n * `allOf` members. Most keywords keep the first occurrence, but for human-facing\n * annotations a later subschema is expected to override an earlier one — matching\n * OpenAPI/JSON Schema tooling like Swagger UI.\n */\nconst LAST_WINS_KEYS = new Set<string>(['description', 'title'])\n\n/**\n * Merges multiple OpenAPI schema objects into a single schema object.\n * Handles nested allOf compositions and merges properties recursively.\n *\n * @param schemas - Array of OpenAPI schema objects to merge\n * @param rootSchema - Optional root schema to merge with the result\n * @param seenRefs - `$ref` strings already being merged higher in the call stack\n * @returns Merged schema object\n */\nexport const mergeAllOfSchemas = (\n schemas: SchemaObject | undefined,\n rootSchema?: SchemaObject,\n seenRefs: Set<string> = new Set(),\n): SchemaObject => {\n // Handle max depth, empty or invalid input\n if (!schemas?.allOf?.length || !Array.isArray(schemas.allOf)) {\n return rootSchema || ({} as SchemaObject)\n }\n\n // Initialize result object once\n const result = {} as SchemaObject\n\n // Extract base schema properties (everything except allOf)\n const { allOf: _, ...baseSchema } = schemas\n\n // Process allOf schemas first\n for (const _schema of schemas.allOf) {\n if (!_schema || typeof _schema !== 'object') {\n continue\n }\n\n // Resolve ref if present\n const schema = resolve.schema(_schema)\n\n // Handle nested allOf recursively\n if (schema.allOf) {\n const nestedMerged = mergeAllOfSchemas(schema, undefined, seenRefs)\n mergeSchemaIntoResult(result, nestedMerged, false, seenRefs)\n continue\n }\n\n mergeSchemaIntoResult(result, schema, false, seenRefs)\n }\n\n // Apply base schema properties with precedence over allOf properties\n if (Object.keys(baseSchema).length > 0) {\n mergeSchemaIntoResult(result, baseSchema, true, seenRefs)\n }\n\n // Process root schema last if provided\n if (rootSchema && typeof rootSchema === 'object') {\n if (rootSchema.allOf) {\n const nestedMerged = mergeAllOfSchemas(rootSchema, undefined, seenRefs)\n mergeSchemaIntoResult(result, nestedMerged, true, seenRefs)\n } else {\n mergeSchemaIntoResult(result, rootSchema, true, seenRefs)\n }\n }\n\n return result\n}\n\n/**\n * Efficiently merges a source schema into a target result object.\n * Handles all schema merging logic in a single optimized function.\n *\n * @param result - The target schema object to merge into\n * @param schema - The source schema object to merge from\n * @param override - Whether to override existing properties (default: false)\n */\nconst mergeSchemaIntoResult = (\n result: SchemaObject,\n schema: SchemaObject,\n override: boolean = false,\n seenRefs: Set<string> = new Set(),\n): void => {\n // Early return if schema is empty\n const schemaKeys = objectKeys(schema)\n if (schemaKeys.length === 0) {\n return\n }\n\n // Loop through all schema properties and handle them appropriately\n for (const key of schemaKeys) {\n const value = getResolvedRef(schema[key]) as any\n\n if (value === undefined) {\n continue\n }\n\n // Required\n if ((key as string) === 'required') {\n // Merge required fields with deduplication\n if (Array.isArray(value) && value.length > 0) {\n // @ts-expect-error\n if (result.required?.length) {\n // @ts-expect-error\n result.required = [...new Set([...result.required, ...value])]\n } else {\n // @ts-expect-error\n result.required = value.slice()\n }\n }\n }\n // Properties\n else if ((key as string) === 'properties') {\n // Merge properties recursively\n if (value && typeof value === 'object') {\n // @ts-expect-error\n if (!result.properties) {\n // @ts-expect-error\n result.properties = {}\n }\n\n // @ts-expect-error\n mergePropertiesIntoResult(result.properties, value, seenRefs)\n }\n }\n // Items\n else if ((key as string) === 'items') {\n // Handle items (for both arrays and objects with items)\n const items = resolve.schema(value)\n if (items) {\n if (isArraySchema(schema)) {\n // @ts-expect-error\n if (!result.items) {\n // @ts-expect-error\n result.items = {}\n }\n\n // Handle allOf within array items\n if (items.allOf) {\n const mergedItems = mergeAllOfSchemas(items, undefined, seenRefs)\n // @ts-expect-error\n Object.assign(result.items, mergedItems)\n } else {\n // @ts-expect-error\n mergeItemsIntoResult(getResolvedRef(result.items), items, seenRefs)\n }\n }\n // For non-array types with items.allOf, merge into properties\n else if (items.allOf) {\n const mergedItems = mergeAllOfSchemas(items, undefined, seenRefs)\n if ('properties' in mergedItems) {\n if (!('properties' in result)) {\n // @ts-expect-error\n result.properties = {}\n }\n\n 'properties' in result && mergePropertiesIntoResult(result.properties, mergedItems.properties, seenRefs)\n }\n }\n // For non-array types without allOf, still set items if not already set\n else if (!('items' in result)) {\n // @ts-expect-error\n result.items = items\n }\n }\n }\n // Enum\n else if (key === 'enum') {\n if (Array.isArray(value) && value.length > 0) {\n result.enum = [...new Set([...(result.enum || []), ...value])]\n }\n }\n // OneOf/AnyOf\n else if (key === 'oneOf' || key === 'anyOf') {\n // Preserve the composition itself so its variants keep rendering as a\n // selector. Flattening the option properties into the parent would drop\n // the variant structure entirely and silently lose branches that have no\n // top-level `properties` (for example branches that are themselves an\n // `allOf`). The sibling `allOf` members stay on `result` as base\n // properties, which the Schema component renders above the selector.\n if (Array.isArray(value) && value.length > 0 && (override || result[key] === undefined)) {\n result[key] = value\n }\n }\n // Skip allOf as it's handled at a higher level\n else if (key === 'allOf') {\n continue\n }\n // For all other properties, preserve the first occurrence or override if specified.\n // Annotation keywords (see LAST_WINS_KEYS) always take the latest value so a later\n // allOf member can override an earlier one.\n else {\n if (override || LAST_WINS_KEYS.has(key as string) || result[key] === undefined) {\n result[key] = value\n }\n }\n }\n}\n\n/**\n * Efficiently merges properties into a result object without creating new objects.\n */\nconst mergePropertiesIntoResult = (\n result: Extract<SchemaObject, { type: 'object' }>['properties'],\n properties: Extract<SchemaObject, { type: 'object' }>['properties'],\n seenRefs: Set<string> = new Set(),\n): void => {\n const propertyKeys = Object.keys(properties ?? {})\n if (!properties || !result || propertyKeys.length === 0) {\n return\n }\n\n for (const key of propertyKeys) {\n const schema = resolve.schema(properties[key])\n if (!schema) {\n delete result[key]\n continue\n }\n\n if (typeof schema !== 'object') {\n result[key] = schema\n continue\n }\n\n if (!result[key]) {\n // Break self-referential cycles reached through `allOf`. When a brand-new\n // property's `$ref` is already being merged higher in the call stack,\n // keep the raw reference instead of recursing into its `allOf` forever.\n // This mirrors the guard in the \"merge existing property\" branch below and\n // covers schemas that point back at themselves through an `allOf` member\n // (e.g. a node whose `self` property $refs the node, which is an allOf).\n const rawProperty = properties[key]\n const newSchemaRef = (rawProperty as { $ref?: string })?.$ref\n if (rawProperty && typeof newSchemaRef === 'string' && seenRefs.has(newSchemaRef)) {\n result[key] = rawProperty\n continue\n }\n const nextNewSeenRefs = typeof newSchemaRef === 'string' ? new Set(seenRefs).add(newSchemaRef) : seenRefs\n\n // Handle new property with allOf\n if (schema.allOf) {\n result[key] = mergeAllOfSchemas(schema, undefined, nextNewSeenRefs)\n } else if (isArraySchema(schema) && resolve.schema(schema.items)?.allOf) {\n result[key] = {\n ...schema,\n items: mergeAllOfSchemas(resolve.schema(schema.items), undefined, seenRefs),\n }\n } else if (properties[key]) {\n result[key] = properties[key]\n }\n continue\n }\n\n // Merge existing property\n const existing = resolve.schema(result[key])\n\n // Break self-referential cycles: when this property's `$ref` is already\n // being merged higher in the call stack, keep the partially merged existing\n // schema instead of recursing into it again. This mirrors the guard in\n // `mergeItems` and covers schemas that point back at themselves through a\n // plain object property (e.g. a tree node whose `parent` $refs the node).\n const schemaRef = (schema as { $ref?: string }).$ref\n if (typeof schemaRef === 'string' && seenRefs.has(schemaRef)) {\n result[key] = existing\n continue\n }\n const nextSeenRefs = typeof schemaRef === 'string' ? new Set(seenRefs).add(schemaRef) : seenRefs\n\n if (schema.allOf) {\n result[key] = mergeAllOfSchemas({ allOf: [existing, ...schema.allOf] } as SchemaObject, undefined, nextSeenRefs)\n } else if (isArraySchema(schema) && isArraySchema(existing) && schema.items) {\n const existingItems = resolve.schema(existing.items)\n result[key] = {\n ...existing,\n type: 'array',\n items: existingItems\n ? mergeItems(existingItems, resolve.schema(schema.items), nextSeenRefs)\n : resolve.schema(schema.items),\n }\n } else {\n // Create merged object with properties handled separately\n if ('properties' in existing && 'properties' in schema) {\n const merged = { ...existing, ...schema }\n merged.properties = { ...existing.properties }\n mergePropertiesIntoResult(merged.properties, schema.properties, nextSeenRefs)\n result[key] = merged\n }\n // Simple merge without property recursion\n else {\n result[key] = { ...schema, ...existing }\n }\n }\n }\n}\n\n/**\n * Efficiently merges array items into a result object.\n */\nconst mergeItemsIntoResult = (result: SchemaObject, items: SchemaObject, seenRefs: Set<string> = new Set()): void => {\n // Handle allOf in items\n if (items.allOf || result.allOf) {\n // Build array without spreads for better performance\n const allOfSchemas: SchemaObject[] = []\n\n if (result.allOf) {\n for (const schema of result.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(result)\n }\n\n if (items.allOf) {\n for (const schema of items.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(items)\n }\n\n const merged = mergeAllOfSchemas({ allOf: allOfSchemas } as SchemaObject, undefined, seenRefs)\n Object.assign(result, merged)\n return\n }\n\n // Regular merge\n Object.assign(result, items)\n\n // Merge properties if both have them\n if ('properties' in result && 'properties' in items) {\n mergePropertiesIntoResult(result.properties, items.properties, seenRefs)\n }\n}\n\n/**\n * Helper function for merging items that returns a new object.\n */\nconst mergeItems = (\n existing: SchemaObject,\n incoming: SchemaObject,\n seenRefs: Set<string> = new Set(),\n): SchemaObject => {\n const incomingRef = (incoming as { $ref?: string }).$ref\n\n if (typeof incomingRef === 'string') {\n if (seenRefs.has(incomingRef)) {\n return existing\n }\n return mergeItemsInner(existing, incoming, new Set(seenRefs).add(incomingRef))\n }\n\n return mergeItemsInner(existing, incoming, seenRefs)\n}\n\nconst mergeItemsInner = (\n existing: SchemaObject,\n incoming: SchemaObject,\n seenRefs: Set<string> = new Set(),\n): SchemaObject => {\n // Handle allOf in either schema\n if (existing.allOf || incoming.allOf) {\n // Build array without spreads for better performance\n const allOfSchemas: SchemaObject[] = []\n\n if (existing.allOf) {\n for (const schema of existing.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(existing)\n }\n\n if (incoming.allOf) {\n for (const schema of incoming.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(incoming)\n }\n\n return mergeAllOfSchemas({ allOf: allOfSchemas } as SchemaObject, undefined, seenRefs)\n }\n\n const merged = { ...existing, ...incoming }\n\n // Recursively merge properties if both have properties\n if ('properties' in existing && 'properties' in incoming) {\n // @ts-expect-error\n merged.properties = { ...existing.properties }\n // @ts-expect-error\n mergePropertiesIntoResult(merged.properties, incoming.properties, seenRefs)\n }\n\n return merged as SchemaObject\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merge-all-of-schemas.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/merge-all-of-schemas.ts"],"sourcesContent":["import { objectKeys } from '@scalar/helpers/object/object-keys'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\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'\n\n/**\n * Schema keywords whose value should reflect the *last* occurrence when merging\n * `allOf` members. Most keywords keep the first occurrence, but for human-facing\n * annotations a later subschema is expected to override an earlier one — matching\n * OpenAPI/JSON Schema tooling like Swagger UI.\n */\nconst LAST_WINS_KEYS = new Set<string>(['description', 'title'])\n\n/**\n * Merges multiple OpenAPI schema objects into a single schema object.\n * Handles nested allOf compositions and merges properties recursively.\n *\n * @param schemas - Array of OpenAPI schema objects to merge\n * @param rootSchema - Optional root schema to merge with the result\n * @param seenRefs - `$ref` strings already being merged higher in the call stack\n * @returns Merged schema object\n */\nexport const mergeAllOfSchemas = (\n schemas: SchemaObject | undefined,\n rootSchema?: SchemaObject,\n seenRefs: Set<string> = new Set(),\n): SchemaObject => {\n // Handle max depth, empty or invalid input\n if (!schemas?.allOf?.length || !Array.isArray(schemas.allOf)) {\n return rootSchema || ({} as SchemaObject)\n }\n\n // Initialize result object once\n const result = {} as SchemaObject\n\n // Extract base schema properties (everything except allOf)\n const { allOf: _, ...baseSchema } = schemas\n\n // Process allOf schemas first\n for (const _schema of schemas.allOf) {\n if (!_schema || typeof _schema !== 'object') {\n continue\n }\n\n // Resolve ref if present\n const schema = resolve.schema(_schema)\n\n // Handle nested allOf recursively\n if (schema.allOf) {\n const nestedMerged = mergeAllOfSchemas(schema, undefined, seenRefs)\n mergeSchemaIntoResult(result, nestedMerged, false, seenRefs)\n continue\n }\n\n mergeSchemaIntoResult(result, schema, false, seenRefs)\n }\n\n // Apply base schema properties with precedence over allOf properties\n if (Object.keys(baseSchema).length > 0) {\n mergeSchemaIntoResult(result, baseSchema, true, seenRefs)\n }\n\n // Process root schema last if provided\n if (rootSchema && typeof rootSchema === 'object') {\n if (rootSchema.allOf) {\n const nestedMerged = mergeAllOfSchemas(rootSchema, undefined, seenRefs)\n mergeSchemaIntoResult(result, nestedMerged, true, seenRefs)\n } else {\n mergeSchemaIntoResult(result, rootSchema, true, seenRefs)\n }\n }\n\n return result\n}\n\n/**\n * Efficiently merges a source schema into a target result object.\n * Handles all schema merging logic in a single optimized function.\n *\n * @param result - The target schema object to merge into\n * @param schema - The source schema object to merge from\n * @param override - Whether to override existing properties (default: false)\n */\nconst mergeSchemaIntoResult = (\n result: SchemaObject,\n schema: SchemaObject,\n override: boolean = false,\n seenRefs: Set<string> = new Set(),\n): void => {\n // Early return if schema is empty\n const schemaKeys = objectKeys(schema)\n if (schemaKeys.length === 0) {\n return\n }\n\n // Loop through all schema properties and handle them appropriately\n for (const key of schemaKeys) {\n const value = getResolvedRef(schema[key]) as any\n\n if (value === undefined) {\n continue\n }\n\n // Required\n if ((key as string) === 'required') {\n // Merge required fields with deduplication\n if (Array.isArray(value) && value.length > 0) {\n // @ts-expect-error\n if (result.required?.length) {\n // @ts-expect-error\n result.required = [...new Set([...result.required, ...value])]\n } else {\n // @ts-expect-error\n result.required = value.slice()\n }\n }\n }\n // Properties\n else if ((key as string) === 'properties') {\n // Merge properties recursively\n if (value && typeof value === 'object') {\n // @ts-expect-error\n if (!result.properties) {\n // @ts-expect-error\n result.properties = {}\n }\n\n // @ts-expect-error\n mergePropertiesIntoResult(result.properties, value, seenRefs)\n }\n }\n // Items\n else if ((key as string) === 'items') {\n // Handle items (for both arrays and objects with items)\n const items = resolve.schema(value)\n if (items) {\n if (isArraySchema(schema)) {\n // @ts-expect-error\n if (!result.items) {\n // @ts-expect-error\n result.items = {}\n }\n\n // Handle allOf within array items\n if (items.allOf) {\n const mergedItems = mergeAllOfSchemas(items, undefined, seenRefs)\n // @ts-expect-error\n Object.assign(result.items, mergedItems)\n } else {\n // @ts-expect-error\n mergeItemsIntoResult(getResolvedRef(result.items), items, seenRefs)\n }\n }\n // For non-array types with items.allOf, merge into properties\n else if (items.allOf) {\n const mergedItems = mergeAllOfSchemas(items, undefined, seenRefs)\n if ('properties' in mergedItems) {\n if (!('properties' in result)) {\n // @ts-expect-error\n result.properties = {}\n }\n\n 'properties' in result && mergePropertiesIntoResult(result.properties, mergedItems.properties, seenRefs)\n }\n }\n // For non-array types without allOf, still set items if not already set\n else if (!('items' in result)) {\n // @ts-expect-error\n result.items = items\n }\n }\n }\n // Enum\n else if (key === 'enum') {\n if (Array.isArray(value) && value.length > 0) {\n result.enum = [...new Set([...(result.enum || []), ...value])]\n }\n }\n // OneOf/AnyOf\n else if (key === 'oneOf' || key === 'anyOf') {\n // Preserve the composition itself so its variants keep rendering as a\n // selector. Flattening the option properties into the parent would drop\n // the variant structure entirely and silently lose branches that have no\n // top-level `properties` (for example branches that are themselves an\n // `allOf`). The sibling `allOf` members stay on `result` as base\n // properties, which the Schema component renders above the selector.\n if (Array.isArray(value) && value.length > 0 && (override || result[key] === undefined)) {\n result[key] = value\n }\n }\n // Skip allOf as it's handled at a higher level\n else if (key === 'allOf') {\n continue\n }\n // For all other properties, preserve the first occurrence or override if specified.\n // Annotation keywords (see LAST_WINS_KEYS) always take the latest value so a later\n // allOf member can override an earlier one.\n else {\n if (override || LAST_WINS_KEYS.has(key as string) || result[key] === undefined) {\n result[key] = value\n }\n }\n }\n}\n\n/**\n * Efficiently merges properties into a result object without creating new objects.\n */\nconst mergePropertiesIntoResult = (\n result: Extract<SchemaObject, { type: 'object' }>['properties'],\n properties: Extract<SchemaObject, { type: 'object' }>['properties'],\n seenRefs: Set<string> = new Set(),\n): void => {\n const propertyKeys = Object.keys(properties ?? {})\n if (!properties || !result || propertyKeys.length === 0) {\n return\n }\n\n for (const key of propertyKeys) {\n const schema = resolve.schema(properties[key])\n if (!schema) {\n delete result[key]\n continue\n }\n\n if (typeof schema !== 'object') {\n result[key] = schema\n continue\n }\n\n if (!result[key]) {\n // Break self-referential cycles reached through `allOf`. When a brand-new\n // property's `$ref` is already being merged higher in the call stack,\n // keep the raw reference instead of recursing into its `allOf` forever.\n // This mirrors the guard in the \"merge existing property\" branch below and\n // covers schemas that point back at themselves through an `allOf` member\n // (e.g. a node whose `self` property $refs the node, which is an allOf).\n const rawProperty = properties[key]\n const newSchemaRef = (rawProperty as { $ref?: string })?.$ref\n if (rawProperty && typeof newSchemaRef === 'string' && seenRefs.has(newSchemaRef)) {\n result[key] = rawProperty\n continue\n }\n const nextNewSeenRefs = typeof newSchemaRef === 'string' ? new Set(seenRefs).add(newSchemaRef) : seenRefs\n\n // Handle new property with allOf\n if (schema.allOf) {\n result[key] = mergeAllOfSchemas(schema, undefined, nextNewSeenRefs)\n } else if (isArraySchema(schema) && resolve.schema(schema.items)?.allOf) {\n result[key] = {\n ...schema,\n items: mergeAllOfSchemas(resolve.schema(schema.items), undefined, seenRefs),\n }\n } else if (properties[key]) {\n result[key] = properties[key]\n }\n continue\n }\n\n // Merge existing property\n const existing = resolve.schema(result[key])\n\n // Break self-referential cycles: when this property's `$ref` is already\n // being merged higher in the call stack, keep the partially merged existing\n // schema instead of recursing into it again. This mirrors the guard in\n // `mergeItems` and covers schemas that point back at themselves through a\n // plain object property (e.g. a tree node whose `parent` $refs the node).\n const schemaRef = (schema as { $ref?: string }).$ref\n if (typeof schemaRef === 'string' && seenRefs.has(schemaRef)) {\n result[key] = existing\n continue\n }\n const nextSeenRefs = typeof schemaRef === 'string' ? new Set(seenRefs).add(schemaRef) : seenRefs\n\n if (schema.allOf) {\n result[key] = mergeAllOfSchemas({ allOf: [existing, ...schema.allOf] } as SchemaObject, undefined, nextSeenRefs)\n } else if (isArraySchema(schema) && isArraySchema(existing) && schema.items) {\n const existingItems = resolve.schema(existing.items)\n result[key] = {\n ...existing,\n type: 'array',\n items: existingItems\n ? mergeItems(existingItems, resolve.schema(schema.items), nextSeenRefs)\n : resolve.schema(schema.items),\n }\n } else {\n // Create merged object with properties handled separately\n if ('properties' in existing && 'properties' in schema) {\n const merged = { ...existing, ...schema }\n merged.properties = { ...existing.properties }\n mergePropertiesIntoResult(merged.properties, schema.properties, nextSeenRefs)\n result[key] = merged\n }\n // Simple merge without property recursion\n else {\n result[key] = { ...schema, ...existing }\n }\n }\n }\n}\n\n/**\n * Efficiently merges array items into a result object.\n */\nconst mergeItemsIntoResult = (result: SchemaObject, items: SchemaObject, seenRefs: Set<string> = new Set()): void => {\n // Handle allOf in items\n if (items.allOf || result.allOf) {\n // Build array without spreads for better performance\n const allOfSchemas: SchemaObject[] = []\n\n if (result.allOf) {\n for (const schema of result.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(result)\n }\n\n if (items.allOf) {\n for (const schema of items.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(items)\n }\n\n const merged = mergeAllOfSchemas({ allOf: allOfSchemas } as SchemaObject, undefined, seenRefs)\n Object.assign(result, merged)\n return\n }\n\n // Regular merge\n Object.assign(result, items)\n\n // Merge properties if both have them\n if ('properties' in result && 'properties' in items) {\n mergePropertiesIntoResult(result.properties, items.properties, seenRefs)\n }\n}\n\n/**\n * Helper function for merging items that returns a new object.\n */\nconst mergeItems = (\n existing: SchemaObject,\n incoming: SchemaObject,\n seenRefs: Set<string> = new Set(),\n): SchemaObject => {\n const incomingRef = (incoming as { $ref?: string }).$ref\n\n if (typeof incomingRef === 'string') {\n if (seenRefs.has(incomingRef)) {\n return existing\n }\n return mergeItemsInner(existing, incoming, new Set(seenRefs).add(incomingRef))\n }\n\n return mergeItemsInner(existing, incoming, seenRefs)\n}\n\nconst mergeItemsInner = (\n existing: SchemaObject,\n incoming: SchemaObject,\n seenRefs: Set<string> = new Set(),\n): SchemaObject => {\n // Handle allOf in either schema\n if (existing.allOf || incoming.allOf) {\n // Build array without spreads for better performance\n const allOfSchemas: SchemaObject[] = []\n\n if (existing.allOf) {\n for (const schema of existing.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(existing)\n }\n\n if (incoming.allOf) {\n for (const schema of incoming.allOf) {\n allOfSchemas.push(resolve.schema(schema))\n }\n } else {\n allOfSchemas.push(incoming)\n }\n\n return mergeAllOfSchemas({ allOf: allOfSchemas } as SchemaObject, undefined, seenRefs)\n }\n\n const merged = { ...existing, ...incoming }\n\n // Recursively merge properties if both have properties\n if ('properties' in existing && 'properties' in incoming) {\n // @ts-expect-error\n merged.properties = { ...existing.properties }\n // @ts-expect-error\n mergePropertiesIntoResult(merged.properties, incoming.properties, seenRefs)\n }\n\n return merged as SchemaObject\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAM,iCAAiB,IAAI,IAAY,CAAC,eAAe,OAAO,CAAC;;;;;;;;;;AAW/D,IAAa,qBACX,SACA,YACA,2BAAwB,IAAI,IAAI,MACf;CAEjB,IAAI,CAAC,SAAS,OAAO,UAAU,CAAC,MAAM,QAAQ,QAAQ,KAAK,GACzD,OAAO,cAAe,CAAC;CAIzB,MAAM,SAAS,CAAC;CAGhB,MAAM,EAAE,OAAO,GAAG,GAAG,eAAe;CAGpC,KAAK,MAAM,WAAW,QAAQ,OAAO;EACnC,IAAI,CAAC,WAAW,OAAO,YAAY,UACjC;EAIF,MAAM,SAAS,QAAQ,OAAO,OAAO;EAGrC,IAAI,OAAO,OAAO;GAEhB,sBAAsB,QADD,kBAAkB,QAAQ,KAAA,GAAW,QAC5B,GAAc,OAAO,QAAQ;GAC3D;EACF;EAEA,sBAAsB,QAAQ,QAAQ,OAAO,QAAQ;CACvD;CAGA,IAAI,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,GACnC,sBAAsB,QAAQ,YAAY,MAAM,QAAQ;CAI1D,IAAI,cAAc,OAAO,eAAe,UACtC,IAAI,WAAW,OAEb,sBAAsB,QADD,kBAAkB,YAAY,KAAA,GAAW,QAChC,GAAc,MAAM,QAAQ;MAE1D,sBAAsB,QAAQ,YAAY,MAAM,QAAQ;CAI5D,OAAO;AACT;;;;;;;;;AAUA,IAAM,yBACJ,QACA,QACA,WAAoB,OACpB,2BAAwB,IAAI,IAAI,MACvB;CAET,MAAM,aAAa,WAAW,MAAM;CACpC,IAAI,WAAW,WAAW,GACxB;CAIF,KAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,QAAQ,eAAe,OAAO,IAAI;EAExC,IAAI,UAAU,KAAA,GACZ;EAIF,IAAK,QAAmB;OAElB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GAEzC,IAAI,OAAO,UAAU,QAEnB,OAAO,WAAW,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,OAAO,UAAU,GAAG,KAAK,CAAC,CAAC;QAG7D,OAAO,WAAW,MAAM,MAAM;EAAA,OAK/B,IAAK,QAAmB;OAEvB,SAAS,OAAO,UAAU,UAAU;IAEtC,IAAI,CAAC,OAAO,YAEV,OAAO,aAAa,CAAC;IAIvB,0BAA0B,OAAO,YAAY,OAAO,QAAQ;GAC9D;SAGG,IAAK,QAAmB,SAAS;GAEpC,MAAM,QAAQ,QAAQ,OAAO,KAAK;GAClC,IAAI;QACE,cAAc,MAAM,GAAG;KAEzB,IAAI,CAAC,OAAO,OAEV,OAAO,QAAQ,CAAC;KAIlB,IAAI,MAAM,OAAO;MACf,MAAM,cAAc,kBAAkB,OAAO,KAAA,GAAW,QAAQ;MAEhE,OAAO,OAAO,OAAO,OAAO,WAAW;KACzC,OAEE,qBAAqB,eAAe,OAAO,KAAK,GAAG,OAAO,QAAQ;IAEtE,OAEK,IAAI,MAAM,OAAO;KACpB,MAAM,cAAc,kBAAkB,OAAO,KAAA,GAAW,QAAQ;KAChE,IAAI,gBAAgB,aAAa;MAC/B,IAAI,EAAE,gBAAgB,SAEpB,OAAO,aAAa,CAAC;MAGvB,gBAAgB,UAAU,0BAA0B,OAAO,YAAY,YAAY,YAAY,QAAQ;KACzG;IACF,OAEK,IAAI,EAAE,WAAW,SAEpB,OAAO,QAAQ;GAAA;EAGrB,OAEK,IAAI,QAAQ;OACX,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GACzC,OAAO,OAAO,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAI,OAAO,QAAQ,CAAC,GAAI,GAAG,KAAK,CAAC,CAAC;EAAA,OAI5D,IAAI,QAAQ,WAAW,QAAQ;OAO9B,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,MAAM,YAAY,OAAO,SAAS,KAAA,IAC3E,OAAO,OAAO;EAAA,OAIb,IAAI,QAAQ,SACf;OAMA,IAAI,YAAY,eAAe,IAAI,GAAa,KAAK,OAAO,SAAS,KAAA,GACnE,OAAO,OAAO;CAGpB;AACF;;;;AAKA,IAAM,6BACJ,QACA,YACA,2BAAwB,IAAI,IAAI,MACvB;CACT,MAAM,eAAe,OAAO,KAAK,cAAc,CAAC,CAAC;CACjD,IAAI,CAAC,cAAc,CAAC,UAAU,aAAa,WAAW,GACpD;CAGF,KAAK,MAAM,OAAO,cAAc;EAC9B,MAAM,SAAS,QAAQ,OAAO,WAAW,IAAI;EAC7C,IAAI,CAAC,QAAQ;GACX,OAAO,OAAO;GACd;EACF;EAEA,IAAI,OAAO,WAAW,UAAU;GAC9B,OAAO,OAAO;GACd;EACF;EAEA,IAAI,CAAC,OAAO,MAAM;GAOhB,MAAM,cAAc,WAAW;GAC/B,MAAM,eAAgB,aAAmC;GACzD,IAAI,eAAe,OAAO,iBAAiB,YAAY,SAAS,IAAI,YAAY,GAAG;IACjF,OAAO,OAAO;IACd;GACF;GACA,MAAM,kBAAkB,OAAO,iBAAiB,WAAW,IAAI,IAAI,QAAQ,CAAC,CAAC,IAAI,YAAY,IAAI;GAGjG,IAAI,OAAO,OACT,OAAO,OAAO,kBAAkB,QAAQ,KAAA,GAAW,eAAe;QAC7D,IAAI,cAAc,MAAM,KAAK,QAAQ,OAAO,OAAO,KAAK,CAAC,EAAE,OAChE,OAAO,OAAO;IACZ,GAAG;IACH,OAAO,kBAAkB,QAAQ,OAAO,OAAO,KAAK,GAAG,KAAA,GAAW,QAAQ;GAC5E;QACK,IAAI,WAAW,MACpB,OAAO,OAAO,WAAW;GAE3B;EACF;EAGA,MAAM,WAAW,QAAQ,OAAO,OAAO,IAAI;EAO3C,MAAM,YAAa,OAA6B;EAChD,IAAI,OAAO,cAAc,YAAY,SAAS,IAAI,SAAS,GAAG;GAC5D,OAAO,OAAO;GACd;EACF;EACA,MAAM,eAAe,OAAO,cAAc,WAAW,IAAI,IAAI,QAAQ,CAAC,CAAC,IAAI,SAAS,IAAI;EAExF,IAAI,OAAO,OACT,OAAO,OAAO,kBAAkB,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,KAAK,EAAE,GAAmB,KAAA,GAAW,YAAY;OAC1G,IAAI,cAAc,MAAM,KAAK,cAAc,QAAQ,KAAK,OAAO,OAAO;GAC3E,MAAM,gBAAgB,QAAQ,OAAO,SAAS,KAAK;GACnD,OAAO,OAAO;IACZ,GAAG;IACH,MAAM;IACN,OAAO,gBACH,WAAW,eAAe,QAAQ,OAAO,OAAO,KAAK,GAAG,YAAY,IACpE,QAAQ,OAAO,OAAO,KAAK;GACjC;EACF,OAEE,IAAI,gBAAgB,YAAY,gBAAgB,QAAQ;GACtD,MAAM,SAAS;IAAE,GAAG;IAAU,GAAG;GAAO;GACxC,OAAO,aAAa,EAAE,GAAG,SAAS,WAAW;GAC7C,0BAA0B,OAAO,YAAY,OAAO,YAAY,YAAY;GAC5E,OAAO,OAAO;EAChB,OAGE,OAAO,OAAO;GAAE,GAAG;GAAQ,GAAG;EAAS;CAG7C;AACF;;;;AAKA,IAAM,wBAAwB,QAAsB,OAAqB,2BAAwB,IAAI,IAAI,MAAY;CAEnH,IAAI,MAAM,SAAS,OAAO,OAAO;EAE/B,MAAM,eAA+B,CAAC;EAEtC,IAAI,OAAO,OACT,KAAK,MAAM,UAAU,OAAO,OAC1B,aAAa,KAAK,QAAQ,OAAO,MAAM,CAAC;OAG1C,aAAa,KAAK,MAAM;EAG1B,IAAI,MAAM,OACR,KAAK,MAAM,UAAU,MAAM,OACzB,aAAa,KAAK,QAAQ,OAAO,MAAM,CAAC;OAG1C,aAAa,KAAK,KAAK;EAGzB,MAAM,SAAS,kBAAkB,EAAE,OAAO,aAAa,GAAmB,KAAA,GAAW,QAAQ;EAC7F,OAAO,OAAO,QAAQ,MAAM;EAC5B;CACF;CAGA,OAAO,OAAO,QAAQ,KAAK;CAG3B,IAAI,gBAAgB,UAAU,gBAAgB,OAC5C,0BAA0B,OAAO,YAAY,MAAM,YAAY,QAAQ;AAE3E;;;;AAKA,IAAM,cACJ,UACA,UACA,2BAAwB,IAAI,IAAI,MACf;CACjB,MAAM,cAAe,SAA+B;CAEpD,IAAI,OAAO,gBAAgB,UAAU;EACnC,IAAI,SAAS,IAAI,WAAW,GAC1B,OAAO;EAET,OAAO,gBAAgB,UAAU,UAAU,IAAI,IAAI,QAAQ,CAAC,CAAC,IAAI,WAAW,CAAC;CAC/E;CAEA,OAAO,gBAAgB,UAAU,UAAU,QAAQ;AACrD;AAEA,IAAM,mBACJ,UACA,UACA,2BAAwB,IAAI,IAAI,MACf;CAEjB,IAAI,SAAS,SAAS,SAAS,OAAO;EAEpC,MAAM,eAA+B,CAAC;EAEtC,IAAI,SAAS,OACX,KAAK,MAAM,UAAU,SAAS,OAC5B,aAAa,KAAK,QAAQ,OAAO,MAAM,CAAC;OAG1C,aAAa,KAAK,QAAQ;EAG5B,IAAI,SAAS,OACX,KAAK,MAAM,UAAU,SAAS,OAC5B,aAAa,KAAK,QAAQ,OAAO,MAAM,CAAC;OAG1C,aAAa,KAAK,QAAQ;EAG5B,OAAO,kBAAkB,EAAE,OAAO,aAAa,GAAmB,KAAA,GAAW,QAAQ;CACvF;CAEA,MAAM,SAAS;EAAE,GAAG;EAAU,GAAG;CAAS;CAG1C,IAAI,gBAAgB,YAAY,gBAAgB,UAAU;EAExD,OAAO,aAAa,EAAE,GAAG,SAAS,WAAW;EAE7C,0BAA0B,OAAO,YAAY,SAAS,YAAY,QAAQ;CAC5E;CAEA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimize-value-for-display.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/optimize-value-for-display.ts"],"sourcesContent":["import { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { compositions } from './schema-composition'\n\n/**\n * Shallow-merges schema-like objects, but unions `properties` and `required`\n * instead of letting a later object's `properties`/`required` completely\n * overwrite an earlier one's. Without this, a variant schema (e.g. a `oneOf`\n * branch) that declares its own `properties`/`required` would wipe out the\n * shared base fields factored out at the root (or via a sibling `allOf`)\n * instead of being combined with them (#9657).\n */\nfunction mergeSchemaProperties(...objects: (Record<string, unknown> | undefined)[]): Record<string, unknown> {\n const merged: Record<string, unknown> = {}\n const properties: Record<string, unknown> = {}\n const required = new Set<string>()\n let hasProperties = false\n let hasRequired = false\n\n for (const object of objects) {\n if (!object) {\n continue\n }\n\n for (const [key, val] of Object.entries(object)) {\n if (key === 'properties' && val && typeof val === 'object') {\n Object.assign(properties, val)\n hasProperties = true\n continue\n }\n\n if (key === 'required' && Array.isArray(val)) {\n for (const name of val) {\n required.add(name)\n }\n hasRequired = true\n continue\n }\n\n merged[key] = val\n }\n }\n\n if (hasProperties) {\n merged.properties = properties\n }\n if (hasRequired) {\n merged.required = [...required]\n }\n\n return merged\n}\n\n/**\n * Optimize the value by removing nulls from compositions and merging root properties.\n *\n * TODO: figure out what this does\n */\nexport function optimizeValueForDisplay(value: SchemaObject | undefined): SchemaObject | undefined {\n if (!value || typeof value !== 'object') {\n return value\n }\n\n // Find the composition keyword early to avoid unnecessary work\n const composition = compositions.find((keyword) => keyword in value && keyword !== 'not')\n\n // If there's no relevant composition keyword, return a shallow copy\n if (!composition) {\n return { ...value }\n }\n\n const schemas = value[composition]\n if (!Array.isArray(schemas)) {\n return { ...value }\n }\n\n // Extract root properties efficiently (excluding composition and nullable)\n const { [composition]: _, nullable: originalNullable, ...rootProperties } = value as any\n const hasRootProperties = Object.keys(rootProperties).length > 0\n\n // Check for null schemas and filter them out in one pass\n const { filteredSchemas, hasNullSchema } = schemas.reduce(\n (acc, _schema) => {\n const schema = resolve.schema(_schema)\n\n if ('type' in schema && schema.type === 'null') {\n acc.hasNullSchema = true\n } else {\n acc.filteredSchemas.push(schema)\n }\n return acc\n },\n { filteredSchemas: [] as SchemaObject[], hasNullSchema: false },\n )\n\n // Determine if nullable should be set\n const shouldBeNullable = hasNullSchema || originalNullable === true\n\n // If only one schema remains after filtering, merge with root properties.\n // `properties`/`required` are unioned so sibling properties declared next to\n // the composition (e.g. `properties` alongside a single-`$ref` `allOf`) are\n // kept instead of being overwritten by the member schema's own `properties`.\n // Root-level annotations (title, description, …) win over the member's: they\n // describe the combined schema, not the base it extends.\n if (filteredSchemas.length === 1) {\n const mergedSchema = mergeSchemaProperties(filteredSchemas[0], rootProperties) as SchemaObject\n if (shouldBeNullable) {\n // @ts-expect-error We use nullable\n mergedSchema.nullable = true\n }\n return mergedSchema\n }\n\n // Check if root properties should be merged into schemas\n const shouldMergeRootProperties =\n (composition === 'oneOf' || composition === 'anyOf') &&\n (hasRootProperties || filteredSchemas.some((schema) => schema.allOf))\n\n if (shouldMergeRootProperties) {\n const mergedSchemas = filteredSchemas.map((_schema) => {\n const schema = resolve.schema(_schema)\n\n // Flatten single-item allOf and merge with root properties\n if (schema.allOf?.length === 1) {\n const { allOf, ...otherProps } = schema\n return mergeSchemaProperties(rootProperties, otherProps, resolve.schema(allOf[0]))\n }\n return mergeSchemaProperties(rootProperties, schema)\n })\n\n // @ts-expect-error - We avoid using coerceValue here as it may be dangerous, so we type cast\n const result = { [composition]: mergedSchemas } as SchemaObject\n if (typeof value.description === 'string') {\n result.description = value.description\n }\n if (shouldBeNullable) {\n // @ts-expect-error We use nullable\n result.nullable = true\n }\n return result\n }\n\n // Return with filtered schemas if any nulls were removed\n if (filteredSchemas.length !== schemas.length) {\n const result: SchemaObject = { ...value, [composition]: filteredSchemas }\n if (shouldBeNullable) {\n // @ts-expect-error We use nullable\n result.nullable = true\n }\n return result\n }\n\n return { ...value }\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAS,sBAAsB,GAAG,SAA2E;CAC3G,MAAM,SAAkC,
|
|
1
|
+
{"version":3,"file":"optimize-value-for-display.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/optimize-value-for-display.ts"],"sourcesContent":["import { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { compositions } from './schema-composition'\n\n/**\n * Shallow-merges schema-like objects, but unions `properties` and `required`\n * instead of letting a later object's `properties`/`required` completely\n * overwrite an earlier one's. Without this, a variant schema (e.g. a `oneOf`\n * branch) that declares its own `properties`/`required` would wipe out the\n * shared base fields factored out at the root (or via a sibling `allOf`)\n * instead of being combined with them (#9657).\n */\nfunction mergeSchemaProperties(...objects: (Record<string, unknown> | undefined)[]): Record<string, unknown> {\n const merged: Record<string, unknown> = {}\n const properties: Record<string, unknown> = {}\n const required = new Set<string>()\n let hasProperties = false\n let hasRequired = false\n\n for (const object of objects) {\n if (!object) {\n continue\n }\n\n for (const [key, val] of Object.entries(object)) {\n if (key === 'properties' && val && typeof val === 'object') {\n Object.assign(properties, val)\n hasProperties = true\n continue\n }\n\n if (key === 'required' && Array.isArray(val)) {\n for (const name of val) {\n required.add(name)\n }\n hasRequired = true\n continue\n }\n\n merged[key] = val\n }\n }\n\n if (hasProperties) {\n merged.properties = properties\n }\n if (hasRequired) {\n merged.required = [...required]\n }\n\n return merged\n}\n\n/**\n * Optimize the value by removing nulls from compositions and merging root properties.\n *\n * TODO: figure out what this does\n */\nexport function optimizeValueForDisplay(value: SchemaObject | undefined): SchemaObject | undefined {\n if (!value || typeof value !== 'object') {\n return value\n }\n\n // Find the composition keyword early to avoid unnecessary work\n const composition = compositions.find((keyword) => keyword in value && keyword !== 'not')\n\n // If there's no relevant composition keyword, return a shallow copy\n if (!composition) {\n return { ...value }\n }\n\n const schemas = value[composition]\n if (!Array.isArray(schemas)) {\n return { ...value }\n }\n\n // Extract root properties efficiently (excluding composition and nullable)\n const { [composition]: _, nullable: originalNullable, ...rootProperties } = value as any\n const hasRootProperties = Object.keys(rootProperties).length > 0\n\n // Check for null schemas and filter them out in one pass\n const { filteredSchemas, hasNullSchema } = schemas.reduce(\n (acc, _schema) => {\n const schema = resolve.schema(_schema)\n\n if ('type' in schema && schema.type === 'null') {\n acc.hasNullSchema = true\n } else {\n acc.filteredSchemas.push(schema)\n }\n return acc\n },\n { filteredSchemas: [] as SchemaObject[], hasNullSchema: false },\n )\n\n // Determine if nullable should be set\n const shouldBeNullable = hasNullSchema || originalNullable === true\n\n // If only one schema remains after filtering, merge with root properties.\n // `properties`/`required` are unioned so sibling properties declared next to\n // the composition (e.g. `properties` alongside a single-`$ref` `allOf`) are\n // kept instead of being overwritten by the member schema's own `properties`.\n // Root-level annotations (title, description, …) win over the member's: they\n // describe the combined schema, not the base it extends.\n if (filteredSchemas.length === 1) {\n const mergedSchema = mergeSchemaProperties(filteredSchemas[0], rootProperties) as SchemaObject\n if (shouldBeNullable) {\n // @ts-expect-error We use nullable\n mergedSchema.nullable = true\n }\n return mergedSchema\n }\n\n // Check if root properties should be merged into schemas\n const shouldMergeRootProperties =\n (composition === 'oneOf' || composition === 'anyOf') &&\n (hasRootProperties || filteredSchemas.some((schema) => schema.allOf))\n\n if (shouldMergeRootProperties) {\n const mergedSchemas = filteredSchemas.map((_schema) => {\n const schema = resolve.schema(_schema)\n\n // Flatten single-item allOf and merge with root properties\n if (schema.allOf?.length === 1) {\n const { allOf, ...otherProps } = schema\n return mergeSchemaProperties(rootProperties, otherProps, resolve.schema(allOf[0]))\n }\n return mergeSchemaProperties(rootProperties, schema)\n })\n\n // @ts-expect-error - We avoid using coerceValue here as it may be dangerous, so we type cast\n const result = { [composition]: mergedSchemas } as SchemaObject\n if (typeof value.description === 'string') {\n result.description = value.description\n }\n if (shouldBeNullable) {\n // @ts-expect-error We use nullable\n result.nullable = true\n }\n return result\n }\n\n // Return with filtered schemas if any nulls were removed\n if (filteredSchemas.length !== schemas.length) {\n const result: SchemaObject = { ...value, [composition]: filteredSchemas }\n if (shouldBeNullable) {\n // @ts-expect-error We use nullable\n result.nullable = true\n }\n return result\n }\n\n return { ...value }\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAS,sBAAsB,GAAG,SAA2E;CAC3G,MAAM,SAAkC,CAAC;CACzC,MAAM,aAAsC,CAAC;CAC7C,MAAM,2BAAW,IAAI,IAAY;CACjC,IAAI,gBAAgB;CACpB,IAAI,cAAc;CAElB,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,CAAC,QACH;EAGF,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,GAAG;GAC/C,IAAI,QAAQ,gBAAgB,OAAO,OAAO,QAAQ,UAAU;IAC1D,OAAO,OAAO,YAAY,GAAG;IAC7B,gBAAgB;IAChB;GACF;GAEA,IAAI,QAAQ,cAAc,MAAM,QAAQ,GAAG,GAAG;IAC5C,KAAK,MAAM,QAAQ,KACjB,SAAS,IAAI,IAAI;IAEnB,cAAc;IACd;GACF;GAEA,OAAO,OAAO;EAChB;CACF;CAEA,IAAI,eACF,OAAO,aAAa;CAEtB,IAAI,aACF,OAAO,WAAW,CAAC,GAAG,QAAQ;CAGhC,OAAO;AACT;;;;;;AAOA,SAAgB,wBAAwB,OAA2D;CACjG,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO;CAIT,MAAM,cAAc,aAAa,MAAM,YAAY,WAAW,SAAS,YAAY,KAAK;CAGxF,IAAI,CAAC,aACH,OAAO,EAAE,GAAG,MAAM;CAGpB,MAAM,UAAU,MAAM;CACtB,IAAI,CAAC,MAAM,QAAQ,OAAO,GACxB,OAAO,EAAE,GAAG,MAAM;CAIpB,MAAM,GAAG,cAAc,GAAG,UAAU,kBAAkB,GAAG,mBAAmB;CAC5E,MAAM,oBAAoB,OAAO,KAAK,cAAc,CAAC,CAAC,SAAS;CAG/D,MAAM,EAAE,iBAAiB,kBAAkB,QAAQ,QAChD,KAAK,YAAY;EAChB,MAAM,SAAS,QAAQ,OAAO,OAAO;EAErC,IAAI,UAAU,UAAU,OAAO,SAAS,QACtC,IAAI,gBAAgB;OAEpB,IAAI,gBAAgB,KAAK,MAAM;EAEjC,OAAO;CACT,GACA;EAAE,iBAAiB,CAAC;EAAqB,eAAe;CAAM,CAChE;CAGA,MAAM,mBAAmB,iBAAiB,qBAAqB;CAQ/D,IAAI,gBAAgB,WAAW,GAAG;EAChC,MAAM,eAAe,sBAAsB,gBAAgB,IAAI,cAAc;EAC7E,IAAI,kBAEF,aAAa,WAAW;EAE1B,OAAO;CACT;CAOA,KAHG,gBAAgB,WAAW,gBAAgB,aAC3C,qBAAqB,gBAAgB,MAAM,WAAW,OAAO,KAAK,IAEtC;EAC7B,MAAM,gBAAgB,gBAAgB,KAAK,YAAY;GACrD,MAAM,SAAS,QAAQ,OAAO,OAAO;GAGrC,IAAI,OAAO,OAAO,WAAW,GAAG;IAC9B,MAAM,EAAE,OAAO,GAAG,eAAe;IACjC,OAAO,sBAAsB,gBAAgB,YAAY,QAAQ,OAAO,MAAM,EAAE,CAAC;GACnF;GACA,OAAO,sBAAsB,gBAAgB,MAAM;EACrD,CAAC;EAGD,MAAM,SAAS,GAAG,cAAc,cAAc;EAC9C,IAAI,OAAO,MAAM,gBAAgB,UAC/B,OAAO,cAAc,MAAM;EAE7B,IAAI,kBAEF,OAAO,WAAW;EAEpB,OAAO;CACT;CAGA,IAAI,gBAAgB,WAAW,QAAQ,QAAQ;EAC7C,MAAM,SAAuB;GAAE,GAAG;IAAQ,cAAc;EAAgB;EACxE,IAAI,kBAEF,OAAO,WAAW;EAEpB,OAAO;CACT;CAEA,OAAO,EAAE,GAAG,MAAM;AACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partition-all-of-compositions.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/partition-all-of-compositions.ts"],"sourcesContent":["import { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { mergeAllOfSchemas } from './merge-all-of-schemas'\nimport type { CompositionKeyword } from './schema-composition'\n\ntype ChoiceKeyword = Extract<CompositionKeyword, 'oneOf' | 'anyOf'>\n\n/** An ordered piece of an `allOf`: either a merged object or a choice picker. */\ntype AllOfSegment =\n | { kind: 'object'; schema: SchemaObject }\n | {\n kind: 'choice'\n composition: ChoiceKeyword\n /** A minimal schema carrying only this group's composition, for SchemaComposition */\n value: SchemaObject\n /** Ordinal among choice members, matching the request-example composition key */\n choiceIndex: number\n }\n\nconst CHOICE_KEYWORDS: ChoiceKeyword[] = ['oneOf', 'anyOf']\n\ntype Member =\n | { kind: 'object'; schema: SchemaObject }\n | { kind: 'choice'; composition: ChoiceKeyword; value: SchemaObject }\n\n/**\n * Flattens a member's own (non-composition) properties and every `oneOf`/`anyOf`\n * group it declares — recursing into nested `allOf` — into a flat, ordered list,\n * preserving source order so choice groups stay where they were authored.\n *\n * Pure-constraint keywords (`not`, `if/then/else`) are dropped: they carry no\n * visual variant and Scalar would otherwise render `not` as a bogus picker. The\n * rule still lives in the schema (validation) and in field descriptions.\n */\nconst collectMembers = (schema: SchemaObject, out: Member[], seenRefs: Set<string>): void => {\n const {\n allOf,\n oneOf,\n anyOf,\n not: _not,\n if: _if,\n then: _then,\n else: _else,\n ...rest\n } = schema as SchemaObject & {\n allOf?: unknown[]\n oneOf?: unknown[]\n anyOf?: unknown[]\n not?: unknown\n if?: unknown\n then?: unknown\n else?: unknown\n }\n\n if (Object.keys(rest).length > 0) {\n out.push({ kind: 'object', schema: rest as SchemaObject })\n }\n\n for (const keyword of CHOICE_KEYWORDS) {\n const value = keyword === 'oneOf' ? oneOf : anyOf\n if (Array.isArray(value) && value.length > 0) {\n out.push({ kind: 'choice', composition: keyword, value: { [keyword]: value } as unknown as SchemaObject })\n }\n }\n\n if (Array.isArray(allOf)) {\n for (const rawMember of allOf) {\n if (rawMember && typeof rawMember === 'object') {\n const resolved = resolve.schema(rawMember) as SchemaObject & { $ref?: string }\n // Break `$ref` cycles reached through `allOf` (e.g. a member that\n // references an ancestor). Without this guard a recursive `allOf`\n // schema would recurse forever. `mergeAllOfSchemas` guards the same way.\n const ref = resolved.$ref\n if (typeof ref === 'string') {\n if (seenRefs.has(ref)) {\n continue\n }\n collectMembers(resolved, out, new Set(seenRefs).add(ref))\n } else {\n collectMembers(resolved, out, seenRefs)\n }\n }\n }\n }\n}\n\n/**\n * Splits an `allOf` schema into an ordered list of segments so the renderer can\n * show each `oneOf`/`anyOf` group as its own picker **in the position it was\n * declared**, with the surrounding plain fields around it.\n *\n * `mergeAllOfSchemas` alone keeps only the FIRST `oneOf`/`anyOf` (dropping the\n * 2nd+ groups of an object with several independent mutually-exclusive\n * selections) and, being a merge, also loses the ordering between fields and\n * choices. Walking the members in order fixes both: runs of consecutive object\n * members are merged into one object segment, and each choice member becomes its\n * own picker segment in place.\n */\nexport const partitionAllOfCompositions = (schema: SchemaObject | undefined): { segments: AllOfSegment[] } => {\n if (!schema) {\n return { segments: [] }\n }\n\n // The schema's own (non-composition) keys, minus its top-level `oneOf`/`anyOf`\n // — those are rendered as their own composition by the caller, not here.\n const {\n allOf,\n oneOf: _oneOf,\n anyOf: _anyOf,\n not: _not,\n if: _if,\n then: _then,\n else: _else,\n ...rest\n } = schema as SchemaObject & {\n allOf?: unknown[]\n oneOf?: unknown[]\n anyOf?: unknown[]\n not?: unknown\n if?: unknown\n then?: unknown\n else?: unknown\n }\n\n if (!Array.isArray(allOf)) {\n return { segments: [{ kind: 'object', schema: schema }] }\n }\n\n const members: Member[] = []\n if (Object.keys(rest).length > 0) {\n members.push({ kind: 'object', schema: rest as SchemaObject })\n }\n const seenRefs = new Set<string>()\n for (const rawMember of allOf) {\n if (rawMember && typeof rawMember === 'object') {\n const resolved = resolve.schema(rawMember) as SchemaObject & { $ref?: string }\n const ref = resolved.$ref\n collectMembers(resolved, members, typeof ref === 'string' ? new Set(seenRefs).add(ref) : seenRefs)\n }\n }\n\n // Coalesce consecutive object members into a single merged object segment,\n // keeping choice members as their own segments between them.\n const segments: AllOfSegment[] = []\n let objectRun: SchemaObject[] = []\n let choiceIndex = 0\n\n const flushObjectRun = () => {\n if (objectRun.length === 0) {\n return\n }\n const merged = objectRun.length === 1 ? objectRun[0]! : mergeAllOfSchemas({ allOf: objectRun } as SchemaObject)\n segments.push({ kind: 'object', schema: merged })\n objectRun = []\n }\n\n for (const member of members) {\n if (member.kind === 'object') {\n objectRun.push(member.schema)\n } else {\n flushObjectRun()\n // `choiceIndex` is the ordinal used to build the composition-selection key\n // that syncs each picker with the request example. It MUST stay aligned\n // with the ordinal computed while walking `allOf` in\n // `get-example-from-schema.ts` (`@scalar/workspace-store`), or a picker and\n // its generated example fall out of sync.\n segments.push({\n kind: 'choice',\n composition: member.composition,\n value: member.value,\n choiceIndex: choiceIndex++,\n })\n }\n }\n flushObjectRun()\n\n return { segments }\n}\n"],"mappings":";;;AAoBA,IAAM,kBAAmC,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"partition-all-of-compositions.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/partition-all-of-compositions.ts"],"sourcesContent":["import { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { mergeAllOfSchemas } from './merge-all-of-schemas'\nimport type { CompositionKeyword } from './schema-composition'\n\ntype ChoiceKeyword = Extract<CompositionKeyword, 'oneOf' | 'anyOf'>\n\n/** An ordered piece of an `allOf`: either a merged object or a choice picker. */\ntype AllOfSegment =\n | { kind: 'object'; schema: SchemaObject }\n | {\n kind: 'choice'\n composition: ChoiceKeyword\n /** A minimal schema carrying only this group's composition, for SchemaComposition */\n value: SchemaObject\n /** Ordinal among choice members, matching the request-example composition key */\n choiceIndex: number\n }\n\nconst CHOICE_KEYWORDS: ChoiceKeyword[] = ['oneOf', 'anyOf']\n\ntype Member =\n | { kind: 'object'; schema: SchemaObject }\n | { kind: 'choice'; composition: ChoiceKeyword; value: SchemaObject }\n\n/**\n * Flattens a member's own (non-composition) properties and every `oneOf`/`anyOf`\n * group it declares — recursing into nested `allOf` — into a flat, ordered list,\n * preserving source order so choice groups stay where they were authored.\n *\n * Pure-constraint keywords (`not`, `if/then/else`) are dropped: they carry no\n * visual variant and Scalar would otherwise render `not` as a bogus picker. The\n * rule still lives in the schema (validation) and in field descriptions.\n */\nconst collectMembers = (schema: SchemaObject, out: Member[], seenRefs: Set<string>): void => {\n const {\n allOf,\n oneOf,\n anyOf,\n not: _not,\n if: _if,\n then: _then,\n else: _else,\n ...rest\n } = schema as SchemaObject & {\n allOf?: unknown[]\n oneOf?: unknown[]\n anyOf?: unknown[]\n not?: unknown\n if?: unknown\n then?: unknown\n else?: unknown\n }\n\n if (Object.keys(rest).length > 0) {\n out.push({ kind: 'object', schema: rest as SchemaObject })\n }\n\n for (const keyword of CHOICE_KEYWORDS) {\n const value = keyword === 'oneOf' ? oneOf : anyOf\n if (Array.isArray(value) && value.length > 0) {\n out.push({ kind: 'choice', composition: keyword, value: { [keyword]: value } as unknown as SchemaObject })\n }\n }\n\n if (Array.isArray(allOf)) {\n for (const rawMember of allOf) {\n if (rawMember && typeof rawMember === 'object') {\n const resolved = resolve.schema(rawMember) as SchemaObject & { $ref?: string }\n // Break `$ref` cycles reached through `allOf` (e.g. a member that\n // references an ancestor). Without this guard a recursive `allOf`\n // schema would recurse forever. `mergeAllOfSchemas` guards the same way.\n const ref = resolved.$ref\n if (typeof ref === 'string') {\n if (seenRefs.has(ref)) {\n continue\n }\n collectMembers(resolved, out, new Set(seenRefs).add(ref))\n } else {\n collectMembers(resolved, out, seenRefs)\n }\n }\n }\n }\n}\n\n/**\n * Splits an `allOf` schema into an ordered list of segments so the renderer can\n * show each `oneOf`/`anyOf` group as its own picker **in the position it was\n * declared**, with the surrounding plain fields around it.\n *\n * `mergeAllOfSchemas` alone keeps only the FIRST `oneOf`/`anyOf` (dropping the\n * 2nd+ groups of an object with several independent mutually-exclusive\n * selections) and, being a merge, also loses the ordering between fields and\n * choices. Walking the members in order fixes both: runs of consecutive object\n * members are merged into one object segment, and each choice member becomes its\n * own picker segment in place.\n */\nexport const partitionAllOfCompositions = (schema: SchemaObject | undefined): { segments: AllOfSegment[] } => {\n if (!schema) {\n return { segments: [] }\n }\n\n // The schema's own (non-composition) keys, minus its top-level `oneOf`/`anyOf`\n // — those are rendered as their own composition by the caller, not here.\n const {\n allOf,\n oneOf: _oneOf,\n anyOf: _anyOf,\n not: _not,\n if: _if,\n then: _then,\n else: _else,\n ...rest\n } = schema as SchemaObject & {\n allOf?: unknown[]\n oneOf?: unknown[]\n anyOf?: unknown[]\n not?: unknown\n if?: unknown\n then?: unknown\n else?: unknown\n }\n\n if (!Array.isArray(allOf)) {\n return { segments: [{ kind: 'object', schema: schema }] }\n }\n\n const members: Member[] = []\n if (Object.keys(rest).length > 0) {\n members.push({ kind: 'object', schema: rest as SchemaObject })\n }\n const seenRefs = new Set<string>()\n for (const rawMember of allOf) {\n if (rawMember && typeof rawMember === 'object') {\n const resolved = resolve.schema(rawMember) as SchemaObject & { $ref?: string }\n const ref = resolved.$ref\n collectMembers(resolved, members, typeof ref === 'string' ? new Set(seenRefs).add(ref) : seenRefs)\n }\n }\n\n // Coalesce consecutive object members into a single merged object segment,\n // keeping choice members as their own segments between them.\n const segments: AllOfSegment[] = []\n let objectRun: SchemaObject[] = []\n let choiceIndex = 0\n\n const flushObjectRun = () => {\n if (objectRun.length === 0) {\n return\n }\n const merged = objectRun.length === 1 ? objectRun[0]! : mergeAllOfSchemas({ allOf: objectRun } as SchemaObject)\n segments.push({ kind: 'object', schema: merged })\n objectRun = []\n }\n\n for (const member of members) {\n if (member.kind === 'object') {\n objectRun.push(member.schema)\n } else {\n flushObjectRun()\n // `choiceIndex` is the ordinal used to build the composition-selection key\n // that syncs each picker with the request example. It MUST stay aligned\n // with the ordinal computed while walking `allOf` in\n // `get-example-from-schema.ts` (`@scalar/workspace-store`), or a picker and\n // its generated example fall out of sync.\n segments.push({\n kind: 'choice',\n composition: member.composition,\n value: member.value,\n choiceIndex: choiceIndex++,\n })\n }\n }\n flushObjectRun()\n\n return { segments }\n}\n"],"mappings":";;;AAoBA,IAAM,kBAAmC,CAAC,SAAS,OAAO;;;;;;;;;;AAe1D,IAAM,kBAAkB,QAAsB,KAAe,aAAgC;CAC3F,MAAM,EACJ,OACA,OACA,OACA,KAAK,MACL,IAAI,KACJ,MAAM,OACN,MAAM,OACN,GAAG,SACD;CAUJ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,SAAS,GAC7B,IAAI,KAAK;EAAE,MAAM;EAAU,QAAQ;CAAqB,CAAC;CAG3D,KAAK,MAAM,WAAW,iBAAiB;EACrC,MAAM,QAAQ,YAAY,UAAU,QAAQ;EAC5C,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GACzC,IAAI,KAAK;GAAE,MAAM;GAAU,aAAa;GAAS,OAAO,GAAG,UAAU,MAAM;EAA6B,CAAC;CAE7G;CAEA,IAAI,MAAM,QAAQ,KAAK;OAChB,MAAM,aAAa,OACtB,IAAI,aAAa,OAAO,cAAc,UAAU;GAC9C,MAAM,WAAW,QAAQ,OAAO,SAAS;GAIzC,MAAM,MAAM,SAAS;GACrB,IAAI,OAAO,QAAQ,UAAU;IAC3B,IAAI,SAAS,IAAI,GAAG,GAClB;IAEF,eAAe,UAAU,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC;GAC1D,OACE,eAAe,UAAU,KAAK,QAAQ;EAE1C;;AAGN;;;;;;;;;;;;;AAcA,IAAa,8BAA8B,WAAmE;CAC5G,IAAI,CAAC,QACH,OAAO,EAAE,UAAU,CAAC,EAAE;CAKxB,MAAM,EACJ,OACA,OAAO,QACP,OAAO,QACP,KAAK,MACL,IAAI,KACJ,MAAM,OACN,MAAM,OACN,GAAG,SACD;CAUJ,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO,EAAE,UAAU,CAAC;EAAE,MAAM;EAAkB;CAAO,CAAC,EAAE;CAG1D,MAAM,UAAoB,CAAC;CAC3B,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,SAAS,GAC7B,QAAQ,KAAK;EAAE,MAAM;EAAU,QAAQ;CAAqB,CAAC;CAE/D,MAAM,2BAAW,IAAI,IAAY;CACjC,KAAK,MAAM,aAAa,OACtB,IAAI,aAAa,OAAO,cAAc,UAAU;EAC9C,MAAM,WAAW,QAAQ,OAAO,SAAS;EACzC,MAAM,MAAM,SAAS;EACrB,eAAe,UAAU,SAAS,OAAO,QAAQ,WAAW,IAAI,IAAI,QAAQ,CAAC,CAAC,IAAI,GAAG,IAAI,QAAQ;CACnG;CAKF,MAAM,WAA2B,CAAC;CAClC,IAAI,YAA4B,CAAC;CACjC,IAAI,cAAc;CAElB,MAAM,uBAAuB;EAC3B,IAAI,UAAU,WAAW,GACvB;EAEF,MAAM,SAAS,UAAU,WAAW,IAAI,UAAU,KAAM,kBAAkB,EAAE,OAAO,UAAU,CAAiB;EAC9G,SAAS,KAAK;GAAE,MAAM;GAAU,QAAQ;EAAO,CAAC;EAChD,YAAY,CAAC;CACf;CAEA,KAAK,MAAM,UAAU,SACnB,IAAI,OAAO,SAAS,UAClB,UAAU,KAAK,OAAO,MAAM;MACvB;EACL,eAAe;EAMf,SAAS,KAAK;GACZ,MAAM;GACN,aAAa,OAAO;GACpB,OAAO,OAAO;GACd,aAAa;EACf,CAAC;CACH;CAEF,eAAe;CAEf,OAAO,EAAE,SAAS;AACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-composition.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/schema-composition.ts"],"sourcesContent":["/** Composition */\nexport type CompositionKeyword = 'oneOf' | 'anyOf' | 'allOf' | 'not'\n\nexport const compositions: CompositionKeyword[] = ['oneOf', 'anyOf', 'allOf', 'not']\n"],"mappings":";AAGA,IAAa,eAAqC;CAAC;CAAS;CAAS;CAAS;
|
|
1
|
+
{"version":3,"file":"schema-composition.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/schema-composition.ts"],"sourcesContent":["/** Composition */\nexport type CompositionKeyword = 'oneOf' | 'anyOf' | 'allOf' | 'not'\n\nexport const compositions: CompositionKeyword[] = ['oneOf', 'anyOf', 'allOf', 'not']\n"],"mappings":";AAGA,IAAa,eAAqC;CAAC;CAAS;CAAS;CAAS;AAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-cycle.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/schema-cycle.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n\n/**\n * The set of schema \"cycle keys\" for every ancestor on the current render path.\n *\n * Each `Schema` component injects this set, adds its own key, and re-provides\n * it to its descendants. When a node's key is already present in the ancestor\n * set we've hit a cycle (a self-referential schema) and must stop force\n * expanding to avoid rendering forever.\n *\n * See {@link getCycleKey} for how a node's key is derived.\n */\nexport const SCHEMA_ANCESTORS_SYMBOL: InjectionKey<ReadonlySet<unknown>> = Symbol('schema-ancestors')\n\n/**\n * Derive a stable identity for a schema node from its *raw* (unresolved) value.\n *\n * Cycle detection needs a key that is identical every time the same schema is\n * reached along a path, and that survives the shallow copies/merges performed\n * while rendering (which break object identity of the resolved schema).\n *\n * - For `$ref` nodes we use the ref string. Two branches that reference the\n * same component share the string, so a schema that (transitively) references\n * itself is detected as a cycle, while sibling references are not.\n * - For inline schemas there is no ref, so we fall back to the raw object\n * reference. A self-referential inline schema reuses the same object, so\n * object identity catches the cycle.\n *\n * Returns `undefined` for primitives/booleans (e.g. `additionalProperties: true`)\n * which can never form a cycle.\n */\nexport const getCycleKey = (raw: unknown): unknown => {\n if (raw && typeof raw === 'object') {\n if ('$ref' in raw && typeof (raw as { $ref?: unknown }).$ref === 'string') {\n return (raw as { $ref: string }).$ref\n }\n return raw\n }\n\n return undefined\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,0BAA8D,OAAO,
|
|
1
|
+
{"version":3,"file":"schema-cycle.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/schema-cycle.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n\n/**\n * The set of schema \"cycle keys\" for every ancestor on the current render path.\n *\n * Each `Schema` component injects this set, adds its own key, and re-provides\n * it to its descendants. When a node's key is already present in the ancestor\n * set we've hit a cycle (a self-referential schema) and must stop force\n * expanding to avoid rendering forever.\n *\n * See {@link getCycleKey} for how a node's key is derived.\n */\nexport const SCHEMA_ANCESTORS_SYMBOL: InjectionKey<ReadonlySet<unknown>> = Symbol('schema-ancestors')\n\n/**\n * Derive a stable identity for a schema node from its *raw* (unresolved) value.\n *\n * Cycle detection needs a key that is identical every time the same schema is\n * reached along a path, and that survives the shallow copies/merges performed\n * while rendering (which break object identity of the resolved schema).\n *\n * - For `$ref` nodes we use the ref string. Two branches that reference the\n * same component share the string, so a schema that (transitively) references\n * itself is detected as a cycle, while sibling references are not.\n * - For inline schemas there is no ref, so we fall back to the raw object\n * reference. A self-referential inline schema reuses the same object, so\n * object identity catches the cycle.\n *\n * Returns `undefined` for primitives/booleans (e.g. `additionalProperties: true`)\n * which can never form a cycle.\n */\nexport const getCycleKey = (raw: unknown): unknown => {\n if (raw && typeof raw === 'object') {\n if ('$ref' in raw && typeof (raw as { $ref?: unknown }).$ref === 'string') {\n return (raw as { $ref: string }).$ref\n }\n return raw\n }\n\n return undefined\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,0BAA8D,OAAO,kBAAkB;;;;;;;;;;;;;;;;;;AAmBpG,IAAa,eAAe,QAA0B;CACpD,IAAI,OAAO,OAAO,QAAQ,UAAU;EAClC,IAAI,UAAU,OAAO,OAAQ,IAA2B,SAAS,UAC/D,OAAQ,IAAyB;EAEnC,OAAO;CACT;AAGF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-name.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/schema-name.ts"],"sourcesContent":["import { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject, SchemaReferenceType } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { getRefName } from './get-ref-name'\n\n/**\n * Extract schema name from various schema formats\n *\n * Handles $ref, title, name, type, and schema dictionary lookup\n */\nexport const getModelNameFromSchema = (\n schemaOrRef: SchemaObject | SchemaReferenceType<SchemaObject>,\n): {\n /** The key in components.schemas (extracted from $ref), used for sidebar navigation. */\n schemaKey: string | null\n /** The human-readable name to display (schema.title, schema.name, or ref key). */\n label: string\n} | null => {\n if (!schemaOrRef) {\n return null\n }\n\n const schema = resolve.schema(schemaOrRef)\n\n const schemaKey = '$ref' in schemaOrRef ? (getRefName(schemaOrRef.$ref) ?? null) : null\n\n if (schema.title) {\n return { schemaKey, label: schema.title }\n }\n\n if (schema.name) {\n return { schemaKey, label: schema.name }\n }\n\n if ('$ref' in schemaOrRef) {\n if (schemaKey) {\n return { schemaKey, label: schemaKey }\n }\n }\n\n return null\n}\n"],"mappings":";;;;;;;;AAUA,IAAa,0BACX,gBAMU;
|
|
1
|
+
{"version":3,"file":"schema-name.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/schema-name.ts"],"sourcesContent":["import { resolve } from '@scalar/workspace-store/resolve'\nimport type { SchemaObject, SchemaReferenceType } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { getRefName } from './get-ref-name'\n\n/**\n * Extract schema name from various schema formats\n *\n * Handles $ref, title, name, type, and schema dictionary lookup\n */\nexport const getModelNameFromSchema = (\n schemaOrRef: SchemaObject | SchemaReferenceType<SchemaObject>,\n): {\n /** The key in components.schemas (extracted from $ref), used for sidebar navigation. */\n schemaKey: string | null\n /** The human-readable name to display (schema.title, schema.name, or ref key). */\n label: string\n} | null => {\n if (!schemaOrRef) {\n return null\n }\n\n const schema = resolve.schema(schemaOrRef)\n\n const schemaKey = '$ref' in schemaOrRef ? (getRefName(schemaOrRef.$ref) ?? null) : null\n\n if (schema.title) {\n return { schemaKey, label: schema.title }\n }\n\n if (schema.name) {\n return { schemaKey, label: schema.name }\n }\n\n if ('$ref' in schemaOrRef) {\n if (schemaKey) {\n return { schemaKey, label: schemaKey }\n }\n }\n\n return null\n}\n"],"mappings":";;;;;;;;AAUA,IAAa,0BACX,gBAMU;CACV,IAAI,CAAC,aACH,OAAO;CAGT,MAAM,SAAS,QAAQ,OAAO,WAAW;CAEzC,MAAM,YAAY,UAAU,cAAe,WAAW,YAAY,IAAI,KAAK,OAAQ;CAEnF,IAAI,OAAO,OACT,OAAO;EAAE;EAAW,OAAO,OAAO;CAAM;CAG1C,IAAI,OAAO,MACT,OAAO;EAAE;EAAW,OAAO,OAAO;CAAK;CAGzC,IAAI,UAAU;MACR,WACF,OAAO;GAAE;GAAW,OAAO;EAAU;CAAA;CAIzC,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"should-display-description.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/should-display-description.ts"],"sourcesContent":["import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\n/**\n * Determine if description should be displayed\n *\n * @param schema - The schema object to check\n * @param propDescription - Optional description from props\n * @returns Description string to display, or null if should not be displayed\n */\nexport const shouldDisplayDescription = (schema: SchemaObject | undefined, propDescription?: string): string | null => {\n if (!schema) {\n return null\n }\n\n // Don't show description for schemas with compositions to avoid duplicate descriptions\n if (schema.allOf) {\n return null\n }\n\n // When both an external description (e.g. a response or parameter description) and the\n // schema's own description are present, show both so neither is lost. This matters for\n // responses with multiple content types where each media type schema carries its own\n // description (see expandAllResponses). Identical descriptions are shown only once.\n if (propDescription && schema.description) {\n return propDescription === schema.description ? propDescription : `${propDescription}\\n\\n${schema.description}`\n }\n\n return propDescription || schema.description || null\n}\n"],"mappings":";;;;;;;;AASA,IAAa,4BAA4B,QAAkC,oBAA4C;
|
|
1
|
+
{"version":3,"file":"should-display-description.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/should-display-description.ts"],"sourcesContent":["import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\n/**\n * Determine if description should be displayed\n *\n * @param schema - The schema object to check\n * @param propDescription - Optional description from props\n * @returns Description string to display, or null if should not be displayed\n */\nexport const shouldDisplayDescription = (schema: SchemaObject | undefined, propDescription?: string): string | null => {\n if (!schema) {\n return null\n }\n\n // Don't show description for schemas with compositions to avoid duplicate descriptions\n if (schema.allOf) {\n return null\n }\n\n // When both an external description (e.g. a response or parameter description) and the\n // schema's own description are present, show both so neither is lost. This matters for\n // responses with multiple content types where each media type schema carries its own\n // description (see expandAllResponses). Identical descriptions are shown only once.\n if (propDescription && schema.description) {\n return propDescription === schema.description ? propDescription : `${propDescription}\\n\\n${schema.description}`\n }\n\n return propDescription || schema.description || null\n}\n"],"mappings":";;;;;;;;AASA,IAAa,4BAA4B,QAAkC,oBAA4C;CACrH,IAAI,CAAC,QACH,OAAO;CAIT,IAAI,OAAO,OACT,OAAO;CAOT,IAAI,mBAAmB,OAAO,aAC5B,OAAO,oBAAoB,OAAO,cAAc,kBAAkB,GAAG,gBAAgB,MAAM,OAAO;CAGpG,OAAO,mBAAmB,OAAO,eAAe;AAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"should-display-heading.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/should-display-heading.ts"],"sourcesContent":["import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\n/**\n * Determine if property heading should be displayed\n *\n * @param schema - The schema object to check\n * @param name - Optional property name\n * @param required - Whether the property is required\n * @returns true if heading should be displayed, false otherwise\n */\nexport const shouldDisplayHeading = (schema: SchemaObject | undefined, name?: string, required = false): boolean => {\n // Early return for simple cases\n if (name || required) {\n return true\n }\n\n // If schema is undefined, return false\n if (!schema) {\n return false\n }\n\n // Check schema properties that warrant a heading\n return (\n schema.deprecated === true ||\n schema.const !== undefined ||\n schema.enum?.length === 1 ||\n ('type' in schema && schema.type !== undefined) ||\n ('nullable' in schema && schema.nullable === true) ||\n schema.writeOnly === true ||\n schema.readOnly === true\n )\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,wBAAwB,QAAkC,MAAe,WAAW,UAAmB;
|
|
1
|
+
{"version":3,"file":"should-display-heading.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/should-display-heading.ts"],"sourcesContent":["import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\n/**\n * Determine if property heading should be displayed\n *\n * @param schema - The schema object to check\n * @param name - Optional property name\n * @param required - Whether the property is required\n * @returns true if heading should be displayed, false otherwise\n */\nexport const shouldDisplayHeading = (schema: SchemaObject | undefined, name?: string, required = false): boolean => {\n // Early return for simple cases\n if (name || required) {\n return true\n }\n\n // If schema is undefined, return false\n if (!schema) {\n return false\n }\n\n // Check schema properties that warrant a heading\n return (\n schema.deprecated === true ||\n schema.const !== undefined ||\n schema.enum?.length === 1 ||\n ('type' in schema && schema.type !== undefined) ||\n ('nullable' in schema && schema.nullable === true) ||\n schema.writeOnly === true ||\n schema.readOnly === true\n )\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,wBAAwB,QAAkC,MAAe,WAAW,UAAmB;CAElH,IAAI,QAAQ,UACV,OAAO;CAIT,IAAI,CAAC,QACH,OAAO;CAIT,OACE,OAAO,eAAe,QACtB,OAAO,UAAU,KAAA,KACjB,OAAO,MAAM,WAAW,KACvB,UAAU,UAAU,OAAO,SAAS,KAAA,KACpC,cAAc,UAAU,OAAO,aAAa,QAC7C,OAAO,cAAc,QACrB,OAAO,aAAa;AAExB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"should-render-array-item-composition.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/should-render-array-item-composition.ts"],"sourcesContent":["import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\n\nimport { hasComplexArrayItems } from './has-complex-array-items'\n\n/**\n * Check if array item composition should be rendered\n *\n * @param schema - The schema object to check\n * @param composition - The composition keyword to check for\n * @returns true if array item composition should be rendered, false otherwise\n */\nexport const shouldRenderArrayItemComposition = (schema: SchemaObject | undefined, composition: string): boolean => {\n // Early return if schema is invalid or not an array\n if (!schema || !isArraySchema(schema)) {\n return false\n }\n\n // Check if items exist and have the composition keyword\n const items = schema.items\n if (!items || typeof items !== 'object' || !(composition in items)) {\n return false\n }\n\n // Only render if items are not complex (complex items are handled differently)\n return !hasComplexArrayItems(schema)\n}\n"],"mappings":";;;;;;;;;;AAYA,IAAa,oCAAoC,QAAkC,gBAAiC;
|
|
1
|
+
{"version":3,"file":"should-render-array-item-composition.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/should-render-array-item-composition.ts"],"sourcesContent":["import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { isArraySchema } from '@scalar/workspace-store/schemas/v3.1/strict/type-guards'\n\nimport { hasComplexArrayItems } from './has-complex-array-items'\n\n/**\n * Check if array item composition should be rendered\n *\n * @param schema - The schema object to check\n * @param composition - The composition keyword to check for\n * @returns true if array item composition should be rendered, false otherwise\n */\nexport const shouldRenderArrayItemComposition = (schema: SchemaObject | undefined, composition: string): boolean => {\n // Early return if schema is invalid or not an array\n if (!schema || !isArraySchema(schema)) {\n return false\n }\n\n // Check if items exist and have the composition keyword\n const items = schema.items\n if (!items || typeof items !== 'object' || !(composition in items)) {\n return false\n }\n\n // Only render if items are not complex (complex items are handled differently)\n return !hasComplexArrayItems(schema)\n}\n"],"mappings":";;;;;;;;;;AAYA,IAAa,oCAAoC,QAAkC,gBAAiC;CAElH,IAAI,CAAC,UAAU,CAAC,cAAc,MAAM,GAClC,OAAO;CAIT,MAAM,QAAQ,OAAO;CACrB,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,EAAE,eAAe,QAC1D,OAAO;CAIT,OAAO,CAAC,qBAAqB,MAAM;AACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-property-names.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/sort-property-names.ts"],"sourcesContent":["import type { ApiReferenceConfiguration } from '@scalar/types/api-reference'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type { DiscriminatorObject, SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { isTypeObject } from './is-type-object'\n\n/** Extract the type of properties */\ntype Properties = NonNullable<Extract<SchemaObject, { type: 'object' }>['properties']>\n\ntype Options = Partial<\n Pick<ApiReferenceConfiguration, 'orderSchemaPropertiesBy' | 'orderRequiredPropertiesFirst'> & {\n hideReadOnly: boolean\n hideWriteOnly: boolean\n }\n>\n\n/** Take a list of property names and reduce it back into an object */\nexport const reduceNamesToObject = (names: string[], properties: Properties): Properties =>\n names.reduce((acc, name) => {\n const prop = properties?.[name]\n if (prop) {\n acc[name] = prop\n }\n return acc\n }, {} as Properties)\n\n/** Sort property names in an object schema */\nexport const sortPropertyNames = (\n schema: SchemaObject,\n discriminator?: DiscriminatorObject,\n {\n hideReadOnly = false,\n hideWriteOnly = false,\n orderSchemaPropertiesBy = 'alpha',\n orderRequiredPropertiesFirst = true,\n }: Options = {},\n): string[] => {\n if (!isTypeObject(schema) || !schema.properties) {\n return []\n }\n\n const propertyNames = Object.keys(schema.properties)\n const requiredPropertiesSet = new Set(schema.required || [])\n\n return propertyNames\n .sort((a, b) => {\n const aDiscriminator = a === discriminator?.propertyName\n const bDiscriminator = b === discriminator?.propertyName\n\n const aRequired = requiredPropertiesSet.has(a)\n const bRequired = requiredPropertiesSet.has(b)\n\n // Discriminator comes first always\n if (aDiscriminator && !bDiscriminator) {\n return -1\n }\n if (!aDiscriminator && bDiscriminator) {\n return 1\n }\n\n // Sort by x-order specification extension when present\n const aSchema = schema.properties?.[a]\n const bSchema = schema.properties?.[b]\n const aOrder =\n aSchema && typeof aSchema === 'object' && 'x-order' in aSchema\n ? (aSchema as Record<string, unknown>)['x-order']\n : undefined\n const bOrder =\n bSchema && typeof bSchema === 'object' && 'x-order' in bSchema\n ? (bSchema as Record<string, unknown>)['x-order']\n : undefined\n\n if (aOrder !== undefined && bOrder !== undefined) {\n return Number(aOrder) - Number(bOrder)\n }\n if (aOrder !== undefined && bOrder === undefined) {\n return -1\n }\n if (aOrder === undefined && bOrder !== undefined) {\n return 1\n }\n\n // Order required properties first\n if (orderRequiredPropertiesFirst) {\n // If one is required and the other isn't, required comes first\n if (aRequired && !bRequired) {\n return -1\n }\n if (!aRequired && bRequired) {\n return 1\n }\n }\n\n // If both have the same required status, sort alphabetically\n if (orderSchemaPropertiesBy === 'alpha') {\n return a.localeCompare(b)\n }\n\n return 0\n })\n .filter((property) => {\n const resolved = schema.properties && resolve.schema(schema.properties[property])\n\n // If hideReadOnly is true, filter out properties that are readOnly\n if (hideReadOnly && resolved?.readOnly === true) {\n return false\n }\n // If hideWriteOnly is true, filter out properties that are writeOnly\n if (hideWriteOnly && resolved?.writeOnly === true) {\n return false\n }\n return true\n })\n}\n"],"mappings":";;;;AAiBA,IAAa,uBAAuB,OAAiB,eACnD,MAAM,QAAQ,KAAK,SAAS;CAC1B,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"sort-property-names.js","names":[],"sources":["../../../../../src/components/Content/Schema/helpers/sort-property-names.ts"],"sourcesContent":["import type { ApiReferenceConfiguration } from '@scalar/types/api-reference'\nimport { resolve } from '@scalar/workspace-store/resolve'\nimport type { DiscriminatorObject, SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport { isTypeObject } from './is-type-object'\n\n/** Extract the type of properties */\ntype Properties = NonNullable<Extract<SchemaObject, { type: 'object' }>['properties']>\n\ntype Options = Partial<\n Pick<ApiReferenceConfiguration, 'orderSchemaPropertiesBy' | 'orderRequiredPropertiesFirst'> & {\n hideReadOnly: boolean\n hideWriteOnly: boolean\n }\n>\n\n/** Take a list of property names and reduce it back into an object */\nexport const reduceNamesToObject = (names: string[], properties: Properties): Properties =>\n names.reduce((acc, name) => {\n const prop = properties?.[name]\n if (prop) {\n acc[name] = prop\n }\n return acc\n }, {} as Properties)\n\n/** Sort property names in an object schema */\nexport const sortPropertyNames = (\n schema: SchemaObject,\n discriminator?: DiscriminatorObject,\n {\n hideReadOnly = false,\n hideWriteOnly = false,\n orderSchemaPropertiesBy = 'alpha',\n orderRequiredPropertiesFirst = true,\n }: Options = {},\n): string[] => {\n if (!isTypeObject(schema) || !schema.properties) {\n return []\n }\n\n const propertyNames = Object.keys(schema.properties)\n const requiredPropertiesSet = new Set(schema.required || [])\n\n return propertyNames\n .sort((a, b) => {\n const aDiscriminator = a === discriminator?.propertyName\n const bDiscriminator = b === discriminator?.propertyName\n\n const aRequired = requiredPropertiesSet.has(a)\n const bRequired = requiredPropertiesSet.has(b)\n\n // Discriminator comes first always\n if (aDiscriminator && !bDiscriminator) {\n return -1\n }\n if (!aDiscriminator && bDiscriminator) {\n return 1\n }\n\n // Sort by x-order specification extension when present\n const aSchema = schema.properties?.[a]\n const bSchema = schema.properties?.[b]\n const aOrder =\n aSchema && typeof aSchema === 'object' && 'x-order' in aSchema\n ? (aSchema as Record<string, unknown>)['x-order']\n : undefined\n const bOrder =\n bSchema && typeof bSchema === 'object' && 'x-order' in bSchema\n ? (bSchema as Record<string, unknown>)['x-order']\n : undefined\n\n if (aOrder !== undefined && bOrder !== undefined) {\n return Number(aOrder) - Number(bOrder)\n }\n if (aOrder !== undefined && bOrder === undefined) {\n return -1\n }\n if (aOrder === undefined && bOrder !== undefined) {\n return 1\n }\n\n // Order required properties first\n if (orderRequiredPropertiesFirst) {\n // If one is required and the other isn't, required comes first\n if (aRequired && !bRequired) {\n return -1\n }\n if (!aRequired && bRequired) {\n return 1\n }\n }\n\n // If both have the same required status, sort alphabetically\n if (orderSchemaPropertiesBy === 'alpha') {\n return a.localeCompare(b)\n }\n\n return 0\n })\n .filter((property) => {\n const resolved = schema.properties && resolve.schema(schema.properties[property])\n\n // If hideReadOnly is true, filter out properties that are readOnly\n if (hideReadOnly && resolved?.readOnly === true) {\n return false\n }\n // If hideWriteOnly is true, filter out properties that are writeOnly\n if (hideWriteOnly && resolved?.writeOnly === true) {\n return false\n }\n return true\n })\n}\n"],"mappings":";;;;AAiBA,IAAa,uBAAuB,OAAiB,eACnD,MAAM,QAAQ,KAAK,SAAS;CAC1B,MAAM,OAAO,aAAa;CAC1B,IAAI,MACF,IAAI,QAAQ;CAEd,OAAO;AACT,GAAG,CAAC,CAAe;;AAGrB,IAAa,qBACX,QACA,eACA,EACE,eAAe,OACf,gBAAgB,OAChB,0BAA0B,SAC1B,+BAA+B,SACpB,CAAC,MACD;CACb,IAAI,CAAC,aAAa,MAAM,KAAK,CAAC,OAAO,YACnC,OAAO,CAAC;CAGV,MAAM,gBAAgB,OAAO,KAAK,OAAO,UAAU;CACnD,MAAM,wBAAwB,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC;CAE3D,OAAO,cACJ,MAAM,GAAG,MAAM;EACd,MAAM,iBAAiB,MAAM,eAAe;EAC5C,MAAM,iBAAiB,MAAM,eAAe;EAE5C,MAAM,YAAY,sBAAsB,IAAI,CAAC;EAC7C,MAAM,YAAY,sBAAsB,IAAI,CAAC;EAG7C,IAAI,kBAAkB,CAAC,gBACrB,OAAO;EAET,IAAI,CAAC,kBAAkB,gBACrB,OAAO;EAIT,MAAM,UAAU,OAAO,aAAa;EACpC,MAAM,UAAU,OAAO,aAAa;EACpC,MAAM,SACJ,WAAW,OAAO,YAAY,YAAY,aAAa,UAClD,QAAoC,aACrC,KAAA;EACN,MAAM,SACJ,WAAW,OAAO,YAAY,YAAY,aAAa,UAClD,QAAoC,aACrC,KAAA;EAEN,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,GACrC,OAAO,OAAO,MAAM,IAAI,OAAO,MAAM;EAEvC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,GACrC,OAAO;EAET,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,GACrC,OAAO;EAIT,IAAI,8BAA8B;GAEhC,IAAI,aAAa,CAAC,WAChB,OAAO;GAET,IAAI,CAAC,aAAa,WAChB,OAAO;EAEX;EAGA,IAAI,4BAA4B,SAC9B,OAAO,EAAE,cAAc,CAAC;EAG1B,OAAO;CACT,CAAC,CAAC,CACD,QAAQ,aAAa;EACpB,MAAM,WAAW,OAAO,cAAc,QAAQ,OAAO,OAAO,WAAW,SAAS;EAGhF,IAAI,gBAAgB,UAAU,aAAa,MACzC,OAAO;EAGT,IAAI,iBAAiB,UAAU,cAAc,MAC3C,OAAO;EAET,OAAO;CACT,CAAC;AACL"}
|
|
@@ -2,7 +2,7 @@ import ClassicLayout_default from "./components/ClassicLayout.vue.js";
|
|
|
2
2
|
import ModernLayout_default from "./components/ModernLayout.vue.js";
|
|
3
3
|
import { createBlock, defineComponent, openBlock, renderSlot, withCtx } from "vue";
|
|
4
4
|
//#region src/components/Content/Tags/Tag.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var Tag_vue_vue_type_script_setup_true_lang_default =
|
|
5
|
+
var Tag_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
6
6
|
__name: "Tag",
|
|
7
7
|
props: {
|
|
8
8
|
tag: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.vue.script.js","names":[],"sources":["../../../../src/components/Content/Tags/Tag.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport ClassicLayout from './components/ClassicLayout.vue'\nimport ModernLayout from './components/ModernLayout.vue'\n\nconst { tag, layout, moreThanOneTag } = defineProps<{\n tag: TraversedTag\n layout: 'classic' | 'modern'\n moreThanOneTag: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <template v-if=\"layout === 'classic'\">\n <ClassicLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :layout=\"layout\"\n :tag=\"tag\">\n <slot />\n </ClassicLayout>\n </template>\n <template v-else>\n <ModernLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :layout=\"layout\"\n :moreThanOneTag=\"moreThanOneTag\"\n :tag=\"tag\">\n <slot />\n </ModernLayout>\n </template>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;UAiBkB,QAAA,WAAM,aAAA,
|
|
1
|
+
{"version":3,"file":"Tag.vue.script.js","names":[],"sources":["../../../../src/components/Content/Tags/Tag.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport ClassicLayout from './components/ClassicLayout.vue'\nimport ModernLayout from './components/ModernLayout.vue'\n\nconst { tag, layout, moreThanOneTag } = defineProps<{\n tag: TraversedTag\n layout: 'classic' | 'modern'\n moreThanOneTag: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <template v-if=\"layout === 'classic'\">\n <ClassicLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :layout=\"layout\"\n :tag=\"tag\">\n <slot />\n </ClassicLayout>\n </template>\n <template v-else>\n <ModernLayout\n :eventBus=\"eventBus\"\n :isCollapsed=\"isCollapsed\"\n :layout=\"layout\"\n :moreThanOneTag=\"moreThanOneTag\"\n :tag=\"tag\">\n <slot />\n </ModernLayout>\n </template>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;UAiBkB,QAAA,WAAM,aAAA,UAAA,GACpB,YAMgB,uBAAA;;IALb,UAAU,QAAA;IACV,aAAa,QAAA;IACb,QAAQ,QAAA;IACR,KAAK,QAAA;;2BACE,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA;;;;;;;uBAIV,YAOe,sBAAA;;IANZ,UAAU,QAAA;IACV,aAAa,QAAA;IACb,QAAQ,QAAA;IACR,gBAAgB,QAAA;IAChB,KAAK,QAAA;;2BACE,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicLayout.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Content/Tags/components/ClassicLayout.vue"],"names":[],"mappings":"AA2FA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAS9E,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,YAAY,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"ClassicLayout.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Content/Tags/components/ClassicLayout.vue"],"names":[],"mappings":"AA2FA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAS9E,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,YAAY,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACnC,CAAC;AAqJF,QAAA,IAAI,QAAQ,IAAY,CAAE;AAC1B,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAKhD,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_
|
|
|
2
2
|
import ClassicLayout_vue_vue_type_script_setup_true_lang_default from "./ClassicLayout.vue.script.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/Content/Tags/components/ClassicLayout.vue
|
|
5
|
-
var ClassicLayout_default =
|
|
5
|
+
var ClassicLayout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ClassicLayout_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ee09ae3d"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { ClassicLayout_default as default };
|
|
8
8
|
|
|
@@ -5,7 +5,7 @@ import Anchor_default from "../../../Anchor/Anchor.vue.js";
|
|
|
5
5
|
import { createBlock, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx } from "vue";
|
|
6
6
|
import { ScalarMarkdown } from "@scalar/components/markdown";
|
|
7
7
|
//#region src/components/Content/Tags/components/ClassicLayout.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
-
var ClassicLayout_vue_vue_type_script_setup_true_lang_default =
|
|
8
|
+
var ClassicLayout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
9
9
|
__name: "ClassicLayout",
|
|
10
10
|
props: {
|
|
11
11
|
tag: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicLayout.vue.script.js","names":[],"sources":["../../../../../src/components/Content/Tags/components/ClassicLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport { Anchor } from '@/components/Anchor'\nimport {\n SectionContainerAccordion,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\n\nconst { tag, isCollapsed } = defineProps<{\n tag: TraversedTag\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <SectionContainerAccordion\n :aria-label=\"tag.title\"\n class=\"tag-section\"\n :class=\"{ 'tag-section-group': tag.isGroup }\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id: tag.id, open: value })\n \">\n <template #title>\n <SectionHeader\n class=\"tag-name\"\n :class=\"{ 'tag-group-name': tag.isGroup }\">\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag :level=\"2\">\n {{ tag.title }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <ScalarMarkdown\n class=\"tag-description\"\n :value=\"tag?.description\"\n withImages />\n </template>\n <slot />\n </SectionContainerAccordion>\n</template>\n\n<style scoped>\n.tag-section {\n margin-bottom: 48px;\n}\n.tag-name {\n text-transform: capitalize;\n}\n.tag-description {\n padding-bottom: 4px;\n text-align: left;\n}\n\n/* Tag Groups */\n.tag-section-group .tag-group-name {\n gap: 12px;\n align-self: stretch;\n grid-template-columns: auto 1fr;\n}\n.tag-group-name:after {\n content: '';\n display: block;\n height: 1px;\n align-self: center;\n background: var(--scalar-border-color);\n}\n.tag-group-name:has(* > *:hover),\n.tag-group-name:has(:focus-visible) {\n gap: 32px;\n}\n.tag-section-group .tag-section {\n padding-inline: 0;\n margin-bottom: 24px;\n}\n.tag-section-group .tag-section:last-of-type {\n margin-bottom: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;uBAoBE,YA2B4B,MAAA,
|
|
1
|
+
{"version":3,"file":"ClassicLayout.vue.script.js","names":[],"sources":["../../../../../src/components/Content/Tags/components/ClassicLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\n\nimport { Anchor } from '@/components/Anchor'\nimport {\n SectionContainerAccordion,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\n\nconst { tag, isCollapsed } = defineProps<{\n tag: TraversedTag\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\n</script>\n\n<template>\n <SectionContainerAccordion\n :aria-label=\"tag.title\"\n class=\"tag-section\"\n :class=\"{ 'tag-section-group': tag.isGroup }\"\n :modelValue=\"!isCollapsed\"\n @update:modelValue=\"\n (value) => eventBus?.emit('toggle:nav-item', { id: tag.id, open: value })\n \">\n <template #title>\n <SectionHeader\n class=\"tag-name\"\n :class=\"{ 'tag-group-name': tag.isGroup }\">\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag :level=\"2\">\n {{ tag.title }}\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <ScalarMarkdown\n class=\"tag-description\"\n :value=\"tag?.description\"\n withImages />\n </template>\n <slot />\n </SectionContainerAccordion>\n</template>\n\n<style scoped>\n.tag-section {\n margin-bottom: 48px;\n}\n.tag-name {\n text-transform: capitalize;\n}\n.tag-description {\n padding-bottom: 4px;\n text-align: left;\n}\n\n/* Tag Groups */\n.tag-section-group .tag-group-name {\n gap: 12px;\n align-self: stretch;\n grid-template-columns: auto 1fr;\n}\n.tag-group-name:after {\n content: '';\n display: block;\n height: 1px;\n align-self: center;\n background: var(--scalar-border-color);\n}\n.tag-group-name:has(* > *:hover),\n.tag-group-name:has(:focus-visible) {\n gap: 32px;\n}\n.tag-section-group .tag-section {\n padding-inline: 0;\n margin-bottom: 24px;\n}\n.tag-section-group .tag-section:last-of-type {\n margin-bottom: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;uBAoBE,YA2B4B,MAAA,iCAAA,GAAA;IA1BzB,cAAY,QAAA,IAAI;IACjB,OAAK,eAAA,CAAC,eAAa,EAAA,qBACY,QAAA,IAAI,QAAO,CAAA,CAAA;IACzC,YAAU,CAAG,QAAA;IACb,uBAAiB,OAAA,OAAA,OAAA,MAAU,UAAU,QAAA,UAAU,KAAI,mBAAA;KAAA,IAA0B,QAAA,IAAI;KAAE,MAAQ;IAAK,CAAA;;IAGtF,OAAK,cAYE,CAXhB,YAWgB,MAAA,qBAAA,GAAA,EAVd,OAAK,eAAA,CAAC,YAAU,EAAA,kBACY,QAAA,IAAI,QAAO,CAAA,CAAA,EAAA,GAAA;4BAQ9B,CAPT,YAOS,MAAA,cAAA,GAAA,EANN,iBAAa,OAAA,OAAA,OAAA,WAAqB,QAAA,UAAU,KAAI,qBAAA,EAAA,IAA4B,QAAA,IAAI,GAAE,CAAA,GAAA,GAAA;6BAKhE,CAFnB,YAEmB,MAAA,wBAAA,GAAA,EAFA,OAAO,EAAC,GAAA;8BACV,CAAA,gBAAA,gBAAZ,QAAA,IAAI,KAAK,GAAA,CAAA,CAAA,CAAA;;;;;;sBAIlB,YAGe,MAAA,cAAA,GAAA;KAFb,OAAM;KACL,OAAO,QAAA,KAAK;KACb,YAAA;;2BAEI,CAAR,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModernLayout.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Content/Tags/components/ModernLayout.vue"],"names":[],"mappings":"AAqEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAS9E,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,YAAY,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"ModernLayout.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Content/Tags/components/ModernLayout.vue"],"names":[],"mappings":"AAqEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAS9E,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,YAAY,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACnC,CAAC;AA+GF,QAAA,IAAI,QAAQ,IAAY,CAAE;AAC1B,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAKhD,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_
|
|
|
2
2
|
import ModernLayout_vue_vue_type_script_setup_true_lang_default from "./ModernLayout.vue.script.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/Content/Tags/components/ModernLayout.vue
|
|
5
|
-
var ModernLayout_default =
|
|
5
|
+
var ModernLayout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ModernLayout_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-76bc20f3"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { ModernLayout_default as default };
|
|
8
8
|
|
|
@@ -8,7 +8,7 @@ var _hoisted_1 = {
|
|
|
8
8
|
key: 2,
|
|
9
9
|
class: "contents divide-y"
|
|
10
10
|
};
|
|
11
|
-
var ModernLayout_vue_vue_type_script_setup_true_lang_default =
|
|
11
|
+
var ModernLayout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
12
12
|
__name: "ModernLayout",
|
|
13
13
|
props: {
|
|
14
14
|
tag: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModernLayout.vue.script.js","names":[],"sources":["../../../../../src/components/Content/Tags/components/ModernLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed, useId } from 'vue'\n\nimport { SectionContainer } from '@/components/Section'\nimport ShowMoreButton from '@/components/ShowMoreButton.vue'\nimport { useLocalization } from '@/features/localization'\n\nimport TagSection from './TagSection.vue'\n\nconst { tag, moreThanOneTag } = defineProps<{\n tag: TraversedTag\n moreThanOneTag: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\nconst { translate } = useLocalization()\n\nconst headerId = useId()\n\nconst moreThanOneDefaultTag = computed(\n () => moreThanOneTag || tag?.title !== 'default' || tag?.description !== '',\n)\n\nconst hasChildren = computed(() => (tag?.children?.length ?? 0) > 0)\n</script>\n\n<template>\n <SectionContainer\n :aria-labelledby=\"headerId\"\n class=\"tag-section-container\"\n role=\"region\">\n <TagSection\n v-if=\"moreThanOneDefaultTag\"\n :eventBus=\"eventBus\"\n :headerId=\"headerId\"\n :isCollapsed=\"isCollapsed\"\n :tag=\"tag\" />\n <ShowMoreButton\n v-if=\"isCollapsed && moreThanOneTag && hasChildren\"\n :id=\"tag.id\"\n :aria-label=\"\n translate('navigation.showAllEndpoints', { name: tag.title })\n \"\n @click=\"\n () => eventBus?.emit('toggle:nav-item', { id: tag.id, open: true })\n \" />\n\n <!-- Show slot when section is expanded or single-tag (inverse of ShowMoreButton visibility). -->\n <div\n v-if=\"!(isCollapsed && moreThanOneTag)\"\n class=\"contents divide-y\">\n <slot />\n </div>\n </SectionContainer>\n</template>\n\n<style scoped>\n.section-container {\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.section-container:has(.show-more) {\n background-color: color-mix(in srgb, var(--scalar-background-2), transparent);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAiBA,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"ModernLayout.vue.script.js","names":[],"sources":["../../../../../src/components/Content/Tags/components/ModernLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed, useId } from 'vue'\n\nimport { SectionContainer } from '@/components/Section'\nimport ShowMoreButton from '@/components/ShowMoreButton.vue'\nimport { useLocalization } from '@/features/localization'\n\nimport TagSection from './TagSection.vue'\n\nconst { tag, moreThanOneTag } = defineProps<{\n tag: TraversedTag\n moreThanOneTag: boolean\n isCollapsed: boolean\n eventBus: WorkspaceEventBus | null\n}>()\nconst { translate } = useLocalization()\n\nconst headerId = useId()\n\nconst moreThanOneDefaultTag = computed(\n () => moreThanOneTag || tag?.title !== 'default' || tag?.description !== '',\n)\n\nconst hasChildren = computed(() => (tag?.children?.length ?? 0) > 0)\n</script>\n\n<template>\n <SectionContainer\n :aria-labelledby=\"headerId\"\n class=\"tag-section-container\"\n role=\"region\">\n <TagSection\n v-if=\"moreThanOneDefaultTag\"\n :eventBus=\"eventBus\"\n :headerId=\"headerId\"\n :isCollapsed=\"isCollapsed\"\n :tag=\"tag\" />\n <ShowMoreButton\n v-if=\"isCollapsed && moreThanOneTag && hasChildren\"\n :id=\"tag.id\"\n :aria-label=\"\n translate('navigation.showAllEndpoints', { name: tag.title })\n \"\n @click=\"\n () => eventBus?.emit('toggle:nav-item', { id: tag.id, open: true })\n \" />\n\n <!-- Show slot when section is expanded or single-tag (inverse of ShowMoreButton visibility). -->\n <div\n v-if=\"!(isCollapsed && moreThanOneTag)\"\n class=\"contents divide-y\">\n <slot />\n </div>\n </SectionContainer>\n</template>\n\n<style scoped>\n.section-container {\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n}\n.section-container:has(.show-more) {\n background-color: color-mix(in srgb, var(--scalar-background-2), transparent);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAiBA,MAAM,EAAE,cAAc,gBAAgB;EAEtC,MAAM,WAAW,MAAM;EAEvB,MAAM,wBAAwB,eACtB,QAAA,kBAAkB,QAAA,KAAK,UAAU,aAAa,QAAA,KAAK,gBAAgB,EAC3E;EAEA,MAAM,cAAc,gBAAgB,QAAA,KAAK,UAAU,UAAU,KAAK,CAAC;;uBAIjE,YA0BmB,MAAA,wBAAA,GAAA;IAzBhB,mBAAiB,MAAA,QAAA;IAClB,OAAM;IACN,MAAK;;2BAMU;KAJP,sBAAA,SAAA,UAAA,GADR,YAKe,oBAAA;;MAHZ,UAAU,QAAA;MACV,UAAU,MAAA,QAAA;MACV,aAAa,QAAA;MACb,KAAK,QAAA;;;;;;;KAEA,QAAA,eAAe,QAAA,kBAAkB,YAAA,SAAA,UAAA,GADzC,YAQM,wBAAA;;MANH,IAAI,QAAA,IAAI;MACR,cAAqB,MAAA,SAAA,CAAS,CAAA,+BAAA,EAAA,MAAwC,QAAA,IAAI,MAAK,CAAA;MAG/E,SAAK,OAAA,OAAA,OAAA,WAAiB,QAAA,UAAU,KAAI,mBAAA;OAAA,IAA0B,QAAA,IAAI;OAAE,MAAA;MAAA,CAAA;;OAM7D,QAAA,eAAe,QAAA,mBAAA,UAAA,GADzB,mBAIM,OAJN,YAIM,CADJ,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagSection.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Content/Tags/components/TagSection.vue"],"names":[],"mappings":"AAwFA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAkB9E,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,YAAY,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"TagSection.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Content/Tags/components/TagSection.vue"],"names":[],"mappings":"AAwFA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAkB9E,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,YAAY,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACnC,CAAC;AA6OF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -13,7 +13,7 @@ import OperationsList_default from "../../../OperationsList/OperationsList.vue.j
|
|
|
13
13
|
import { computed, createBlock, createCommentVNode, createTextVNode, createVNode, defineComponent, openBlock, toDisplayString, unref, withCtx } from "vue";
|
|
14
14
|
import { ScalarMarkdown } from "@scalar/components/markdown";
|
|
15
15
|
//#region src/components/Content/Tags/components/TagSection.vue?vue&type=script&setup=true&lang.ts
|
|
16
|
-
var TagSection_vue_vue_type_script_setup_true_lang_default =
|
|
16
|
+
var TagSection_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
17
17
|
__name: "TagSection",
|
|
18
18
|
props: {
|
|
19
19
|
tag: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagSection.vue.script.js","names":[],"sources":["../../../../../src/components/Content/Tags/components/TagSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport ChannelsList from '@/components/Content/AsyncApi/ChannelsList.vue'\nimport { OperationsList } from '@/components/OperationsList'\nimport ScreenReader from '@/components/ScreenReader.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport { useLocalization } from '@/features/localization'\nimport { SpecificationExtension } from '@/features/specification-extension'\n\nconst { tag, headerId, isCollapsed } = defineProps<{\n tag: TraversedTag\n headerId?: string\n isCollapsed?: boolean\n eventBus: WorkspaceEventBus | null\n}>()\nconst { translate } = useLocalization()\n\n/**\n * AsyncAPI tags carry `asyncapi-channel` children instead of `operation`/`webhook`,\n * so they get a dedicated channel list rather than the (empty) operations card.\n */\nconst hasChannels = computed(\n () =>\n tag.children?.some((child) => child.type === 'asyncapi-channel') ?? false,\n)\n</script>\n<template>\n <Section\n v-if=\"tag\"\n :id=\"tag.id\"\n role=\"none\"\n @intersecting=\"\n () => eventBus?.emit('intersecting:nav-item', { id: tag.id })\n \">\n <SectionHeader>\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag\n :id=\"headerId\"\n :level=\"2\">\n {{ tag.title }}\n <ScreenReader v-if=\"isCollapsed\">\n ({{ translate('navigation.collapsed') }})\n </ScreenReader>\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <SectionContent>\n <SectionColumns>\n <SectionColumn>\n <ScalarMarkdown\n :clamp=\"isCollapsed ? 7 : undefined\"\n :value=\"tag?.description ?? ''\"\n withImages />\n </SectionColumn>\n <SectionColumn>\n <ChannelsList\n v-if=\"hasChannels\"\n :eventBus=\"eventBus\"\n :tag=\"tag\" />\n <OperationsList\n v-else\n :eventBus=\"eventBus\"\n :tag=\"tag\" />\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n <SpecificationExtension :value=\"tag.xKeys\" />\n </Section>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"TagSection.vue.script.js","names":[],"sources":["../../../../../src/components/Content/Tags/components/TagSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarMarkdown } from '@scalar/components/markdown'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { TraversedTag } from '@scalar/workspace-store/schemas/navigation'\nimport { computed } from 'vue'\n\nimport { Anchor } from '@/components/Anchor'\nimport ChannelsList from '@/components/Content/AsyncApi/ChannelsList.vue'\nimport { OperationsList } from '@/components/OperationsList'\nimport ScreenReader from '@/components/ScreenReader.vue'\nimport {\n Section,\n SectionColumn,\n SectionColumns,\n SectionContent,\n SectionHeader,\n SectionHeaderTag,\n} from '@/components/Section'\nimport { useLocalization } from '@/features/localization'\nimport { SpecificationExtension } from '@/features/specification-extension'\n\nconst { tag, headerId, isCollapsed } = defineProps<{\n tag: TraversedTag\n headerId?: string\n isCollapsed?: boolean\n eventBus: WorkspaceEventBus | null\n}>()\nconst { translate } = useLocalization()\n\n/**\n * AsyncAPI tags carry `asyncapi-channel` children instead of `operation`/`webhook`,\n * so they get a dedicated channel list rather than the (empty) operations card.\n */\nconst hasChannels = computed(\n () =>\n tag.children?.some((child) => child.type === 'asyncapi-channel') ?? false,\n)\n</script>\n<template>\n <Section\n v-if=\"tag\"\n :id=\"tag.id\"\n role=\"none\"\n @intersecting=\"\n () => eventBus?.emit('intersecting:nav-item', { id: tag.id })\n \">\n <SectionHeader>\n <Anchor\n @copyAnchorUrl=\"\n () => eventBus?.emit('copy-url:nav-item', { id: tag.id })\n \">\n <SectionHeaderTag\n :id=\"headerId\"\n :level=\"2\">\n {{ tag.title }}\n <ScreenReader v-if=\"isCollapsed\">\n ({{ translate('navigation.collapsed') }})\n </ScreenReader>\n </SectionHeaderTag>\n </Anchor>\n </SectionHeader>\n <SectionContent>\n <SectionColumns>\n <SectionColumn>\n <ScalarMarkdown\n :clamp=\"isCollapsed ? 7 : undefined\"\n :value=\"tag?.description ?? ''\"\n withImages />\n </SectionColumn>\n <SectionColumn>\n <ChannelsList\n v-if=\"hasChannels\"\n :eventBus=\"eventBus\"\n :tag=\"tag\" />\n <OperationsList\n v-else\n :eventBus=\"eventBus\"\n :tag=\"tag\" />\n </SectionColumn>\n </SectionColumns>\n </SectionContent>\n <SpecificationExtension :value=\"tag.xKeys\" />\n </Section>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,EAAE,cAAc,gBAAgB;;;;;EAMtC,MAAM,cAAc,eAEhB,QAAA,IAAI,UAAU,MAAM,UAAU,MAAM,SAAS,kBAAkB,KAAK,KACxE;;UAIU,QAAA,OAAA,UAAA,GADR,YA2CU,MAAA,eAAA,GAAA;;IAzCP,IAAI,QAAA,IAAI;IACT,MAAK;IACJ,gBAAY,OAAA,OAAA,OAAA,WAAe,QAAA,UAAU,KAAI,yBAAA,EAAA,IAAgC,QAAA,IAAI,GAAE,CAAA;;2BAiBhE;KAdhB,YAcgB,MAAA,qBAAA,GAAA,MAAA;6BADL,CAZT,YAYS,MAAA,cAAA,GAAA,EAXN,iBAAa,OAAA,OAAA,OAAA,WAAmB,QAAA,UAAU,KAAI,qBAAA,EAAA,IAA4B,QAAA,IAAI,GAAE,CAAA,GAAA,GAAA;8BAU9D,CAPnB,YAOmB,MAAA,wBAAA,GAAA;QANhB,IAAI,QAAA;QACJ,OAAO;;+BACO,CAAA,gBAAA,gBAAZ,QAAA,IAAI,KAAK,IAAG,KACf,CAAA,GAAoB,QAAA,eAAA,UAAA,GAApB,YAEe,sBAAA,EAAA,KAAA,EAAA,GAAA;gCADZ,CAAA,gBAD8B,OAC9B,gBAAG,MAAA,SAAA,CAAS,CAAA,sBAAA,CAAA,IAA2B,MAC1C,CAAA,CAAA,CAAA;;;;;;;;;KAIN,YAmBiB,MAAA,sBAAA,GAAA,MAAA;6BADE,CAjBjB,YAiBiB,MAAA,sBAAA,GAAA,MAAA;8BAXC,CALhB,YAKgB,MAAA,qBAAA,GAAA,MAAA;+BADC,CAHf,YAGe,MAAA,cAAA,GAAA;SAFZ,OAAO,QAAA,cAAW,IAAO,KAAA;SACzB,OAAO,QAAA,KAAK,eAAW;SACxB,YAAA;;;WAEJ,YASgB,MAAA,qBAAA,GAAA,MAAA;+BALC,CAFP,YAAA,SAAA,UAAA,GADR,YAGe,sBAAA;;SADZ,UAAU,QAAA;SACV,KAAK,QAAA;0DACR,YAGe,MAAA,sBAAA,GAAA;;SADZ,UAAU,QAAA;SACV,KAAK,QAAA;;;;;;;;KAId,YAA6C,MAAA,8BAAA,GAAA,EAApB,OAAO,QAAA,IAAI,MAAA,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GettingStarted.vue.d.ts","sourceRoot":"","sources":["../../src/components/GettingStarted.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GettingStarted.vue.d.ts","sourceRoot":"","sources":["../../src/components/GettingStarted.vue"],"names":[],"mappings":"AA0dA,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI1D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,OAAO,CAAA;CACf,CAAC;AA0aF,QAAA,MAAM,YAAY;;YAvawB,OAAO;eAAS,MAAM;;;;;;;YAAtB,OAAO;eAAS,MAAM;;;;;kFA0a9D,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
|
|
|
2
2
|
import GettingStarted_vue_vue_type_script_setup_true_lang_default from "./GettingStarted.vue.script.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/GettingStarted.vue
|
|
5
|
-
var GettingStarted_default =
|
|
5
|
+
var GettingStarted_default = /*#__PURE__*/ _plugin_vue_export_helper_default(GettingStarted_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-c492e215"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { GettingStarted_default as default };
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GettingStarted.vue.js","names":[],"sources":["../../src/components/GettingStarted.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { themeLabels, type ThemeId } from '@scalar/themes'\n\nimport { useLocalization } from '@/features/localization'\n\ndefineProps<{\n theme: ThemeId\n}>()\nconst emits = defineEmits<{\n (e: 'changeTheme', { id, label }: { id: ThemeId; label: string }): void\n (e: 'loadSwaggerFile'): void\n (e: 'linkSwaggerFile'): void\n (e: 'updateContent', value: string): void\n}>()\n\nconst { translate } = useLocalization()\n\nconst themeIds: ThemeId[] = [\n 'default',\n 'alternate',\n 'moon',\n 'purple',\n 'solarized',\n 'bluePlanet',\n 'saturn',\n 'kepler',\n 'mars',\n 'deepSpace',\n]\n\nasync function fetchExampleSpecification() {\n const response = await fetch(\n 'https://registry.scalar.com/@scalar/apis/galaxy?format=yaml',\n )\n\n emits('updateContent', await response.text())\n}\n</script>\n<template>\n <div class=\"custom-scroll start\">\n <div class=\"start-copy\">\n <div class=\"start-logo\">\n <svg\n height=\"36\"\n viewBox=\"0 0 36 36\"\n width=\"36\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 0a18 18 0 1 1 0 36 18 18 0 0 1 0-36Zm11.2 6.5c-3.3-3.3-11.1-1-17.4 5.3-6.2 6.3-8.6 14-5.3 17.4 3.3 3.3 11 .9 17.3-5.4 6.3-6.2 8.7-14 5.4-17.3ZM17.6 12a6.3 6.3 0 1 1 0 12.7 6.3 6.3 0 0 1 0-12.7Z\"\n fill=\"currentColor\"\n fill-rule=\"evenodd\" />\n </svg>\n </div>\n <h1 class=\"start-h1\">\n {{ translate('gettingStarted.swaggerEditor') }}\n </h1>\n <p class=\"start-p\">\n {{ translate('gettingStarted.description') }}\n </p>\n <div class=\"start-cta\">\n <ScalarButton\n class=\"w-full\"\n @click=\"fetchExampleSpecification\">\n {{ translate('gettingStarted.showExample') }}\n </ScalarButton>\n <ScalarButton\n class=\"w-full\"\n variant=\"outlined\"\n @click=\"$emit('loadSwaggerFile')\">\n {{ translate('gettingStarted.uploadFile') }}\n </ScalarButton>\n </div>\n </div>\n <div class=\"start-row\">\n <div class=\"start-section start-section-integrations\">\n <div class=\"start-h2\">\n {{ translate('gettingStarted.integrations') }}\n </div>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/tree/main/integrations/fastify#readme\"\n target=\"_blank\">\n <svg\n fill=\"currentColor\"\n height=\"16\"\n viewBox=\"0 0 19 16\"\n width=\"19\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m18.2 3.1.8-2V.9l-4.7 1.3C15.2 1 15 0 15 0s-2.5 1.6-4.3 1.5c-2 0-3.6.8-4 1-1.8 1.2-2.5 3.3-3.2 3.8L0 8.9 2.3 8l-2 2.5c.2.3 1.2 1.6 2.1 1.3l.4-.1 1.6.5-.7-1 .2-.2.9.3-.1-.8.9.3-.1-.8.3-.1 1-3.5 3.7-2.6-.3.7A4 4 0 0 1 8 7l-.6.2c-.5.5-.7.7-.8 2.5a2 2 0 0 1 1 0c1.6.4 2.2 2.3 1.7 2.9l-.7.6H8v.6h-.7v.5l-.2.2c-.7 0-1.4-.6-1.4-.6 0 .5.4 1.3.4 1.3s1.7 1.1 2.7.7c1-.4.7-2.3 2.8-3.2l3.3-.9.8-2.2-1.7.5v-2l2.5-.6.9-2.2-3.4.9v-2l4.2-1.1Z\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\" />\n </svg>\n <span>Fastify</span>\n </a>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/blob/main/documentation/integrations/html-js.md#html\"\n target=\"_blank\">\n <svg\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M22.5 1.5h-21A1.5 1.5 0 0 0 0 3v3a1.5 1.5 0 0 0 1.5 1.5h21A1.5 1.5 0 0 0 24 6V3a1.5 1.5 0 0 0-1.5-1.5Zm-19.25 3A1.25 1.25 0 1 1 4.5 5.75 1.25 1.25 0 0 1 3.25 4.5ZM8.5 5.75A1.25 1.25 0 1 1 9.75 4.5 1.25 1.25 0 0 1 8.5 5.75Z\"\n fill=\"currentColor\" />\n <path\n d=\"M22.5 9h-21A1.5 1.5 0 0 0 0 10.5v3A1.5 1.5 0 0 0 1.5 15h21a1.5 1.5 0 0 0 1.5-1.5v-3A1.5 1.5 0 0 0 22.5 9ZM3.25 12a1.25 1.25 0 1 1 1.25 1.25A1.25 1.25 0 0 1 3.25 12Zm5.25 1.25A1.25 1.25 0 1 1 9.75 12a1.25 1.25 0 0 1-1.25 1.25Z\"\n fill=\"currentColor\" />\n <path\n d=\"M22.5 16.5h-21A1.5 1.5 0 0 0 0 18v3a1.5 1.5 0 0 0 1.5 1.5h21A1.5 1.5 0 0 0 24 21v-3a1.5 1.5 0 0 0-1.5-1.5Zm-19.25 3a1.25 1.25 0 1 1 1.25 1.25 1.25 1.25 0 0 1-1.25-1.25Zm5.25 1.25a1.25 1.25 0 1 1 1.25-1.25 1.25 1.25 0 0 1-1.25 1.25Z\"\n fill=\"currentColor\" />\n </g>\n </svg>\n <span>CDN</span>\n </a>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/blob/main/packages/api-reference/README.md#vuejs\"\n target=\"_blank\">\n <svg\n height=\"170\"\n viewBox=\"0 0 196.3 170\"\n width=\"196.3\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g\n fill=\"currentColor\"\n fill-rule=\"nonzero\">\n <polygon\n points=\"39.23 0 0 0 2.9450761 5.1010782 98.16 170.02 196.32 0 157.06 0 98.16 102.01 42.175701 5.0991171\" />\n <polygon\n points=\"75.5 2.009956e-14 0 2.009956e-14 2.94 5.1 78.44871 5.1 98.16 39.26 117.87937 5.1 193.38 5.1 196.325 0 120.82 7.8065636e-15 114.97322 2.009956e-14 98.16 29.037153 81.35 2.009956e-14\" />\n </g>\n </svg>\n <span>Vue</span>\n </a>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/blob/main/packages/api-reference-react/README.md#usage\"\n target=\"_blank\">\n <svg\n height=\"23.3\"\n viewBox=\"0 0 22 23.3\"\n width=\"22\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g\n fill=\"none\"\n fill-rule=\"evenodd\">\n <circle\n cx=\"11\"\n cy=\"11.6\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\"\n r=\"2\" />\n <g stroke=\"currentColor\">\n <ellipse\n cx=\"11\"\n cy=\"11.6\"\n rx=\"11\"\n ry=\"4.2\" />\n <ellipse\n cx=\"11\"\n cy=\"11.6\"\n rx=\"11\"\n ry=\"4.2\"\n transform=\"rotate(60 11 11.6)\" />\n <ellipse\n cx=\"11\"\n cy=\"11.6\"\n rx=\"11\"\n ry=\"4.2\"\n transform=\"rotate(120 11 11.6)\" />\n </g>\n </g>\n </svg>\n <span>React</span>\n </a>\n </div>\n <div class=\"start-section start-section-colors\">\n <p class=\"start-h2\">\n {{ translate('gettingStarted.theming') }}\n </p>\n <div\n v-for=\"themeId in themeIds\"\n :key=\"themeId\"\n class=\"start-item\"\n :class=\"{ 'start-item-active': themeId === theme }\"\n @click=\"\n $emit('changeTheme', { id: themeId, label: themeLabels[themeId] })\n \">\n {{ themeLabels[themeId] }}\n </div>\n </div>\n </div>\n <p class=\"start-h1\">{{ translate('gettingStarted.features') }}</p>\n <ul class=\"start-ul\">\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.customize') }}</p>\n {{ translate('gettingStarted.customizeDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.testing') }}</p>\n {{ translate('gettingStarted.testingDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.search') }}</p>\n {{ translate('gettingStarted.searchDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.hosting') }}</p>\n {{ translate('gettingStarted.hostingDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">\n {{ translate('gettingStarted.openApiSwagger') }}\n </p>\n {{ translate('gettingStarted.openApiSwaggerDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.codeSamples') }}</p>\n {{ translate('gettingStarted.codeSamplesDescription') }}\n </li>\n </ul>\n </div>\n</template>\n<style scoped>\n.start {\n padding: 24px;\n display: flex;\n flex-flow: wrap;\n justify-content: space-between;\n position: relative;\n z-index: 0;\n}\n.swagger-editor .start {\n padding-top: 24px;\n}\n.start-h1 {\n font-size: var(--scalar-heading-2);\n margin-top: 0;\n line-height: 1.45;\n margin-bottom: 0;\n font-weight: var(--scalar-bold);\n color: var(--scalar-color-1);\n width: 100%;\n position: relative;\n}\n.start-h3 {\n font-size: var(--scalar-paragraph);\n margin-top: 0;\n margin-bottom: 6px;\n display: block;\n line-height: 1.45;\n font-weight: var(--scalar-bold);\n color: var(--scalar-color-1);\n width: 100%;\n}\n.start-h1:not(:first-of-type) {\n margin-top: 24px;\n}\n.start-p {\n font-size: var(--scalar-paragraph);\n color: var(--scalar-color-2);\n line-height: 1.5;\n width: 100%;\n margin-top: 12px;\n}\n.start-ul {\n margin-top: 12px;\n font-size: var(--scalar-paragraph);\n line-height: 1.5;\n padding-left: 0;\n list-style: initial;\n display: flex;\n flex-flow: wrap;\n gap: 24px;\n}\n.start-ul li {\n margin: 0;\n padding: 0;\n list-style: none;\n width: calc(50% - 24px);\n color: var(--scalar-color-2);\n}\n.start-ul li:first-of-type {\n margin-top: 0;\n}\n.start-section {\n width: 100%;\n margin-bottom: 12px;\n display: flex;\n flex-flow: wrap;\n}\n.start-section:last-of-type {\n margin-bottom: 48px;\n}\n.start-h2 {\n background: var(--scalar-background-2);\n border-top-left-radius: var(--scalar-radius-lg);\n border-top-right-radius: var(--scalar-radius-lg);\n border: 1px solid var(--scalar-border-color);\n color: var(--scalar-color-3);\n font-size: var(--scalar-mini);\n font-weight: var(--scalar-semibold);\n padding: 9px;\n width: 100%;\n}\n.start-item {\n align-items: center;\n background: var(--scalar-background-2);\n border-right: 1px solid var(--scalar-border-color);\n border-bottom: 1px solid var(--scalar-border-color);\n color: var(--scalar-color-1);\n cursor: pointer;\n display: flex;\n flex: 1;\n font-size: var(--scalar-mini);\n font-weight: var(--scalar-semibold);\n padding: 9px;\n text-transform: capitalize;\n user-select: none;\n}\n.start-section-integrations .start-item:first-of-type {\n border-bottom-left-radius: var(--scalar-radius-lg);\n border-left: 1px solid var(--scalar-border-color);\n}\n.start-section-integrations .start-item:last-of-type {\n border-bottom-right-radius: var(--scalar-radius-lg);\n}\n.start-section-colors .start-item {\n min-width: 33.33%;\n}\n.start-section-colors .start-item:nth-child(3n + 2) {\n border-left: 1px solid var(--scalar-border-color);\n}\n.start-section-colors .start-item:last-of-type,\n.start-section-colors .start-item-active:last-of-type::before {\n border-radius: 0 0 var(--scalar-radius-lg) var(--scalar-radius-lg);\n}\n.start-item:empty {\n pointer-events: none;\n}\n.start-item svg {\n width: 14px;\n height: 14px;\n margin-right: 6px;\n}\n.start-item:hover {\n background: var(--scalar-background-3);\n}\n.start-item-active {\n z-index: 10;\n position: relative;\n color: var(--scalar-color-1);\n}\n.start-item-active::before {\n border: 1px solid var(--scalar-color-1);\n content: '';\n inset: -1px -1px -1px -1px;\n pointer-events: none;\n position: absolute;\n}\n.start-section-color .start-item {\n text-transform: capitalize;\n}\n.start-cta {\n display: flex;\n gap: 12px;\n width: 100%;\n margin-top: 24px;\n margin-bottom: 0;\n}\n.start-row {\n width: 100%;\n margin-top: 12px;\n overflow: hidden;\n}\n.start-hero-copy {\n background: var(--scalar-background-2);\n padding: 12px;\n border-radius: var(--scalar-radius-lg);\n}\n.start-p-small {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-mini);\n color: var(--scalar-color-2);\n margin-bottom: 12px;\n line-height: 1.4;\n}\n.start-cta {\n margin-bottom: 12px;\n width: fit-content;\n white-space: nowrap;\n}\n.start-copy {\n padding: 76px 48px 48px 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-align: center;\n}\n.start-logo {\n color: var(--scalar-color-1);\n margin-bottom: 24px;\n width: 72px;\n aspect-ratio: 1;\n position: relative;\n box-shadow: var(--scalar-shadow-2);\n border-radius: var(--scalar-radius-full);\n}\n.start-logo:before {\n content: '';\n width: 300%;\n aspect-ratio: 1;\n left: -100%;\n top: -100%;\n position: absolute;\n z-index: -1;\n border-radius: var(--scalar-radius-full);\n background-size: 24px 24px;\n box-shadow:\n inset 0 0 50px var(--scalar-background-1),\n inset 0 0 50px var(--scalar-background-1);\n background-image:\n linear-gradient(to right, var(--scalar-border-color) 1px, transparent 1px),\n linear-gradient(to bottom, var(--scalar-border-color) 1px, transparent 1px);\n}\n.start-logo svg {\n width: 100%;\n height: auto;\n background: var(--scalar-background-1);\n padding: 3px;\n border-radius: var(--scalar-radius-full);\n position: relative;\n}\n@media screen and (max-width: 600px) {\n .start-section-colors .start-item,\n .start-item {\n width: 100%;\n border-radius: 0;\n border-right: none;\n border-top: 1px solid var(--scalar-border-color);\n }\n .start-item:empty {\n display: none;\n }\n .start-h2 {\n border-bottom: none;\n }\n .start li {\n width: 100%;\n }\n .start-copy {\n padding: 48px 0 24px 0;\n }\n}\n@media screen and (max-width: 1000px) {\n .start {\n padding: 0;\n overflow: auto;\n }\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"GettingStarted.vue.js","names":[],"sources":["../../src/components/GettingStarted.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { themeLabels, type ThemeId } from '@scalar/themes'\n\nimport { useLocalization } from '@/features/localization'\n\ndefineProps<{\n theme: ThemeId\n}>()\nconst emits = defineEmits<{\n (e: 'changeTheme', { id, label }: { id: ThemeId; label: string }): void\n (e: 'loadSwaggerFile'): void\n (e: 'linkSwaggerFile'): void\n (e: 'updateContent', value: string): void\n}>()\n\nconst { translate } = useLocalization()\n\nconst themeIds: ThemeId[] = [\n 'default',\n 'alternate',\n 'moon',\n 'purple',\n 'solarized',\n 'bluePlanet',\n 'saturn',\n 'kepler',\n 'mars',\n 'deepSpace',\n]\n\nasync function fetchExampleSpecification() {\n const response = await fetch(\n 'https://registry.scalar.com/@scalar/apis/galaxy?format=yaml',\n )\n\n emits('updateContent', await response.text())\n}\n</script>\n<template>\n <div class=\"custom-scroll start\">\n <div class=\"start-copy\">\n <div class=\"start-logo\">\n <svg\n height=\"36\"\n viewBox=\"0 0 36 36\"\n width=\"36\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M18 0a18 18 0 1 1 0 36 18 18 0 0 1 0-36Zm11.2 6.5c-3.3-3.3-11.1-1-17.4 5.3-6.2 6.3-8.6 14-5.3 17.4 3.3 3.3 11 .9 17.3-5.4 6.3-6.2 8.7-14 5.4-17.3ZM17.6 12a6.3 6.3 0 1 1 0 12.7 6.3 6.3 0 0 1 0-12.7Z\"\n fill=\"currentColor\"\n fill-rule=\"evenodd\" />\n </svg>\n </div>\n <h1 class=\"start-h1\">\n {{ translate('gettingStarted.swaggerEditor') }}\n </h1>\n <p class=\"start-p\">\n {{ translate('gettingStarted.description') }}\n </p>\n <div class=\"start-cta\">\n <ScalarButton\n class=\"w-full\"\n @click=\"fetchExampleSpecification\">\n {{ translate('gettingStarted.showExample') }}\n </ScalarButton>\n <ScalarButton\n class=\"w-full\"\n variant=\"outlined\"\n @click=\"$emit('loadSwaggerFile')\">\n {{ translate('gettingStarted.uploadFile') }}\n </ScalarButton>\n </div>\n </div>\n <div class=\"start-row\">\n <div class=\"start-section start-section-integrations\">\n <div class=\"start-h2\">\n {{ translate('gettingStarted.integrations') }}\n </div>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/tree/main/integrations/fastify#readme\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <svg\n fill=\"currentColor\"\n height=\"16\"\n viewBox=\"0 0 19 16\"\n width=\"19\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m18.2 3.1.8-2V.9l-4.7 1.3C15.2 1 15 0 15 0s-2.5 1.6-4.3 1.5c-2 0-3.6.8-4 1-1.8 1.2-2.5 3.3-3.2 3.8L0 8.9 2.3 8l-2 2.5c.2.3 1.2 1.6 2.1 1.3l.4-.1 1.6.5-.7-1 .2-.2.9.3-.1-.8.9.3-.1-.8.3-.1 1-3.5 3.7-2.6-.3.7A4 4 0 0 1 8 7l-.6.2c-.5.5-.7.7-.8 2.5a2 2 0 0 1 1 0c1.6.4 2.2 2.3 1.7 2.9l-.7.6H8v.6h-.7v.5l-.2.2c-.7 0-1.4-.6-1.4-.6 0 .5.4 1.3.4 1.3s1.7 1.1 2.7.7c1-.4.7-2.3 2.8-3.2l3.3-.9.8-2.2-1.7.5v-2l2.5-.6.9-2.2-3.4.9v-2l4.2-1.1Z\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\" />\n </svg>\n <span>Fastify</span>\n </a>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/blob/main/documentation/integrations/html-js.md#html\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <svg\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M22.5 1.5h-21A1.5 1.5 0 0 0 0 3v3a1.5 1.5 0 0 0 1.5 1.5h21A1.5 1.5 0 0 0 24 6V3a1.5 1.5 0 0 0-1.5-1.5Zm-19.25 3A1.25 1.25 0 1 1 4.5 5.75 1.25 1.25 0 0 1 3.25 4.5ZM8.5 5.75A1.25 1.25 0 1 1 9.75 4.5 1.25 1.25 0 0 1 8.5 5.75Z\"\n fill=\"currentColor\" />\n <path\n d=\"M22.5 9h-21A1.5 1.5 0 0 0 0 10.5v3A1.5 1.5 0 0 0 1.5 15h21a1.5 1.5 0 0 0 1.5-1.5v-3A1.5 1.5 0 0 0 22.5 9ZM3.25 12a1.25 1.25 0 1 1 1.25 1.25A1.25 1.25 0 0 1 3.25 12Zm5.25 1.25A1.25 1.25 0 1 1 9.75 12a1.25 1.25 0 0 1-1.25 1.25Z\"\n fill=\"currentColor\" />\n <path\n d=\"M22.5 16.5h-21A1.5 1.5 0 0 0 0 18v3a1.5 1.5 0 0 0 1.5 1.5h21A1.5 1.5 0 0 0 24 21v-3a1.5 1.5 0 0 0-1.5-1.5Zm-19.25 3a1.25 1.25 0 1 1 1.25 1.25 1.25 1.25 0 0 1-1.25-1.25Zm5.25 1.25a1.25 1.25 0 1 1 1.25-1.25 1.25 1.25 0 0 1-1.25 1.25Z\"\n fill=\"currentColor\" />\n </g>\n </svg>\n <span>CDN</span>\n </a>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/blob/main/packages/api-reference/README.md#vuejs\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <svg\n height=\"170\"\n viewBox=\"0 0 196.3 170\"\n width=\"196.3\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g\n fill=\"currentColor\"\n fill-rule=\"nonzero\">\n <polygon\n points=\"39.23 0 0 0 2.9450761 5.1010782 98.16 170.02 196.32 0 157.06 0 98.16 102.01 42.175701 5.0991171\" />\n <polygon\n points=\"75.5 2.009956e-14 0 2.009956e-14 2.94 5.1 78.44871 5.1 98.16 39.26 117.87937 5.1 193.38 5.1 196.325 0 120.82 7.8065636e-15 114.97322 2.009956e-14 98.16 29.037153 81.35 2.009956e-14\" />\n </g>\n </svg>\n <span>Vue</span>\n </a>\n <a\n class=\"start-item\"\n href=\"https://github.com/scalar/scalar/blob/main/packages/api-reference-react/README.md#usage\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <svg\n height=\"23.3\"\n viewBox=\"0 0 22 23.3\"\n width=\"22\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g\n fill=\"none\"\n fill-rule=\"evenodd\">\n <circle\n cx=\"11\"\n cy=\"11.6\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\"\n r=\"2\" />\n <g stroke=\"currentColor\">\n <ellipse\n cx=\"11\"\n cy=\"11.6\"\n rx=\"11\"\n ry=\"4.2\" />\n <ellipse\n cx=\"11\"\n cy=\"11.6\"\n rx=\"11\"\n ry=\"4.2\"\n transform=\"rotate(60 11 11.6)\" />\n <ellipse\n cx=\"11\"\n cy=\"11.6\"\n rx=\"11\"\n ry=\"4.2\"\n transform=\"rotate(120 11 11.6)\" />\n </g>\n </g>\n </svg>\n <span>React</span>\n </a>\n </div>\n <div class=\"start-section start-section-colors\">\n <p class=\"start-h2\">\n {{ translate('gettingStarted.theming') }}\n </p>\n <div\n v-for=\"themeId in themeIds\"\n :key=\"themeId\"\n class=\"start-item\"\n :class=\"{ 'start-item-active': themeId === theme }\"\n @click=\"\n $emit('changeTheme', { id: themeId, label: themeLabels[themeId] })\n \">\n {{ themeLabels[themeId] }}\n </div>\n </div>\n </div>\n <p class=\"start-h1\">{{ translate('gettingStarted.features') }}</p>\n <ul class=\"start-ul\">\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.customize') }}</p>\n {{ translate('gettingStarted.customizeDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.testing') }}</p>\n {{ translate('gettingStarted.testingDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.search') }}</p>\n {{ translate('gettingStarted.searchDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.hosting') }}</p>\n {{ translate('gettingStarted.hostingDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">\n {{ translate('gettingStarted.openApiSwagger') }}\n </p>\n {{ translate('gettingStarted.openApiSwaggerDescription') }}\n </li>\n <li>\n <p class=\"start-h3\">{{ translate('gettingStarted.codeSamples') }}</p>\n {{ translate('gettingStarted.codeSamplesDescription') }}\n </li>\n </ul>\n </div>\n</template>\n<style scoped>\n.start {\n padding: 24px;\n display: flex;\n flex-flow: wrap;\n justify-content: space-between;\n position: relative;\n z-index: 0;\n}\n.swagger-editor .start {\n padding-top: 24px;\n}\n.start-h1 {\n font-size: var(--scalar-heading-2);\n margin-top: 0;\n line-height: 1.45;\n margin-bottom: 0;\n font-weight: var(--scalar-bold);\n color: var(--scalar-color-1);\n width: 100%;\n position: relative;\n}\n.start-h3 {\n font-size: var(--scalar-paragraph);\n margin-top: 0;\n margin-bottom: 6px;\n display: block;\n line-height: 1.45;\n font-weight: var(--scalar-bold);\n color: var(--scalar-color-1);\n width: 100%;\n}\n.start-h1:not(:first-of-type) {\n margin-top: 24px;\n}\n.start-p {\n font-size: var(--scalar-paragraph);\n color: var(--scalar-color-2);\n line-height: 1.5;\n width: 100%;\n margin-top: 12px;\n}\n.start-ul {\n margin-top: 12px;\n font-size: var(--scalar-paragraph);\n line-height: 1.5;\n padding-left: 0;\n list-style: initial;\n display: flex;\n flex-flow: wrap;\n gap: 24px;\n}\n.start-ul li {\n margin: 0;\n padding: 0;\n list-style: none;\n width: calc(50% - 24px);\n color: var(--scalar-color-2);\n}\n.start-ul li:first-of-type {\n margin-top: 0;\n}\n.start-section {\n width: 100%;\n margin-bottom: 12px;\n display: flex;\n flex-flow: wrap;\n}\n.start-section:last-of-type {\n margin-bottom: 48px;\n}\n.start-h2 {\n background: var(--scalar-background-2);\n border-top-left-radius: var(--scalar-radius-lg);\n border-top-right-radius: var(--scalar-radius-lg);\n border: 1px solid var(--scalar-border-color);\n color: var(--scalar-color-3);\n font-size: var(--scalar-mini);\n font-weight: var(--scalar-semibold);\n padding: 9px;\n width: 100%;\n}\n.start-item {\n align-items: center;\n background: var(--scalar-background-2);\n border-right: 1px solid var(--scalar-border-color);\n border-bottom: 1px solid var(--scalar-border-color);\n color: var(--scalar-color-1);\n cursor: pointer;\n display: flex;\n flex: 1;\n font-size: var(--scalar-mini);\n font-weight: var(--scalar-semibold);\n padding: 9px;\n text-transform: capitalize;\n user-select: none;\n}\n.start-section-integrations .start-item:first-of-type {\n border-bottom-left-radius: var(--scalar-radius-lg);\n border-left: 1px solid var(--scalar-border-color);\n}\n.start-section-integrations .start-item:last-of-type {\n border-bottom-right-radius: var(--scalar-radius-lg);\n}\n.start-section-colors .start-item {\n min-width: 33.33%;\n}\n.start-section-colors .start-item:nth-child(3n + 2) {\n border-left: 1px solid var(--scalar-border-color);\n}\n.start-section-colors .start-item:last-of-type,\n.start-section-colors .start-item-active:last-of-type::before {\n border-radius: 0 0 var(--scalar-radius-lg) var(--scalar-radius-lg);\n}\n.start-item:empty {\n pointer-events: none;\n}\n.start-item svg {\n width: 14px;\n height: 14px;\n margin-right: 6px;\n}\n.start-item:hover {\n background: var(--scalar-background-3);\n}\n.start-item-active {\n z-index: 10;\n position: relative;\n color: var(--scalar-color-1);\n}\n.start-item-active::before {\n border: 1px solid var(--scalar-color-1);\n content: '';\n inset: -1px -1px -1px -1px;\n pointer-events: none;\n position: absolute;\n}\n.start-section-color .start-item {\n text-transform: capitalize;\n}\n.start-cta {\n display: flex;\n gap: 12px;\n width: 100%;\n margin-top: 24px;\n margin-bottom: 0;\n}\n.start-row {\n width: 100%;\n margin-top: 12px;\n overflow: hidden;\n}\n.start-hero-copy {\n background: var(--scalar-background-2);\n padding: 12px;\n border-radius: var(--scalar-radius-lg);\n}\n.start-p-small {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-mini);\n color: var(--scalar-color-2);\n margin-bottom: 12px;\n line-height: 1.4;\n}\n.start-cta {\n margin-bottom: 12px;\n width: fit-content;\n white-space: nowrap;\n}\n.start-copy {\n padding: 76px 48px 48px 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-align: center;\n}\n.start-logo {\n color: var(--scalar-color-1);\n margin-bottom: 24px;\n width: 72px;\n aspect-ratio: 1;\n position: relative;\n box-shadow: var(--scalar-shadow-2);\n border-radius: var(--scalar-radius-full);\n}\n.start-logo:before {\n content: '';\n width: 300%;\n aspect-ratio: 1;\n left: -100%;\n top: -100%;\n position: absolute;\n z-index: -1;\n border-radius: var(--scalar-radius-full);\n background-size: 24px 24px;\n box-shadow:\n inset 0 0 50px var(--scalar-background-1),\n inset 0 0 50px var(--scalar-background-1);\n background-image:\n linear-gradient(to right, var(--scalar-border-color) 1px, transparent 1px),\n linear-gradient(to bottom, var(--scalar-border-color) 1px, transparent 1px);\n}\n.start-logo svg {\n width: 100%;\n height: auto;\n background: var(--scalar-background-1);\n padding: 3px;\n border-radius: var(--scalar-radius-full);\n position: relative;\n}\n@media screen and (max-width: 600px) {\n .start-section-colors .start-item,\n .start-item {\n width: 100%;\n border-radius: 0;\n border-right: none;\n border-top: 1px solid var(--scalar-border-color);\n }\n .start-item:empty {\n display: none;\n }\n .start-h2 {\n border-bottom: none;\n }\n .start li {\n width: 100%;\n }\n .start-copy {\n padding: 48px 0 24px 0;\n }\n}\n@media screen and (max-width: 1000px) {\n .start {\n padding: 0;\n overflow: auto;\n }\n}\n</style>\n"],"mappings":""}
|