@scalar/api-client 2.38.4 → 2.39.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 +21 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/assets/computer.ascii.virtual.js +6 -0
- package/dist/assets/computer.ascii.virtual.js.map +1 -0
- package/dist/assets/keycap.ascii.virtual.js +6 -0
- package/dist/assets/keycap.ascii.virtual.js.map +1 -0
- package/dist/assets/rabbit.ascii.virtual.js +6 -0
- package/dist/assets/rabbit.ascii.virtual.js.map +1 -0
- package/dist/assets/rabbitjump.ascii.virtual.js +6 -0
- package/dist/assets/rabbitjump.ascii.virtual.js.map +1 -0
- package/dist/components/AddressBar/AddressBar.vue.d.ts +1 -1
- package/dist/components/AddressBar/AddressBar.vue.js +9 -0
- package/dist/components/AddressBar/AddressBar.vue.js.map +1 -0
- package/dist/components/AddressBar/AddressBar.vue.script.js +204 -0
- package/dist/components/AddressBar/AddressBar.vue.script.js.map +1 -0
- package/dist/components/AddressBar/AddressBarHistory.vue.js +9 -0
- package/dist/components/AddressBar/AddressBarHistory.vue.js.map +1 -0
- package/dist/components/AddressBar/AddressBarHistory.vue.script.js +85 -0
- package/dist/components/AddressBar/AddressBarHistory.vue.script.js.map +1 -0
- package/dist/components/AddressBar/httpStatusCodeColors.js +20 -0
- package/dist/components/AddressBar/httpStatusCodeColors.js.map +1 -0
- package/dist/components/AddressBar/index.d.ts +1 -1
- package/dist/components/AddressBar/index.js +1 -4
- package/dist/components/CodeInput/CodeInput.vue.d.ts +1 -1
- package/dist/components/CodeInput/CodeInput.vue.js +10 -0
- package/dist/components/CodeInput/CodeInput.vue.js.map +1 -0
- package/dist/components/CodeInput/CodeInput.vue.script.js +294 -0
- package/dist/components/CodeInput/CodeInput.vue.script.js.map +1 -0
- package/dist/components/CodeInput/codeVariableWidget.d.ts +1 -1
- package/dist/components/CodeInput/codeVariableWidget.js +135 -0
- package/dist/components/CodeInput/codeVariableWidget.js.map +1 -0
- package/dist/components/CodeInput/index.d.ts +1 -1
- package/dist/components/CodeInput/index.js +1 -1
- package/dist/components/CommandPalette/CommandActionForm.vue.js +7 -0
- package/dist/components/CommandPalette/CommandActionForm.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandActionForm.vue.script.js +42 -0
- package/dist/components/CommandPalette/CommandActionForm.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandActionInput.vue.js +7 -0
- package/dist/components/CommandPalette/CommandActionInput.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandActionInput.vue.script.js +55 -0
- package/dist/components/CommandPalette/CommandActionInput.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.js +7 -0
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.script.js +78 -0
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteExample.vue.js +7 -0
- package/dist/components/CommandPalette/CommandPaletteExample.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteExample.vue.script.js +104 -0
- package/dist/components/CommandPalette/CommandPaletteExample.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteImport.vue.js +7 -0
- package/dist/components/CommandPalette/CommandPaletteImport.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteImport.vue.script.js +181 -0
- package/dist/components/CommandPalette/CommandPaletteImport.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.js +9 -0
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.script.js +108 -0
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteServer.vue.js +7 -0
- package/dist/components/CommandPalette/CommandPaletteServer.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteServer.vue.script.js +108 -0
- package/dist/components/CommandPalette/CommandPaletteServer.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteTag.vue.js +7 -0
- package/dist/components/CommandPalette/CommandPaletteTag.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteTag.vue.script.js +70 -0
- package/dist/components/CommandPalette/CommandPaletteTag.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.js +7 -0
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.js.map +1 -0
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.script.js +49 -0
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/TheCommandPalette.vue.js +9 -0
- package/dist/components/CommandPalette/TheCommandPalette.vue.js.map +1 -0
- package/dist/components/CommandPalette/TheCommandPalette.vue.script.js +323 -0
- package/dist/components/CommandPalette/TheCommandPalette.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/WatchModeToggle.vue.js +7 -0
- package/dist/components/CommandPalette/WatchModeToggle.vue.js.map +1 -0
- package/dist/components/CommandPalette/WatchModeToggle.vue.script.js +40 -0
- package/dist/components/CommandPalette/WatchModeToggle.vue.script.js.map +1 -0
- package/dist/components/CommandPalette/index.d.ts +1 -1
- package/dist/components/CommandPalette/index.js +1 -2
- package/dist/components/DataTable/DataTable.vue.js +7 -0
- package/dist/components/DataTable/DataTable.vue.js.map +1 -0
- package/dist/components/DataTable/DataTable.vue.script.js +30 -0
- package/dist/components/DataTable/DataTable.vue.script.js.map +1 -0
- package/dist/components/DataTable/DataTableCell.vue.js +7 -0
- package/dist/components/DataTable/DataTableCell.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableCell.vue.script.js +21 -0
- package/dist/components/DataTable/DataTableCell.vue.script.js.map +1 -0
- package/dist/components/DataTable/DataTableCheckbox.vue.js +7 -0
- package/dist/components/DataTable/DataTableCheckbox.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableCheckbox.vue.script.js +43 -0
- package/dist/components/DataTable/DataTableCheckbox.vue.script.js.map +1 -0
- package/dist/components/DataTable/DataTableHeader.vue.js +7 -0
- package/dist/components/DataTable/DataTableHeader.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableHeader.vue.script.js +20 -0
- package/dist/components/DataTable/DataTableHeader.vue.script.js.map +1 -0
- package/dist/components/DataTable/DataTableInput.vue.d.ts +1 -1
- package/dist/components/DataTable/DataTableInput.vue.js +9 -0
- package/dist/components/DataTable/DataTableInput.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableInput.vue.script.js +164 -0
- package/dist/components/DataTable/DataTableInput.vue.script.js.map +1 -0
- package/dist/components/DataTable/DataTableInputSelect.vue.js +7 -0
- package/dist/components/DataTable/DataTableInputSelect.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableInputSelect.vue.script.js +150 -0
- package/dist/components/DataTable/DataTableInputSelect.vue.script.js.map +1 -0
- package/dist/components/DataTable/DataTableRow.vue.js +13 -0
- package/dist/components/DataTable/DataTableRow.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableText.vue.js +7 -0
- package/dist/components/DataTable/DataTableText.vue.js.map +1 -0
- package/dist/components/DataTable/DataTableText.vue.script.js +20 -0
- package/dist/components/DataTable/DataTableText.vue.script.js.map +1 -0
- package/dist/components/DataTable/index.d.ts +8 -8
- package/dist/components/DataTable/index.js +8 -5
- package/dist/components/EmptyState.vue.js +9 -0
- package/dist/components/EmptyState.vue.js.map +1 -0
- package/dist/components/EmptyState.vue.script.js +41 -0
- package/dist/components/EmptyState.vue.script.js.map +1 -0
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.js +7 -0
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.js.map +1 -0
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.script.js +111 -0
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.script.js.map +1 -0
- package/dist/components/Form/Form.vue.js +7 -0
- package/dist/components/Form/Form.vue.js.map +1 -0
- package/dist/components/Form/Form.vue.script.js +82 -0
- package/dist/components/Form/Form.vue.script.js.map +1 -0
- package/dist/components/Form/LabelInput.vue.d.ts +1 -1
- package/dist/components/Form/LabelInput.vue.js +9 -0
- package/dist/components/Form/LabelInput.vue.js.map +1 -0
- package/dist/components/Form/LabelInput.vue.script.js +39 -0
- package/dist/components/Form/LabelInput.vue.script.js.map +1 -0
- package/dist/components/HelpfulLink.vue.js +7 -0
- package/dist/components/HelpfulLink.vue.js.map +1 -0
- package/dist/components/HelpfulLink.vue.script.js +21 -0
- package/dist/components/HelpfulLink.vue.script.js.map +1 -0
- package/dist/components/HttpMethod/HttpMethod.vue.js +9 -0
- package/dist/components/HttpMethod/HttpMethod.vue.js.map +1 -0
- package/dist/components/HttpMethod/HttpMethod.vue.script.js +76 -0
- package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -0
- package/dist/components/HttpMethod/index.d.ts +1 -1
- package/dist/components/HttpMethod/index.js +1 -1
- package/dist/components/IconSelector.vue.js +7 -0
- package/dist/components/IconSelector.vue.js.map +1 -0
- package/dist/components/IconSelector.vue.script.js +65 -0
- package/dist/components/IconSelector.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/DropEventListener.vue.js +7 -0
- package/dist/components/ImportCollection/DropEventListener.vue.js.map +1 -0
- package/dist/components/ImportCollection/DropEventListener.vue.script.js +91 -0
- package/dist/components/ImportCollection/DropEventListener.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/ImportCollectionListener.vue.js +7 -0
- package/dist/components/ImportCollection/ImportCollectionListener.vue.js.map +1 -0
- package/dist/components/ImportCollection/ImportCollectionListener.vue.script.js +102 -0
- package/dist/components/ImportCollection/ImportCollectionListener.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/ImportCollectionModal.vue.d.ts.map +1 -1
- package/dist/components/ImportCollection/ImportCollectionModal.vue.js +8 -0
- package/dist/components/ImportCollection/ImportCollectionModal.vue.js.map +1 -0
- package/dist/components/ImportCollection/ImportCollectionModal.vue.script.js +206 -0
- package/dist/components/ImportCollection/ImportCollectionModal.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/ImportNowButton.vue.js +7 -0
- package/dist/components/ImportCollection/ImportNowButton.vue.js.map +1 -0
- package/dist/components/ImportCollection/ImportNowButton.vue.script.js +82 -0
- package/dist/components/ImportCollection/ImportNowButton.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/IntegrationLogo.vue.js +7 -0
- package/dist/components/ImportCollection/IntegrationLogo.vue.js.map +1 -0
- package/dist/components/ImportCollection/IntegrationLogo.vue.script.js +50 -0
- package/dist/components/ImportCollection/IntegrationLogo.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/PasteEventListener.vue.js +7 -0
- package/dist/components/ImportCollection/PasteEventListener.vue.js.map +1 -0
- package/dist/components/ImportCollection/PasteEventListener.vue.script.js +31 -0
- package/dist/components/ImportCollection/PasteEventListener.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/PrefetchError.vue.js +7 -0
- package/dist/components/ImportCollection/PrefetchError.vue.js.map +1 -0
- package/dist/components/ImportCollection/PrefetchError.vue.script.js +32 -0
- package/dist/components/ImportCollection/PrefetchError.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.js +7 -0
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.js.map +1 -0
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.script.js +21 -0
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/WorkspaceSelector.vue.js +7 -0
- package/dist/components/ImportCollection/WorkspaceSelector.vue.js.map +1 -0
- package/dist/components/ImportCollection/WorkspaceSelector.vue.script.js +114 -0
- package/dist/components/ImportCollection/WorkspaceSelector.vue.script.js.map +1 -0
- package/dist/components/ImportCollection/hooks/useUrlPrefetcher.js +109 -0
- package/dist/components/ImportCollection/hooks/useUrlPrefetcher.js.map +1 -0
- package/dist/components/ImportCollection/index.d.ts +1 -1
- package/dist/components/ImportCollection/index.js +1 -1
- package/dist/components/ImportCollection/utils/get-openapi-version.js +26 -0
- package/dist/components/ImportCollection/utils/get-openapi-version.js.map +1 -0
- package/dist/components/ImportCollection/utils/import-collection.js +23 -0
- package/dist/components/ImportCollection/utils/import-collection.js.map +1 -0
- package/dist/components/ImportCollection/utils/is-document.js +12 -0
- package/dist/components/ImportCollection/utils/is-document.js.map +1 -0
- package/dist/components/ImportCollection/utils/is-url.js +14 -0
- package/dist/components/ImportCollection/utils/is-url.js.map +1 -0
- package/dist/components/ImportCollection/utils/workspace-store-is-empty.js +13 -0
- package/dist/components/ImportCollection/utils/workspace-store-is-empty.js.map +1 -0
- package/dist/components/OpenApiClientButton.vue.js +9 -0
- package/dist/components/OpenApiClientButton.vue.js.map +1 -0
- package/dist/components/OpenApiClientButton.vue.script.js +58 -0
- package/dist/components/OpenApiClientButton.vue.script.js.map +1 -0
- package/dist/components/ScalarAsciiArt.vue.js +9 -0
- package/dist/components/ScalarAsciiArt.vue.js.map +1 -0
- package/dist/components/ScalarAsciiArt.vue.script.js +42 -0
- package/dist/components/ScalarAsciiArt.vue.script.js.map +1 -0
- package/dist/components/Search/useSearch.js +110 -0
- package/dist/components/Search/useSearch.js.map +1 -0
- package/dist/components/SectionFilter.vue.js +9 -0
- package/dist/components/SectionFilter.vue.js.map +1 -0
- package/dist/components/SectionFilter.vue.script.js +69 -0
- package/dist/components/SectionFilter.vue.script.js.map +1 -0
- package/dist/components/SectionFilterButton.vue.js +7 -0
- package/dist/components/SectionFilterButton.vue.js.map +1 -0
- package/dist/components/SectionFilterButton.vue.script.js +30 -0
- package/dist/components/SectionFilterButton.vue.script.js.map +1 -0
- package/dist/components/Server/ServerDropdown.vue.js +7 -0
- package/dist/components/Server/ServerDropdown.vue.js.map +1 -0
- package/dist/components/Server/ServerDropdown.vue.script.js +133 -0
- package/dist/components/Server/ServerDropdown.vue.script.js.map +1 -0
- package/dist/components/Server/ServerDropdownItem.vue.js +9 -0
- package/dist/components/Server/ServerDropdownItem.vue.js.map +1 -0
- package/dist/components/Server/ServerDropdownItem.vue.script.js +90 -0
- package/dist/components/Server/ServerDropdownItem.vue.script.js.map +1 -0
- package/dist/components/Server/ServerSelector.vue.js +7 -0
- package/dist/components/Server/ServerSelector.vue.js.map +1 -0
- package/dist/components/Server/ServerSelector.vue.script.js +87 -0
- package/dist/components/Server/ServerSelector.vue.script.js.map +1 -0
- package/dist/components/Server/ServerVariablesForm.vue.js +7 -0
- package/dist/components/Server/ServerVariablesForm.vue.js.map +1 -0
- package/dist/components/Server/ServerVariablesForm.vue.script.js +64 -0
- package/dist/components/Server/ServerVariablesForm.vue.script.js.map +1 -0
- package/dist/components/Server/ServerVariablesSelect.vue.js +7 -0
- package/dist/components/Server/ServerVariablesSelect.vue.js.map +1 -0
- package/dist/components/Server/ServerVariablesSelect.vue.script.js +53 -0
- package/dist/components/Server/ServerVariablesSelect.vue.script.js.map +1 -0
- package/dist/components/Server/ServerVariablesTextbox.vue.js +7 -0
- package/dist/components/Server/ServerVariablesTextbox.vue.js.map +1 -0
- package/dist/components/Server/ServerVariablesTextbox.vue.script.js +34 -0
- package/dist/components/Server/ServerVariablesTextbox.vue.script.js.map +1 -0
- package/dist/components/Server/index.d.ts +3 -3
- package/dist/components/Server/index.js +3 -2
- package/dist/components/SideNav/DownloadAppButton.vue.js +9 -0
- package/dist/components/SideNav/DownloadAppButton.vue.js.map +1 -0
- package/dist/components/SideNav/DownloadAppButton.vue.script.js +31 -0
- package/dist/components/SideNav/DownloadAppButton.vue.script.js.map +1 -0
- package/dist/components/SideNav/SideHelp.vue.js +7 -0
- package/dist/components/SideNav/SideHelp.vue.js.map +1 -0
- package/dist/components/SideNav/SideHelp.vue.script.js +102 -0
- package/dist/components/SideNav/SideHelp.vue.script.js.map +1 -0
- package/dist/components/SideNav/SideNav.vue.js +7 -0
- package/dist/components/SideNav/SideNav.vue.js.map +1 -0
- package/dist/components/SideNav/SideNav.vue.script.js +80 -0
- package/dist/components/SideNav/SideNav.vue.script.js.map +1 -0
- package/dist/components/SideNav/SideNavGroup.vue.js +7 -0
- package/dist/components/SideNav/SideNavGroup.vue.js.map +1 -0
- package/dist/components/SideNav/SideNavGroup.vue.script.js +16 -0
- package/dist/components/SideNav/SideNavGroup.vue.script.js.map +1 -0
- package/dist/components/SideNav/SideNavLink.vue.js +7 -0
- package/dist/components/SideNav/SideNavLink.vue.js.map +1 -0
- package/dist/components/SideNav/SideNavLink.vue.script.js +32 -0
- package/dist/components/SideNav/SideNavLink.vue.script.js.map +1 -0
- package/dist/components/SideNav/SideNavRouterLink.vue.js +7 -0
- package/dist/components/SideNav/SideNavRouterLink.vue.js.map +1 -0
- package/dist/components/SideNav/SideNavRouterLink.vue.script.js +34 -0
- package/dist/components/SideNav/SideNavRouterLink.vue.script.js.map +1 -0
- package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.js +7 -0
- package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.js.map +1 -0
- package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.script.js +38 -0
- package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.script.js.map +1 -0
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.js +7 -0
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.js.map +1 -0
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.script.js +56 -0
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.script.js.map +1 -0
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.js +7 -0
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.js.map +1 -0
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.script.js +31 -0
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.script.js.map +1 -0
- package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.js +7 -0
- package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.js.map +1 -0
- package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js +41 -0
- package/dist/components/Sidebar/Actions/SidebarListElementForm.vue.script.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.vue.js +9 -0
- package/dist/components/Sidebar/Sidebar.vue.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.vue.script.js +71 -0
- package/dist/components/Sidebar/Sidebar.vue.script.js.map +1 -0
- package/dist/components/Sidebar/SidebarButton.vue.js +7 -0
- package/dist/components/Sidebar/SidebarButton.vue.js.map +1 -0
- package/dist/components/Sidebar/SidebarButton.vue.script.js +36 -0
- package/dist/components/Sidebar/SidebarButton.vue.script.js.map +1 -0
- package/dist/components/Sidebar/SidebarList.vue.js +13 -0
- package/dist/components/Sidebar/SidebarList.vue.js.map +1 -0
- package/dist/components/Sidebar/SidebarListElement.vue.js +10 -0
- package/dist/components/Sidebar/SidebarListElement.vue.js.map +1 -0
- package/dist/components/Sidebar/SidebarListElement.vue.script.js +128 -0
- package/dist/components/Sidebar/SidebarListElement.vue.script.js.map +1 -0
- package/dist/components/Sidebar/SidebarListElementActions.vue.js +7 -0
- package/dist/components/Sidebar/SidebarListElementActions.vue.js.map +1 -0
- package/dist/components/Sidebar/SidebarListElementActions.vue.script.js +97 -0
- package/dist/components/Sidebar/SidebarListElementActions.vue.script.js.map +1 -0
- package/dist/components/Sidebar/SidebarToggle.vue.js +7 -0
- package/dist/components/Sidebar/SidebarToggle.vue.js.map +1 -0
- package/dist/components/Sidebar/SidebarToggle.vue.script.js +47 -0
- package/dist/components/Sidebar/SidebarToggle.vue.script.js.map +1 -0
- package/dist/components/Sidebar/index.d.ts +1 -1
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/components/TopNav/TopNav.vue.js +7 -0
- package/dist/components/TopNav/TopNav.vue.js.map +1 -0
- package/dist/components/TopNav/TopNav.vue.script.js +232 -0
- package/dist/components/TopNav/TopNav.vue.script.js.map +1 -0
- package/dist/components/TopNav/TopNavItem.vue.d.ts.map +1 -1
- package/dist/components/TopNav/TopNavItem.vue.js +9 -0
- package/dist/components/TopNav/TopNavItem.vue.js.map +1 -0
- package/dist/components/TopNav/TopNavItem.vue.script.js +129 -0
- package/dist/components/TopNav/TopNavItem.vue.script.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayout.vue.js +7 -0
- package/dist/components/ViewLayout/ViewLayout.vue.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayout.vue.script.js +16 -0
- package/dist/components/ViewLayout/ViewLayout.vue.script.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js +7 -0
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.script.js +84 -0
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.script.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayoutContent.vue.js +13 -0
- package/dist/components/ViewLayout/ViewLayoutContent.vue.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayoutSection.vue.js +7 -0
- package/dist/components/ViewLayout/ViewLayoutSection.vue.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js +21 -0
- package/dist/components/ViewLayout/ViewLayoutSection.vue.script.js.map +1 -0
- package/dist/components/ViewLayout/index.d.ts +1 -1
- package/dist/components/ViewLayout/index.js +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +3 -6
- package/dist/constants.js +27 -0
- package/dist/constants.js.map +1 -0
- package/dist/data/httpHeaders.js +539 -0
- package/dist/data/httpHeaders.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -4
- package/dist/hooks/index.js +4 -2
- package/dist/hooks/useClientConfig.d.ts +18 -0
- package/dist/hooks/useClientConfig.d.ts.map +1 -1
- package/dist/hooks/useClientConfig.js +10 -0
- package/dist/hooks/useClientConfig.js.map +1 -0
- package/dist/hooks/useFileDialog.js +33 -0
- package/dist/hooks/useFileDialog.js.map +1 -0
- package/dist/hooks/useLayout.js +13 -0
- package/dist/hooks/useLayout.js.map +1 -0
- package/dist/hooks/useResponseBody.js +32 -0
- package/dist/hooks/useResponseBody.js.map +1 -0
- package/dist/hooks/useSidebar.d.ts +1 -1
- package/dist/hooks/useSidebar.js +36 -0
- package/dist/hooks/useSidebar.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -7
- package/dist/layouts/App/ApiClientApp.vue.js +8 -0
- package/dist/layouts/App/ApiClientApp.vue.js.map +1 -0
- package/dist/layouts/App/ApiClientApp.vue.script.js +80 -0
- package/dist/layouts/App/ApiClientApp.vue.script.js.map +1 -0
- package/dist/layouts/App/MainLayout.vue.js +7 -0
- package/dist/layouts/App/MainLayout.vue.js.map +1 -0
- package/dist/layouts/App/MainLayout.vue.script.js +22 -0
- package/dist/layouts/App/MainLayout.vue.script.js.map +1 -0
- package/dist/layouts/App/create-api-client-app.d.ts +1 -1
- package/dist/layouts/App/create-api-client-app.d.ts.map +1 -1
- package/dist/layouts/App/create-api-client-app.js +36 -0
- package/dist/layouts/App/create-api-client-app.js.map +1 -0
- package/dist/layouts/App/hotkeys.js +74 -0
- package/dist/layouts/App/hotkeys.js.map +1 -0
- package/dist/layouts/App/index.d.ts +2 -2
- package/dist/layouts/App/index.js +2 -4
- package/dist/layouts/Modal/ApiClientModal.vue.js +7 -0
- package/dist/layouts/Modal/ApiClientModal.vue.js.map +1 -0
- package/dist/layouts/Modal/ApiClientModal.vue.script.js +41 -0
- package/dist/layouts/Modal/ApiClientModal.vue.script.js.map +1 -0
- package/dist/layouts/Modal/create-api-client-modal.js +34 -0
- package/dist/layouts/Modal/create-api-client-modal.js.map +1 -0
- package/dist/layouts/Modal/index.d.ts +1 -1
- package/dist/layouts/Modal/index.js +1 -2
- package/dist/layouts/Web/ApiClientWeb.vue.js +8 -0
- package/dist/layouts/Web/ApiClientWeb.vue.js.map +1 -0
- package/dist/layouts/Web/ApiClientWeb.vue.script.js +68 -0
- package/dist/layouts/Web/ApiClientWeb.vue.script.js.map +1 -0
- package/dist/layouts/Web/create-api-client-web.d.ts +1 -1
- package/dist/layouts/Web/create-api-client-web.d.ts.map +1 -1
- package/dist/layouts/Web/create-api-client-web.js +33 -0
- package/dist/layouts/Web/create-api-client-web.js.map +1 -0
- package/dist/layouts/Web/index.d.ts +2 -2
- package/dist/layouts/Web/index.js +2 -101
- package/dist/libs/create-client.d.ts +9 -9
- package/dist/libs/create-client.js +178 -0
- package/dist/libs/create-client.js.map +1 -0
- package/dist/libs/electron.js +9 -0
- package/dist/libs/electron.js.map +1 -0
- package/dist/libs/env-helpers.js +9 -0
- package/dist/libs/env-helpers.js.map +1 -0
- package/dist/libs/environment-parser.d.ts +1 -1
- package/dist/libs/environment-parser.js +19 -0
- package/dist/libs/environment-parser.js.map +1 -0
- package/dist/libs/errors.js +34 -0
- package/dist/libs/errors.js.map +1 -0
- package/dist/libs/event-bus.js +43 -0
- package/dist/libs/event-bus.js.map +1 -0
- package/dist/libs/extractAttachmentFilename.js +23 -0
- package/dist/libs/extractAttachmentFilename.js.map +1 -0
- package/dist/libs/find-request.js +40 -0
- package/dist/libs/find-request.js.map +1 -0
- package/dist/libs/formatters.js +36 -0
- package/dist/libs/formatters.js.map +1 -0
- package/dist/libs/get-request-uid-by-path-method.d.ts +1 -1
- package/dist/libs/get-request-uid-by-path-method.js +19 -0
- package/dist/libs/get-request-uid-by-path-method.js.map +1 -0
- package/dist/libs/getOpenApiDocumentDetails.js +45 -0
- package/dist/libs/getOpenApiDocumentDetails.js.map +1 -0
- package/dist/libs/hot-keys.js +92 -0
- package/dist/libs/hot-keys.js.map +1 -0
- package/dist/libs/importers/curl.js +54 -0
- package/dist/libs/importers/curl.js.map +1 -0
- package/dist/libs/importers/index.d.ts +1 -1
- package/dist/libs/importers/index.js +1 -1
- package/dist/libs/index.d.ts +14 -14
- package/dist/libs/index.js +17 -5
- package/dist/libs/isUrl.js +12 -0
- package/dist/libs/isUrl.js.map +1 -0
- package/dist/libs/local-storage.js +40 -0
- package/dist/libs/local-storage.js.map +1 -0
- package/dist/libs/normalize-headers.js +55 -0
- package/dist/libs/normalize-headers.js.map +1 -0
- package/dist/libs/parse-curl.js +106 -0
- package/dist/libs/parse-curl.js.map +1 -0
- package/dist/libs/postman.js +40 -0
- package/dist/libs/postman.js.map +1 -0
- package/dist/libs/send-request/build-request-security.js +41 -0
- package/dist/libs/send-request/build-request-security.js.map +1 -0
- package/dist/libs/send-request/create-fetch-body.js +44 -0
- package/dist/libs/send-request/create-fetch-body.js.map +1 -0
- package/dist/libs/send-request/create-fetch-headers.js +15 -0
- package/dist/libs/send-request/create-fetch-headers.js.map +1 -0
- package/dist/libs/send-request/create-fetch-query-params.js +43 -0
- package/dist/libs/send-request/create-fetch-query-params.js.map +1 -0
- package/dist/libs/send-request/create-request-operation.d.ts +2 -2
- package/dist/libs/send-request/create-request-operation.js +172 -0
- package/dist/libs/send-request/create-request-operation.js.map +1 -0
- package/dist/libs/send-request/decode-buffer.js +13 -0
- package/dist/libs/send-request/decode-buffer.js.map +1 -0
- package/dist/libs/send-request/index.d.ts +3 -3
- package/dist/libs/send-request/index.js +3 -2
- package/dist/libs/send-request/set-request-cookies.js +82 -0
- package/dist/libs/send-request/set-request-cookies.js.map +1 -0
- package/dist/libs/string-template.js +64 -0
- package/dist/libs/string-template.js.map +1 -0
- package/dist/libs/validate-parameters.js +35 -0
- package/dist/libs/validate-parameters.js.map +1 -0
- package/dist/plugins/hooks/usePluginManager.d.ts +1 -1
- package/dist/plugins/hooks/usePluginManager.js +16 -0
- package/dist/plugins/hooks/usePluginManager.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -2
- package/dist/plugins/index.js +2 -1
- package/dist/plugins/plugin-manager.js +38 -0
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/routes.js +225 -0
- package/dist/routes.js.map +1 -0
- package/dist/store/active-entities.js +139 -0
- package/dist/store/active-entities.js.map +1 -0
- package/dist/store/collections.js +76 -0
- package/dist/store/collections.js.map +1 -0
- package/dist/store/cookies.js +16 -0
- package/dist/store/cookies.js.map +1 -0
- package/dist/store/environment.js +38 -0
- package/dist/store/environment.js.map +1 -0
- package/dist/store/events.d.ts +7 -7
- package/dist/store/events.js +17 -0
- package/dist/store/events.js.map +1 -0
- package/dist/store/import-spec.js +56 -0
- package/dist/store/import-spec.js.map +1 -0
- package/dist/store/index.d.ts +2 -2
- package/dist/store/index.js +2 -1
- package/dist/store/request-example.js +43 -0
- package/dist/store/request-example.js.map +1 -0
- package/dist/store/requests.d.ts +1 -1
- package/dist/store/requests.js +104 -0
- package/dist/store/requests.js.map +1 -0
- package/dist/store/router-params.js +27 -0
- package/dist/store/router-params.js.map +1 -0
- package/dist/store/security-schemes.js +45 -0
- package/dist/store/security-schemes.js.map +1 -0
- package/dist/store/servers.js +41 -0
- package/dist/store/servers.js.map +1 -0
- package/dist/store/store.d.ts +1 -1
- package/dist/store/store.js +180 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/tags.js +54 -0
- package/dist/store/tags.js.map +1 -0
- package/dist/store/workspace.js +57 -0
- package/dist/store/workspace.js.map +1 -0
- package/dist/style.css +2804 -2650
- package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts +4 -2
- package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/OperationBlock.vue.js +7 -0
- package/dist/v2/blocks/operation-block/OperationBlock.vue.js.map +1 -0
- package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js +306 -0
- package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js.map +1 -0
- package/dist/v2/blocks/operation-block/components/Header.vue.js +9 -0
- package/dist/v2/blocks/operation-block/components/Header.vue.js.map +1 -0
- package/dist/v2/blocks/operation-block/components/Header.vue.script.js +126 -0
- package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/apply-allow-reserved-to-url.js +58 -0
- package/dist/v2/blocks/operation-block/helpers/apply-allow-reserved-to-url.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-body.d.ts +3 -1
- package/dist/v2/blocks/operation-block/helpers/build-request-body.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request-body.js +65 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-body.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-cookie-header.js +55 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-cookie-header.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-parameters.js +159 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-parameters.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-security.d.ts +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request-security.js +53 -0
- package/dist/v2/blocks/operation-block/helpers/build-request-security.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/build-request.d.ts +4 -2
- package/dist/v2/blocks/operation-block/helpers/build-request.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request.js +102 -0
- package/dist/v2/blocks/operation-block/helpers/build-request.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/de-serialize-parameter.js +41 -0
- package/dist/v2/blocks/operation-block/helpers/de-serialize-parameter.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/decode-buffer.js +17 -0
- package/dist/v2/blocks/operation-block/helpers/decode-buffer.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/filter-global-cookies.js +20 -0
- package/dist/v2/blocks/operation-block/helpers/filter-global-cookies.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/get-cookie-header-keys.js +22 -0
- package/dist/v2/blocks/operation-block/helpers/get-cookie-header-keys.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/get-environment-variables.js +17 -0
- package/dist/v2/blocks/operation-block/helpers/get-environment-variables.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/get-example.js +41 -0
- package/dist/v2/blocks/operation-block/helpers/get-example.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/get-resolved-url.js +32 -0
- package/dist/v2/blocks/operation-block/helpers/get-resolved-url.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/get-selected-body-content-type.js +15 -0
- package/dist/v2/blocks/operation-block/helpers/get-selected-body-content-type.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/get-server-url.js +18 -0
- package/dist/v2/blocks/operation-block/helpers/get-server-url.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.js +80 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.d.ts +1 -1
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js +109 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/response-cache.js +34 -0
- package/dist/v2/blocks/operation-block/helpers/response-cache.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/send-request.d.ts +1 -1
- package/dist/v2/blocks/operation-block/helpers/send-request.js +149 -0
- package/dist/v2/blocks/operation-block/helpers/send-request.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/serialize-parameter.js +160 -0
- package/dist/v2/blocks/operation-block/helpers/serialize-parameter.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js +34 -0
- package/dist/v2/blocks/operation-block/helpers/validate-path-parameters.js.map +1 -0
- package/dist/v2/blocks/operation-block/index.d.ts +4 -4
- package/dist/v2/blocks/operation-block/index.js +4 -19
- package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.js +7 -0
- package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.script.js +52 -0
- package/dist/v2/blocks/operation-code-sample/components/ExamplePicker.vue.script.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/components/HttpMethod.vue.js +7 -0
- package/dist/v2/blocks/operation-code-sample/components/HttpMethod.vue.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/components/HttpMethod.vue.script.js +33 -0
- package/dist/v2/blocks/operation-code-sample/components/HttpMethod.vue.script.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.d.ts +5 -0
- package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.js +9 -0
- package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.script.js +249 -0
- package/dist/v2/blocks/operation-code-sample/components/OperationCodeSample.vue.script.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/filter-clients-by-query.d.ts +9 -0
- package/dist/v2/blocks/operation-code-sample/helpers/filter-clients-by-query.d.ts.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/filter-clients-by-query.js +37 -0
- package/dist/v2/blocks/operation-code-sample/helpers/filter-clients-by-query.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/find-client.js +55 -0
- package/dist/v2/blocks/operation-code-sample/helpers/find-client.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/generate-client-options.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/generate-client-options.js +40 -0
- package/dist/v2/blocks/operation-code-sample/helpers/generate-client-options.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.d.ts +4 -2
- package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.js +37 -0
- package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-clients.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/get-clients.js +31 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-clients.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-custom-code-samples.js +18 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-custom-code-samples.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-example-from-schema.d.ts +5 -1
- package/dist/v2/blocks/operation-code-sample/helpers/get-example-from-schema.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/get-example-from-schema.js +437 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-example-from-schema.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-resolved-ref-deep.js +41 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-resolved-ref-deep.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-secrets.js +18 -0
- package/dist/v2/blocks/operation-code-sample/helpers/get-secrets.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/operation-to-har.d.ts +6 -1
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/operation-to-har.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/operation-to-har.js +107 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/operation-to-har.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.d.ts +3 -3
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.js +114 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-body.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-parameters.js +216 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-parameters.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-security-schemes.js +65 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-security-schemes.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-server-url.js +19 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-server-url.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/index.d.ts +7 -6
- package/dist/v2/blocks/operation-code-sample/index.d.ts.map +1 -1
- package/dist/v2/blocks/operation-code-sample/index.js +8 -2
- package/dist/v2/blocks/operation-code-sample/types.d.ts +7 -6
- package/dist/v2/blocks/operation-code-sample/types.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts +1 -0
- package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.js +9 -0
- package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +415 -0
- package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts +2 -0
- package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.js +9 -0
- package/dist/v2/blocks/request-block/components/RequestBody.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +189 -0
- package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.js +7 -0
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js +98 -0
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.d.ts +1 -1
- package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.js +7 -0
- package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js +129 -0
- package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts +1 -1
- package/dist/v2/blocks/request-block/components/RequestParams.vue.js +7 -0
- package/dist/v2/blocks/request-block/components/RequestParams.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js +97 -0
- package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +1 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.js +9 -0
- package/dist/v2/blocks/request-block/components/RequestTable.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js +113 -0
- package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js +7 -0
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js +226 -0
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.js +9 -0
- package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.js.map +1 -0
- package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js +68 -0
- package/dist/v2/blocks/request-block/components/RequestTableTooltip.vue.script.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.d.ts +1 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js +47 -0
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/files.js +11 -0
- package/dist/v2/blocks/request-block/helpers/files.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/get-default-headers.js +61 -0
- package/dist/v2/blocks/request-block/helpers/get-default-headers.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts +1 -1
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +46 -0
- package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/get-parameter-content.js +17 -0
- package/dist/v2/blocks/request-block/helpers/get-parameter-content.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/get-parameter-schema.js +14 -0
- package/dist/v2/blocks/request-block/helpers/get-parameter-schema.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/get-request-body-example.d.ts +1 -1
- package/dist/v2/blocks/request-block/helpers/get-request-body-example.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/get-request-body-example.js +25 -0
- package/dist/v2/blocks/request-block/helpers/get-request-body-example.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/group-by.js +15 -0
- package/dist/v2/blocks/request-block/helpers/group-by.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/is-param-disabled.js +20 -0
- package/dist/v2/blocks/request-block/helpers/is-param-disabled.js.map +1 -0
- package/dist/v2/blocks/request-block/helpers/validate-parameter.js +49 -0
- package/dist/v2/blocks/request-block/helpers/validate-parameter.js.map +1 -0
- package/dist/v2/blocks/request-block/index.d.ts +1 -1
- package/dist/v2/blocks/request-block/index.js +1 -8
- package/dist/v2/blocks/response-block/ResponseBlock.vue.js +9 -0
- package/dist/v2/blocks/response-block/ResponseBlock.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +204 -0
- package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/Headers.vue.js +7 -0
- package/dist/v2/blocks/response-block/components/Headers.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/Headers.vue.script.js +77 -0
- package/dist/v2/blocks/response-block/components/Headers.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBody.vue.js +9 -0
- package/dist/v2/blocks/response-block/components/ResponseBody.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js +90 -0
- package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.js +7 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js +35 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js +14 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyInfo.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js +9 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js +64 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js +9 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js +49 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.js +7 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js +111 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyStreaming.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.js +7 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.script.js +25 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyToggle.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.js +8 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js +50 -0
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.js +7 -0
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js +42 -0
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js +9 -0
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js +69 -0
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js +9 -0
- package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js +52 -0
- package/dist/v2/blocks/response-block/components/ResponseLoadingOverlay.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.js +7 -0
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.js.map +1 -0
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js +68 -0
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js.map +1 -0
- package/dist/v2/blocks/response-block/helpers/extract-filename.js +26 -0
- package/dist/v2/blocks/response-block/helpers/extract-filename.js.map +1 -0
- package/dist/v2/blocks/response-block/helpers/get-content-length.js +12 -0
- package/dist/v2/blocks/response-block/helpers/get-content-length.js.map +1 -0
- package/dist/v2/blocks/response-block/helpers/media-types.js +227 -0
- package/dist/v2/blocks/response-block/helpers/media-types.js.map +1 -0
- package/dist/v2/blocks/response-block/helpers/parse-set-cookie.js +30 -0
- package/dist/v2/blocks/response-block/helpers/parse-set-cookie.js.map +1 -0
- package/dist/v2/blocks/response-block/helpers/process-response-body.js +26 -0
- package/dist/v2/blocks/response-block/helpers/process-response-body.js.map +1 -0
- package/dist/v2/blocks/response-block/index.d.ts +1 -1
- package/dist/v2/blocks/response-block/index.js +1 -5
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +9 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +248 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +9 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js +84 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.js +7 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js +141 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/EnvironmentSelector.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js +20 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/httpStatusCodeColors.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/hooks/use-loading-animation.js +84 -0
- package/dist/v2/blocks/scalar-address-bar-block/hooks/use-loading-animation.js.map +1 -0
- package/dist/v2/blocks/scalar-address-bar-block/index.d.ts +2 -2
- package/dist/v2/blocks/scalar-address-bar-block/index.js +1 -4
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts +3 -3
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +227 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js +48 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +285 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.js +9 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js +71 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js +8 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js +141 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js +89 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js +95 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js +69 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js +7 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +296 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/auth-options.js +92 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/auth-options.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/extract-security-scheme-secrets.js +141 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/extract-security-scheme-secrets.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.d.ts +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js +45 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/is-auth-optional.js +10 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/is-auth-optional.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/merge-security.js +27 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/merge-security.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js +183 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.d.ts +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js +39 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/openid-discovery-to-flows.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js +109 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/security-scheme.js.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/index.d.ts +4 -4
- package/dist/v2/blocks/scalar-auth-selector-block/index.js +3 -5
- package/dist/v2/components/callout/Callout.vue.js +9 -0
- package/dist/v2/components/callout/Callout.vue.js.map +1 -0
- package/dist/v2/components/callout/Callout.vue.script.js +35 -0
- package/dist/v2/components/callout/Callout.vue.script.js.map +1 -0
- package/dist/v2/components/code-input/CodeInput.vue.js +10 -0
- package/dist/v2/components/code-input/CodeInput.vue.js.map +1 -0
- package/dist/v2/components/code-input/CodeInput.vue.script.js +380 -0
- package/dist/v2/components/code-input/CodeInput.vue.script.js.map +1 -0
- package/dist/v2/components/code-input/code-variable-widget.js +132 -0
- package/dist/v2/components/code-input/code-variable-widget.js.map +1 -0
- package/dist/v2/components/code-input/index.d.ts +1 -1
- package/dist/v2/components/code-input/index.js +1 -1
- package/dist/v2/components/context-menu/ContextMenu.vue.d.ts +27 -0
- package/dist/v2/components/context-menu/ContextMenu.vue.d.ts.map +1 -0
- package/dist/v2/components/context-menu/ContextMenu.vue.js +8 -0
- package/dist/v2/components/context-menu/ContextMenu.vue.js.map +1 -0
- package/dist/v2/components/context-menu/ContextMenu.vue.script.js +53 -0
- package/dist/v2/components/context-menu/ContextMenu.vue.script.js.map +1 -0
- package/dist/v2/components/context-menu/index.d.ts +2 -0
- package/dist/v2/components/context-menu/index.d.ts.map +1 -0
- package/dist/v2/components/context-menu/index.js +2 -0
- package/dist/v2/components/data-table/DataTable.vue.js +7 -0
- package/dist/v2/components/data-table/DataTable.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTable.vue.script.js +30 -0
- package/dist/v2/components/data-table/DataTable.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/DataTableCell.vue.js +7 -0
- package/dist/v2/components/data-table/DataTableCell.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableCell.vue.script.js +21 -0
- package/dist/v2/components/data-table/DataTableCell.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/DataTableCheckbox.vue.js +7 -0
- package/dist/v2/components/data-table/DataTableCheckbox.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js +43 -0
- package/dist/v2/components/data-table/DataTableCheckbox.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/DataTableHeader.vue.js +7 -0
- package/dist/v2/components/data-table/DataTableHeader.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableHeader.vue.script.js +20 -0
- package/dist/v2/components/data-table/DataTableHeader.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/DataTableInput.vue.js +9 -0
- package/dist/v2/components/data-table/DataTableInput.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableInput.vue.script.js +160 -0
- package/dist/v2/components/data-table/DataTableInput.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/DataTableInputSelect.vue.d.ts +1 -1
- package/dist/v2/components/data-table/DataTableInputSelect.vue.js +7 -0
- package/dist/v2/components/data-table/DataTableInputSelect.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js +161 -0
- package/dist/v2/components/data-table/DataTableInputSelect.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/DataTableRow.vue.js +13 -0
- package/dist/v2/components/data-table/DataTableRow.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableText.vue.js +7 -0
- package/dist/v2/components/data-table/DataTableText.vue.js.map +1 -0
- package/dist/v2/components/data-table/DataTableText.vue.script.js +20 -0
- package/dist/v2/components/data-table/DataTableText.vue.script.js.map +1 -0
- package/dist/v2/components/data-table/index.d.ts +8 -8
- package/dist/v2/components/data-table/index.js +8 -2
- package/dist/v2/components/forms/ConfirmationForm.vue.js +7 -0
- package/dist/v2/components/forms/ConfirmationForm.vue.js.map +1 -0
- package/dist/v2/components/forms/ConfirmationForm.vue.script.js +40 -0
- package/dist/v2/components/forms/ConfirmationForm.vue.script.js.map +1 -0
- package/dist/v2/components/forms/index.d.ts +1 -1
- package/dist/v2/components/forms/index.js +1 -1
- package/dist/v2/components/layout/CollapsibleSection.vue.js +7 -0
- package/dist/v2/components/layout/CollapsibleSection.vue.js.map +1 -0
- package/dist/v2/components/layout/CollapsibleSection.vue.script.js +79 -0
- package/dist/v2/components/layout/CollapsibleSection.vue.script.js.map +1 -0
- package/dist/v2/components/layout/ValueEmitter.vue.js +7 -0
- package/dist/v2/components/layout/ValueEmitter.vue.js.map +1 -0
- package/dist/v2/components/layout/ValueEmitter.vue.script.js +18 -0
- package/dist/v2/components/layout/ValueEmitter.vue.script.js.map +1 -0
- package/dist/v2/components/layout/index.d.ts +1 -1
- package/dist/v2/components/layout/index.js +1 -1
- package/dist/v2/components/modals/DeleteModal.vue.js +7 -0
- package/dist/v2/components/modals/DeleteModal.vue.js.map +1 -0
- package/dist/v2/components/modals/DeleteModal.vue.script.js +36 -0
- package/dist/v2/components/modals/DeleteModal.vue.script.js.map +1 -0
- package/dist/v2/components/modals/ModalClientContainer.vue.js +9 -0
- package/dist/v2/components/modals/ModalClientContainer.vue.js.map +1 -0
- package/dist/v2/components/modals/ModalClientContainer.vue.script.js +62 -0
- package/dist/v2/components/modals/ModalClientContainer.vue.script.js.map +1 -0
- package/dist/v2/components/modals/index.d.ts +1 -1
- package/dist/v2/components/modals/index.js +1 -37
- package/dist/v2/components/resize/Resize.vue.js +10 -0
- package/dist/v2/components/resize/Resize.vue.js.map +1 -0
- package/dist/v2/components/resize/Resize.vue.script.js +52 -0
- package/dist/v2/components/resize/Resize.vue.script.js.map +1 -0
- package/dist/v2/components/resize/index.d.ts +2 -2
- package/dist/v2/components/resize/index.js +2 -1
- package/dist/v2/components/resize/use-split-resize.js +62 -0
- package/dist/v2/components/resize/use-split-resize.js.map +1 -0
- package/dist/v2/components/server/ServerDropdown.vue.js +7 -0
- package/dist/v2/components/server/ServerDropdown.vue.js.map +1 -0
- package/dist/v2/components/server/ServerDropdown.vue.script.js +95 -0
- package/dist/v2/components/server/ServerDropdown.vue.script.js.map +1 -0
- package/dist/v2/components/server/ServerDropdownItem.vue.js +9 -0
- package/dist/v2/components/server/ServerDropdownItem.vue.js.map +1 -0
- package/dist/v2/components/server/ServerDropdownItem.vue.script.js +46 -0
- package/dist/v2/components/server/ServerDropdownItem.vue.script.js.map +1 -0
- package/dist/v2/components/server/index.d.ts +1 -1
- package/dist/v2/components/server/index.js +1 -1
- package/dist/v2/components/sidebar/Sidebar.vue.js +7 -0
- package/dist/v2/components/sidebar/Sidebar.vue.js.map +1 -0
- package/dist/v2/components/sidebar/Sidebar.vue.script.js +117 -0
- package/dist/v2/components/sidebar/Sidebar.vue.script.js.map +1 -0
- package/dist/v2/components/sidebar/SidebarMenu.vue.js +7 -0
- package/dist/v2/components/sidebar/SidebarMenu.vue.js.map +1 -0
- package/dist/v2/components/sidebar/SidebarMenu.vue.script.js +52 -0
- package/dist/v2/components/sidebar/SidebarMenu.vue.script.js.map +1 -0
- package/dist/v2/components/sidebar/SidebarToggle.vue.js +7 -0
- package/dist/v2/components/sidebar/SidebarToggle.vue.js.map +1 -0
- package/dist/v2/components/sidebar/SidebarToggle.vue.script.js +54 -0
- package/dist/v2/components/sidebar/SidebarToggle.vue.script.js.map +1 -0
- package/dist/v2/components/sidebar/index.d.ts +3 -3
- package/dist/v2/components/sidebar/index.js +3 -2
- package/dist/v2/constants.js +7 -0
- package/dist/v2/constants.js.map +1 -0
- package/dist/v2/features/app/App.vue.d.ts +2 -2
- package/dist/v2/features/app/App.vue.d.ts.map +1 -1
- package/dist/v2/features/app/App.vue.js +8 -0
- package/dist/v2/features/app/App.vue.js.map +1 -0
- package/dist/v2/features/app/App.vue.script.js +177 -0
- package/dist/v2/features/app/App.vue.script.js.map +1 -0
- package/dist/v2/features/app/app-events.js +242 -0
- package/dist/v2/features/app/app-events.js.map +1 -0
- package/dist/v2/features/app/app-state.d.ts +3 -1
- package/dist/v2/features/app/app-state.d.ts.map +1 -1
- package/dist/v2/features/app/app-state.js +629 -0
- package/dist/v2/features/app/app-state.js.map +1 -0
- package/dist/v2/features/app/components/AppSidebar.vue.js +9 -0
- package/dist/v2/features/app/components/AppSidebar.vue.js.map +1 -0
- package/dist/v2/features/app/components/AppSidebar.vue.script.js +318 -0
- package/dist/v2/features/app/components/AppSidebar.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.js +7 -0
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.js.map +1 -0
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.script.js +58 -0
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/DesktopTab.vue.d.ts.map +1 -1
- package/dist/v2/features/app/components/DesktopTab.vue.js +9 -0
- package/dist/v2/features/app/components/DesktopTab.vue.js.map +1 -0
- package/dist/v2/features/app/components/DesktopTab.vue.script.js +121 -0
- package/dist/v2/features/app/components/DesktopTab.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/DesktopTabs.vue.js +7 -0
- package/dist/v2/features/app/components/DesktopTabs.vue.js.map +1 -0
- package/dist/v2/features/app/components/DesktopTabs.vue.script.js +75 -0
- package/dist/v2/features/app/components/DesktopTabs.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/DownloadAppButton.vue.js +9 -0
- package/dist/v2/features/app/components/DownloadAppButton.vue.js.map +1 -0
- package/dist/v2/features/app/components/DownloadAppButton.vue.script.js +21 -0
- package/dist/v2/features/app/components/DownloadAppButton.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/SidebarItemMenu.vue.js +7 -0
- package/dist/v2/features/app/components/SidebarItemMenu.vue.js.map +1 -0
- package/dist/v2/features/app/components/SidebarItemMenu.vue.script.js +175 -0
- package/dist/v2/features/app/components/SidebarItemMenu.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/SplashScreen.vue.js +9 -0
- package/dist/v2/features/app/components/SplashScreen.vue.js.map +1 -0
- package/dist/v2/features/app/components/SplashScreen.vue.script.js +20 -0
- package/dist/v2/features/app/components/SplashScreen.vue.script.js.map +1 -0
- package/dist/v2/features/app/components/index.d.ts +1 -1
- package/dist/v2/features/app/components/index.js +1 -9
- package/dist/v2/features/app/helpers/create-api-client-app.d.ts +6 -2
- package/dist/v2/features/app/helpers/create-api-client-app.d.ts.map +1 -1
- package/dist/v2/features/app/helpers/create-api-client-app.js +54 -0
- package/dist/v2/features/app/helpers/create-api-client-app.js.map +1 -0
- package/dist/v2/features/app/helpers/filter-workspaces.js +55 -0
- package/dist/v2/features/app/helpers/filter-workspaces.js.map +1 -0
- package/dist/v2/features/app/helpers/get-route-param.d.ts +1 -1
- package/dist/v2/features/app/helpers/get-route-param.js +12 -0
- package/dist/v2/features/app/helpers/get-route-param.js.map +1 -0
- package/dist/v2/features/app/helpers/group-workspaces.js +38 -0
- package/dist/v2/features/app/helpers/group-workspaces.js.map +1 -0
- package/dist/v2/features/app/helpers/routes.d.ts +9 -3
- package/dist/v2/features/app/helpers/routes.d.ts.map +1 -1
- package/dist/v2/features/app/helpers/routes.js +133 -0
- package/dist/v2/features/app/helpers/routes.js.map +1 -0
- package/dist/v2/features/app/hooks/use-document-watcher.js +168 -0
- package/dist/v2/features/app/hooks/use-document-watcher.js.map +1 -0
- package/dist/v2/features/app/hooks/use-theme.d.ts +1 -1
- package/dist/v2/features/app/hooks/use-theme.js +94 -0
- package/dist/v2/features/app/hooks/use-theme.js.map +1 -0
- package/dist/v2/features/app/index.d.ts +7 -7
- package/dist/v2/features/app/index.js +7 -3161
- package/dist/v2/features/collection/DocumentCollection.vue.d.ts +1 -1
- package/dist/v2/features/collection/DocumentCollection.vue.d.ts.map +1 -1
- package/dist/v2/features/collection/DocumentCollection.vue.js +8 -0
- package/dist/v2/features/collection/DocumentCollection.vue.js.map +1 -0
- package/dist/v2/features/collection/DocumentCollection.vue.script.js +362 -0
- package/dist/v2/features/collection/DocumentCollection.vue.script.js.map +1 -0
- package/dist/v2/features/collection/OperationCollection.vue.d.ts +1 -1
- package/dist/v2/features/collection/OperationCollection.vue.js +7 -0
- package/dist/v2/features/collection/OperationCollection.vue.js.map +1 -0
- package/dist/v2/features/collection/OperationCollection.vue.script.js +94 -0
- package/dist/v2/features/collection/OperationCollection.vue.script.js.map +1 -0
- package/dist/v2/features/collection/WorkspaceCollection.vue.d.ts +1 -1
- package/dist/v2/features/collection/WorkspaceCollection.vue.js +7 -0
- package/dist/v2/features/collection/WorkspaceCollection.vue.js.map +1 -0
- package/dist/v2/features/collection/WorkspaceCollection.vue.script.js +73 -0
- package/dist/v2/features/collection/WorkspaceCollection.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Authentication.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Authentication.vue.js +9 -0
- package/dist/v2/features/collection/components/Authentication.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Authentication.vue.script.js +166 -0
- package/dist/v2/features/collection/components/Authentication.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Cookies.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Cookies.vue.js +7 -0
- package/dist/v2/features/collection/components/Cookies.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Cookies.vue.script.js +57 -0
- package/dist/v2/features/collection/components/Cookies.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/Editor.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Editor/Editor.vue.js +9 -0
- package/dist/v2/features/collection/components/Editor/Editor.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/Editor.vue.script.js +360 -0
- package/dist/v2/features/collection/components/Editor/Editor.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/components/EditorDiagnosticsPanel.vue.js +7 -0
- package/dist/v2/features/collection/components/Editor/components/EditorDiagnosticsPanel.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/components/EditorDiagnosticsPanel.vue.script.js +69 -0
- package/dist/v2/features/collection/components/Editor/components/EditorDiagnosticsPanel.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/components/EditorSavePanel.vue.js +7 -0
- package/dist/v2/features/collection/components/Editor/components/EditorSavePanel.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/components/EditorSavePanel.vue.script.js +91 -0
- package/dist/v2/features/collection/components/Editor/components/EditorSavePanel.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/helpers/get-diagnostic-counts.js +22 -0
- package/dist/v2/features/collection/components/Editor/helpers/get-diagnostic-counts.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/helpers/get-operation-context.js +17 -0
- package/dist/v2/features/collection/components/Editor/helpers/get-operation-context.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/helpers/get-visible-diagnostics.js +17 -0
- package/dist/v2/features/collection/components/Editor/helpers/get-visible-diagnostics.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/helpers/parse-editor-object.js +34 -0
- package/dist/v2/features/collection/components/Editor/helpers/parse-editor-object.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/helpers/stringify-document.js +18 -0
- package/dist/v2/features/collection/components/Editor/helpers/stringify-document.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/hooks/use-editor-state.js +36 -0
- package/dist/v2/features/collection/components/Editor/hooks/use-editor-state.js.map +1 -0
- package/dist/v2/features/collection/components/Editor/index.d.ts +1 -1
- package/dist/v2/features/collection/components/Editor/index.js +1 -1
- package/dist/v2/features/collection/components/Environment.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Environment.vue.js +7 -0
- package/dist/v2/features/collection/components/Environment.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Environment.vue.script.js +60 -0
- package/dist/v2/features/collection/components/Environment.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Form.vue.js +7 -0
- package/dist/v2/features/collection/components/Form.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Form.vue.script.js +75 -0
- package/dist/v2/features/collection/components/Form.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/LabelInput.vue.js +9 -0
- package/dist/v2/features/collection/components/LabelInput.vue.js.map +1 -0
- package/dist/v2/features/collection/components/LabelInput.vue.script.js +38 -0
- package/dist/v2/features/collection/components/LabelInput.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Overview.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Overview.vue.js +9 -0
- package/dist/v2/features/collection/components/Overview.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Overview.vue.script.js +203 -0
- package/dist/v2/features/collection/components/Overview.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Servers.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Servers.vue.js +7 -0
- package/dist/v2/features/collection/components/Servers.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Servers.vue.script.js +217 -0
- package/dist/v2/features/collection/components/Servers.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Settings.vue.d.ts +4 -4
- package/dist/v2/features/collection/components/Settings.vue.d.ts.map +1 -1
- package/dist/v2/features/collection/components/Settings.vue.js +7 -0
- package/dist/v2/features/collection/components/Settings.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Settings.vue.script.js +80 -0
- package/dist/v2/features/collection/components/Settings.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/SyncConflictResolutionEditor.vue.js +9 -0
- package/dist/v2/features/collection/components/SyncConflictResolutionEditor.vue.js.map +1 -0
- package/dist/v2/features/collection/components/SyncConflictResolutionEditor.vue.script.js +136 -0
- package/dist/v2/features/collection/components/SyncConflictResolutionEditor.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Tabs.vue.d.ts +1 -1
- package/dist/v2/features/collection/components/Tabs.vue.js +7 -0
- package/dist/v2/features/collection/components/Tabs.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Tabs.vue.script.js +53 -0
- package/dist/v2/features/collection/components/Tabs.vue.script.js.map +1 -0
- package/dist/v2/features/collection/helpers/get-default-operation-security-toggle.js +19 -0
- package/dist/v2/features/collection/helpers/get-default-operation-security-toggle.js.map +1 -0
- package/dist/v2/features/command-palette/TheCommandPalette.vue.d.ts +1 -1
- package/dist/v2/features/command-palette/TheCommandPalette.vue.js +9 -0
- package/dist/v2/features/command-palette/TheCommandPalette.vue.js.map +1 -0
- package/dist/v2/features/command-palette/TheCommandPalette.vue.script.js +189 -0
- package/dist/v2/features/command-palette/TheCommandPalette.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandActionForm.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandActionForm.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js +47 -0
- package/dist/v2/features/command-palette/components/CommandActionForm.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandActionInput.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandActionInput.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandActionInput.vue.script.js +73 -0
- package/dist/v2/features/command-palette/components/CommandActionInput.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteExample.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandPaletteExample.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteExample.vue.script.js +207 -0
- package/dist/v2/features/command-palette/components/CommandPaletteExample.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.d.ts +3 -23
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.d.ts.map +1 -1
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.script.js +206 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportCurl.vue.js +9 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportCurl.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportCurl.vue.script.js +125 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportCurl.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportPostman.vue.d.ts +30 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportPostman.vue.d.ts.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportPostman.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportPostman.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportPostman.vue.script.js +151 -0
- package/dist/v2/features/command-palette/components/CommandPaletteImportPostman.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue.script.js +89 -0
- package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteRequest.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandPaletteRequest.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteRequest.vue.script.js +226 -0
- package/dist/v2/features/command-palette/components/CommandPaletteRequest.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteTag.vue.js +7 -0
- package/dist/v2/features/command-palette/components/CommandPaletteTag.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/CommandPaletteTag.vue.script.js +126 -0
- package/dist/v2/features/command-palette/components/CommandPaletteTag.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/PostmanImportPreview.vue.d.ts +58 -0
- package/dist/v2/features/command-palette/components/PostmanImportPreview.vue.d.ts.map +1 -0
- package/dist/v2/features/command-palette/components/PostmanImportPreview.vue.js +9 -0
- package/dist/v2/features/command-palette/components/PostmanImportPreview.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/PostmanImportPreview.vue.script.js +142 -0
- package/dist/v2/features/command-palette/components/PostmanImportPreview.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/PostmanRequestTreeRow.vue.d.ts +23 -0
- package/dist/v2/features/command-palette/components/PostmanRequestTreeRow.vue.d.ts.map +1 -0
- package/dist/v2/features/command-palette/components/PostmanRequestTreeRow.vue.js +9 -0
- package/dist/v2/features/command-palette/components/PostmanRequestTreeRow.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/PostmanRequestTreeRow.vue.script.js +138 -0
- package/dist/v2/features/command-palette/components/PostmanRequestTreeRow.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/components/WatchModeToggle.vue.js +7 -0
- package/dist/v2/features/command-palette/components/WatchModeToggle.vue.js.map +1 -0
- package/dist/v2/features/command-palette/components/WatchModeToggle.vue.script.js +39 -0
- package/dist/v2/features/command-palette/components/WatchModeToggle.vue.script.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/generate-unique-slug.js +29 -0
- package/dist/v2/features/command-palette/helpers/generate-unique-slug.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/get-merge-key.d.ts +11 -0
- package/dist/v2/features/command-palette/helpers/get-merge-key.d.ts.map +1 -0
- package/dist/v2/features/command-palette/helpers/get-merge-key.js +32 -0
- package/dist/v2/features/command-palette/helpers/get-merge-key.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/get-openapi-document-details.js +56 -0
- package/dist/v2/features/command-palette/helpers/get-openapi-document-details.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/get-openapi-from-postman.d.ts +2 -1
- package/dist/v2/features/command-palette/helpers/get-openapi-from-postman.d.ts.map +1 -1
- package/dist/v2/features/command-palette/helpers/get-openapi-from-postman.js +22 -0
- package/dist/v2/features/command-palette/helpers/get-openapi-from-postman.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/get-operation-from-curl.js +119 -0
- package/dist/v2/features/command-palette/helpers/get-operation-from-curl.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/get-postman-document-details.d.ts +4 -0
- package/dist/v2/features/command-palette/helpers/get-postman-document-details.d.ts.map +1 -1
- package/dist/v2/features/command-palette/helpers/get-postman-document-details.js +36 -0
- package/dist/v2/features/command-palette/helpers/get-postman-document-details.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/import-document-to-workspace.js +70 -0
- package/dist/v2/features/command-palette/helpers/import-document-to-workspace.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/is-postman-collection.js +24 -0
- package/dist/v2/features/command-palette/helpers/is-postman-collection.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/load-document-from-source.js +71 -0
- package/dist/v2/features/command-palette/helpers/load-document-from-source.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/postman-request-collisions.d.ts +11 -0
- package/dist/v2/features/command-palette/helpers/postman-request-collisions.d.ts.map +1 -0
- package/dist/v2/features/command-palette/helpers/postman-request-collisions.js +35 -0
- package/dist/v2/features/command-palette/helpers/postman-request-collisions.js.map +1 -0
- package/dist/v2/features/command-palette/helpers/postman-request-tree.d.ts +41 -0
- package/dist/v2/features/command-palette/helpers/postman-request-tree.d.ts.map +1 -0
- package/dist/v2/features/command-palette/helpers/postman-request-tree.js +139 -0
- package/dist/v2/features/command-palette/helpers/postman-request-tree.js.map +1 -0
- package/dist/v2/features/command-palette/hooks/use-command-palette-state.d.ts +38 -2
- package/dist/v2/features/command-palette/hooks/use-command-palette-state.d.ts.map +1 -1
- package/dist/v2/features/command-palette/hooks/use-command-palette-state.js +207 -0
- package/dist/v2/features/command-palette/hooks/use-command-palette-state.js.map +1 -0
- package/dist/v2/features/command-palette/index.d.ts +2 -2
- package/dist/v2/features/command-palette/index.js +2 -2
- package/dist/v2/features/editor/config.js +19 -0
- package/dist/v2/features/editor/config.js.map +1 -0
- package/dist/v2/features/editor/helpers/configure-language-support.js +48 -0
- package/dist/v2/features/editor/helpers/configure-language-support.js.map +1 -0
- package/dist/v2/features/editor/helpers/ensure-monaco-environment.js +21 -0
- package/dist/v2/features/editor/helpers/ensure-monaco-environment.js.map +1 -0
- package/dist/v2/features/editor/helpers/json/create-json-model.js +31 -0
- package/dist/v2/features/editor/helpers/json/create-json-model.js.map +1 -0
- package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.d.ts +1 -1
- package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.js +22 -0
- package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.js.map +1 -0
- package/dist/v2/features/editor/helpers/json/json-ast.js +32 -0
- package/dist/v2/features/editor/helpers/json/json-ast.js.map +1 -0
- package/dist/v2/features/editor/helpers/json/json-pointer-links.js +104 -0
- package/dist/v2/features/editor/helpers/json/json-pointer-links.js.map +1 -0
- package/dist/v2/features/editor/helpers/json/json-pointer-path.d.ts +1 -1
- package/dist/v2/features/editor/helpers/json/json-pointer-path.js +27 -0
- package/dist/v2/features/editor/helpers/json/json-pointer-path.js.map +1 -0
- package/dist/v2/features/editor/helpers/range-to-whole-line.js +27 -0
- package/dist/v2/features/editor/helpers/range-to-whole-line.js.map +1 -0
- package/dist/v2/features/editor/helpers/theme/apply-scalar-theme.js +84 -0
- package/dist/v2/features/editor/helpers/theme/apply-scalar-theme.js.map +1 -0
- package/dist/v2/features/editor/helpers/theme/load-css-variables.js +41 -0
- package/dist/v2/features/editor/helpers/theme/load-css-variables.js.map +1 -0
- package/dist/v2/features/editor/helpers/yaml/create-yaml-model.js +32 -0
- package/dist/v2/features/editor/helpers/yaml/create-yaml-model.js.map +1 -0
- package/dist/v2/features/editor/helpers/yaml/get-yaml-node-range-from-path.js +70 -0
- package/dist/v2/features/editor/helpers/yaml/get-yaml-node-range-from-path.js.map +1 -0
- package/dist/v2/features/editor/hooks/use-editor-markers.js +37 -0
- package/dist/v2/features/editor/hooks/use-editor-markers.js.map +1 -0
- package/dist/v2/features/editor/hooks/use-editor.js +133 -0
- package/dist/v2/features/editor/hooks/use-editor.js.map +1 -0
- package/dist/v2/features/editor/hooks/use-json-pointer-link-support.js +45 -0
- package/dist/v2/features/editor/hooks/use-json-pointer-link-support.js.map +1 -0
- package/dist/v2/features/editor/hooks/use-three-way-merge-editor.js +396 -0
- package/dist/v2/features/editor/hooks/use-three-way-merge-editor.js.map +1 -0
- package/dist/v2/features/editor/index.d.ts +4 -4
- package/dist/v2/features/editor/index.js +4 -1
- package/dist/v2/features/editor/schemas/openapi-3.1-schema.json.js +51 -0
- package/dist/v2/features/editor/schemas/openapi-3.1-schema.json.js.map +1 -0
- package/dist/v2/features/environments/EnvironmentsList.vue.js +7 -0
- package/dist/v2/features/environments/EnvironmentsList.vue.js.map +1 -0
- package/dist/v2/features/environments/EnvironmentsList.vue.script.js +96 -0
- package/dist/v2/features/environments/EnvironmentsList.vue.script.js.map +1 -0
- package/dist/v2/features/environments/components/Environment.vue.js +7 -0
- package/dist/v2/features/environments/components/Environment.vue.js.map +1 -0
- package/dist/v2/features/environments/components/Environment.vue.script.js +65 -0
- package/dist/v2/features/environments/components/Environment.vue.script.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentColors.vue.js +7 -0
- package/dist/v2/features/environments/components/EnvironmentColors.vue.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js +158 -0
- package/dist/v2/features/environments/components/EnvironmentColors.vue.script.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.js +7 -0
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js +97 -0
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.js +7 -0
- package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js +50 -0
- package/dist/v2/features/environments/components/EnvironmentDeleteModal.vue.script.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.js +7 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js +113 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js +9 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.js.map +1 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js +152 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesTable.vue.script.js.map +1 -0
- package/dist/v2/features/environments/index.d.ts +1 -1
- package/dist/v2/features/environments/index.js +1 -3
- package/dist/v2/features/global-cookies/components/CookiesTable.vue.js +9 -0
- package/dist/v2/features/global-cookies/components/CookiesTable.vue.js.map +1 -0
- package/dist/v2/features/global-cookies/components/CookiesTable.vue.script.js +186 -0
- package/dist/v2/features/global-cookies/components/CookiesTable.vue.script.js.map +1 -0
- package/dist/v2/features/global-cookies/index.d.ts +1 -1
- package/dist/v2/features/global-cookies/index.js +1 -3
- package/dist/v2/features/modal/Modal.vue.d.ts +4 -2
- package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
- package/dist/v2/features/modal/Modal.vue.js +7 -0
- package/dist/v2/features/modal/Modal.vue.js.map +1 -0
- package/dist/v2/features/modal/Modal.vue.script.js +151 -0
- package/dist/v2/features/modal/Modal.vue.script.js.map +1 -0
- package/dist/v2/features/modal/helpers/create-api-client-modal.d.ts +2 -2
- package/dist/v2/features/modal/helpers/create-api-client-modal.d.ts.map +1 -1
- package/dist/v2/features/modal/helpers/create-api-client-modal.js +103 -0
- package/dist/v2/features/modal/helpers/create-api-client-modal.js.map +1 -0
- package/dist/v2/features/modal/helpers/map-hidden-clients-config.js +32 -0
- package/dist/v2/features/modal/helpers/map-hidden-clients-config.js.map +1 -0
- package/dist/v2/features/modal/helpers/resolve-route-parameters.js +92 -0
- package/dist/v2/features/modal/helpers/resolve-route-parameters.js.map +1 -0
- package/dist/v2/features/modal/helpers/restore-workspace-state.js +51 -0
- package/dist/v2/features/modal/helpers/restore-workspace-state.js.map +1 -0
- package/dist/v2/features/modal/hooks/use-modal-sidebar.d.ts +1 -1
- package/dist/v2/features/modal/hooks/use-modal-sidebar.js +142 -0
- package/dist/v2/features/modal/hooks/use-modal-sidebar.js.map +1 -0
- package/dist/v2/features/modal/index.d.ts +3 -3
- package/dist/v2/features/modal/index.js +3 -639
- package/dist/v2/features/modal/modal-events.d.ts +3 -2
- package/dist/v2/features/modal/modal-events.d.ts.map +1 -1
- package/dist/v2/features/modal/modal-events.js +43 -0
- package/dist/v2/features/modal/modal-events.js.map +1 -0
- package/dist/v2/features/operation/Operation.vue.d.ts +6 -2
- package/dist/v2/features/operation/Operation.vue.d.ts.map +1 -1
- package/dist/v2/features/operation/Operation.vue.js +7 -0
- package/dist/v2/features/operation/Operation.vue.js.map +1 -0
- package/dist/v2/features/operation/Operation.vue.script.js +185 -0
- package/dist/v2/features/operation/Operation.vue.script.js.map +1 -0
- package/dist/v2/features/operation/helpers/combine-params.js +20 -0
- package/dist/v2/features/operation/helpers/combine-params.js.map +1 -0
- package/dist/v2/features/operation/helpers/get-security-requirements.js +17 -0
- package/dist/v2/features/operation/helpers/get-security-requirements.js.map +1 -0
- package/dist/v2/features/operation/helpers/get-selected-security.js +41 -0
- package/dist/v2/features/operation/helpers/get-selected-security.js.map +1 -0
- package/dist/v2/features/operation/helpers/get-selected-server.js +21 -0
- package/dist/v2/features/operation/helpers/get-selected-server.js.map +1 -0
- package/dist/v2/features/operation/index.d.ts +5 -5
- package/dist/v2/features/operation/index.js +5 -18
- package/dist/v2/features/search/helpers/create-fuse-instance.js +52 -0
- package/dist/v2/features/search/helpers/create-fuse-instance.js.map +1 -0
- package/dist/v2/features/search/helpers/create-search-index.js +76 -0
- package/dist/v2/features/search/helpers/create-search-index.js.map +1 -0
- package/dist/v2/features/search/hooks/use-search-index.js +31 -0
- package/dist/v2/features/search/hooks/use-search-index.js.map +1 -0
- package/dist/v2/features/search/index.d.ts +1 -1
- package/dist/v2/features/search/index.js +1 -1
- package/dist/v2/features/settings/CollectionSettings.vue.d.ts +4 -0
- package/dist/v2/features/settings/CollectionSettings.vue.d.ts.map +1 -1
- package/dist/v2/features/settings/CollectionSettings.vue.js +7 -0
- package/dist/v2/features/settings/CollectionSettings.vue.js.map +1 -0
- package/dist/v2/features/settings/CollectionSettings.vue.script.js +229 -0
- package/dist/v2/features/settings/CollectionSettings.vue.script.js.map +1 -0
- package/dist/v2/features/settings/DocumentSettings.vue.js +7 -0
- package/dist/v2/features/settings/DocumentSettings.vue.js.map +1 -0
- package/dist/v2/features/settings/DocumentSettings.vue.script.js +92 -0
- package/dist/v2/features/settings/DocumentSettings.vue.script.js.map +1 -0
- package/dist/v2/features/settings/components/Appearance.vue.js +7 -0
- package/dist/v2/features/settings/components/Appearance.vue.js.map +1 -0
- package/dist/v2/features/settings/components/Appearance.vue.script.js +63 -0
- package/dist/v2/features/settings/components/Appearance.vue.script.js.map +1 -0
- package/dist/v2/features/settings/components/Section.vue.js +7 -0
- package/dist/v2/features/settings/components/Section.vue.js.map +1 -0
- package/dist/v2/features/settings/components/Section.vue.script.js +30 -0
- package/dist/v2/features/settings/components/Section.vue.script.js.map +1 -0
- package/dist/v2/features/settings/helpers/get-theme-colors.js +68 -0
- package/dist/v2/features/settings/helpers/get-theme-colors.js.map +1 -0
- package/dist/v2/features/settings/index.d.ts +2 -2
- package/dist/v2/features/settings/index.js +2 -1
- package/dist/v2/helpers/download-document.d.ts +2 -0
- package/dist/v2/helpers/download-document.d.ts.map +1 -0
- package/dist/v2/helpers/download-document.js +42 -0
- package/dist/v2/helpers/download-document.js.map +1 -0
- package/dist/v2/helpers/drag-handle-factory.d.ts.map +1 -1
- package/dist/v2/helpers/drag-handle-factory.js +258 -0
- package/dist/v2/helpers/drag-handle-factory.js.map +1 -0
- package/dist/v2/helpers/generate-location-id.js +25 -0
- package/dist/v2/helpers/generate-location-id.js.map +1 -0
- package/dist/v2/helpers/get-active-environment.js +19 -0
- package/dist/v2/helpers/get-active-environment.js.map +1 -0
- package/dist/v2/helpers/get-active-proxy-url.js +26 -0
- package/dist/v2/helpers/get-active-proxy-url.js.map +1 -0
- package/dist/v2/helpers/get-servers.js +106 -0
- package/dist/v2/helpers/get-servers.js.map +1 -0
- package/dist/v2/helpers/get-tab-details.d.ts +1 -1
- package/dist/v2/helpers/get-tab-details.js +54 -0
- package/dist/v2/helpers/get-tab-details.js.map +1 -0
- package/dist/v2/helpers/handle-hotkeys.js +151 -0
- package/dist/v2/helpers/handle-hotkeys.js.map +1 -0
- package/dist/v2/helpers/index.d.ts +2 -2
- package/dist/v2/helpers/index.js +2 -2
- package/dist/v2/helpers/is-url.js +9 -0
- package/dist/v2/helpers/is-url.js.map +1 -0
- package/dist/v2/helpers/slugify.js +15 -0
- package/dist/v2/helpers/slugify.js.map +1 -0
- package/dist/v2/helpers/storage.d.ts +8 -0
- package/dist/v2/helpers/storage.d.ts.map +1 -1
- package/dist/v2/helpers/storage.js +37 -0
- package/dist/v2/helpers/storage.js.map +1 -0
- package/dist/v2/hooks/use-color-mode.js +72 -0
- package/dist/v2/hooks/use-color-mode.js.map +1 -0
- package/dist/v2/hooks/use-global-hot-keys.js +22 -0
- package/dist/v2/hooks/use-global-hot-keys.js.map +1 -0
- package/dist/v2/hooks/use-scroll-lock.js +58 -0
- package/dist/v2/hooks/use-scroll-lock.js.map +1 -0
- package/dist/v2/posthog.d.ts +3 -0
- package/dist/v2/posthog.d.ts.map +1 -0
- package/dist/v2/posthog.js +19 -0
- package/dist/v2/posthog.js.map +1 -0
- package/dist/v2/workspace-events.js +109 -0
- package/dist/v2/workspace-events.js.map +1 -0
- package/dist/views/Collection/Collection.vue.js +7 -0
- package/dist/views/Collection/Collection.vue.js.map +1 -0
- package/dist/views/Collection/Collection.vue.script.js +46 -0
- package/dist/views/Collection/Collection.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionAuthentication.vue.js +9 -0
- package/dist/views/Collection/CollectionAuthentication.vue.js.map +1 -0
- package/dist/views/Collection/CollectionAuthentication.vue.script.js +52 -0
- package/dist/views/Collection/CollectionAuthentication.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionCookies.vue.js +7 -0
- package/dist/views/Collection/CollectionCookies.vue.js.map +1 -0
- package/dist/views/Collection/CollectionCookies.vue.script.js +18 -0
- package/dist/views/Collection/CollectionCookies.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionEnvironment.vue.js +8 -0
- package/dist/views/Collection/CollectionEnvironment.vue.js.map +1 -0
- package/dist/views/Collection/CollectionEnvironment.vue.script.js +238 -0
- package/dist/views/Collection/CollectionEnvironment.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionInfoForm.vue.js +9 -0
- package/dist/views/Collection/CollectionInfoForm.vue.js.map +1 -0
- package/dist/views/Collection/CollectionInfoForm.vue.script.js +73 -0
- package/dist/views/Collection/CollectionInfoForm.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionNavigation.vue.js +7 -0
- package/dist/views/Collection/CollectionNavigation.vue.js.map +1 -0
- package/dist/views/Collection/CollectionNavigation.vue.script.js +75 -0
- package/dist/views/Collection/CollectionNavigation.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionOverview.vue.js +7 -0
- package/dist/views/Collection/CollectionOverview.vue.js.map +1 -0
- package/dist/views/Collection/CollectionOverview.vue.script.js +42 -0
- package/dist/views/Collection/CollectionOverview.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionScripts.vue.js +7 -0
- package/dist/views/Collection/CollectionScripts.vue.js.map +1 -0
- package/dist/views/Collection/CollectionScripts.vue.script.js +18 -0
- package/dist/views/Collection/CollectionScripts.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionServerForm.vue.js +7 -0
- package/dist/views/Collection/CollectionServerForm.vue.js.map +1 -0
- package/dist/views/Collection/CollectionServerForm.vue.script.js +76 -0
- package/dist/views/Collection/CollectionServerForm.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionServers.vue.js +7 -0
- package/dist/views/Collection/CollectionServers.vue.js.map +1 -0
- package/dist/views/Collection/CollectionServers.vue.script.js +95 -0
- package/dist/views/Collection/CollectionServers.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionSettings.vue.js +7 -0
- package/dist/views/Collection/CollectionSettings.vue.js.map +1 -0
- package/dist/views/Collection/CollectionSettings.vue.script.js +87 -0
- package/dist/views/Collection/CollectionSettings.vue.script.js.map +1 -0
- package/dist/views/Collection/CollectionSync.vue.js +7 -0
- package/dist/views/Collection/CollectionSync.vue.js.map +1 -0
- package/dist/views/Collection/CollectionSync.vue.script.js +18 -0
- package/dist/views/Collection/CollectionSync.vue.script.js.map +1 -0
- package/dist/views/Collection/components/EnvironmentForm.vue.d.ts +1 -1
- package/dist/views/Collection/components/EnvironmentForm.vue.js +9 -0
- package/dist/views/Collection/components/EnvironmentForm.vue.js.map +1 -0
- package/dist/views/Collection/components/EnvironmentForm.vue.script.js +284 -0
- package/dist/views/Collection/components/EnvironmentForm.vue.script.js.map +1 -0
- package/dist/views/Collection/components/MarkdownInput.vue.d.ts +1 -1
- package/dist/views/Collection/components/MarkdownInput.vue.js +9 -0
- package/dist/views/Collection/components/MarkdownInput.vue.js.map +1 -0
- package/dist/views/Collection/components/MarkdownInput.vue.script.js +92 -0
- package/dist/views/Collection/components/MarkdownInput.vue.script.js.map +1 -0
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.d.ts +1 -1
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.js +7 -0
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.js.map +1 -0
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.script.js +74 -0
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.script.js.map +1 -0
- package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.js +66 -0
- package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.js.map +1 -0
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.d.ts +1 -1
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.js +86 -0
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.js.map +1 -0
- package/dist/views/Components/CodeSnippet/helpers/get-snippet.d.ts +1 -1
- package/dist/views/Components/CodeSnippet/helpers/get-snippet.js +39 -0
- package/dist/views/Components/CodeSnippet/helpers/get-snippet.js.map +1 -0
- package/dist/views/Components/CodeSnippet/index.d.ts +4 -4
- package/dist/views/Components/CodeSnippet/index.js +4 -2
- package/dist/views/Cookies/CookieForm.vue.js +7 -0
- package/dist/views/Cookies/CookieForm.vue.js.map +1 -0
- package/dist/views/Cookies/CookieForm.vue.script.js +50 -0
- package/dist/views/Cookies/CookieForm.vue.script.js.map +1 -0
- package/dist/views/Cookies/CookieModal.vue.js +9 -0
- package/dist/views/Cookies/CookieModal.vue.js.map +1 -0
- package/dist/views/Cookies/CookieModal.vue.script.js +83 -0
- package/dist/views/Cookies/CookieModal.vue.script.js.map +1 -0
- package/dist/views/Cookies/Cookies.vue.js +7 -0
- package/dist/views/Cookies/Cookies.vue.js.map +1 -0
- package/dist/views/Cookies/Cookies.vue.script.js +156 -0
- package/dist/views/Cookies/Cookies.vue.script.js.map +1 -0
- package/dist/views/Environment/Environment.vue.js +7 -0
- package/dist/views/Environment/Environment.vue.js.map +1 -0
- package/dist/views/Environment/Environment.vue.script.js +384 -0
- package/dist/views/Environment/Environment.vue.script.js.map +1 -0
- package/dist/views/Environment/EnvironmentColorModal.vue.js +7 -0
- package/dist/views/Environment/EnvironmentColorModal.vue.js.map +1 -0
- package/dist/views/Environment/EnvironmentColorModal.vue.script.js +47 -0
- package/dist/views/Environment/EnvironmentColorModal.vue.script.js.map +1 -0
- package/dist/views/Environment/EnvironmentColors.vue.js +7 -0
- package/dist/views/Environment/EnvironmentColors.vue.js.map +1 -0
- package/dist/views/Environment/EnvironmentColors.vue.script.js +126 -0
- package/dist/views/Environment/EnvironmentColors.vue.script.js.map +1 -0
- package/dist/views/Environment/EnvironmentModal.vue.js +7 -0
- package/dist/views/Environment/EnvironmentModal.vue.js.map +1 -0
- package/dist/views/Environment/EnvironmentModal.vue.script.js +122 -0
- package/dist/views/Environment/EnvironmentModal.vue.script.js.map +1 -0
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.d.ts +1 -1
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.js +7 -0
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.js.map +1 -0
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.script.js +133 -0
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.script.js.map +1 -0
- package/dist/views/Environment/handle-drag.d.ts +1 -1
- package/dist/views/Environment/handle-drag.js +38 -0
- package/dist/views/Environment/handle-drag.js.map +1 -0
- package/dist/views/Request/Request.vue.d.ts +1 -1
- package/dist/views/Request/Request.vue.js +9 -0
- package/dist/views/Request/Request.vue.js.map +1 -0
- package/dist/views/Request/Request.vue.script.js +117 -0
- package/dist/views/Request/Request.vue.script.js.map +1 -0
- package/dist/views/Request/RequestRoot.vue.d.ts.map +1 -1
- package/dist/views/Request/RequestRoot.vue.js +9 -0
- package/dist/views/Request/RequestRoot.vue.js.map +1 -0
- package/dist/views/Request/RequestRoot.vue.script.js +158 -0
- package/dist/views/Request/RequestRoot.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.script.js +52 -0
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.script.js +204 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.script.js +106 -0
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.script.js +216 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.script.js +116 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.script.js +73 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.script.js +205 -0
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.js +39 -0
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestAuth/index.d.ts +3 -3
- package/dist/views/Request/RequestSection/RequestAuth/index.js +3 -3
- package/dist/views/Request/RequestSection/RequestBody.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestBody.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestBody.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestBody.vue.script.js +477 -0
- package/dist/views/Request/RequestSection/RequestBody.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.script.js +187 -0
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestParams.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestParams.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestParams.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestParams.vue.script.js +180 -0
- package/dist/views/Request/RequestSection/RequestParams.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestPathParams.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestPathParams.vue.js +7 -0
- package/dist/views/Request/RequestSection/RequestPathParams.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestPathParams.vue.script.js +115 -0
- package/dist/views/Request/RequestSection/RequestPathParams.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestSection.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestSection.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestSection.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestSection.vue.script.js +297 -0
- package/dist/views/Request/RequestSection/RequestSection.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestTable.vue.d.ts +1 -1
- package/dist/views/Request/RequestSection/RequestTable.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestTable.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestTable.vue.script.js +266 -0
- package/dist/views/Request/RequestSection/RequestTable.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.js +9 -0
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.js.map +1 -0
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.script.js +64 -0
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSection/helpers/filter-security-requirements.js +38 -0
- package/dist/views/Request/RequestSection/helpers/filter-security-requirements.js.map +1 -0
- package/dist/views/Request/RequestSection/helpers/getting-started.js +17 -0
- package/dist/views/Request/RequestSection/helpers/getting-started.js.map +1 -0
- package/dist/views/Request/RequestSection/helpers/update-scheme.d.ts +1 -1
- package/dist/views/Request/RequestSection/helpers/update-scheme.js +22 -0
- package/dist/views/Request/RequestSection/helpers/update-scheme.js.map +1 -0
- package/dist/views/Request/RequestSection/index.d.ts +2 -2
- package/dist/views/Request/RequestSection/index.js +2 -42
- package/dist/views/Request/RequestSidebar.vue.js +9 -0
- package/dist/views/Request/RequestSidebar.vue.js.map +1 -0
- package/dist/views/Request/RequestSidebar.vue.script.js +307 -0
- package/dist/views/Request/RequestSidebar.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSidebarItem.vue.js +10 -0
- package/dist/views/Request/RequestSidebarItem.vue.js.map +1 -0
- package/dist/views/Request/RequestSidebarItem.vue.script.js +475 -0
- package/dist/views/Request/RequestSidebarItem.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSidebarItemMenu.vue.js +9 -0
- package/dist/views/Request/RequestSidebarItemMenu.vue.js.map +1 -0
- package/dist/views/Request/RequestSidebarItemMenu.vue.script.js +222 -0
- package/dist/views/Request/RequestSidebarItemMenu.vue.script.js.map +1 -0
- package/dist/views/Request/RequestSubpageHeader.vue.d.ts +1 -1
- package/dist/views/Request/RequestSubpageHeader.vue.js +9 -0
- package/dist/views/Request/RequestSubpageHeader.vue.js.map +1 -0
- package/dist/views/Request/RequestSubpageHeader.vue.script.js +92 -0
- package/dist/views/Request/RequestSubpageHeader.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.js +7 -0
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.script.js +77 -0
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBody.vue.js +9 -0
- package/dist/views/Request/ResponseSection/ResponseBody.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBody.vue.script.js +91 -0
- package/dist/views/Request/ResponseSection/ResponseBody.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.js +7 -0
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.script.js +35 -0
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.js +14 -0
- package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.js +9 -0
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.script.js +64 -0
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.js +9 -0
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.script.js +54 -0
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.js +7 -0
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.script.js +85 -0
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.js +7 -0
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.script.js +25 -0
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.js +8 -0
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.script.js +51 -0
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.js +7 -0
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.script.js +39 -0
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.js +9 -0
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.script.js +98 -0
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.js +7 -0
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.script.js +77 -0
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.js +9 -0
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.script.js +44 -0
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.js +7 -0
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.script.js +64 -0
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseSection.vue.d.ts +1 -1
- package/dist/views/Request/ResponseSection/ResponseSection.vue.js +9 -0
- package/dist/views/Request/ResponseSection/ResponseSection.vue.js.map +1 -0
- package/dist/views/Request/ResponseSection/ResponseSection.vue.script.js +206 -0
- package/dist/views/Request/ResponseSection/ResponseSection.vue.script.js.map +1 -0
- package/dist/views/Request/ResponseSection/index.d.ts +2 -2
- package/dist/views/Request/ResponseSection/index.js +2 -6
- package/dist/views/Request/components/WorkspaceDropdown.vue.js +7 -0
- package/dist/views/Request/components/WorkspaceDropdown.vue.js.map +1 -0
- package/dist/views/Request/components/WorkspaceDropdown.vue.script.js +182 -0
- package/dist/views/Request/components/WorkspaceDropdown.vue.script.js.map +1 -0
- package/dist/views/Request/components/index.d.ts +1 -1
- package/dist/views/Request/components/index.js +1 -1
- package/dist/views/Request/consts/index.d.ts +2 -2
- package/dist/views/Request/consts/index.js +2 -1
- package/dist/views/Request/consts/mediaTypes.js +231 -0
- package/dist/views/Request/consts/mediaTypes.js.map +1 -0
- package/dist/views/Request/consts/new-auth-options.js +90 -0
- package/dist/views/Request/consts/new-auth-options.js.map +1 -0
- package/dist/views/Request/handle-drag.d.ts +1 -1
- package/dist/views/Request/handle-drag.js +51 -0
- package/dist/views/Request/handle-drag.js.map +1 -0
- package/dist/views/Request/hooks/useOpenApiWatcher.js +96 -0
- package/dist/views/Request/hooks/useOpenApiWatcher.js.map +1 -0
- package/dist/views/Request/libs/auth.js +74 -0
- package/dist/views/Request/libs/auth.js.map +1 -0
- package/dist/views/Request/libs/index.d.ts +3 -3
- package/dist/views/Request/libs/index.js +3 -2
- package/dist/views/Request/libs/oauth2.d.ts +1 -1
- package/dist/views/Request/libs/oauth2.js +178 -0
- package/dist/views/Request/libs/oauth2.js.map +1 -0
- package/dist/views/Request/libs/request.js +46 -0
- package/dist/views/Request/libs/request.js.map +1 -0
- package/dist/views/Request/libs/watch-mode.d.ts +1 -1
- package/dist/views/Request/libs/watch-mode.js +375 -0
- package/dist/views/Request/libs/watch-mode.js.map +1 -0
- package/dist/views/Settings/Settings.vue.js +7 -0
- package/dist/views/Settings/Settings.vue.js.map +1 -0
- package/dist/views/Settings/Settings.vue.script.js +28 -0
- package/dist/views/Settings/Settings.vue.script.js.map +1 -0
- package/dist/views/Settings/SettingsGeneral.vue.js +7 -0
- package/dist/views/Settings/SettingsGeneral.vue.js.map +1 -0
- package/dist/views/Settings/SettingsGeneral.vue.script.js +241 -0
- package/dist/views/Settings/SettingsGeneral.vue.script.js.map +1 -0
- package/dist/views/Settings/components/SettingsAppearance.vue.js +7 -0
- package/dist/views/Settings/components/SettingsAppearance.vue.js.map +1 -0
- package/dist/views/Settings/components/SettingsAppearance.vue.script.js +62 -0
- package/dist/views/Settings/components/SettingsAppearance.vue.script.js.map +1 -0
- package/dist/views/Settings/components/SettingsSection.vue.js +7 -0
- package/dist/views/Settings/components/SettingsSection.vue.js.map +1 -0
- package/dist/views/Settings/components/SettingsSection.vue.script.js +27 -0
- package/dist/views/Settings/components/SettingsSection.vue.script.js.map +1 -0
- package/package.json +20 -15
- package/dist/AddressBar-BOZGKSoz.js +0 -302
- package/dist/AddressBar-BOZGKSoz.js.map +0 -1
- package/dist/App-Ckirvnv1.js +0 -2510
- package/dist/App-Ckirvnv1.js.map +0 -1
- package/dist/App-DHBmpWJI.js +0 -533
- package/dist/App-DHBmpWJI.js.map +0 -1
- package/dist/CodeInput-BTN8cC5h.js +0 -694
- package/dist/CodeInput-BTN8cC5h.js.map +0 -1
- package/dist/CodeSnippet-D7Heh1nd.js +0 -218
- package/dist/CodeSnippet-D7Heh1nd.js.map +0 -1
- package/dist/Collection-BsAG7ms5.js +0 -219
- package/dist/Collection-BsAG7ms5.js.map +0 -1
- package/dist/CollectionAuthentication-BMGhRnpo.js +0 -56
- package/dist/CollectionAuthentication-BMGhRnpo.js.map +0 -1
- package/dist/CollectionCookies-DyjPPMdt.js +0 -19
- package/dist/CollectionCookies-DyjPPMdt.js.map +0 -1
- package/dist/CollectionEnvironment-BY9Gcnln.js +0 -514
- package/dist/CollectionEnvironment-BY9Gcnln.js.map +0 -1
- package/dist/CollectionOverview-C3GvN8GY.js +0 -131
- package/dist/CollectionOverview-C3GvN8GY.js.map +0 -1
- package/dist/CollectionScripts-CMNlBlby.js +0 -19
- package/dist/CollectionScripts-CMNlBlby.js.map +0 -1
- package/dist/CollectionServers-DuOLysNB.js +0 -168
- package/dist/CollectionServers-DuOLysNB.js.map +0 -1
- package/dist/CollectionSettings-FtXNetOh.js +0 -87
- package/dist/CollectionSettings-FtXNetOh.js.map +0 -1
- package/dist/CollectionSync-CAflc5yW.js +0 -19
- package/dist/CollectionSync-CAflc5yW.js.map +0 -1
- package/dist/CommandActionInput-TkcAx6E8.js +0 -97
- package/dist/CommandActionInput-TkcAx6E8.js.map +0 -1
- package/dist/CommandPalette-BxoEK8TY.js +0 -964
- package/dist/CommandPalette-BxoEK8TY.js.map +0 -1
- package/dist/CommandPaletteImport-Diu5dDIY.js +0 -622
- package/dist/CommandPaletteImport-Diu5dDIY.js.map +0 -1
- package/dist/Cookies-BYTv1YIA.js +0 -284
- package/dist/Cookies-BYTv1YIA.js.map +0 -1
- package/dist/DataTable-BqbZKW3K.js +0 -62
- package/dist/DataTable-BqbZKW3K.js.map +0 -1
- package/dist/DataTableHeader-DJVB0jCZ.js +0 -21
- package/dist/DataTableHeader-DJVB0jCZ.js.map +0 -1
- package/dist/DataTableInput-RydMDjn2.js +0 -166
- package/dist/DataTableInput-RydMDjn2.js.map +0 -1
- package/dist/DataTableRow-c3XveEUO.js +0 -57
- package/dist/DataTableRow-c3XveEUO.js.map +0 -1
- package/dist/DeleteSidebarListElement-C-p87d03.js +0 -78
- package/dist/DeleteSidebarListElement-C-p87d03.js.map +0 -1
- package/dist/EditSidebarListElement-CodWPnM6.js +0 -32
- package/dist/EditSidebarListElement-CodWPnM6.js.map +0 -1
- package/dist/Editor-BomsGWHx.js +0 -909
- package/dist/Editor-BomsGWHx.js.map +0 -1
- package/dist/EmptyState-Cnm7hGW5.js +0 -46
- package/dist/EmptyState-Cnm7hGW5.js.map +0 -1
- package/dist/Environment-BIxG7DaO.js +0 -416
- package/dist/Environment-BIxG7DaO.js.map +0 -1
- package/dist/EnvironmentModal-C0lYytkh.js +0 -288
- package/dist/EnvironmentModal-C0lYytkh.js.map +0 -1
- package/dist/Form-KFcdRQp1.js +0 -83
- package/dist/Form-KFcdRQp1.js.map +0 -1
- package/dist/HttpMethod-rnWEgC3T.js +0 -78
- package/dist/HttpMethod-rnWEgC3T.js.map +0 -1
- package/dist/IconSelector-BDC_GQXv.js +0 -67
- package/dist/IconSelector-BDC_GQXv.js.map +0 -1
- package/dist/ImportCollection-CGjySEzP.js +0 -804
- package/dist/ImportCollection-CGjySEzP.js.map +0 -1
- package/dist/IntegrationLogo-B9EDW8db.js +0 -51
- package/dist/IntegrationLogo-B9EDW8db.js.map +0 -1
- package/dist/MainLayout-BnLwst16.js +0 -281
- package/dist/MainLayout-BnLwst16.js.map +0 -1
- package/dist/Modal-CTZ8UNds.js +0 -67
- package/dist/Modal-CTZ8UNds.js.map +0 -1
- package/dist/ModalClientContainer-qHsZi4wQ.js +0 -65
- package/dist/ModalClientContainer-qHsZi4wQ.js.map +0 -1
- package/dist/Request-d0RY0ZhC.js +0 -212
- package/dist/Request-d0RY0ZhC.js.map +0 -1
- package/dist/RequestAuth-1cRH3DDn.js +0 -989
- package/dist/RequestAuth-1cRH3DDn.js.map +0 -1
- package/dist/RequestRoot-pW0yXesG.js +0 -1611
- package/dist/RequestRoot-pW0yXesG.js.map +0 -1
- package/dist/RequestSection-D2BLvDTr.js +0 -1582
- package/dist/RequestSection-D2BLvDTr.js.map +0 -1
- package/dist/ResponseSection-B_YF7l_E.js +0 -949
- package/dist/ResponseSection-B_YF7l_E.js.map +0 -1
- package/dist/ScalarAsciiArt-BjuSnj8e.js +0 -45
- package/dist/ScalarAsciiArt-BjuSnj8e.js.map +0 -1
- package/dist/SectionFilter-hrtoRLwj.js +0 -99
- package/dist/SectionFilter-hrtoRLwj.js.map +0 -1
- package/dist/Server-CEKGIEfE.js +0 -303
- package/dist/Server-CEKGIEfE.js.map +0 -1
- package/dist/ServerVariablesForm-BRZ9XC8o.js +0 -145
- package/dist/ServerVariablesForm-BRZ9XC8o.js.map +0 -1
- package/dist/Settings-BaPvhJ8Y.js +0 -347
- package/dist/Settings-BaPvhJ8Y.js.map +0 -1
- package/dist/Sidebar-CRxdl38Y.js +0 -73
- package/dist/Sidebar-CRxdl38Y.js.map +0 -1
- package/dist/SidebarButton-BAagdMDe.js +0 -37
- package/dist/SidebarButton-BAagdMDe.js.map +0 -1
- package/dist/SidebarListElement-BfTPiihc.js +0 -232
- package/dist/SidebarListElement-BfTPiihc.js.map +0 -1
- package/dist/TheCommandPalette-Dl9TAeke.js +0 -204
- package/dist/TheCommandPalette-Dl9TAeke.js.map +0 -1
- package/dist/ValueEmitter-QYkZ9Hdc.js +0 -20
- package/dist/ValueEmitter-QYkZ9Hdc.js.map +0 -1
- package/dist/ViewLayout-BOXN0IYo.js +0 -17
- package/dist/ViewLayout-BOXN0IYo.js.map +0 -1
- package/dist/ViewLayoutCollapse-CiTb-Uml.js +0 -86
- package/dist/ViewLayoutCollapse-CiTb-Uml.js.map +0 -1
- package/dist/ViewLayoutContent-CvMoJYPF.js +0 -13
- package/dist/ViewLayoutContent-CvMoJYPF.js.map +0 -1
- package/dist/ViewLayoutSection-mUqKbQry.js +0 -23
- package/dist/ViewLayoutSection-mUqKbQry.js.map +0 -1
- package/dist/WatchModeToggle-D_eAiTWJ.js +0 -41
- package/dist/WatchModeToggle-D_eAiTWJ.js.map +0 -1
- package/dist/_plugin-vue_export-helper-BmmBcIzD.js +0 -8
- package/dist/analytics-BZimCWcw.js +0 -7
- package/dist/analytics-BZimCWcw.js.map +0 -1
- package/dist/analytics.d.ts +0 -18
- package/dist/analytics.d.ts.map +0 -1
- package/dist/build-request-security-BQjNr2MD.js +0 -41
- package/dist/build-request-security-BQjNr2MD.js.map +0 -1
- package/dist/code-input-iq-moLxi.js +0 -775
- package/dist/code-input-iq-moLxi.js.map +0 -1
- package/dist/components-B0BwUDFw.js +0 -183
- package/dist/components-B0BwUDFw.js.map +0 -1
- package/dist/components-ChixwQhN.js +0 -61
- package/dist/components-ChixwQhN.js.map +0 -1
- package/dist/computer-D7VW3Ruy.js +0 -562
- package/dist/computer-D7VW3Ruy.js.map +0 -1
- package/dist/consts-CyGRb9dl.js +0 -318
- package/dist/consts-CyGRb9dl.js.map +0 -1
- package/dist/curl-nbw1OxbV.js +0 -54
- package/dist/curl-nbw1OxbV.js.map +0 -1
- package/dist/data-table-PL7e8NRO.js +0 -282
- package/dist/data-table-PL7e8NRO.js.map +0 -1
- package/dist/editor-BZ_J0eze.js +0 -466
- package/dist/editor-BZ_J0eze.js.map +0 -1
- package/dist/environments-ByLK9lnC.js +0 -592
- package/dist/environments-ByLK9lnC.js.map +0 -1
- package/dist/formatters-DOGXZq9R.js +0 -36
- package/dist/formatters-DOGXZq9R.js.map +0 -1
- package/dist/forms-CZX6cFDS.js +0 -42
- package/dist/forms-CZX6cFDS.js.map +0 -1
- package/dist/get-active-environment-CkxyQ1dM.js +0 -19
- package/dist/get-active-environment-CkxyQ1dM.js.map +0 -1
- package/dist/get-resolved-url-SybDPV0U.js +0 -85
- package/dist/get-resolved-url-SybDPV0U.js.map +0 -1
- package/dist/get-server-url-UVN-dx79.js +0 -32
- package/dist/get-server-url-UVN-dx79.js.map +0 -1
- package/dist/get-servers-B_WNlQWB.js +0 -106
- package/dist/get-servers-B_WNlQWB.js.map +0 -1
- package/dist/get-snippet-DBRUSfZ2.js +0 -39
- package/dist/get-snippet-DBRUSfZ2.js.map +0 -1
- package/dist/global-cookies-D3ZS9ON3.js +0 -184
- package/dist/global-cookies-D3ZS9ON3.js.map +0 -1
- package/dist/hooks/useAnalytics.d.ts +0 -19
- package/dist/hooks/useAnalytics.d.ts.map +0 -1
- package/dist/hooks-BvZxH4XB.js +0 -80
- package/dist/hooks-BvZxH4XB.js.map +0 -1
- package/dist/layout-BWiL7dfb.js +0 -81
- package/dist/layout-BWiL7dfb.js.map +0 -1
- package/dist/layouts/Web/index.js.map +0 -1
- package/dist/libs-spbv4P0g.js +0 -249
- package/dist/libs-spbv4P0g.js.map +0 -1
- package/dist/operation-block-B1B3lJPx.js +0 -1674
- package/dist/operation-block-B1B3lJPx.js.map +0 -1
- package/dist/operation-code-sample-DOzAPxLQ.js +0 -1738
- package/dist/operation-code-sample-DOzAPxLQ.js.map +0 -1
- package/dist/parse-curl-BtypQT3D.js +0 -106
- package/dist/parse-curl-BtypQT3D.js.map +0 -1
- package/dist/plugins-B52hCIyZ.js +0 -50
- package/dist/plugins-B52hCIyZ.js.map +0 -1
- package/dist/rabbitjump-CMZXAR6d.js +0 -9
- package/dist/rabbitjump-CMZXAR6d.js.map +0 -1
- package/dist/request-block-C1kLLMEd.js +0 -1466
- package/dist/request-block-C1kLLMEd.js.map +0 -1
- package/dist/resize-D2IYvVdh.js +0 -114
- package/dist/resize-D2IYvVdh.js.map +0 -1
- package/dist/response-block-DmkaDZYs.js +0 -1188
- package/dist/response-block-DmkaDZYs.js.map +0 -1
- package/dist/scalar-address-bar-block-BbysOhkE.js +0 -425
- package/dist/scalar-address-bar-block-BbysOhkE.js.map +0 -1
- package/dist/scalar-auth-selector-block-Bs79QOMA.js +0 -1889
- package/dist/scalar-auth-selector-block-Bs79QOMA.js.map +0 -1
- package/dist/search-CmsQQkjn.js +0 -151
- package/dist/search-CmsQQkjn.js.map +0 -1
- package/dist/send-request-BsTfRiBC.js +0 -348
- package/dist/send-request-BsTfRiBC.js.map +0 -1
- package/dist/server-tcI-OCyx.js +0 -140
- package/dist/server-tcI-OCyx.js.map +0 -1
- package/dist/set-request-cookies-BJJhsU4A.js +0 -88
- package/dist/set-request-cookies-BJJhsU4A.js.map +0 -1
- package/dist/settings-BKk_1lcH.js +0 -455
- package/dist/settings-BKk_1lcH.js.map +0 -1
- package/dist/sidebar-ceSbYmnt.js +0 -217
- package/dist/sidebar-ceSbYmnt.js.map +0 -1
- package/dist/store-DnlAQK5d.js +0 -1512
- package/dist/store-DnlAQK5d.js.map +0 -1
- package/dist/string-template-sS5PtY6T.js +0 -64
- package/dist/string-template-sS5PtY6T.js.map +0 -1
- package/dist/use-global-hot-keys-D8Ai8Qbm.js +0 -274
- package/dist/use-global-hot-keys-D8Ai8Qbm.js.map +0 -1
- package/dist/useSidebar-DLTwHDI-.js +0 -45
- package/dist/useSidebar-DLTwHDI-.js.map +0 -1
- package/dist/v2/components/modals/index.js.map +0 -1
- package/dist/v2/features/app/index.js.map +0 -1
- package/dist/v2/features/modal/index.js.map +0 -1
- package/dist/views/Request/RequestSection/index.js.map +0 -1
- package/dist/watch-mode-Dbaqd9bG.js +0 -375
- package/dist/watch-mode-Dbaqd9bG.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RequestRoot-pW0yXesG.js","names":["$emit","$emit","$emit"],"sources":["../src/components/Sidebar/SidebarToggle.vue","../src/components/Sidebar/SidebarToggle.vue","../src/hooks/useAnalytics.ts","../src/libs/validate-parameters.ts","../src/views/Request/hooks/useOpenApiWatcher.ts","../src/components/EnvironmentSelector/EnvironmentSelector.vue","../src/components/EnvironmentSelector/EnvironmentSelector.vue","../src/components/Search/useSearch.ts","../src/views/Request/handle-drag.ts","../src/components/Sidebar/Actions/EditSidebarListCollection.vue","../src/components/Sidebar/Actions/EditSidebarListCollection.vue","../src/views/Request/RequestSidebarItemMenu.vue","../src/views/Request/RequestSidebarItemMenu.vue","../src/views/Request/RequestSection/helpers/getting-started.ts","../src/views/Request/RequestSidebarItem.vue","../src/views/Request/RequestSidebarItem.vue","../src/views/Request/RequestSidebar.vue","../src/views/Request/RequestSidebar.vue","../src/views/Request/RequestRoot.vue","../src/views/Request/RequestRoot.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useSidebar } from '@/hooks/useSidebar'\n\nconst { isSidebarOpen, toggleSidebarOpen } = useSidebar()\n</script>\n<template>\n <button\n :aria-pressed=\"isSidebarOpen\"\n class=\"scalar-sidebar-toggle text-c-3 hover:bg-b-2 active:text-c-1 rounded-lg p-2\"\n type=\"button\"\n @click=\"toggleSidebarOpen\">\n <span class=\"sr-only\">{{ isSidebarOpen ? 'Hide' : 'Show' }} sidebar</span>\n <svg\n class=\"size-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <clipPath id=\"mask\">\n <path\n clip-rule=\"evenodd\"\n d=\"M9 3.2H4c-1.7 0-3 1.3-3 3v11.5c0 1.7 1.3 3 3 3h5V3.2z\" />\n </clipPath>\n </defs>\n <g clip-path=\"url(#mask)\">\n <path\n class=\"transition-transform duration-300\"\n :class=\"isSidebarOpen ? 'translate-x-0' : '-translate-x-1/2'\"\n d=\"M1 3.2h8v17.5H1z\"\n fill=\"currentColor\" />\n </g>\n <path\n d=\"M20 20.8H4c-1.7 0-3-1.3-3-3V6.2c0-1.7 1.3-3 3-3h16c1.7 0 3 1.3 3 3v11.5c0 1.7-1.3 3-3 3zM9 3.2v17.5\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\" />\n </svg>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { useSidebar } from '@/hooks/useSidebar'\n\nconst { isSidebarOpen, toggleSidebarOpen } = useSidebar()\n</script>\n<template>\n <button\n :aria-pressed=\"isSidebarOpen\"\n class=\"scalar-sidebar-toggle text-c-3 hover:bg-b-2 active:text-c-1 rounded-lg p-2\"\n type=\"button\"\n @click=\"toggleSidebarOpen\">\n <span class=\"sr-only\">{{ isSidebarOpen ? 'Hide' : 'Show' }} sidebar</span>\n <svg\n class=\"size-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <clipPath id=\"mask\">\n <path\n clip-rule=\"evenodd\"\n d=\"M9 3.2H4c-1.7 0-3 1.3-3 3v11.5c0 1.7 1.3 3 3 3h5V3.2z\" />\n </clipPath>\n </defs>\n <g clip-path=\"url(#mask)\">\n <path\n class=\"transition-transform duration-300\"\n :class=\"isSidebarOpen ? 'translate-x-0' : '-translate-x-1/2'\"\n d=\"M1 3.2h8v17.5H1z\"\n fill=\"currentColor\" />\n </g>\n <path\n d=\"M20 20.8H4c-1.7 0-3-1.3-3-3V6.2c0-1.7 1.3-3 3-3h16c1.7 0 3 1.3 3 3v11.5c0 1.7-1.3 3-3 3zM9 3.2v17.5\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\" />\n </svg>\n </button>\n</template>\n","import { analytics } from '@/analytics'\nimport { useClientConfig } from '@/hooks/useClientConfig'\nimport { useLayout } from '@/hooks/useLayout'\n\n/** Gets the correct analytics client based on the layout. */\nexport function useAnalytics() {\n const { layout } = useLayout()\n const config = useClientConfig()\n\n if (!config.value.telemetry || layout === 'modal') {\n return\n }\n\n // Return the correct analytics client\n return analytics\n}\n","import type { RequestExample } from '@scalar/oas-utils/entities/spec'\n\nexport type ValidationResult = {\n invalidParams: Set<string>\n hasBlockingErrors: boolean\n}\n\n/**\n * Validate required parameters from an example.\n *\n * Returns both the set of invalid parameter keys and a flag indicating\n * if there are blocking errors (empty required path parameters) that\n * should prevent the request from being sent.\n */\nexport const validateParameters = (example: Partial<RequestExample> | null): ValidationResult => {\n const result = {\n invalidParams: new Set<string>(),\n hasBlockingErrors: false,\n }\n\n if (!example) {\n return result\n }\n\n // Check path parameters separately - these are blocking\n example.parameters?.path?.forEach((param) => {\n if (param.enabled && param.value.trim() === '') {\n result.invalidParams.add(param.key)\n result.hasBlockingErrors = true\n }\n })\n\n // Validate other parameters - these are non-blocking\n const nonBlockingParamTypes = ['query', 'headers', 'cookies'] as const\n nonBlockingParamTypes.forEach((paramType) => {\n example.parameters?.[paramType]?.forEach((param) => {\n if (param.required && param.value === '') {\n result.invalidParams.add(param.key)\n }\n })\n })\n\n return result\n}\n","import { createHash, fetchDocument } from '@scalar/oas-utils/helpers'\nimport { parseSchema } from '@scalar/oas-utils/transforms'\nimport { useToasts } from '@scalar/use-toasts'\nimport { useTimeoutPoll } from '@vueuse/core'\nimport microdiff, { type Difference } from 'microdiff'\nimport { watch } from 'vue'\n\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { specDictionary } from '@/store/import-spec'\nimport {\n combineRenameDiffs,\n mutateCollectionDiff,\n mutateRequestDiff,\n mutateSecuritySchemeDiff,\n mutateServerDiff,\n mutateTagDiff,\n} from '@/views/Request/libs/watch-mode'\n\n/** Timeout for the watch mode polling */\nconst POLLING_INTERVAL = 5 * 1000 // 5 seconds\n\n/** Pause for 60 seconds after an error */\nconst ERROR_TIMEOUT = 60 * 1000 // 60 seconds\n\n/**\n * Hook which handles polling the documentUrl for changes then attempts to merge what is new\n *\n * TODO:\n * - check lastModified or similar headers\n * - speed up the polling when there's a change then slowly slow it down\n */\nexport const useOpenApiWatcher = () => {\n const { toast } = useToasts()\n const activeEntities = useActiveEntities()\n const store = useWorkspace()\n\n const { activeCollection, activeWorkspace } = activeEntities\n const { collectionMutators } = store\n\n /** Little toast helper */\n const toastError = (type: string) => toast(`[useOpenApiWatcher] Changes to the ${type} were not applied`, 'error')\n\n // Transforms and applies the diff to our mutators\n const applyDiff = (d: Difference) => {\n // Info/Security\n if (d.path[0] === 'info' || d.path[0] === 'security') {\n const success = mutateCollectionDiff(d, activeEntities, store)\n if (!success) {\n toastError('collection')\n }\n }\n // Components.securitySchemes\n else if (d.path[0] === 'components' && d.path[1] === 'securitySchemes') {\n const success = mutateSecuritySchemeDiff(d, activeEntities, store)\n if (!success) {\n toastError('securitySchemes')\n }\n }\n // Servers\n else if (d.path[0] === 'servers') {\n const success = mutateServerDiff(d, activeEntities, store)\n if (!success) {\n toastError('servers')\n }\n }\n // Tags\n else if (d.path[0] === 'tags') {\n const success = mutateTagDiff(d, activeEntities, store)\n if (!success) {\n toastError('tags')\n }\n }\n // Requests\n else if (d.path[0] === 'paths') {\n const success = mutateRequestDiff(d, activeEntities, store)\n if (!success) {\n toastError('requests')\n }\n }\n }\n\n const { pause, resume } = useTimeoutPoll(async () => {\n const url = activeCollection.value?.documentUrl\n if (!url) {\n return\n }\n\n const old = specDictionary[url]\n\n try {\n // Grab the new spec\n const spec = await fetchDocument(url, activeWorkspace.value?.proxyUrl, undefined, false)\n const hash = createHash(spec)\n\n collectionMutators.edit(activeCollection.value.uid, 'watchModeStatus', 'WATCHING')\n\n // If we have no previous copy then store this one\n if (!old?.hash) {\n const { schema } = await parseSchema(spec)\n\n if (schema) {\n specDictionary[url] = {\n hash,\n schema,\n }\n }\n }\n // If the hashes do not match, start diffin\n else if (old.hash && old.hash !== hash) {\n const { schema } = await parseSchema(spec)\n const diff = microdiff(old.schema, schema)\n\n // Combines add/remove diffs into single rename diffs\n const combined = combineRenameDiffs(diff)\n\n try {\n // Transform and apply the diffs to our mutators\n combined.forEach(applyDiff)\n\n // Update the dict\n specDictionary[url] = {\n hash,\n schema,\n }\n } catch (e) {\n console.error('[useOpenApiWatcher] Error:', e)\n }\n } else {\n console.log('[useOpenApiWatcher] No changes detected yet…')\n }\n } catch (e) {\n console.error('[useOpenApiWatcher] Error:', e)\n console.info('[useOpenApiWatcher] Pausing watcher for 60 seconds')\n\n pause()\n collectionMutators.edit(activeCollection.value.uid, 'watchModeStatus', 'ERROR')\n toast('[useOpenApiWatcher] Unable to fetch the spec file, paused the watcher for 60 seconds', 'error')\n\n setTimeout(() => {\n console.info('[useOpenApiWatcher] Resuming watcher')\n resume()\n }, ERROR_TIMEOUT)\n }\n }, POLLING_INTERVAL)\n\n // Ensure we are only polling when we should watchMode\n watch(\n [() => activeCollection.value?.documentUrl, () => activeCollection.value?.watchMode],\n ([documentUrl, watchMode]) => {\n if (documentUrl && watchMode) {\n console.info(`[useOpenApiWatcher] Watching ${documentUrl} …`)\n resume()\n } else if (activeCollection.value) {\n pause()\n collectionMutators.edit(activeCollection.value.uid, 'watchModeStatus', 'IDLE')\n }\n },\n { immediate: true },\n )\n}\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarDropdown,\n ScalarDropdownDivider,\n ScalarDropdownItem,\n ScalarIcon,\n ScalarListboxCheckbox,\n} from '@scalar/components'\nimport type { Collection } from '@scalar/oas-utils/entities/spec'\nimport { computed, onMounted, watch } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport { useLayout } from '@/hooks'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\n\nconst { activeCollection, activeWorkspace, activeEnvironment } =\n useActiveEntities()\nconst { collectionMutators } = useWorkspace()\nconst { layout } = useLayout()\n\nconst router = useRouter()\n\nconst updateSelected = (uid: string) => {\n if (activeCollection.value && activeWorkspace.value) {\n collectionMutators.edit(\n activeCollection.value.uid,\n 'x-scalar-active-environment',\n uid,\n )\n\n activeWorkspace.value.activeEnvironmentId = uid\n }\n}\n\nconst redirectToEnvironments = () =>\n router.push({\n name: 'environment.default',\n params: {\n [PathId.Workspace]: activeWorkspace.value?.uid,\n },\n })\n\nconst selectedEnvironment = computed(() => {\n const { value: environment } = activeEnvironment\n const { value: collection } = activeCollection\n return (\n environment?.name ||\n collection?.['x-scalar-active-environment'] ||\n 'No Environment'\n )\n})\n\nconst availableEnvironments = computed(() => {\n const { value: collection } = activeCollection\n const environments = collection?.['x-scalar-environments']\n return environments\n ? Object.entries(environments).map(([key, env]) => ({\n ...env,\n uid: key,\n name: key,\n }))\n : []\n})\n\nconst selectLatestEnvironment = () => {\n const environments = availableEnvironments.value\n if (environments.length > 0) {\n // Get the latest created collection environment\n const latestEnvironment = environments[environments.length - 1]\n\n if (latestEnvironment?.uid) {\n updateSelected(latestEnvironment.uid)\n }\n }\n}\n\n// Select for the collection its latest environment on creation\nwatch(availableEnvironments, (newEnvs, oldEnvs) => {\n if (newEnvs.length > oldEnvs.length) {\n selectLatestEnvironment()\n }\n})\n\nconst setInitialEnvironment = (collection: Collection) => {\n const activeEnv = collection['x-scalar-active-environment']\n if (activeEnv && activeCollection.value && activeWorkspace.value) {\n activeCollection.value['x-scalar-active-environment'] = activeEnv\n activeWorkspace.value.activeEnvironmentId = activeEnv\n } else if (activeWorkspace.value) {\n activeWorkspace.value.activeEnvironmentId = ''\n }\n}\n\nwatch(\n activeCollection,\n (newCollection) => newCollection && setInitialEnvironment(newCollection),\n)\n\nonMounted(() => {\n activeCollection.value && setInitialEnvironment(activeCollection.value)\n})\n</script>\n<template>\n <ScalarDropdown teleport>\n <ScalarButton\n class=\"text-c-1 hover:bg-b-2 line-clamp-1 h-auto w-fit justify-start px-1.5 py-1.5 font-normal\"\n variant=\"ghost\">\n <h2 class=\"m-0 flex items-center gap-1.5 font-medium whitespace-nowrap\">\n {{ selectedEnvironment }}\n </h2>\n </ScalarButton>\n <!-- Workspace list -->\n <template #items>\n <ScalarDropdownItem\n v-for=\"environment in availableEnvironments\"\n :key=\"environment.uid\"\n class=\"group/item flex items-center gap-1.5 overflow-hidden text-ellipsis whitespace-nowrap\"\n @click.stop=\"updateSelected(environment.uid)\">\n <ScalarListboxCheckbox\n :selected=\"\n activeCollection?.['x-scalar-active-environment'] ===\n environment.uid\n \" />\n {{ environment.name }}\n </ScalarDropdownItem>\n <ScalarDropdownItem\n class=\"group/item flex items-center gap-1.5 overflow-hidden text-ellipsis whitespace-nowrap\"\n @click.stop=\"updateSelected('')\">\n <ScalarListboxCheckbox\n :selected=\"\n (activeEnvironment?.uid === '' &&\n activeCollection?.['x-scalar-active-environment'] === '') ||\n activeEnvironment?.name === 'No Environment'\n \" />\n No Environment\n </ScalarDropdownItem>\n <ScalarDropdownDivider />\n <!-- Manage environments -->\n <ScalarDropdownItem\n v-if=\"layout !== 'modal'\"\n class=\"flex items-center gap-1.5\"\n @click=\"redirectToEnvironments\">\n <div class=\"flex h-4 w-4 items-center justify-center\">\n <ScalarIcon\n icon=\"Brackets\"\n size=\"sm\" />\n </div>\n <span class=\"leading-none\">Manage Environments</span>\n </ScalarDropdownItem>\n </template>\n </ScalarDropdown>\n</template>\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarDropdown,\n ScalarDropdownDivider,\n ScalarDropdownItem,\n ScalarIcon,\n ScalarListboxCheckbox,\n} from '@scalar/components'\nimport type { Collection } from '@scalar/oas-utils/entities/spec'\nimport { computed, onMounted, watch } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport { useLayout } from '@/hooks'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\n\nconst { activeCollection, activeWorkspace, activeEnvironment } =\n useActiveEntities()\nconst { collectionMutators } = useWorkspace()\nconst { layout } = useLayout()\n\nconst router = useRouter()\n\nconst updateSelected = (uid: string) => {\n if (activeCollection.value && activeWorkspace.value) {\n collectionMutators.edit(\n activeCollection.value.uid,\n 'x-scalar-active-environment',\n uid,\n )\n\n activeWorkspace.value.activeEnvironmentId = uid\n }\n}\n\nconst redirectToEnvironments = () =>\n router.push({\n name: 'environment.default',\n params: {\n [PathId.Workspace]: activeWorkspace.value?.uid,\n },\n })\n\nconst selectedEnvironment = computed(() => {\n const { value: environment } = activeEnvironment\n const { value: collection } = activeCollection\n return (\n environment?.name ||\n collection?.['x-scalar-active-environment'] ||\n 'No Environment'\n )\n})\n\nconst availableEnvironments = computed(() => {\n const { value: collection } = activeCollection\n const environments = collection?.['x-scalar-environments']\n return environments\n ? Object.entries(environments).map(([key, env]) => ({\n ...env,\n uid: key,\n name: key,\n }))\n : []\n})\n\nconst selectLatestEnvironment = () => {\n const environments = availableEnvironments.value\n if (environments.length > 0) {\n // Get the latest created collection environment\n const latestEnvironment = environments[environments.length - 1]\n\n if (latestEnvironment?.uid) {\n updateSelected(latestEnvironment.uid)\n }\n }\n}\n\n// Select for the collection its latest environment on creation\nwatch(availableEnvironments, (newEnvs, oldEnvs) => {\n if (newEnvs.length > oldEnvs.length) {\n selectLatestEnvironment()\n }\n})\n\nconst setInitialEnvironment = (collection: Collection) => {\n const activeEnv = collection['x-scalar-active-environment']\n if (activeEnv && activeCollection.value && activeWorkspace.value) {\n activeCollection.value['x-scalar-active-environment'] = activeEnv\n activeWorkspace.value.activeEnvironmentId = activeEnv\n } else if (activeWorkspace.value) {\n activeWorkspace.value.activeEnvironmentId = ''\n }\n}\n\nwatch(\n activeCollection,\n (newCollection) => newCollection && setInitialEnvironment(newCollection),\n)\n\nonMounted(() => {\n activeCollection.value && setInitialEnvironment(activeCollection.value)\n})\n</script>\n<template>\n <ScalarDropdown teleport>\n <ScalarButton\n class=\"text-c-1 hover:bg-b-2 line-clamp-1 h-auto w-fit justify-start px-1.5 py-1.5 font-normal\"\n variant=\"ghost\">\n <h2 class=\"m-0 flex items-center gap-1.5 font-medium whitespace-nowrap\">\n {{ selectedEnvironment }}\n </h2>\n </ScalarButton>\n <!-- Workspace list -->\n <template #items>\n <ScalarDropdownItem\n v-for=\"environment in availableEnvironments\"\n :key=\"environment.uid\"\n class=\"group/item flex items-center gap-1.5 overflow-hidden text-ellipsis whitespace-nowrap\"\n @click.stop=\"updateSelected(environment.uid)\">\n <ScalarListboxCheckbox\n :selected=\"\n activeCollection?.['x-scalar-active-environment'] ===\n environment.uid\n \" />\n {{ environment.name }}\n </ScalarDropdownItem>\n <ScalarDropdownItem\n class=\"group/item flex items-center gap-1.5 overflow-hidden text-ellipsis whitespace-nowrap\"\n @click.stop=\"updateSelected('')\">\n <ScalarListboxCheckbox\n :selected=\"\n (activeEnvironment?.uid === '' &&\n activeCollection?.['x-scalar-active-environment'] === '') ||\n activeEnvironment?.name === 'No Environment'\n \" />\n No Environment\n </ScalarDropdownItem>\n <ScalarDropdownDivider />\n <!-- Manage environments -->\n <ScalarDropdownItem\n v-if=\"layout !== 'modal'\"\n class=\"flex items-center gap-1.5\"\n @click=\"redirectToEnvironments\">\n <div class=\"flex h-4 w-4 items-center justify-center\">\n <ScalarIcon\n icon=\"Brackets\"\n size=\"sm\" />\n </div>\n <span class=\"leading-none\">Manage Environments</span>\n </ScalarDropdownItem>\n </template>\n </ScalarDropdown>\n</template>\n","import type { Request } from '@scalar/oas-utils/entities/spec'\nimport { isDefined, shouldIgnoreEntity } from '@scalar/oas-utils/helpers'\nimport Fuse, { type FuseResult } from 'fuse.js'\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\n\n/**\n * Hook for managing search functionality.\n * Provides search state, results, and methods for searching.\n */\nexport function useSearch() {\n const router = useRouter()\n const { activeWorkspace, activeWorkspaceRequests, activeWorkspaceCollections } = useActiveEntities()\n const { requests, tags } = useWorkspace()\n\n type FuseData = {\n title: string\n description: string\n httpVerb: string\n id: string\n path: string\n link: string | undefined\n }\n\n const fuseDataArray = ref<FuseData[]>([])\n const searchResults = ref<FuseResult<FuseData>[]>([])\n const selectedSearchResult = ref<number>(0)\n const searchText = ref<string>('')\n const searchInputRef = ref<HTMLInputElement | null>(null)\n const searchResultRefs = ref<HTMLElement[]>([])\n\n const fuse = new Fuse(fuseDataArray.value, {\n keys: ['title', 'description', 'body'],\n })\n\n const resetSearch = () => {\n searchText.value = ''\n selectedSearchResult.value = 0\n searchResults.value = []\n if (searchInputRef.value instanceof HTMLInputElement) {\n searchInputRef.value.blur()\n }\n }\n\n const populateFuseDataArray = (items: Request[]) => {\n fuseDataArray.value = items\n // TODO: We should probably filter in the store or somewhere else.\n // Check if the request is marked has hidden/internal\n .filter((request) => !shouldIgnoreEntity(request))\n // Check if the request is in a tag that is marked has hidden/internal\n .filter((request) => {\n // Find the collection for the request\n const collection = activeWorkspaceCollections.value?.find((activeWorkspaceCollection) =>\n activeWorkspaceCollection.requests.includes(request.uid),\n )\n\n const hasIgnoredTags = Boolean(\n collection?.tags\n .map((uid) => tags[uid])\n .filter(isDefined)\n .filter((tag) => request.tags?.includes(tag.name))\n .filter((tag) => shouldIgnoreEntity(tag)).length,\n )\n\n return !hasIgnoredTags\n })\n .map((request: Request) => ({\n id: request.uid,\n title: request.summary ?? request.method,\n description: request.description ?? '',\n httpVerb: request.method,\n path: request.path,\n link: router?.resolve({\n name: 'request',\n params: {\n [PathId.Request]: request.uid,\n [PathId.Workspace]: activeWorkspace.value?.uid,\n },\n })?.href,\n }))\n\n fuse.setCollection(fuseDataArray.value)\n }\n\n const fuseSearch = (): void => {\n selectedSearchResult.value = 0\n searchResults.value = fuse.search(searchText.value)\n }\n\n watch(searchText, (newValue) => {\n if (newValue.length) {\n fuseSearch()\n } else {\n searchResults.value = []\n }\n })\n\n const navigateSearchResults = (direction: 'up' | 'down') => {\n const offset = direction === 'up' ? -1 : 1\n const length = searchResultsWithPlaceholderResults.value.length\n\n // Ensures we loop around the array by using the remainder\n selectedSearchResult.value = (selectedSearchResult.value + offset + length) % length\n\n // Scroll the selected item into view\n nextTick(() => {\n const element = searchResultRefs.value[selectedSearchResult.value]\n if (element instanceof HTMLElement) {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n })\n }\n\n const selectSearchResult = () => {\n if (selectedSearchResult.value >= 0) {\n const selectedResult = searchResultsWithPlaceholderResults.value[selectedSearchResult.value]\n if (selectedResult) {\n onSearchResultClick(selectedResult)\n }\n }\n }\n\n const validRequests = computed(() => activeWorkspaceRequests.value.map((uid) => requests[uid]).filter(isDefined))\n\n // Populate our fuseDataArray with the request items\n watch(\n activeWorkspaceRequests,\n () => {\n populateFuseDataArray(validRequests.value)\n },\n { immediate: true },\n )\n\n const onSearchResultClick = (entry: FuseResult<FuseData>) => {\n router.push(entry.item.id)\n resetSearch()\n }\n\n const searchResultsWithPlaceholderResults = computed((): FuseResult<FuseData>[] => {\n if (searchText.value.length === 0) {\n return fuseDataArray.value.map((item) => {\n return {\n item: item,\n } as FuseResult<FuseData>\n })\n }\n\n return searchResults.value\n })\n\n return {\n searchText,\n searchResultsWithPlaceholderResults,\n selectedSearchResult,\n onSearchResultClick,\n fuseSearch,\n searchInputRef,\n searchResultRefs,\n navigateSearchResults,\n selectSearchResult,\n populateFuseDataArray,\n }\n}\n","import type { DraggingItem, HoveredItem } from '@scalar/draggable'\nimport type { Collection, Tag } from '@scalar/oas-utils/entities/spec'\n\nimport { useLayout } from '@/hooks'\nimport type { WorkspaceStore } from '@/store'\nimport type { ActiveEntitiesStore } from '@/store/active-entities'\n\n/** Create DnD handlers */\nexport function dragHandlerFactory(\n activeWorkspace: ActiveEntitiesStore['activeWorkspace'],\n { collections, collectionMutators, tags, tagMutators, workspaceMutators }: WorkspaceStore,\n) {\n const { layout } = useLayout()\n\n /** Mutate tag OR collection */\n const mutateTagOrCollection = (parent: Collection | Tag, childUids: string[]) => {\n if (parent.type === 'collection') {\n collectionMutators.edit(parent.uid, 'children', childUids as Collection['children'])\n } else if (parent.type === 'tag') {\n tagMutators.edit(parent.uid, 'children', childUids as Tag['children'])\n }\n }\n\n /** Drag handler that mutates depending on the entity types */\n const handleDragEnd = (draggingItem: DraggingItem, hoveredItem: HoveredItem) => {\n if (!draggingItem || !hoveredItem) {\n return\n }\n\n const { id: draggingUid, parentId: draggingParentUid } = draggingItem\n const { id: hoveredUid, parentId: hoveredParentUid, offset } = hoveredItem\n\n // Parent is the workspace\n if (!draggingParentUid) {\n workspaceMutators.edit(\n activeWorkspace.value?.uid,\n 'collections',\n activeWorkspace.value?.collections.filter((uid) => uid !== draggingUid) ?? [],\n )\n }\n\n // Parent is collection\n else if (collections[draggingParentUid]) {\n collectionMutators.edit(\n draggingParentUid as Collection['uid'],\n 'children',\n collections[draggingParentUid].children.filter((uid) => uid !== draggingUid),\n )\n }\n // Parent is a tag\n else if (tags[draggingParentUid]) {\n tagMutators.edit(\n draggingParentUid as Tag['uid'],\n 'children',\n tags[draggingParentUid].children.filter((uid) => uid !== draggingUid),\n )\n }\n\n // Place it at the end of the list of the hoveredItem\n if (offset === 2) {\n const parent = collections[hoveredUid] || tags[hoveredUid]\n if (parent) {\n mutateTagOrCollection(parent, [...(parent.children ?? []), draggingUid])\n }\n }\n // Special case for collections\n else if (!hoveredParentUid) {\n const newChildUids = [...(activeWorkspace.value?.collections ?? [])]\n const hoveredIndex = newChildUids.findIndex((uid) => hoveredUid === uid) ?? 0\n newChildUids.splice(hoveredIndex + offset, 0, draggingUid as Collection['uid'])\n\n workspaceMutators.edit(activeWorkspace.value?.uid, 'collections', newChildUids)\n }\n // Place it into the list at an index\n else {\n const parent = collections[hoveredParentUid] || tags[hoveredParentUid]\n if (!parent) {\n return\n }\n\n const newChildUids = [...(parent.children ?? [])] as string[]\n const hoveredIndex = newChildUids.findIndex((uid) => hoveredUid === uid) ?? 0\n newChildUids.splice(hoveredIndex + offset, 0, draggingUid)\n\n mutateTagOrCollection(parent, newChildUids)\n }\n }\n\n /** Ensure only collections are allowed at the top level OR resources dropped INTO (offset 2) */\n const isDroppable = (draggingItem: DraggingItem, hoveredItem: HoveredItem) => {\n // Cannot drop in read only mode\n if (layout === 'modal') {\n return false\n }\n // Cannot drop requests/folders into a workspace\n if (!collections[draggingItem.id] && hoveredItem.offset !== 2) {\n return false\n }\n // Collections cannot drop over Drafts\n if (collections[draggingItem.id] && collections[hoveredItem.id]?.info?.title === 'Drafts') {\n return false\n }\n\n return true\n }\n\n return {\n handleDragEnd,\n isDroppable,\n }\n}\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarTextInput } from '@scalar/components'\nimport { LibraryIcon } from '@scalar/icons/library'\nimport { ref } from 'vue'\n\nimport IconSelector from '@/components/IconSelector.vue'\nimport SidebarListElementForm from '@/components/Sidebar/Actions/SidebarListElementForm.vue'\n\nconst props = defineProps<{\n name: string\n icon: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'close'): void\n (e: 'edit', newName: string, newIcon: string): void\n}>()\n\nconst newName = ref(props.name)\nconst newIcon = ref(props.icon)\n</script>\n<template>\n <SidebarListElementForm\n @cancel=\"emit('close')\"\n @submit=\"emit('edit', newName, newIcon)\">\n <div class=\"grid grid-cols-[auto_1fr] gap-2\">\n <div class=\"flex aspect-square\">\n <IconSelector\n v-model=\"newIcon\"\n placement=\"bottom-start\">\n <ScalarButton\n class=\"aspect-square h-auto px-0\"\n variant=\"outlined\">\n <LibraryIcon\n class=\"text-c-2 size-4\"\n :src=\"newIcon\" />\n </ScalarButton>\n </IconSelector>\n </div>\n <ScalarTextInput\n v-model=\"newName\"\n autofocus\n class=\"flex-1\" />\n </div>\n </SidebarListElementForm>\n</template>\n","<script setup lang=\"ts\">\nimport { ScalarButton, ScalarTextInput } from '@scalar/components'\nimport { LibraryIcon } from '@scalar/icons/library'\nimport { ref } from 'vue'\n\nimport IconSelector from '@/components/IconSelector.vue'\nimport SidebarListElementForm from '@/components/Sidebar/Actions/SidebarListElementForm.vue'\n\nconst props = defineProps<{\n name: string\n icon: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'close'): void\n (e: 'edit', newName: string, newIcon: string): void\n}>()\n\nconst newName = ref(props.name)\nconst newIcon = ref(props.icon)\n</script>\n<template>\n <SidebarListElementForm\n @cancel=\"emit('close')\"\n @submit=\"emit('edit', newName, newIcon)\">\n <div class=\"grid grid-cols-[auto_1fr] gap-2\">\n <div class=\"flex aspect-square\">\n <IconSelector\n v-model=\"newIcon\"\n placement=\"bottom-start\">\n <ScalarButton\n class=\"aspect-square h-auto px-0\"\n variant=\"outlined\">\n <LibraryIcon\n class=\"text-c-2 size-4\"\n :src=\"newIcon\" />\n </ScalarButton>\n </IconSelector>\n </div>\n <ScalarTextInput\n v-model=\"newName\"\n autofocus\n class=\"flex-1\" />\n </div>\n </SidebarListElementForm>\n</template>\n","<script setup lang=\"ts\">\nimport {\n ScalarDropdownButton,\n ScalarDropdownMenu,\n ScalarFloating,\n ScalarIcon,\n ScalarModal,\n useModal,\n type ScalarDropdown,\n} from '@scalar/components'\nimport type { Collection } from '@scalar/oas-utils/entities/spec'\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport DeleteSidebarListElement from '@/components/Sidebar/Actions/DeleteSidebarListElement.vue'\nimport EditSidebarListCollection from '@/components/Sidebar/Actions/EditSidebarListCollection.vue'\nimport EditSidebarListElement from '@/components/Sidebar/Actions/EditSidebarListElement.vue'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { createInitialRequest } from '@/store/requests'\nimport type { SidebarMenuItem } from '@/views/Request/types'\n\nconst props = defineProps<{ menuItem: SidebarMenuItem }>()\n\nconst emit = defineEmits<{\n (e: 'closeMenu'): []\n (e: 'toggleWatchMode', item: SidebarMenuItem['item']): void\n (e: 'clearDrafts'): void\n}>()\n\nconst { replace } = useRouter()\nconst {\n activeRouterParams,\n activeWorkspaceCollections,\n activeWorkspaceRequests,\n} = useActiveEntities()\nconst { events, requestMutators } = useWorkspace()\n\nconst editModal = useModal()\nconst deleteModal = useModal()\nconst clearDraftsModal = useModal()\n\n/** Add example */\nconst handleAddExample = () =>\n events.commandPalette.emit({\n commandName: 'Add Example',\n metaData: {\n itemUid: props.menuItem.item?.entity.uid,\n },\n })\n\nconst handleEdit = (newName: string, newIcon?: string) => {\n props.menuItem.item?.edit(newName, newIcon)\n editModal.hide()\n}\n\n/** Delete with redirect for both requests and requestExamples */\nconst handleItemDelete = () => {\n props.menuItem.item?.delete()\n\n if (!activeWorkspaceRequests.value.length) {\n const { request } = createInitialRequest()\n const draftCollection = activeWorkspaceCollections.value.find(\n (collection: Collection) => collection.info?.title === 'Drafts',\n )\n\n if (draftCollection) {\n requestMutators.add(request, draftCollection.uid)\n\n replace({\n name: 'request',\n params: {\n [PathId.Request]: request.uid,\n },\n })\n }\n }\n\n if (\n activeRouterParams.value[PathId.Request] === props.menuItem.item?.entity.uid\n ) {\n replace({\n name: 'request',\n params: {\n [PathId.Request]: 'default',\n },\n })\n }\n\n if (\n activeRouterParams.value[PathId.Examples] ===\n props.menuItem.item?.entity.uid\n ) {\n replace({\n name: 'request',\n params: {\n [PathId.Request]: 'default',\n },\n })\n }\n\n if (activeWorkspaceCollections.value[0]) {\n const firstRequest = activeWorkspaceCollections.value[0].requests[0]\n replace({\n name: 'request',\n params: {\n [PathId.Request]: firstRequest,\n },\n })\n }\n\n deleteModal.hide()\n}\n\n// Manually focus the popup - not pretty but it works\nconst menuRef = ref<typeof ScalarDropdown | null>(null)\nwatch([() => props.menuItem.open, menuRef], ([open]) => {\n if (open && menuRef.value?.$parent?.$el) {\n menuRef.value.$parent.$el.focus()\n }\n})\n\n// Close menu on click because headless doesn't seem to work\nconst globalClickListener = () => props.menuItem.open && emit('closeMenu')\nonMounted(() => window.addEventListener('click', globalClickListener))\nonBeforeUnmount(() => window.removeEventListener('click', globalClickListener))\n\nconst toggleWatchMode = () => {\n emit('toggleWatchMode', props.menuItem.item)\n}\n\nconst handleClearDrafts = () => {\n emit('clearDrafts')\n clearDraftsModal.hide()\n}\n\nconst isDraftsMenuItem = computed(() => {\n return props.menuItem.item?.title === 'Drafts'\n})\n</script>\n\n<template>\n <ScalarFloating\n v-if=\"menuItem.targetRef && menuItem.open\"\n placement=\"right-start\"\n :target=\"menuItem.targetRef\"\n teleport>\n <template #floating>\n <ScalarDropdownMenu @keydown.escape=\"$emit('closeMenu')\">\n <!-- Add example -->\n <ScalarDropdownButton\n v-if=\"menuItem.item?.entity.type === 'request'\"\n class=\"flex items-center gap-2\"\n @click=\"handleAddExample\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Example\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>Add Example</span>\n </ScalarDropdownButton>\n\n <!-- Rename -->\n <ScalarDropdownButton\n v-if=\"!isDraftsMenuItem\"\n ref=\"menuRef\"\n class=\"flex items-center gap-2\"\n @click=\"editModal.show()\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Edit\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>\n <template v-if=\"menuItem.item?.entity.type === 'collection'\">\n Edit\n </template>\n <template v-else> Rename </template>\n </span>\n </ScalarDropdownButton>\n\n <!-- Duplicate -->\n <!-- <ScalarDropdownButton\n class=\"flex items-center !gap-2\"\n @click=\"handleItemDuplicate\">\n <ScalarIcon\n class=\"inline-flex\"\n thickness=\"1.5\"\n icon=\"Duplicate\"\n size=\"sm\" />\n <span>Duplicate</span>\n </ScalarDropdownButton>\n <ScalarDropdownDivider /> -->\n\n <!-- Watch -->\n <ScalarDropdownButton\n v-if=\"menuItem.item?.documentUrl\"\n ref=\"menuRef\"\n class=\"flex items-center gap-2\"\n @click=\"toggleWatchMode\">\n <ScalarIcon\n class=\"inline-flex\"\n :icon=\"menuItem.item?.watchMode ? 'Unwatch' : 'Watch'\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>\n {{\n menuItem.item?.watchMode\n ? 'Disable Watch Mode'\n : 'Enable Watch Mode'\n }}\n </span>\n </ScalarDropdownButton>\n\n <!-- Delete -->\n <ScalarDropdownButton\n v-if=\"!isDraftsMenuItem\"\n class=\"flex items-center gap-2\"\n @click=\"deleteModal.show()\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Delete\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>Delete</span>\n </ScalarDropdownButton>\n\n <!-- Clear Drafts -->\n <ScalarDropdownButton\n v-if=\"isDraftsMenuItem\"\n class=\"flex items-center gap-2\"\n @click=\"clearDraftsModal.show()\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Delete\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>Clear Drafts</span>\n </ScalarDropdownButton>\n </ScalarDropdownMenu>\n </template>\n </ScalarFloating>\n\n <!-- Modals -->\n <ScalarModal\n :size=\"'xxs'\"\n :state=\"deleteModal\"\n :title=\"`Delete ${menuItem.item?.resourceTitle}`\">\n <DeleteSidebarListElement\n :variableName=\"menuItem.item?.title ?? ''\"\n :warningMessage=\"menuItem.item?.warning\"\n @close=\"deleteModal.hide()\"\n @delete=\"handleItemDelete\" />\n </ScalarModal>\n <ScalarModal\n :size=\"'xxs'\"\n :state=\"editModal\"\n :title=\"`Edit ${menuItem.item?.resourceTitle}`\">\n <EditSidebarListCollection\n v-if=\"menuItem.item?.resourceTitle === 'Collection'\"\n :icon=\"menuItem.item?.icon || 'interface-content-folder'\"\n :name=\"menuItem.item?.title\"\n @close=\"editModal.hide()\"\n @edit=\"handleEdit\" />\n <EditSidebarListElement\n v-else\n :name=\"menuItem.item?.title ?? ''\"\n @close=\"editModal.hide()\"\n @edit=\"handleEdit\" />\n </ScalarModal>\n <ScalarModal\n :size=\"'xxs'\"\n :state=\"clearDraftsModal\"\n :title=\"'Clear Drafts'\">\n <DeleteSidebarListElement\n :variableName=\"'All Drafts'\"\n :warningMessage=\"'This action will clear all drafts. This cannot be undone.'\"\n @close=\"clearDraftsModal.hide()\"\n @delete=\"handleClearDrafts\" />\n </ScalarModal>\n</template>\n<style scoped>\n.ellipsis-position {\n transform: translate3d(calc(-100% - 4.5px), 0, 0);\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarDropdownButton,\n ScalarDropdownMenu,\n ScalarFloating,\n ScalarIcon,\n ScalarModal,\n useModal,\n type ScalarDropdown,\n} from '@scalar/components'\nimport type { Collection } from '@scalar/oas-utils/entities/spec'\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport DeleteSidebarListElement from '@/components/Sidebar/Actions/DeleteSidebarListElement.vue'\nimport EditSidebarListCollection from '@/components/Sidebar/Actions/EditSidebarListCollection.vue'\nimport EditSidebarListElement from '@/components/Sidebar/Actions/EditSidebarListElement.vue'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { createInitialRequest } from '@/store/requests'\nimport type { SidebarMenuItem } from '@/views/Request/types'\n\nconst props = defineProps<{ menuItem: SidebarMenuItem }>()\n\nconst emit = defineEmits<{\n (e: 'closeMenu'): []\n (e: 'toggleWatchMode', item: SidebarMenuItem['item']): void\n (e: 'clearDrafts'): void\n}>()\n\nconst { replace } = useRouter()\nconst {\n activeRouterParams,\n activeWorkspaceCollections,\n activeWorkspaceRequests,\n} = useActiveEntities()\nconst { events, requestMutators } = useWorkspace()\n\nconst editModal = useModal()\nconst deleteModal = useModal()\nconst clearDraftsModal = useModal()\n\n/** Add example */\nconst handleAddExample = () =>\n events.commandPalette.emit({\n commandName: 'Add Example',\n metaData: {\n itemUid: props.menuItem.item?.entity.uid,\n },\n })\n\nconst handleEdit = (newName: string, newIcon?: string) => {\n props.menuItem.item?.edit(newName, newIcon)\n editModal.hide()\n}\n\n/** Delete with redirect for both requests and requestExamples */\nconst handleItemDelete = () => {\n props.menuItem.item?.delete()\n\n if (!activeWorkspaceRequests.value.length) {\n const { request } = createInitialRequest()\n const draftCollection = activeWorkspaceCollections.value.find(\n (collection: Collection) => collection.info?.title === 'Drafts',\n )\n\n if (draftCollection) {\n requestMutators.add(request, draftCollection.uid)\n\n replace({\n name: 'request',\n params: {\n [PathId.Request]: request.uid,\n },\n })\n }\n }\n\n if (\n activeRouterParams.value[PathId.Request] === props.menuItem.item?.entity.uid\n ) {\n replace({\n name: 'request',\n params: {\n [PathId.Request]: 'default',\n },\n })\n }\n\n if (\n activeRouterParams.value[PathId.Examples] ===\n props.menuItem.item?.entity.uid\n ) {\n replace({\n name: 'request',\n params: {\n [PathId.Request]: 'default',\n },\n })\n }\n\n if (activeWorkspaceCollections.value[0]) {\n const firstRequest = activeWorkspaceCollections.value[0].requests[0]\n replace({\n name: 'request',\n params: {\n [PathId.Request]: firstRequest,\n },\n })\n }\n\n deleteModal.hide()\n}\n\n// Manually focus the popup - not pretty but it works\nconst menuRef = ref<typeof ScalarDropdown | null>(null)\nwatch([() => props.menuItem.open, menuRef], ([open]) => {\n if (open && menuRef.value?.$parent?.$el) {\n menuRef.value.$parent.$el.focus()\n }\n})\n\n// Close menu on click because headless doesn't seem to work\nconst globalClickListener = () => props.menuItem.open && emit('closeMenu')\nonMounted(() => window.addEventListener('click', globalClickListener))\nonBeforeUnmount(() => window.removeEventListener('click', globalClickListener))\n\nconst toggleWatchMode = () => {\n emit('toggleWatchMode', props.menuItem.item)\n}\n\nconst handleClearDrafts = () => {\n emit('clearDrafts')\n clearDraftsModal.hide()\n}\n\nconst isDraftsMenuItem = computed(() => {\n return props.menuItem.item?.title === 'Drafts'\n})\n</script>\n\n<template>\n <ScalarFloating\n v-if=\"menuItem.targetRef && menuItem.open\"\n placement=\"right-start\"\n :target=\"menuItem.targetRef\"\n teleport>\n <template #floating>\n <ScalarDropdownMenu @keydown.escape=\"$emit('closeMenu')\">\n <!-- Add example -->\n <ScalarDropdownButton\n v-if=\"menuItem.item?.entity.type === 'request'\"\n class=\"flex items-center gap-2\"\n @click=\"handleAddExample\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Example\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>Add Example</span>\n </ScalarDropdownButton>\n\n <!-- Rename -->\n <ScalarDropdownButton\n v-if=\"!isDraftsMenuItem\"\n ref=\"menuRef\"\n class=\"flex items-center gap-2\"\n @click=\"editModal.show()\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Edit\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>\n <template v-if=\"menuItem.item?.entity.type === 'collection'\">\n Edit\n </template>\n <template v-else> Rename </template>\n </span>\n </ScalarDropdownButton>\n\n <!-- Duplicate -->\n <!-- <ScalarDropdownButton\n class=\"flex items-center !gap-2\"\n @click=\"handleItemDuplicate\">\n <ScalarIcon\n class=\"inline-flex\"\n thickness=\"1.5\"\n icon=\"Duplicate\"\n size=\"sm\" />\n <span>Duplicate</span>\n </ScalarDropdownButton>\n <ScalarDropdownDivider /> -->\n\n <!-- Watch -->\n <ScalarDropdownButton\n v-if=\"menuItem.item?.documentUrl\"\n ref=\"menuRef\"\n class=\"flex items-center gap-2\"\n @click=\"toggleWatchMode\">\n <ScalarIcon\n class=\"inline-flex\"\n :icon=\"menuItem.item?.watchMode ? 'Unwatch' : 'Watch'\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>\n {{\n menuItem.item?.watchMode\n ? 'Disable Watch Mode'\n : 'Enable Watch Mode'\n }}\n </span>\n </ScalarDropdownButton>\n\n <!-- Delete -->\n <ScalarDropdownButton\n v-if=\"!isDraftsMenuItem\"\n class=\"flex items-center gap-2\"\n @click=\"deleteModal.show()\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Delete\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>Delete</span>\n </ScalarDropdownButton>\n\n <!-- Clear Drafts -->\n <ScalarDropdownButton\n v-if=\"isDraftsMenuItem\"\n class=\"flex items-center gap-2\"\n @click=\"clearDraftsModal.show()\">\n <ScalarIcon\n class=\"inline-flex\"\n icon=\"Delete\"\n size=\"md\"\n thickness=\"1.5\" />\n <span>Clear Drafts</span>\n </ScalarDropdownButton>\n </ScalarDropdownMenu>\n </template>\n </ScalarFloating>\n\n <!-- Modals -->\n <ScalarModal\n :size=\"'xxs'\"\n :state=\"deleteModal\"\n :title=\"`Delete ${menuItem.item?.resourceTitle}`\">\n <DeleteSidebarListElement\n :variableName=\"menuItem.item?.title ?? ''\"\n :warningMessage=\"menuItem.item?.warning\"\n @close=\"deleteModal.hide()\"\n @delete=\"handleItemDelete\" />\n </ScalarModal>\n <ScalarModal\n :size=\"'xxs'\"\n :state=\"editModal\"\n :title=\"`Edit ${menuItem.item?.resourceTitle}`\">\n <EditSidebarListCollection\n v-if=\"menuItem.item?.resourceTitle === 'Collection'\"\n :icon=\"menuItem.item?.icon || 'interface-content-folder'\"\n :name=\"menuItem.item?.title\"\n @close=\"editModal.hide()\"\n @edit=\"handleEdit\" />\n <EditSidebarListElement\n v-else\n :name=\"menuItem.item?.title ?? ''\"\n @close=\"editModal.hide()\"\n @edit=\"handleEdit\" />\n </ScalarModal>\n <ScalarModal\n :size=\"'xxs'\"\n :state=\"clearDraftsModal\"\n :title=\"'Clear Drafts'\">\n <DeleteSidebarListElement\n :variableName=\"'All Drafts'\"\n :warningMessage=\"'This action will clear all drafts. This cannot be undone.'\"\n @close=\"clearDraftsModal.hide()\"\n @delete=\"handleClearDrafts\" />\n </ScalarModal>\n</template>\n<style scoped>\n.ellipsis-position {\n transform: translate3d(calc(-100% - 4.5px), 0, 0);\n}\n</style>\n","import type { Collection, Operation } from '@scalar/oas-utils/entities/spec'\n\n/**\n * Checks if the user gets the getting started state displayed\n */\nexport const isGettingStarted = (\n activeWorkspaceCollections: Collection[],\n activeWorkspaceRequests: Operation['uid'][],\n requests: Record<string, any>,\n) => {\n const draftCollection = activeWorkspaceCollections.find((collection) => collection.info?.title === 'Drafts')\n const hasSingleRequest = activeWorkspaceRequests.length === 1\n\n if (!activeWorkspaceRequests[0]) {\n return false\n }\n const isDraftsRequest = draftCollection?.requests.includes(activeWorkspaceRequests[0])\n\n if (!isDraftsRequest) {\n return false\n }\n const isRenamed = requests[draftCollection?.requests[0] ?? '']?.summary !== 'My First Request'\n\n return hasSingleRequest && isDraftsRequest && !isRenamed\n}\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarIcon,\n ScalarSidebarGroupToggle,\n ScalarTooltip,\n} from '@scalar/components'\nimport {\n Draggable,\n type DraggableProps,\n type DraggingItem,\n type HoveredItem,\n} from '@scalar/draggable'\nimport type { Collection, Request } from '@scalar/oas-utils/entities/spec'\nimport { shouldIgnoreEntity } from '@scalar/oas-utils/helpers'\nimport { computed, nextTick, ref } from 'vue'\nimport { RouterLink, useRouter } from 'vue-router'\n\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { useLayout } from '@/hooks/useLayout'\nimport { useSidebar } from '@/hooks/useSidebar'\nimport { getModifiers } from '@/libs'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport type { SidebarItem, SidebarMenuItem } from '@/views/Request/types'\n\nconst {\n isDraggable = false,\n isDroppable = false,\n parentUids,\n uid,\n menuItem,\n} = defineProps<{\n /**\n * Toggle dragging on and off\n *\n * @default false\n */\n isDraggable?: boolean\n /**\n * Prevents items from being hovered and dropped into\n *\n * @default false\n */\n isDroppable?: DraggableProps['isDroppable']\n /** Both indicate the level and provide a way to traverse upwards */\n parentUids: string[]\n /** uid of a Collection, Tag, Request or RequestExample */\n uid: string\n /** To keep track of the menu being open */\n menuItem: SidebarMenuItem\n}>()\n\nconst emit = defineEmits<{\n onDragEnd: [draggingItem: DraggingItem, hoveredItem: HoveredItem]\n newTab: [name: string, uid: string]\n openMenu: [menuItem: SidebarMenuItem]\n}>()\n\ndefineSlots<{\n leftIcon(): void\n}>()\n\nconst { activeCollection, activeRequest, activeRouterParams, activeWorkspace } =\n useActiveEntities()\nconst {\n collections,\n tags,\n requests,\n requestExamples,\n collectionMutators,\n tagMutators,\n requestMutators,\n requestExampleMutators,\n events,\n} = useWorkspace()\nconst router = useRouter()\nconst { collapsedSidebarFolders, toggleSidebarFolder } = useSidebar()\nconst { layout } = useLayout()\n\n/** Normalize properties across different types for easy consumption */\nconst item = computed<SidebarItem>(() => {\n const collection = collections[uid]\n const tag = tags[uid]\n const request = requests[uid]\n const requestExample = requestExamples[uid]\n\n if (collection) {\n return {\n title: collection.info?.title || 'Untitled Collection',\n entity: collection,\n resourceTitle: 'Collection',\n children: collection.children,\n icon: collection['x-scalar-icon'],\n documentUrl: collection.documentUrl,\n watchMode: collection.watchMode,\n to:\n collection.uid && collection?.info?.title !== 'Drafts'\n ? {\n name: 'collection',\n params: {\n [PathId.Workspace]: activeWorkspace.value?.uid,\n [PathId.Collection]: collection.uid,\n },\n }\n : undefined,\n warning:\n \"This cannot be undone. You're about to delete the collection and all folders and requests inside it.\",\n edit: (name: string, icon?: string) => {\n collectionMutators.edit(collection.uid, 'info.title', name)\n if (icon) {\n collectionMutators.edit(collection.uid, 'x-scalar-icon', icon)\n }\n },\n delete: () => {\n if (activeWorkspace.value) {\n collectionMutators.delete(collection, activeWorkspace.value)\n }\n },\n }\n }\n\n if (tag) {\n return {\n title: tag.name,\n entity: tag,\n resourceTitle: 'Tag',\n children: tag.children,\n warning:\n \"This cannot be undone. You're about to delete the tag and all requests inside it\",\n edit: (name: string) => tagMutators.edit(tag.uid, 'name', name),\n delete: () =>\n parentUids[0] &&\n tagMutators.delete(tag, parentUids[0] as Collection['uid']),\n }\n }\n\n if (request) {\n return {\n title: request.summary ?? request.path,\n to: {\n name: 'request',\n params: {\n workspace: activeWorkspace.value?.uid,\n request: request.uid,\n },\n },\n method: request.method,\n entity: request,\n resourceTitle: 'Request',\n warning: \"This cannot be undone. You're about to delete the request.\",\n children: request.examples.slice(1),\n edit: (name: string) =>\n requestMutators.edit(request.uid, 'summary', name),\n delete: () =>\n parentUids[0] &&\n requestMutators.delete(request, parentUids[0] as Collection['uid']),\n }\n }\n\n if (requestExample?.requestUid) {\n return {\n title: requestExample.name,\n to: {\n name: 'request.examples',\n params: {\n workspace: activeWorkspace.value?.uid,\n request: requestExample.requestUid,\n examples: requestExample.uid,\n },\n },\n method: requests[requestExample.requestUid]?.method,\n entity: requestExample,\n resourceTitle: 'Example',\n warning:\n \"This cannot be undone. You're about to delete the example from the request.\",\n children: [],\n edit: (name: string) =>\n requestExampleMutators.edit(requestExample.uid, 'name', name),\n delete: () => requestExampleMutators.delete(requestExample),\n }\n }\n\n // Catch all item which we should never see\n return {\n title: 'Unknown',\n entity: {\n uid: '',\n type: 'unknown',\n },\n resourceTitle: 'Unknown',\n children: [],\n edit: () => null,\n delete: () => null,\n } satisfies SidebarItem\n})\n\n/** Checks to see if it is a draft collection with the title of Drafts */\nconst isDraftCollection = computed(\n () =>\n item.value.entity.type === 'collection' && item.value.title === 'Drafts',\n)\n\nconst highlightClasses = 'hover:bg-sidebar-b-active indent-padding-left'\n\n/** Due to the nesting, we need a dynamic left offset for hover and active backgrounds */\nconst leftOffset = computed(() => {\n if (!parentUids.length) {\n return '12px'\n }\n if (layout === 'modal') {\n return `${(parentUids.length - 1) * 12}px`\n }\n return `${parentUids.length * 12}px`\n})\nconst paddingOffset = computed(() => {\n if (!parentUids.length) {\n return '0px'\n }\n if (layout === 'modal') {\n return `${(parentUids.length - 1) * 12}px`\n }\n return `${parentUids.length * 12}px`\n})\n\n/**\n * Show folders if they are open,\n * show examples if there are more than one and the request is active\n */\nconst showChildren = computed(\n () =>\n collapsedSidebarFolders[uid] ||\n (activeRequest.value?.uid === uid &&\n (item.value.entity as Request).examples.length > 1),\n)\n\n/** Since we have exact routing, we should check if the default request is active */\nconst isDefaultActive = computed(\n () =>\n typeof router.currentRoute.value.name === 'string' &&\n router.currentRoute.value.name.startsWith('request') &&\n activeRouterParams.value[PathId.Request] === 'default' &&\n activeRequest.value?.uid === uid,\n)\n\n/** The draggable component */\nconst draggableRef = ref<{\n draggingItem: DraggingItem\n hoveredItem: HoveredItem\n} | null>(null)\n\n/** Calculate offsets which change a little depending on whats being dragged and hovered over */\nconst getDraggableOffsets = computed(() => {\n let ceiling = 0.5\n let floor = 0.5\n\n if (!draggableRef.value) {\n return { ceiling, floor }\n }\n const { draggingItem } = draggableRef.value\n\n // If hovered over is collection && dragging is not a collection\n if (\n !collections[draggingItem?.id] &&\n item.value.entity.type === 'collection'\n ) {\n ceiling = 1\n floor = 0\n }\n // Has children but is not a request or a collection\n else if (item.value.entity.type === 'tag') {\n ceiling = 0.8\n floor = 0.2\n }\n\n return { ceiling, floor }\n})\n\n/** Guard to check if an element is able to be dropped on */\nconst _isDroppable = (draggingItem: DraggingItem, hoveredItem: HoveredItem) => {\n // Cannot drop in read only mode\n if (layout === 'modal') {\n return false\n }\n // RequestExamples cannot be dropped on\n if (requestExamples[hoveredItem.id]) {\n return false\n }\n // Collection cannot be dropped into another collection\n if (collections[draggingItem.id]) {\n return false\n }\n\n return true\n}\n\nconst handleNavigation = (event: KeyboardEvent, _item: SidebarItem) => {\n if (event) {\n const modifier = getModifiers(['default'])\n const isModifierPressed = modifier.some((key) => event[key])\n\n if (isModifierPressed) {\n emit('newTab', _item.title || '', _item.entity.uid)\n } else if (_item.to) {\n router.push(_item.to)\n }\n\n nextTick(() => events.focusAddressBar.emit())\n }\n}\n\nfunction addRequest(entityUid: string) {\n const collectionUid = parentUids[0]\n ? collections[parentUids[0]]?.uid || ''\n : entityUid\n\n // If the entity is a tag, add the tag name to the request\n const requestData =\n parentUids[0] && tags[entityUid]?.name\n ? { tags: [tags[entityUid].name] }\n : {}\n\n const newRequest = requestMutators.add(\n requestData,\n collectionUid as Collection['uid'],\n )\n\n if (newRequest) {\n router.push({\n name: 'request',\n params: {\n workspace: activeWorkspace.value?.uid,\n request: newRequest.uid,\n },\n })\n\n // Focus the address bar\n events.hotKeys.emit({\n focusAddressBar: new KeyboardEvent('keydown', { key: 'l' }),\n })\n }\n}\n\nconst watchIconColor = computed(() => {\n const { uid: _uid, watchModeStatus } = activeCollection.value || {}\n\n if (_uid !== item.value.entity.uid) {\n return 'text-c-3'\n }\n if (watchModeStatus === 'WATCHING') {\n return 'text-c-1'\n }\n if (watchModeStatus === 'ERROR') {\n return 'text-red'\n }\n return 'text-c-3'\n})\n\nconst hasDraftRequests = computed(() => {\n return (\n item.value.title === 'Drafts' &&\n layout !== 'modal' &&\n item.value.children.length > 0\n )\n})\n\n/**\n * Check if the item should be shown.\n * This is used to hide items that are marked as hidden/internal.\n */\nconst shouldShowItem = computed(() => {\n const request = requests[uid]\n if (request) {\n return !shouldIgnoreEntity(request)\n }\n\n const tag = tags[uid]\n if (tag) {\n return !shouldIgnoreEntity(tag)\n }\n\n return true\n})\n</script>\n\n<template>\n <li\n v-if=\"shouldShowItem\"\n class=\"relative flex flex-row\"\n :class=\"[\n (layout === 'modal' && parentUids.length > 1) ||\n (layout !== 'modal' && parentUids.length)\n ? 'before:bg-border indent-border-line-offset mb-[.5px] before:pointer-events-none before:absolute before:top-0 before:left-[calc(.75rem_+_.5px)] before:z-1 before:h-[calc(100%_+_.5px)] before:w-[.5px] last:mb-0 last:before:h-full'\n : '',\n ]\">\n <Draggable\n :id=\"item.entity.uid\"\n ref=\"draggableRef\"\n :ceiling=\"getDraggableOffsets.ceiling\"\n class=\"gap-1/2 flex flex-1 flex-col text-base/5\"\n :floor=\"getDraggableOffsets.floor\"\n :isDraggable=\"isDraggable\"\n :isDroppable=\"isDroppable\"\n :parentIds=\"parentUids\"\n @onDragEnd=\"(...args) => $emit('onDragEnd', ...args)\">\n <!-- Request -->\n <RouterLink\n v-if=\"\n (item.entity.type === 'request' ||\n item.entity.type === 'requestExample') &&\n item.to\n \"\n v-slot=\"{ isExactActive }\"\n class=\"group no-underline\"\n :to=\"item.to\"\n @click.prevent=\"\n (event: KeyboardEvent) => handleNavigation(event, item)\n \">\n <div\n class=\"relative flex min-h-8 w-full cursor-pointer flex-row items-start justify-between gap-0.5 rounded py-1.5 pr-2\"\n :class=\"[\n highlightClasses,\n isExactActive || isDefaultActive\n ? 'bg-sidebar-b-active text-sidebar-c-active font-medium transition-none'\n : 'text-sidebar-c-2',\n ]\">\n <span class=\"line-clamp-1 w-full pl-2 break-all\">\n {{ item.title || 'Untitled' }}\n </span>\n <div class=\"flex flex-row items-center gap-1\">\n <!-- Menu -->\n <div class=\"relative\">\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"hover:bg-b-3 hidden aspect-square h-fit px-0.5 py-0 opacity-0 group-hover:flex group-hover:opacity-100 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n :class=\"{\n flex:\n menuItem?.item?.entity.uid === item.entity.uid &&\n menuItem.open,\n }\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n @click.stop.prevent=\"\n (ev: MouseEvent) =>\n $emit('openMenu', {\n item,\n parentUids,\n targetRef: ev.currentTarget as HTMLButtonElement,\n open: !menuItem.open,\n })\n \">\n <ScalarIcon\n icon=\"Ellipses\"\n size=\"md\" />\n </ScalarButton>\n </div>\n <span class=\"flex items-start\">\n  \n <span class=\"sr-only\">HTTP Method:</span>\n <HttpMethod\n v-if=\"item.method\"\n class=\"font-bold\"\n :method=\"item.method\" />\n </span>\n </div>\n </div>\n </RouterLink>\n\n <!-- Collection -->\n <RouterLink\n v-else-if=\"\n (layout !== 'modal' || parentUids.length) &&\n item.entity.type === 'collection' &&\n item.to\n \"\n :aria-expanded=\"Boolean(collapsedSidebarFolders[item.entity.uid])\"\n class=\"hover:bg-b-2 group relative flex w-full flex-row justify-start gap-1.5 rounded p-1.5 no-underline focus-visible:z-10\"\n :class=\"[\n highlightClasses,\n {\n 'bg-sidebar-b-active text-sidebar-c-active transition-none':\n typeof router.currentRoute.value.name === 'string' &&\n router.currentRoute.value.name.startsWith('collection') &&\n router.currentRoute.value.params[PathId.Collection] ===\n item.entity.uid,\n 'text-c-2': item.title === 'Untitled Collection',\n },\n ]\"\n :to=\"item.to\">\n <span\n class=\"flex h-5 max-w-[14px] shrink-0 items-center justify-center\">\n <slot name=\"leftIcon\" />\n  \n </span>\n <div class=\"flex flex-1 flex-row justify-between font-medium\">\n <span class=\"line-clamp-1 w-full text-left break-all\">\n {{ item.title }}\n </span>\n <div class=\"relative flex h-fit items-center justify-end gap-0.5\">\n <div\n class=\"items-center gap-px opacity-0 group-hover:flex group-hover:opacity-100 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n :class=\"{\n flex: menuItem.open,\n hidden:\n !menuItem.open ||\n menuItem.item?.entity.uid !== item.entity.uid,\n }\">\n <ScalarButton\n v-if=\"\n (layout !== 'modal' && !isDraftCollection) ||\n (isDraftCollection && hasDraftRequests)\n \"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"\n (ev: MouseEvent) =>\n $emit('openMenu', {\n item,\n parentUids,\n targetRef: (ev.currentTarget as HTMLElement)\n ?.parentNode as HTMLButtonElement,\n open: true,\n })\n \">\n <ScalarIcon\n icon=\"Ellipses\"\n size=\"md\" />\n </ScalarButton>\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"addRequest(item.entity.uid)\">\n <ScalarIcon\n icon=\"Add\"\n size=\"md\"\n thickness=\"2\" />\n </ScalarButton>\n </div>\n <ScalarTooltip\n v-if=\"item.watchMode\"\n :content=\"`Watching: ${item.documentUrl}`\"\n :offset=\"12\"\n placement=\"right\">\n <button\n class=\"flex items-center justify-center\"\n type=\"button\">\n <ScalarIcon\n class=\"ml-0.5 text-sm\"\n :class=\"watchIconColor\"\n icon=\"Watch\"\n size=\"md\"\n thickness=\"2\" />\n </button>\n </ScalarTooltip>\n <span\n class=\"flex cursor-pointer items-center justify-center\"\n @click.stop.prevent=\"toggleSidebarFolder(item.entity.uid)\">\n <ScalarSidebarGroupToggle\n class=\"text-c-3 hover:text-c-1 shrink-0\"\n :open=\"Boolean(collapsedSidebarFolders[item.entity.uid])\" />\n </span>\n </div>\n </div>\n </RouterLink>\n\n <!-- Tag -->\n <button\n v-else-if=\"layout !== 'modal' || parentUids.length\"\n :aria-expanded=\"Boolean(collapsedSidebarFolders[item.entity.uid])\"\n class=\"hover:bg-b-2 group relative flex w-full flex-row justify-start gap-1.5 rounded p-1.5 focus-visible:z-10\"\n :class=\"[highlightClasses]\"\n type=\"button\"\n @click=\"toggleSidebarFolder(item.entity.uid)\">\n <span\n class=\"flex h-5 max-w-[14px] shrink-0 items-center justify-center\">\n <slot name=\"leftIcon\" />\n  \n </span>\n <div class=\"flex flex-1 flex-row justify-between\">\n <span class=\"line-clamp-1 w-full text-left font-medium break-all\">\n {{ item.title }}\n </span>\n <div class=\"relative flex h-fit items-center justify-end gap-0.5\">\n <div\n class=\"items-center gap-px opacity-0 group-hover:flex group-hover:opacity-100 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n :class=\"{\n flex: menuItem.open,\n hidden:\n !menuItem.open ||\n menuItem.item?.entity.uid !== item.entity.uid,\n }\">\n <ScalarButton\n v-if=\"\n (layout !== 'modal' && !isDraftCollection) ||\n (isDraftCollection && hasDraftRequests)\n \"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"\n (ev: MouseEvent) =>\n $emit('openMenu', {\n item,\n parentUids,\n targetRef: (ev.currentTarget as HTMLElement)\n ?.parentNode as HTMLButtonElement,\n open: true,\n })\n \">\n <ScalarIcon\n icon=\"Ellipses\"\n size=\"md\" />\n </ScalarButton>\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"addRequest(item.entity.uid)\">\n <ScalarIcon\n icon=\"Add\"\n size=\"md\"\n thickness=\"2\" />\n </ScalarButton>\n </div>\n <ScalarTooltip\n v-if=\"item.watchMode\"\n content=\"Watching: {{ item.documentUrl }}\"\n :offset=\"12\"\n placement=\"right\">\n <button\n class=\"flex items-center justify-center\"\n type=\"button\">\n <ScalarIcon\n class=\"ml-0.5 text-sm\"\n :class=\"watchIconColor\"\n icon=\"Watch\"\n size=\"md\"\n thickness=\"2\" />\n </button>\n </ScalarTooltip>\n <span\n class=\"flex cursor-pointer items-center justify-center\"\n @click.stop.prevent=\"toggleSidebarFolder(item.entity.uid)\">\n <ScalarSidebarGroupToggle\n class=\"text-c-3 hover:text-c-1 shrink-0\"\n :open=\"Boolean(collapsedSidebarFolders[item.entity.uid])\" />\n </span>\n </div>\n </div>\n </button>\n\n <!-- Children -->\n <ul v-if=\"showChildren\">\n <!-- We never want to show the first example -->\n <RequestSidebarItem\n v-for=\"childUid in item.children\"\n :key=\"childUid\"\n :isDraggable=\"!requestExamples[childUid]\"\n :isDroppable=\"_isDroppable\"\n :menuItem=\"menuItem\"\n :parentUids=\"[...parentUids, uid]\"\n :uid=\"childUid\"\n @newTab=\"(name, uid) => $emit('newTab', name, uid)\"\n @onDragEnd=\"(...args) => $emit('onDragEnd', ...args)\"\n @openMenu=\"(item) => $emit('openMenu', item)\" />\n <ScalarButton\n v-if=\"item.children.length === 0\"\n class=\"text-c-1 hover:bg-b-2 flex h-8 w-full justify-start gap-1.5 py-0 text-xs\"\n :class=\"parentUids.length ? 'pl-9' : ''\"\n variant=\"ghost\"\n @click=\"addRequest(item.entity.uid)\">\n <ScalarIcon\n icon=\"Add\"\n size=\"sm\" />\n <span>Add Request</span>\n </ScalarButton>\n </ul>\n </Draggable>\n </li>\n</template>\n<style>\n@import '@scalar/draggable/style.css';\n</style>\n<style scoped>\n.indent-border-line-offset:before {\n left: v-bind(leftOffset);\n}\n.indent-padding-left {\n padding-left: calc(v-bind(paddingOffset) + 6px);\n}\n.sidebar-folderitem :deep(.ellipsis-position) {\n right: 6px;\n transform: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarIcon,\n ScalarSidebarGroupToggle,\n ScalarTooltip,\n} from '@scalar/components'\nimport {\n Draggable,\n type DraggableProps,\n type DraggingItem,\n type HoveredItem,\n} from '@scalar/draggable'\nimport type { Collection, Request } from '@scalar/oas-utils/entities/spec'\nimport { shouldIgnoreEntity } from '@scalar/oas-utils/helpers'\nimport { computed, nextTick, ref } from 'vue'\nimport { RouterLink, useRouter } from 'vue-router'\n\nimport { HttpMethod } from '@/components/HttpMethod'\nimport { useLayout } from '@/hooks/useLayout'\nimport { useSidebar } from '@/hooks/useSidebar'\nimport { getModifiers } from '@/libs'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport type { SidebarItem, SidebarMenuItem } from '@/views/Request/types'\n\nconst {\n isDraggable = false,\n isDroppable = false,\n parentUids,\n uid,\n menuItem,\n} = defineProps<{\n /**\n * Toggle dragging on and off\n *\n * @default false\n */\n isDraggable?: boolean\n /**\n * Prevents items from being hovered and dropped into\n *\n * @default false\n */\n isDroppable?: DraggableProps['isDroppable']\n /** Both indicate the level and provide a way to traverse upwards */\n parentUids: string[]\n /** uid of a Collection, Tag, Request or RequestExample */\n uid: string\n /** To keep track of the menu being open */\n menuItem: SidebarMenuItem\n}>()\n\nconst emit = defineEmits<{\n onDragEnd: [draggingItem: DraggingItem, hoveredItem: HoveredItem]\n newTab: [name: string, uid: string]\n openMenu: [menuItem: SidebarMenuItem]\n}>()\n\ndefineSlots<{\n leftIcon(): void\n}>()\n\nconst { activeCollection, activeRequest, activeRouterParams, activeWorkspace } =\n useActiveEntities()\nconst {\n collections,\n tags,\n requests,\n requestExamples,\n collectionMutators,\n tagMutators,\n requestMutators,\n requestExampleMutators,\n events,\n} = useWorkspace()\nconst router = useRouter()\nconst { collapsedSidebarFolders, toggleSidebarFolder } = useSidebar()\nconst { layout } = useLayout()\n\n/** Normalize properties across different types for easy consumption */\nconst item = computed<SidebarItem>(() => {\n const collection = collections[uid]\n const tag = tags[uid]\n const request = requests[uid]\n const requestExample = requestExamples[uid]\n\n if (collection) {\n return {\n title: collection.info?.title || 'Untitled Collection',\n entity: collection,\n resourceTitle: 'Collection',\n children: collection.children,\n icon: collection['x-scalar-icon'],\n documentUrl: collection.documentUrl,\n watchMode: collection.watchMode,\n to:\n collection.uid && collection?.info?.title !== 'Drafts'\n ? {\n name: 'collection',\n params: {\n [PathId.Workspace]: activeWorkspace.value?.uid,\n [PathId.Collection]: collection.uid,\n },\n }\n : undefined,\n warning:\n \"This cannot be undone. You're about to delete the collection and all folders and requests inside it.\",\n edit: (name: string, icon?: string) => {\n collectionMutators.edit(collection.uid, 'info.title', name)\n if (icon) {\n collectionMutators.edit(collection.uid, 'x-scalar-icon', icon)\n }\n },\n delete: () => {\n if (activeWorkspace.value) {\n collectionMutators.delete(collection, activeWorkspace.value)\n }\n },\n }\n }\n\n if (tag) {\n return {\n title: tag.name,\n entity: tag,\n resourceTitle: 'Tag',\n children: tag.children,\n warning:\n \"This cannot be undone. You're about to delete the tag and all requests inside it\",\n edit: (name: string) => tagMutators.edit(tag.uid, 'name', name),\n delete: () =>\n parentUids[0] &&\n tagMutators.delete(tag, parentUids[0] as Collection['uid']),\n }\n }\n\n if (request) {\n return {\n title: request.summary ?? request.path,\n to: {\n name: 'request',\n params: {\n workspace: activeWorkspace.value?.uid,\n request: request.uid,\n },\n },\n method: request.method,\n entity: request,\n resourceTitle: 'Request',\n warning: \"This cannot be undone. You're about to delete the request.\",\n children: request.examples.slice(1),\n edit: (name: string) =>\n requestMutators.edit(request.uid, 'summary', name),\n delete: () =>\n parentUids[0] &&\n requestMutators.delete(request, parentUids[0] as Collection['uid']),\n }\n }\n\n if (requestExample?.requestUid) {\n return {\n title: requestExample.name,\n to: {\n name: 'request.examples',\n params: {\n workspace: activeWorkspace.value?.uid,\n request: requestExample.requestUid,\n examples: requestExample.uid,\n },\n },\n method: requests[requestExample.requestUid]?.method,\n entity: requestExample,\n resourceTitle: 'Example',\n warning:\n \"This cannot be undone. You're about to delete the example from the request.\",\n children: [],\n edit: (name: string) =>\n requestExampleMutators.edit(requestExample.uid, 'name', name),\n delete: () => requestExampleMutators.delete(requestExample),\n }\n }\n\n // Catch all item which we should never see\n return {\n title: 'Unknown',\n entity: {\n uid: '',\n type: 'unknown',\n },\n resourceTitle: 'Unknown',\n children: [],\n edit: () => null,\n delete: () => null,\n } satisfies SidebarItem\n})\n\n/** Checks to see if it is a draft collection with the title of Drafts */\nconst isDraftCollection = computed(\n () =>\n item.value.entity.type === 'collection' && item.value.title === 'Drafts',\n)\n\nconst highlightClasses = 'hover:bg-sidebar-b-active indent-padding-left'\n\n/** Due to the nesting, we need a dynamic left offset for hover and active backgrounds */\nconst leftOffset = computed(() => {\n if (!parentUids.length) {\n return '12px'\n }\n if (layout === 'modal') {\n return `${(parentUids.length - 1) * 12}px`\n }\n return `${parentUids.length * 12}px`\n})\nconst paddingOffset = computed(() => {\n if (!parentUids.length) {\n return '0px'\n }\n if (layout === 'modal') {\n return `${(parentUids.length - 1) * 12}px`\n }\n return `${parentUids.length * 12}px`\n})\n\n/**\n * Show folders if they are open,\n * show examples if there are more than one and the request is active\n */\nconst showChildren = computed(\n () =>\n collapsedSidebarFolders[uid] ||\n (activeRequest.value?.uid === uid &&\n (item.value.entity as Request).examples.length > 1),\n)\n\n/** Since we have exact routing, we should check if the default request is active */\nconst isDefaultActive = computed(\n () =>\n typeof router.currentRoute.value.name === 'string' &&\n router.currentRoute.value.name.startsWith('request') &&\n activeRouterParams.value[PathId.Request] === 'default' &&\n activeRequest.value?.uid === uid,\n)\n\n/** The draggable component */\nconst draggableRef = ref<{\n draggingItem: DraggingItem\n hoveredItem: HoveredItem\n} | null>(null)\n\n/** Calculate offsets which change a little depending on whats being dragged and hovered over */\nconst getDraggableOffsets = computed(() => {\n let ceiling = 0.5\n let floor = 0.5\n\n if (!draggableRef.value) {\n return { ceiling, floor }\n }\n const { draggingItem } = draggableRef.value\n\n // If hovered over is collection && dragging is not a collection\n if (\n !collections[draggingItem?.id] &&\n item.value.entity.type === 'collection'\n ) {\n ceiling = 1\n floor = 0\n }\n // Has children but is not a request or a collection\n else if (item.value.entity.type === 'tag') {\n ceiling = 0.8\n floor = 0.2\n }\n\n return { ceiling, floor }\n})\n\n/** Guard to check if an element is able to be dropped on */\nconst _isDroppable = (draggingItem: DraggingItem, hoveredItem: HoveredItem) => {\n // Cannot drop in read only mode\n if (layout === 'modal') {\n return false\n }\n // RequestExamples cannot be dropped on\n if (requestExamples[hoveredItem.id]) {\n return false\n }\n // Collection cannot be dropped into another collection\n if (collections[draggingItem.id]) {\n return false\n }\n\n return true\n}\n\nconst handleNavigation = (event: KeyboardEvent, _item: SidebarItem) => {\n if (event) {\n const modifier = getModifiers(['default'])\n const isModifierPressed = modifier.some((key) => event[key])\n\n if (isModifierPressed) {\n emit('newTab', _item.title || '', _item.entity.uid)\n } else if (_item.to) {\n router.push(_item.to)\n }\n\n nextTick(() => events.focusAddressBar.emit())\n }\n}\n\nfunction addRequest(entityUid: string) {\n const collectionUid = parentUids[0]\n ? collections[parentUids[0]]?.uid || ''\n : entityUid\n\n // If the entity is a tag, add the tag name to the request\n const requestData =\n parentUids[0] && tags[entityUid]?.name\n ? { tags: [tags[entityUid].name] }\n : {}\n\n const newRequest = requestMutators.add(\n requestData,\n collectionUid as Collection['uid'],\n )\n\n if (newRequest) {\n router.push({\n name: 'request',\n params: {\n workspace: activeWorkspace.value?.uid,\n request: newRequest.uid,\n },\n })\n\n // Focus the address bar\n events.hotKeys.emit({\n focusAddressBar: new KeyboardEvent('keydown', { key: 'l' }),\n })\n }\n}\n\nconst watchIconColor = computed(() => {\n const { uid: _uid, watchModeStatus } = activeCollection.value || {}\n\n if (_uid !== item.value.entity.uid) {\n return 'text-c-3'\n }\n if (watchModeStatus === 'WATCHING') {\n return 'text-c-1'\n }\n if (watchModeStatus === 'ERROR') {\n return 'text-red'\n }\n return 'text-c-3'\n})\n\nconst hasDraftRequests = computed(() => {\n return (\n item.value.title === 'Drafts' &&\n layout !== 'modal' &&\n item.value.children.length > 0\n )\n})\n\n/**\n * Check if the item should be shown.\n * This is used to hide items that are marked as hidden/internal.\n */\nconst shouldShowItem = computed(() => {\n const request = requests[uid]\n if (request) {\n return !shouldIgnoreEntity(request)\n }\n\n const tag = tags[uid]\n if (tag) {\n return !shouldIgnoreEntity(tag)\n }\n\n return true\n})\n</script>\n\n<template>\n <li\n v-if=\"shouldShowItem\"\n class=\"relative flex flex-row\"\n :class=\"[\n (layout === 'modal' && parentUids.length > 1) ||\n (layout !== 'modal' && parentUids.length)\n ? 'before:bg-border indent-border-line-offset mb-[.5px] before:pointer-events-none before:absolute before:top-0 before:left-[calc(.75rem_+_.5px)] before:z-1 before:h-[calc(100%_+_.5px)] before:w-[.5px] last:mb-0 last:before:h-full'\n : '',\n ]\">\n <Draggable\n :id=\"item.entity.uid\"\n ref=\"draggableRef\"\n :ceiling=\"getDraggableOffsets.ceiling\"\n class=\"gap-1/2 flex flex-1 flex-col text-base/5\"\n :floor=\"getDraggableOffsets.floor\"\n :isDraggable=\"isDraggable\"\n :isDroppable=\"isDroppable\"\n :parentIds=\"parentUids\"\n @onDragEnd=\"(...args) => $emit('onDragEnd', ...args)\">\n <!-- Request -->\n <RouterLink\n v-if=\"\n (item.entity.type === 'request' ||\n item.entity.type === 'requestExample') &&\n item.to\n \"\n v-slot=\"{ isExactActive }\"\n class=\"group no-underline\"\n :to=\"item.to\"\n @click.prevent=\"\n (event: KeyboardEvent) => handleNavigation(event, item)\n \">\n <div\n class=\"relative flex min-h-8 w-full cursor-pointer flex-row items-start justify-between gap-0.5 rounded py-1.5 pr-2\"\n :class=\"[\n highlightClasses,\n isExactActive || isDefaultActive\n ? 'bg-sidebar-b-active text-sidebar-c-active font-medium transition-none'\n : 'text-sidebar-c-2',\n ]\">\n <span class=\"line-clamp-1 w-full pl-2 break-all\">\n {{ item.title || 'Untitled' }}\n </span>\n <div class=\"flex flex-row items-center gap-1\">\n <!-- Menu -->\n <div class=\"relative\">\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"hover:bg-b-3 hidden aspect-square h-fit px-0.5 py-0 opacity-0 group-hover:flex group-hover:opacity-100 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n :class=\"{\n flex:\n menuItem?.item?.entity.uid === item.entity.uid &&\n menuItem.open,\n }\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n @click.stop.prevent=\"\n (ev: MouseEvent) =>\n $emit('openMenu', {\n item,\n parentUids,\n targetRef: ev.currentTarget as HTMLButtonElement,\n open: !menuItem.open,\n })\n \">\n <ScalarIcon\n icon=\"Ellipses\"\n size=\"md\" />\n </ScalarButton>\n </div>\n <span class=\"flex items-start\">\n  \n <span class=\"sr-only\">HTTP Method:</span>\n <HttpMethod\n v-if=\"item.method\"\n class=\"font-bold\"\n :method=\"item.method\" />\n </span>\n </div>\n </div>\n </RouterLink>\n\n <!-- Collection -->\n <RouterLink\n v-else-if=\"\n (layout !== 'modal' || parentUids.length) &&\n item.entity.type === 'collection' &&\n item.to\n \"\n :aria-expanded=\"Boolean(collapsedSidebarFolders[item.entity.uid])\"\n class=\"hover:bg-b-2 group relative flex w-full flex-row justify-start gap-1.5 rounded p-1.5 no-underline focus-visible:z-10\"\n :class=\"[\n highlightClasses,\n {\n 'bg-sidebar-b-active text-sidebar-c-active transition-none':\n typeof router.currentRoute.value.name === 'string' &&\n router.currentRoute.value.name.startsWith('collection') &&\n router.currentRoute.value.params[PathId.Collection] ===\n item.entity.uid,\n 'text-c-2': item.title === 'Untitled Collection',\n },\n ]\"\n :to=\"item.to\">\n <span\n class=\"flex h-5 max-w-[14px] shrink-0 items-center justify-center\">\n <slot name=\"leftIcon\" />\n  \n </span>\n <div class=\"flex flex-1 flex-row justify-between font-medium\">\n <span class=\"line-clamp-1 w-full text-left break-all\">\n {{ item.title }}\n </span>\n <div class=\"relative flex h-fit items-center justify-end gap-0.5\">\n <div\n class=\"items-center gap-px opacity-0 group-hover:flex group-hover:opacity-100 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n :class=\"{\n flex: menuItem.open,\n hidden:\n !menuItem.open ||\n menuItem.item?.entity.uid !== item.entity.uid,\n }\">\n <ScalarButton\n v-if=\"\n (layout !== 'modal' && !isDraftCollection) ||\n (isDraftCollection && hasDraftRequests)\n \"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"\n (ev: MouseEvent) =>\n $emit('openMenu', {\n item,\n parentUids,\n targetRef: (ev.currentTarget as HTMLElement)\n ?.parentNode as HTMLButtonElement,\n open: true,\n })\n \">\n <ScalarIcon\n icon=\"Ellipses\"\n size=\"md\" />\n </ScalarButton>\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"addRequest(item.entity.uid)\">\n <ScalarIcon\n icon=\"Add\"\n size=\"md\"\n thickness=\"2\" />\n </ScalarButton>\n </div>\n <ScalarTooltip\n v-if=\"item.watchMode\"\n :content=\"`Watching: ${item.documentUrl}`\"\n :offset=\"12\"\n placement=\"right\">\n <button\n class=\"flex items-center justify-center\"\n type=\"button\">\n <ScalarIcon\n class=\"ml-0.5 text-sm\"\n :class=\"watchIconColor\"\n icon=\"Watch\"\n size=\"md\"\n thickness=\"2\" />\n </button>\n </ScalarTooltip>\n <span\n class=\"flex cursor-pointer items-center justify-center\"\n @click.stop.prevent=\"toggleSidebarFolder(item.entity.uid)\">\n <ScalarSidebarGroupToggle\n class=\"text-c-3 hover:text-c-1 shrink-0\"\n :open=\"Boolean(collapsedSidebarFolders[item.entity.uid])\" />\n </span>\n </div>\n </div>\n </RouterLink>\n\n <!-- Tag -->\n <button\n v-else-if=\"layout !== 'modal' || parentUids.length\"\n :aria-expanded=\"Boolean(collapsedSidebarFolders[item.entity.uid])\"\n class=\"hover:bg-b-2 group relative flex w-full flex-row justify-start gap-1.5 rounded p-1.5 focus-visible:z-10\"\n :class=\"[highlightClasses]\"\n type=\"button\"\n @click=\"toggleSidebarFolder(item.entity.uid)\">\n <span\n class=\"flex h-5 max-w-[14px] shrink-0 items-center justify-center\">\n <slot name=\"leftIcon\" />\n  \n </span>\n <div class=\"flex flex-1 flex-row justify-between\">\n <span class=\"line-clamp-1 w-full text-left font-medium break-all\">\n {{ item.title }}\n </span>\n <div class=\"relative flex h-fit items-center justify-end gap-0.5\">\n <div\n class=\"items-center gap-px opacity-0 group-hover:flex group-hover:opacity-100 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n :class=\"{\n flex: menuItem.open,\n hidden:\n !menuItem.open ||\n menuItem.item?.entity.uid !== item.entity.uid,\n }\">\n <ScalarButton\n v-if=\"\n (layout !== 'modal' && !isDraftCollection) ||\n (isDraftCollection && hasDraftRequests)\n \"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"\n (ev: MouseEvent) =>\n $emit('openMenu', {\n item,\n parentUids,\n targetRef: (ev.currentTarget as HTMLElement)\n ?.parentNode as HTMLButtonElement,\n open: true,\n })\n \">\n <ScalarIcon\n icon=\"Ellipses\"\n size=\"md\" />\n </ScalarButton>\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"hover:bg-b-3 hover:text-c-1 aspect-square h-fit px-0.5 py-0 group-focus-visible:opacity-100 group-has-[:focus-visible]:opacity-100\"\n size=\"sm\"\n variant=\"ghost\"\n @click.stop.prevent=\"addRequest(item.entity.uid)\">\n <ScalarIcon\n icon=\"Add\"\n size=\"md\"\n thickness=\"2\" />\n </ScalarButton>\n </div>\n <ScalarTooltip\n v-if=\"item.watchMode\"\n content=\"Watching: {{ item.documentUrl }}\"\n :offset=\"12\"\n placement=\"right\">\n <button\n class=\"flex items-center justify-center\"\n type=\"button\">\n <ScalarIcon\n class=\"ml-0.5 text-sm\"\n :class=\"watchIconColor\"\n icon=\"Watch\"\n size=\"md\"\n thickness=\"2\" />\n </button>\n </ScalarTooltip>\n <span\n class=\"flex cursor-pointer items-center justify-center\"\n @click.stop.prevent=\"toggleSidebarFolder(item.entity.uid)\">\n <ScalarSidebarGroupToggle\n class=\"text-c-3 hover:text-c-1 shrink-0\"\n :open=\"Boolean(collapsedSidebarFolders[item.entity.uid])\" />\n </span>\n </div>\n </div>\n </button>\n\n <!-- Children -->\n <ul v-if=\"showChildren\">\n <!-- We never want to show the first example -->\n <RequestSidebarItem\n v-for=\"childUid in item.children\"\n :key=\"childUid\"\n :isDraggable=\"!requestExamples[childUid]\"\n :isDroppable=\"_isDroppable\"\n :menuItem=\"menuItem\"\n :parentUids=\"[...parentUids, uid]\"\n :uid=\"childUid\"\n @newTab=\"(name, uid) => $emit('newTab', name, uid)\"\n @onDragEnd=\"(...args) => $emit('onDragEnd', ...args)\"\n @openMenu=\"(item) => $emit('openMenu', item)\" />\n <ScalarButton\n v-if=\"item.children.length === 0\"\n class=\"text-c-1 hover:bg-b-2 flex h-8 w-full justify-start gap-1.5 py-0 text-xs\"\n :class=\"parentUids.length ? 'pl-9' : ''\"\n variant=\"ghost\"\n @click=\"addRequest(item.entity.uid)\">\n <ScalarIcon\n icon=\"Add\"\n size=\"sm\" />\n <span>Add Request</span>\n </ScalarButton>\n </ul>\n </Draggable>\n </li>\n</template>\n<style>\n@import '@scalar/draggable/style.css';\n</style>\n<style scoped>\n.indent-border-line-offset:before {\n left: v-bind(leftOffset);\n}\n.indent-padding-left {\n padding-left: calc(v-bind(paddingOffset) + 6px);\n}\n.sidebar-folderitem :deep(.ellipsis-position) {\n right: 6px;\n transform: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarIcon,\n ScalarSearchResultItem,\n ScalarSearchResultList,\n ScalarSidebarSearchInput,\n} from '@scalar/components'\nimport { LibraryIcon } from '@scalar/icons/library'\nimport type { Collection } from '@scalar/oas-utils/entities/spec'\nimport { useToasts } from '@scalar/use-toasts'\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n reactive,\n ref,\n useId,\n watch,\n} from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Rabbit from '@/assets/rabbit.ascii?raw'\nimport RabbitJump from '@/assets/rabbitjump.ascii?raw'\nimport { Sidebar } from '@/components'\nimport EnvironmentSelector from '@/components/EnvironmentSelector/EnvironmentSelector.vue'\nimport HttpMethod from '@/components/HttpMethod/HttpMethod.vue'\nimport ScalarAsciiArt from '@/components/ScalarAsciiArt.vue'\nimport { useSearch } from '@/components/Search/useSearch'\nimport SidebarButton from '@/components/Sidebar/SidebarButton.vue'\nimport { useLayout } from '@/hooks/useLayout'\nimport { useSidebar } from '@/hooks/useSidebar'\nimport type { HotKeyEvent } from '@/libs'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { createInitialRequest } from '@/store/requests'\nimport { dragHandlerFactory } from '@/views/Request/handle-drag'\nimport RequestSidebarItemMenu from '@/views/Request/RequestSidebarItemMenu.vue'\nimport type { SidebarItem, SidebarMenuItem } from '@/views/Request/types'\n\nimport { WorkspaceDropdown } from './components'\nimport { isGettingStarted } from './RequestSection/helpers/getting-started'\nimport RequestSidebarItem from './RequestSidebarItem.vue'\n\nconst emit = defineEmits<{\n (e: 'newTab', { name, uid }: { name: string; uid: string }): void\n (e: 'clearDrafts'): void\n}>()\n\nconst { isSidebarOpen, setCollapsedSidebarFolder, toggleSidebarOpen } =\n useSidebar()\nconst { layout } = useLayout()\n\nconst workspaceContext = useWorkspace()\nconst {\n activeCollection,\n activeWorkspaceCollections,\n activeRequest,\n activeWorkspaceRequests,\n activeWorkspace,\n} = useActiveEntities()\nconst { findRequestParents, events, requestMutators, requests } =\n workspaceContext\n\nconst { handleDragEnd, isDroppable } = dragHandlerFactory(\n activeWorkspace,\n workspaceContext,\n)\nconst { replace } = useRouter()\nconst openCommandPaletteImport = () => {\n events.commandPalette.emit({\n commandName: 'Import from OpenAPI/Swagger/Postman/cURL',\n })\n}\nconst searchResultsId = useId()\nconst { toast } = useToasts()\n/** The currently selected sidebarMenuItem for the context menu */\nconst menuItem = reactive<SidebarMenuItem>({ open: false })\nconst isSearchVisible = ref(false)\n\n/** Watch to see if activeRequest changes and ensure we open any folders */\nwatch(\n activeRequest,\n (request) => {\n if (!request) {\n return\n }\n\n // Ensure the sidebar folders are open\n findRequestParents(request).forEach((uid: string) =>\n setCollapsedSidebarFolder(uid, true),\n )\n },\n { immediate: true },\n)\n\nconst {\n searchText,\n searchResultsWithPlaceholderResults,\n selectedSearchResult,\n onSearchResultClick,\n fuseSearch,\n searchInputRef,\n searchResultRefs,\n navigateSearchResults,\n selectSearchResult,\n} = useSearch()\n\nconst searchToggleRef = ref<HTMLButtonElement>()\n\n/** Handle hotkey events from the bus */\nconst handleHotKey = (event?: HotKeyEvent) => {\n if (!event) {\n return\n }\n if (event.toggleSidebar) {\n toggleSidebarOpen()\n }\n if (event.focusRequestSearch) {\n searchInputRef.value?.focus()\n }\n}\n\nonMounted(() => events.hotKeys.on(handleHotKey))\n\n/**\n * Need to manually remove listener on unmount due to vueuse memory leak\n *\n * @see https://github.com/vueuse/vueuse/issues/3498#issuecomment-2055546566\n */\nonBeforeUnmount(() => {\n events.hotKeys.off(handleHotKey)\n})\n\nconst handleToggleWatchMode = (item?: SidebarItem) => {\n if (item?.documentUrl) {\n item.watchMode = !item.watchMode\n const currentCollection = activeWorkspaceCollections.value.find(\n (collection: Collection) => collection.uid === item.entity.uid,\n )\n if (currentCollection) {\n currentCollection.watchMode = item.watchMode\n }\n }\n}\n\nwatch(\n () =>\n activeWorkspaceCollections.value.map(\n (collection: Collection) => collection.watchMode,\n ),\n (newWatchModes, oldWatchModes) => {\n newWatchModes.forEach((newWatchMode: boolean, index: number) => {\n if (\n layout !== 'modal' &&\n newWatchMode !== oldWatchModes[index] &&\n activeWorkspaceCollections.value[index]?.info?.title !== 'Drafts' &&\n activeWorkspaceCollections.value[index]\n ) {\n const currentCollection = activeWorkspaceCollections.value[index]\n if (!currentCollection) {\n return\n }\n\n const message = `${currentCollection.info?.title}: Watch Mode ${newWatchMode ? 'enabled' : 'disabled'}`\n toast(message, 'info')\n }\n })\n },\n)\n\n/** Screen reader label for the search input */\nconst srLabel = computed<string>(() => {\n const results = searchResultsWithPlaceholderResults.value\n if (!results.length) {\n return 'No results found'\n }\n\n const result = results[selectedSearchResult.value]?.item\n if (!result) {\n return 'No result selected'\n }\n\n const resultsFoundLabel = searchText.value.length\n ? `${results.length} result${results.length === 1 ? '' : 's'} found, `\n : ''\n\n const selectedResultDescription = `, HTTP Method ${result.httpVerb}, Path ${result.path}`\n\n const selectedResultLabel = `${result.title} ${selectedResultDescription}`\n\n return `${resultsFoundLabel}Selected: ${selectedResultLabel}`\n})\n\nconst handleClearDrafts = () => {\n const draftCollection = activeWorkspaceCollections.value.find(\n (collection: Collection) => collection.info?.title === 'Drafts',\n )\n\n if (draftCollection) {\n draftCollection.requests.forEach((requestUid: string) => {\n if (requests[requestUid]) {\n requestMutators.delete(requests[requestUid], draftCollection.uid)\n }\n })\n }\n\n const hasRequests = activeWorkspaceRequests.value.length\n\n // First request in the first collection\n if (hasRequests) {\n const firstCollection = activeWorkspaceCollections.value[0]\n const firstRequest = firstCollection?.requests[0]\n\n if (firstRequest) {\n replace({\n name: 'request',\n params: {\n [PathId.Request]: firstRequest,\n },\n })\n }\n }\n // Create a new request and go to it\n else {\n const { request } = createInitialRequest()\n\n if (draftCollection) {\n requestMutators.add(request, draftCollection.uid)\n\n replace({\n name: 'request',\n params: {\n [PathId.Request]: request.uid,\n },\n })\n }\n }\n}\n\nwatch(isSearchVisible, (isVisible) => {\n // If we're hiding the search, clear the text\n if (!isVisible) {\n searchText.value = ''\n }\n})\n\nconst showGettingStarted = computed(() =>\n isGettingStarted(\n activeWorkspaceCollections.value,\n activeWorkspaceRequests.value,\n requests,\n ),\n)\n\n/** We ensure in modal mode we only show the current requests collection */\nconst collections = computed(() => {\n if (layout === 'modal' && activeCollection.value) {\n return [activeCollection.value]\n }\n return activeWorkspaceCollections.value\n})\n\n/** Hide the search input if the text is empty */\nfunction handleBlur(e: FocusEvent) {\n // We have to check the blur did not come from the search toggle button\n // otherwise the search will show again form the click event\n if (!searchText.value && e.relatedTarget !== searchToggleRef.value) {\n isSearchVisible.value = false\n }\n}\n</script>\n<template>\n <Sidebar\n v-show=\"isSidebarOpen\"\n :class=\"[isSidebarOpen ? 'sidebar-active-width' : '']\">\n <template\n v-if=\"layout !== 'modal'\"\n #header />\n <template #content>\n <div class=\"bg-b-1 sticky top-0 z-20 flex h-12 items-center px-3\">\n <!-- Holds space for the sidebar toggle -->\n <div\n class=\"size-8\"\n :class=\"{ 'xl:hidden': layout !== 'modal' }\" />\n <WorkspaceDropdown v-if=\"layout !== 'modal'\" />\n <span\n v-if=\"layout !== 'modal'\"\n class=\"text-c-3\">\n /\n </span>\n <EnvironmentSelector v-if=\"layout !== 'modal'\" />\n <button\n ref=\"searchToggleRef\"\n :aria-pressed=\"isSearchVisible\"\n class=\"ml-auto\"\n type=\"button\"\n @click=\"isSearchVisible = !isSearchVisible\">\n <span class=\"sr-only\">\n {{ isSearchVisible ? 'Hide' : 'Show' }} search\n </span>\n <ScalarIcon\n class=\"text-c-3 hover:bg-b-2 max-h-8 max-w-8 rounded-lg p-1.75 text-sm\"\n icon=\"Search\" />\n </button>\n </div>\n <div\n v-if=\"isSearchVisible\"\n class=\"search-button-fade sticky top-12 z-10 px-3 py-2.5 pt-0 focus-within:z-20\"\n role=\"search\">\n <ScalarSidebarSearchInput\n ref=\"searchInputRef\"\n v-model=\"searchText\"\n autofocus\n :aria-controls=\"searchResultsId\"\n :label=\"srLabel\"\n @input=\"fuseSearch\"\n @keydown.down.stop=\"navigateSearchResults('down')\"\n @keydown.enter.stop=\"selectSearchResult()\"\n @keydown.up.stop=\"navigateSearchResults('up')\"\n @blur=\"handleBlur\" />\n </div>\n <div\n class=\"gap-1/2 flex flex-1 flex-col overflow-visible overflow-y-auto px-3 pt-0 pb-3\"\n :class=\"[\n {\n 'pb-14': layout !== 'modal',\n },\n {\n 'h-[calc(100%-273.5px)]': showGettingStarted,\n },\n ]\"\n @dragenter.prevent\n @dragover.prevent>\n <template v-if=\"searchText\">\n <ScalarSearchResultList\n :id=\"searchResultsId\"\n aria-label=\"Search Results\"\n class=\"gap-px\"\n :noResults=\"!searchResultsWithPlaceholderResults.length\">\n <ScalarSearchResultItem\n v-for=\"(entry, index) in searchResultsWithPlaceholderResults\"\n :id=\"`#search-input-${entry.item.id}`\"\n :key=\"entry.refIndex\"\n :ref=\"(el) => (searchResultRefs[index] = el as HTMLElement)\"\n :selected=\"selectedSearchResult === index\"\n class=\"px-2\"\n :href=\"entry.item.link\"\n @click.prevent=\"onSearchResultClick(entry)\"\n @focus=\"selectedSearchResult = index\">\n {{ entry.item.title }}\n <template #addon>\n <span class=\"sr-only\">HTTP Method:</span>\n <HttpMethod\n class=\"font-bold\"\n :method=\"entry.item.httpVerb ?? 'get'\" />\n </template>\n </ScalarSearchResultItem>\n </ScalarSearchResultList>\n </template>\n <nav\n v-else\n class=\"contents\">\n <!-- Collection -->\n <RequestSidebarItem\n v-for=\"collection in collections\"\n :key=\"collection.uid\"\n :isDraggable=\"\n layout !== 'modal' && collection.info?.title !== 'Drafts'\n \"\n :isDroppable=\"isDroppable\"\n :menuItem=\"menuItem\"\n :parentUids=\"[]\"\n :uid=\"collection.uid\"\n @newTab=\"(name, uid) => emit('newTab', { name, uid })\"\n @onDragEnd=\"handleDragEnd\"\n @openMenu=\"(item) => Object.assign(menuItem, item)\">\n <template #leftIcon>\n <ScalarIcon\n v-if=\"collection.info?.title === 'Drafts'\"\n class=\"text-sidebar-c-2\"\n icon=\"Scribble\"\n thickness=\"2.25\" />\n <LibraryIcon\n v-else\n class=\"text-sidebar-c-2 size-3.5 min-w-3.5 stroke-2\"\n :src=\"\n collection['x-scalar-icon'] || 'interface-content-folder'\n \" />\n </template>\n </RequestSidebarItem>\n </nav>\n </div>\n </template>\n <template #button>\n <div\n :class=\"{\n 'empty-sidebar-item': showGettingStarted,\n }\">\n <div\n v-if=\"showGettingStarted\"\n class=\"empty-sidebar-item-content px-2.5 py-2.5\">\n <div class=\"rabbit-ascii relative m-auto mt-2 h-[68px] w-[60px]\">\n <ScalarAsciiArt\n :art=\"Rabbit\"\n class=\"rabbitsit font-bold\" />\n <ScalarAsciiArt\n :art=\"RabbitJump\"\n class=\"rabbitjump absolute top-0 left-0 font-bold\" />\n </div>\n <div class=\"mt-2 mb-2 text-center text-sm text-balance\">\n <b class=\"font-medium\">Let's Get Started</b>\n <p class=\"mt-2\">\n Create request, folder, collection or import from OpenAPI/Postman\n </p>\n </div>\n </div>\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"mb-1.5 hidden h-fit w-full p-1.5 opacity-0\"\n :class=\"{\n 'flex opacity-100': showGettingStarted,\n }\"\n @click=\"openCommandPaletteImport\">\n Import Collection\n </ScalarButton>\n <SidebarButton\n v-if=\"layout !== 'modal'\"\n :click=\"events.commandPalette.emit\"\n hotkey=\"K\">\n <template #title> Add Item </template>\n </SidebarButton>\n </div>\n </template>\n </Sidebar>\n\n <!-- Menu -->\n <RequestSidebarItemMenu\n v-if=\"layout !== 'modal' && menuItem\"\n :menuItem=\"menuItem\"\n @clearDrafts=\"handleClearDrafts\"\n @closeMenu=\"menuItem.open = false\"\n @toggleWatchMode=\"handleToggleWatchMode\" />\n</template>\n<style scoped>\n.search-button-fade {\n background: linear-gradient(\n var(--scalar-background-1) 32px,\n color-mix(in srgb, var(--scalar-background-1), transparent) 38px,\n transparent\n );\n}\n.empty-sidebar-item-content {\n display: none;\n}\n.empty-sidebar-item .empty-sidebar-item-content {\n display: block;\n}\n.rabbitjump {\n opacity: 0;\n}\n.empty-sidebar-item:hover .rabbitjump {\n opacity: 1;\n animation: rabbitAnimation 0.5s steps(1) infinite;\n}\n.empty-sidebar-item:hover .rabbitsit {\n opacity: 0;\n animation: rabbitAnimation2 0.5s steps(1) infinite;\n}\n.empty-sidebar-item:hover .rabbit-ascii {\n animation: rabbitRun 8s infinite linear;\n}\n@keyframes rabbitRun {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 25% {\n transform: translate3d(250px, 0, 0);\n }\n 25.01% {\n transform: translate3d(-250px, 0, 0);\n }\n 75% {\n transform: translate3d(250px, 0, 0);\n }\n 75.01% {\n transform: translate3d(-250px, 0, 0);\n }\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes rabbitAnimation {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n}\n@keyframes rabbitAnimation2 {\n 0%,\n 100% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n transform: translate3d(0, -8px, 0);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n ScalarButton,\n ScalarIcon,\n ScalarSearchResultItem,\n ScalarSearchResultList,\n ScalarSidebarSearchInput,\n} from '@scalar/components'\nimport { LibraryIcon } from '@scalar/icons/library'\nimport type { Collection } from '@scalar/oas-utils/entities/spec'\nimport { useToasts } from '@scalar/use-toasts'\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n reactive,\n ref,\n useId,\n watch,\n} from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport Rabbit from '@/assets/rabbit.ascii?raw'\nimport RabbitJump from '@/assets/rabbitjump.ascii?raw'\nimport { Sidebar } from '@/components'\nimport EnvironmentSelector from '@/components/EnvironmentSelector/EnvironmentSelector.vue'\nimport HttpMethod from '@/components/HttpMethod/HttpMethod.vue'\nimport ScalarAsciiArt from '@/components/ScalarAsciiArt.vue'\nimport { useSearch } from '@/components/Search/useSearch'\nimport SidebarButton from '@/components/Sidebar/SidebarButton.vue'\nimport { useLayout } from '@/hooks/useLayout'\nimport { useSidebar } from '@/hooks/useSidebar'\nimport type { HotKeyEvent } from '@/libs'\nimport { PathId } from '@/routes'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { createInitialRequest } from '@/store/requests'\nimport { dragHandlerFactory } from '@/views/Request/handle-drag'\nimport RequestSidebarItemMenu from '@/views/Request/RequestSidebarItemMenu.vue'\nimport type { SidebarItem, SidebarMenuItem } from '@/views/Request/types'\n\nimport { WorkspaceDropdown } from './components'\nimport { isGettingStarted } from './RequestSection/helpers/getting-started'\nimport RequestSidebarItem from './RequestSidebarItem.vue'\n\nconst emit = defineEmits<{\n (e: 'newTab', { name, uid }: { name: string; uid: string }): void\n (e: 'clearDrafts'): void\n}>()\n\nconst { isSidebarOpen, setCollapsedSidebarFolder, toggleSidebarOpen } =\n useSidebar()\nconst { layout } = useLayout()\n\nconst workspaceContext = useWorkspace()\nconst {\n activeCollection,\n activeWorkspaceCollections,\n activeRequest,\n activeWorkspaceRequests,\n activeWorkspace,\n} = useActiveEntities()\nconst { findRequestParents, events, requestMutators, requests } =\n workspaceContext\n\nconst { handleDragEnd, isDroppable } = dragHandlerFactory(\n activeWorkspace,\n workspaceContext,\n)\nconst { replace } = useRouter()\nconst openCommandPaletteImport = () => {\n events.commandPalette.emit({\n commandName: 'Import from OpenAPI/Swagger/Postman/cURL',\n })\n}\nconst searchResultsId = useId()\nconst { toast } = useToasts()\n/** The currently selected sidebarMenuItem for the context menu */\nconst menuItem = reactive<SidebarMenuItem>({ open: false })\nconst isSearchVisible = ref(false)\n\n/** Watch to see if activeRequest changes and ensure we open any folders */\nwatch(\n activeRequest,\n (request) => {\n if (!request) {\n return\n }\n\n // Ensure the sidebar folders are open\n findRequestParents(request).forEach((uid: string) =>\n setCollapsedSidebarFolder(uid, true),\n )\n },\n { immediate: true },\n)\n\nconst {\n searchText,\n searchResultsWithPlaceholderResults,\n selectedSearchResult,\n onSearchResultClick,\n fuseSearch,\n searchInputRef,\n searchResultRefs,\n navigateSearchResults,\n selectSearchResult,\n} = useSearch()\n\nconst searchToggleRef = ref<HTMLButtonElement>()\n\n/** Handle hotkey events from the bus */\nconst handleHotKey = (event?: HotKeyEvent) => {\n if (!event) {\n return\n }\n if (event.toggleSidebar) {\n toggleSidebarOpen()\n }\n if (event.focusRequestSearch) {\n searchInputRef.value?.focus()\n }\n}\n\nonMounted(() => events.hotKeys.on(handleHotKey))\n\n/**\n * Need to manually remove listener on unmount due to vueuse memory leak\n *\n * @see https://github.com/vueuse/vueuse/issues/3498#issuecomment-2055546566\n */\nonBeforeUnmount(() => {\n events.hotKeys.off(handleHotKey)\n})\n\nconst handleToggleWatchMode = (item?: SidebarItem) => {\n if (item?.documentUrl) {\n item.watchMode = !item.watchMode\n const currentCollection = activeWorkspaceCollections.value.find(\n (collection: Collection) => collection.uid === item.entity.uid,\n )\n if (currentCollection) {\n currentCollection.watchMode = item.watchMode\n }\n }\n}\n\nwatch(\n () =>\n activeWorkspaceCollections.value.map(\n (collection: Collection) => collection.watchMode,\n ),\n (newWatchModes, oldWatchModes) => {\n newWatchModes.forEach((newWatchMode: boolean, index: number) => {\n if (\n layout !== 'modal' &&\n newWatchMode !== oldWatchModes[index] &&\n activeWorkspaceCollections.value[index]?.info?.title !== 'Drafts' &&\n activeWorkspaceCollections.value[index]\n ) {\n const currentCollection = activeWorkspaceCollections.value[index]\n if (!currentCollection) {\n return\n }\n\n const message = `${currentCollection.info?.title}: Watch Mode ${newWatchMode ? 'enabled' : 'disabled'}`\n toast(message, 'info')\n }\n })\n },\n)\n\n/** Screen reader label for the search input */\nconst srLabel = computed<string>(() => {\n const results = searchResultsWithPlaceholderResults.value\n if (!results.length) {\n return 'No results found'\n }\n\n const result = results[selectedSearchResult.value]?.item\n if (!result) {\n return 'No result selected'\n }\n\n const resultsFoundLabel = searchText.value.length\n ? `${results.length} result${results.length === 1 ? '' : 's'} found, `\n : ''\n\n const selectedResultDescription = `, HTTP Method ${result.httpVerb}, Path ${result.path}`\n\n const selectedResultLabel = `${result.title} ${selectedResultDescription}`\n\n return `${resultsFoundLabel}Selected: ${selectedResultLabel}`\n})\n\nconst handleClearDrafts = () => {\n const draftCollection = activeWorkspaceCollections.value.find(\n (collection: Collection) => collection.info?.title === 'Drafts',\n )\n\n if (draftCollection) {\n draftCollection.requests.forEach((requestUid: string) => {\n if (requests[requestUid]) {\n requestMutators.delete(requests[requestUid], draftCollection.uid)\n }\n })\n }\n\n const hasRequests = activeWorkspaceRequests.value.length\n\n // First request in the first collection\n if (hasRequests) {\n const firstCollection = activeWorkspaceCollections.value[0]\n const firstRequest = firstCollection?.requests[0]\n\n if (firstRequest) {\n replace({\n name: 'request',\n params: {\n [PathId.Request]: firstRequest,\n },\n })\n }\n }\n // Create a new request and go to it\n else {\n const { request } = createInitialRequest()\n\n if (draftCollection) {\n requestMutators.add(request, draftCollection.uid)\n\n replace({\n name: 'request',\n params: {\n [PathId.Request]: request.uid,\n },\n })\n }\n }\n}\n\nwatch(isSearchVisible, (isVisible) => {\n // If we're hiding the search, clear the text\n if (!isVisible) {\n searchText.value = ''\n }\n})\n\nconst showGettingStarted = computed(() =>\n isGettingStarted(\n activeWorkspaceCollections.value,\n activeWorkspaceRequests.value,\n requests,\n ),\n)\n\n/** We ensure in modal mode we only show the current requests collection */\nconst collections = computed(() => {\n if (layout === 'modal' && activeCollection.value) {\n return [activeCollection.value]\n }\n return activeWorkspaceCollections.value\n})\n\n/** Hide the search input if the text is empty */\nfunction handleBlur(e: FocusEvent) {\n // We have to check the blur did not come from the search toggle button\n // otherwise the search will show again form the click event\n if (!searchText.value && e.relatedTarget !== searchToggleRef.value) {\n isSearchVisible.value = false\n }\n}\n</script>\n<template>\n <Sidebar\n v-show=\"isSidebarOpen\"\n :class=\"[isSidebarOpen ? 'sidebar-active-width' : '']\">\n <template\n v-if=\"layout !== 'modal'\"\n #header />\n <template #content>\n <div class=\"bg-b-1 sticky top-0 z-20 flex h-12 items-center px-3\">\n <!-- Holds space for the sidebar toggle -->\n <div\n class=\"size-8\"\n :class=\"{ 'xl:hidden': layout !== 'modal' }\" />\n <WorkspaceDropdown v-if=\"layout !== 'modal'\" />\n <span\n v-if=\"layout !== 'modal'\"\n class=\"text-c-3\">\n /\n </span>\n <EnvironmentSelector v-if=\"layout !== 'modal'\" />\n <button\n ref=\"searchToggleRef\"\n :aria-pressed=\"isSearchVisible\"\n class=\"ml-auto\"\n type=\"button\"\n @click=\"isSearchVisible = !isSearchVisible\">\n <span class=\"sr-only\">\n {{ isSearchVisible ? 'Hide' : 'Show' }} search\n </span>\n <ScalarIcon\n class=\"text-c-3 hover:bg-b-2 max-h-8 max-w-8 rounded-lg p-1.75 text-sm\"\n icon=\"Search\" />\n </button>\n </div>\n <div\n v-if=\"isSearchVisible\"\n class=\"search-button-fade sticky top-12 z-10 px-3 py-2.5 pt-0 focus-within:z-20\"\n role=\"search\">\n <ScalarSidebarSearchInput\n ref=\"searchInputRef\"\n v-model=\"searchText\"\n autofocus\n :aria-controls=\"searchResultsId\"\n :label=\"srLabel\"\n @input=\"fuseSearch\"\n @keydown.down.stop=\"navigateSearchResults('down')\"\n @keydown.enter.stop=\"selectSearchResult()\"\n @keydown.up.stop=\"navigateSearchResults('up')\"\n @blur=\"handleBlur\" />\n </div>\n <div\n class=\"gap-1/2 flex flex-1 flex-col overflow-visible overflow-y-auto px-3 pt-0 pb-3\"\n :class=\"[\n {\n 'pb-14': layout !== 'modal',\n },\n {\n 'h-[calc(100%-273.5px)]': showGettingStarted,\n },\n ]\"\n @dragenter.prevent\n @dragover.prevent>\n <template v-if=\"searchText\">\n <ScalarSearchResultList\n :id=\"searchResultsId\"\n aria-label=\"Search Results\"\n class=\"gap-px\"\n :noResults=\"!searchResultsWithPlaceholderResults.length\">\n <ScalarSearchResultItem\n v-for=\"(entry, index) in searchResultsWithPlaceholderResults\"\n :id=\"`#search-input-${entry.item.id}`\"\n :key=\"entry.refIndex\"\n :ref=\"(el) => (searchResultRefs[index] = el as HTMLElement)\"\n :selected=\"selectedSearchResult === index\"\n class=\"px-2\"\n :href=\"entry.item.link\"\n @click.prevent=\"onSearchResultClick(entry)\"\n @focus=\"selectedSearchResult = index\">\n {{ entry.item.title }}\n <template #addon>\n <span class=\"sr-only\">HTTP Method:</span>\n <HttpMethod\n class=\"font-bold\"\n :method=\"entry.item.httpVerb ?? 'get'\" />\n </template>\n </ScalarSearchResultItem>\n </ScalarSearchResultList>\n </template>\n <nav\n v-else\n class=\"contents\">\n <!-- Collection -->\n <RequestSidebarItem\n v-for=\"collection in collections\"\n :key=\"collection.uid\"\n :isDraggable=\"\n layout !== 'modal' && collection.info?.title !== 'Drafts'\n \"\n :isDroppable=\"isDroppable\"\n :menuItem=\"menuItem\"\n :parentUids=\"[]\"\n :uid=\"collection.uid\"\n @newTab=\"(name, uid) => emit('newTab', { name, uid })\"\n @onDragEnd=\"handleDragEnd\"\n @openMenu=\"(item) => Object.assign(menuItem, item)\">\n <template #leftIcon>\n <ScalarIcon\n v-if=\"collection.info?.title === 'Drafts'\"\n class=\"text-sidebar-c-2\"\n icon=\"Scribble\"\n thickness=\"2.25\" />\n <LibraryIcon\n v-else\n class=\"text-sidebar-c-2 size-3.5 min-w-3.5 stroke-2\"\n :src=\"\n collection['x-scalar-icon'] || 'interface-content-folder'\n \" />\n </template>\n </RequestSidebarItem>\n </nav>\n </div>\n </template>\n <template #button>\n <div\n :class=\"{\n 'empty-sidebar-item': showGettingStarted,\n }\">\n <div\n v-if=\"showGettingStarted\"\n class=\"empty-sidebar-item-content px-2.5 py-2.5\">\n <div class=\"rabbit-ascii relative m-auto mt-2 h-[68px] w-[60px]\">\n <ScalarAsciiArt\n :art=\"Rabbit\"\n class=\"rabbitsit font-bold\" />\n <ScalarAsciiArt\n :art=\"RabbitJump\"\n class=\"rabbitjump absolute top-0 left-0 font-bold\" />\n </div>\n <div class=\"mt-2 mb-2 text-center text-sm text-balance\">\n <b class=\"font-medium\">Let's Get Started</b>\n <p class=\"mt-2\">\n Create request, folder, collection or import from OpenAPI/Postman\n </p>\n </div>\n </div>\n <ScalarButton\n v-if=\"layout !== 'modal'\"\n class=\"mb-1.5 hidden h-fit w-full p-1.5 opacity-0\"\n :class=\"{\n 'flex opacity-100': showGettingStarted,\n }\"\n @click=\"openCommandPaletteImport\">\n Import Collection\n </ScalarButton>\n <SidebarButton\n v-if=\"layout !== 'modal'\"\n :click=\"events.commandPalette.emit\"\n hotkey=\"K\">\n <template #title> Add Item </template>\n </SidebarButton>\n </div>\n </template>\n </Sidebar>\n\n <!-- Menu -->\n <RequestSidebarItemMenu\n v-if=\"layout !== 'modal' && menuItem\"\n :menuItem=\"menuItem\"\n @clearDrafts=\"handleClearDrafts\"\n @closeMenu=\"menuItem.open = false\"\n @toggleWatchMode=\"handleToggleWatchMode\" />\n</template>\n<style scoped>\n.search-button-fade {\n background: linear-gradient(\n var(--scalar-background-1) 32px,\n color-mix(in srgb, var(--scalar-background-1), transparent) 38px,\n transparent\n );\n}\n.empty-sidebar-item-content {\n display: none;\n}\n.empty-sidebar-item .empty-sidebar-item-content {\n display: block;\n}\n.rabbitjump {\n opacity: 0;\n}\n.empty-sidebar-item:hover .rabbitjump {\n opacity: 1;\n animation: rabbitAnimation 0.5s steps(1) infinite;\n}\n.empty-sidebar-item:hover .rabbitsit {\n opacity: 0;\n animation: rabbitAnimation2 0.5s steps(1) infinite;\n}\n.empty-sidebar-item:hover .rabbit-ascii {\n animation: rabbitRun 8s infinite linear;\n}\n@keyframes rabbitRun {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 25% {\n transform: translate3d(250px, 0, 0);\n }\n 25.01% {\n transform: translate3d(-250px, 0, 0);\n }\n 75% {\n transform: translate3d(250px, 0, 0);\n }\n 75.01% {\n transform: translate3d(-250px, 0, 0);\n }\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes rabbitAnimation {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n}\n@keyframes rabbitAnimation2 {\n 0%,\n 100% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n transform: translate3d(0, -8px, 0);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport { safeJSON } from '@scalar/object-utils/parse'\nimport { useToasts } from '@scalar/use-toasts'\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { RouterView } from 'vue-router'\n\nimport SidebarToggle from '@/components/Sidebar/SidebarToggle.vue'\nimport { useLayout } from '@/hooks'\nimport { useAnalytics } from '@/hooks/useAnalytics'\nimport { useClientConfig } from '@/hooks/useClientConfig'\nimport { useSidebar } from '@/hooks/useSidebar'\nimport { ERRORS } from '@/libs'\nimport { createRequestOperation } from '@/libs/send-request'\nimport type { SendRequestResult } from '@/libs/send-request/create-request-operation'\nimport {\n validateParameters,\n type ValidationResult,\n} from '@/libs/validate-parameters'\nimport { usePluginManager } from '@/plugins'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { useOpenApiWatcher } from '@/views/Request/hooks/useOpenApiWatcher'\n\nimport RequestSidebar from './RequestSidebar.vue'\n\ndefineEmits<(e: 'newTab', item: { name: string; uid: string }) => void>()\nconst workspaceContext = useWorkspace()\nconst { toast } = useToasts()\nconst { layout } = useLayout()\nconst config = useClientConfig()\nconst { isSidebarOpen } = useSidebar()\nconst analytics = useAnalytics()\n\nconst {\n activeCollection,\n activeExample,\n activeEnvironment,\n activeRequest,\n activeWorkspace,\n activeServer,\n} = useActiveEntities()\nconst {\n cookies,\n requestHistory,\n showSidebar,\n securitySchemes,\n modalState,\n events,\n} = workspaceContext\n\nconst pluginManager = usePluginManager()\n\n/** Root element (bound in template via ref=\"_element\") */\nconst _element = ref<HTMLDivElement>()\nvoid _element\n\nconst requestAbortController = ref<AbortController>()\n/** Computed Validation State Update on Example Change */\nconst validation = computed<ValidationResult>(() =>\n validateParameters(activeExample.value ?? null),\n)\nconst requestResult = ref<SendRequestResult | null>(null)\n\n/**\n * Selected scheme UIDs\n *\n * In the modal we use collection.selectedSecuritySchemes and in the\n * standalone client we use request.selectedSecuritySchemeUids\n *\n * These are centralized here so they can be drilled down AND used in send-request\n */\nconst selectedSecuritySchemeUids = computed(\n () =>\n (activeCollection.value?.useCollectionSecurity\n ? activeCollection.value?.selectedSecuritySchemeUids\n : activeRequest.value?.selectedSecuritySchemeUids) ?? [],\n)\n\n/**\n * Execute the request\n * called from the send button as well as keyboard shortcuts\n */\nconst executeRequest = async () => {\n if (!activeRequest.value || !activeExample.value || !activeCollection.value) {\n return\n }\n\n // Block request if there are empty required path parameters\n if (validation.value.hasBlockingErrors) {\n toast('Path parameters must have values.', 'error')\n events.requestStatus.emit('abort')\n return\n }\n\n const environmentValue =\n typeof activeEnvironment.value === 'object'\n ? activeEnvironment.value.value\n : '{}'\n const e = safeJSON.parse(environmentValue)\n if (e.error) {\n console.error('INVALID ENVIRONMENT!')\n }\n const environment =\n e.error || typeof e.data !== 'object' ? {} : (e.data ?? {})\n\n const globalCookies =\n activeWorkspace.value?.cookies.map((c) => cookies[c]).filter(isDefined) ??\n []\n\n const server =\n activeCollection.value?.info?.title === 'Drafts'\n ? undefined\n : activeServer.value\n\n const [error, requestOperation] = createRequestOperation({\n request: activeRequest.value,\n example: activeExample.value,\n selectedSecuritySchemeUids: selectedSecuritySchemeUids.value,\n proxyUrl: activeWorkspace.value?.proxyUrl ?? '',\n environment,\n globalCookies,\n status: events.requestStatus,\n securitySchemes: securitySchemes,\n server,\n pluginManager,\n })\n\n // Call the onRequestSent callback if it exists\n config.value?.onRequestSent?.(activeRequest.value.path ?? '')\n\n // Error from createRequestOperation\n if (error) {\n toast(error.message, 'error')\n return\n }\n\n requestAbortController.value = requestOperation.controller\n const [sendRequestError, result] = await requestOperation.sendRequest()\n\n // Store the result to share it with child components\n requestResult.value = result\n\n // Send error toast\n if (sendRequestError) {\n toast(sendRequestError.message, 'error')\n } else {\n // We need to deep clone the result because it's a ref and updates will break the history\n requestHistory.push(cloneRequestResult(result))\n }\n}\n\n/** Cancel a live request */\nconst cancelRequest = async () =>\n requestAbortController.value?.abort(ERRORS.REQUEST_ABORTED)\n\n/** Subscribed to executeRequest, used for logging / analytics. */\nfunction logRequest() {\n analytics?.capture('client-send-request')\n}\n\n/**\n * Cancel request when closing the modal\n * @see https://github.com/scalar/scalar/issues/7115\n */\nwatch(modalState, ({ open }) => {\n if (!open) {\n void cancelRequest()\n }\n})\n\nonMounted(() => {\n events.executeRequest.on(executeRequest)\n events.executeRequest.on(logRequest)\n events.cancelRequest.on(cancelRequest)\n})\n\nuseOpenApiWatcher()\n\n/**\n * Need to manually remove listener on unmount due to vueuse memory leak\n *\n * @see https://github.com/vueuse/vueuse/issues/3498#issuecomment-2055546566\n */\nonBeforeUnmount(() => {\n events.executeRequest.off(executeRequest)\n events.executeRequest.off(logRequest)\n events.cancelRequest.off(cancelRequest)\n})\n\nconst cloneRequestResult = (result: any) => {\n // Create a structured clone that can handle Blobs, ArrayBuffers, etc.\n try {\n return structuredClone(result)\n } catch {\n // Fallback to a custom cloning approach if structuredClone fails\n // or isn't available in the environment\n const clone = { ...result }\n\n // Handle response data specifically\n if (result.response?.data) {\n // If it's a Blob/File/ArrayBuffer, store a reference\n if (\n result.response.data instanceof Blob ||\n result.response.data instanceof ArrayBuffer\n ) {\n clone.response.data = result.response.data\n } else {\n // For regular objects, do a deep clone\n clone.response.data = JSON.parse(JSON.stringify(result.response.data))\n }\n }\n\n return clone\n }\n}\n</script>\n\n<template>\n <!-- Layout -->\n <div\n ref=\"_element\"\n class=\"bg-b-1 relative z-0 flex h-full flex-1 flex-col overflow-hidden pt-0\"\n :class=\"{\n '!mr-0 !mb-0 !border-0': layout === 'modal',\n }\">\n <SidebarToggle\n v-if=\"showSidebar\"\n v-model=\"isSidebarOpen\"\n class=\"absolute top-2 left-3 z-50\"\n :class=\"[\n { hidden: isSidebarOpen },\n { 'xl:!flex': !isSidebarOpen },\n { '!flex': layout === 'modal' },\n ]\" />\n <div class=\"flex h-full\">\n <!-- Sidebar -->\n <RequestSidebar\n v-if=\"showSidebar\"\n @newTab=\"$emit('newTab', $event)\" />\n\n <!-- Content -->\n <div class=\"flex h-full flex-1 flex-col\">\n <RouterView\n :invalidParams=\"validation.invalidParams\"\n :requestResult=\"requestResult\"\n :selectedSecuritySchemeUids=\"selectedSecuritySchemeUids\" />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.request-text-color-text {\n color: var(--scalar-color-1);\n background: linear-gradient(\n var(--scalar-background-1),\n var(--scalar-background-3)\n );\n box-shadow: 0 0 0 1px var(--scalar-border-color);\n}\n@media screen and (max-width: 800px) {\n .sidebar-active-hide-layout {\n display: none;\n }\n .sidebar-active-width {\n width: 100%;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport { safeJSON } from '@scalar/object-utils/parse'\nimport { useToasts } from '@scalar/use-toasts'\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { RouterView } from 'vue-router'\n\nimport SidebarToggle from '@/components/Sidebar/SidebarToggle.vue'\nimport { useLayout } from '@/hooks'\nimport { useAnalytics } from '@/hooks/useAnalytics'\nimport { useClientConfig } from '@/hooks/useClientConfig'\nimport { useSidebar } from '@/hooks/useSidebar'\nimport { ERRORS } from '@/libs'\nimport { createRequestOperation } from '@/libs/send-request'\nimport type { SendRequestResult } from '@/libs/send-request/create-request-operation'\nimport {\n validateParameters,\n type ValidationResult,\n} from '@/libs/validate-parameters'\nimport { usePluginManager } from '@/plugins'\nimport { useWorkspace } from '@/store'\nimport { useActiveEntities } from '@/store/active-entities'\nimport { useOpenApiWatcher } from '@/views/Request/hooks/useOpenApiWatcher'\n\nimport RequestSidebar from './RequestSidebar.vue'\n\ndefineEmits<(e: 'newTab', item: { name: string; uid: string }) => void>()\nconst workspaceContext = useWorkspace()\nconst { toast } = useToasts()\nconst { layout } = useLayout()\nconst config = useClientConfig()\nconst { isSidebarOpen } = useSidebar()\nconst analytics = useAnalytics()\n\nconst {\n activeCollection,\n activeExample,\n activeEnvironment,\n activeRequest,\n activeWorkspace,\n activeServer,\n} = useActiveEntities()\nconst {\n cookies,\n requestHistory,\n showSidebar,\n securitySchemes,\n modalState,\n events,\n} = workspaceContext\n\nconst pluginManager = usePluginManager()\n\n/** Root element (bound in template via ref=\"_element\") */\nconst _element = ref<HTMLDivElement>()\nvoid _element\n\nconst requestAbortController = ref<AbortController>()\n/** Computed Validation State Update on Example Change */\nconst validation = computed<ValidationResult>(() =>\n validateParameters(activeExample.value ?? null),\n)\nconst requestResult = ref<SendRequestResult | null>(null)\n\n/**\n * Selected scheme UIDs\n *\n * In the modal we use collection.selectedSecuritySchemes and in the\n * standalone client we use request.selectedSecuritySchemeUids\n *\n * These are centralized here so they can be drilled down AND used in send-request\n */\nconst selectedSecuritySchemeUids = computed(\n () =>\n (activeCollection.value?.useCollectionSecurity\n ? activeCollection.value?.selectedSecuritySchemeUids\n : activeRequest.value?.selectedSecuritySchemeUids) ?? [],\n)\n\n/**\n * Execute the request\n * called from the send button as well as keyboard shortcuts\n */\nconst executeRequest = async () => {\n if (!activeRequest.value || !activeExample.value || !activeCollection.value) {\n return\n }\n\n // Block request if there are empty required path parameters\n if (validation.value.hasBlockingErrors) {\n toast('Path parameters must have values.', 'error')\n events.requestStatus.emit('abort')\n return\n }\n\n const environmentValue =\n typeof activeEnvironment.value === 'object'\n ? activeEnvironment.value.value\n : '{}'\n const e = safeJSON.parse(environmentValue)\n if (e.error) {\n console.error('INVALID ENVIRONMENT!')\n }\n const environment =\n e.error || typeof e.data !== 'object' ? {} : (e.data ?? {})\n\n const globalCookies =\n activeWorkspace.value?.cookies.map((c) => cookies[c]).filter(isDefined) ??\n []\n\n const server =\n activeCollection.value?.info?.title === 'Drafts'\n ? undefined\n : activeServer.value\n\n const [error, requestOperation] = createRequestOperation({\n request: activeRequest.value,\n example: activeExample.value,\n selectedSecuritySchemeUids: selectedSecuritySchemeUids.value,\n proxyUrl: activeWorkspace.value?.proxyUrl ?? '',\n environment,\n globalCookies,\n status: events.requestStatus,\n securitySchemes: securitySchemes,\n server,\n pluginManager,\n })\n\n // Call the onRequestSent callback if it exists\n config.value?.onRequestSent?.(activeRequest.value.path ?? '')\n\n // Error from createRequestOperation\n if (error) {\n toast(error.message, 'error')\n return\n }\n\n requestAbortController.value = requestOperation.controller\n const [sendRequestError, result] = await requestOperation.sendRequest()\n\n // Store the result to share it with child components\n requestResult.value = result\n\n // Send error toast\n if (sendRequestError) {\n toast(sendRequestError.message, 'error')\n } else {\n // We need to deep clone the result because it's a ref and updates will break the history\n requestHistory.push(cloneRequestResult(result))\n }\n}\n\n/** Cancel a live request */\nconst cancelRequest = async () =>\n requestAbortController.value?.abort(ERRORS.REQUEST_ABORTED)\n\n/** Subscribed to executeRequest, used for logging / analytics. */\nfunction logRequest() {\n analytics?.capture('client-send-request')\n}\n\n/**\n * Cancel request when closing the modal\n * @see https://github.com/scalar/scalar/issues/7115\n */\nwatch(modalState, ({ open }) => {\n if (!open) {\n void cancelRequest()\n }\n})\n\nonMounted(() => {\n events.executeRequest.on(executeRequest)\n events.executeRequest.on(logRequest)\n events.cancelRequest.on(cancelRequest)\n})\n\nuseOpenApiWatcher()\n\n/**\n * Need to manually remove listener on unmount due to vueuse memory leak\n *\n * @see https://github.com/vueuse/vueuse/issues/3498#issuecomment-2055546566\n */\nonBeforeUnmount(() => {\n events.executeRequest.off(executeRequest)\n events.executeRequest.off(logRequest)\n events.cancelRequest.off(cancelRequest)\n})\n\nconst cloneRequestResult = (result: any) => {\n // Create a structured clone that can handle Blobs, ArrayBuffers, etc.\n try {\n return structuredClone(result)\n } catch {\n // Fallback to a custom cloning approach if structuredClone fails\n // or isn't available in the environment\n const clone = { ...result }\n\n // Handle response data specifically\n if (result.response?.data) {\n // If it's a Blob/File/ArrayBuffer, store a reference\n if (\n result.response.data instanceof Blob ||\n result.response.data instanceof ArrayBuffer\n ) {\n clone.response.data = result.response.data\n } else {\n // For regular objects, do a deep clone\n clone.response.data = JSON.parse(JSON.stringify(result.response.data))\n }\n }\n\n return clone\n }\n}\n</script>\n\n<template>\n <!-- Layout -->\n <div\n ref=\"_element\"\n class=\"bg-b-1 relative z-0 flex h-full flex-1 flex-col overflow-hidden pt-0\"\n :class=\"{\n '!mr-0 !mb-0 !border-0': layout === 'modal',\n }\">\n <SidebarToggle\n v-if=\"showSidebar\"\n v-model=\"isSidebarOpen\"\n class=\"absolute top-2 left-3 z-50\"\n :class=\"[\n { hidden: isSidebarOpen },\n { 'xl:!flex': !isSidebarOpen },\n { '!flex': layout === 'modal' },\n ]\" />\n <div class=\"flex h-full\">\n <!-- Sidebar -->\n <RequestSidebar\n v-if=\"showSidebar\"\n @newTab=\"$emit('newTab', $event)\" />\n\n <!-- Content -->\n <div class=\"flex h-full flex-1 flex-col\">\n <RouterView\n :invalidParams=\"validation.invalidParams\"\n :requestResult=\"requestResult\"\n :selectedSecuritySchemeUids=\"selectedSecuritySchemeUids\" />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.request-text-color-text {\n color: var(--scalar-color-1);\n background: linear-gradient(\n var(--scalar-background-1),\n var(--scalar-background-3)\n );\n box-shadow: 0 0 0 1px var(--scalar-border-color);\n}\n@media screen and (max-width: 800px) {\n .sidebar-active-hide-layout {\n display: none;\n }\n .sidebar-active-width {\n width: 100%;\n }\n}\n</style>\n"],"mappings":"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"}
|