@scalar/api-client 2.42.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README.md +82 -74
- package/dist/components/HttpMethod/HttpMethod.vue.d.ts +3 -3
- package/dist/components/HttpMethod/HttpMethod.vue.d.ts.map +1 -1
- package/dist/components/HttpMethod/HttpMethod.vue.js +1 -1
- package/dist/components/HttpMethod/HttpMethod.vue.js.map +1 -1
- package/dist/components/HttpMethod/HttpMethod.vue.script.js +3 -2
- package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
- package/dist/components/IconSelector.vue.script.js +1 -1
- package/dist/components/Server/index.d.ts +0 -2
- package/dist/components/Server/index.d.ts.map +1 -1
- package/dist/components/Server/index.js +1 -3
- package/dist/components/Sidebar/Actions/DeleteSidebarListElement.vue.d.ts +2 -2
- package/dist/hooks/{useFileDialog.d.ts → use-file-dialog.d.ts} +3 -2
- package/dist/hooks/use-file-dialog.d.ts.map +1 -0
- package/dist/hooks/{useFileDialog.js → use-file-dialog.js} +2 -2
- package/dist/hooks/use-file-dialog.js.map +1 -0
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -5
- package/dist/monacoeditorwork/editor.worker.bundle.js +222 -366
- package/dist/monacoeditorwork/json.worker.bundle.js +388 -501
- package/dist/monacoeditorwork/yaml.worker.bundle.js +14567 -22937
- package/dist/style.css +6059 -7674
- package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts +4 -1
- package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/OperationBlock.vue.js.map +1 -1
- package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js +13 -10
- package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js.map +1 -1
- package/dist/v2/blocks/operation-block/components/Header.vue.d.ts +1 -1
- package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/components/Header.vue.js +1 -1
- package/dist/v2/blocks/operation-block/components/Header.vue.js.map +1 -1
- package/dist/v2/blocks/operation-block/components/Header.vue.script.js +2 -2
- package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -1
- package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.d.ts.map +1 -0
- package/dist/{components → v2/blocks/operation-block/components}/OpenApiClientButton.vue.js +3 -3
- package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js.map +1 -0
- package/dist/{components → v2/blocks/operation-block/components}/OpenApiClientButton.vue.script.js +6 -7
- package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/decode-buffer.js +3 -3
- package/dist/v2/blocks/operation-block/helpers/decode-buffer.js.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/response-cache.d.ts +1 -1
- package/dist/v2/blocks/operation-block/helpers/response-cache.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/response-cache.js.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/send-request.d.ts +1 -1
- package/dist/v2/blocks/operation-block/helpers/send-request.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/send-request.js +25 -4
- package/dist/v2/blocks/operation-block/helpers/send-request.js.map +1 -1
- package/dist/v2/blocks/operation-block/index.d.ts +1 -0
- package/dist/v2/blocks/operation-block/index.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/index.js +2 -1
- 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 +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/generate-code-snippet.js.map +1 -1
- package/dist/{views/Components/CodeSnippet → v2/blocks/operation-code-sample}/helpers/get-snippet.d.ts +1 -1
- package/dist/v2/blocks/operation-code-sample/helpers/get-snippet.d.ts.map +1 -0
- package/dist/{views/Components/CodeSnippet → v2/blocks/operation-code-sample}/helpers/get-snippet.js +2 -3
- package/dist/v2/blocks/operation-code-sample/helpers/get-snippet.js.map +1 -0
- package/dist/v2/blocks/operation-code-sample/helpers/operation-to-har/process-server-url.js +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts +4 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +4 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.js +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +2 -2
- package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js +1 -1
- package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +6 -6
- package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts +6 -6
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/get-default-headers.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/get-default-headers.js +1 -1
- package/dist/v2/blocks/request-block/helpers/get-default-headers.js.map +1 -1
- package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts +2 -2
- package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/ResponseBlock.vue.js +1 -1
- package/dist/v2/blocks/response-block/ResponseBlock.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +1 -1
- package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/Headers.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/components/Headers.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/Headers.vue.script.js +11 -13
- package/dist/v2/blocks/response-block/components/Headers.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBody.vue.script.js +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyDownload.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.d.ts +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyPreview.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyRaw.vue.script.js +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js +2 -1
- package/dist/v2/blocks/response-block/components/ResponseBodyVirtual.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js +35 -12
- package/dist/v2/blocks/response-block/components/ResponseCookies.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.d.ts +3 -3
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js +1 -1
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseEmpty.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.d.ts +1 -1
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.js.map +1 -1
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js +1 -1
- package/dist/v2/blocks/response-block/components/ResponseMetaInformation.vue.script.js.map +1 -1
- package/dist/v2/blocks/response-block/helpers/get-content-length.d.ts +1 -1
- package/dist/v2/blocks/response-block/helpers/get-content-length.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/helpers/get-content-length.js.map +1 -1
- package/dist/v2/blocks/response-block/helpers/media-types.d.ts +1 -1
- package/dist/v2/blocks/response-block/helpers/media-types.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/helpers/media-types.js +10 -1
- package/dist/v2/blocks/response-block/helpers/media-types.js.map +1 -1
- package/dist/v2/blocks/response-block/helpers/process-response-body.d.ts +1 -2
- package/dist/v2/blocks/response-block/helpers/process-response-body.d.ts.map +1 -1
- package/dist/v2/blocks/response-block/helpers/process-response-body.js +2 -2
- package/dist/v2/blocks/response-block/helpers/process-response-body.js.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts +2 -2
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +16 -4
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js +2 -2
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts +3 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +4 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/DeleteRequestAuthModal.vue.d.ts +2 -2
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts +31 -6
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js +6 -8
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuth2.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.js +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js +5 -5
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesAddModal.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js +3 -3
- package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/OpenIDConnect.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts +3 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js +6 -3
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTableInput.vue.d.ts +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts +3 -0
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +4 -1
- package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/fetch-openid-connect-discovery.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js +3 -3
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js.map +1 -1
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.d.ts +11 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.d.ts.map +1 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.js +18 -0
- package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.js.map +1 -0
- package/dist/v2/components/code-input/CodeInput.vue.d.ts +4 -3
- package/dist/v2/components/code-input/CodeInput.vue.d.ts.map +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.js +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.js.map +1 -1
- package/dist/v2/components/code-input/CodeInput.vue.script.js +8 -0
- package/dist/v2/components/code-input/CodeInput.vue.script.js.map +1 -1
- package/dist/{views/Collection/CollectionNavigation.vue.d.ts → v2/components/code-input/PillTooltipHost.vue.d.ts} +3 -2
- package/dist/v2/components/code-input/PillTooltipHost.vue.d.ts.map +1 -0
- package/dist/v2/components/code-input/PillTooltipHost.vue.js +7 -0
- package/dist/v2/components/code-input/PillTooltipHost.vue.js.map +1 -0
- package/dist/v2/components/code-input/PillTooltipHost.vue.script.js +40 -0
- package/dist/v2/components/code-input/PillTooltipHost.vue.script.js.map +1 -0
- package/dist/v2/components/code-input/code-variable-widget.d.ts +1 -0
- package/dist/v2/components/code-input/code-variable-widget.d.ts.map +1 -1
- package/dist/v2/components/code-input/code-variable-widget.js +33 -20
- package/dist/v2/components/code-input/code-variable-widget.js.map +1 -1
- package/dist/v2/components/code-input/pill-context.d.ts +11 -0
- package/dist/v2/components/code-input/pill-context.d.ts.map +1 -0
- package/dist/v2/components/data-table/DataTableInput.vue.d.ts +3 -3
- package/dist/v2/components/data-table/DataTableInput.vue.d.ts.map +1 -1
- package/dist/v2/components/layout/CollapsibleSection.vue.d.ts.map +1 -1
- package/dist/v2/components/layout/CollapsibleSection.vue.js.map +1 -1
- package/dist/v2/components/layout/CollapsibleSection.vue.script.js +5 -2
- package/dist/v2/components/layout/CollapsibleSection.vue.script.js.map +1 -1
- package/dist/v2/components/modals/DeleteModal.vue.d.ts +2 -2
- package/dist/v2/components/modals/ModalClientContainer.vue.d.ts +2 -2
- package/dist/v2/components/server/ServerDropdown.vue.d.ts +1 -1
- package/dist/v2/components/server/ServerDropdown.vue.d.ts.map +1 -1
- package/dist/v2/components/server/ServerDropdown.vue.js.map +1 -1
- package/dist/v2/components/server/ServerDropdown.vue.script.js.map +1 -1
- package/dist/v2/components/sidebar/Sidebar.vue.d.ts.map +1 -1
- package/dist/v2/components/sidebar/Sidebar.vue.js.map +1 -1
- package/dist/v2/components/sidebar/Sidebar.vue.script.js +10 -5
- package/dist/v2/components/sidebar/Sidebar.vue.script.js.map +1 -1
- package/dist/v2/constants.js +1 -1
- package/dist/v2/features/app/App.vue.script.js +1 -1
- package/dist/v2/features/app/app-events.d.ts.map +1 -1
- package/dist/v2/features/app/app-events.js +8 -0
- package/dist/v2/features/app/app-events.js.map +1 -1
- package/dist/v2/features/app/app-state.js +6 -6
- package/dist/v2/features/app/components/AppSidebar.vue.d.ts.map +1 -1
- package/dist/v2/features/app/components/AppSidebar.vue.js +1 -1
- package/dist/v2/features/app/components/AppSidebar.vue.js.map +1 -1
- package/dist/v2/features/app/components/AppSidebar.vue.script.js +21 -12
- package/dist/v2/features/app/components/AppSidebar.vue.script.js.map +1 -1
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.d.ts.map +1 -1
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.js.map +1 -1
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.script.js +4 -4
- package/dist/v2/features/app/components/CreateWorkspaceModal.vue.script.js.map +1 -1
- package/dist/v2/features/app/components/DesktopTab.vue.d.ts +4 -4
- package/dist/v2/features/app/components/DesktopTab.vue.d.ts.map +1 -1
- package/dist/v2/features/app/components/DesktopTab.vue.js +1 -1
- package/dist/v2/features/app/components/DesktopTab.vue.js.map +1 -1
- package/dist/v2/features/app/components/DesktopTab.vue.script.js +2 -2
- package/dist/v2/features/app/components/DesktopTab.vue.script.js.map +1 -1
- package/dist/v2/features/app/components/SidebarItemMenu.vue.d.ts +3 -0
- package/dist/v2/features/app/components/SidebarItemMenu.vue.d.ts.map +1 -1
- package/dist/v2/features/app/components/SidebarItemMenu.vue.js.map +1 -1
- package/dist/v2/features/app/components/SidebarItemMenu.vue.script.js +30 -30
- package/dist/v2/features/app/components/SidebarItemMenu.vue.script.js.map +1 -1
- package/dist/v2/features/app/helpers/create-temp-operation.d.ts +14 -0
- package/dist/v2/features/app/helpers/create-temp-operation.d.ts.map +1 -0
- package/dist/v2/features/app/helpers/create-temp-operation.js +52 -0
- package/dist/v2/features/app/helpers/create-temp-operation.js.map +1 -0
- package/dist/v2/features/app/helpers/routes.d.ts +2 -2
- package/dist/v2/features/app/helpers/routes.d.ts.map +1 -1
- package/dist/v2/features/app/helpers/routes.js +11 -5
- package/dist/v2/features/app/helpers/routes.js.map +1 -1
- package/dist/v2/features/app/index.js +2 -2
- package/dist/v2/features/collection/DocumentCollection.vue.script.js +1 -1
- package/dist/v2/features/collection/OperationCollection.vue.script.js +1 -1
- package/dist/v2/features/collection/components/Editor/helpers/parse-editor-object.js +1 -1
- package/dist/v2/features/collection/components/Runner/components/Runner.vue.d.ts +16 -0
- package/dist/v2/features/collection/components/Runner/components/Runner.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/Runner.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/Runner.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/Runner.vue.script.js +220 -0
- package/dist/v2/features/collection/components/Runner/components/Runner.vue.script.js.map +1 -0
- package/dist/{components/Sidebar/SidebarButton.vue.d.ts → v2/features/collection/components/Runner/components/RunnerCard.vue.d.ts} +8 -6
- package/dist/v2/features/collection/components/Runner/components/RunnerCard.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerCard.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerCard.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerCard.vue.script.js +45 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerCard.vue.script.js.map +1 -0
- package/dist/{components/Form/LabelInput.vue.d.ts → v2/features/collection/components/Runner/components/RunnerOrderItem.vue.d.ts} +12 -8
- package/dist/v2/features/collection/components/Runner/components/RunnerOrderItem.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerOrderItem.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerOrderItem.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerOrderItem.vue.script.js +73 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerOrderItem.vue.script.js.map +1 -0
- package/dist/{components/AddressBar/AddressBarHistory.vue.d.ts → v2/features/collection/components/Runner/components/RunnerResultRow.vue.d.ts} +11 -5
- package/dist/v2/features/collection/components/Runner/components/RunnerResultRow.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResultRow.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResultRow.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResultRow.vue.script.js +124 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResultRow.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResults.vue.d.ts +17 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResults.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResults.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResults.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResults.vue.script.js +126 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerResults.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTree.vue.d.ts +18 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTree.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTree.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTree.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTree.vue.script.js +180 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTree.vue.script.js.map +1 -0
- package/dist/{components/Sidebar/Actions/EditSidebarListElement.vue.d.ts → v2/features/collection/components/Runner/components/RunnerTreeExample.vue.d.ts} +6 -5
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeExample.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeExample.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeExample.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeExample.vue.script.js +44 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeExample.vue.script.js.map +1 -0
- package/dist/{components/DataTable/DataTableText.vue.d.ts → v2/features/collection/components/Runner/components/RunnerTreeGroup.vue.d.ts} +6 -4
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeGroup.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeGroup.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeGroup.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeGroup.vue.script.js +53 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeGroup.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeOperation.vue.d.ts +23 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeOperation.vue.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeOperation.vue.js +7 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeOperation.vue.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeOperation.vue.script.js +75 -0
- package/dist/v2/features/collection/components/Runner/components/RunnerTreeOperation.vue.script.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/hooks/index.d.ts +3 -0
- package/dist/v2/features/collection/components/Runner/hooks/index.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-execution.d.ts +73 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-execution.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-execution.js +190 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-execution.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-selection.d.ts +46 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-selection.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-selection.js +114 -0
- package/dist/v2/features/collection/components/Runner/hooks/use-runner-selection.js.map +1 -0
- package/dist/v2/features/collection/components/Runner/index.d.ts +2 -0
- package/dist/v2/features/collection/components/Runner/index.d.ts.map +1 -0
- package/dist/v2/features/collection/components/Tabs.vue.d.ts.map +1 -1
- package/dist/v2/features/collection/components/Tabs.vue.js.map +1 -1
- package/dist/v2/features/collection/components/Tabs.vue.script.js +3 -2
- package/dist/v2/features/collection/components/Tabs.vue.script.js.map +1 -1
- package/dist/v2/features/command-palette/TheCommandPalette.vue.script.js +2 -2
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.js.map +1 -1
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.script.js +3 -3
- package/dist/v2/features/command-palette/components/CommandPaletteImport.vue.script.js.map +1 -1
- package/dist/v2/features/command-palette/components/CommandPaletteOpenApiDocument.vue.script.js +1 -1
- package/dist/v2/features/command-palette/helpers/get-operation-from-curl.js +1 -1
- package/dist/v2/features/command-palette/helpers/get-operation-from-curl.js.map +1 -1
- package/dist/{libs → v2/features/command-palette/helpers}/parse-curl.d.ts +2 -2
- package/dist/v2/features/command-palette/helpers/parse-curl.d.ts.map +1 -0
- package/dist/{libs → v2/features/command-palette/helpers}/parse-curl.js +1 -1
- package/dist/v2/features/command-palette/helpers/parse-curl.js.map +1 -0
- package/dist/v2/features/command-palette/hooks/use-command-palette-state.js +1 -1
- package/dist/v2/features/command-palette/index.d.ts +2 -0
- package/dist/v2/features/command-palette/index.d.ts.map +1 -1
- package/dist/v2/features/command-palette/index.js +3 -1
- package/dist/v2/features/editor/helpers/configure-language-support.js +3 -3
- package/dist/v2/features/editor/helpers/configure-language-support.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.js +1 -1
- package/dist/v2/features/editor/helpers/json/get-json-ast-node-from-path.js.map +1 -1
- package/dist/v2/features/editor/helpers/json/json-ast.d.ts +1 -1
- package/dist/v2/features/editor/helpers/json/json-ast.d.ts.map +1 -1
- package/dist/v2/features/editor/helpers/json/json-ast.js +1 -1
- package/dist/v2/features/editor/helpers/json/json-ast.js.map +1 -1
- package/dist/v2/features/editor/helpers/theme/load-css-variables.d.ts +1 -1
- package/dist/v2/features/editor/hooks/use-editor-markers.d.ts.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.d.ts.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.js.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js +4 -4
- package/dist/v2/features/environments/components/EnvironmentCreateModal.vue.script.js.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.d.ts +5 -0
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.d.ts.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.js.map +1 -1
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js +70 -13
- package/dist/v2/features/environments/components/EnvironmentVariablesDropdown.vue.script.js.map +1 -1
- package/dist/v2/features/modal/Modal.vue.d.ts +8 -3
- package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
- package/dist/v2/features/modal/Modal.vue.js.map +1 -1
- package/dist/v2/features/modal/Modal.vue.script.js +1 -1
- package/dist/v2/features/modal/Modal.vue.script.js.map +1 -1
- package/dist/v2/features/modal/helpers/create-api-client-modal.d.ts +4 -3
- 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 +12 -3
- package/dist/v2/features/modal/helpers/create-api-client-modal.js.map +1 -1
- package/dist/v2/features/modal/helpers/types.d.ts +8 -0
- package/dist/v2/features/modal/helpers/types.d.ts.map +1 -0
- package/dist/v2/features/modal/index.d.ts +1 -0
- package/dist/v2/features/modal/index.d.ts.map +1 -1
- package/dist/v2/features/operation/Operation.vue.d.ts +3 -3
- package/dist/v2/features/operation/Operation.vue.d.ts.map +1 -1
- package/dist/v2/features/operation/Operation.vue.js.map +1 -1
- package/dist/v2/features/operation/Operation.vue.script.js +3 -1
- package/dist/v2/features/operation/Operation.vue.script.js.map +1 -1
- package/dist/v2/features/settings/CollectionSettings.vue.script.js +1 -1
- package/dist/v2/features/settings/components/Appearance.vue.d.ts +2 -2
- package/dist/v2/helpers/safe-run.d.ts +10 -0
- package/dist/v2/helpers/safe-run.d.ts.map +1 -0
- package/dist/v2/helpers/safe-run.js +19 -0
- package/dist/v2/helpers/safe-run.js.map +1 -0
- package/package.json +149 -170
- package/dist/assets/keycap.ascii.virtual.js +0 -6
- package/dist/assets/keycap.ascii.virtual.js.map +0 -1
- package/dist/components/AddressBar/AddressBar.vue.d.ts +0 -20
- package/dist/components/AddressBar/AddressBar.vue.d.ts.map +0 -1
- package/dist/components/AddressBar/AddressBar.vue.js +0 -9
- package/dist/components/AddressBar/AddressBar.vue.js.map +0 -1
- package/dist/components/AddressBar/AddressBar.vue.script.js +0 -204
- package/dist/components/AddressBar/AddressBar.vue.script.js.map +0 -1
- package/dist/components/AddressBar/AddressBarHistory.vue.d.ts.map +0 -1
- package/dist/components/AddressBar/AddressBarHistory.vue.js +0 -9
- package/dist/components/AddressBar/AddressBarHistory.vue.js.map +0 -1
- package/dist/components/AddressBar/AddressBarHistory.vue.script.js +0 -85
- package/dist/components/AddressBar/AddressBarHistory.vue.script.js.map +0 -1
- package/dist/components/AddressBar/httpStatusCodeColors.d.ts +0 -22
- package/dist/components/AddressBar/httpStatusCodeColors.d.ts.map +0 -1
- package/dist/components/AddressBar/httpStatusCodeColors.js +0 -20
- package/dist/components/AddressBar/httpStatusCodeColors.js.map +0 -1
- package/dist/components/AddressBar/index.d.ts +0 -2
- package/dist/components/AddressBar/index.d.ts.map +0 -1
- package/dist/components/AddressBar/index.js +0 -2
- package/dist/components/CodeInput/CodeInput.vue.d.ts +0 -101
- package/dist/components/CodeInput/CodeInput.vue.d.ts.map +0 -1
- package/dist/components/CodeInput/CodeInput.vue.js +0 -10
- package/dist/components/CodeInput/CodeInput.vue.js.map +0 -1
- package/dist/components/CodeInput/CodeInput.vue.script.js +0 -294
- package/dist/components/CodeInput/CodeInput.vue.script.js.map +0 -1
- package/dist/components/CodeInput/codeVariableWidget.d.ts +0 -17
- package/dist/components/CodeInput/codeVariableWidget.d.ts.map +0 -1
- package/dist/components/CodeInput/codeVariableWidget.js +0 -135
- package/dist/components/CodeInput/codeVariableWidget.js.map +0 -1
- package/dist/components/CodeInput/index.d.ts +0 -2
- package/dist/components/CodeInput/index.d.ts.map +0 -1
- package/dist/components/CodeInput/index.js +0 -2
- package/dist/components/CommandPalette/CommandActionForm.vue.d.ts +0 -31
- package/dist/components/CommandPalette/CommandActionForm.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandActionForm.vue.js +0 -7
- package/dist/components/CommandPalette/CommandActionForm.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandActionForm.vue.script.js +0 -42
- package/dist/components/CommandPalette/CommandActionForm.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandActionInput.vue.d.ts +0 -15
- package/dist/components/CommandPalette/CommandActionInput.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandActionInput.vue.js +0 -7
- package/dist/components/CommandPalette/CommandActionInput.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandActionInput.vue.script.js +0 -55
- package/dist/components/CommandPalette/CommandActionInput.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.d.ts +0 -10
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.js +0 -7
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.script.js +0 -78
- package/dist/components/CommandPalette/CommandPaletteCollection.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteExample.vue.d.ts +0 -16
- package/dist/components/CommandPalette/CommandPaletteExample.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteExample.vue.js +0 -7
- package/dist/components/CommandPalette/CommandPaletteExample.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteExample.vue.script.js +0 -104
- package/dist/components/CommandPalette/CommandPaletteExample.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteImport.vue.d.ts +0 -10
- package/dist/components/CommandPalette/CommandPaletteImport.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteImport.vue.js +0 -7
- package/dist/components/CommandPalette/CommandPaletteImport.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteImport.vue.script.js +0 -181
- package/dist/components/CommandPalette/CommandPaletteImport.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.d.ts +0 -20
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.js +0 -9
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.script.js +0 -108
- package/dist/components/CommandPalette/CommandPaletteImportCurl.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteServer.vue.d.ts +0 -16
- package/dist/components/CommandPalette/CommandPaletteServer.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteServer.vue.js +0 -7
- package/dist/components/CommandPalette/CommandPaletteServer.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteServer.vue.script.js +0 -108
- package/dist/components/CommandPalette/CommandPaletteServer.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteTag.vue.d.ts +0 -10
- package/dist/components/CommandPalette/CommandPaletteTag.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteTag.vue.js +0 -7
- package/dist/components/CommandPalette/CommandPaletteTag.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteTag.vue.script.js +0 -70
- package/dist/components/CommandPalette/CommandPaletteTag.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.d.ts +0 -10
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.js +0 -7
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.js.map +0 -1
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.script.js +0 -49
- package/dist/components/CommandPalette/CommandPaletteWorkspace.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/TheCommandPalette.vue.d.ts +0 -217
- package/dist/components/CommandPalette/TheCommandPalette.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/TheCommandPalette.vue.js +0 -9
- package/dist/components/CommandPalette/TheCommandPalette.vue.js.map +0 -1
- package/dist/components/CommandPalette/TheCommandPalette.vue.script.js +0 -323
- package/dist/components/CommandPalette/TheCommandPalette.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/WatchModeToggle.vue.d.ts +0 -14
- package/dist/components/CommandPalette/WatchModeToggle.vue.d.ts.map +0 -1
- package/dist/components/CommandPalette/WatchModeToggle.vue.js +0 -7
- package/dist/components/CommandPalette/WatchModeToggle.vue.js.map +0 -1
- package/dist/components/CommandPalette/WatchModeToggle.vue.script.js +0 -40
- package/dist/components/CommandPalette/WatchModeToggle.vue.script.js.map +0 -1
- package/dist/components/CommandPalette/index.d.ts +0 -2
- package/dist/components/CommandPalette/index.d.ts.map +0 -1
- package/dist/components/CommandPalette/index.js +0 -2
- package/dist/components/DataTable/DataTable.vue.d.ts +0 -23
- package/dist/components/DataTable/DataTable.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTable.vue.js +0 -7
- package/dist/components/DataTable/DataTable.vue.js.map +0 -1
- package/dist/components/DataTable/DataTable.vue.script.js +0 -30
- package/dist/components/DataTable/DataTable.vue.script.js.map +0 -1
- package/dist/components/DataTable/DataTableCell.vue.d.ts +0 -20
- package/dist/components/DataTable/DataTableCell.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableCell.vue.js +0 -7
- package/dist/components/DataTable/DataTableCell.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableCell.vue.script.js +0 -21
- package/dist/components/DataTable/DataTableCell.vue.script.js.map +0 -1
- package/dist/components/DataTable/DataTableCheckbox.vue.d.ts +0 -15
- package/dist/components/DataTable/DataTableCheckbox.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableCheckbox.vue.js +0 -7
- package/dist/components/DataTable/DataTableCheckbox.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableCheckbox.vue.script.js +0 -43
- package/dist/components/DataTable/DataTableCheckbox.vue.script.js.map +0 -1
- package/dist/components/DataTable/DataTableHeader.vue.d.ts +0 -14
- package/dist/components/DataTable/DataTableHeader.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableHeader.vue.js +0 -7
- package/dist/components/DataTable/DataTableHeader.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableHeader.vue.script.js +0 -20
- package/dist/components/DataTable/DataTableHeader.vue.script.js.map +0 -1
- package/dist/components/DataTable/DataTableInput.vue.d.ts +0 -54
- package/dist/components/DataTable/DataTableInput.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableInput.vue.js +0 -9
- package/dist/components/DataTable/DataTableInput.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableInput.vue.script.js +0 -164
- package/dist/components/DataTable/DataTableInput.vue.script.js.map +0 -1
- package/dist/components/DataTable/DataTableInputSelect.vue.d.ts +0 -17
- package/dist/components/DataTable/DataTableInputSelect.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableInputSelect.vue.js +0 -7
- package/dist/components/DataTable/DataTableInputSelect.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableInputSelect.vue.script.js +0 -150
- package/dist/components/DataTable/DataTableInputSelect.vue.script.js.map +0 -1
- package/dist/components/DataTable/DataTableRow.vue.d.ts +0 -14
- package/dist/components/DataTable/DataTableRow.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableRow.vue.js +0 -13
- package/dist/components/DataTable/DataTableRow.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableText.vue.d.ts.map +0 -1
- package/dist/components/DataTable/DataTableText.vue.js +0 -7
- package/dist/components/DataTable/DataTableText.vue.js.map +0 -1
- package/dist/components/DataTable/DataTableText.vue.script.js +0 -20
- package/dist/components/DataTable/DataTableText.vue.script.js.map +0 -1
- package/dist/components/DataTable/index.d.ts +0 -9
- package/dist/components/DataTable/index.d.ts.map +0 -1
- package/dist/components/DataTable/index.js +0 -9
- package/dist/components/EmptyState.vue.d.ts +0 -4
- package/dist/components/EmptyState.vue.d.ts.map +0 -1
- package/dist/components/EmptyState.vue.js +0 -9
- package/dist/components/EmptyState.vue.js.map +0 -1
- package/dist/components/EmptyState.vue.script.js +0 -41
- package/dist/components/EmptyState.vue.script.js.map +0 -1
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.d.ts +0 -4
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.d.ts.map +0 -1
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.js +0 -7
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.js.map +0 -1
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.script.js +0 -111
- package/dist/components/EnvironmentSelector/EnvironmentSelector.vue.script.js.map +0 -1
- package/dist/components/Form/Form.vue.d.ts +0 -26
- package/dist/components/Form/Form.vue.d.ts.map +0 -1
- package/dist/components/Form/Form.vue.js +0 -7
- package/dist/components/Form/Form.vue.js.map +0 -1
- package/dist/components/Form/Form.vue.script.js +0 -82
- package/dist/components/Form/Form.vue.script.js.map +0 -1
- package/dist/components/Form/LabelInput.vue.d.ts.map +0 -1
- package/dist/components/Form/LabelInput.vue.js +0 -9
- package/dist/components/Form/LabelInput.vue.js.map +0 -1
- package/dist/components/Form/LabelInput.vue.script.js +0 -39
- package/dist/components/Form/LabelInput.vue.script.js.map +0 -1
- package/dist/components/HttpMethod/index.js +0 -2
- package/dist/components/ImportCollection/DropEventListener.vue.d.ts +0 -8
- package/dist/components/ImportCollection/DropEventListener.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/DropEventListener.vue.js +0 -7
- package/dist/components/ImportCollection/DropEventListener.vue.js.map +0 -1
- package/dist/components/ImportCollection/DropEventListener.vue.script.js +0 -91
- package/dist/components/ImportCollection/DropEventListener.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/ImportCollectionListener.vue.d.ts +0 -14
- package/dist/components/ImportCollection/ImportCollectionListener.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/ImportCollectionListener.vue.js +0 -7
- package/dist/components/ImportCollection/ImportCollectionListener.vue.js.map +0 -1
- package/dist/components/ImportCollection/ImportCollectionListener.vue.script.js +0 -102
- package/dist/components/ImportCollection/ImportCollectionListener.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/ImportCollectionModal.vue.d.ts +0 -13
- package/dist/components/ImportCollection/ImportCollectionModal.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/ImportCollectionModal.vue.js +0 -8
- package/dist/components/ImportCollection/ImportCollectionModal.vue.js.map +0 -1
- package/dist/components/ImportCollection/ImportCollectionModal.vue.script.js +0 -206
- package/dist/components/ImportCollection/ImportCollectionModal.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/ImportNowButton.vue.d.ts +0 -13
- package/dist/components/ImportCollection/ImportNowButton.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/ImportNowButton.vue.js +0 -7
- package/dist/components/ImportCollection/ImportNowButton.vue.js.map +0 -1
- package/dist/components/ImportCollection/ImportNowButton.vue.script.js +0 -82
- package/dist/components/ImportCollection/ImportNowButton.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/PasteEventListener.vue.d.ts +0 -8
- package/dist/components/ImportCollection/PasteEventListener.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/PasteEventListener.vue.js +0 -7
- package/dist/components/ImportCollection/PasteEventListener.vue.js.map +0 -1
- package/dist/components/ImportCollection/PasteEventListener.vue.script.js +0 -31
- package/dist/components/ImportCollection/PasteEventListener.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/PrefetchError.vue.d.ts +0 -7
- package/dist/components/ImportCollection/PrefetchError.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/PrefetchError.vue.js +0 -7
- package/dist/components/ImportCollection/PrefetchError.vue.js.map +0 -1
- package/dist/components/ImportCollection/PrefetchError.vue.script.js +0 -32
- package/dist/components/ImportCollection/PrefetchError.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.d.ts +0 -8
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.js +0 -7
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.js.map +0 -1
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.script.js +0 -21
- package/dist/components/ImportCollection/UrlQueryParameterChecker.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/WorkspaceSelector.vue.d.ts +0 -4
- package/dist/components/ImportCollection/WorkspaceSelector.vue.d.ts.map +0 -1
- package/dist/components/ImportCollection/WorkspaceSelector.vue.js +0 -7
- package/dist/components/ImportCollection/WorkspaceSelector.vue.js.map +0 -1
- package/dist/components/ImportCollection/WorkspaceSelector.vue.script.js +0 -114
- package/dist/components/ImportCollection/WorkspaceSelector.vue.script.js.map +0 -1
- package/dist/components/ImportCollection/hooks/useUrlPrefetcher.d.ts +0 -39
- package/dist/components/ImportCollection/hooks/useUrlPrefetcher.d.ts.map +0 -1
- package/dist/components/ImportCollection/hooks/useUrlPrefetcher.js +0 -109
- package/dist/components/ImportCollection/hooks/useUrlPrefetcher.js.map +0 -1
- package/dist/components/ImportCollection/index.d.ts +0 -2
- package/dist/components/ImportCollection/index.d.ts.map +0 -1
- package/dist/components/ImportCollection/index.js +0 -2
- package/dist/components/ImportCollection/utils/get-openapi-version.d.ts +0 -5
- package/dist/components/ImportCollection/utils/get-openapi-version.d.ts.map +0 -1
- package/dist/components/ImportCollection/utils/get-openapi-version.js +0 -26
- package/dist/components/ImportCollection/utils/get-openapi-version.js.map +0 -1
- package/dist/components/ImportCollection/utils/import-collection.d.ts +0 -12
- package/dist/components/ImportCollection/utils/import-collection.d.ts.map +0 -1
- package/dist/components/ImportCollection/utils/import-collection.js +0 -23
- package/dist/components/ImportCollection/utils/import-collection.js.map +0 -1
- package/dist/components/ImportCollection/utils/is-document.d.ts +0 -3
- package/dist/components/ImportCollection/utils/is-document.d.ts.map +0 -1
- package/dist/components/ImportCollection/utils/is-document.js +0 -12
- package/dist/components/ImportCollection/utils/is-document.js.map +0 -1
- package/dist/components/ImportCollection/utils/is-url.d.ts +0 -5
- package/dist/components/ImportCollection/utils/is-url.d.ts.map +0 -1
- package/dist/components/ImportCollection/utils/is-url.js +0 -14
- package/dist/components/ImportCollection/utils/is-url.js.map +0 -1
- package/dist/components/ImportCollection/utils/workspace-store-is-empty.d.ts +0 -6
- package/dist/components/ImportCollection/utils/workspace-store-is-empty.d.ts.map +0 -1
- package/dist/components/ImportCollection/utils/workspace-store-is-empty.js +0 -13
- package/dist/components/ImportCollection/utils/workspace-store-is-empty.js.map +0 -1
- package/dist/components/OpenApiClientButton.vue.d.ts.map +0 -1
- package/dist/components/OpenApiClientButton.vue.js.map +0 -1
- package/dist/components/OpenApiClientButton.vue.script.js.map +0 -1
- package/dist/components/Search/useSearch.d.ts +0 -33
- package/dist/components/Search/useSearch.d.ts.map +0 -1
- package/dist/components/Search/useSearch.js +0 -110
- package/dist/components/Search/useSearch.js.map +0 -1
- package/dist/components/Server/ServerDropdown.vue.d.ts +0 -12
- package/dist/components/Server/ServerDropdown.vue.d.ts.map +0 -1
- package/dist/components/Server/ServerDropdown.vue.js +0 -7
- package/dist/components/Server/ServerDropdown.vue.js.map +0 -1
- package/dist/components/Server/ServerDropdown.vue.script.js +0 -133
- package/dist/components/Server/ServerDropdown.vue.script.js.map +0 -1
- package/dist/components/Server/ServerDropdownItem.vue.d.ts +0 -19
- package/dist/components/Server/ServerDropdownItem.vue.d.ts.map +0 -1
- package/dist/components/Server/ServerDropdownItem.vue.js +0 -9
- package/dist/components/Server/ServerDropdownItem.vue.js.map +0 -1
- package/dist/components/Server/ServerDropdownItem.vue.script.js +0 -90
- package/dist/components/Server/ServerDropdownItem.vue.script.js.map +0 -1
- package/dist/components/Server/ServerSelector.vue.d.ts +0 -17
- package/dist/components/Server/ServerSelector.vue.d.ts.map +0 -1
- package/dist/components/Server/ServerSelector.vue.js +0 -7
- package/dist/components/Server/ServerSelector.vue.js.map +0 -1
- package/dist/components/Server/ServerSelector.vue.script.js +0 -87
- package/dist/components/Server/ServerSelector.vue.script.js.map +0 -1
- package/dist/components/SideNav/DownloadAppButton.vue.d.ts +0 -4
- package/dist/components/SideNav/DownloadAppButton.vue.d.ts.map +0 -1
- package/dist/components/SideNav/DownloadAppButton.vue.js +0 -9
- package/dist/components/SideNav/DownloadAppButton.vue.js.map +0 -1
- package/dist/components/SideNav/DownloadAppButton.vue.script.js +0 -31
- package/dist/components/SideNav/DownloadAppButton.vue.script.js.map +0 -1
- package/dist/components/SideNav/SideHelp.vue.d.ts +0 -4
- package/dist/components/SideNav/SideHelp.vue.d.ts.map +0 -1
- package/dist/components/SideNav/SideHelp.vue.js +0 -7
- package/dist/components/SideNav/SideHelp.vue.js.map +0 -1
- package/dist/components/SideNav/SideHelp.vue.script.js +0 -102
- package/dist/components/SideNav/SideHelp.vue.script.js.map +0 -1
- package/dist/components/SideNav/SideNav.vue.d.ts +0 -4
- package/dist/components/SideNav/SideNav.vue.d.ts.map +0 -1
- package/dist/components/SideNav/SideNav.vue.js +0 -7
- package/dist/components/SideNav/SideNav.vue.js.map +0 -1
- package/dist/components/SideNav/SideNav.vue.script.js +0 -80
- package/dist/components/SideNav/SideNav.vue.script.js.map +0 -1
- package/dist/components/SideNav/SideNavGroup.vue.d.ts +0 -14
- package/dist/components/SideNav/SideNavGroup.vue.d.ts.map +0 -1
- package/dist/components/SideNav/SideNavGroup.vue.js +0 -7
- package/dist/components/SideNav/SideNavGroup.vue.js.map +0 -1
- package/dist/components/SideNav/SideNavGroup.vue.script.js +0 -16
- package/dist/components/SideNav/SideNavGroup.vue.script.js.map +0 -1
- package/dist/components/SideNav/SideNavLink.vue.d.ts +0 -23
- package/dist/components/SideNav/SideNavLink.vue.d.ts.map +0 -1
- package/dist/components/SideNav/SideNavLink.vue.js +0 -7
- package/dist/components/SideNav/SideNavLink.vue.js.map +0 -1
- package/dist/components/SideNav/SideNavLink.vue.script.js +0 -32
- package/dist/components/SideNav/SideNavLink.vue.script.js.map +0 -1
- package/dist/components/SideNav/SideNavRouterLink.vue.d.ts +0 -21
- package/dist/components/SideNav/SideNavRouterLink.vue.d.ts.map +0 -1
- package/dist/components/SideNav/SideNavRouterLink.vue.js +0 -7
- package/dist/components/SideNav/SideNavRouterLink.vue.js.map +0 -1
- package/dist/components/SideNav/SideNavRouterLink.vue.script.js +0 -34
- package/dist/components/SideNav/SideNavRouterLink.vue.script.js.map +0 -1
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.d.ts +0 -14
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.js +0 -7
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.js.map +0 -1
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.script.js +0 -56
- package/dist/components/Sidebar/Actions/EditSidebarListCollection.vue.script.js.map +0 -1
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.js +0 -7
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.js.map +0 -1
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.script.js +0 -31
- package/dist/components/Sidebar/Actions/EditSidebarListElement.vue.script.js.map +0 -1
- package/dist/components/Sidebar/Sidebar.vue.d.ts +0 -23
- package/dist/components/Sidebar/Sidebar.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/Sidebar.vue.js +0 -9
- package/dist/components/Sidebar/Sidebar.vue.js.map +0 -1
- package/dist/components/Sidebar/Sidebar.vue.script.js +0 -71
- package/dist/components/Sidebar/Sidebar.vue.script.js.map +0 -1
- package/dist/components/Sidebar/SidebarButton.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarButton.vue.js +0 -7
- package/dist/components/Sidebar/SidebarButton.vue.js.map +0 -1
- package/dist/components/Sidebar/SidebarButton.vue.script.js +0 -36
- package/dist/components/Sidebar/SidebarButton.vue.script.js.map +0 -1
- package/dist/components/Sidebar/SidebarList.vue.d.ts +0 -14
- package/dist/components/Sidebar/SidebarList.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarList.vue.js +0 -13
- package/dist/components/Sidebar/SidebarList.vue.js.map +0 -1
- package/dist/components/Sidebar/SidebarListElement.vue.d.ts +0 -44
- package/dist/components/Sidebar/SidebarListElement.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarListElement.vue.js +0 -10
- package/dist/components/Sidebar/SidebarListElement.vue.js.map +0 -1
- package/dist/components/Sidebar/SidebarListElement.vue.script.js +0 -128
- package/dist/components/Sidebar/SidebarListElement.vue.script.js.map +0 -1
- package/dist/components/Sidebar/SidebarListElementActions.vue.d.ts +0 -21
- package/dist/components/Sidebar/SidebarListElementActions.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarListElementActions.vue.js +0 -7
- package/dist/components/Sidebar/SidebarListElementActions.vue.js.map +0 -1
- package/dist/components/Sidebar/SidebarListElementActions.vue.script.js +0 -97
- package/dist/components/Sidebar/SidebarListElementActions.vue.script.js.map +0 -1
- package/dist/components/Sidebar/SidebarToggle.vue.d.ts +0 -4
- package/dist/components/Sidebar/SidebarToggle.vue.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarToggle.vue.js +0 -7
- package/dist/components/Sidebar/SidebarToggle.vue.js.map +0 -1
- package/dist/components/Sidebar/SidebarToggle.vue.script.js +0 -47
- package/dist/components/Sidebar/SidebarToggle.vue.script.js.map +0 -1
- package/dist/components/Sidebar/index.d.ts +0 -2
- package/dist/components/Sidebar/index.d.ts.map +0 -1
- package/dist/components/Sidebar/index.js +0 -2
- package/dist/components/TopNav/TopNav.vue.d.ts +0 -10
- package/dist/components/TopNav/TopNav.vue.d.ts.map +0 -1
- package/dist/components/TopNav/TopNav.vue.js +0 -7
- package/dist/components/TopNav/TopNav.vue.js.map +0 -1
- package/dist/components/TopNav/TopNav.vue.script.js +0 -232
- package/dist/components/TopNav/TopNav.vue.script.js.map +0 -1
- package/dist/components/TopNav/TopNavItem.vue.d.ts +0 -24
- package/dist/components/TopNav/TopNavItem.vue.d.ts.map +0 -1
- package/dist/components/TopNav/TopNavItem.vue.js +0 -9
- package/dist/components/TopNav/TopNavItem.vue.js.map +0 -1
- package/dist/components/TopNav/TopNavItem.vue.script.js +0 -129
- package/dist/components/TopNav/TopNavItem.vue.script.js.map +0 -1
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.d.ts +0 -33
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.d.ts.map +0 -1
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js +0 -7
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js.map +0 -1
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.script.js +0 -84
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.script.js.map +0 -1
- package/dist/components/ViewLayout/index.d.ts +0 -2
- package/dist/components/ViewLayout/index.d.ts.map +0 -1
- package/dist/components/ViewLayout/index.js +0 -2
- package/dist/components/index.d.ts +0 -4
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -4
- package/dist/constants.d.ts +0 -26
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -27
- package/dist/constants.js.map +0 -1
- package/dist/data/httpHeaders.d.ts +0 -7
- package/dist/data/httpHeaders.d.ts.map +0 -1
- package/dist/data/httpHeaders.js +0 -539
- package/dist/data/httpHeaders.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -5
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -5
- package/dist/hooks/useClientConfig.d.ts +0 -198
- package/dist/hooks/useClientConfig.d.ts.map +0 -1
- package/dist/hooks/useClientConfig.js +0 -23
- package/dist/hooks/useClientConfig.js.map +0 -1
- package/dist/hooks/useFileDialog.d.ts.map +0 -1
- package/dist/hooks/useFileDialog.js.map +0 -1
- package/dist/hooks/useLayout.d.ts +0 -17
- package/dist/hooks/useLayout.d.ts.map +0 -1
- package/dist/hooks/useLayout.js +0 -13
- package/dist/hooks/useLayout.js.map +0 -1
- package/dist/hooks/useResponseBody.d.ts +0 -19
- package/dist/hooks/useResponseBody.d.ts.map +0 -1
- package/dist/hooks/useResponseBody.js +0 -32
- package/dist/hooks/useResponseBody.js.map +0 -1
- package/dist/hooks/useSidebar.d.ts +0 -26
- package/dist/hooks/useSidebar.d.ts.map +0 -1
- package/dist/hooks/useSidebar.js +0 -36
- package/dist/hooks/useSidebar.js.map +0 -1
- package/dist/layouts/App/ApiClientApp.vue.d.ts +0 -14
- package/dist/layouts/App/ApiClientApp.vue.d.ts.map +0 -1
- package/dist/layouts/App/ApiClientApp.vue.js +0 -8
- package/dist/layouts/App/ApiClientApp.vue.js.map +0 -1
- package/dist/layouts/App/ApiClientApp.vue.script.js +0 -80
- package/dist/layouts/App/ApiClientApp.vue.script.js.map +0 -1
- package/dist/layouts/App/MainLayout.vue.d.ts +0 -14
- package/dist/layouts/App/MainLayout.vue.d.ts.map +0 -1
- package/dist/layouts/App/MainLayout.vue.js +0 -7
- package/dist/layouts/App/MainLayout.vue.js.map +0 -1
- package/dist/layouts/App/MainLayout.vue.script.js +0 -22
- package/dist/layouts/App/MainLayout.vue.script.js.map +0 -1
- package/dist/layouts/App/create-api-client-app.d.ts +0 -4059
- package/dist/layouts/App/create-api-client-app.d.ts.map +0 -1
- package/dist/layouts/App/create-api-client-app.js +0 -36
- package/dist/layouts/App/create-api-client-app.js.map +0 -1
- package/dist/layouts/App/hotkeys.d.ts +0 -6
- package/dist/layouts/App/hotkeys.d.ts.map +0 -1
- package/dist/layouts/App/hotkeys.js +0 -74
- package/dist/layouts/App/hotkeys.js.map +0 -1
- package/dist/layouts/App/index.d.ts +0 -3
- package/dist/layouts/App/index.d.ts.map +0 -1
- package/dist/layouts/App/index.js +0 -3
- package/dist/layouts/Modal/ApiClientModal.vue.d.ts +0 -4
- package/dist/layouts/Modal/ApiClientModal.vue.d.ts.map +0 -1
- package/dist/layouts/Modal/ApiClientModal.vue.js +0 -7
- package/dist/layouts/Modal/ApiClientModal.vue.js.map +0 -1
- package/dist/layouts/Modal/ApiClientModal.vue.script.js +0 -41
- package/dist/layouts/Modal/ApiClientModal.vue.script.js.map +0 -1
- package/dist/layouts/Modal/create-api-client-modal.d.ts +0 -12
- package/dist/layouts/Modal/create-api-client-modal.d.ts.map +0 -1
- package/dist/layouts/Modal/create-api-client-modal.js +0 -34
- package/dist/layouts/Modal/create-api-client-modal.js.map +0 -1
- package/dist/layouts/Modal/index.d.ts +0 -3
- package/dist/layouts/Modal/index.d.ts.map +0 -1
- package/dist/layouts/Modal/index.js +0 -2
- package/dist/layouts/Web/ApiClientWeb.vue.d.ts +0 -4
- package/dist/layouts/Web/ApiClientWeb.vue.d.ts.map +0 -1
- package/dist/layouts/Web/ApiClientWeb.vue.js +0 -8
- package/dist/layouts/Web/ApiClientWeb.vue.js.map +0 -1
- package/dist/layouts/Web/ApiClientWeb.vue.script.js +0 -68
- package/dist/layouts/Web/ApiClientWeb.vue.script.js.map +0 -1
- package/dist/layouts/Web/create-api-client-web.d.ts +0 -4056
- package/dist/layouts/Web/create-api-client-web.d.ts.map +0 -1
- package/dist/layouts/Web/create-api-client-web.js +0 -33
- package/dist/layouts/Web/create-api-client-web.js.map +0 -1
- package/dist/layouts/Web/index.d.ts +0 -3
- package/dist/layouts/Web/index.d.ts.map +0 -1
- package/dist/layouts/Web/index.js +0 -3
- package/dist/libs/create-client.d.ts +0 -4127
- package/dist/libs/create-client.d.ts.map +0 -1
- package/dist/libs/create-client.js +0 -178
- package/dist/libs/create-client.js.map +0 -1
- package/dist/libs/electron.d.ts +0 -5
- package/dist/libs/electron.d.ts.map +0 -1
- package/dist/libs/electron.js +0 -9
- package/dist/libs/electron.js.map +0 -1
- package/dist/libs/env-helpers.d.ts +0 -17
- package/dist/libs/env-helpers.d.ts.map +0 -1
- package/dist/libs/env-helpers.js +0 -9
- package/dist/libs/env-helpers.js.map +0 -1
- package/dist/libs/environment-parser.d.ts +0 -8
- package/dist/libs/environment-parser.d.ts.map +0 -1
- package/dist/libs/environment-parser.js +0 -19
- package/dist/libs/environment-parser.js.map +0 -1
- package/dist/libs/errors.d.ts +0 -23
- package/dist/libs/errors.d.ts.map +0 -1
- package/dist/libs/errors.js +0 -34
- package/dist/libs/errors.js.map +0 -1
- package/dist/libs/event-bus.d.ts +0 -41
- package/dist/libs/event-bus.d.ts.map +0 -1
- package/dist/libs/event-bus.js +0 -43
- package/dist/libs/event-bus.js.map +0 -1
- package/dist/libs/extractAttachmentFilename.d.ts +0 -5
- package/dist/libs/extractAttachmentFilename.d.ts.map +0 -1
- package/dist/libs/extractAttachmentFilename.js +0 -23
- package/dist/libs/extractAttachmentFilename.js.map +0 -1
- package/dist/libs/find-request.d.ts +0 -75
- package/dist/libs/find-request.d.ts.map +0 -1
- package/dist/libs/find-request.js +0 -40
- package/dist/libs/find-request.js.map +0 -1
- package/dist/libs/get-request-uid-by-path-method.d.ts +0 -7
- package/dist/libs/get-request-uid-by-path-method.d.ts.map +0 -1
- package/dist/libs/get-request-uid-by-path-method.js +0 -19
- package/dist/libs/get-request-uid-by-path-method.js.map +0 -1
- package/dist/libs/getOpenApiDocumentDetails.d.ts +0 -10
- package/dist/libs/getOpenApiDocumentDetails.d.ts.map +0 -1
- package/dist/libs/getOpenApiDocumentDetails.js +0 -45
- package/dist/libs/getOpenApiDocumentDetails.js.map +0 -1
- package/dist/libs/hot-keys.d.ts +0 -35
- package/dist/libs/hot-keys.d.ts.map +0 -1
- package/dist/libs/hot-keys.js +0 -92
- package/dist/libs/hot-keys.js.map +0 -1
- package/dist/libs/importers/curl.d.ts +0 -27
- package/dist/libs/importers/curl.d.ts.map +0 -1
- package/dist/libs/importers/curl.js +0 -54
- package/dist/libs/importers/curl.js.map +0 -1
- package/dist/libs/importers/index.d.ts +0 -2
- package/dist/libs/importers/index.d.ts.map +0 -1
- package/dist/libs/importers/index.js +0 -2
- package/dist/libs/index.d.ts +0 -15
- package/dist/libs/index.d.ts.map +0 -1
- package/dist/libs/index.js +0 -17
- package/dist/libs/isUrl.d.ts +0 -3
- package/dist/libs/isUrl.d.ts.map +0 -1
- package/dist/libs/isUrl.js +0 -12
- package/dist/libs/isUrl.js.map +0 -1
- package/dist/libs/local-storage.d.ts +0 -9
- package/dist/libs/local-storage.d.ts.map +0 -1
- package/dist/libs/local-storage.js +0 -40
- package/dist/libs/local-storage.js.map +0 -1
- package/dist/libs/normalize-headers.d.ts +0 -14
- package/dist/libs/normalize-headers.d.ts.map +0 -1
- package/dist/libs/normalize-headers.js +0 -55
- package/dist/libs/normalize-headers.js.map +0 -1
- package/dist/libs/parse-curl.d.ts.map +0 -1
- package/dist/libs/parse-curl.js.map +0 -1
- package/dist/libs/postman.d.ts +0 -11
- package/dist/libs/postman.d.ts.map +0 -1
- package/dist/libs/postman.js +0 -40
- package/dist/libs/postman.js.map +0 -1
- package/dist/libs/send-request/build-request-security.d.ts +0 -19
- package/dist/libs/send-request/build-request-security.d.ts.map +0 -1
- package/dist/libs/send-request/build-request-security.js +0 -41
- package/dist/libs/send-request/build-request-security.js.map +0 -1
- package/dist/libs/send-request/create-fetch-body.d.ts +0 -18
- package/dist/libs/send-request/create-fetch-body.d.ts.map +0 -1
- package/dist/libs/send-request/create-fetch-body.js +0 -44
- package/dist/libs/send-request/create-fetch-body.js.map +0 -1
- package/dist/libs/send-request/create-fetch-headers.d.ts +0 -4
- package/dist/libs/send-request/create-fetch-headers.d.ts.map +0 -1
- package/dist/libs/send-request/create-fetch-headers.js +0 -15
- package/dist/libs/send-request/create-fetch-headers.js.map +0 -1
- package/dist/libs/send-request/create-fetch-query-params.d.ts +0 -11
- package/dist/libs/send-request/create-fetch-query-params.d.ts.map +0 -1
- package/dist/libs/send-request/create-fetch-query-params.js +0 -43
- package/dist/libs/send-request/create-fetch-query-params.js.map +0 -1
- package/dist/libs/send-request/create-request-operation.d.ts +0 -32
- package/dist/libs/send-request/create-request-operation.d.ts.map +0 -1
- package/dist/libs/send-request/create-request-operation.js +0 -172
- package/dist/libs/send-request/create-request-operation.js.map +0 -1
- package/dist/libs/send-request/decode-buffer.d.ts +0 -3
- package/dist/libs/send-request/decode-buffer.d.ts.map +0 -1
- package/dist/libs/send-request/decode-buffer.js +0 -13
- package/dist/libs/send-request/decode-buffer.js.map +0 -1
- package/dist/libs/send-request/index.d.ts +0 -4
- package/dist/libs/send-request/index.d.ts.map +0 -1
- package/dist/libs/send-request/index.js +0 -4
- package/dist/libs/send-request/set-request-cookies.d.ts +0 -27
- package/dist/libs/send-request/set-request-cookies.d.ts.map +0 -1
- package/dist/libs/send-request/set-request-cookies.js +0 -82
- package/dist/libs/send-request/set-request-cookies.js.map +0 -1
- package/dist/libs/string-template.d.ts +0 -21
- package/dist/libs/string-template.d.ts.map +0 -1
- package/dist/libs/string-template.js +0 -64
- package/dist/libs/string-template.js.map +0 -1
- package/dist/libs/validate-parameters.d.ts +0 -14
- package/dist/libs/validate-parameters.d.ts.map +0 -1
- package/dist/libs/validate-parameters.js +0 -35
- package/dist/libs/validate-parameters.js.map +0 -1
- package/dist/plugins/hooks/usePluginManager.d.ts +0 -8
- package/dist/plugins/hooks/usePluginManager.d.ts.map +0 -1
- package/dist/plugins/hooks/usePluginManager.js +0 -16
- package/dist/plugins/hooks/usePluginManager.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -3
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -3
- package/dist/plugins/plugin-manager.d.ts +0 -34
- package/dist/plugins/plugin-manager.d.ts.map +0 -1
- package/dist/plugins/plugin-manager.js +0 -38
- package/dist/plugins/plugin-manager.js.map +0 -1
- package/dist/routes.d.ts +0 -19
- package/dist/routes.d.ts.map +0 -1
- package/dist/routes.js +0 -225
- package/dist/routes.js.map +0 -1
- package/dist/store/active-entities.d.ts +0 -387
- package/dist/store/active-entities.d.ts.map +0 -1
- package/dist/store/active-entities.js +0 -139
- package/dist/store/active-entities.js.map +0 -1
- package/dist/store/collections.d.ts +0 -625
- package/dist/store/collections.d.ts.map +0 -1
- package/dist/store/collections.js +0 -76
- package/dist/store/collections.js.map +0 -1
- package/dist/store/cookies.d.ts +0 -69
- package/dist/store/cookies.d.ts.map +0 -1
- package/dist/store/cookies.js +0 -16
- package/dist/store/cookies.js.map +0 -1
- package/dist/store/environment.d.ts +0 -75
- package/dist/store/environment.d.ts.map +0 -1
- package/dist/store/environment.js +0 -38
- package/dist/store/environment.js.map +0 -1
- package/dist/store/events.d.ts +0 -35
- package/dist/store/events.d.ts.map +0 -1
- package/dist/store/events.js +0 -17
- package/dist/store/events.js.map +0 -1
- package/dist/store/import-spec.d.ts +0 -38
- package/dist/store/import-spec.d.ts.map +0 -1
- package/dist/store/import-spec.js +0 -56
- package/dist/store/import-spec.js.map +0 -1
- package/dist/store/index.d.ts +0 -3
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js +0 -3
- package/dist/store/request-example.d.ts +0 -1022
- package/dist/store/request-example.d.ts.map +0 -1
- package/dist/store/request-example.js +0 -43
- package/dist/store/request-example.js.map +0 -1
- package/dist/store/requests.d.ts +0 -675
- package/dist/store/requests.d.ts.map +0 -1
- package/dist/store/requests.js +0 -104
- package/dist/store/requests.js.map +0 -1
- package/dist/store/router-params.d.ts +0 -18
- package/dist/store/router-params.d.ts.map +0 -1
- package/dist/store/router-params.js +0 -27
- package/dist/store/router-params.js.map +0 -1
- package/dist/store/security-schemes.d.ts +0 -942
- package/dist/store/security-schemes.d.ts.map +0 -1
- package/dist/store/security-schemes.js +0 -45
- package/dist/store/security-schemes.js.map +0 -1
- package/dist/store/servers.d.ts +0 -122
- package/dist/store/servers.d.ts.map +0 -1
- package/dist/store/servers.js +0 -41
- package/dist/store/servers.js.map +0 -1
- package/dist/store/store-context.d.ts +0 -26
- package/dist/store/store-context.d.ts.map +0 -1
- package/dist/store/store.d.ts +0 -4055
- package/dist/store/store.d.ts.map +0 -1
- package/dist/store/store.js +0 -180
- package/dist/store/store.js.map +0 -1
- package/dist/store/tags.d.ts +0 -176
- package/dist/store/tags.d.ts.map +0 -1
- package/dist/store/tags.js +0 -54
- package/dist/store/tags.js.map +0 -1
- package/dist/store/workspace.d.ts +0 -232
- package/dist/store/workspace.d.ts.map +0 -1
- package/dist/store/workspace.js +0 -57
- package/dist/store/workspace.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -0
- package/dist/views/Collection/Collection.vue.d.ts +0 -4
- package/dist/views/Collection/Collection.vue.d.ts.map +0 -1
- package/dist/views/Collection/Collection.vue.js +0 -7
- package/dist/views/Collection/Collection.vue.js.map +0 -1
- package/dist/views/Collection/Collection.vue.script.js +0 -46
- package/dist/views/Collection/Collection.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionAuthentication.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionAuthentication.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionAuthentication.vue.js +0 -9
- package/dist/views/Collection/CollectionAuthentication.vue.js.map +0 -1
- package/dist/views/Collection/CollectionAuthentication.vue.script.js +0 -52
- package/dist/views/Collection/CollectionAuthentication.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionCookies.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionCookies.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionCookies.vue.js +0 -7
- package/dist/views/Collection/CollectionCookies.vue.js.map +0 -1
- package/dist/views/Collection/CollectionCookies.vue.script.js +0 -18
- package/dist/views/Collection/CollectionCookies.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionEnvironment.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionEnvironment.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionEnvironment.vue.js +0 -8
- package/dist/views/Collection/CollectionEnvironment.vue.js.map +0 -1
- package/dist/views/Collection/CollectionEnvironment.vue.script.js +0 -238
- package/dist/views/Collection/CollectionEnvironment.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionInfoForm.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionInfoForm.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionInfoForm.vue.js +0 -9
- package/dist/views/Collection/CollectionInfoForm.vue.js.map +0 -1
- package/dist/views/Collection/CollectionInfoForm.vue.script.js +0 -73
- package/dist/views/Collection/CollectionInfoForm.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionNavigation.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionNavigation.vue.js +0 -7
- package/dist/views/Collection/CollectionNavigation.vue.js.map +0 -1
- package/dist/views/Collection/CollectionNavigation.vue.script.js +0 -75
- package/dist/views/Collection/CollectionNavigation.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionOverview.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionOverview.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionOverview.vue.js +0 -7
- package/dist/views/Collection/CollectionOverview.vue.js.map +0 -1
- package/dist/views/Collection/CollectionOverview.vue.script.js +0 -42
- package/dist/views/Collection/CollectionOverview.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionScripts.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionScripts.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionScripts.vue.js +0 -7
- package/dist/views/Collection/CollectionScripts.vue.js.map +0 -1
- package/dist/views/Collection/CollectionScripts.vue.script.js +0 -18
- package/dist/views/Collection/CollectionScripts.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionServerForm.vue.d.ts +0 -11
- package/dist/views/Collection/CollectionServerForm.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionServerForm.vue.js +0 -7
- package/dist/views/Collection/CollectionServerForm.vue.js.map +0 -1
- package/dist/views/Collection/CollectionServerForm.vue.script.js +0 -76
- package/dist/views/Collection/CollectionServerForm.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionServers.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionServers.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionServers.vue.js +0 -7
- package/dist/views/Collection/CollectionServers.vue.js.map +0 -1
- package/dist/views/Collection/CollectionServers.vue.script.js +0 -95
- package/dist/views/Collection/CollectionServers.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionSettings.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionSettings.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionSettings.vue.js +0 -7
- package/dist/views/Collection/CollectionSettings.vue.js.map +0 -1
- package/dist/views/Collection/CollectionSettings.vue.script.js +0 -87
- package/dist/views/Collection/CollectionSettings.vue.script.js.map +0 -1
- package/dist/views/Collection/CollectionSync.vue.d.ts +0 -4
- package/dist/views/Collection/CollectionSync.vue.d.ts.map +0 -1
- package/dist/views/Collection/CollectionSync.vue.js +0 -7
- package/dist/views/Collection/CollectionSync.vue.js.map +0 -1
- package/dist/views/Collection/CollectionSync.vue.script.js +0 -18
- package/dist/views/Collection/CollectionSync.vue.script.js.map +0 -1
- package/dist/views/Collection/components/EnvironmentForm.vue.d.ts +0 -14
- package/dist/views/Collection/components/EnvironmentForm.vue.d.ts.map +0 -1
- package/dist/views/Collection/components/EnvironmentForm.vue.js +0 -9
- package/dist/views/Collection/components/EnvironmentForm.vue.js.map +0 -1
- package/dist/views/Collection/components/EnvironmentForm.vue.script.js +0 -284
- package/dist/views/Collection/components/EnvironmentForm.vue.script.js.map +0 -1
- package/dist/views/Collection/components/MarkdownInput.vue.d.ts +0 -17
- package/dist/views/Collection/components/MarkdownInput.vue.d.ts.map +0 -1
- package/dist/views/Collection/components/MarkdownInput.vue.js +0 -9
- package/dist/views/Collection/components/MarkdownInput.vue.js.map +0 -1
- package/dist/views/Collection/components/MarkdownInput.vue.script.js +0 -92
- package/dist/views/Collection/components/MarkdownInput.vue.script.js.map +0 -1
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.d.ts +0 -16
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.d.ts.map +0 -1
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.js +0 -7
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.js.map +0 -1
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.script.js +0 -74
- package/dist/views/Components/CodeSnippet/CodeSnippet.vue.script.js.map +0 -1
- package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.d.ts +0 -28
- package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.d.ts.map +0 -1
- package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.js +0 -66
- package/dist/views/Components/CodeSnippet/helpers/convert-to-har-request.js.map +0 -1
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.d.ts +0 -16
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.d.ts.map +0 -1
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.js +0 -86
- package/dist/views/Components/CodeSnippet/helpers/get-har-request.js.map +0 -1
- package/dist/views/Components/CodeSnippet/helpers/get-snippet.d.ts.map +0 -1
- package/dist/views/Components/CodeSnippet/helpers/get-snippet.js.map +0 -1
- package/dist/views/Components/CodeSnippet/index.d.ts +0 -5
- package/dist/views/Components/CodeSnippet/index.d.ts.map +0 -1
- package/dist/views/Components/CodeSnippet/index.js +0 -5
- package/dist/views/Cookies/CookieForm.vue.d.ts +0 -4
- package/dist/views/Cookies/CookieForm.vue.d.ts.map +0 -1
- package/dist/views/Cookies/CookieForm.vue.js +0 -7
- package/dist/views/Cookies/CookieForm.vue.js.map +0 -1
- package/dist/views/Cookies/CookieForm.vue.script.js +0 -50
- package/dist/views/Cookies/CookieForm.vue.script.js.map +0 -1
- package/dist/views/Cookies/CookieModal.vue.d.ts +0 -22
- package/dist/views/Cookies/CookieModal.vue.d.ts.map +0 -1
- package/dist/views/Cookies/CookieModal.vue.js +0 -9
- package/dist/views/Cookies/CookieModal.vue.js.map +0 -1
- package/dist/views/Cookies/CookieModal.vue.script.js +0 -83
- package/dist/views/Cookies/CookieModal.vue.script.js.map +0 -1
- package/dist/views/Cookies/CookieRaw.vue.d.ts +0 -4
- package/dist/views/Cookies/CookieRaw.vue.d.ts.map +0 -1
- package/dist/views/Cookies/Cookies.vue.d.ts +0 -4
- package/dist/views/Cookies/Cookies.vue.d.ts.map +0 -1
- package/dist/views/Cookies/Cookies.vue.js +0 -7
- package/dist/views/Cookies/Cookies.vue.js.map +0 -1
- package/dist/views/Cookies/Cookies.vue.script.js +0 -156
- package/dist/views/Cookies/Cookies.vue.script.js.map +0 -1
- package/dist/views/Environment/Environment.vue.d.ts +0 -4
- package/dist/views/Environment/Environment.vue.d.ts.map +0 -1
- package/dist/views/Environment/Environment.vue.js +0 -7
- package/dist/views/Environment/Environment.vue.js.map +0 -1
- package/dist/views/Environment/Environment.vue.script.js +0 -384
- package/dist/views/Environment/Environment.vue.script.js.map +0 -1
- package/dist/views/Environment/EnvironmentColorModal.vue.d.ts +0 -15
- package/dist/views/Environment/EnvironmentColorModal.vue.d.ts.map +0 -1
- package/dist/views/Environment/EnvironmentColorModal.vue.js +0 -7
- package/dist/views/Environment/EnvironmentColorModal.vue.js.map +0 -1
- package/dist/views/Environment/EnvironmentColorModal.vue.script.js +0 -47
- package/dist/views/Environment/EnvironmentColorModal.vue.script.js.map +0 -1
- package/dist/views/Environment/EnvironmentColors.vue.d.ts +0 -14
- package/dist/views/Environment/EnvironmentColors.vue.d.ts.map +0 -1
- package/dist/views/Environment/EnvironmentColors.vue.js +0 -7
- package/dist/views/Environment/EnvironmentColors.vue.js.map +0 -1
- package/dist/views/Environment/EnvironmentColors.vue.script.js +0 -126
- package/dist/views/Environment/EnvironmentColors.vue.script.js.map +0 -1
- package/dist/views/Environment/EnvironmentModal.vue.d.ts +0 -27
- package/dist/views/Environment/EnvironmentModal.vue.d.ts.map +0 -1
- package/dist/views/Environment/EnvironmentModal.vue.js +0 -7
- package/dist/views/Environment/EnvironmentModal.vue.js.map +0 -1
- package/dist/views/Environment/EnvironmentModal.vue.script.js +0 -122
- package/dist/views/Environment/EnvironmentModal.vue.script.js.map +0 -1
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.d.ts +0 -22
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.d.ts.map +0 -1
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.js +0 -7
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.js.map +0 -1
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.script.js +0 -133
- package/dist/views/Environment/EnvironmentVariableDropdown.vue.script.js.map +0 -1
- package/dist/views/Environment/handle-drag.d.ts +0 -13
- package/dist/views/Environment/handle-drag.d.ts.map +0 -1
- package/dist/views/Environment/handle-drag.js +0 -38
- package/dist/views/Environment/handle-drag.js.map +0 -1
- package/dist/views/Request/Request.vue.d.ts +0 -21
- package/dist/views/Request/Request.vue.d.ts.map +0 -1
- package/dist/views/Request/Request.vue.js +0 -9
- package/dist/views/Request/Request.vue.js.map +0 -1
- package/dist/views/Request/Request.vue.script.js +0 -117
- package/dist/views/Request/Request.vue.script.js.map +0 -1
- package/dist/views/Request/RequestRoot.vue.d.ts +0 -14
- package/dist/views/Request/RequestRoot.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestRoot.vue.js +0 -9
- package/dist/views/Request/RequestRoot.vue.js.map +0 -1
- package/dist/views/Request/RequestRoot.vue.script.js +0 -158
- package/dist/views/Request/RequestRoot.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.d.ts +0 -22
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.script.js +0 -52
- package/dist/views/Request/RequestSection/RequestAuth/DeleteRequestAuthModal.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.d.ts +0 -31
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.script.js +0 -214
- package/dist/views/Request/RequestSection/RequestAuth/OAuth2.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.d.ts +0 -10
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.script.js +0 -106
- package/dist/views/Request/RequestSection/RequestAuth/OAuthScopesInput.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.d.ts +0 -222
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.script.js +0 -216
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuth.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.d.ts +0 -220
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.script.js +0 -116
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTable.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.d.ts +0 -43
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.script.js +0 -73
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthDataTableInput.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.d.ts +0 -31
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.script.js +0 -205
- package/dist/views/Request/RequestSection/RequestAuth/RequestAuthTab.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.d.ts +0 -9
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.js +0 -39
- package/dist/views/Request/RequestSection/RequestAuth/helpers/restore-auth-from-local-storage.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/index.d.ts +0 -4
- package/dist/views/Request/RequestSection/RequestAuth/index.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestAuth/index.js +0 -4
- package/dist/views/Request/RequestSection/RequestBody.vue.d.ts +0 -16
- package/dist/views/Request/RequestSection/RequestBody.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestBody.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestBody.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestBody.vue.script.js +0 -477
- package/dist/views/Request/RequestSection/RequestBody.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.d.ts +0 -15
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.script.js +0 -187
- package/dist/views/Request/RequestSection/RequestCodeExample.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestParams.vue.d.ts +0 -25
- package/dist/views/Request/RequestSection/RequestParams.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestParams.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestParams.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestParams.vue.script.js +0 -180
- package/dist/views/Request/RequestSection/RequestParams.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestPathParams.vue.d.ts +0 -18
- package/dist/views/Request/RequestSection/RequestPathParams.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestPathParams.vue.js +0 -7
- package/dist/views/Request/RequestSection/RequestPathParams.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestPathParams.vue.script.js +0 -115
- package/dist/views/Request/RequestSection/RequestPathParams.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestSection.vue.d.ts +0 -20
- package/dist/views/Request/RequestSection/RequestSection.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestSection.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestSection.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestSection.vue.script.js +0 -297
- package/dist/views/Request/RequestSection/RequestSection.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestTable.vue.d.ts +0 -47
- package/dist/views/Request/RequestSection/RequestTable.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestTable.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestTable.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestTable.vue.script.js +0 -266
- package/dist/views/Request/RequestSection/RequestTable.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.d.ts +0 -8
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.js +0 -9
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.js.map +0 -1
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.script.js +0 -64
- package/dist/views/Request/RequestSection/RequestTableTooltip.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSection/helpers/filter-security-requirements.d.ts +0 -6
- package/dist/views/Request/RequestSection/helpers/filter-security-requirements.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/helpers/filter-security-requirements.js +0 -38
- package/dist/views/Request/RequestSection/helpers/filter-security-requirements.js.map +0 -1
- package/dist/views/Request/RequestSection/helpers/getting-started.d.ts +0 -6
- package/dist/views/Request/RequestSection/helpers/getting-started.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/helpers/getting-started.js +0 -17
- package/dist/views/Request/RequestSection/helpers/getting-started.js.map +0 -1
- package/dist/views/Request/RequestSection/helpers/update-scheme.d.ts +0 -8
- package/dist/views/Request/RequestSection/helpers/update-scheme.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/helpers/update-scheme.js +0 -22
- package/dist/views/Request/RequestSection/helpers/update-scheme.js.map +0 -1
- package/dist/views/Request/RequestSection/index.d.ts +0 -3
- package/dist/views/Request/RequestSection/index.d.ts.map +0 -1
- package/dist/views/Request/RequestSection/index.js +0 -3
- package/dist/views/Request/RequestSidebar.vue.d.ts +0 -16
- package/dist/views/Request/RequestSidebar.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSidebar.vue.js +0 -9
- package/dist/views/Request/RequestSidebar.vue.js.map +0 -1
- package/dist/views/Request/RequestSidebar.vue.script.js +0 -307
- package/dist/views/Request/RequestSidebar.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSidebarItem.vue.d.ts +0 -43
- package/dist/views/Request/RequestSidebarItem.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSidebarItem.vue.js +0 -10
- package/dist/views/Request/RequestSidebarItem.vue.js.map +0 -1
- package/dist/views/Request/RequestSidebarItem.vue.script.js +0 -475
- package/dist/views/Request/RequestSidebarItem.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSidebarItemMenu.vue.d.ts +0 -16
- package/dist/views/Request/RequestSidebarItemMenu.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSidebarItemMenu.vue.js +0 -9
- package/dist/views/Request/RequestSidebarItemMenu.vue.js.map +0 -1
- package/dist/views/Request/RequestSidebarItemMenu.vue.script.js +0 -222
- package/dist/views/Request/RequestSidebarItemMenu.vue.script.js.map +0 -1
- package/dist/views/Request/RequestSubpageHeader.vue.d.ts +0 -22
- package/dist/views/Request/RequestSubpageHeader.vue.d.ts.map +0 -1
- package/dist/views/Request/RequestSubpageHeader.vue.js +0 -9
- package/dist/views/Request/RequestSubpageHeader.vue.js.map +0 -1
- package/dist/views/Request/RequestSubpageHeader.vue.script.js +0 -92
- package/dist/views/Request/RequestSubpageHeader.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.d.ts +0 -12
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.js +0 -7
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.script.js +0 -77
- package/dist/views/Request/ResponseSection/RequestHeaders.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBody.vue.d.ts +0 -14
- package/dist/views/Request/ResponseSection/ResponseBody.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBody.vue.js +0 -9
- package/dist/views/Request/ResponseSection/ResponseBody.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBody.vue.script.js +0 -91
- package/dist/views/Request/ResponseSection/ResponseBody.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.d.ts +0 -9
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.js +0 -7
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.script.js +0 -35
- package/dist/views/Request/ResponseSection/ResponseBodyDownload.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.d.ts +0 -14
- package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.js +0 -14
- package/dist/views/Request/ResponseSection/ResponseBodyInfo.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.d.ts +0 -11
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.js +0 -9
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.script.js +0 -64
- package/dist/views/Request/ResponseSection/ResponseBodyPreview.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.d.ts +0 -9
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.js +0 -9
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.script.js +0 -54
- package/dist/views/Request/ResponseSection/ResponseBodyRaw.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.d.ts +0 -7
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.js +0 -7
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.script.js +0 -85
- package/dist/views/Request/ResponseSection/ResponseBodyStreaming.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.d.ts +0 -11
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.js +0 -7
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.script.js +0 -25
- package/dist/views/Request/ResponseSection/ResponseBodyToggle.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.d.ts +0 -13
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.js +0 -8
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.script.js +0 -51
- package/dist/views/Request/ResponseSection/ResponseBodyVirtual.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.d.ts +0 -11
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.js +0 -7
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.script.js +0 -39
- package/dist/views/Request/ResponseSection/ResponseCookies.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.d.ts +0 -12
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.js +0 -9
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.script.js +0 -98
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.d.ts +0 -12
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.js +0 -7
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.script.js +0 -77
- package/dist/views/Request/ResponseSection/ResponseHeaders.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.d.ts +0 -4
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.js +0 -9
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.script.js +0 -44
- package/dist/views/Request/ResponseSection/ResponseLoadingOverlay.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.d.ts +0 -8
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.js +0 -7
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.script.js +0 -64
- package/dist/views/Request/ResponseSection/ResponseMetaInformation.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseSection.vue.d.ts +0 -15
- package/dist/views/Request/ResponseSection/ResponseSection.vue.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseSection.vue.js +0 -9
- package/dist/views/Request/ResponseSection/ResponseSection.vue.js.map +0 -1
- package/dist/views/Request/ResponseSection/ResponseSection.vue.script.js +0 -206
- package/dist/views/Request/ResponseSection/ResponseSection.vue.script.js.map +0 -1
- package/dist/views/Request/ResponseSection/index.d.ts +0 -3
- package/dist/views/Request/ResponseSection/index.d.ts.map +0 -1
- package/dist/views/Request/ResponseSection/index.js +0 -3
- package/dist/views/Request/components/WorkspaceDropdown.vue.d.ts +0 -4
- package/dist/views/Request/components/WorkspaceDropdown.vue.d.ts.map +0 -1
- package/dist/views/Request/components/WorkspaceDropdown.vue.js +0 -7
- package/dist/views/Request/components/WorkspaceDropdown.vue.js.map +0 -1
- package/dist/views/Request/components/WorkspaceDropdown.vue.script.js +0 -182
- package/dist/views/Request/components/WorkspaceDropdown.vue.script.js.map +0 -1
- package/dist/views/Request/components/index.d.ts +0 -2
- package/dist/views/Request/components/index.d.ts.map +0 -1
- package/dist/views/Request/components/index.js +0 -2
- package/dist/views/Request/consts/index.d.ts +0 -3
- package/dist/views/Request/consts/index.d.ts.map +0 -1
- package/dist/views/Request/consts/index.js +0 -3
- package/dist/views/Request/consts/mediaTypes.d.ts +0 -20
- package/dist/views/Request/consts/mediaTypes.d.ts.map +0 -1
- package/dist/views/Request/consts/mediaTypes.js +0 -231
- package/dist/views/Request/consts/mediaTypes.js.map +0 -1
- package/dist/views/Request/consts/new-auth-options.d.ts +0 -107
- package/dist/views/Request/consts/new-auth-options.d.ts.map +0 -1
- package/dist/views/Request/consts/new-auth-options.js +0 -90
- package/dist/views/Request/consts/new-auth-options.js.map +0 -1
- package/dist/views/Request/handle-drag.d.ts +0 -9
- package/dist/views/Request/handle-drag.d.ts.map +0 -1
- package/dist/views/Request/handle-drag.js +0 -51
- package/dist/views/Request/handle-drag.js.map +0 -1
- package/dist/views/Request/hooks/useOpenApiWatcher.d.ts +0 -9
- package/dist/views/Request/hooks/useOpenApiWatcher.d.ts.map +0 -1
- package/dist/views/Request/hooks/useOpenApiWatcher.js +0 -96
- package/dist/views/Request/hooks/useOpenApiWatcher.js.map +0 -1
- package/dist/views/Request/libs/auth.d.ts +0 -27
- package/dist/views/Request/libs/auth.d.ts.map +0 -1
- package/dist/views/Request/libs/auth.js +0 -74
- package/dist/views/Request/libs/auth.js.map +0 -1
- package/dist/views/Request/libs/index.d.ts +0 -4
- package/dist/views/Request/libs/index.d.ts.map +0 -1
- package/dist/views/Request/libs/index.js +0 -4
- package/dist/views/Request/libs/oauth2.d.ts +0 -43
- package/dist/views/Request/libs/oauth2.d.ts.map +0 -1
- package/dist/views/Request/libs/oauth2.js +0 -178
- package/dist/views/Request/libs/oauth2.js.map +0 -1
- package/dist/views/Request/libs/request.d.ts +0 -21
- package/dist/views/Request/libs/request.d.ts.map +0 -1
- package/dist/views/Request/libs/request.js +0 -46
- package/dist/views/Request/libs/request.js.map +0 -1
- package/dist/views/Request/libs/watch-mode.d.ts +0 -60
- package/dist/views/Request/libs/watch-mode.d.ts.map +0 -1
- package/dist/views/Request/libs/watch-mode.js +0 -375
- package/dist/views/Request/libs/watch-mode.js.map +0 -1
- package/dist/views/Request/types/index.d.ts +0 -2
- package/dist/views/Request/types/index.d.ts.map +0 -1
- package/dist/views/Request/types/index.js +0 -0
- package/dist/views/Request/types/sidebar-item.d.ts +0 -30
- package/dist/views/Request/types/sidebar-item.d.ts.map +0 -1
- package/dist/views/Settings/Settings.vue.d.ts +0 -5
- package/dist/views/Settings/Settings.vue.d.ts.map +0 -1
- package/dist/views/Settings/Settings.vue.js +0 -7
- package/dist/views/Settings/Settings.vue.js.map +0 -1
- package/dist/views/Settings/Settings.vue.script.js +0 -28
- package/dist/views/Settings/Settings.vue.script.js.map +0 -1
- package/dist/views/Settings/SettingsGeneral.vue.d.ts +0 -4
- package/dist/views/Settings/SettingsGeneral.vue.d.ts.map +0 -1
- package/dist/views/Settings/SettingsGeneral.vue.js +0 -7
- package/dist/views/Settings/SettingsGeneral.vue.js.map +0 -1
- package/dist/views/Settings/SettingsGeneral.vue.script.js +0 -241
- package/dist/views/Settings/SettingsGeneral.vue.script.js.map +0 -1
- package/dist/views/Settings/components/SettingsAppearance.vue.d.ts +0 -4
- package/dist/views/Settings/components/SettingsAppearance.vue.d.ts.map +0 -1
- package/dist/views/Settings/components/SettingsAppearance.vue.js +0 -7
- package/dist/views/Settings/components/SettingsAppearance.vue.js.map +0 -1
- package/dist/views/Settings/components/SettingsAppearance.vue.script.js +0 -62
- package/dist/views/Settings/components/SettingsAppearance.vue.script.js.map +0 -1
- package/dist/views/Settings/components/SettingsSection.vue.d.ts +0 -15
- package/dist/views/Settings/components/SettingsSection.vue.d.ts.map +0 -1
- package/dist/views/Settings/components/SettingsSection.vue.js +0 -7
- package/dist/views/Settings/components/SettingsSection.vue.js.map +0 -1
- package/dist/views/Settings/components/SettingsSection.vue.script.js +0 -27
- package/dist/views/Settings/components/SettingsSection.vue.script.js.map +0 -1
- /package/dist/{components → v2/blocks/operation-block/components}/OpenApiClientButton.vue.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","names":[],"sources":["../../../../../src/v2/blocks/scalar-auth-selector-block/helpers/oauth.ts"],"sourcesContent":["import { replaceEnvVariables, replacePathVariables } from '@scalar/helpers/regex/replace-variables'\nimport { isRelativePath } from '@scalar/helpers/url/is-relative-path'\nimport { makeUrlAbsolute } from '@scalar/helpers/url/make-url-absolute'\nimport { shouldUseProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport type { OAuthFlowsObjectSecret } from '@scalar/workspace-store/request-example'\nimport { getServerVariables } from '@scalar/workspace-store/request-example'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { encode, fromUint8Array } from 'js-base64'\n\nimport type { ErrorResponse } from '@/libs/errors'\n\n/** Oauth2 security schemes which are not implicit */\ntype NonImplicitFlows = Omit<OAuthFlowsObjectSecret, 'implicit'>\n\ntype PKCEState = {\n codeVerifier: string\n codeChallenge: string\n codeChallengeMethod: string\n}\n\nexport type OAuth2Tokens = {\n accessToken: string\n refreshToken?: string\n}\n\nconst getServerUrl = (activeServer: ServerObject | null, environmentVariables: Record<string, string> = {}) => {\n return replaceEnvVariables(\n replacePathVariables(activeServer?.url ?? '', getServerVariables(activeServer)),\n environmentVariables,\n )\n}\n\nconst getActiveServerBase = (activeServer: ServerObject | null, environmentVariables: Record<string, string> = {}) => {\n const serverUrl = getServerUrl(activeServer, environmentVariables)\n\n if (!serverUrl) {\n return {}\n }\n\n if (isRelativePath(serverUrl)) {\n return typeof window === 'undefined' ? {} : { basePath: serverUrl }\n }\n\n return { baseUrl: serverUrl }\n}\n\n/**\n * Generates a random string for PKCE code verifier\n *\n * @see https://www.rfc-editor.org/rfc/rfc7636#page-8\n */\nconst generateCodeVerifier = (): string => {\n // Generate 32 random bytes\n const buffer = new Uint8Array(32)\n crypto.getRandomValues(buffer)\n\n // Base64URL encode the bytes\n return fromUint8Array(buffer, true)\n}\n\n/**\n * Creates a code challenge from the code verifier\n */\nconst generateCodeChallenge = async (verifier: string, encoding: 'SHA-256' | 'plain'): Promise<string> => {\n if (encoding === 'plain') {\n return verifier\n }\n\n // If crypto.subtle.digest is not a function, we cannot use SHA-256\n if (typeof crypto?.subtle?.digest !== 'function') {\n console.warn('SHA-256 is only supported when using https, using a plain text code challenge instead.')\n return verifier\n }\n\n // ASCII encoding is just taking the lower 8 bits of each character\n const encoder = new TextEncoder()\n const data = encoder.encode(verifier)\n const digest = await crypto.subtle.digest('SHA-256', data)\n\n // Base64URL encode the bytes\n return fromUint8Array(new Uint8Array(digest), true)\n}\n\n/**\n * Authorize oauth2 flow\n *\n * @returns the resolved oauth2 tokens\n */\nexport const authorizeOauth2 = async (\n flows: OAuthFlowsObjectSecret,\n type: keyof OAuthFlowsObjectSecret,\n selectedScopes: string[],\n /** We use the active server to set a base for relative redirect uris */\n activeServer: ServerObject | null,\n /** If we want to use the proxy */\n proxyUrl: string,\n /** Flattened environment variables used to resolve server URL templates like `{protocol}` */\n environmentVariables: Record<string, string> = {},\n): Promise<ErrorResponse<OAuth2Tokens>> => {\n const flow = flows[type]\n\n try {\n if (!flow) {\n return [new Error('Flow not found'), null]\n }\n\n const scopes = selectedScopes.join(' ')\n\n // Client Credentials or Password Flow\n if (type === 'clientCredentials' || type === 'password') {\n return authorizeServers(\n flows,\n type,\n scopes,\n {\n proxyUrl,\n },\n activeServer,\n environmentVariables,\n )\n }\n\n // Generate a random state string with the length of 8 characters\n const state = (Math.random() + 1).toString(36).substring(2, 10)\n\n const authorizationUrl = makeUrlAbsolute(\n flows[type]!['x-scalar-secret-auth-url'] ?? flows[type]!.authorizationUrl,\n getActiveServerBase(activeServer, environmentVariables),\n )\n\n const url = new URL(authorizationUrl)\n\n /** Special PKCE state */\n let pkce: PKCEState | null = null\n\n // Params unique to the flows\n if (type === 'implicit') {\n url.searchParams.set('response_type', 'token')\n } else if (type === 'authorizationCode') {\n const typedFlow = flows[type]! // Safe to assert due to earlier check\n\n url.searchParams.set('response_type', 'code')\n\n // PKCE\n if (typedFlow['x-usePkce'] !== 'no') {\n const codeVerifier = generateCodeVerifier()\n const codeChallenge = await generateCodeChallenge(codeVerifier, typedFlow['x-usePkce'])\n\n // Set state for later verification\n pkce = {\n codeVerifier,\n codeChallenge,\n codeChallengeMethod: typedFlow['x-usePkce'] === 'SHA-256' ? 'S256' : 'plain',\n }\n\n // Set the code challenge and method on the url\n url.searchParams.set('code_challenge', codeChallenge)\n url.searchParams.set('code_challenge_method', pkce.codeChallengeMethod)\n }\n }\n\n const typedFlow = flows[type]! // Safe to assert due to earlier check\n\n // Handle relative redirect uris\n if (typedFlow['x-scalar-secret-redirect-uri'].startsWith('/')) {\n const baseUrl =\n getServerUrl(activeServer, environmentVariables) || window.location.origin + window.location.pathname\n const redirectUri = new URL(typedFlow['x-scalar-secret-redirect-uri'], baseUrl).toString()\n\n url.searchParams.set('redirect_uri', redirectUri)\n } else {\n url.searchParams.set('redirect_uri', typedFlow['x-scalar-secret-redirect-uri'])\n }\n\n if (flow['x-scalar-security-query']) {\n Object.keys(flow['x-scalar-security-query']).forEach((key: string): void => {\n const value = flow['x-scalar-security-query']?.[key]\n if (!value) {\n return\n }\n url.searchParams.set(key, value)\n })\n }\n\n // Common to all flows\n url.searchParams.set('client_id', flow['x-scalar-secret-client-id'])\n url.searchParams.set('state', state)\n if (scopes) {\n url.searchParams.set('scope', scopes)\n }\n\n const windowFeatures = 'left=100,top=100,width=800,height=600'\n const authWindow = window.open(url, 'openAuth2Window', windowFeatures)\n\n // Open up a window and poll until closed or we have the data we want\n if (authWindow) {\n // We need to return a promise here due to the setInterval\n return new Promise<ErrorResponse<OAuth2Tokens>>((resolve) => {\n const checkWindowClosed = setInterval(() => {\n let accessToken: string | null = null\n let refreshToken: string | null = null\n let code: string | null = null\n let error: string | null = null\n let errorDescription: string | null = null\n\n try {\n const urlParams = new URL(authWindow.location.href).searchParams\n const tokenName = flow['x-tokenName'] || 'access_token'\n accessToken = urlParams.get(tokenName)\n refreshToken = urlParams.get('refresh_token')\n code = urlParams.get('code')\n\n error = urlParams.get('error')\n errorDescription = urlParams.get('error_description')\n\n // We may get the properties in a hash\n const hashParams = new URLSearchParams(authWindow.location.href.split('#')[1])\n accessToken ||= hashParams.get(tokenName)\n refreshToken ||= hashParams.get('refresh_token')\n code ||= hashParams.get('code')\n error ||= hashParams.get('error')\n errorDescription ||= hashParams.get('error_description')\n } catch (_e) {\n // Ignore CORS error from popup\n }\n\n // The window has closed OR we have what we are looking for so we stop polling\n if (authWindow.closed || accessToken || code || error) {\n clearInterval(checkWindowClosed)\n authWindow.close()\n\n if (error) {\n resolve([new Error(`OAuth error: ${error}${errorDescription ? ` (${errorDescription})` : ''}`), null])\n }\n\n // Implicit Flow\n else if (accessToken) {\n // State is a hash fragment and cannot be found through search params\n const _state = authWindow.location.href.match(/state=([^&]*)/)?.[1]\n\n if (_state === state) {\n resolve([null, { accessToken, ...(refreshToken ? { refreshToken } : {}) }])\n } else {\n resolve([new Error('State mismatch'), null])\n }\n }\n\n // Authorization Code Server Flow\n else if (code && type === 'authorizationCode') {\n const _state = new URL(authWindow.location.href).searchParams.get('state')\n\n if (_state === state) {\n // biome-ignore lint/nursery/noFloatingPromises: output of authorizeServers must be returned\n authorizeServers(\n flows,\n type,\n scopes,\n {\n code,\n pkce,\n proxyUrl,\n },\n activeServer,\n environmentVariables,\n ).then(resolve)\n } else {\n resolve([new Error('State mismatch'), null])\n }\n }\n // User closed window without authorizing\n else {\n clearInterval(checkWindowClosed)\n resolve([new Error('Window was closed without granting authorization'), null])\n }\n }\n }, 200)\n })\n }\n return [new Error('Failed to open auth window'), null]\n } catch (_) {\n return [new Error('Failed to authorize oauth2 flow'), null]\n }\n}\n\n/**\n * Makes the BE authorization call to grab the token server to server\n * Used for clientCredentials and authorizationCode\n */\nconst authorizeServers = async (\n flows: NonImplicitFlows,\n type: keyof NonImplicitFlows,\n scopes: string,\n {\n code,\n pkce,\n proxyUrl,\n }: {\n code?: string\n pkce?: PKCEState | null\n proxyUrl?: string\n } = {},\n activeServer: ServerObject | null,\n environmentVariables: Record<string, string> = {},\n): Promise<ErrorResponse<OAuth2Tokens>> => {\n const flow = flows[type]\n\n if (!flow) {\n return [new Error('OAuth2 flow was not defined'), null]\n }\n\n const formData = new URLSearchParams()\n\n // Only client credentials and password flows support scopes in the token request\n if (scopes && (type === 'clientCredentials' || type === 'password')) {\n formData.set('scope', scopes)\n }\n\n /** Where to add the credentials */\n const addCredentialsToBody = flow['x-scalar-credentials-location'] === 'body'\n const hasClientSecret = Boolean(flow['x-scalar-secret-client-secret'])\n /**\n * Public authorization-code clients still need client_id in the token body.\n * We only send it implicitly for that case to avoid conflicting with Basic auth.\n */\n const shouldSendClientIdInBody = addCredentialsToBody || (type === 'authorizationCode' && !hasClientSecret)\n\n if (shouldSendClientIdInBody) {\n formData.set('client_id', flow['x-scalar-secret-client-id'])\n }\n if (addCredentialsToBody && hasClientSecret) {\n formData.set('client_secret', flow['x-scalar-secret-client-secret'])\n }\n if ('x-scalar-secret-redirect-uri' in flow && flow['x-scalar-secret-redirect-uri']) {\n formData.set('redirect_uri', flow['x-scalar-secret-redirect-uri'])\n }\n\n // Authorization Code\n if (code) {\n formData.set('code', code)\n formData.set('grant_type', 'authorization_code')\n\n // PKCE\n if (pkce) {\n formData.set('code_verifier', pkce.codeVerifier)\n }\n }\n // Password\n else if (type === 'password') {\n const typedFlow = flows[type]! // Safe to assert due to earlier check\n formData.set('grant_type', 'password')\n formData.set('username', typedFlow['x-scalar-secret-username'])\n formData.set('password', typedFlow['x-scalar-secret-password'])\n }\n // Client Credentials\n else {\n formData.set('grant_type', 'client_credentials')\n }\n\n // Additional request body parameters\n if (flow['x-scalar-security-body']) {\n Object.entries(flow['x-scalar-security-body']).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n formData.set(key, String(value))\n }\n })\n }\n\n try {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n }\n\n // Add client id + secret to headers for confidential clients.\n if (!addCredentialsToBody && hasClientSecret) {\n headers.Authorization = `Basic ${encode(`${flow['x-scalar-secret-client-id']}:${flow['x-scalar-secret-client-secret']}`)}`\n }\n\n // Check if we should use the proxy\n const tokenUrl = makeUrlAbsolute(\n flow['x-scalar-secret-token-url'] ?? flow.tokenUrl,\n getActiveServerBase(activeServer, environmentVariables),\n )\n const url = shouldUseProxy(proxyUrl, tokenUrl)\n ? `${proxyUrl}?${new URLSearchParams([['scalar_url', tokenUrl]]).toString()}`\n : tokenUrl\n\n // Make the call\n const resp = await fetch(url, {\n method: 'POST',\n headers,\n body: formData,\n })\n const responseData = await resp.json()\n\n // Use custom token name if specified, otherwise default to access_token\n const tokenName = flow['x-tokenName'] || 'access_token'\n const accessToken = responseData[tokenName]\n const refreshToken = responseData.refresh_token\n\n return [null, { accessToken, ...(typeof refreshToken === 'string' ? { refreshToken } : {}) }]\n } catch {\n return [new Error('Failed to get an access token. Please check your credentials.'), null]\n }\n}\n"],"mappings":";;;;;;;AAyBA,IAAM,gBAAgB,cAAmC,uBAA+C,EAAE,KAAK;AAC7G,QAAO,oBACL,qBAAqB,cAAc,OAAO,IAAI,mBAAmB,aAAa,CAAC,EAC/E,qBACD;;AAGH,IAAM,uBAAuB,cAAmC,uBAA+C,EAAE,KAAK;CACpH,MAAM,YAAY,aAAa,cAAc,qBAAqB;AAElE,KAAI,CAAC,UACH,QAAO,EAAE;AAGX,KAAI,eAAe,UAAU,CAC3B,QAAO,OAAO,WAAW,cAAc,EAAE,GAAG,EAAE,UAAU,WAAW;AAGrE,QAAO,EAAE,SAAS,WAAW;;;;;;;AAQ/B,IAAM,6BAAqC;CAEzC,MAAM,SAAS,IAAI,WAAW,GAAG;AACjC,QAAO,gBAAgB,OAAO;AAG9B,QAAO,eAAe,QAAQ,KAAK;;;;;AAMrC,IAAM,wBAAwB,OAAO,UAAkB,aAAmD;AACxG,KAAI,aAAa,QACf,QAAO;AAIT,KAAI,OAAO,QAAQ,QAAQ,WAAW,YAAY;AAChD,UAAQ,KAAK,yFAAyF;AACtG,SAAO;;CAKT,MAAM,OADU,IAAI,aAAa,CACZ,OAAO,SAAS;CACrC,MAAM,SAAS,MAAM,OAAO,OAAO,OAAO,WAAW,KAAK;AAG1D,QAAO,eAAe,IAAI,WAAW,OAAO,EAAE,KAAK;;;;;;;AAQrD,IAAa,kBAAkB,OAC7B,OACA,MACA,gBAEA,cAEA,UAEA,uBAA+C,EAAE,KACR;CACzC,MAAM,OAAO,MAAM;AAEnB,KAAI;AACF,MAAI,CAAC,KACH,QAAO,iBAAC,IAAI,MAAM,iBAAiB,EAAE,KAAK;EAG5C,MAAM,SAAS,eAAe,KAAK,IAAI;AAGvC,MAAI,SAAS,uBAAuB,SAAS,WAC3C,QAAO,iBACL,OACA,MACA,QACA,EACE,UACD,EACD,cACA,qBACD;EAIH,MAAM,SAAS,KAAK,QAAQ,GAAG,GAAG,SAAS,GAAG,CAAC,UAAU,GAAG,GAAG;EAE/D,MAAM,mBAAmB,gBACvB,MAAM,MAAO,+BAA+B,MAAM,MAAO,kBACzD,oBAAoB,cAAc,qBAAqB,CACxD;EAED,MAAM,MAAM,IAAI,IAAI,iBAAiB;;EAGrC,IAAI,OAAyB;AAG7B,MAAI,SAAS,WACX,KAAI,aAAa,IAAI,iBAAiB,QAAQ;WACrC,SAAS,qBAAqB;GACvC,MAAM,YAAY,MAAM;AAExB,OAAI,aAAa,IAAI,iBAAiB,OAAO;AAG7C,OAAI,UAAU,iBAAiB,MAAM;IACnC,MAAM,eAAe,sBAAsB;IAC3C,MAAM,gBAAgB,MAAM,sBAAsB,cAAc,UAAU,aAAa;AAGvF,WAAO;KACL;KACA;KACA,qBAAqB,UAAU,iBAAiB,YAAY,SAAS;KACtE;AAGD,QAAI,aAAa,IAAI,kBAAkB,cAAc;AACrD,QAAI,aAAa,IAAI,yBAAyB,KAAK,oBAAoB;;;EAI3E,MAAM,YAAY,MAAM;AAGxB,MAAI,UAAU,gCAAgC,WAAW,IAAI,EAAE;GAC7D,MAAM,UACJ,aAAa,cAAc,qBAAqB,IAAI,OAAO,SAAS,SAAS,OAAO,SAAS;GAC/F,MAAM,cAAc,IAAI,IAAI,UAAU,iCAAiC,QAAQ,CAAC,UAAU;AAE1F,OAAI,aAAa,IAAI,gBAAgB,YAAY;QAEjD,KAAI,aAAa,IAAI,gBAAgB,UAAU,gCAAgC;AAGjF,MAAI,KAAK,2BACP,QAAO,KAAK,KAAK,2BAA2B,CAAC,SAAS,QAAsB;GAC1E,MAAM,QAAQ,KAAK,6BAA6B;AAChD,OAAI,CAAC,MACH;AAEF,OAAI,aAAa,IAAI,KAAK,MAAM;IAChC;AAIJ,MAAI,aAAa,IAAI,aAAa,KAAK,6BAA6B;AACpE,MAAI,aAAa,IAAI,SAAS,MAAM;AACpC,MAAI,OACF,KAAI,aAAa,IAAI,SAAS,OAAO;EAIvC,MAAM,aAAa,OAAO,KAAK,KAAK,mBADb,wCAC+C;AAGtE,MAAI,WAEF,QAAO,IAAI,SAAsC,YAAY;GAC3D,MAAM,oBAAoB,kBAAkB;IAC1C,IAAI,cAA6B;IACjC,IAAI,eAA8B;IAClC,IAAI,OAAsB;IAC1B,IAAI,QAAuB;IAC3B,IAAI,mBAAkC;AAEtC,QAAI;KACF,MAAM,YAAY,IAAI,IAAI,WAAW,SAAS,KAAK,CAAC;KACpD,MAAM,YAAY,KAAK,kBAAkB;AACzC,mBAAc,UAAU,IAAI,UAAU;AACtC,oBAAe,UAAU,IAAI,gBAAgB;AAC7C,YAAO,UAAU,IAAI,OAAO;AAE5B,aAAQ,UAAU,IAAI,QAAQ;AAC9B,wBAAmB,UAAU,IAAI,oBAAoB;KAGrD,MAAM,aAAa,IAAI,gBAAgB,WAAW,SAAS,KAAK,MAAM,IAAI,CAAC,GAAG;AAC9E,qBAAgB,WAAW,IAAI,UAAU;AACzC,sBAAiB,WAAW,IAAI,gBAAgB;AAChD,cAAS,WAAW,IAAI,OAAO;AAC/B,eAAU,WAAW,IAAI,QAAQ;AACjC,0BAAqB,WAAW,IAAI,oBAAoB;aACjD,IAAI;AAKb,QAAI,WAAW,UAAU,eAAe,QAAQ,OAAO;AACrD,mBAAc,kBAAkB;AAChC,gBAAW,OAAO;AAElB,SAAI,MACF,SAAQ,iBAAC,IAAI,MAAM,gBAAgB,QAAQ,mBAAmB,KAAK,iBAAiB,KAAK,KAAK,EAAE,KAAK,CAAC;cAI/F,YAIP,KAFe,WAAW,SAAS,KAAK,MAAM,gBAAgB,GAAG,OAElD,MACb,SAAQ,CAAC,MAAM;MAAE;MAAa,GAAI,eAAe,EAAE,cAAc,GAAG,EAAE;MAAG,CAAC,CAAC;SAE3E,SAAQ,iBAAC,IAAI,MAAM,iBAAiB,EAAE,KAAK,CAAC;cAKvC,QAAQ,SAAS,oBAGxB,KAFe,IAAI,IAAI,WAAW,SAAS,KAAK,CAAC,aAAa,IAAI,QAAQ,KAE3D,MAEb,kBACE,OACA,MACA,QACA;MACE;MACA;MACA;MACD,EACD,cACA,qBACD,CAAC,KAAK,QAAQ;SAEf,SAAQ,iBAAC,IAAI,MAAM,iBAAiB,EAAE,KAAK,CAAC;UAI3C;AACH,oBAAc,kBAAkB;AAChC,cAAQ,iBAAC,IAAI,MAAM,mDAAmD,EAAE,KAAK,CAAC;;;MAGjF,IAAI;IACP;AAEJ,SAAO,iBAAC,IAAI,MAAM,6BAA6B,EAAE,KAAK;UAC/C,GAAG;AACV,SAAO,iBAAC,IAAI,MAAM,kCAAkC,EAAE,KAAK;;;;;;;AAQ/D,IAAM,mBAAmB,OACvB,OACA,MACA,QACA,EACE,MACA,MACA,aAKE,EAAE,EACN,cACA,uBAA+C,EAAE,KACR;CACzC,MAAM,OAAO,MAAM;AAEnB,KAAI,CAAC,KACH,QAAO,iBAAC,IAAI,MAAM,8BAA8B,EAAE,KAAK;CAGzD,MAAM,WAAW,IAAI,iBAAiB;AAGtC,KAAI,WAAW,SAAS,uBAAuB,SAAS,YACtD,UAAS,IAAI,SAAS,OAAO;;CAI/B,MAAM,uBAAuB,KAAK,qCAAqC;CACvE,MAAM,kBAAkB,QAAQ,KAAK,iCAAiC;AAOtE,KAFiC,wBAAyB,SAAS,uBAAuB,CAAC,gBAGzF,UAAS,IAAI,aAAa,KAAK,6BAA6B;AAE9D,KAAI,wBAAwB,gBAC1B,UAAS,IAAI,iBAAiB,KAAK,iCAAiC;AAEtE,KAAI,kCAAkC,QAAQ,KAAK,gCACjD,UAAS,IAAI,gBAAgB,KAAK,gCAAgC;AAIpE,KAAI,MAAM;AACR,WAAS,IAAI,QAAQ,KAAK;AAC1B,WAAS,IAAI,cAAc,qBAAqB;AAGhD,MAAI,KACF,UAAS,IAAI,iBAAiB,KAAK,aAAa;YAI3C,SAAS,YAAY;EAC5B,MAAM,YAAY,MAAM;AACxB,WAAS,IAAI,cAAc,WAAW;AACtC,WAAS,IAAI,YAAY,UAAU,4BAA4B;AAC/D,WAAS,IAAI,YAAY,UAAU,4BAA4B;OAI/D,UAAS,IAAI,cAAc,qBAAqB;AAIlD,KAAI,KAAK,0BACP,QAAO,QAAQ,KAAK,0BAA0B,CAAC,SAAS,CAAC,KAAK,WAAW;AACvE,MAAI,UAAU,KAAA,KAAa,UAAU,KACnC,UAAS,IAAI,KAAK,OAAO,MAAM,CAAC;GAElC;AAGJ,KAAI;EACF,MAAM,UAAkC,EACtC,gBAAgB,qCACjB;AAGD,MAAI,CAAC,wBAAwB,gBAC3B,SAAQ,gBAAgB,SAAS,OAAO,GAAG,KAAK,6BAA6B,GAAG,KAAK,mCAAmC;EAI1H,MAAM,WAAW,gBACf,KAAK,gCAAgC,KAAK,UAC1C,oBAAoB,cAAc,qBAAqB,CACxD;EACD,MAAM,MAAM,eAAe,UAAU,SAAS,GAC1C,GAAG,SAAS,GAAG,IAAI,gBAAgB,CAAC,CAAC,cAAc,SAAS,CAAC,CAAC,CAAC,UAAU,KACzE;EAQJ,MAAM,eAAe,OALR,MAAM,MAAM,KAAK;GAC5B,QAAQ;GACR;GACA,MAAM;GACP,CAAC,EAC8B,MAAM;EAItC,MAAM,cAAc,aADF,KAAK,kBAAkB;EAEzC,MAAM,eAAe,aAAa;AAElC,SAAO,CAAC,MAAM;GAAE;GAAa,GAAI,OAAO,iBAAiB,WAAW,EAAE,cAAc,GAAG,EAAE;GAAG,CAAC;SACvF;AACN,SAAO,iBAAC,IAAI,MAAM,gEAAgE,EAAE,KAAK"}
|
|
1
|
+
{"version":3,"file":"oauth.js","names":[],"sources":["../../../../../src/v2/blocks/scalar-auth-selector-block/helpers/oauth.ts"],"sourcesContent":["import type { ErrorResponse } from '@scalar/helpers/errors/normalize-error'\nimport { replaceEnvVariables, replacePathVariables } from '@scalar/helpers/regex/replace-variables'\nimport { isRelativePath } from '@scalar/helpers/url/is-relative-path'\nimport { makeUrlAbsolute } from '@scalar/helpers/url/make-url-absolute'\nimport { shouldUseProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport type { OAuthFlowsObjectSecret } from '@scalar/workspace-store/request-example'\nimport { getServerVariables } from '@scalar/workspace-store/request-example'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { encode, fromUint8Array } from 'js-base64'\n\n/** Oauth2 security schemes which are not implicit */\ntype NonImplicitFlows = Omit<OAuthFlowsObjectSecret, 'implicit'>\n\ntype PKCEState = {\n codeVerifier: string\n codeChallenge: string\n codeChallengeMethod: string\n}\n\nexport type OAuth2Tokens = {\n accessToken: string\n refreshToken?: string\n}\n\nconst getServerUrl = (activeServer: ServerObject | null, environmentVariables: Record<string, string> = {}) => {\n return replaceEnvVariables(\n replacePathVariables(activeServer?.url ?? '', getServerVariables(activeServer)),\n environmentVariables,\n )\n}\n\nconst getActiveServerBase = (activeServer: ServerObject | null, environmentVariables: Record<string, string> = {}) => {\n const serverUrl = getServerUrl(activeServer, environmentVariables)\n\n if (!serverUrl) {\n return {}\n }\n\n if (isRelativePath(serverUrl)) {\n return typeof window === 'undefined' ? {} : { basePath: serverUrl }\n }\n\n return { baseUrl: serverUrl }\n}\n\n/**\n * Generates a random string for PKCE code verifier\n *\n * @see https://www.rfc-editor.org/rfc/rfc7636#page-8\n */\nconst generateCodeVerifier = (): string => {\n // Generate 32 random bytes\n const buffer = new Uint8Array(32)\n crypto.getRandomValues(buffer)\n\n // Base64URL encode the bytes\n return fromUint8Array(buffer, true)\n}\n\n/**\n * Creates a code challenge from the code verifier\n */\nconst generateCodeChallenge = async (verifier: string, encoding: 'SHA-256' | 'plain'): Promise<string> => {\n if (encoding === 'plain') {\n return verifier\n }\n\n // If crypto.subtle.digest is not a function, we cannot use SHA-256\n if (typeof crypto?.subtle?.digest !== 'function') {\n console.warn('SHA-256 is only supported when using https, using a plain text code challenge instead.')\n return verifier\n }\n\n // ASCII encoding is just taking the lower 8 bits of each character\n const encoder = new TextEncoder()\n const data = encoder.encode(verifier)\n const digest = await crypto.subtle.digest('SHA-256', data)\n\n // Base64URL encode the bytes\n return fromUint8Array(new Uint8Array(digest), true)\n}\n\n/**\n * Authorize oauth2 flow\n *\n * @returns the resolved oauth2 tokens\n */\nexport const authorizeOauth2 = async (\n flows: OAuthFlowsObjectSecret,\n type: keyof OAuthFlowsObjectSecret,\n selectedScopes: string[],\n /** We use the active server to set a base for relative redirect uris */\n activeServer: ServerObject | null,\n /** If we want to use the proxy */\n proxyUrl: string,\n /** Flattened environment variables used to resolve server URL templates like `{protocol}` */\n environmentVariables: Record<string, string> = {},\n): Promise<ErrorResponse<OAuth2Tokens>> => {\n const flow = flows[type]\n\n try {\n if (!flow) {\n return [new Error('Flow not found'), null]\n }\n\n const scopes = selectedScopes.join(' ')\n\n // Client Credentials or Password Flow\n if (type === 'clientCredentials' || type === 'password') {\n return authorizeServers(\n flows,\n type,\n scopes,\n {\n proxyUrl,\n },\n activeServer,\n environmentVariables,\n )\n }\n\n // Generate a random state string with the length of 8 characters\n const state = (Math.random() + 1).toString(36).substring(2, 10)\n\n const authorizationUrl = makeUrlAbsolute(\n flows[type]!['x-scalar-secret-auth-url'] ?? flows[type]!.authorizationUrl,\n getActiveServerBase(activeServer, environmentVariables),\n )\n\n const url = new URL(authorizationUrl)\n\n /** Special PKCE state */\n let pkce: PKCEState | null = null\n\n // Params unique to the flows\n if (type === 'implicit') {\n url.searchParams.set('response_type', 'token')\n } else if (type === 'authorizationCode') {\n const typedFlow = flows[type]! // Safe to assert due to earlier check\n\n url.searchParams.set('response_type', 'code')\n\n // PKCE\n if (typedFlow['x-usePkce'] !== 'no') {\n const codeVerifier = generateCodeVerifier()\n const codeChallenge = await generateCodeChallenge(codeVerifier, typedFlow['x-usePkce'])\n\n // Set state for later verification\n pkce = {\n codeVerifier,\n codeChallenge,\n codeChallengeMethod: typedFlow['x-usePkce'] === 'SHA-256' ? 'S256' : 'plain',\n }\n\n // Set the code challenge and method on the url\n url.searchParams.set('code_challenge', codeChallenge)\n url.searchParams.set('code_challenge_method', pkce.codeChallengeMethod)\n }\n }\n\n const typedFlow = flows[type]! // Safe to assert due to earlier check\n\n // Handle relative redirect uris\n if (typedFlow['x-scalar-secret-redirect-uri'].startsWith('/')) {\n const baseUrl =\n getServerUrl(activeServer, environmentVariables) || window.location.origin + window.location.pathname\n const redirectUri = new URL(typedFlow['x-scalar-secret-redirect-uri'], baseUrl).toString()\n\n url.searchParams.set('redirect_uri', redirectUri)\n } else {\n url.searchParams.set('redirect_uri', typedFlow['x-scalar-secret-redirect-uri'])\n }\n\n if (flow['x-scalar-security-query']) {\n Object.keys(flow['x-scalar-security-query']).forEach((key: string): void => {\n const value = flow['x-scalar-security-query']?.[key]\n if (!value) {\n return\n }\n url.searchParams.set(key, value)\n })\n }\n\n // Common to all flows\n url.searchParams.set('client_id', flow['x-scalar-secret-client-id'])\n url.searchParams.set('state', state)\n if (scopes) {\n url.searchParams.set('scope', scopes)\n }\n\n const windowFeatures = 'left=100,top=100,width=800,height=600'\n const authWindow = window.open(url, 'openAuth2Window', windowFeatures)\n\n // Open up a window and poll until closed or we have the data we want\n if (authWindow) {\n // We need to return a promise here due to the setInterval\n return new Promise<ErrorResponse<OAuth2Tokens>>((resolve) => {\n const checkWindowClosed = setInterval(() => {\n let accessToken: string | null = null\n let refreshToken: string | null = null\n let code: string | null = null\n let error: string | null = null\n let errorDescription: string | null = null\n\n try {\n const urlParams = new URL(authWindow.location.href).searchParams\n const tokenName = flow['x-tokenName'] || 'access_token'\n accessToken = urlParams.get(tokenName)\n refreshToken = urlParams.get('refresh_token')\n code = urlParams.get('code')\n\n error = urlParams.get('error')\n errorDescription = urlParams.get('error_description')\n\n // We may get the properties in a hash\n const hashParams = new URLSearchParams(authWindow.location.href.split('#')[1])\n accessToken ||= hashParams.get(tokenName)\n refreshToken ||= hashParams.get('refresh_token')\n code ||= hashParams.get('code')\n error ||= hashParams.get('error')\n errorDescription ||= hashParams.get('error_description')\n } catch (_e) {\n // Ignore CORS error from popup\n }\n\n // The window has closed OR we have what we are looking for so we stop polling\n if (authWindow.closed || accessToken || code || error) {\n clearInterval(checkWindowClosed)\n authWindow.close()\n\n if (error) {\n resolve([new Error(`OAuth error: ${error}${errorDescription ? ` (${errorDescription})` : ''}`), null])\n }\n\n // Implicit Flow\n else if (accessToken) {\n // State is a hash fragment and cannot be found through search params\n const _state = authWindow.location.href.match(/state=([^&]*)/)?.[1]\n\n if (_state === state) {\n resolve([null, { accessToken, ...(refreshToken ? { refreshToken } : {}) }])\n } else {\n resolve([new Error('State mismatch'), null])\n }\n }\n\n // Authorization Code Server Flow\n else if (code && type === 'authorizationCode') {\n const _state = new URL(authWindow.location.href).searchParams.get('state')\n\n if (_state === state) {\n // biome-ignore lint/nursery/noFloatingPromises: output of authorizeServers must be returned\n authorizeServers(\n flows,\n type,\n scopes,\n {\n code,\n pkce,\n proxyUrl,\n },\n activeServer,\n environmentVariables,\n ).then(resolve)\n } else {\n resolve([new Error('State mismatch'), null])\n }\n }\n // User closed window without authorizing\n else {\n clearInterval(checkWindowClosed)\n resolve([new Error('Window was closed without granting authorization'), null])\n }\n }\n }, 200)\n })\n }\n return [new Error('Failed to open auth window'), null]\n } catch (_) {\n return [new Error('Failed to authorize oauth2 flow'), null]\n }\n}\n\n/**\n * Makes the BE authorization call to grab the token server to server\n * Used for clientCredentials and authorizationCode\n */\nconst authorizeServers = async (\n flows: NonImplicitFlows,\n type: keyof NonImplicitFlows,\n scopes: string,\n {\n code,\n pkce,\n proxyUrl,\n }: {\n code?: string\n pkce?: PKCEState | null\n proxyUrl?: string\n } = {},\n activeServer: ServerObject | null,\n environmentVariables: Record<string, string> = {},\n): Promise<ErrorResponse<OAuth2Tokens>> => {\n const flow = flows[type]\n\n if (!flow) {\n return [new Error('OAuth2 flow was not defined'), null]\n }\n\n const formData = new URLSearchParams()\n\n // Only client credentials and password flows support scopes in the token request\n if (scopes && (type === 'clientCredentials' || type === 'password')) {\n formData.set('scope', scopes)\n }\n\n /** Where to add the credentials */\n const addCredentialsToBody = flow['x-scalar-credentials-location'] === 'body'\n const hasClientSecret = Boolean(flow['x-scalar-secret-client-secret'])\n /**\n * Public authorization-code clients still need client_id in the token body.\n * We only send it implicitly for that case to avoid conflicting with Basic auth.\n */\n const shouldSendClientIdInBody = addCredentialsToBody || (type === 'authorizationCode' && !hasClientSecret)\n\n if (shouldSendClientIdInBody) {\n formData.set('client_id', flow['x-scalar-secret-client-id'])\n }\n if (addCredentialsToBody && hasClientSecret) {\n formData.set('client_secret', flow['x-scalar-secret-client-secret'])\n }\n if ('x-scalar-secret-redirect-uri' in flow && flow['x-scalar-secret-redirect-uri']) {\n formData.set('redirect_uri', flow['x-scalar-secret-redirect-uri'])\n }\n\n // Authorization Code\n if (code) {\n formData.set('code', code)\n formData.set('grant_type', 'authorization_code')\n\n // PKCE\n if (pkce) {\n formData.set('code_verifier', pkce.codeVerifier)\n }\n }\n // Password\n else if (type === 'password') {\n const typedFlow = flows[type]! // Safe to assert due to earlier check\n formData.set('grant_type', 'password')\n formData.set('username', typedFlow['x-scalar-secret-username'])\n formData.set('password', typedFlow['x-scalar-secret-password'])\n }\n // Client Credentials\n else {\n formData.set('grant_type', 'client_credentials')\n }\n\n // Additional request body parameters\n if (flow['x-scalar-security-body']) {\n Object.entries(flow['x-scalar-security-body']).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n formData.set(key, String(value))\n }\n })\n }\n\n try {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n }\n\n // Add client id + secret to headers for confidential clients.\n if (!addCredentialsToBody && hasClientSecret) {\n headers.Authorization = `Basic ${encode(`${flow['x-scalar-secret-client-id']}:${flow['x-scalar-secret-client-secret']}`)}`\n }\n\n // Check if we should use the proxy\n const tokenUrl = makeUrlAbsolute(\n flow['x-scalar-secret-token-url'] ?? flow.tokenUrl,\n getActiveServerBase(activeServer, environmentVariables),\n )\n const url = shouldUseProxy(proxyUrl, tokenUrl)\n ? `${proxyUrl}?${new URLSearchParams([['scalar_url', tokenUrl]]).toString()}`\n : tokenUrl\n\n // Make the call\n const resp = await fetch(url, {\n method: 'POST',\n headers,\n body: formData,\n })\n const responseData = await resp.json()\n\n // Use custom token name if specified, otherwise default to access_token\n const tokenName = flow['x-tokenName'] || 'access_token'\n const accessToken = responseData[tokenName]\n const refreshToken = responseData.refresh_token\n\n return [null, { accessToken, ...(typeof refreshToken === 'string' ? { refreshToken } : {}) }]\n } catch {\n return [new Error('Failed to get an access token. Please check your credentials.'), null]\n }\n}\n"],"mappings":"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"}
|
package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApiClientConfiguration } from '@scalar/types/api-reference';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the default OAuth2 redirect URI.
|
|
4
|
+
*
|
|
5
|
+
* Priority:
|
|
6
|
+
* 1. Explicit oauth2RedirectUri config override.
|
|
7
|
+
* 2. Empty string in non-browser and file:// contexts.
|
|
8
|
+
* 3. Browser origin + pathname fallback.
|
|
9
|
+
*/
|
|
10
|
+
export declare const resolveDefaultOAuth2RedirectUri: (config: Pick<ApiClientConfiguration, "oauth2RedirectUri">) => string;
|
|
11
|
+
//# sourceMappingURL=resolve-default-oauth2-redirect-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-default-oauth2-redirect-url.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAAI,QAAQ,IAAI,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,KAAG,MAU3G,CAAA"}
|
package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.ts
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the default OAuth2 redirect URI.
|
|
4
|
+
*
|
|
5
|
+
* Priority:
|
|
6
|
+
* 1. Explicit oauth2RedirectUri config override.
|
|
7
|
+
* 2. Empty string in non-browser and file:// contexts.
|
|
8
|
+
* 3. Browser origin + pathname fallback.
|
|
9
|
+
*/
|
|
10
|
+
var resolveDefaultOAuth2RedirectUri = (config) => {
|
|
11
|
+
if (config.oauth2RedirectUri) return config.oauth2RedirectUri;
|
|
12
|
+
if (typeof window === "undefined" || window.location.protocol === "file:") return "";
|
|
13
|
+
return window.location.origin + window.location.pathname;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { resolveDefaultOAuth2RedirectUri };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=resolve-default-oauth2-redirect-url.js.map
|
package/dist/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-default-oauth2-redirect-url.js","names":[],"sources":["../../../../../src/v2/blocks/scalar-auth-selector-block/helpers/resolve-default-oauth2-redirect-url.ts"],"sourcesContent":["import type { ApiClientConfiguration } from '@scalar/types/api-reference'\n\n/**\n * Resolve the default OAuth2 redirect URI.\n *\n * Priority:\n * 1. Explicit oauth2RedirectUri config override.\n * 2. Empty string in non-browser and file:// contexts.\n * 3. Browser origin + pathname fallback.\n */\nexport const resolveDefaultOAuth2RedirectUri = (config: Pick<ApiClientConfiguration, 'oauth2RedirectUri'>): string => {\n if (config.oauth2RedirectUri) {\n return config.oauth2RedirectUri\n }\n\n if (typeof window === 'undefined' || window.location.protocol === 'file:') {\n return ''\n }\n\n return window.location.origin + window.location.pathname\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,mCAAmC,WAAsE;AACpH,KAAI,OAAO,kBACT,QAAO,OAAO;AAGhB,KAAI,OAAO,WAAW,eAAe,OAAO,SAAS,aAAa,QAChE,QAAO;AAGT,QAAO,OAAO,SAAS,SAAS,OAAO,SAAS"}
|
|
@@ -11,7 +11,8 @@ export type CodeInputModelValue = string | number | boolean | Array<string | num
|
|
|
11
11
|
* - Select mode: Dropdown for enums, booleans, or examples
|
|
12
12
|
* - Editor mode: CodeMirror with environment variable support
|
|
13
13
|
*
|
|
14
|
-
* Type `{{` to trigger
|
|
14
|
+
* Type `{{` to trigger autocomplete for environment variables and runtime context functions
|
|
15
|
+
* (for example `{{$guid}}`) when an environment is provided.
|
|
15
16
|
* It takes in any data but always will emit a string value,
|
|
16
17
|
* this string should then be parsed in accordance to the schema or content type.
|
|
17
18
|
*
|
|
@@ -102,7 +103,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
102
103
|
cursorPosition: () => number | undefined;
|
|
103
104
|
serializeValue: (value: CodeInputModelValue) => string;
|
|
104
105
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
105
|
-
submit: (value: string, event:
|
|
106
|
+
submit: (value: string, event: FocusEvent | KeyboardEvent) => any;
|
|
106
107
|
"update:modelValue": (value: string) => any;
|
|
107
108
|
blur: (value: string, event: FocusEvent) => any;
|
|
108
109
|
navigate: (route: {
|
|
@@ -164,7 +165,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
164
165
|
/** Put a linethrough on the input text */
|
|
165
166
|
linethrough?: boolean;
|
|
166
167
|
}> & Readonly<{
|
|
167
|
-
onSubmit?: ((value: string, event:
|
|
168
|
+
onSubmit?: ((value: string, event: FocusEvent | KeyboardEvent) => any) | undefined;
|
|
168
169
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
169
170
|
onBlur?: ((value: string, event: FocusEvent) => any) | undefined;
|
|
170
171
|
onNavigate?: ((route: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/code-input/CodeInput.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CodeInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/code-input/CodeInput.vue"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import CodeInput_vue_vue_type_script_setup_true_lang_default from "./CodeInput.v
|
|
|
3
3
|
/* empty css */
|
|
4
4
|
/* empty css */
|
|
5
5
|
//#region src/v2/components/code-input/CodeInput.vue
|
|
6
|
-
var CodeInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(CodeInput_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
6
|
+
var CodeInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(CodeInput_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-167b1bd5"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { CodeInput_default as default };
|
|
9
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeInput.vue.js","names":[],"sources":["../../../../src/v2/components/code-input/CodeInput.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type CodeInputModelValue =\n | string\n | number\n | boolean\n | Array<string | number | boolean>\n | Record<string, unknown>\n\n/**\n * CodeInput\n *\n * A versatile input component that adapts its rendering based on props:\n * - Disabled mode: Read-only text display\n * - Select mode: Dropdown for enums, booleans, or examples\n * - Editor mode: CodeMirror with environment variable support\n *\n * Type `{{` to trigger environment variable autocomplete when an environment is provided.\n * It takes in any data but always will emit a string value,\n * this string should then be parsed in accordance to the schema or content type.\n *\n * @example\n * ```vue\n * <!-- Basic input with environment variables -->\n * <CodeInput v-model=\"value\" :environment=\"env\" />\n *\n * <!-- Boolean select -->\n * <CodeInput v-model=\"flag\" type=\"boolean\" />\n *\n * <!-- JSON editor with linting -->\n * <CodeInput v-model=\"data\" language=\"json\" :lint=\"true\" />\n * ```\n */\nexport default {\n inheritAttrs: false,\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport {\n colorPicker as colorPickerExtension,\n useCodeMirror,\n useDropdown,\n type CodeMirrorLanguage,\n type Extension,\n} from '@scalar/use-codemirror'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { nanoid } from 'nanoid'\nimport { computed, ref, toRef, useAttrs, watch, type Ref } from 'vue'\n\nimport DataTableInputSelect from '@/v2/components/data-table/DataTableInputSelect.vue'\nimport EnvironmentVariableDropdown from '@/v2/features/environments/components/EnvironmentVariablesDropdown.vue'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport { backspaceCommand, pillPlugin } from './code-variable-widget'\n\ntype Props = {\n modelValue: CodeInputModelValue\n /** Environment for variable substitution. Pass undefined to disable environment variables */\n environment: XScalarEnvironment | undefined\n /** Type of the input value, affects rendering mode for booleans */\n type?: string | string[]\n /** Render as disabled text display */\n disabled?: boolean\n /** Show error styling */\n error?: boolean\n /** Layout context affects styling and behavior */\n layout?: ClientLayout\n /** Predefined enum values, triggers select mode */\n enum?: string[]\n /** Example values, triggers select mode */\n examples?: string[]\n /** Default value to show in select mode */\n default?: Props['modelValue']\n /** Allow null in boolean select options */\n nullable?: boolean\n /** Placeholder text for empty input */\n placeholder?: string\n /** Show required indicator */\n required?: boolean\n /** Enable color picker extension */\n colorPicker?: boolean\n /** Show line numbers in editor */\n lineNumbers?: boolean\n /** Enable linting */\n lint?: boolean\n /** Enable line wrapping */\n lineWrapping?: boolean\n /** CodeMirror language mode */\n language?: CodeMirrorLanguage\n /** Additional CodeMirror extensions */\n extensions?: Extension[]\n /** Disable tab key for indentation */\n disableTabIndent?: boolean\n /** Disable enter key */\n disableEnter?: boolean\n /** Disable automatic bracket closing */\n disableCloseBrackets?: boolean\n /** Emit submit event on blur */\n emitOnBlur?: boolean\n /** Enable environment variable pills */\n withVariables?: boolean\n /** Emit change event even if the value is the same */\n alwaysEmitChange?: boolean\n /** Custom change handler, prevents default emit */\n handleFieldChange?: (value: string) => void\n /** Custom submit handler, prevents default emit */\n handleFieldSubmit?: (value: string) => void\n /** Put a linethrough on the input text */\n linethrough?: boolean\n}\n\nconst {\n modelValue,\n environment,\n type,\n disabled = false,\n error = false,\n layout = 'desktop',\n enum: enumProp,\n examples,\n default: defaultProp,\n nullable = false,\n placeholder,\n required,\n colorPicker = false,\n lineNumbers = false,\n lint = false,\n lineWrapping = false,\n language,\n extensions = [],\n disableTabIndent = false,\n disableEnter = false,\n disableCloseBrackets = false,\n emitOnBlur = true,\n alwaysEmitChange = false,\n withVariables = true,\n handleFieldChange,\n handleFieldSubmit,\n} = defineProps<Props>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'submit': [value: string, event: KeyboardEvent | FocusEvent]\n 'navigate': [route: { page: 'document'; path: 'environment' }]\n 'blur': [value: string, event: FocusEvent]\n}>()\n\n// ---------------------------------------------------------------------------\n// Component identity and focus state\n\nconst attrs = useAttrs() as { id?: string }\nconst componentId = attrs.id || `id-${nanoid()}`\nconst isFocused = ref(false)\n\n// ---------------------------------------------------------------------------\n// Rendering mode detection\n\n/**\n * Determines if we should render a select dropdown for boolean types.\n */\nconst isBooleanMode = computed((): boolean => {\n if (enumProp?.length) {\n return false\n }\n return type === 'boolean' || (Array.isArray(type) && type.includes('boolean'))\n})\n\n/**\n * Options for boolean select mode.\n */\nconst booleanOptions = computed((): string[] =>\n nullable ? ['true', 'false', 'null'] : ['true', 'false'],\n)\n\n/**\n * Default type when dealing with type arrays.\n * Finds the first non-null type.\n */\nconst defaultType = computed((): string | undefined => {\n if (Array.isArray(type)) {\n return type.find((t) => t !== 'null') ?? 'string'\n }\n return type\n})\n\n// ---------------------------------------------------------------------------\n// Event handlers\n\n/**\n * Handles value changes during typing.\n */\nconst handleChange = (value: string): void => {\n if (!alwaysEmitChange && value === serializeValue(modelValue)) {\n return\n }\n\n // Use custom handler or emit update\n if (handleFieldChange) {\n handleFieldChange(value)\n } else {\n emit('update:modelValue', value)\n }\n}\n\n/**\n * Handles form submission (enter key or blur with emitOnBlur).\n */\nconst handleSubmit = (\n value: string,\n event: KeyboardEvent | FocusEvent,\n): void => {\n if (handleFieldSubmit) {\n handleFieldSubmit(value)\n } else {\n emit('submit', value, event)\n }\n}\n\n/**\n * Handles input blur event.\n */\nconst handleBlur = (value: string, event: FocusEvent): void => {\n isFocused.value = false\n\n if (emitOnBlur && modelValue) {\n handleSubmit(value, event)\n }\n\n emit('blur', value, event)\n}\n\n/**\n * Handles model value updates from select components.\n */\nconst handleSelectChange = (value: string): void =>\n emit('update:modelValue', value)\n\n// ---------------------------------------------------------------------------\n// CodeMirror setup\n\n/**\n * Build extensions array.\n * Note: Extensions are not reactive after initialization.\n */\nconst buildExtensions = (): Extension[] => {\n const extensionsList: Extension[] = [...extensions]\n\n if (colorPicker) {\n extensionsList.push(colorPickerExtension)\n }\n\n return extensionsList\n}\n\n/**\n * Reactive pill plugin for environment variable visualization.\n */\nconst pillPluginExtension = computed(() =>\n pillPlugin({\n environment,\n isReadOnly: layout === 'modal',\n }),\n)\n\n/**\n * Combined extensions for CodeMirror.\n */\nconst codeMirrorExtensions = computed((): Extension[] => [\n ...buildExtensions(),\n pillPluginExtension.value,\n backspaceCommand,\n])\n\nconst codeMirrorRef: Ref<HTMLDivElement | null> = ref(null)\n\n/** Converts the model value to a string for CodeMirror */\nconst serializeValue = (value: CodeInputModelValue): string => {\n if (typeof value === 'string') {\n return value\n }\n return JSON.stringify(value)\n}\n\nconst { codeMirror, setCodeMirrorContent } = useCodeMirror({\n content: toRef(() => serializeValue(modelValue)),\n onChange: (value) => {\n handleChange(value)\n updateDropdownVisibility()\n },\n onFocus: () => {\n isFocused.value = true\n },\n onBlur: handleBlur,\n codeMirrorRef,\n disableTabIndent: toRef(() => disableTabIndent),\n disableEnter: toRef(() => disableEnter),\n disableCloseBrackets: toRef(() => disableCloseBrackets),\n lineNumbers: toRef(() => lineNumbers),\n language: toRef(() => language),\n lint: toRef(() => lint),\n extensions: codeMirrorExtensions,\n placeholder: toRef(() => placeholder),\n})\n\n/**\n * Handle autofocus attribute.\n */\nwatch(codeMirror, () => {\n if (codeMirror.value && Object.hasOwn(attrs, 'autofocus')) {\n codeMirror.value.focus()\n }\n})\n\n// ---------------------------------------------------------------------------\n// Environment variable dropdown\n\nconst showDropdown = ref(false)\nconst dropdownQuery = ref('')\nconst dropdownPosition = ref({ left: 0, top: 0 })\nconst dropdownRef = ref<InstanceType<\n typeof EnvironmentVariableDropdown\n> | null>(null)\n\nconst { handleDropdownSelect, updateDropdownVisibility } = useDropdown({\n codeMirror,\n query: dropdownQuery,\n showDropdown,\n dropdownPosition,\n})\n\n/**\n * Determines if the environment variable dropdown should be visible.\n */\nconst displayVariablesDropdown = computed((): boolean => {\n return (\n showDropdown.value &&\n withVariables &&\n layout !== 'modal' &&\n Boolean(environment)\n )\n})\n\n// ---------------------------------------------------------------------------\n// Keyboard event handling\n\n/**\n * Handles keyboard navigation for dropdown and form submission.\n */\nconst handleKeyDown = (key: string, event: KeyboardEvent): void => {\n if (showDropdown.value) {\n if (key === 'down' || key === 'up') {\n event.preventDefault()\n dropdownRef.value?.handleArrowKey(key)\n } else if (key === 'enter') {\n event.preventDefault()\n dropdownRef.value?.handleSelect()\n }\n return\n }\n\n if (key === 'escape' && !disableTabIndent) {\n event.stopPropagation()\n }\n\n if (key === 'enter' && event.target instanceof HTMLDivElement) {\n handleSubmit(event.target.textContent ?? '', event)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n\ndefineExpose({\n /**\n * Focus the codemirror element\n *\n * @param cursorAtEnd boolean place the cursor at the end of the input\n */\n focus: (position?: 'start' | 'end' | number) => {\n if (!codeMirror.value) {\n return\n }\n codeMirror.value.focus()\n\n if (!isDefined(position)) {\n return\n }\n\n const anchor = (() => {\n if (position === 'start') {\n return 0\n }\n if (position === 'end') {\n return codeMirror.value.state.doc.length\n }\n return position\n })()\n\n // Move the cursor to the specified position\n codeMirror.value.dispatch({\n selection: { anchor },\n scrollIntoView: true,\n })\n },\n isFocused,\n handleChange,\n handleSubmit,\n handleBlur,\n booleanOptions,\n codeMirror,\n codeMirrorRef,\n modelValue,\n setCodeMirrorContent,\n cursorPosition: () => codeMirror.value?.state.selection.main.head,\n serializeValue,\n})\n</script>\n\n<template>\n <!-- Disabled mode: read-only text display -->\n <div\n v-if=\"disabled\"\n class=\"text-c-2 flex cursor-default items-center justify-center\"\n :class=\"{\n 'font-code pr-2 pl-1 text-base': layout === 'modal',\n 'px-2': layout !== 'modal',\n 'line-through': linethrough,\n }\"\n data-testid=\"code-input-disabled\">\n <span class=\"whitespace-nowrap\">{{ modelValue }}</span>\n </div>\n\n <!-- Enum mode: select dropdown with predefined values -->\n <DataTableInputSelect\n v-else-if=\"enumProp?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :type=\"defaultType\"\n :value=\"enumProp\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Boolean mode: select dropdown with true/false (and optionally null) -->\n <DataTableInputSelect\n v-else-if=\"isBooleanMode\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"booleanOptions\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Examples mode: select dropdown with example values -->\n <DataTableInputSelect\n v-else-if=\"examples?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"examples\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Editor mode: CodeMirror with environment variable support -->\n <div\n v-else\n :id=\"componentId\"\n v-bind=\"$attrs\"\n ref=\"codeMirrorRef\"\n class=\"group/input group-[.alert]:outline-orange group-[.error]:outline-red font-code peer relative w-full overflow-hidden text-xs leading-[1.44] whitespace-nowrap -outline-offset-1 has-[:focus-visible]:rounded-[4px] has-[:focus-visible]:outline\"\n :class=\"{\n 'line-wrapping has-[:focus-visible]:bg-b-1 has-[:focus-visible]:absolute has-[:focus-visible]:z-1':\n lineWrapping,\n 'flow-code-input--error': error,\n 'line-through': linethrough,\n }\"\n @keydown.down.stop=\"handleKeyDown('down', $event)\"\n @keydown.enter=\"handleKeyDown('enter', $event)\"\n @keydown.escape=\"handleKeyDown('escape', $event)\"\n @keydown.up.stop=\"handleKeyDown('up', $event)\">\n <!-- Tab exit hint (shown when focused) -->\n <div\n v-if=\"!disableTabIndent\"\n class=\"z-context text-c-2 absolute right-1.5 bottom-1 hidden font-sans group-has-[:focus-visible]/input:block\"\n role=\"alert\">\n Press\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Esc</kbd> then\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Tab</kbd> to exit\n </div>\n </div>\n\n <!-- Warning slot (positioned absolutely) -->\n <div\n v-if=\"$slots.warning\"\n class=\"centered-y text-orange absolute right-7 text-xs\">\n <slot name=\"warning\" />\n </div>\n\n <!-- Icon slot (positioned absolutely) -->\n <div\n v-if=\"$slots.icon\"\n class=\"centered-y absolute right-0 flex h-full items-center p-1.5 group-has-[.cm-focused]:z-1\">\n <slot name=\"icon\" />\n </div>\n\n <!-- Required indicator -->\n <div\n v-if=\"required\"\n class=\"required centered-y text-xxs text-c-3 group-[.error]:text-red bg-b-1 pointer-events-none absolute right-0 mr-0.5 pt-px pr-2 opacity-100 shadow-[-8px_0_4px_var(--scalar-background-1)] transition-opacity duration-150 group-[.alert]:bg-transparent group-[.alert]:shadow-none group-[.error]:bg-transparent group-[.error]:shadow-none peer-has-[.cm-focused]:opacity-0\">\n Required\n </div>\n\n <!-- Environment variable autocomplete dropdown -->\n <EnvironmentVariableDropdown\n v-if=\"displayVariablesDropdown && environment\"\n ref=\"dropdownRef\"\n :dropdownPosition=\"dropdownPosition\"\n :environment=\"environment\"\n :query=\"dropdownQuery\"\n @redirect=\"emit('navigate', { page: 'document', path: 'environment' })\"\n @select=\"handleDropdownSelect\" />\n</template>\n<style scoped>\n/*\n Deep styling for customizing Codemirror\n */\n:deep(.cm-editor) {\n height: 100%;\n outline: none;\n padding: 0;\n background: transparent;\n}\n:deep(.cm-placeholder) {\n color: var(--scalar-color-3);\n}\n:deep(.cm-content) {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n max-height: 20px;\n padding: 8px 0;\n}\n/* Tooltip helper */\n:deep(.cm-tooltip) {\n background: transparent !important;\n filter: brightness(var(--scalar-lifted-brightness));\n border-radius: var(--scalar-radius);\n box-shadow: var(--scalar-shadow-2);\n border: none !important;\n outline: none !important;\n overflow: hidden !important;\n}\n:deep(.cm-tooltip-autocomplete ul li) {\n padding: 3px 6px !important;\n}\n:deep(.cm-completionIcon-type:after) {\n color: var(--scalar-color-3) !important;\n}\n:deep(.cm-tooltip-autocomplete ul li[aria-selected]) {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-1) !important;\n}\n:deep(.cm-tooltip-autocomplete ul) {\n padding: 6px !important;\n position: relative;\n}\n:deep(.cm-tooltip-autocomplete ul li:hover) {\n border-radius: 3px;\n color: var(--scalar-color-1) !important;\n background: var(--scalar-background-3) !important;\n}\n/* Disable active line highlighting */\n:deep(.cm-activeLine),\n:deep(.cm-activeLineGutter) {\n background-color: transparent;\n}\n/* Color selection matching */\n:deep(.cm-selectionMatch),\n:deep(.cm-matchingBracket) {\n border-radius: var(--scalar-radius);\n background: var(--scalar-background-4) !important;\n}\n/* Color Picker Swatches */\n:deep(.cm-css-color-picker-wrapper) {\n display: inline-flex;\n outline: 1px solid var(--scalar-background-3);\n border-radius: 3px;\n overflow: hidden;\n}\n/* Number gutter */\n:deep(.cm-gutters) {\n background-color: transparent;\n border-right: none;\n color: var(--scalar-color-3);\n font-size: var(--scalar-small);\n line-height: 22px;\n border-radius: 0 0 0 3px;\n}\n:deep(.cm-gutters:before) {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: calc(100% - 2px);\n height: calc(100% - 4px);\n border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);\n background-color: var(--scalar-background-1);\n}\n:deep(.cm-gutterElement) {\n font-family: var(--scalar-font-code) !important;\n padding-left: 0px !important;\n padding-right: 6px !important;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n}\n:deep(.cm-lineNumbers .cm-gutterElement) {\n min-width: fit-content;\n}\n:deep(.cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement) {\n padding-left: 0 !important;\n}\n:deep(.cm-scroller) {\n overflow: auto;\n}\n.line-wrapping:focus-within :deep(.cm-content) {\n display: inline-table;\n min-height: fit-content;\n padding: 3px 6px;\n white-space: break-spaces;\n word-break: break-all;\n}\n</style>\n<style>\n.cm-pill {\n color: var(--scalar-color-1) !important;\n padding: 0px 9px;\n border-radius: 3px;\n display: inline-block;\n border-radius: 30px;\n font-size: var(--scalar-small);\n}\n.light-mode .cm-pill {\n background: var(--scalar-background-3) !important;\n}\n.dark-mode .cm-pill {\n background: color-mix(in srgb, var(--tw-bg-base), transparent 90%) !important;\n}\n.cm-pill:first-of-type {\n margin-left: 0;\n}\n.cm-editor .cm-widgetBuffer {\n display: none;\n}\n.cm-foldPlaceholder:hover {\n color: var(--scalar-color-1);\n}\n.cm-foldGutter .cm-gutterElement {\n font-size: var(--scalar-heading-4);\n padding: 2px !important;\n}\n.cm-foldGutter .cm-gutterElement:first-of-type {\n display: none;\n}\n.cm-foldGutter .cm-gutterElement .cm-foldMarker {\n padding: 2px;\n padding-top: 2px;\n}\n.cm-foldGutter .cm-gutterElement:hover .cm-foldMarker {\n background: var(--scalar-background-2);\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-1);\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"CodeInput.vue.js","names":[],"sources":["../../../../src/v2/components/code-input/CodeInput.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type CodeInputModelValue =\n | string\n | number\n | boolean\n | Array<string | number | boolean>\n | Record<string, unknown>\n\n/**\n * CodeInput\n *\n * A versatile input component that adapts its rendering based on props:\n * - Disabled mode: Read-only text display\n * - Select mode: Dropdown for enums, booleans, or examples\n * - Editor mode: CodeMirror with environment variable support\n *\n * Type `{{` to trigger autocomplete for environment variables and runtime context functions\n * (for example `{{$guid}}`) when an environment is provided.\n * It takes in any data but always will emit a string value,\n * this string should then be parsed in accordance to the schema or content type.\n *\n * @example\n * ```vue\n * <!-- Basic input with environment variables -->\n * <CodeInput v-model=\"value\" :environment=\"env\" />\n *\n * <!-- Boolean select -->\n * <CodeInput v-model=\"flag\" type=\"boolean\" />\n *\n * <!-- JSON editor with linting -->\n * <CodeInput v-model=\"data\" language=\"json\" :lint=\"true\" />\n * ```\n */\nexport default {\n inheritAttrs: false,\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport {\n colorPicker as colorPickerExtension,\n useCodeMirror,\n useDropdown,\n type CodeMirrorLanguage,\n type Extension,\n} from '@scalar/use-codemirror'\nimport {\n CONTEXT_FUNCTION_NAMES,\n getContextFunctionComment,\n isContextFunctionName,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { nanoid } from 'nanoid'\nimport { computed, ref, toRef, useAttrs, watch, type Ref } from 'vue'\n\nimport DataTableInputSelect from '@/v2/components/data-table/DataTableInputSelect.vue'\nimport EnvironmentVariableDropdown from '@/v2/features/environments/components/EnvironmentVariablesDropdown.vue'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport { backspaceCommand, pillPlugin } from './code-variable-widget'\n\ntype Props = {\n modelValue: CodeInputModelValue\n /** Environment for variable substitution. Pass undefined to disable environment variables */\n environment: XScalarEnvironment | undefined\n /** Type of the input value, affects rendering mode for booleans */\n type?: string | string[]\n /** Render as disabled text display */\n disabled?: boolean\n /** Show error styling */\n error?: boolean\n /** Layout context affects styling and behavior */\n layout?: ClientLayout\n /** Predefined enum values, triggers select mode */\n enum?: string[]\n /** Example values, triggers select mode */\n examples?: string[]\n /** Default value to show in select mode */\n default?: Props['modelValue']\n /** Allow null in boolean select options */\n nullable?: boolean\n /** Placeholder text for empty input */\n placeholder?: string\n /** Show required indicator */\n required?: boolean\n /** Enable color picker extension */\n colorPicker?: boolean\n /** Show line numbers in editor */\n lineNumbers?: boolean\n /** Enable linting */\n lint?: boolean\n /** Enable line wrapping */\n lineWrapping?: boolean\n /** CodeMirror language mode */\n language?: CodeMirrorLanguage\n /** Additional CodeMirror extensions */\n extensions?: Extension[]\n /** Disable tab key for indentation */\n disableTabIndent?: boolean\n /** Disable enter key */\n disableEnter?: boolean\n /** Disable automatic bracket closing */\n disableCloseBrackets?: boolean\n /** Emit submit event on blur */\n emitOnBlur?: boolean\n /** Enable environment variable pills */\n withVariables?: boolean\n /** Emit change event even if the value is the same */\n alwaysEmitChange?: boolean\n /** Custom change handler, prevents default emit */\n handleFieldChange?: (value: string) => void\n /** Custom submit handler, prevents default emit */\n handleFieldSubmit?: (value: string) => void\n /** Put a linethrough on the input text */\n linethrough?: boolean\n}\n\nconst {\n modelValue,\n environment,\n type,\n disabled = false,\n error = false,\n layout = 'desktop',\n enum: enumProp,\n examples,\n default: defaultProp,\n nullable = false,\n placeholder,\n required,\n colorPicker = false,\n lineNumbers = false,\n lint = false,\n lineWrapping = false,\n language,\n extensions = [],\n disableTabIndent = false,\n disableEnter = false,\n disableCloseBrackets = false,\n emitOnBlur = true,\n alwaysEmitChange = false,\n withVariables = true,\n handleFieldChange,\n handleFieldSubmit,\n} = defineProps<Props>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'submit': [value: string, event: KeyboardEvent | FocusEvent]\n 'navigate': [route: { page: 'document'; path: 'environment' }]\n 'blur': [value: string, event: FocusEvent]\n}>()\n\n// ---------------------------------------------------------------------------\n// Component identity and focus state\n\nconst attrs = useAttrs() as { id?: string }\nconst componentId = attrs.id || `id-${nanoid()}`\nconst isFocused = ref(false)\n\n// ---------------------------------------------------------------------------\n// Rendering mode detection\n\n/**\n * Determines if we should render a select dropdown for boolean types.\n */\nconst isBooleanMode = computed((): boolean => {\n if (enumProp?.length) {\n return false\n }\n return type === 'boolean' || (Array.isArray(type) && type.includes('boolean'))\n})\n\n/**\n * Options for boolean select mode.\n */\nconst booleanOptions = computed((): string[] =>\n nullable ? ['true', 'false', 'null'] : ['true', 'false'],\n)\n\n/**\n * Default type when dealing with type arrays.\n * Finds the first non-null type.\n */\nconst defaultType = computed((): string | undefined => {\n if (Array.isArray(type)) {\n return type.find((t) => t !== 'null') ?? 'string'\n }\n return type\n})\n\n// ---------------------------------------------------------------------------\n// Event handlers\n\n/**\n * Handles value changes during typing.\n */\nconst handleChange = (value: string): void => {\n if (!alwaysEmitChange && value === serializeValue(modelValue)) {\n return\n }\n\n // Use custom handler or emit update\n if (handleFieldChange) {\n handleFieldChange(value)\n } else {\n emit('update:modelValue', value)\n }\n}\n\n/**\n * Handles form submission (enter key or blur with emitOnBlur).\n */\nconst handleSubmit = (\n value: string,\n event: KeyboardEvent | FocusEvent,\n): void => {\n if (handleFieldSubmit) {\n handleFieldSubmit(value)\n } else {\n emit('submit', value, event)\n }\n}\n\n/**\n * Handles input blur event.\n */\nconst handleBlur = (value: string, event: FocusEvent): void => {\n isFocused.value = false\n\n if (emitOnBlur && modelValue) {\n handleSubmit(value, event)\n }\n\n emit('blur', value, event)\n}\n\n/**\n * Handles model value updates from select components.\n */\nconst handleSelectChange = (value: string): void =>\n emit('update:modelValue', value)\n\n// ---------------------------------------------------------------------------\n// CodeMirror setup\n\n/**\n * Build extensions array.\n * Note: Extensions are not reactive after initialization.\n */\nconst buildExtensions = (): Extension[] => {\n const extensionsList: Extension[] = [...extensions]\n\n if (colorPicker) {\n extensionsList.push(colorPickerExtension)\n }\n\n return extensionsList\n}\n\n/**\n * Reactive pill plugin for environment variable visualization.\n */\nconst contextFunctionDropdownItems = computed(() =>\n CONTEXT_FUNCTION_NAMES.map((key) => ({\n key,\n description: getContextFunctionComment(key),\n })),\n)\n\nconst pillPluginExtension = computed(() =>\n pillPlugin({\n environment,\n isContextFunctionName,\n isReadOnly: layout === 'modal',\n }),\n)\n\n/**\n * Combined extensions for CodeMirror.\n */\nconst codeMirrorExtensions = computed((): Extension[] => [\n ...buildExtensions(),\n pillPluginExtension.value,\n backspaceCommand,\n])\n\nconst codeMirrorRef: Ref<HTMLDivElement | null> = ref(null)\n\n/** Converts the model value to a string for CodeMirror */\nconst serializeValue = (value: CodeInputModelValue): string => {\n if (typeof value === 'string') {\n return value\n }\n return JSON.stringify(value)\n}\n\nconst { codeMirror, setCodeMirrorContent } = useCodeMirror({\n content: toRef(() => serializeValue(modelValue)),\n onChange: (value) => {\n handleChange(value)\n updateDropdownVisibility()\n },\n onFocus: () => {\n isFocused.value = true\n },\n onBlur: handleBlur,\n codeMirrorRef,\n disableTabIndent: toRef(() => disableTabIndent),\n disableEnter: toRef(() => disableEnter),\n disableCloseBrackets: toRef(() => disableCloseBrackets),\n lineNumbers: toRef(() => lineNumbers),\n language: toRef(() => language),\n lint: toRef(() => lint),\n extensions: codeMirrorExtensions,\n placeholder: toRef(() => placeholder),\n})\n\n/**\n * Handle autofocus attribute.\n */\nwatch(codeMirror, () => {\n if (codeMirror.value && Object.hasOwn(attrs, 'autofocus')) {\n codeMirror.value.focus()\n }\n})\n\n// ---------------------------------------------------------------------------\n// Environment variable dropdown\n\nconst showDropdown = ref(false)\nconst dropdownQuery = ref('')\nconst dropdownPosition = ref({ left: 0, top: 0 })\nconst dropdownRef = ref<InstanceType<\n typeof EnvironmentVariableDropdown\n> | null>(null)\n\nconst { handleDropdownSelect, updateDropdownVisibility } = useDropdown({\n codeMirror,\n query: dropdownQuery,\n showDropdown,\n dropdownPosition,\n})\n\n/**\n * Determines if the environment variable dropdown should be visible.\n */\nconst displayVariablesDropdown = computed((): boolean => {\n return (\n showDropdown.value &&\n withVariables &&\n layout !== 'modal' &&\n Boolean(environment)\n )\n})\n\n// ---------------------------------------------------------------------------\n// Keyboard event handling\n\n/**\n * Handles keyboard navigation for dropdown and form submission.\n */\nconst handleKeyDown = (key: string, event: KeyboardEvent): void => {\n if (showDropdown.value) {\n if (key === 'down' || key === 'up') {\n event.preventDefault()\n dropdownRef.value?.handleArrowKey(key)\n } else if (key === 'enter') {\n event.preventDefault()\n dropdownRef.value?.handleSelect()\n }\n return\n }\n\n if (key === 'escape' && !disableTabIndent) {\n event.stopPropagation()\n }\n\n if (key === 'enter' && event.target instanceof HTMLDivElement) {\n handleSubmit(event.target.textContent ?? '', event)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n\ndefineExpose({\n /**\n * Focus the codemirror element\n *\n * @param cursorAtEnd boolean place the cursor at the end of the input\n */\n focus: (position?: 'start' | 'end' | number) => {\n if (!codeMirror.value) {\n return\n }\n codeMirror.value.focus()\n\n if (!isDefined(position)) {\n return\n }\n\n const anchor = (() => {\n if (position === 'start') {\n return 0\n }\n if (position === 'end') {\n return codeMirror.value.state.doc.length\n }\n return position\n })()\n\n // Move the cursor to the specified position\n codeMirror.value.dispatch({\n selection: { anchor },\n scrollIntoView: true,\n })\n },\n isFocused,\n handleChange,\n handleSubmit,\n handleBlur,\n booleanOptions,\n codeMirror,\n codeMirrorRef,\n modelValue,\n setCodeMirrorContent,\n cursorPosition: () => codeMirror.value?.state.selection.main.head,\n serializeValue,\n})\n</script>\n\n<template>\n <!-- Disabled mode: read-only text display -->\n <div\n v-if=\"disabled\"\n class=\"text-c-2 flex cursor-default items-center justify-center\"\n :class=\"{\n 'font-code pr-2 pl-1 text-base': layout === 'modal',\n 'px-2': layout !== 'modal',\n 'line-through': linethrough,\n }\"\n data-testid=\"code-input-disabled\">\n <span class=\"whitespace-nowrap\">{{ modelValue }}</span>\n </div>\n\n <!-- Enum mode: select dropdown with predefined values -->\n <DataTableInputSelect\n v-else-if=\"enumProp?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :type=\"defaultType\"\n :value=\"enumProp\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Boolean mode: select dropdown with true/false (and optionally null) -->\n <DataTableInputSelect\n v-else-if=\"isBooleanMode\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"booleanOptions\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Examples mode: select dropdown with example values -->\n <DataTableInputSelect\n v-else-if=\"examples?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"examples\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Editor mode: CodeMirror with environment variable support -->\n <div\n v-else\n :id=\"componentId\"\n v-bind=\"$attrs\"\n ref=\"codeMirrorRef\"\n class=\"group/input group-[.alert]:outline-orange group-[.error]:outline-red font-code peer relative w-full overflow-hidden text-xs leading-[1.44] whitespace-nowrap -outline-offset-1 has-[:focus-visible]:rounded-[4px] has-[:focus-visible]:outline\"\n :class=\"{\n 'line-wrapping has-[:focus-visible]:bg-b-1 has-[:focus-visible]:absolute has-[:focus-visible]:z-1':\n lineWrapping,\n 'flow-code-input--error': error,\n 'line-through': linethrough,\n }\"\n @keydown.down.stop=\"handleKeyDown('down', $event)\"\n @keydown.enter=\"handleKeyDown('enter', $event)\"\n @keydown.escape=\"handleKeyDown('escape', $event)\"\n @keydown.up.stop=\"handleKeyDown('up', $event)\">\n <!-- Tab exit hint (shown when focused) -->\n <div\n v-if=\"!disableTabIndent\"\n class=\"z-context text-c-2 absolute right-1.5 bottom-1 hidden font-sans group-has-[:focus-visible]/input:block\"\n role=\"alert\">\n Press\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Esc</kbd> then\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Tab</kbd> to exit\n </div>\n </div>\n\n <!-- Warning slot (positioned absolutely) -->\n <div\n v-if=\"$slots.warning\"\n class=\"centered-y text-orange absolute right-7 text-xs\">\n <slot name=\"warning\" />\n </div>\n\n <!-- Icon slot (positioned absolutely) -->\n <div\n v-if=\"$slots.icon\"\n class=\"centered-y absolute right-0 flex h-full items-center p-1.5 group-has-[.cm-focused]:z-1\">\n <slot name=\"icon\" />\n </div>\n\n <!-- Required indicator -->\n <div\n v-if=\"required\"\n class=\"required centered-y text-xxs text-c-3 group-[.error]:text-red bg-b-1 pointer-events-none absolute right-0 mr-0.5 pt-px pr-2 opacity-100 shadow-[-8px_0_4px_var(--scalar-background-1)] transition-opacity duration-150 group-[.alert]:bg-transparent group-[.alert]:shadow-none group-[.error]:bg-transparent group-[.error]:shadow-none peer-has-[.cm-focused]:opacity-0\">\n Required\n </div>\n\n <!-- Environment variable autocomplete dropdown -->\n <EnvironmentVariableDropdown\n v-if=\"displayVariablesDropdown && environment\"\n ref=\"dropdownRef\"\n :contextFunctionItems=\"contextFunctionDropdownItems\"\n :dropdownPosition=\"dropdownPosition\"\n :environment=\"environment\"\n :query=\"dropdownQuery\"\n @redirect=\"emit('navigate', { page: 'document', path: 'environment' })\"\n @select=\"handleDropdownSelect\" />\n</template>\n<style scoped>\n/*\n Deep styling for customizing Codemirror\n */\n:deep(.cm-editor) {\n height: 100%;\n outline: none;\n padding: 0;\n background: transparent;\n}\n:deep(.cm-placeholder) {\n color: var(--scalar-color-3);\n}\n:deep(.cm-content) {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n max-height: 20px;\n padding: 8px 0;\n}\n/* Tooltip helper */\n:deep(.cm-tooltip) {\n background: transparent !important;\n filter: brightness(var(--scalar-lifted-brightness));\n border-radius: var(--scalar-radius);\n box-shadow: var(--scalar-shadow-2);\n border: none !important;\n outline: none !important;\n overflow: hidden !important;\n}\n:deep(.cm-tooltip-autocomplete ul li) {\n padding: 3px 6px !important;\n}\n:deep(.cm-completionIcon-type:after) {\n color: var(--scalar-color-3) !important;\n}\n:deep(.cm-tooltip-autocomplete ul li[aria-selected]) {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-1) !important;\n}\n:deep(.cm-tooltip-autocomplete ul) {\n padding: 6px !important;\n position: relative;\n}\n:deep(.cm-tooltip-autocomplete ul li:hover) {\n border-radius: 3px;\n color: var(--scalar-color-1) !important;\n background: var(--scalar-background-3) !important;\n}\n/* Disable active line highlighting */\n:deep(.cm-activeLine),\n:deep(.cm-activeLineGutter) {\n background-color: transparent;\n}\n/* Color selection matching */\n:deep(.cm-selectionMatch),\n:deep(.cm-matchingBracket) {\n border-radius: var(--scalar-radius);\n background: var(--scalar-background-4) !important;\n}\n/* Color Picker Swatches */\n:deep(.cm-css-color-picker-wrapper) {\n display: inline-flex;\n outline: 1px solid var(--scalar-background-3);\n border-radius: 3px;\n overflow: hidden;\n}\n/* Number gutter */\n:deep(.cm-gutters) {\n background-color: transparent;\n border-right: none;\n color: var(--scalar-color-3);\n font-size: var(--scalar-small);\n line-height: 22px;\n border-radius: 0 0 0 3px;\n}\n:deep(.cm-gutters:before) {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: calc(100% - 2px);\n height: calc(100% - 4px);\n border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);\n background-color: var(--scalar-background-1);\n}\n:deep(.cm-gutterElement) {\n font-family: var(--scalar-font-code) !important;\n padding-left: 0px !important;\n padding-right: 6px !important;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n}\n:deep(.cm-lineNumbers .cm-gutterElement) {\n min-width: fit-content;\n}\n:deep(.cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement) {\n padding-left: 0 !important;\n}\n:deep(.cm-scroller) {\n overflow: auto;\n}\n.line-wrapping:focus-within :deep(.cm-content) {\n display: inline-table;\n min-height: fit-content;\n padding: 3px 6px;\n white-space: break-spaces;\n word-break: break-all;\n}\n</style>\n<style>\n.cm-pill {\n color: var(--scalar-color-1) !important;\n padding: 0px 9px;\n border-radius: 3px;\n display: inline-block;\n border-radius: 30px;\n font-size: var(--scalar-small);\n}\n.light-mode .cm-pill {\n background: var(--scalar-background-3) !important;\n}\n.dark-mode .cm-pill {\n background: color-mix(in srgb, var(--tw-bg-base), transparent 90%) !important;\n}\n.cm-pill--context-fn {\n border: 1px dashed color-mix(in srgb, var(--scalar-color-3), transparent 35%);\n padding: 0px 8px;\n}\n.light-mode .cm-pill--context-fn {\n background: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 40%\n ) !important;\n}\n.dark-mode .cm-pill--context-fn {\n background: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 55%\n ) !important;\n}\n.cm-pill:first-of-type {\n margin-left: 0;\n}\n.cm-editor .cm-widgetBuffer {\n display: none;\n}\n.cm-foldPlaceholder:hover {\n color: var(--scalar-color-1);\n}\n.cm-foldGutter .cm-gutterElement {\n font-size: var(--scalar-heading-4);\n padding: 2px !important;\n}\n.cm-foldGutter .cm-gutterElement:first-of-type {\n display: none;\n}\n.cm-foldGutter .cm-gutterElement .cm-foldMarker {\n padding: 2px;\n padding-top: 2px;\n}\n.cm-foldGutter .cm-gutterElement:hover .cm-foldMarker {\n background: var(--scalar-background-2);\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-1);\n}\n</style>\n"],"mappings":""}
|
|
@@ -2,6 +2,7 @@ import DataTableInputSelect_default from "../data-table/DataTableInputSelect.vue
|
|
|
2
2
|
import EnvironmentVariablesDropdown_default from "../../features/environments/components/EnvironmentVariablesDropdown.vue.js";
|
|
3
3
|
import { backspaceCommand, pillPlugin } from "./code-variable-widget.js";
|
|
4
4
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderSlot, toDisplayString, toRef, unref, useAttrs, watch, withKeys, withModifiers } from "vue";
|
|
5
|
+
import { CONTEXT_FUNCTION_NAMES, getContextFunctionComment, isContextFunctionName } from "@scalar/workspace-store/request-example";
|
|
5
6
|
import { isDefined } from "@scalar/helpers/array/is-defined";
|
|
6
7
|
import { colorPicker, useCodeMirror, useDropdown } from "@scalar/use-codemirror";
|
|
7
8
|
import { nanoid } from "nanoid";
|
|
@@ -181,8 +182,13 @@ var CodeInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
181
182
|
/**
|
|
182
183
|
* Reactive pill plugin for environment variable visualization.
|
|
183
184
|
*/
|
|
185
|
+
const contextFunctionDropdownItems = computed(() => CONTEXT_FUNCTION_NAMES.map((key) => ({
|
|
186
|
+
key,
|
|
187
|
+
description: getContextFunctionComment(key)
|
|
188
|
+
})));
|
|
184
189
|
const pillPluginExtension = computed(() => pillPlugin({
|
|
185
190
|
environment: __props.environment,
|
|
191
|
+
isContextFunctionName,
|
|
186
192
|
isReadOnly: __props.layout === "modal"
|
|
187
193
|
}));
|
|
188
194
|
/**
|
|
@@ -361,6 +367,7 @@ var CodeInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
361
367
|
key: 8,
|
|
362
368
|
ref_key: "dropdownRef",
|
|
363
369
|
ref: dropdownRef,
|
|
370
|
+
contextFunctionItems: contextFunctionDropdownItems.value,
|
|
364
371
|
dropdownPosition: dropdownPosition.value,
|
|
365
372
|
environment: __props.environment,
|
|
366
373
|
query: dropdownQuery.value,
|
|
@@ -370,6 +377,7 @@ var CodeInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
370
377
|
})),
|
|
371
378
|
onSelect: unref(handleDropdownSelect)
|
|
372
379
|
}, null, 8, [
|
|
380
|
+
"contextFunctionItems",
|
|
373
381
|
"dropdownPosition",
|
|
374
382
|
"environment",
|
|
375
383
|
"query",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeInput.vue.script.js","names":["$attrs","$slots"],"sources":["../../../../src/v2/components/code-input/CodeInput.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type CodeInputModelValue =\n | string\n | number\n | boolean\n | Array<string | number | boolean>\n | Record<string, unknown>\n\n/**\n * CodeInput\n *\n * A versatile input component that adapts its rendering based on props:\n * - Disabled mode: Read-only text display\n * - Select mode: Dropdown for enums, booleans, or examples\n * - Editor mode: CodeMirror with environment variable support\n *\n * Type `{{` to trigger environment variable autocomplete when an environment is provided.\n * It takes in any data but always will emit a string value,\n * this string should then be parsed in accordance to the schema or content type.\n *\n * @example\n * ```vue\n * <!-- Basic input with environment variables -->\n * <CodeInput v-model=\"value\" :environment=\"env\" />\n *\n * <!-- Boolean select -->\n * <CodeInput v-model=\"flag\" type=\"boolean\" />\n *\n * <!-- JSON editor with linting -->\n * <CodeInput v-model=\"data\" language=\"json\" :lint=\"true\" />\n * ```\n */\nexport default {\n inheritAttrs: false,\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport {\n colorPicker as colorPickerExtension,\n useCodeMirror,\n useDropdown,\n type CodeMirrorLanguage,\n type Extension,\n} from '@scalar/use-codemirror'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { nanoid } from 'nanoid'\nimport { computed, ref, toRef, useAttrs, watch, type Ref } from 'vue'\n\nimport DataTableInputSelect from '@/v2/components/data-table/DataTableInputSelect.vue'\nimport EnvironmentVariableDropdown from '@/v2/features/environments/components/EnvironmentVariablesDropdown.vue'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport { backspaceCommand, pillPlugin } from './code-variable-widget'\n\ntype Props = {\n modelValue: CodeInputModelValue\n /** Environment for variable substitution. Pass undefined to disable environment variables */\n environment: XScalarEnvironment | undefined\n /** Type of the input value, affects rendering mode for booleans */\n type?: string | string[]\n /** Render as disabled text display */\n disabled?: boolean\n /** Show error styling */\n error?: boolean\n /** Layout context affects styling and behavior */\n layout?: ClientLayout\n /** Predefined enum values, triggers select mode */\n enum?: string[]\n /** Example values, triggers select mode */\n examples?: string[]\n /** Default value to show in select mode */\n default?: Props['modelValue']\n /** Allow null in boolean select options */\n nullable?: boolean\n /** Placeholder text for empty input */\n placeholder?: string\n /** Show required indicator */\n required?: boolean\n /** Enable color picker extension */\n colorPicker?: boolean\n /** Show line numbers in editor */\n lineNumbers?: boolean\n /** Enable linting */\n lint?: boolean\n /** Enable line wrapping */\n lineWrapping?: boolean\n /** CodeMirror language mode */\n language?: CodeMirrorLanguage\n /** Additional CodeMirror extensions */\n extensions?: Extension[]\n /** Disable tab key for indentation */\n disableTabIndent?: boolean\n /** Disable enter key */\n disableEnter?: boolean\n /** Disable automatic bracket closing */\n disableCloseBrackets?: boolean\n /** Emit submit event on blur */\n emitOnBlur?: boolean\n /** Enable environment variable pills */\n withVariables?: boolean\n /** Emit change event even if the value is the same */\n alwaysEmitChange?: boolean\n /** Custom change handler, prevents default emit */\n handleFieldChange?: (value: string) => void\n /** Custom submit handler, prevents default emit */\n handleFieldSubmit?: (value: string) => void\n /** Put a linethrough on the input text */\n linethrough?: boolean\n}\n\nconst {\n modelValue,\n environment,\n type,\n disabled = false,\n error = false,\n layout = 'desktop',\n enum: enumProp,\n examples,\n default: defaultProp,\n nullable = false,\n placeholder,\n required,\n colorPicker = false,\n lineNumbers = false,\n lint = false,\n lineWrapping = false,\n language,\n extensions = [],\n disableTabIndent = false,\n disableEnter = false,\n disableCloseBrackets = false,\n emitOnBlur = true,\n alwaysEmitChange = false,\n withVariables = true,\n handleFieldChange,\n handleFieldSubmit,\n} = defineProps<Props>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'submit': [value: string, event: KeyboardEvent | FocusEvent]\n 'navigate': [route: { page: 'document'; path: 'environment' }]\n 'blur': [value: string, event: FocusEvent]\n}>()\n\n// ---------------------------------------------------------------------------\n// Component identity and focus state\n\nconst attrs = useAttrs() as { id?: string }\nconst componentId = attrs.id || `id-${nanoid()}`\nconst isFocused = ref(false)\n\n// ---------------------------------------------------------------------------\n// Rendering mode detection\n\n/**\n * Determines if we should render a select dropdown for boolean types.\n */\nconst isBooleanMode = computed((): boolean => {\n if (enumProp?.length) {\n return false\n }\n return type === 'boolean' || (Array.isArray(type) && type.includes('boolean'))\n})\n\n/**\n * Options for boolean select mode.\n */\nconst booleanOptions = computed((): string[] =>\n nullable ? ['true', 'false', 'null'] : ['true', 'false'],\n)\n\n/**\n * Default type when dealing with type arrays.\n * Finds the first non-null type.\n */\nconst defaultType = computed((): string | undefined => {\n if (Array.isArray(type)) {\n return type.find((t) => t !== 'null') ?? 'string'\n }\n return type\n})\n\n// ---------------------------------------------------------------------------\n// Event handlers\n\n/**\n * Handles value changes during typing.\n */\nconst handleChange = (value: string): void => {\n if (!alwaysEmitChange && value === serializeValue(modelValue)) {\n return\n }\n\n // Use custom handler or emit update\n if (handleFieldChange) {\n handleFieldChange(value)\n } else {\n emit('update:modelValue', value)\n }\n}\n\n/**\n * Handles form submission (enter key or blur with emitOnBlur).\n */\nconst handleSubmit = (\n value: string,\n event: KeyboardEvent | FocusEvent,\n): void => {\n if (handleFieldSubmit) {\n handleFieldSubmit(value)\n } else {\n emit('submit', value, event)\n }\n}\n\n/**\n * Handles input blur event.\n */\nconst handleBlur = (value: string, event: FocusEvent): void => {\n isFocused.value = false\n\n if (emitOnBlur && modelValue) {\n handleSubmit(value, event)\n }\n\n emit('blur', value, event)\n}\n\n/**\n * Handles model value updates from select components.\n */\nconst handleSelectChange = (value: string): void =>\n emit('update:modelValue', value)\n\n// ---------------------------------------------------------------------------\n// CodeMirror setup\n\n/**\n * Build extensions array.\n * Note: Extensions are not reactive after initialization.\n */\nconst buildExtensions = (): Extension[] => {\n const extensionsList: Extension[] = [...extensions]\n\n if (colorPicker) {\n extensionsList.push(colorPickerExtension)\n }\n\n return extensionsList\n}\n\n/**\n * Reactive pill plugin for environment variable visualization.\n */\nconst pillPluginExtension = computed(() =>\n pillPlugin({\n environment,\n isReadOnly: layout === 'modal',\n }),\n)\n\n/**\n * Combined extensions for CodeMirror.\n */\nconst codeMirrorExtensions = computed((): Extension[] => [\n ...buildExtensions(),\n pillPluginExtension.value,\n backspaceCommand,\n])\n\nconst codeMirrorRef: Ref<HTMLDivElement | null> = ref(null)\n\n/** Converts the model value to a string for CodeMirror */\nconst serializeValue = (value: CodeInputModelValue): string => {\n if (typeof value === 'string') {\n return value\n }\n return JSON.stringify(value)\n}\n\nconst { codeMirror, setCodeMirrorContent } = useCodeMirror({\n content: toRef(() => serializeValue(modelValue)),\n onChange: (value) => {\n handleChange(value)\n updateDropdownVisibility()\n },\n onFocus: () => {\n isFocused.value = true\n },\n onBlur: handleBlur,\n codeMirrorRef,\n disableTabIndent: toRef(() => disableTabIndent),\n disableEnter: toRef(() => disableEnter),\n disableCloseBrackets: toRef(() => disableCloseBrackets),\n lineNumbers: toRef(() => lineNumbers),\n language: toRef(() => language),\n lint: toRef(() => lint),\n extensions: codeMirrorExtensions,\n placeholder: toRef(() => placeholder),\n})\n\n/**\n * Handle autofocus attribute.\n */\nwatch(codeMirror, () => {\n if (codeMirror.value && Object.hasOwn(attrs, 'autofocus')) {\n codeMirror.value.focus()\n }\n})\n\n// ---------------------------------------------------------------------------\n// Environment variable dropdown\n\nconst showDropdown = ref(false)\nconst dropdownQuery = ref('')\nconst dropdownPosition = ref({ left: 0, top: 0 })\nconst dropdownRef = ref<InstanceType<\n typeof EnvironmentVariableDropdown\n> | null>(null)\n\nconst { handleDropdownSelect, updateDropdownVisibility } = useDropdown({\n codeMirror,\n query: dropdownQuery,\n showDropdown,\n dropdownPosition,\n})\n\n/**\n * Determines if the environment variable dropdown should be visible.\n */\nconst displayVariablesDropdown = computed((): boolean => {\n return (\n showDropdown.value &&\n withVariables &&\n layout !== 'modal' &&\n Boolean(environment)\n )\n})\n\n// ---------------------------------------------------------------------------\n// Keyboard event handling\n\n/**\n * Handles keyboard navigation for dropdown and form submission.\n */\nconst handleKeyDown = (key: string, event: KeyboardEvent): void => {\n if (showDropdown.value) {\n if (key === 'down' || key === 'up') {\n event.preventDefault()\n dropdownRef.value?.handleArrowKey(key)\n } else if (key === 'enter') {\n event.preventDefault()\n dropdownRef.value?.handleSelect()\n }\n return\n }\n\n if (key === 'escape' && !disableTabIndent) {\n event.stopPropagation()\n }\n\n if (key === 'enter' && event.target instanceof HTMLDivElement) {\n handleSubmit(event.target.textContent ?? '', event)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n\ndefineExpose({\n /**\n * Focus the codemirror element\n *\n * @param cursorAtEnd boolean place the cursor at the end of the input\n */\n focus: (position?: 'start' | 'end' | number) => {\n if (!codeMirror.value) {\n return\n }\n codeMirror.value.focus()\n\n if (!isDefined(position)) {\n return\n }\n\n const anchor = (() => {\n if (position === 'start') {\n return 0\n }\n if (position === 'end') {\n return codeMirror.value.state.doc.length\n }\n return position\n })()\n\n // Move the cursor to the specified position\n codeMirror.value.dispatch({\n selection: { anchor },\n scrollIntoView: true,\n })\n },\n isFocused,\n handleChange,\n handleSubmit,\n handleBlur,\n booleanOptions,\n codeMirror,\n codeMirrorRef,\n modelValue,\n setCodeMirrorContent,\n cursorPosition: () => codeMirror.value?.state.selection.main.head,\n serializeValue,\n})\n</script>\n\n<template>\n <!-- Disabled mode: read-only text display -->\n <div\n v-if=\"disabled\"\n class=\"text-c-2 flex cursor-default items-center justify-center\"\n :class=\"{\n 'font-code pr-2 pl-1 text-base': layout === 'modal',\n 'px-2': layout !== 'modal',\n 'line-through': linethrough,\n }\"\n data-testid=\"code-input-disabled\">\n <span class=\"whitespace-nowrap\">{{ modelValue }}</span>\n </div>\n\n <!-- Enum mode: select dropdown with predefined values -->\n <DataTableInputSelect\n v-else-if=\"enumProp?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :type=\"defaultType\"\n :value=\"enumProp\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Boolean mode: select dropdown with true/false (and optionally null) -->\n <DataTableInputSelect\n v-else-if=\"isBooleanMode\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"booleanOptions\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Examples mode: select dropdown with example values -->\n <DataTableInputSelect\n v-else-if=\"examples?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"examples\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Editor mode: CodeMirror with environment variable support -->\n <div\n v-else\n :id=\"componentId\"\n v-bind=\"$attrs\"\n ref=\"codeMirrorRef\"\n class=\"group/input group-[.alert]:outline-orange group-[.error]:outline-red font-code peer relative w-full overflow-hidden text-xs leading-[1.44] whitespace-nowrap -outline-offset-1 has-[:focus-visible]:rounded-[4px] has-[:focus-visible]:outline\"\n :class=\"{\n 'line-wrapping has-[:focus-visible]:bg-b-1 has-[:focus-visible]:absolute has-[:focus-visible]:z-1':\n lineWrapping,\n 'flow-code-input--error': error,\n 'line-through': linethrough,\n }\"\n @keydown.down.stop=\"handleKeyDown('down', $event)\"\n @keydown.enter=\"handleKeyDown('enter', $event)\"\n @keydown.escape=\"handleKeyDown('escape', $event)\"\n @keydown.up.stop=\"handleKeyDown('up', $event)\">\n <!-- Tab exit hint (shown when focused) -->\n <div\n v-if=\"!disableTabIndent\"\n class=\"z-context text-c-2 absolute right-1.5 bottom-1 hidden font-sans group-has-[:focus-visible]/input:block\"\n role=\"alert\">\n Press\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Esc</kbd> then\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Tab</kbd> to exit\n </div>\n </div>\n\n <!-- Warning slot (positioned absolutely) -->\n <div\n v-if=\"$slots.warning\"\n class=\"centered-y text-orange absolute right-7 text-xs\">\n <slot name=\"warning\" />\n </div>\n\n <!-- Icon slot (positioned absolutely) -->\n <div\n v-if=\"$slots.icon\"\n class=\"centered-y absolute right-0 flex h-full items-center p-1.5 group-has-[.cm-focused]:z-1\">\n <slot name=\"icon\" />\n </div>\n\n <!-- Required indicator -->\n <div\n v-if=\"required\"\n class=\"required centered-y text-xxs text-c-3 group-[.error]:text-red bg-b-1 pointer-events-none absolute right-0 mr-0.5 pt-px pr-2 opacity-100 shadow-[-8px_0_4px_var(--scalar-background-1)] transition-opacity duration-150 group-[.alert]:bg-transparent group-[.alert]:shadow-none group-[.error]:bg-transparent group-[.error]:shadow-none peer-has-[.cm-focused]:opacity-0\">\n Required\n </div>\n\n <!-- Environment variable autocomplete dropdown -->\n <EnvironmentVariableDropdown\n v-if=\"displayVariablesDropdown && environment\"\n ref=\"dropdownRef\"\n :dropdownPosition=\"dropdownPosition\"\n :environment=\"environment\"\n :query=\"dropdownQuery\"\n @redirect=\"emit('navigate', { page: 'document', path: 'environment' })\"\n @select=\"handleDropdownSelect\" />\n</template>\n<style scoped>\n/*\n Deep styling for customizing Codemirror\n */\n:deep(.cm-editor) {\n height: 100%;\n outline: none;\n padding: 0;\n background: transparent;\n}\n:deep(.cm-placeholder) {\n color: var(--scalar-color-3);\n}\n:deep(.cm-content) {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n max-height: 20px;\n padding: 8px 0;\n}\n/* Tooltip helper */\n:deep(.cm-tooltip) {\n background: transparent !important;\n filter: brightness(var(--scalar-lifted-brightness));\n border-radius: var(--scalar-radius);\n box-shadow: var(--scalar-shadow-2);\n border: none !important;\n outline: none !important;\n overflow: hidden !important;\n}\n:deep(.cm-tooltip-autocomplete ul li) {\n padding: 3px 6px !important;\n}\n:deep(.cm-completionIcon-type:after) {\n color: var(--scalar-color-3) !important;\n}\n:deep(.cm-tooltip-autocomplete ul li[aria-selected]) {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-1) !important;\n}\n:deep(.cm-tooltip-autocomplete ul) {\n padding: 6px !important;\n position: relative;\n}\n:deep(.cm-tooltip-autocomplete ul li:hover) {\n border-radius: 3px;\n color: var(--scalar-color-1) !important;\n background: var(--scalar-background-3) !important;\n}\n/* Disable active line highlighting */\n:deep(.cm-activeLine),\n:deep(.cm-activeLineGutter) {\n background-color: transparent;\n}\n/* Color selection matching */\n:deep(.cm-selectionMatch),\n:deep(.cm-matchingBracket) {\n border-radius: var(--scalar-radius);\n background: var(--scalar-background-4) !important;\n}\n/* Color Picker Swatches */\n:deep(.cm-css-color-picker-wrapper) {\n display: inline-flex;\n outline: 1px solid var(--scalar-background-3);\n border-radius: 3px;\n overflow: hidden;\n}\n/* Number gutter */\n:deep(.cm-gutters) {\n background-color: transparent;\n border-right: none;\n color: var(--scalar-color-3);\n font-size: var(--scalar-small);\n line-height: 22px;\n border-radius: 0 0 0 3px;\n}\n:deep(.cm-gutters:before) {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: calc(100% - 2px);\n height: calc(100% - 4px);\n border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);\n background-color: var(--scalar-background-1);\n}\n:deep(.cm-gutterElement) {\n font-family: var(--scalar-font-code) !important;\n padding-left: 0px !important;\n padding-right: 6px !important;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n}\n:deep(.cm-lineNumbers .cm-gutterElement) {\n min-width: fit-content;\n}\n:deep(.cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement) {\n padding-left: 0 !important;\n}\n:deep(.cm-scroller) {\n overflow: auto;\n}\n.line-wrapping:focus-within :deep(.cm-content) {\n display: inline-table;\n min-height: fit-content;\n padding: 3px 6px;\n white-space: break-spaces;\n word-break: break-all;\n}\n</style>\n<style>\n.cm-pill {\n color: var(--scalar-color-1) !important;\n padding: 0px 9px;\n border-radius: 3px;\n display: inline-block;\n border-radius: 30px;\n font-size: var(--scalar-small);\n}\n.light-mode .cm-pill {\n background: var(--scalar-background-3) !important;\n}\n.dark-mode .cm-pill {\n background: color-mix(in srgb, var(--tw-bg-base), transparent 90%) !important;\n}\n.cm-pill:first-of-type {\n margin-left: 0;\n}\n.cm-editor .cm-widgetBuffer {\n display: none;\n}\n.cm-foldPlaceholder:hover {\n color: var(--scalar-color-1);\n}\n.cm-foldGutter .cm-gutterElement {\n font-size: var(--scalar-heading-4);\n padding: 2px !important;\n}\n.cm-foldGutter .cm-gutterElement:first-of-type {\n display: none;\n}\n.cm-foldGutter .cm-gutterElement .cm-foldMarker {\n padding: 2px;\n padding-top: 2px;\n}\n.cm-foldGutter .cm-gutterElement:hover .cm-foldMarker {\n background: var(--scalar-background-2);\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-1);\n}\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CodeInput.vue.script.js","names":["$attrs","$slots"],"sources":["../../../../src/v2/components/code-input/CodeInput.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type CodeInputModelValue =\n | string\n | number\n | boolean\n | Array<string | number | boolean>\n | Record<string, unknown>\n\n/**\n * CodeInput\n *\n * A versatile input component that adapts its rendering based on props:\n * - Disabled mode: Read-only text display\n * - Select mode: Dropdown for enums, booleans, or examples\n * - Editor mode: CodeMirror with environment variable support\n *\n * Type `{{` to trigger autocomplete for environment variables and runtime context functions\n * (for example `{{$guid}}`) when an environment is provided.\n * It takes in any data but always will emit a string value,\n * this string should then be parsed in accordance to the schema or content type.\n *\n * @example\n * ```vue\n * <!-- Basic input with environment variables -->\n * <CodeInput v-model=\"value\" :environment=\"env\" />\n *\n * <!-- Boolean select -->\n * <CodeInput v-model=\"flag\" type=\"boolean\" />\n *\n * <!-- JSON editor with linting -->\n * <CodeInput v-model=\"data\" language=\"json\" :lint=\"true\" />\n * ```\n */\nexport default {\n inheritAttrs: false,\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport {\n colorPicker as colorPickerExtension,\n useCodeMirror,\n useDropdown,\n type CodeMirrorLanguage,\n type Extension,\n} from '@scalar/use-codemirror'\nimport {\n CONTEXT_FUNCTION_NAMES,\n getContextFunctionComment,\n isContextFunctionName,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { nanoid } from 'nanoid'\nimport { computed, ref, toRef, useAttrs, watch, type Ref } from 'vue'\n\nimport DataTableInputSelect from '@/v2/components/data-table/DataTableInputSelect.vue'\nimport EnvironmentVariableDropdown from '@/v2/features/environments/components/EnvironmentVariablesDropdown.vue'\nimport type { ClientLayout } from '@/v2/types/layout'\n\nimport { backspaceCommand, pillPlugin } from './code-variable-widget'\n\ntype Props = {\n modelValue: CodeInputModelValue\n /** Environment for variable substitution. Pass undefined to disable environment variables */\n environment: XScalarEnvironment | undefined\n /** Type of the input value, affects rendering mode for booleans */\n type?: string | string[]\n /** Render as disabled text display */\n disabled?: boolean\n /** Show error styling */\n error?: boolean\n /** Layout context affects styling and behavior */\n layout?: ClientLayout\n /** Predefined enum values, triggers select mode */\n enum?: string[]\n /** Example values, triggers select mode */\n examples?: string[]\n /** Default value to show in select mode */\n default?: Props['modelValue']\n /** Allow null in boolean select options */\n nullable?: boolean\n /** Placeholder text for empty input */\n placeholder?: string\n /** Show required indicator */\n required?: boolean\n /** Enable color picker extension */\n colorPicker?: boolean\n /** Show line numbers in editor */\n lineNumbers?: boolean\n /** Enable linting */\n lint?: boolean\n /** Enable line wrapping */\n lineWrapping?: boolean\n /** CodeMirror language mode */\n language?: CodeMirrorLanguage\n /** Additional CodeMirror extensions */\n extensions?: Extension[]\n /** Disable tab key for indentation */\n disableTabIndent?: boolean\n /** Disable enter key */\n disableEnter?: boolean\n /** Disable automatic bracket closing */\n disableCloseBrackets?: boolean\n /** Emit submit event on blur */\n emitOnBlur?: boolean\n /** Enable environment variable pills */\n withVariables?: boolean\n /** Emit change event even if the value is the same */\n alwaysEmitChange?: boolean\n /** Custom change handler, prevents default emit */\n handleFieldChange?: (value: string) => void\n /** Custom submit handler, prevents default emit */\n handleFieldSubmit?: (value: string) => void\n /** Put a linethrough on the input text */\n linethrough?: boolean\n}\n\nconst {\n modelValue,\n environment,\n type,\n disabled = false,\n error = false,\n layout = 'desktop',\n enum: enumProp,\n examples,\n default: defaultProp,\n nullable = false,\n placeholder,\n required,\n colorPicker = false,\n lineNumbers = false,\n lint = false,\n lineWrapping = false,\n language,\n extensions = [],\n disableTabIndent = false,\n disableEnter = false,\n disableCloseBrackets = false,\n emitOnBlur = true,\n alwaysEmitChange = false,\n withVariables = true,\n handleFieldChange,\n handleFieldSubmit,\n} = defineProps<Props>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'submit': [value: string, event: KeyboardEvent | FocusEvent]\n 'navigate': [route: { page: 'document'; path: 'environment' }]\n 'blur': [value: string, event: FocusEvent]\n}>()\n\n// ---------------------------------------------------------------------------\n// Component identity and focus state\n\nconst attrs = useAttrs() as { id?: string }\nconst componentId = attrs.id || `id-${nanoid()}`\nconst isFocused = ref(false)\n\n// ---------------------------------------------------------------------------\n// Rendering mode detection\n\n/**\n * Determines if we should render a select dropdown for boolean types.\n */\nconst isBooleanMode = computed((): boolean => {\n if (enumProp?.length) {\n return false\n }\n return type === 'boolean' || (Array.isArray(type) && type.includes('boolean'))\n})\n\n/**\n * Options for boolean select mode.\n */\nconst booleanOptions = computed((): string[] =>\n nullable ? ['true', 'false', 'null'] : ['true', 'false'],\n)\n\n/**\n * Default type when dealing with type arrays.\n * Finds the first non-null type.\n */\nconst defaultType = computed((): string | undefined => {\n if (Array.isArray(type)) {\n return type.find((t) => t !== 'null') ?? 'string'\n }\n return type\n})\n\n// ---------------------------------------------------------------------------\n// Event handlers\n\n/**\n * Handles value changes during typing.\n */\nconst handleChange = (value: string): void => {\n if (!alwaysEmitChange && value === serializeValue(modelValue)) {\n return\n }\n\n // Use custom handler or emit update\n if (handleFieldChange) {\n handleFieldChange(value)\n } else {\n emit('update:modelValue', value)\n }\n}\n\n/**\n * Handles form submission (enter key or blur with emitOnBlur).\n */\nconst handleSubmit = (\n value: string,\n event: KeyboardEvent | FocusEvent,\n): void => {\n if (handleFieldSubmit) {\n handleFieldSubmit(value)\n } else {\n emit('submit', value, event)\n }\n}\n\n/**\n * Handles input blur event.\n */\nconst handleBlur = (value: string, event: FocusEvent): void => {\n isFocused.value = false\n\n if (emitOnBlur && modelValue) {\n handleSubmit(value, event)\n }\n\n emit('blur', value, event)\n}\n\n/**\n * Handles model value updates from select components.\n */\nconst handleSelectChange = (value: string): void =>\n emit('update:modelValue', value)\n\n// ---------------------------------------------------------------------------\n// CodeMirror setup\n\n/**\n * Build extensions array.\n * Note: Extensions are not reactive after initialization.\n */\nconst buildExtensions = (): Extension[] => {\n const extensionsList: Extension[] = [...extensions]\n\n if (colorPicker) {\n extensionsList.push(colorPickerExtension)\n }\n\n return extensionsList\n}\n\n/**\n * Reactive pill plugin for environment variable visualization.\n */\nconst contextFunctionDropdownItems = computed(() =>\n CONTEXT_FUNCTION_NAMES.map((key) => ({\n key,\n description: getContextFunctionComment(key),\n })),\n)\n\nconst pillPluginExtension = computed(() =>\n pillPlugin({\n environment,\n isContextFunctionName,\n isReadOnly: layout === 'modal',\n }),\n)\n\n/**\n * Combined extensions for CodeMirror.\n */\nconst codeMirrorExtensions = computed((): Extension[] => [\n ...buildExtensions(),\n pillPluginExtension.value,\n backspaceCommand,\n])\n\nconst codeMirrorRef: Ref<HTMLDivElement | null> = ref(null)\n\n/** Converts the model value to a string for CodeMirror */\nconst serializeValue = (value: CodeInputModelValue): string => {\n if (typeof value === 'string') {\n return value\n }\n return JSON.stringify(value)\n}\n\nconst { codeMirror, setCodeMirrorContent } = useCodeMirror({\n content: toRef(() => serializeValue(modelValue)),\n onChange: (value) => {\n handleChange(value)\n updateDropdownVisibility()\n },\n onFocus: () => {\n isFocused.value = true\n },\n onBlur: handleBlur,\n codeMirrorRef,\n disableTabIndent: toRef(() => disableTabIndent),\n disableEnter: toRef(() => disableEnter),\n disableCloseBrackets: toRef(() => disableCloseBrackets),\n lineNumbers: toRef(() => lineNumbers),\n language: toRef(() => language),\n lint: toRef(() => lint),\n extensions: codeMirrorExtensions,\n placeholder: toRef(() => placeholder),\n})\n\n/**\n * Handle autofocus attribute.\n */\nwatch(codeMirror, () => {\n if (codeMirror.value && Object.hasOwn(attrs, 'autofocus')) {\n codeMirror.value.focus()\n }\n})\n\n// ---------------------------------------------------------------------------\n// Environment variable dropdown\n\nconst showDropdown = ref(false)\nconst dropdownQuery = ref('')\nconst dropdownPosition = ref({ left: 0, top: 0 })\nconst dropdownRef = ref<InstanceType<\n typeof EnvironmentVariableDropdown\n> | null>(null)\n\nconst { handleDropdownSelect, updateDropdownVisibility } = useDropdown({\n codeMirror,\n query: dropdownQuery,\n showDropdown,\n dropdownPosition,\n})\n\n/**\n * Determines if the environment variable dropdown should be visible.\n */\nconst displayVariablesDropdown = computed((): boolean => {\n return (\n showDropdown.value &&\n withVariables &&\n layout !== 'modal' &&\n Boolean(environment)\n )\n})\n\n// ---------------------------------------------------------------------------\n// Keyboard event handling\n\n/**\n * Handles keyboard navigation for dropdown and form submission.\n */\nconst handleKeyDown = (key: string, event: KeyboardEvent): void => {\n if (showDropdown.value) {\n if (key === 'down' || key === 'up') {\n event.preventDefault()\n dropdownRef.value?.handleArrowKey(key)\n } else if (key === 'enter') {\n event.preventDefault()\n dropdownRef.value?.handleSelect()\n }\n return\n }\n\n if (key === 'escape' && !disableTabIndent) {\n event.stopPropagation()\n }\n\n if (key === 'enter' && event.target instanceof HTMLDivElement) {\n handleSubmit(event.target.textContent ?? '', event)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n\ndefineExpose({\n /**\n * Focus the codemirror element\n *\n * @param cursorAtEnd boolean place the cursor at the end of the input\n */\n focus: (position?: 'start' | 'end' | number) => {\n if (!codeMirror.value) {\n return\n }\n codeMirror.value.focus()\n\n if (!isDefined(position)) {\n return\n }\n\n const anchor = (() => {\n if (position === 'start') {\n return 0\n }\n if (position === 'end') {\n return codeMirror.value.state.doc.length\n }\n return position\n })()\n\n // Move the cursor to the specified position\n codeMirror.value.dispatch({\n selection: { anchor },\n scrollIntoView: true,\n })\n },\n isFocused,\n handleChange,\n handleSubmit,\n handleBlur,\n booleanOptions,\n codeMirror,\n codeMirrorRef,\n modelValue,\n setCodeMirrorContent,\n cursorPosition: () => codeMirror.value?.state.selection.main.head,\n serializeValue,\n})\n</script>\n\n<template>\n <!-- Disabled mode: read-only text display -->\n <div\n v-if=\"disabled\"\n class=\"text-c-2 flex cursor-default items-center justify-center\"\n :class=\"{\n 'font-code pr-2 pl-1 text-base': layout === 'modal',\n 'px-2': layout !== 'modal',\n 'line-through': linethrough,\n }\"\n data-testid=\"code-input-disabled\">\n <span class=\"whitespace-nowrap\">{{ modelValue }}</span>\n </div>\n\n <!-- Enum mode: select dropdown with predefined values -->\n <DataTableInputSelect\n v-else-if=\"enumProp?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :type=\"defaultType\"\n :value=\"enumProp\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Boolean mode: select dropdown with true/false (and optionally null) -->\n <DataTableInputSelect\n v-else-if=\"isBooleanMode\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"booleanOptions\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Examples mode: select dropdown with example values -->\n <DataTableInputSelect\n v-else-if=\"examples?.length\"\n :default=\"defaultProp\"\n :modelValue=\"modelValue\"\n :value=\"examples\"\n @update:modelValue=\"handleSelectChange\" />\n\n <!-- Editor mode: CodeMirror with environment variable support -->\n <div\n v-else\n :id=\"componentId\"\n v-bind=\"$attrs\"\n ref=\"codeMirrorRef\"\n class=\"group/input group-[.alert]:outline-orange group-[.error]:outline-red font-code peer relative w-full overflow-hidden text-xs leading-[1.44] whitespace-nowrap -outline-offset-1 has-[:focus-visible]:rounded-[4px] has-[:focus-visible]:outline\"\n :class=\"{\n 'line-wrapping has-[:focus-visible]:bg-b-1 has-[:focus-visible]:absolute has-[:focus-visible]:z-1':\n lineWrapping,\n 'flow-code-input--error': error,\n 'line-through': linethrough,\n }\"\n @keydown.down.stop=\"handleKeyDown('down', $event)\"\n @keydown.enter=\"handleKeyDown('enter', $event)\"\n @keydown.escape=\"handleKeyDown('escape', $event)\"\n @keydown.up.stop=\"handleKeyDown('up', $event)\">\n <!-- Tab exit hint (shown when focused) -->\n <div\n v-if=\"!disableTabIndent\"\n class=\"z-context text-c-2 absolute right-1.5 bottom-1 hidden font-sans group-has-[:focus-visible]/input:block\"\n role=\"alert\">\n Press\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Esc</kbd> then\n <kbd class=\"-mx-0.25 rounded border px-0.5 font-mono\">Tab</kbd> to exit\n </div>\n </div>\n\n <!-- Warning slot (positioned absolutely) -->\n <div\n v-if=\"$slots.warning\"\n class=\"centered-y text-orange absolute right-7 text-xs\">\n <slot name=\"warning\" />\n </div>\n\n <!-- Icon slot (positioned absolutely) -->\n <div\n v-if=\"$slots.icon\"\n class=\"centered-y absolute right-0 flex h-full items-center p-1.5 group-has-[.cm-focused]:z-1\">\n <slot name=\"icon\" />\n </div>\n\n <!-- Required indicator -->\n <div\n v-if=\"required\"\n class=\"required centered-y text-xxs text-c-3 group-[.error]:text-red bg-b-1 pointer-events-none absolute right-0 mr-0.5 pt-px pr-2 opacity-100 shadow-[-8px_0_4px_var(--scalar-background-1)] transition-opacity duration-150 group-[.alert]:bg-transparent group-[.alert]:shadow-none group-[.error]:bg-transparent group-[.error]:shadow-none peer-has-[.cm-focused]:opacity-0\">\n Required\n </div>\n\n <!-- Environment variable autocomplete dropdown -->\n <EnvironmentVariableDropdown\n v-if=\"displayVariablesDropdown && environment\"\n ref=\"dropdownRef\"\n :contextFunctionItems=\"contextFunctionDropdownItems\"\n :dropdownPosition=\"dropdownPosition\"\n :environment=\"environment\"\n :query=\"dropdownQuery\"\n @redirect=\"emit('navigate', { page: 'document', path: 'environment' })\"\n @select=\"handleDropdownSelect\" />\n</template>\n<style scoped>\n/*\n Deep styling for customizing Codemirror\n */\n:deep(.cm-editor) {\n height: 100%;\n outline: none;\n padding: 0;\n background: transparent;\n}\n:deep(.cm-placeholder) {\n color: var(--scalar-color-3);\n}\n:deep(.cm-content) {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n max-height: 20px;\n padding: 8px 0;\n}\n/* Tooltip helper */\n:deep(.cm-tooltip) {\n background: transparent !important;\n filter: brightness(var(--scalar-lifted-brightness));\n border-radius: var(--scalar-radius);\n box-shadow: var(--scalar-shadow-2);\n border: none !important;\n outline: none !important;\n overflow: hidden !important;\n}\n:deep(.cm-tooltip-autocomplete ul li) {\n padding: 3px 6px !important;\n}\n:deep(.cm-completionIcon-type:after) {\n color: var(--scalar-color-3) !important;\n}\n:deep(.cm-tooltip-autocomplete ul li[aria-selected]) {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-1) !important;\n}\n:deep(.cm-tooltip-autocomplete ul) {\n padding: 6px !important;\n position: relative;\n}\n:deep(.cm-tooltip-autocomplete ul li:hover) {\n border-radius: 3px;\n color: var(--scalar-color-1) !important;\n background: var(--scalar-background-3) !important;\n}\n/* Disable active line highlighting */\n:deep(.cm-activeLine),\n:deep(.cm-activeLineGutter) {\n background-color: transparent;\n}\n/* Color selection matching */\n:deep(.cm-selectionMatch),\n:deep(.cm-matchingBracket) {\n border-radius: var(--scalar-radius);\n background: var(--scalar-background-4) !important;\n}\n/* Color Picker Swatches */\n:deep(.cm-css-color-picker-wrapper) {\n display: inline-flex;\n outline: 1px solid var(--scalar-background-3);\n border-radius: 3px;\n overflow: hidden;\n}\n/* Number gutter */\n:deep(.cm-gutters) {\n background-color: transparent;\n border-right: none;\n color: var(--scalar-color-3);\n font-size: var(--scalar-small);\n line-height: 22px;\n border-radius: 0 0 0 3px;\n}\n:deep(.cm-gutters:before) {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: calc(100% - 2px);\n height: calc(100% - 4px);\n border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);\n background-color: var(--scalar-background-1);\n}\n:deep(.cm-gutterElement) {\n font-family: var(--scalar-font-code) !important;\n padding-left: 0px !important;\n padding-right: 6px !important;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n}\n:deep(.cm-lineNumbers .cm-gutterElement) {\n min-width: fit-content;\n}\n:deep(.cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement) {\n padding-left: 0 !important;\n}\n:deep(.cm-scroller) {\n overflow: auto;\n}\n.line-wrapping:focus-within :deep(.cm-content) {\n display: inline-table;\n min-height: fit-content;\n padding: 3px 6px;\n white-space: break-spaces;\n word-break: break-all;\n}\n</style>\n<style>\n.cm-pill {\n color: var(--scalar-color-1) !important;\n padding: 0px 9px;\n border-radius: 3px;\n display: inline-block;\n border-radius: 30px;\n font-size: var(--scalar-small);\n}\n.light-mode .cm-pill {\n background: var(--scalar-background-3) !important;\n}\n.dark-mode .cm-pill {\n background: color-mix(in srgb, var(--tw-bg-base), transparent 90%) !important;\n}\n.cm-pill--context-fn {\n border: 1px dashed color-mix(in srgb, var(--scalar-color-3), transparent 35%);\n padding: 0px 8px;\n}\n.light-mode .cm-pill--context-fn {\n background: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 40%\n ) !important;\n}\n.dark-mode .cm-pill--context-fn {\n background: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 55%\n ) !important;\n}\n.cm-pill:first-of-type {\n margin-left: 0;\n}\n.cm-editor .cm-widgetBuffer {\n display: none;\n}\n.cm-foldPlaceholder:hover {\n color: var(--scalar-color-1);\n}\n.cm-foldGutter .cm-gutterElement {\n font-size: var(--scalar-heading-4);\n padding: 2px !important;\n}\n.cm-foldGutter .cm-gutterElement:first-of-type {\n display: none;\n}\n.cm-foldGutter .cm-gutterElement .cm-foldMarker {\n padding: 2px;\n padding-top: 2px;\n}\n.cm-foldGutter .cm-gutterElement:hover .cm-foldMarker {\n background: var(--scalar-background-2);\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-1);\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { PillContext } from './pill-context';
|
|
1
2
|
type __VLS_Props = {
|
|
2
|
-
|
|
3
|
+
context: PillContext;
|
|
3
4
|
};
|
|
4
5
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
5
6
|
declare const _default: typeof __VLS_export;
|
|
6
7
|
export default _default;
|
|
7
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=PillTooltipHost.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PillTooltipHost.vue.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/code-input/PillTooltipHost.vue"],"names":[],"mappings":"AAqEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,WAAW,CAAA;CACrB,CAAC;AA8EF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import PillTooltipHost_vue_vue_type_script_setup_true_lang_default from "./PillTooltipHost.vue.script.js";
|
|
2
|
+
//#region src/v2/components/code-input/PillTooltipHost.vue
|
|
3
|
+
var PillTooltipHost_default = PillTooltipHost_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { PillTooltipHost_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=PillTooltipHost.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PillTooltipHost.vue.js","names":[],"sources":["../../../../src/v2/components/code-input/PillTooltipHost.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useTooltip } from '@scalar/components'\nimport { computed, h, ref, render } from 'vue'\n\nimport type { PillContext } from './pill-context'\n\nconst props = defineProps<{\n context: PillContext\n}>()\n\ndefineOptions({ name: 'PillTooltipHost' })\n\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst isContextFn = props.context.type === 'contextFunction'\n\nconst contextTooltipHtml = computed(() => {\n if (!isContextFn || typeof document === 'undefined') {\n return ''\n }\n const el = document.createElement('div')\n render(\n h('div', { class: 'flex flex-col gap-1.5 text-left' }, [\n h('span', {}, props.context.details),\n h(\n 'div',\n { class: 'text-[color:var(--scalar-color-3)] text-[10px] font-normal' },\n 'Computed at request execution',\n ),\n ]),\n el,\n )\n return el.innerHTML\n})\n\nconst environmentTooltipText = computed(() =>\n props.context.type === 'environment' ? props.context.value : '',\n)\n\nuseTooltip({\n content: isContextFn ? contextTooltipHtml : environmentTooltipText,\n contentTarget: isContextFn ? 'innerHTML' : 'textContent',\n delay: 0,\n placement: 'bottom-start',\n offset: 6,\n targetRef: computed(\n () => wrapperRef.value?.children?.[0] || wrapperRef.value || undefined,\n ),\n})\n</script>\n\n<template>\n <div\n ref=\"wrapperRef\"\n class=\"contents\">\n <div class=\"flex items-center gap-1 whitespace-nowrap\">\n <span>{{\n props.context.type === 'environment'\n ? props.context.name\n : props.context.identifier\n }}</span>\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { computed, createElementBlock, createElementVNode, defineComponent, h, openBlock, ref, render, toDisplayString } from "vue";
|
|
2
|
+
import { useTooltip } from "@scalar/components";
|
|
3
|
+
//#region src/v2/components/code-input/PillTooltipHost.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var _hoisted_1 = { class: "flex items-center gap-1 whitespace-nowrap" };
|
|
5
|
+
var PillTooltipHost_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "PillTooltipHost",
|
|
7
|
+
__name: "PillTooltipHost",
|
|
8
|
+
props: { context: {} },
|
|
9
|
+
setup(__props) {
|
|
10
|
+
const props = __props;
|
|
11
|
+
const wrapperRef = ref(null);
|
|
12
|
+
const isContextFn = props.context.type === "contextFunction";
|
|
13
|
+
const contextTooltipHtml = computed(() => {
|
|
14
|
+
if (!isContextFn || typeof document === "undefined") return "";
|
|
15
|
+
const el = document.createElement("div");
|
|
16
|
+
render(h("div", { class: "flex flex-col gap-1.5 text-left" }, [h("span", {}, props.context.details), h("div", { class: "text-[color:var(--scalar-color-3)] text-[10px] font-normal" }, "Computed at request execution")]), el);
|
|
17
|
+
return el.innerHTML;
|
|
18
|
+
});
|
|
19
|
+
const environmentTooltipText = computed(() => props.context.type === "environment" ? props.context.value : "");
|
|
20
|
+
useTooltip({
|
|
21
|
+
content: isContextFn ? contextTooltipHtml : environmentTooltipText,
|
|
22
|
+
contentTarget: isContextFn ? "innerHTML" : "textContent",
|
|
23
|
+
delay: 0,
|
|
24
|
+
placement: "bottom-start",
|
|
25
|
+
offset: 6,
|
|
26
|
+
targetRef: computed(() => wrapperRef.value?.children?.[0] || wrapperRef.value || void 0)
|
|
27
|
+
});
|
|
28
|
+
return (_ctx, _cache) => {
|
|
29
|
+
return openBlock(), createElementBlock("div", {
|
|
30
|
+
ref_key: "wrapperRef",
|
|
31
|
+
ref: wrapperRef,
|
|
32
|
+
class: "contents"
|
|
33
|
+
}, [createElementVNode("div", _hoisted_1, [createElementVNode("span", null, toDisplayString(props.context.type === "environment" ? props.context.name : props.context.identifier), 1)])], 512);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { PillTooltipHost_vue_vue_type_script_setup_true_lang_default as default };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=PillTooltipHost.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PillTooltipHost.vue.script.js","names":[],"sources":["../../../../src/v2/components/code-input/PillTooltipHost.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useTooltip } from '@scalar/components'\nimport { computed, h, ref, render } from 'vue'\n\nimport type { PillContext } from './pill-context'\n\nconst props = defineProps<{\n context: PillContext\n}>()\n\ndefineOptions({ name: 'PillTooltipHost' })\n\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst isContextFn = props.context.type === 'contextFunction'\n\nconst contextTooltipHtml = computed(() => {\n if (!isContextFn || typeof document === 'undefined') {\n return ''\n }\n const el = document.createElement('div')\n render(\n h('div', { class: 'flex flex-col gap-1.5 text-left' }, [\n h('span', {}, props.context.details),\n h(\n 'div',\n { class: 'text-[color:var(--scalar-color-3)] text-[10px] font-normal' },\n 'Computed at request execution',\n ),\n ]),\n el,\n )\n return el.innerHTML\n})\n\nconst environmentTooltipText = computed(() =>\n props.context.type === 'environment' ? props.context.value : '',\n)\n\nuseTooltip({\n content: isContextFn ? contextTooltipHtml : environmentTooltipText,\n contentTarget: isContextFn ? 'innerHTML' : 'textContent',\n delay: 0,\n placement: 'bottom-start',\n offset: 6,\n targetRef: computed(\n () => wrapperRef.value?.children?.[0] || wrapperRef.value || undefined,\n ),\n})\n</script>\n\n<template>\n <div\n ref=\"wrapperRef\"\n class=\"contents\">\n <div class=\"flex items-center gap-1 whitespace-nowrap\">\n <span>{{\n props.context.type === 'environment'\n ? props.context.name\n : props.context.identifier\n }}</span>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;EAMA,MAAM,QAAQ;EAMd,MAAM,aAAa,IAAwB,KAAI;EAC/C,MAAM,cAAc,MAAM,QAAQ,SAAS;EAE3C,MAAM,qBAAqB,eAAe;AACxC,OAAI,CAAC,eAAe,OAAO,aAAa,YACtC,QAAO;GAET,MAAM,KAAK,SAAS,cAAc,MAAK;AACvC,UACE,EAAE,OAAO,EAAE,OAAO,mCAAmC,EAAE,CACrD,EAAE,QAAQ,EAAE,EAAE,MAAM,QAAQ,QAAQ,EACpC,EACE,OACA,EAAE,OAAO,8DAA8D,EACvE,gCACD,CACF,CAAC,EACF,GACF;AACA,UAAO,GAAG;IACX;EAED,MAAM,yBAAyB,eAC7B,MAAM,QAAQ,SAAS,gBAAgB,MAAM,QAAQ,QAAQ,GAC/D;AAEA,aAAW;GACT,SAAS,cAAc,qBAAqB;GAC5C,eAAe,cAAc,cAAc;GAC3C,OAAO;GACP,WAAW;GACX,QAAQ;GACR,WAAW,eACH,WAAW,OAAO,WAAW,MAAM,WAAW,SAAS,KAAA,EAC9D;GACF,CAAA;;uBAIC,mBAUM,OAAA;aATA;IAAJ,KAAI;IACJ,OAAM;OACN,mBAMM,OANN,YAMM,CALJ,mBAIS,QAAA,MAAA,gBAHP,MAAM,QAAQ,SAAI,gBAA+B,MAAM,QAAQ,OAAiB,MAAM,QAAQ,WAAU,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA"}
|
|
@@ -7,6 +7,7 @@ import type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensi
|
|
|
7
7
|
export declare const pillPlugin: (props: {
|
|
8
8
|
environment: XScalarEnvironment | undefined;
|
|
9
9
|
isReadOnly: boolean | undefined;
|
|
10
|
+
isContextFunctionName?: (name: string) => boolean;
|
|
10
11
|
}) => ViewPlugin<{
|
|
11
12
|
decorations: DecorationSet;
|
|
12
13
|
lastEnvironment: XScalarEnvironment | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-variable-widget.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/code-input/code-variable-widget.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"code-variable-widget.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/code-input/code-variable-widget.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,aAAa,EAClB,UAAU,EAEV,UAAU,EACV,KAAK,UAAU,EAEhB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AAmGnH;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO;IAChC,WAAW,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAC3C,UAAU,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAClD;iBAGkB,aAAa;qBACT,kBAAkB,GAAG,SAAS;mBAOhC,UAAU,GAAG,IAAI;2BAcT,UAAU,GAAG,aAAa;EAyCpD,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,uCAoC3B,CAAA"}
|