From dd7f9e857ae00a030c582d7fc6fdfe17a82f7a44 Mon Sep 17 00:00:00 2001 From: Lachlan Reynolds Date: Fri, 29 May 2026 14:14:25 +1200 Subject: [PATCH 1/8] UX improvements --- vue/dist/ApiReference.css | 2 +- vue/dist/ApiReference.umd.js | 184 ++++++++++++++++--- vue/dist/ApiReference.umd.min.js | 2 +- vue/src/SwaggerPage/SwaggerUiPanel.vue | 165 ++++++++++++++++- vue/src/SwaggerPage/swagger-ui-overrides.css | 28 +++ 5 files changed, 353 insertions(+), 28 deletions(-) diff --git a/vue/dist/ApiReference.css b/vue/dist/ApiReference.css index 1561b16..ff511c0 100644 --- a/vue/dist/ApiReference.css +++ b/vue/dist/ApiReference.css @@ -1 +1 @@ -.swaggerLoader[data-v-590bd90f]{max-height:100px;display:flex;align-items:center;justify-content:center}.swaggerMount[data-v-590bd90f]{min-height:180px;visibility:hidden}.swaggerMount--ready[data-v-590bd90f]{visibility:visible}.swaggerMount[data-v-590bd90f] .swagger-ui{border:0;border-radius:0;color:var(--theme-color-text,#3b4151);font-size:14px;line-height:1.5;padding-top:0}.page[data-v-86969ddc]{color:var(--theme-color-text,#3b4151)}.searchBar[data-v-86969ddc]{position:relative;margin-bottom:1.5rem;width:300px}.searchIcon[data-v-86969ddc]{position:absolute;top:13px;left:12px;color:var(--theme-color-text-lighter,#98a2b3);font-size:14px;pointer-events:none}.searchInput[data-v-86969ddc]{width:100%;height:38px;padding:10px 12px 10px 38px;background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d0d5dd);border-radius:8px;color:var(--theme-color-text,#3b4151);font-size:14px;box-shadow:none}.searchInput[data-v-86969ddc]:focus-visible{border:1px solid var(--theme-color-focus-ring,#5b8def);outline:1px solid var(--theme-color-focus-ring,#5b8def)}.searchInput[data-v-86969ddc]::-moz-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::-ms-input-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.emptyText[data-v-86969ddc]{margin-bottom:0;color:var(--theme-color-text-light,#646464)}.old-api-docs-paragraph[data-v-86969ddc]{font-size:12px!important;font-style:italic}.pluginCard[data-v-86969ddc]{background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d9e2ec);border-radius:4px;box-shadow:none;overflow:hidden;transition:border-color .18s ease}.pluginCard--expanded[data-v-86969ddc]{border-color:var(--theme-color-border,#cfd8e3);transform-origin:top center}.pluginToggle[data-v-86969ddc]{width:100%;padding:16px 20px;border:0;outline:none;background:var(--theme-color-background-contrast,#fff);display:flex;align-items:center;color:inherit;cursor:pointer;font:inherit;text-align:left}.pluginToggle[data-v-86969ddc]:focus-visible{box-shadow:inset 0 0 0 2px var(--theme-color-focus-ring,#cfd8e3)}.pluginHeader[data-v-86969ddc]{display:flex;align-items:center;gap:12px}.pluginChevron[data-v-86969ddc]{flex:0 0 12px;color:var(--theme-color-text-light,#5b6b7c);font-size:12px;display:inline-flex;align-items:center;justify-content:center}.pluginName[data-v-86969ddc]{font-size:15px;font-weight:500}.pluginBody[data-v-86969ddc]{position:relative;padding:0}.pluginBody[data-v-86969ddc]:before{content:"";position:absolute;top:0;left:20px;right:20px;border-top:1px solid var(--theme-color-border,#e6edf5)} \ No newline at end of file +.swaggerLoader[data-v-340c1502]{max-height:100px;display:flex;align-items:center;justify-content:center}.swaggerMount[data-v-340c1502]{min-height:180px;visibility:hidden}.swaggerMount--ready[data-v-340c1502]{visibility:visible}.swaggerMount[data-v-340c1502] .swagger-ui{border:0;border-radius:0;color:var(--theme-color-text,#3b4151);font-size:14px;line-height:1.5;padding-top:0}.page[data-v-86969ddc]{color:var(--theme-color-text,#3b4151)}.searchBar[data-v-86969ddc]{position:relative;margin-bottom:1.5rem;width:300px}.searchIcon[data-v-86969ddc]{position:absolute;top:13px;left:12px;color:var(--theme-color-text-lighter,#98a2b3);font-size:14px;pointer-events:none}.searchInput[data-v-86969ddc]{width:100%;height:38px;padding:10px 12px 10px 38px;background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d0d5dd);border-radius:8px;color:var(--theme-color-text,#3b4151);font-size:14px;box-shadow:none}.searchInput[data-v-86969ddc]:focus-visible{border:1px solid var(--theme-color-focus-ring,#5b8def);outline:1px solid var(--theme-color-focus-ring,#5b8def)}.searchInput[data-v-86969ddc]::-moz-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::-ms-input-placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.searchInput[data-v-86969ddc]::placeholder{color:var(--theme-color-text-lighter,#98a2b3)}.emptyText[data-v-86969ddc]{margin-bottom:0;color:var(--theme-color-text-light,#646464)}.old-api-docs-paragraph[data-v-86969ddc]{font-size:12px!important;font-style:italic}.pluginCard[data-v-86969ddc]{background:var(--theme-color-background-contrast,#fff);border:1px solid var(--theme-color-border,#d9e2ec);border-radius:4px;box-shadow:none;overflow:hidden;transition:border-color .18s ease}.pluginCard--expanded[data-v-86969ddc]{border-color:var(--theme-color-border,#cfd8e3);transform-origin:top center}.pluginToggle[data-v-86969ddc]{width:100%;padding:16px 20px;border:0;outline:none;background:var(--theme-color-background-contrast,#fff);display:flex;align-items:center;color:inherit;cursor:pointer;font:inherit;text-align:left}.pluginToggle[data-v-86969ddc]:focus-visible{box-shadow:inset 0 0 0 2px var(--theme-color-focus-ring,#cfd8e3)}.pluginHeader[data-v-86969ddc]{display:flex;align-items:center;gap:12px}.pluginChevron[data-v-86969ddc]{flex:0 0 12px;color:var(--theme-color-text-light,#5b6b7c);font-size:12px;display:inline-flex;align-items:center;justify-content:center}.pluginName[data-v-86969ddc]{font-size:15px;font-weight:500}.pluginBody[data-v-86969ddc]{position:relative;padding:0}.pluginBody[data-v-86969ddc]:before{content:"";position:absolute;top:0;left:20px;right:20px;border-top:1px solid var(--theme-color-border,#e6edf5)} \ No newline at end of file diff --git a/vue/dist/ApiReference.umd.js b/vue/dist/ApiReference.umd.js index d336e6b..337aac5 100644 --- a/vue/dist/ApiReference.umd.js +++ b/vue/dist/ApiReference.umd.js @@ -96,13 +96,6 @@ return /******/ (function(modules) { // webpackBootstrap /************************************************************************/ /******/ ({ -/***/ "1988": -/***/ (function(module, exports, __webpack_require__) { - -// extracted by mini-css-extract-plugin - -/***/ }), - /***/ "19dc": /***/ (function(module, exports) { @@ -128,6 +121,13 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__; /***/ }), +/***/ "820a": +/***/ (function(module, exports, __webpack_require__) { + +// extracted by mini-css-extract-plugin + +/***/ }), + /***/ "8bbf": /***/ (function(module, exports) { @@ -135,12 +135,12 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__; /***/ }), -/***/ "dc2f": +/***/ "f944": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_590bd90f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("1988"); -/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_590bd90f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_590bd90f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_340c1502_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("820a"); +/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_340c1502_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_cli_service_node_modules_vue_loader_v16_dist_index_js_ref_1_1_SwaggerUiPanel_vue_vue_type_style_index_0_id_340c1502_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__); /* unused harmony reexport * */ @@ -298,19 +298,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { // EXTERNAL MODULE: external "CoreHome" var external_CoreHome_ = __webpack_require__("19dc"); -// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=590bd90f&scoped=true +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=340c1502&scoped=true -const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_withScopeId = n => (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["pushScopeId"])("data-v-590bd90f"), n = n(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["popScopeId"])(), n); -const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_1 = { +const SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_withScopeId = n => (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["pushScopeId"])("data-v-340c1502"), n = n(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["popScopeId"])(), n); +const SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_hoisted_1 = { key: 0, class: "swaggerLoader" }; -const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_2 = ["innerHTML"]; -const SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_3 = ["id"]; -function SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_render(_ctx, _cache, $props, $setup, $data, $options) { +const SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_hoisted_2 = ["innerHTML"]; +const SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_hoisted_3 = ["id"]; +function SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator"); const _component_Alert = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Alert"); - return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.isLoading && !_ctx.spec && !_ctx.displayError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.isLoading && !_ctx.spec && !_ctx.displayError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, { loading: true })])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.displayError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Alert, { key: 1, @@ -324,27 +324,45 @@ function SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_render(_ctx, _c }, { default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(() => [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { innerHTML: _ctx.$sanitize(_ctx.missingSpecLearnMore) - }, null, 8, SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_2)]), + }, null, 8, SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_hoisted_2)]), _: 1 })) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { id: _ctx.swaggerContainerId, class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(['swaggerMount', { 'swaggerMount--ready': _ctx.isReady }]) - }, null, 10, SwaggerUiPanelvue_type_template_id_590bd90f_scoped_true_hoisted_3)], 64); + }, null, 10, SwaggerUiPanelvue_type_template_id_340c1502_scoped_true_hoisted_3)], 64); } -// CONCATENATED MODULE: ./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=590bd90f&scoped=true +// CONCATENATED MODULE: ./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=template&id=340c1502&scoped=true // CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/ApiReference/vue/src/SwaggerPage/SwaggerUiPanel.vue?vue&type=script&lang=ts const activeCopySuccessStateKey = '__matomoActiveCopySuccessState'; const authAutocompleteObserverKey = '__matomoSwaggerAuthAutocompleteObserver'; +const executeResponseStateKey = '__matomoExecuteResponseState'; const summaryPathClickHandlerAttachedKey = '__matomoSummaryPathClickHandlerAttached'; const summaryPrefix = '/index.php?module=API&method='; const interactiveSwaggerSelector = '.opblock-tag, .opblock-summary, .expand-operation, .opblock-summary-control'; +const authInteractionSelector = '.scheme-container .authorize, .dialog-ux .modal-ux button'; +const executeTriggerSelector = '.execute-wrapper .btn.execute'; const copyIconMarkup = ''; const copySuccessIconMarkup = ''; +const authHeadingText = 'Connect your Matomo API token'; +const authConnectedHeadingText = 'Matomo API token connected'; +const authSchemeLabelText = 'Matomo API token'; +const authSchemeHelpText = 'Paste your token generated from Personal > Security. Swagger will send it as a Bearer token.'; +const authConnectedButtonText = 'Token connected'; +const swaggerTextReplacements = [{ + from: 'Authorized', + to: authConnectedButtonText +}, { + from: 'Authorised', + to: authConnectedButtonText +}, { + from: 'Logout', + to: 'Remove token' +}]; /* harmony default export */ var SwaggerUiPanelvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ components: { ActivityIndicator: external_CoreHome_["ActivityIndicator"], @@ -471,11 +489,106 @@ const copySuccessIconMarkup = ' text === from); + if (replacement) { + currentNode.textContent = replacement.to; + } + } + currentNode = walker.nextNode(); + } + }, + updateSwaggerAuthCopy(swaggerRoot) { + this.replaceSwaggerText(swaggerRoot); + const modal = document.querySelector('.dialog-ux .modal-ux'); + const authButton = swaggerRoot.querySelector('.scheme-container .authorize'); + const authStatus = authButton === null || authButton === void 0 ? void 0 : authButton.querySelector('span'); + const isTokenConnected = !!(authButton !== null && authButton !== void 0 && authButton.classList.contains('locked')); + if (authButton) { + authButton.classList.toggle('matomo-token-connected', isTokenConnected); + } + if (authStatus) { + authStatus.textContent = isTokenConnected ? authConnectedButtonText : authHeadingText; + } + if (!modal) { + return; + } + const modalHeading = modal.querySelector('h3'); + if (modalHeading) { + modalHeading.textContent = isTokenConnected ? authConnectedHeadingText : authHeadingText; + } + const authContainers = modal.querySelectorAll('.auth-container'); + authContainers.forEach(authContainer => { + const label = authContainer.querySelector('h4, label'); + if (label) { + label.textContent = authSchemeLabelText; + } + const paragraphs = authContainer.querySelectorAll('p'); + let helperText = Array.from(paragraphs).find(paragraph => { + var _paragraph$textConten; + return (_paragraph$textConten = paragraph.textContent) === null || _paragraph$textConten === void 0 ? void 0 : _paragraph$textConten.toLowerCase().includes('bearer'); + }); + if (!helperText) { + helperText = document.createElement('p'); + helperText.className = 'matomo-auth-helper-text'; + const input = authContainer.querySelector('input'); + if (input !== null && input !== void 0 && input.parentElement) { + input.parentElement.insertAdjacentElement('afterend', helperText); + } else { + authContainer.appendChild(helperText); + } + } + helperText.textContent = authSchemeHelpText; + const authButtons = authContainer.querySelectorAll('button'); + authButtons.forEach(button => { + var _button$textContent; + const buttonText = (_button$textContent = button.textContent) === null || _button$textContent === void 0 ? void 0 : _button$textContent.trim(); + if (buttonText === 'Logout') { + button.textContent = 'Remove token'; + } + }); + }); + }, + clearExecuteResponseState(swaggerRoot) { + const state = swaggerRoot[executeResponseStateKey]; + if (!state) { + return; + } + window.clearTimeout(state.timeoutId); + state.opblock.classList.remove('matomo-live-response-visible'); + swaggerRoot[executeResponseStateKey] = null; + }, + markLiveResponse(swaggerRoot, executeButton) { + const opblock = executeButton.closest('.opblock'); + if (!opblock) { + return; + } + this.clearExecuteResponseState(swaggerRoot); + opblock.classList.add('matomo-live-response-visible'); + swaggerRoot[executeResponseStateKey] = { + opblock, + timeoutId: window.setTimeout(() => { + var _swaggerRoot$executeR; + if (((_swaggerRoot$executeR = swaggerRoot[executeResponseStateKey]) === null || _swaggerRoot$executeR === void 0 ? void 0 : _swaggerRoot$executeR.opblock) === opblock) { + swaggerRoot[executeResponseStateKey] = null; + } + }, 10000) + }; + }, attachSwaggerAuthAutocompleteObserver(swaggerRoot) { if (!swaggerRoot) { return; } - this.suppressSwaggerAuthAutocomplete(swaggerRoot); + this.suppressSwaggerAuthAutocomplete(document); + this.updateSwaggerAuthCopy(swaggerRoot); if (swaggerRoot[authAutocompleteObserverKey] || typeof MutationObserver === 'undefined') { return; } @@ -492,6 +605,7 @@ const copySuccessIconMarkup = ' { + this.updateSwaggerAuthCopy(swaggerRoot); + this.suppressSwaggerAuthAutocomplete(document); + }, 0); + } if (!(target !== null && target !== void 0 && target.closest(interactiveSwaggerSelector))) { return; } @@ -582,6 +715,7 @@ const copySuccessIconMarkup = '