{"version":3,"file":"js/portal-2918e83d0202086bd0f2.js","mappings":"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","sources":["webpack:///./portal/controllers/ sync _controller\\.js$","webpack:///./global/javascript/track_analytics.js","webpack:///./global/javascript/fetch_csrf.js","webpack:///./global/javascript/utils.js","webpack:///./packs/portal.js","webpack:///./portal/controllers/alternative_controller.js","webpack:///./portal/controllers/auth_controller.js","webpack:///./portal/controllers/branch_versions_controller.js","webpack:///./portal/controllers/clearable_form_controller.js","webpack:///./portal/controllers/debug_node_details_controller.js","webpack:///./portal/controllers/details_controller.js","webpack:///./portal/controllers/doc_back_link_controller.js","webpack:///./portal/controllers/doc_changes_subscription_controller.js","webpack:///./portal/controllers/doc_example_controller.js","webpack:///./portal/controllers/doc_examples_controller.js","webpack:///./portal/controllers/doc_frame_controller.js","webpack:///./portal/action-cable-consumer.js","webpack:///./portal/controllers/doc_loading_controller.js","webpack:///./portal/controllers/doc_navigation_controller.js","webpack:///./portal/controllers/doc_search_controller.js","webpack:///./portal/controllers/doc_share_controller.js","webpack:///./portal/controllers/documentation_changes_controller.js","webpack:///./portal/controllers/expander_controller.js","webpack:///./portal/controllers/explorer_api_key_controller.js","webpack:///./portal/controllers/explorer_collection_controller.js","webpack:///./portal/controllers/explorer_handle_response_controller.js","webpack:///./portal/controllers/explorer_select_auth_scheme_controller.js","webpack:///./global/javascript/request_builder.js","webpack:///./global/javascript/request_to_curl.js","webpack:///./portal/controllers/explorer_send_request_controller.js","webpack:///./portal/controllers/explorer_share_controller.js","webpack:///./portal/controllers/filter_controller.js","webpack:///./portal/controllers/highlight_controller.js","webpack:///./portal/controllers/index.js","webpack:///./portal/controllers/live_previews_controller.js","webpack:///./portal/controllers/loader_with_messages_controller.js","webpack:///./portal/controllers/multiple_content_controller.js","webpack:///./portal/controllers/response_dialog_controller.js","webpack:///./portal/controllers/select_redirect_controller.js","webpack:///./portal/controllers/syntax_highlight_controller.js"],"sourcesContent":["var map = {\n\t\"./alternative_controller.js\": 57057,\n\t\"./auth_controller.js\": 130,\n\t\"./branch_versions_controller.js\": 51860,\n\t\"./clearable_form_controller.js\": 54420,\n\t\"./debug_node_details_controller.js\": 60871,\n\t\"./details_controller.js\": 93362,\n\t\"./doc_back_link_controller.js\": 29095,\n\t\"./doc_changes_subscription_controller.js\": 82276,\n\t\"./doc_example_controller.js\": 13593,\n\t\"./doc_examples_controller.js\": 43592,\n\t\"./doc_frame_controller.js\": 936,\n\t\"./doc_loading_controller.js\": 6565,\n\t\"./doc_navigation_controller.js\": 14463,\n\t\"./doc_search_controller.js\": 29857,\n\t\"./doc_share_controller.js\": 12974,\n\t\"./documentation_changes_controller.js\": 53460,\n\t\"./expander_controller.js\": 50845,\n\t\"./explorer_api_key_controller.js\": 32252,\n\t\"./explorer_collection_controller.js\": 38540,\n\t\"./explorer_handle_response_controller.js\": 26588,\n\t\"./explorer_select_auth_scheme_controller.js\": 64801,\n\t\"./explorer_send_request_controller.js\": 43800,\n\t\"./explorer_share_controller.js\": 37721,\n\t\"./filter_controller.js\": 95622,\n\t\"./highlight_controller.js\": 47900,\n\t\"./live_previews_controller.js\": 12622,\n\t\"./loader_with_messages_controller.js\": 67151,\n\t\"./multiple_content_controller.js\": 39734,\n\t\"./response_dialog_controller.js\": 55156,\n\t\"./select_redirect_controller.js\": 59215,\n\t\"./syntax_highlight_controller.js\": 47080,\n\t\"portal/controllers/alternative_controller.js\": 57057,\n\t\"portal/controllers/auth_controller.js\": 130,\n\t\"portal/controllers/branch_versions_controller.js\": 51860,\n\t\"portal/controllers/clearable_form_controller.js\": 54420,\n\t\"portal/controllers/debug_node_details_controller.js\": 60871,\n\t\"portal/controllers/details_controller.js\": 93362,\n\t\"portal/controllers/doc_back_link_controller.js\": 29095,\n\t\"portal/controllers/doc_changes_subscription_controller.js\": 82276,\n\t\"portal/controllers/doc_example_controller.js\": 13593,\n\t\"portal/controllers/doc_examples_controller.js\": 43592,\n\t\"portal/controllers/doc_frame_controller.js\": 936,\n\t\"portal/controllers/doc_loading_controller.js\": 6565,\n\t\"portal/controllers/doc_navigation_controller.js\": 14463,\n\t\"portal/controllers/doc_search_controller.js\": 29857,\n\t\"portal/controllers/doc_share_controller.js\": 12974,\n\t\"portal/controllers/documentation_changes_controller.js\": 53460,\n\t\"portal/controllers/expander_controller.js\": 50845,\n\t\"portal/controllers/explorer_api_key_controller.js\": 32252,\n\t\"portal/controllers/explorer_collection_controller.js\": 38540,\n\t\"portal/controllers/explorer_handle_response_controller.js\": 26588,\n\t\"portal/controllers/explorer_select_auth_scheme_controller.js\": 64801,\n\t\"portal/controllers/explorer_send_request_controller.js\": 43800,\n\t\"portal/controllers/explorer_share_controller.js\": 37721,\n\t\"portal/controllers/filter_controller.js\": 95622,\n\t\"portal/controllers/highlight_controller.js\": 47900,\n\t\"portal/controllers/live_previews_controller.js\": 12622,\n\t\"portal/controllers/loader_with_messages_controller.js\": 67151,\n\t\"portal/controllers/multiple_content_controller.js\": 39734,\n\t\"portal/controllers/response_dialog_controller.js\": 55156,\n\t\"portal/controllers/select_redirect_controller.js\": 59215,\n\t\"portal/controllers/syntax_highlight_controller.js\": 47080\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 79343;","import { fetchCsrf } from \"./fetch_csrf\"\n\nexport async function trackAnalytics(trackUrl) {\n const csrfToken = await fetchCsrf()\n\n fetch(trackUrl, {\n method: \"post\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrfToken\n }\n })\n}\n","export async function fetchCsrf() {\n const url = \"/csrf_meta_tags.json\"\n const jsonResponse = await fetch(url)\n .then(response => response.json())\n\n return jsonResponse?.token\n}\n","/*\n This function is directly linked to the routes published by the\n backend server. This is why it's defined as a “utils” function to\n avoid duplicating this logic in multiple stimulus controllers.\n\n @input url: URL\n @returns nodeId: String\n */\nexport function nodeIdFromUrl(url) {\n let parts = url.pathname.split(/\\/(group|operation|topic|model)\\//)\n parts.push(url.hash.slice(1))\n parts = parts.filter(element => element !== undefined && element !== \"\")\n let nodeId = parts.pop()\n\n // This is a specific entry to a “fake” node for the Authentication\n // or the Bindings paragraph\n if (nodeId.endsWith(\"/authentication\")) {\n nodeId = \"doc-authentication\"\n } else if (nodeId.endsWith(\"/bindings\")) {\n nodeId = \"protocol-information\"\n\n // If there's no more elements in the parts, it's because we are\n // probably at the “root”\n } else if (!parts.length) {\n nodeId = \"doc-introduction\"\n }\n\n return nodeId\n}\n\nexport function isEmpty(obj) {\n for (const prop in obj) {\n if (Object.hasOwn(obj, prop)) {\n return false\n }\n }\n\n return true\n}\n\nexport function capitalize(str) {\n if (!str) return str\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n}\n\n// following https://stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript/53221307#53221307,\n// this base64 object will be us ton encode and decode object to string with base64 format,\n// supporting characters outside of Ascii range (user may fill Explorer form with emoji, 💩 happens).\nconst base64Utils = {\n decode: s => Uint8Array.from(atob(s), c => c.charCodeAt(0)),\n encode: b => btoa(String.fromCharCode(...new Uint8Array(b))),\n}\n\nexport const base64 = {\n decodeToString: s => new TextDecoder().decode(base64Utils.decode(s)),\n encodeString: s => base64Utils.encode(new TextEncoder().encode(s)),\n}\n\n","/* eslint no-console:0 */\n\nimport Rails from \"@rails/ujs\"\nimport { Turbo } from \"@hotwired/turbo-rails\"\nTurbo.session.drive = false\n\nrequire(\"portal/controllers\")\nrequire(\"controllers\")\nrequire(\"components/analytics\")\n\n// global JS\nimport \"../global/javascript\"\n\n// CSS\nimport \"../portal/css/portal.scss\"\n\nRails.start()\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"anchor\"]\n\n change(event) {\n event.preventDefault()\n let tab\n\n if (typeof event.detail === \"object\") {\n tab = event.detail.target\n } else {\n if (event.target.classList.contains(\"tab\")) {\n tab = event.target\n } else {\n tab = event.target.closest(\"a.tab\")\n }\n }\n const link = tab.href.split(\"#\")[1]\n\n if (this.hasAnchorTarget) {\n this.anchorTarget.href = `#${link}`\n }\n }\n\n setCurrentForm(event) {\n const currentTab = event.currentTarget\n const tabName = currentTab.getAttribute(\"name\")\n const currentPanel = this.element.querySelector(`div#${tabName}`)\n\n this.element.querySelectorAll(\"[data-tabs-target=panel]\").forEach((panel) => {\n const fields = panel.querySelectorAll(\"input, select\")\n fields.forEach((element)=>{\n element.setAttribute(\"disabled\", \"true\")\n })\n })\n\n currentPanel.querySelectorAll(\"input, select\").forEach((element)=>{\n element.removeAttribute(\"disabled\")\n })\n \n this.dispatch(\"form\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"edit\", \"apiKey\", \"status\", \"formVisible\", \"formHidden\", \"closeButton\"]\n\n updateButtonLabel() {\n this.closeButtonTarget.textContent = this.apiKeyTarget.value ? \"Save\" : \"Close\"\n }\n\n close() {\n const apiKey = this.apiKeyTarget.value.trim()\n const isFilled = apiKey.length > 0\n\n this.statusTarget.textContent = isFilled ? \"Filled\" : \"Empty\"\n this.statusTarget.classList.toggle(\"filled\", isFilled)\n this.statusTarget.classList.toggle(\"empty\", !isFilled)\n\n this.formHiddenTargets.forEach((element) =>{\n element.removeAttribute(\"hidden\")\n })\n\n this.formVisibleTargets.forEach((element) =>{\n element.setAttribute(\"hidden\", true)\n })\n\n this.closeButtonTarget.textContent = \"Close\"\n }\n\n edit() {\n this.formVisibleTargets.forEach((element) =>{\n element.removeAttribute(\"hidden\")\n })\n\n this.formHiddenTargets.forEach((element) =>{\n element.setAttribute(\"hidden\", true)\n })\n }\n \n highlightForm() {\n this.element.dataset.formHighlight = true\n\n setTimeout(() => {\n delete this.element.dataset.formHighlight\n }, 1000)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n baseUrl: String\n }\n static targets = [\"childSelect\"]\n\n change(event) {\n const self = this\n let branch_slug = event.target.selectedOptions[0].value\n if (branch_slug === \"\") {\n // Blank option has been selected by user, escape\n return\n }\n let url = self.#listVersionsUrl(branch_slug)\n\n fetch(url)\n .then(response => response.json())\n .then((data) => {\n self.#emptySelect()\n data.versions.forEach(version => {\n self.#fillSelect(version)\n })\n })\n }\n\n immutableUrl(event) {\n if (!event || typeof event.detail !== \"object\" || !event.detail.previous) {\n this.dispatch(\"immutableUrl\", {detail: {previous: this.childSelectTarget.value}})\n } else {\n const comparisonString = new URL(window.location.href).pathname.split(\"/\").pop()\n const newComparisonString = `${this.childSelectTarget.value}..${event.detail.previous}`\n const newUrl = window.location.href.replace(comparisonString, newComparisonString)\n\n history.replaceState({}, document.title, newUrl)\n }\n }\n\n #listVersionsUrl(branch) {\n return `${this.baseUrlValue}?branch=${branch}`\n }\n\n #emptySelect() {\n Array.from(this.childSelectTarget).forEach(option => {\n option.remove()\n })\n }\n\n #fillSelect(version) {\n const option = document.createElement(\"option\")\n option.value = version.id\n option.innerHTML = version.label\n this.childSelectTarget.append(option)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.filledInputs = []\n\n this.element.querySelectorAll(\"input, select\").forEach(input => {\n this.#checkContent(input)\n })\n\n this.#setClearState()\n }\n\n inputChange(event) {\n const input = event.currentTarget\n this.#checkContent(input)\n this.#setClearState()\n }\n\n clearAll() {\n this.filledInputs = []\n this.element.classList.remove(\"clearable\")\n }\n\n #checkContent(input) {\n if (input.value) {\n this.filledInputs.push(input)\n } else {\n if (this.filledInputs.includes(input)) {\n this.filledInputs.pop(input)\n }\n }\n }\n\n #setClearState() {\n this.element.classList.toggle(\"clearable\", this.filledInputs.length)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"dblclick\", this.toggle)\n }\n\n toggle(e) {\n const node = e.target.parentNode.parentNode.querySelector(\"portal-example.debug\") || e.target.closest(\"portal-example.debug\")\n node?.toggleAttribute(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n setActive(event) {\n if (event.currentTarget.contains(event.target)) {\n const activeItem = event.target.closest(\"details\")\n if (!activeItem.open) {\n this.#deactivateParents(activeItem)\n activeItem.classList.add(\"active\")\n } else {\n activeItem.classList.remove(\"active\")\n const parent = activeItem.parentNode.closest(\"details\")\n activeItem.querySelectorAll(\"details\").forEach(details => {\n details.removeAttribute(\"open\")\n details.classList.remove(\"active\")\n })\n if (parent?.querySelectorAll(\"details.expandable-properties-list.active\").length < 1) {\n parent.classList.add(\"active\")\n }\n }\n }\n }\n\n #deactivateParents(container) {\n const parent = container.parentNode.closest(\"details\")\n if (!parent) {\n return false\n }\n\n parent.classList.remove(\"active\")\n return this.#deactivateParents(parent)\n }\n\n openParents(event) {\n this.#openParents(event.detail)\n }\n\n #openParents(element, isLeaf = true) {\n const parent = element.parentNode.closest(\"details\")\n if (!parent) {\n return false\n }\n if (!parent.hasAttribute(\"open\")) {\n parent.setAttribute(\"open\", true)\n }\n isLeaf ? parent.classList.add(\"active\") : parent.classList.remove(\"active\")\n \n return this.#openParents(parent, false)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"link\"]\n\n static values = {\n content: String\n }\n\n // Update event listener (doc-back-link:update)\n //\n // If we are receiving an event on an empty turbo-frame (which has\n // not yet been loaded) while navigating the child link target\n // will not be present.\n //\n // In that case the update event is fired again in the doc-frame controller when the\n // frame has finished to render (in doc-frame#afterRender).\n update() {\n if (this.hasLinkTarget) {\n if (this.hasContentValue) {\n this.linkTarget.href = this.contentValue\n } else {\n this.linkTarget.removeAttribute(\"href\")\n }\n }\n }\n\n // remember event listener (doc-back-link:remember)\n //\n // Store the event detail (a back URL) for later usage\n remember(event) {\n if (event.detail?.backUrl) {\n this.contentValue = event.detail.backUrl\n } else {\n // Remove the content value\n this.contentValue = undefined\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"form\", \"description\"]\n\n onPostSuccess(event) {\n let [data,,] = event.detail\n this.descriptionTarget.innerHTML = data.message\n this.descriptionTarget.classList.remove(\"hidden\")\n }\n\n onPostError(event) {\n let [data,,] = event.detail\n this.descriptionTarget.innerHTML = data.message\n this.descriptionTarget.classList.remove(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"content\", \"copyButton\"]\n\n copy() {\n const originalAriaLabel = this.copyButtonTarget.getAttribute(\"aria-label\")\n let cleanText = this.activeCodeContent.innerText\n\n if (this.activeCodeContent.classList.contains(\"language-curl-example\")) {\n cleanText = cleanText.replace(/^\\s*\\$ /gm, \"\")\n }\n\n navigator.clipboard.writeText(cleanText)\n this.copyButtonTarget.setAttribute(\"aria-label\", \"Copied\")\n\n setTimeout(() => {\n this.copyButtonTarget.setAttribute(\"aria-label\", originalAriaLabel)\n }, 2000)\n }\n\n get activeCodeContent() {\n return this.contentTargets.find(target => !target.classList.contains(\"hidden\")).querySelector(\"code, a\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"container\", \"example\", \"dropdownTitle\", \"dropdownExample\"]\n\n connect() {\n this.toggle()\n this.dropdownExampleTargets.forEach(example => {\n const nodeId = example.getAttribute(\"data-node-id\")\n document.addEventListener(`tabs:change:${nodeId}`, this._openAssociatedExample.bind(this))\n })\n }\n\n _openAssociatedExample(event) {\n const {target} = event.detail\n const name = target.firstChild.textContent.trim()\n const exampleTitle = name.toLowerCase()\n\n const foundExample = this.dropdownExampleTargets.find(example => {\n return example.textContent.trim().toLowerCase().includes(exampleTitle)\n })\n\n if (foundExample) {\n this.toggle({currentTarget: foundExample})\n }\n }\n\n toggle(event) {\n if (event) {\n this.exampleTargets.forEach(example => {\n if (event.currentTarget.textContent.trim() == example.getAttribute(\"data-title\")) {\n example.classList.add(\"active\")\n } else {\n example.classList.remove(\"active\")\n }\n })\n this.dropdownTitleTarget.innerText = event.currentTarget.textContent.trim()\n this.dropdownExampleTargets.forEach(example => {\n example.classList.remove(\"active\")\n })\n\n event.currentTarget.classList.add(\"active\")\n } else {\n this.exampleTargets.forEach((example, index) => {\n if (index !== 0) {\n example.classList.remove(\"active\")\n }\n })\n this.dropdownExampleTargets[0].classList.add(\"active\")\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"operationSkeleton\", \"textSkeleton\"]\n\n initialize() {\n this.element.querySelectorAll(\"turbo-frame[loading='lazy']:not([complete]):not([busy])\").forEach((frame) => {\n frame.removeAttribute(\"disabled\")\n })\n }\n\n saveNavigationParams(event) {\n this.activeSection = event.detail.section\n this.attributeId = event.detail.attributeId\n this.highlight = event.detail.highlight\n }\n\n beforeRequest(event) {\n const frame = event.target\n const skeletonName = frame.getAttribute(\"data-skeleton-target-name\") || \"textSkeletonTarget\"\n const skeleton = this[skeletonName].content.cloneNode(true)\n\n // Ideally we could target only :-moz-only-whitespace divs but the\n // existing :empty CSS selector doesn't select nodes with a child\n // with whitespace only text...\n if (!frame.hasChildNodes() || (frame.childNodes.length === 1 && frame.childNodes[0].nodeType === Node.TEXT_NODE)) {\n frame.appendChild(skeleton)\n }\n }\n\n frameMissing(event) {\n event.preventDefault()\n event.target.innerHTML = \"An error has occured while retrieving this content.\"\n event.target.classList.add(\"missing-frame\")\n }\n\n beforeRender(event) {\n if (!this.highlight && this.#isAboveViewport(event.target)) {\n this.#saveScrollPosition()\n event.detail.render = (currentElement, newElement) => {\n window.requestAnimationFrame(() => {\n currentElement.innerHTML = newElement.innerHTML\n this.#maintainScrollTop()\n })\n }\n }\n }\n\n afterRender(event) {\n if (event.target === this.activeSection) {\n const attributeId = this.attributeId\n const attribute = attributeId && document.getElementById(attributeId)\n const activeItem = attribute || this.activeSection\n // Update back link for doc-back-link enabled items\n this.dispatch(\"doc-back-link:update\", {prefix: false, target: activeItem})\n activeItem.scrollIntoView()\n if (this.highlight) {\n this.dispatch(\"highlight\", { target: document, detail: { element: activeItem, scroll: true }, prefix: false })\n }\n }\n }\n\n afterLoad() {\n this.#resetNavigationParams()\n }\n\n #saveScrollPosition() {\n this.scrollPosition = this.element.scrollHeight - this.element.scrollTop\n }\n\n #maintainScrollTop() {\n this.element.scrollTop = this.element.scrollHeight - this.scrollPosition\n }\n\n #resetNavigationParams() {\n this.activeSection = null\n this.attributeId = null\n this.highlight = null\n }\n\n #isAboveViewport(element) {\n return element.getBoundingClientRect().top < 0\n }\n}\n","import { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","import { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../action-cable-consumer\"\n\nexport default class extends Controller {\n static targets = [\"content\"]\n\n static values = {\n versionId: String\n }\n\n connect() {\n this.initChannel()\n }\n\n initChannel() {\n consumer.subscriptions.create(\n {\n channel: \"VersionCable::LoadingChannel\",\n versionId: this.versionIdValue\n }, {\n received: function(data) {\n if (data.reload) {\n document.location.reload()\n }\n }\n }\n )\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { requestIdleCallback } from \"global/javascript/request_idle_callback\"\nimport { nodeIdFromUrl } from \"global/javascript/utils\"\n\nexport default class extends Controller {\n static targets = [\"mainMenu\", \"header\", \"entry\"]\n\n connect() {\n this.visibleEntries = []\n\n const headerHeight = this.headerTarget.getBoundingClientRect().height\n\n const observer = new IntersectionObserver(\n this.handleIntersectingEntries.bind(this),\n {\n rootMargin: `-${headerHeight}px 0px 0px 0px`\n }\n )\n\n this.entryTargets.forEach(entry => { observer.observe(entry) })\n }\n\n handleIntersectingEntries(entries) {\n const self = this\n requestIdleCallback(() => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n self.insertEntry(entry)\n } else {\n self.removeEntry(entry)\n }\n })\n\n if (this.visibleEntries.length) {\n this.setActive(this.visibleEntries[0])\n self.element.setAttribute(\"data-active-container\", this.visibleEntries[0].getAttribute(\"id\"))\n }\n })\n }\n\n setActive(target) {\n const ignoreScroll = this.element.getAttribute(\"data-ignore-scroll\")\n if (!ignoreScroll) {\n this.activeItem?.classList.remove(\"active\")\n this.activeParent?.classList.remove(\"active\")\n\n const id = target.getAttribute(\"id\")\n\n // the $= selector is to get an element ending with \n // the || operator is to ensure that we get the element container the matching id and not one\n // that contains the id\n this.activeItem = this.mainMenuTarget.querySelector(`[data-section-id=\"${id}\"]`)\n\n if (this.activeItem) {\n const current = this.element.querySelector(\"[aria-current='true']\")\n current?.setAttribute(\"aria-current\", false)\n target.setAttribute(\"aria-current\", true)\n const parentId = this.activeItem.getAttribute(\"data-menu-parent\")\n\n if (parentId) {\n this.activeParent = this.mainMenuTarget.querySelector(`[href$=\"/${parentId}\"]`) || this.mainMenuTarget.querySelector(`[href$=\"#${parentId}\"]`)\n\n if (this.activeParent) {\n this.activeParent.classList.add(\"active\")\n }\n }\n\n const href = new URL(window.location.search, this.activeItem.href)\n history.replaceState({}, \"\", href.toString())\n this.activeItem.classList.add(\"active\")\n this.activeItem.scrollIntoView({ block: \"center\", behavior: \"instant\" })\n }\n }\n }\n\n insertEntry(entry) {\n const top = entry.target.getBoundingClientRect().top\n\n if (this.visibleEntries[0]?.getBoundingClientRect().top > top) {\n // We are scrolling up: we insert the target at the beginning of the Array\n this.visibleEntries.unshift(entry.target)\n } else {\n // Scroll down: push at the end of the Array\n this.visibleEntries.push(entry.target)\n }\n }\n\n removeEntry(entry) {\n const index = this.visibleEntries.indexOf(entry.target)\n if (index > -1) {\n this.visibleEntries.splice(index, 1)\n }\n }\n\n back(event) {\n const targetUrl = new URL(event.target.location)\n const id = nodeIdFromUrl(targetUrl)\n\n this.#visitNode(id)\n }\n\n click(event) {\n event.preventDefault()\n const targetUrl = new URL(event.currentTarget.href)\n const id = event.currentTarget.getAttribute(\"data-section-id\") || nodeIdFromUrl(targetUrl)\n\n // Merge query params from current URL & target URL\n targetUrl.search = new URLSearchParams({\n ...Object.fromEntries(new URLSearchParams(window.location.search)),\n ...Object.fromEntries(targetUrl.searchParams)\n }).toString()\n\n let backUrl = undefined\n if (event.params.storeBackLink) {\n backUrl = window.location.toString()\n }\n\n this.#visitNode(id, targetUrl, backUrl)\n }\n\n #visitNode(id, targetUrl = undefined, backUrl = undefined) {\n const activeItem = document.getElementById(id)\n\n if (activeItem) {\n // Set target URL in history if it's given as input\n if (targetUrl) {\n window.history.pushState({}, \"\", targetUrl.toString())\n }\n\n // Remember 'back URL' for doc-back-link enabled items\n this.dispatch(\"doc-back-link:remember\", {prefix: false, target: activeItem, detail: {backUrl}})\n\n // When active item is a non-loaded turbo-frame\n if (activeItem.tagName === \"TURBO-FRAME\" && activeItem.getAttribute(\"complete\") === null) {\n this.dispatch(\"navigateToFrame\", { target: document, prefix: false, detail: { section: activeItem } })\n activeItem.removeAttribute(\"loading\")\n activeItem.reload()\n } else {\n // Update back link for doc-back-link loaded active items\n //\n // Non loaded frames will be updated when frame is rendered\n // (see doc-frame#afterRender).\n this.dispatch(\"doc-back-link:update\", {prefix: false, target: activeItem})\n }\n\n activeItem.scrollIntoView()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"results\", \"result\", \"content\", \"filler\", \"caret\", \"form\", \"listElement\", \"loader\", \"searchIcon\"]\n\n static values = {\n docUrl: String\n }\n\n initialize() {\n // Simple enough unique identifier for same search session\n this.identifierValue = Math.random().toString(16)\n this.tabindex = -1\n }\n\n connect() {\n this._changeShortcut()\n this.formTarget.querySelector(\"input#uid\").value = this.identifierValue\n }\n\n submitOnType() {\n clearTimeout(this.timeout)\n if (this.inputTarget.value.length > 0) {\n this.#toggleLoader(true)\n this.timeout = setTimeout(() => {\n Rails.fire(this.formTarget, \"submit\")\n }, 500)\n } else {\n this.clearResults()\n this.resultsTarget.replaceChildren(document.importNode(this.fillerTarget.content, true))\n }\n }\n\n #toggleLoader(toggle) {\n this.loaderTarget.setAttribute(\"aria-hidden\", !toggle)\n this.loaderTarget.setAttribute(\"aria-busy\", toggle)\n this.searchIconTarget.setAttribute(\"aria-hidden\", toggle)\n }\n\n _changeShortcut() {\n if (navigator.userAgent.indexOf(\"Mac\") != -1) {\n const commandLabel = this.element.querySelector(\".command\")\n commandLabel.textContent = commandLabel.getAttribute(\"data-osx-key\")\n }\n }\n\n onFocus() {\n this.inputTarget.value = \"\"\n this.inputTarget.focus()\n this.resultsTarget.replaceChildren(document.importNode(this.fillerTarget.content, true))\n }\n\n clearResults() {\n this.#toggleLoader(false)\n this.resultsTarget.replaceChildren()\n }\n\n onBeforeSend(event) {\n if (this.currentSearchRequest) {\n const [xhr] = this.currentSearchRequest.detail\n if (xhr) {\n xhr.abort()\n }\n }\n this.currentSearchRequest = event\n }\n\n onPostSuccess(event) {\n let [data, ,] = event.detail\n const self = this\n this.clearResults()\n\n if (Object.values(data).every(element => !element.length)) {\n self.resultsTarget.innerText = `No results found for \"${self.inputTarget.value}\"`\n }\n Object.entries(data).forEach(([groupName, nodes]) => {\n if (nodes.length === 0)\n return\n\n let groupNode = document.createElement(\"h3\")\n groupNode.appendChild(document.createTextNode(groupName))\n self.resultsTarget.appendChild(groupNode)\n\n const list = document.createElement(\"ul\")\n self.resultsTarget.appendChild(list)\n\n nodes.forEach(data => {\n const resultNode = document.importNode(self.resultTarget.content, true)\n\n if (groupName === \"apis\") {\n const apiNode = document.querySelector(\"#api-\" + data.api.id)\n\n if (apiNode) {\n apiNode.setAttribute(\"data-doc-search-target\", \"listElement\")\n resultNode.querySelector(\"li\").replaceChildren(\n document.importNode(document.querySelector(\"#api-\" + data.api.id), true)\n )\n } else {\n self._renderApiNode(resultNode, data)\n }\n } else {\n self._renderNode(resultNode, data)\n }\n\n list.appendChild(resultNode)\n })\n })\n\n this.tabindex = -1\n }\n\n _renderApiNode(resultNode, data) {\n const self = this\n let { description } = data.properties\n\n const label = resultNode.querySelector(\".result-api-name\")\n const resultTitle = resultNode.querySelector(\".result-title\")\n const resultLink = resultNode.querySelector(\".list-element\")\n const resultDetails = resultNode.querySelector(\".result-details\")\n\n resultLink.href = data.api.url\n\n self._populateResultTitle({ properties: data.api }, resultTitle)\n label.remove()\n\n if (description) {\n resultDetails.innerHTML = description\n } else {\n resultDetails.remove()\n }\n }\n\n _renderNode(resultNode, data) {\n const self = this\n let { id, description, subtitle, breadcrumb } = data.properties\n let apiUrl = self.docUrlValue\n\n const label = resultNode.querySelector(\".result-api-name\")\n const resultLink = resultNode.querySelector(\".list-element\")\n const resultDetails = resultNode.querySelector(\".result-details\")\n\n if (data.api) {\n let { url, name: apiName } = data.api\n apiUrl = url\n\n label.innerText = apiName\n } else {\n label.remove()\n }\n\n resultLink.href = apiUrl.replace(/\\/$/, \"\") + self._getPath(breadcrumb, id)\n resultLink.setAttribute(\"data-section-id\", id)\n\n // TODO: return an operation id not based on breadcrumbs\n if (breadcrumb.length > 1) {\n resultLink.setAttribute(\"data-operation-id\", breadcrumb[1].id)\n }\n self._populateResultTitle(data, resultNode.querySelector(\".result-title\"))\n\n let descriptionContent = []\n if (subtitle) {\n descriptionContent.push(subtitle)\n }\n if (description) {\n descriptionContent.push(description)\n }\n if (descriptionContent.length) {\n resultDetails.innerHTML = descriptionContent.join(\" - \")\n } else {\n resultDetails.remove()\n }\n }\n\n _getPath(breadcrumb, id) {\n // this is a crutch to be able to build url from search results but it would be better\n // to get this information from another attribute\n if (breadcrumb.length === 0) {\n return `/group/${id}`\n } else if (breadcrumb.length === 1) {\n return `/operation/${id}`\n }\n // the second element of a breadcrumb is always the parent operation so\n // we can use its id to build the url\n return `/operation/${breadcrumb[1].id}#${id}`\n }\n\n _populateResultTitle(node, title) {\n let { display_name: name, name: rawName, breadcrumb } = node.properties\n const displayName = document.createElement(\"strong\")\n displayName.innerHTML = name || rawName\n\n if (breadcrumb) {\n const icon = document.importNode(this.caretTarget.content, true)\n breadcrumb.forEach((element) => {\n // element : String | {id: String, name: String}\n //\n // Breadcrumb elements used to only be a name (String). But\n // they can now be an object with an id attribute (String) and\n // a name attribute (String)\n const { name } = element\n title.innerHTML += name || element\n title.appendChild(icon.cloneNode(true))\n })\n }\n title.appendChild(displayName)\n\n return title\n }\n\n onPostError(event) {\n let [, , xhr] = event.detail\n let result = \"

Search could not be processed, please contact Bump.sh support if it persists.

\"\n\n if (xhr.status === 401) {\n result = \"

Please refresh the page to reauthenticate and proceed with your search again.

\"\n }\n\n this.#toggleLoader(false)\n this.resultsTarget.innerHTML = result\n }\n\n previousElement(event) {\n event.preventDefault()\n const results = this.listElementTargets\n if (this.tabindex - 1 < 0) {\n this.inputTarget.focus()\n this.tabindex = -1\n } else {\n const focus = results[this.tabindex -= 1]\n this.#setFocus(focus)\n }\n }\n\n nextElement(event) {\n event.preventDefault()\n const results = this.listElementTargets\n if (this.tabindex + 1 < results.length) {\n const focus = results[this.tabindex += 1]\n this.#setFocus(focus)\n }\n }\n\n #setFocus(element) {\n element.focus()\n element.scrollIntoView({ block: \"center\", behavior: \"instant\" })\n }\n\n clickResult(event) {\n event.preventDefault()\n\n const id = event.currentTarget.getAttribute(\"data-section-id\")\n const operationId = event.currentTarget.getAttribute(\"data-operation-id\")\n const operation = operationId && document.getElementById(operationId)\n\n if (operation && operation.tagName === \"TURBO-FRAME\" && operation.getAttribute(\"complete\") === null) {\n this.dispatch(\"navigateToFrame\", { target: document, prefix: false, detail: { section: operation, attributeId: id, highlight: true } })\n operation.removeAttribute(\"loading\")\n operation.reload()\n } else {\n const activeItem = document.getElementById(id)\n if (activeItem) {\n activeItem.scrollIntoView()\n this.dispatch(\"highlight\", { target: document, detail: { element: activeItem, scroll: true }, prefix: false })\n } else {\n operation && operation.scrollIntoView()\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { nodeIdFromUrl } from \"global/javascript/utils\"\n\nexport default class extends Controller {\n connect() {\n const activeId = nodeIdFromUrl(new URL(window.location.href))\n const activeItem = document.getElementById(activeId)\n if (activeItem) {\n this.dispatch(\"item\", {detail: {element: activeItem, scroll: true}})\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createConsumer } from \"@rails/actioncable\"\n\nconst channel = createConsumer()\n\nexport default class extends Controller {\n static values = {\n id: String\n }\n static targets = [\"body\"]\n\n connect() {\n if (this.idValue) {\n this.initChannel()\n }\n }\n\n initChannel() {\n const self = this\n channel.subscriptions.create(\n {\n channel: \"Docs::DocumentationChangesChannel\",\n id: self.idValue\n }, {\n received: function(data) {\n self.bodyTarget.innerHTML = data.html\n }\n }\n )\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { nodeIdFromUrl } from \"global/javascript/utils\"\n\nexport default class extends Controller {\n static targets = [\"container\", \"content\"]\n\n connect() {\n const self = this\n this.containerTargets.forEach(container => {\n self.maxHeight = container.getAttribute(\"data-maxheight\")\n if (self.maxHeight) {\n const content = container.querySelector(\"[data-expander-target=\\\"content\\\"]\")\n if (parseInt(self.maxHeight, 10) > content.offsetHeight) {\n container.classList.remove(\"expandable\")\n } else {\n content.style.maxHeight = self.maxHeight\n }\n }\n })\n }\n\n expandFromNav(event) {\n const id = nodeIdFromUrl(new URL(event.currentTarget.getAttribute(\"href\")))\n this._expandOperations(document.getElementById(id.replace(/#/, \"\")), true)\n }\n\n expandFromButton(event) {\n this._expandOperations(event.currentTarget)\n }\n\n toggleFromButton(event) {\n const button = event.currentTarget\n const container = button.closest(\"[data-expander-target=\\\"container\\\"]\")\n if (container?.classList.contains(\"expandable\")) {\n this._expandOperations(button)\n } else {\n this._collapseOperations(button)\n }\n }\n\n collapseFromButton(event) {\n this._collapseOperations(event.currentTarget)\n }\n\n expandFromHighlight(event) {\n this._expandOperations(event.detail, false)\n }\n\n _expandOperations(section, scroll) {\n const container = section.closest(\"[data-expander-target=\\\"container\\\"]\")\n if (container) {\n const expandable = container.querySelector(\"[data-expander-target=\\\"content\\\"]\")\n const button = container.querySelector(\".expand-button\")\n container.classList.remove(\"expandable\")\n expandable.style.maxHeight = \"\"\n if (button.hasAttribute(\"data-collapse-label\")) {\n button.querySelector(\"span\").textContent = button.getAttribute(\"data-collapse-label\")\n }\n }\n if (scroll) {\n section.scrollIntoView()\n }\n }\n\n _collapseOperations(section) {\n const container = section.closest(\"[data-expander-target=\\\"container\\\"]\")\n const expandable = container.querySelector(\"[data-expander-target=\\\"content\\\"]\")\n const button = container.querySelector(\".expand-button\")\n container.classList.add(\"expandable\")\n expandable.style.maxHeight = self.maxHeight\n if (button.hasAttribute(\"data-expand-label\")) {\n button.querySelector(\"span\").textContent = button.getAttribute(\"data-expand-label\")\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"apiKey\", \"requestForm\", \"serverUrl\", \"server\", \"operationLink\"]\n\n static values = { documentationId: String }\n\n connect() {\n this.localStorageName = `documentation:${this.documentationIdValue}:api-key`\n\n // Get the serverId and the authenticationId from current URL at controller loading\n const serverId = new URLSearchParams(window.location.search).get(\"server_id\")\n const authenticationId = new URLSearchParams(window.location.search).get(\"authentication_id\")\n\n // Set the server_id query param on operation url\n if (serverId) {\n this.#setParamInOperationUrl(\"server_id\", serverId)\n }\n // Set the authentication_id param on operation url\n if (authenticationId) {\n this.#setParamInOperationUrl(\"authentication_id\", authenticationId)\n }\n this.#setDomApiKeyFromLocalStorage()\n }\n\n changeAuthentication() {\n const authentication = this.element.querySelector(\"[data-selected-scheme=true]\")\n const authenticationId = authentication.dataset.schemeId\n\n this.#setParamInOperationUrl(\"authentication_id\", authenticationId)\n this.#setParamUrl(\"authentication_id\", authenticationId)\n\n this.#setDomApiKeyFromLocalStorage()\n\n // Use to update the request\n const apiKey = this.apiKeyTarget.value\n this.dispatch(\"updatedApiKey\", { detail: { apiKey: apiKey } })\n }\n\n changeServer(event) {\n const server = event.currentTarget.parentElement\n const serverId = server.dataset.id\n\n this.#setParamInOperationUrl(\"server_id\", serverId)\n this.#setParamUrl(\"server_id\", serverId)\n\n // TODO EXPLORER: Code to move in other file\n const clickedButton = event.currentTarget\n const sendRequestController = this.application.getControllerForElementAndIdentifier(this.element, \"explorer-send-request\")\n this.serverUrlTarget.textContent = server.dataset.url\n sendRequestController.updateServer(server.dataset.url)\n\n this.element.querySelectorAll(\"button\").forEach((button) => button.classList.remove(\"selected\"))\n clickedButton.classList.add(\"selected\")\n // until here\n\n this.#setDomApiKeyFromLocalStorage()\n\n // Use to update the request\n const apiKey = this.apiKeyTarget.value\n this.dispatch(\"updatedApiKey\", { detail: { apiKey: apiKey } })\n }\n\n resetApiKey() {\n this.apiKeyTarget.value = \"\"\n const apiKeys = this.#retrieveApiKeysFromLocalStorage()\n const serverApiKeys = apiKeys[this.#currentServerLocalStorageKey()]\n // Clear old string\n if ((serverApiKeys != null) && (typeof (serverApiKeys) === \"object\")) {\n delete apiKeys[this.#currentServerLocalStorageKey()][this.#currentAuthenticationLocalStorageKey()]\n if (Object.keys(apiKeys[this.#currentServerLocalStorageKey()]).length == 0) {\n delete apiKeys[this.#currentServerLocalStorageKey()]\n }\n }\n localStorage.setItem(this.localStorageName, JSON.stringify(apiKeys))\n this.dispatch(\"updatedApiKey\", { detail: { apiKey: \"\" } })\n }\n\n // let users get entered tokens back when switching servers\n // TODO EXPLORER: add js helper debounce\n updateApiKey(event) {\n const apiKey = event.currentTarget.value\n if (apiKey === \"\") {\n return this.resetApiKey()\n }\n const apiKeys = this.#retrieveApiKeysFromLocalStorage()\n const serverApiKeys = apiKeys[this.#currentServerLocalStorageKey()]\n if ((serverApiKeys === null) || (typeof (serverApiKeys) !== \"object\")) {\n apiKeys[this.#currentServerLocalStorageKey()] = { }\n }\n apiKeys[this.#currentServerLocalStorageKey()][this.#currentAuthenticationLocalStorageKey()] = apiKey\n localStorage.setItem(this.localStorageName, JSON.stringify(apiKeys))\n this.dispatch(\"updatedApiKey\", { detail: { apiKey: apiKey } })\n }\n\n #setParamUrl(key, value) {\n let params = new URLSearchParams(window.location.search)\n params.set(key, value)\n const newUrl = new URL(window.location)\n newUrl.search = params.toString()\n history.pushState({}, \"\", newUrl)\n }\n\n #setDomApiKeyFromLocalStorage() {\n if (this.#hasNoApiKey()) {\n return\n }\n const apiKey = this.#getLocalStorageApiKey() || \"\"\n this.apiKeyTarget.value = apiKey\n }\n\n #retrieveApiKeysFromLocalStorage() {\n return JSON.parse(localStorage.getItem(this.localStorageName)) || {}\n }\n\n #currentServerLocalStorageKey() {\n return this.serverUrlTarget.textContent.trim()\n }\n\n #currentAuthenticationLocalStorageKey() {\n const authentication = this.element.querySelector(\"[data-selected-scheme=true]\")\n return authentication.dataset.schemeId\n }\n\n #setParamInOperationUrl(key, value) {\n if (!value) {\n return\n }\n\n this.operationLinkTargets.forEach((operationLink) => {\n const url = new URL(operationLink.href)\n let operationLinkParams = new URLSearchParams(url.search)\n\n operationLinkParams.set(key, value)\n\n url.search = operationLinkParams.toString()\n operationLink.href = url.toString()\n })\n }\n\n #hasNoApiKey() {\n return this.apiKeyTargets.length === 0\n }\n\n #getLocalStorageApiKey() {\n const apiKeys = this.#retrieveApiKeysFromLocalStorage()\n const serverApiKeys = apiKeys[this.#currentServerLocalStorageKey()]\n if ((serverApiKeys != null) || (typeof (serverApiKeys) === \"object\")) {\n return apiKeys[this.#currentServerLocalStorageKey()][this.#currentAuthenticationLocalStorageKey()]\n }\n return null\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"template\", \"button\", \"item\"]\n\n static outlets = [\"explorer-send-request\"]\n\n static values = { inputName: String }\n\n addOne(event) {\n if (event && document.activeElement !== event.currentTarget) {\n return\n }\n\n event?.preventDefault() // can be called without an event, from explorer_share_controller\n const template = this.templateTarget.content.cloneNode(true)\n const index = this.#getIndex(this.templateTarget)\n const currentItem = template.querySelector(\"[data-explorer-collection-target=item]\")\n\n if (this.#isArray()) {\n this.#setUiIncrement(template, index)\n }\n\n if (this.hasButtonTarget) {\n this.element.insertBefore(template, this.buttonTarget)\n } else {\n this.element.append(template)\n }\n\n this.#updateInputsName(currentItem, index)\n }\n\n removeAll() {\n this.itemTargets.forEach((item) => {\n this.removeOne(\n {\n currentTarget: item,\n updateRequest: false\n }\n )\n })\n }\n\n removeOne(event) {\n const toDelete = event.currentTarget.closest(\".property\")\n const itemTarget = toDelete.querySelector(\"[data-explorer-collection-target=item]\")\n const index = itemTarget.dataset.explorerCollectionIndex\n\n // Remove whole element from DOM\n toDelete.remove()\n\n this.#resetIndexes(index)\n this.#updateIncrement(index)\n\n if (event.updateRequest === undefined || event.updateRequest) {\n this.explorerSendRequestOutlet.updateRequest()\n }\n }\n\n #setUiIncrement(element, index) {\n element.querySelector(\".increment\").textContent = `[${index}]`\n }\n\n #updateIncrement(fromIndex) {\n if (!this.#isArray()) return\n\n this.itemTargets.forEach((item, index) => {\n if (fromIndex && index < fromIndex) {\n return\n }\n\n const property = item.closest(\".property\")\n this.#setUiIncrement(property, index)\n\n // Update input's name within the target item\n this.#updateInputsName(item, index)\n })\n }\n\n #updateInputsName(item, index) {\n this.#buildAndStoreParentIndexes(item, index)\n\n // Apply to all descendant inputs (can be childs but also\n // gran-childs, etc...)\n item.querySelectorAll(\"input\").forEach((inputElement) => {\n let defaultInputNameValue = inputElement.name\n let fullName = defaultInputNameValue.replaceAll(/\\[[\\d ]+?\\]/g, \"[]\")\n let currentItem = inputElement.closest(\"[data-explorer-collection-target=item]\")\n\n this.#buildAndStoreParentIndexes(currentItem, index).forEach(parentIndex => {\n // for each step in the loop, replace the first [] with correct increment value.\n fullName = fullName.replace(\"[]\", `[${parentIndex}]`)\n })\n inputElement.name = fullName\n })\n }\n\n #buildAndStoreParentIndexes(item, index) {\n let parentIndexes = []\n const parentItem = item.parentNode.closest(\"[data-explorer-collection-target=item]\")\n\n if (parentItem) {\n parentIndexes =\n parentIndexes.concat(parentItem.dataset.explorerCollectionIndexesValue.split(\",\"))\n }\n // Unless it's a collection, we don't add the current index\n if (this.#getParent(item).dataset.explorerIsCollection === \"true\") {\n parentIndexes.push(index)\n }\n // Remember for later\n item.dataset.explorerCollectionIndexesValue = parentIndexes.join(\",\")\n\n // return list of parent indexes\n return parentIndexes\n }\n\n #isArray() {\n return this.inputNameValue.endsWith(\"[]\")\n }\n\n #resetIndexes(fromIndex) {\n this.itemTargets.forEach((item, index) => {\n if (fromIndex && index < fromIndex) {\n return\n }\n\n delete item.dataset.explorerCollectionIndexesValue\n item.querySelectorAll(\"[data-explorer-collection-target=item]\").forEach(childItem => {\n delete childItem.dataset.explorerCollectionIndexesValue\n })\n })\n }\n\n #getParentCollection(element) {\n return element.closest(\"[data-explorer-is-collection='true']\")\n }\n\n #getParent(element) {\n return element.closest(\"[data-explorer-is-collection]\")\n }\n\n #getIndex(element) {\n const parentCollectionElement = this.#getParentCollection(element)\n if (parentCollectionElement) {\n if (this.inputNameValue.endsWith(\"[]\")) {\n return parentCollectionElement.querySelectorAll(\":scope > div:has(span.increment),li:has(span.increment)\").length\n } else if (parentCollectionElement.dataset.explorerCollectionIndexesValue) {\n return parentCollectionElement.dataset.explorerCollectionIndexesValue.slice(-1)\n }\n }\n return 0\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"loader\", \"icon\", \"responseContent\", \"responseStatus\", \"authMessage\", \"authMessageTemplate\", \"object\", \"pre\"]\n static outlets = [\"syntax-highlight\"]\n\n handleResponse(event) {\n const responsePromise = event.detail.responsePromise\n const contentType = responsePromise.headers.get(\"content-type\")\n\n switch(contentType) {\n case \"image/png\":\n case \"image/jpeg\":\n this.#handleImage(responsePromise, contentType)\n break\n default:\n responsePromise.text().then((data) => {\n let content\n\n // Attempt to parse JSON\n try {\n content = JSON.parse(data)\n } catch {\n content = data\n }\n\n this.#setResponseStatusAndContent(responsePromise.status, JSON.stringify(content, null, 2))\n })\n }\n }\n\n handleFailure(event) {\n const error = event.detail.responsePromise\n\n this.#unexpectedErrorHandler(error)\n }\n\n #unexpectedErrorHandler(error) {\n this.#setResponseStatusAndContent(error.name, error.message)\n }\n\n #setResponseStatusAndContent(status, content) {\n this.#setLoadingState(false)\n this.responseStatusTarget.innerText = status\n this.responseStatusTarget.dataset.statusCode = status\n this.responseStatusTarget.removeAttribute(\"hidden\")\n this.preTarget.removeAttribute(\"hidden\")\n this.responseContentTarget.textContent = content\n if (status === 401) {\n if (!this.hasAuthMessageTarget) {\n const template = this.authMessageTemplateTarget.content.cloneNode(true)\n const responseContainer = this.responseContentTarget.closest(\".example-content\")\n responseContainer.prepend(template)\n }\n this.dispatch(\"check-auth\", { target: document })\n } else if (this.hasAuthMessageTarget) {\n this.authMessageTarget.remove()\n }\n this.responseContentTarget.removeAttribute(\"data-highlighted\")\n this.syntaxHighlightOutlets.find(outlet => outlet.element.contains(this.responseContentTarget)).highlight()\n }\n\n #setLoadingState(isLoading) {\n this.loaderTarget.setAttribute(\"aria-hidden\", !isLoading)\n this.loaderTarget.setAttribute(\"aria-busy\", isLoading)\n this.iconTarget.setAttribute(\"aria-hidden\", isLoading)\n }\n\n #handleImage(responsePromise, contentType) {\n responsePromise.arrayBuffer().then((data) => {\n const blob = new Blob([data], { type: contentType })\n const imageUrl = URL.createObjectURL(blob)\n const image = document.createElement(\"img\")\n image.src = imageUrl\n this.objectTarget.replaceChildren(image)\n this.preTarget.setAttribute(\"hidden\", true)\n this.#setLoadingState(false)\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"authSchemeLabel\", \"apiKey\"]\n\n connect() {\n this.updateSelectedAuthScheme()\n }\n\n selectAuthScheme(event) {\n const buttonOrSpanAuthentication = event.currentTarget\n\n const closestLi = buttonOrSpanAuthentication.closest(\"li\")\n const previousSelected = this.element.querySelector(\"[aria-selected]\")\n if (previousSelected) {\n previousSelected.removeAttribute(\"aria-selected\")\n previousSelected.querySelector(\"[data-selected-scheme]\").dataset.selectedScheme = false\n }\n closestLi.setAttribute(\"aria-selected\", \"true\")\n\n buttonOrSpanAuthentication.dataset.selectedScheme = true\n\n this.updateSelectedAuthScheme()\n }\n\n updateSelectedAuthScheme() {\n if (this.#selectedAuthenticationScheme() ) {\n const selectedLabel = this.#computedAuthSchemeLabel()\n this.authSchemeLabelTargets.forEach((scheme) => {\n scheme.innerText = selectedLabel\n })\n this.dispatch(\"updateAuthSchemeDom\", { detail: { apiKey: this.apiKeyTarget?.value || \"\" } })\n this.dispatch(\"updateAuthSchemeRequest\", { detail: { apiKey: this.apiKeyTarget?.value || \"\" } })\n }\n }\n\n #selectedAuthenticationScheme() {\n return this.element.querySelector(\"[data-selected-scheme=true]\")\n }\n\n #computedAuthSchemeLabel() {\n const selectedElement = this.#selectedAuthenticationScheme()\n return selectedElement ? selectedElement?.dataset.schemeLabel : \"\"\n }\n}\n","export default class RequestBuilder {\n static LINE_BREAK = \" \\\\\\n\" // Constant for line breaks\n\n constructor(url) {\n this.url = new URL(url) // Use the URL object for easier manipulation of query params\n this.method = \"GET\" // default method\n this.queryParams = {}\n this.headers = new Headers()\n this.cookies = new Map()\n this.body = null // for NON GET requests\n }\n\n // Set the HTTP method\n setMethod(method) {\n this.method = method.toUpperCase()\n return this\n }\n\n // Add a header\n setHeader(name, value) {\n this.headers.set(name, value)\n return this\n }\n\n // Delete a header\n deleteHeader(name) {\n this.headers.delete(name)\n return this\n }\n\n // Add a cookie\n addCookie(name, value) {\n this.cookies.set(name, `${name}=${value}`)\n return this\n }\n\n // Delete a cookie\n deleteCookie(name) {\n this.cookies.delete(name)\n return this\n }\n\n // Add a query parameter\n addQueryParam(name, value) {\n this.queryParams[name] = value\n return this\n }\n\n // Set the request body\n setBody(body) {\n this.body = body\n return this\n }\n\n unsetBody() {\n this.body = null\n return this\n }\n\n // Update the URL before sending the request\n updateUrl(newUrl) {\n this.url = new URL(newUrl)\n return this\n }\n\n // If there are cookies, append them to the headers\n buildCookies() {\n if(this.cookies.size > 0) {\n const cookies = Array.from(this.cookies.values()).join(\" \")\n this.setHeader(\"Cookie\", cookies)\n } else {\n this.deleteHeader(\"Cookie\")\n }\n }\n\n // Build the request object\n build() {\n this.buildCookies()\n\n // Create the request options object\n Object.entries(this.queryParams).forEach(([k, v]) => this.url.searchParams.set(k, v))\n const requestOptions = {\n url: this.url,\n method: this.method,\n headers: this.headers\n }\n\n if (this.body) {\n if (this.headers.get(\"content-type\") === \"application/json\") {\n requestOptions.body = JSON.stringify(this.body, null, 2)\n } else {\n requestOptions.body = new URLSearchParams(this.body).toString()\n }\n }\n\n // Create the request object\n return requestOptions\n }\n}\n","import { CurlGenerator } from \"curl-generator\"\nexport default class RequestToCurl {\n constructor(requestOptions, options) {\n this.requestOptions = requestOptions\n this.options = options\n }\n\n // Convert Request object to cURL command\n convert() {\n const params = this.#parseRequestOptions()\n return CurlGenerator(params)\n }\n\n #capitalizeHeaderKey(headerKey) {\n return headerKey\n .toLowerCase()\n .split(\"-\")\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"-\")\n }\n\n #filterHeaders() {\n if (!this.options?.blacklist?.headers) {\n return this.requestOptions.headers\n } else {\n const filteredHeaders = new Headers\n\n this.requestOptions.headers.forEach((value, key) => {\n if (this.options.blacklist.headers.map(header => header.toLowerCase()).includes(key.toLowerCase())) {\n return\n }\n filteredHeaders.set(key, value)\n })\n\n return filteredHeaders\n }\n }\n\n #parseRequestOptions() {\n // Filter and format headers from the Request object\n const filteredHeaders = this.#filterHeaders()\n const headers = {}\n for (const entry of filteredHeaders.entries()) {\n headers[this.#capitalizeHeaderKey(entry[0])] = entry[1]\n }\n\n let parsing = {\n url: `'${this.requestOptions.url}'`,\n method: this.requestOptions.method,\n headers: headers\n }\n\n if (this.requestOptions.body) {\n parsing.body = this.requestOptions.body\n }\n\n return parsing\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { serializeJSON } from \"@syneto/serializejson\"\nimport { trackAnalytics } from \"../../global/javascript/track_analytics\"\nimport RequestBuilder from \"../../global/javascript/request_builder\"\nimport RequestToCurl from \"../../global/javascript/request_to_curl\"\nimport { isEmpty, capitalize, base64 } from \"../../global/javascript/utils\"\n\nexport default class extends Controller {\n static targets = [\"requestForm\", \"urlForm\", \"preview\", \"icon\", \"loader\", \"authSchemeOption\"]\n\n static values = { enctype: String, operationPath: String, baseUrl: String, jwtToken: String, trackUrl: String, proxyUrl: String, }\n\n // Response elements which needs to interact with the Syntax-Highlight controller\n static outlets = [\"syntax-highlight\", \"explorer-collection\"]\n\n connect() {\n this.#initializeRequestBuilder()\n this.updateRequest()\n }\n\n // For now we have a unique entrypoint to handle both successfully\n // (2xx) or errored (all other status) responses\n //\n // The event object has three elements which are defined by Rails UJS\n // https://github.com/rails/rails/blob/v7.1.3.4/actionview/app/assets/javascripts/rails-ujs.js#L91-L99\n\n onSubmit(event) {\n event.preventDefault()\n\n if (!this.#isLoadingState()) {\n this.#setLoadingState(true)\n this.#submitFormData()\n\n trackAnalytics(this.trackUrlValue)\n }\n }\n\n validateAndSubmitForm(event, form) {\n event.preventDefault()\n return form.checkValidity() || (form.reportValidity(), false)\n }\n\n handleKeydownForBothForms(event) {\n if (event.key === \"Enter\") {\n event.preventDefault()\n const isUrlFormValid = this.validateAndSubmitForm(event, this.urlFormTarget)\n const isRequestFormValid = this.validateAndSubmitForm(event, this.requestFormTarget)\n if (isUrlFormValid && isRequestFormValid) {\n this.onSubmit(event)\n }\n }\n }\n\n updateApiKey(event) {\n if (this.#hasNoAuthenticationSchemes()) {\n return\n }\n const credential = event.detail.apiKey\n const destination = this.#selectedAuthenticationSchemeDestination().toLowerCase()\n\n switch (destination) {\n case \"user\":\n this.#addCredentialInHeader(base64.encodeString(credential))\n break\n case \"query\":\n this.#addCredentialInQuery(credential)\n break\n case \"cookie\":\n this.#addCredentialInCookie(credential)\n break\n case \"header\":\n default:\n this.#addCredentialInHeader(credential)\n break\n }\n\n this.updateRequest()\n }\n\n resetRequest() {\n this.explorerCollectionOutlets.map((controller) => {\n controller.removeAll()\n })\n // Finally update the request (by default the collection.removeAll\n // function doesn't update the request)\n this.updateRequest()\n }\n\n updateRequest() {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n const serializedUrlForm = serializeJSON(this.urlFormTarget, {\n skipFalsyValuesForTypes: [\"boolean\", \"number\", \"string\"]\n })\n let serializedRequestForm = serializeJSON(this.requestFormTarget, {\n skipFalsyValuesForTypes: [\"boolean\", \"number\", \"string\"],\n useIntKeysAsArrayIndex: true\n })\n serializedRequestForm = this.#removeSerializedNulls(serializedRequestForm)\n\n const pathParameters = serializedUrlForm[\"path_parameters\"]\n const queryParameters = serializedUrlForm[\"query_parameters\"]\n this.requestBuilder.updateUrl(this.#computeUrl(pathParameters, queryParameters))\n\n if (serializedUrlForm[\"headers\"]) {\n Object.entries(serializedUrlForm[\"headers\"]).forEach(([key, value]) => this.requestBuilder.setHeader(key, value))\n }\n this.requestBuilder.buildCookies()\n\n if (serializedRequestForm) {\n delete serializedRequestForm._method\n }\n\n if (!isEmpty(serializedRequestForm)) {\n this.requestBuilder.setBody(serializedRequestForm)\n } else {\n this.requestBuilder.unsetBody()\n }\n\n this.#generatePreview()\n }, 500)\n }\n\n updateServer(server) {\n this.baseUrlValue = server\n this.updateRequest()\n }\n\n #generatePreview() {\n const requestToCurl = new RequestToCurl(this.requestBuilder.build(), { blacklist: { headers: [\"X-Bump-Proxy-Token\"] } })\n const curlSnippet = requestToCurl.convert()\n // Curly Braces are not URL safe so they are escape by the lib\n // We add them back for a nicer display experience\n const displayableCurlSnippet = curlSnippet.replaceAll(\"%7B\", \"{\").replaceAll(\"%7D\", \"}\")\n this.previewTarget.innerHTML = displayableCurlSnippet\n\n const outlet = this.syntaxHighlightOutlets.find(outlet => outlet.element.contains(this.previewTarget))\n if (outlet) {\n outlet.highlight()\n }\n }\n\n #setLoadingState(isLoading) {\n this.loaderTarget.setAttribute(\"aria-hidden\", !isLoading)\n this.loaderTarget.setAttribute(\"aria-busy\", isLoading)\n this.iconTarget.setAttribute(\"aria-hidden\", isLoading)\n }\n\n // Replace path parameters in the given URL and add query parameters\n // as an URL encoded query string.\n #computeUrl(pathParameters, queryParameters) {\n let rawPath = this.operationPathValue\n\n // Interpolate path parameter into rawPath\n if (pathParameters) {\n const filteredPathParameters = Object.entries(pathParameters).filter(this.#presentValuesFromEntries)\n rawPath = filteredPathParameters.reduce((acc, [key, value]) => acc.replace(`{${key}}`, value), rawPath)\n }\n\n // Join base URL with operation path (working with trailing slash\n // on base URL or not)\n let targetUrl = new URL(`.${rawPath}`, `${this.baseUrlValue}/`)\n targetUrl.pathname = targetUrl.pathname.replace(\"//\", \"/\")\n\n if (queryParameters) {\n // Remove blank query params\n const filteredQueryParameters = Object.fromEntries(\n Object.entries(queryParameters).filter(this.#presentValuesFromEntries)\n )\n targetUrl.search = new URLSearchParams(filteredQueryParameters)\n }\n\n return targetUrl.toString()\n }\n\n #presentValuesFromEntries([, value]) {\n return value !== null && value !== undefined && value !== \"\"\n }\n\n #submitFormData() {\n const self = this\n let requestOptions = this.requestBuilder.build()\n let [url, proxyfiedRequestOptions] = this.#maybeProxify(requestOptions)\n\n fetch(url, proxyfiedRequestOptions)\n .then((responsePromise) => {\n self.dispatch(\n \"requestSent\",\n {\n detail: {\n responsePromise\n }\n }\n )\n }).catch((responsePromise) => {\n self.dispatch(\n \"requestFailed\",\n {\n detail: {\n responsePromise,\n requestHostname: self.requestBuilder.url.hostname\n }\n }\n )\n })\n }\n\n // Read the request method either from the hidden \"_method\" field or\n // from the form directly. This hidden field is the Rails magic for\n // PUT, PATCH or DELETE requests (because HTML forms only support\n // GET or POST requests)\n #retrieveFormMethod(form) {\n const serializedFormData = serializeJSON(form, {\n skipFalsyValuesForTypes: [\"boolean\", \"number\", \"string\"]\n })\n const method = serializedFormData[\"_method\"] || form.method\n delete serializedFormData[\"_method\"]\n return method\n }\n\n #isLoadingState() {\n return this.loaderTarget.ariaBusy === \"true\"\n }\n\n\n #initializeRequestBuilder() {\n this.requestBuilder = new RequestBuilder(this.#computeUrl(null, null))\n this.requestBuilder.setMethod(this.#retrieveFormMethod(this.requestFormTarget))\n\n if (this.enctypeValue) {\n this.requestBuilder.setHeader(\"Content-Type\", this.enctypeValue)\n }\n }\n\n\n #hasNoAuthenticationSchemes() {\n return !this.element.querySelector(\"[data-selected-scheme=true]\")\n }\n\n // This is arbitrary\n // We do not want the user to select\n // The authentication scheme yet\n // So we select the first one even though\n // Some documentations may allow multiple auth schemes\n\n #selectedAuthenticationScheme() {\n if (this.#hasNoAuthenticationSchemes()) {\n return\n }\n\n const selectedElement = this.element.querySelector(\"[data-selected-scheme='true']\")\n const dataset = Object.assign({}, selectedElement.dataset)\n const { authType, scheme, parameterName, destination } = dataset\n const name = selectedElement.textContent.trim()\n return {\n name,\n parameterName,\n destination,\n scheme,\n authType\n }\n }\n\n #selectedAuthenticationSchemeAuthType() {\n return this.#selectedAuthenticationScheme()?.authType\n }\n\n #selectedAuthenticationSchemeScheme() {\n return this.#selectedAuthenticationScheme()?.scheme\n }\n\n #selectedAuthenticationSchemeParameterName() {\n return this.#selectedAuthenticationScheme()?.parameterName\n }\n\n #selectedAuthenticationSchemeDestination() {\n return this.#selectedAuthenticationScheme()?.destination\n }\n\n #addCredentialInHeader(credential) {\n const scheme = this.#selectedAuthenticationSchemeScheme()\n const headerValue = [capitalize(scheme), credential].filter(present => present).join(\" \")\n const name = this.#selectedAuthenticationSchemeParameterName()\n if (credential) {\n if (name) {\n this.requestBuilder.setHeader((name), headerValue)\n } else {\n this.requestBuilder.setHeader(\"Authorization\", headerValue)\n }\n } else {\n name && this.requestBuilder.deleteHeader(name)\n }\n }\n\n #addCredentialInCookie(credential) {\n const name = this.#selectedAuthenticationSchemeParameterName()\n if (name && credential) {\n this.requestBuilder.addCookie(name, credential)\n } else {\n this.requestBuilder.deleteCookie(name)\n }\n }\n\n #addCredentialInQuery(credential) {\n if (this.#selectedAuthenticationSchemeParameterName()) {\n this.requestBuilder.addQueryParam(this.#selectedAuthenticationSchemeParameterName(), credential)\n }\n }\n\n #isDifferentHostname(url) {\n return window.location.hostname != url.hostname\n }\n\n #maybeProxify(requestOptions) {\n const { url } = requestOptions\n let targetUrl\n\n delete requestOptions.url\n\n if (this.#isDifferentHostname(url) && (this.proxyUrlValue.trim().length > 0)) {\n targetUrl = `${this.proxyUrlValue}/${url.toString()}`\n requestOptions.headers.set(\"x-bump-proxy-token\", this.jwtTokenValue)\n } else {\n targetUrl = url.toString()\n }\n\n return [targetUrl, requestOptions]\n }\n\n // Remove null value inside arrays by constructor of a sibling\n #removeSerializedNulls(serializedForm) {\n const traverse = require(\"traverse\")\n return traverse(serializedForm).map(function (schema) {\n if (Array.isArray(schema)) {\n this.update(schema.filter(n => n))\n }\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { trackAnalytics } from \"../../global/javascript/track_analytics\"\nimport { base64 } from \"../../global/javascript/utils\"\n\nexport default class extends Controller {\n static targets = [\"requestForm\", \"urlForm\", \"shareField\", \"server\", \"currentServer\"]\n\n static values = { versionId: String, trackUrl: String }\n\n static outlets = [\"explorer-collection\"]\n\n connect() {\n const digestParam = new URL(document.location).searchParams.get(\"digest\")\n\n if (digestParam) {\n this.#setSharedValues(digestParam)\n // fill query, path and headers parameters in urlForm, with easy value (not object or collection)\n this.#populateInputs(this.sharedValues.urlForm, this.urlFormTarget)\n\n // fill body parameters in requestForm, with easy values (not object or collection)\n this.#populateInputs(this.sharedValues.requestForm, this.requestFormTarget)\n }\n }\n\n // When user access to explorer page, if a search parameter 'digest' is detected,\n // this function will decode the digest parameter to a JS Object,\n // and stored these values in instance variable 'this.sharedValues'.\n #setSharedValues(digest) {\n const decodedString = this.#decodeString(digest)\n const decodedObject = JSON.parse(decodedString)\n\n this.sharedValues = decodedObject\n }\n\n // When modal \"share request\" is open by current user, URL to share is generated\n // here with a parameter 'digest'. This URL is included in copiable field.\n fillShareUrl() {\n this.shareFieldTarget.innerText = this.#generateShareUrl()\n trackAnalytics(this.trackUrlValue)\n }\n\n #generateShareUrl() {\n const shareUrl = new URL(window.location)\n shareUrl.search = \"\"\n shareUrl.searchParams.set(\"digest\", this.#generateDigest())\n shareUrl.searchParams.set(\"server_id\", this.#getCurrentServerId())\n shareUrl.searchParams.set(\"shared_at\", Date.now())\n shareUrl.searchParams.set(\"shared_version_id\", this.versionIdValue)\n\n return shareUrl.href\n }\n\n #getCurrentServerId() {\n const currentServer = this.serverTargets.find((server) => {\n return server.dataset.url === this.currentServerTarget.innerText.trim()\n })\n\n return currentServer.dataset.id\n }\n\n #generateDigest() {\n // create JS object, with top-level key values,\n // where all fields values will be stored.\n // this digest can also share additional informations (version_id, server, timestamp...)\n const urlFormData = new FormData(this.urlFormTarget)\n const requestFormData = new FormData(this.requestFormTarget)\n const digestObject = {\n urlForm: this.#formDataToObject(urlFormData),\n requestForm: this.#formDataToObject(requestFormData)\n }\n\n const stringToDigest = JSON.stringify(digestObject)\n const digest = this.#encodeString(stringToDigest) // safe Ascii support\n\n return digest\n }\n\n #formDataToObject(formData) {\n const formDataObject = {}\n\n for (let [key, value] of formData.entries()) {\n if (value === null || value === undefined) continue\n\n const trimmedValue = String(value).trim()\n\n if (trimmedValue !== \"\") {\n formDataObject[key] = trimmedValue\n }\n }\n\n return formDataObject\n }\n\n // When controller collection-controller is connected, verify if\n // there are some values in this.sharedValues for this element. If\n // yes, call the addOne functionto open collection inputs. Then,\n // call populateInputs to populate these inputs.\n //\n // Please note that the “populateInputs” could be done later (once\n // all form is loaded) instead of each time there's an open\n // collection.\n explorerCollectionOutletConnected(outletController, element) {\n const keyValues = this.sharedValues?.requestForm\n if (!keyValues) return\n\n const { inputNameValue: inputName } = outletController\n // The requestForm values are key:value pairs where the key is the\n // input name (with indexes for collections) and value is the\n // target input value.\n // E.g. {\"user[0][name]\": \"John\", \"user[1][name]\": \"Marie\"}\n\n Object.keys(keyValues).forEach(key => {\n // Escape regexp chars from the inputname\n // $& means the whole matched string\n const escapedInputName = inputName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n // Build a regexp from the input name to match the array indexes '[n]'\n const regexInputName = escapedInputName.replaceAll(\"\\\\[\\\\]\", \"\\\\[(\\\\d+)\\\\]\")\n const matchData = key.match(new RegExp(`^${regexInputName}`))\n\n if (matchData) {\n // Remove first element (it's the matched text). All remaining\n // items the capturing groups of the matched text (all the\n // indexes).\n matchData.shift()\n // Remove last index which is related to the current\n // controller to remember if we already opened it or not. Only\n // if we are at the level of an array\n let index = null\n if (inputName.endsWith(\"[]\")) {\n index = parseInt(matchData.pop())\n }\n // Actually open the collection/object\n while (element.querySelectorAll(\"[data-explorer-collection-target=item]\").length <= index) {\n outletController.addOne()\n }\n }\n })\n\n // TODO: This could be done “later” (once the complete form has\n // finished loading) instead of each time there's a collection\n // controller that connects.\n this.#populateInputs(this.sharedValues.requestForm, element)\n }\n\n #populateInputs(values, element) {\n if (Object.keys(values).length === 0) return\n\n element.querySelectorAll(\"input, select\").forEach((inputElement) => {\n const name = inputElement.name\n const value = values[name]\n console.log(inputElement)\n\n if (value !== undefined) {\n const inputFilled = this.#fillFormInputWithValue(inputElement, value)\n // remove value from values when it has been used (une boule sur le sapin de Noel)\n // if inputFilled is false, it means the value has not been used\n inputFilled && delete values[name]\n }\n })\n }\n\n #fillFormInputWithValue(input, value) {\n if (input !== undefined) {\n if ([\"radio\", \"checkbox\"].includes(input.type)) {\n input.checked = !!value\n return true\n } else {\n input.value = value\n return !!input.value\n }\n }\n }\n\n #encodeString(serializedJSON) {\n return base64.encodeString(serializedJSON)\n }\n\n #decodeString(digestParam) {\n return base64.decodeToString(digestParam)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"content\"]\n\n connect() {\n this.currentFilter = this.element.querySelector(\".active\")\n }\n\n toggle(event) {\n const self = this\n this._setFilter(event.target)\n this.contentTargets.forEach((content) => {\n if (content.getAttribute(\"data-value\") !== self.currentFilter.innerText) {\n content.style.display = \"none\"\n } else {\n content.style.display = \"block\"\n }\n })\n }\n\n reset(event) {\n this._setFilter(event.target)\n this.contentTargets.forEach(content => content.style.display = \"block\")\n }\n\n _setFilter(button) {\n if (!button.classList.contains(\"active\")) {\n this.currentFilter?.classList.remove(\"active\")\n button.classList.add(\"active\")\n this.currentFilter = this.element.querySelector(\".active\")\n }}\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"dismiss\"]\n\n setHighlight(event) {\n event.preventDefault()\n const target = event.detail.element || event.target\n const scroll = event.detail.scroll\n const container = target && target.closest(\".highlight-container\") || target.querySelector(\".highlight-container\")\n container && this.#displayHighlight(target, container, scroll)\n }\n\n highlightFromAnchor(event) {\n event.preventDefault()\n const target = event.currentTarget\n const container = target && target.closest(\".highlight-container\")\n container && this.#displayHighlight(target, container)\n this.#copyToClipboard(target)\n }\n\n highlightInDoc(event) {\n event.preventDefault()\n const property = event.currentTarget\n const propertyId = property.dataset.anchor\n\n const docProperty = this.element.querySelector(`.explorer-doc #${propertyId}`)\n\n if (docProperty) {\n this.dispatch(\"open-details\", { target: document, detail: property, prefix: false })\n this.#displayHighlight(docProperty, docProperty.closest(\".highlight-container\"), {block: \"center\"})\n }\n }\n\n dismiss(event) {\n if (!event.target.closest(\".anchor-link\") && !event.target.closest(\"dialog\")) {\n const container = document.querySelector(\".shared\")\n this.#removeHighlight(container)\n }\n }\n\n #displayHighlight(target, container, scroll = false) {\n this.#removeHighlight(this.element.querySelector(\".shared\"))\n\n const tabParent = container.closest(\"[data-tabs-target='panel']\")\n if (tabParent && scroll) {\n const tab = document.querySelector(`[name=\"${tabParent.getAttribute(\"id\")}\"]`)\n tab && tab.click()\n }\n this.dispatch(\"open-details\", { target: document, detail: target, prefix: false })\n container.closest(\"[data-expander-target=\\\"container\\\"]\") && this.dispatch(\"expand\", { detail : container })\n\n container.classList.add(\"shared\")\n this.#appendDismissButton(container)\n scroll && target.scrollIntoView()\n }\n\n #appendDismissButton(container) {\n if (!this.hasDismissTarget) {\n return false\n }\n\n if (!container.querySelector(\":scope > .dismiss-highlight\")) {\n container.appendChild(document.importNode(this.dismissTarget.content, true))\n }\n }\n\n #removeHighlight(container) {\n container && container.classList.remove(\"shared\")\n }\n\n #copyToClipboard(link) {\n const href = link.getAttribute(\"href\")\n history.pushState({}, \"\", href)\n navigator.clipboard.writeText(window.location)\n link.classList.add(\"active\")\n\n setTimeout(() => {\n link.classList.remove(\"active\")\n }, 2000)\n }\n}\n","import { Application } from \"@hotwired/stimulus\"\nimport Hotkeys from \"stimulus-hotkeys\"\nimport { definitionsFromContext } from \"@hotwired/stimulus-webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\n// Manually register Hotkeys as a Stimulus controller\napplication.register(\"hotkeys\", Hotkeys)\n\ndocument.querySelector(\"body\").classList.remove(\"no-js\")\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createConsumer } from \"@rails/actioncable\"\n\nconst channel = createConsumer()\n\nexport default class extends Controller {\n static targets = [\"content\"]\n\n static values = {\n id: String,\n loaded: Boolean\n }\n\n connect() {\n this.initChannel()\n }\n\n initChannel() {\n if (!this.#existingSubscription()) {\n const self = this\n\n channel.subscriptions.create(\n {\n channel: \"Docs::PreviewsChannel\",\n id: self.idValue,\n loaded: self.loadedValue\n }, {\n received: function(data) {\n if (data.html) {\n self.contentTarget.replaceWith(document.createRange().createContextualFragment(data.html))\n // Manually fire a DOMContentLoaded event as if the page\n // loaded for the first time.\n document.dispatchEvent(new Event(\"DOMContentLoaded\"))\n } else if (data.reload) {\n document.location.reload()\n }\n }\n }\n )\n }\n }\n\n #existingSubscription() {\n return channel.subscriptions.subscriptions.find((el) => {\n return JSON.parse(el.identifier).channel === \"Docs::PreviewsChannel\"\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"container\"]\n\n connect() {\n this.initLoaderUpdates()\n }\n\n disconnected() {\n this.stopLoaderUpdates()\n }\n\n rejected() {\n this.stopLoaderUpdates()\n }\n\n updateLoaderMessage(message) {\n this.containerTarget.innerText = message\n }\n\n initLoaderUpdates() {\n this.messages = this.loadMessages()\n this.nextMessageIn10Seconds()\n }\n\n stopLoaderUpdates() {\n clearTimeout(this.loaderTimer)\n }\n\n nextMessageIn10Seconds() {\n const self = this\n self.loaderTimer = setTimeout(function() {\n const nextMessage = self.messages.shift()\n\n if (nextMessage) {\n self.updateLoaderMessage(nextMessage)\n self.nextMessageIn10Seconds()\n }\n }, 10000)\n }\n\n loadMessages() {\n return [\n this.element.getAttribute(\"data-loader-10s\"),\n this.element.getAttribute(\"data-loader-20s\"),\n this.element.getAttribute(\"data-loader-30s\"),\n this.element.getAttribute(\"data-loader-40s\"),\n this.element.getAttribute(\"data-loader-50s\"),\n this.element.getAttribute(\"data-loader-60s\")\n ].filter(x => !!x)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"content\", \"button\", \"select\"]\n \n connect() {\n this.contentTargets.forEach((content, index) => {\n if (index > 0) {\n content.setAttribute(\"aria-hidden\", true)\n document.querySelector(`[data-body-id=\"${content.getAttribute(\"id\")}\"]`)?.setAttribute(\"hidden\", true)\n }\n })\n }\n\n show(event) {\n const bodyId = event.params.id\n const bodyScope = event.params.scope\n\n this.#switchBody(event.params.id)\n this.#switchSelection(event.target)\n if (bodyScope) {\n this.#switchExample(bodyId, bodyScope)\n }\n }\n\n #switchBody(id) {\n this.contentTargets.forEach(element => {\n if (!element.classList.contains(\"content-type\")) {\n element.setAttribute(\"hidden\", true)\n }\n })\n document.getElementById(id).removeAttribute(\"hidden\")\n }\n\n #switchSelection(target) {\n this.selectTarget.textContent = target.textContent.trim()\n this.buttonTargets.forEach(button => button.setAttribute(\"aria-selected\", false))\n target.setAttribute(\"aria-selected\", true)\n }\n\n #switchExample(id, scope) {\n const exampleTarget = document.querySelector(`[data-body-id=${id}]`)\n const scopeTargets = document.querySelectorAll(`[data-body-scope=\"${scope}\"]`)\n\n Array.from(scopeTargets).forEach(target => target.setAttribute(\"hidden\", true))\n exampleTarget?.removeAttribute(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"button\", \"response\", \"dialog\"]\n\n expand() {\n const response = this.responseTarget.cloneNode(true)\n const closeButton = document.importNode(this.buttonTarget.content, true)\n response.querySelector(\"header\").appendChild(closeButton)\n response.removeAttribute(\"data-response-dialog-target\")\n this.dialogTarget.replaceChildren(response)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = []\n\n redirect() {\n window.location.href = this.element.value \n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { requestIdleCallback } from \"global/javascript/request_idle_callback\"\n\nimport hljs from \"highlight.js/lib/core\"\nimport bash from \"highlight.js/lib/languages/bash\"\nimport json from \"highlight.js/lib/languages/json\"\nimport shell from \"highlight.js/lib/languages/shell\"\nimport yaml from \"highlight.js/lib/languages/yaml\"\nimport curl from \"highlightjs-curl/src/languages/curl\"\nimport ruby from \"highlight.js/lib/languages/ruby\"\nimport python from \"highlight.js/lib/languages/python\"\nimport xml from \"highlight.js/lib/languages/xml\"\n\nimport \"highlight.js/styles/color-brewer.css\"\n\nexport default class extends Controller {\n static targets = [\"entry\"]\n\n connect() {\n hljs.registerLanguage(\"bash\", bash)\n hljs.registerLanguage(\"shell\", shell)\n hljs.registerLanguage(\"json\", json)\n hljs.registerLanguage(\"yaml\", yaml)\n hljs.registerLanguage(\"curl\", curl)\n hljs.registerLanguage(\"ruby\", ruby)\n hljs.registerLanguage(\"python\", python)\n hljs.registerLanguage(\"xml\", xml)\n\n this.highlight()\n }\n\n highlight() {\n const observer = new IntersectionObserver(this.highlightExamples)\n this.entryTargets.forEach(entry => { observer.observe(entry) })\n }\n\n highlightExamples(entries, observer) {\n requestIdleCallback(() => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n hljs.highlightElement(entry.target)\n observer.unobserve(entry.target)\n }\n })\n })\n }\n}\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","async","trackAnalytics","trackUrl","csrfToken","jsonResponse","fetch","then","response","json","token","fetchCsrf","method","headers","nodeIdFromUrl","url","parts","pathname","split","push","hash","slice","filter","element","undefined","nodeId","pop","endsWith","length","isEmpty","obj","prop","hasOwn","capitalize","str","charAt","toUpperCase","toLowerCase","base64Utils","s","Uint8Array","from","atob","c","charCodeAt","b","btoa","String","fromCharCode","base64","decodeToString","TextDecoder","decode","encodeString","TextEncoder","encode","Turbo","drive","require","Rails","start","_Class","Controller","change","event","tab","preventDefault","detail","target","classList","contains","closest","link","href","this","hasAnchorTarget","anchorTarget","setCurrentForm","tabName","currentTarget","getAttribute","currentPanel","querySelector","querySelectorAll","forEach","panel","setAttribute","removeAttribute","dispatch","targets","updateButtonLabel","closeButtonTarget","textContent","apiKeyTarget","value","close","isFilled","trim","statusTarget","toggle","formHiddenTargets","formVisibleTargets","edit","highlightForm","dataset","formHighlight","setTimeout","_listVersionsUrl","_classPrivateFieldLooseKey","_emptySelect","_fillSelect","constructor","args","defineProperty","_fillSelect2","_emptySelect2","_listVersionsUrl2","self","branch_slug","selectedOptions","_classPrivateFieldLooseBase","data","versions","version","immutableUrl","previous","comparisonString","URL","window","location","newComparisonString","childSelectTarget","newUrl","replace","history","replaceState","document","title","branch","baseUrlValue","Array","option","remove","createElement","innerHTML","label","append","values","baseUrl","_checkContent","_setClearState","_checkContent2","input","filledInputs","includes","_setClearState2","connect","inputChange","clearAll","addEventListener","node","parentNode","toggleAttribute","_deactivateParents","_openParents","_deactivateParents2","container","parent","_openParents2","isLeaf","hasAttribute","add","setActive","activeItem","open","details","openParents","update","hasLinkTarget","hasContentValue","linkTarget","contentValue","remember","backUrl","content","onPostSuccess","descriptionTarget","message","onPostError","copy","originalAriaLabel","copyButtonTarget","cleanText","activeCodeContent","innerText","navigator","clipboard","writeText","contentTargets","find","dropdownExampleTargets","example","_openAssociatedExample","bind","exampleTitle","firstChild","foundExample","exampleTargets","dropdownTitleTarget","index","_saveScrollPosition","_maintainScrollTop","_resetNavigationParams","_isAboveViewport","_isAboveViewport2","_resetNavigationParams2","_maintainScrollTop2","_saveScrollPosition2","initialize","frame","saveNavigationParams","activeSection","section","attributeId","highlight","beforeRequest","skeleton","cloneNode","hasChildNodes","childNodes","nodeType","Node","TEXT_NODE","appendChild","frameMissing","beforeRender","render","currentElement","newElement","requestAnimationFrame","afterRender","getElementById","prefix","scrollIntoView","scroll","afterLoad","scrollPosition","scrollHeight","scrollTop","getBoundingClientRect","top","createConsumer","initChannel","consumer","subscriptions","create","channel","versionId","versionIdValue","received","reload","_visitNode","_visitNode2","visibleEntries","headerHeight","headerTarget","height","observer","IntersectionObserver","handleIntersectingEntries","rootMargin","entryTargets","entry","observe","entries","requestIdleCallback","isIntersecting","insertEntry","removeEntry","activeParent","mainMenuTarget","current","parentId","search","toString","block","behavior","unshift","indexOf","splice","back","targetUrl","click","URLSearchParams","fromEntries","searchParams","params","storeBackLink","pushState","tagName","_toggleLoader","_setFocus","_setFocus2","_toggleLoader2","identifierValue","Math","random","tabindex","_changeShortcut","formTarget","submitOnType","clearTimeout","timeout","inputTarget","fire","clearResults","resultsTarget","replaceChildren","importNode","fillerTarget","userAgent","commandLabel","onFocus","focus","onBeforeSend","currentSearchRequest","xhr","abort","every","groupName","nodes","groupNode","createTextNode","list","resultNode","resultTarget","apiNode","api","_renderApiNode","_renderNode","description","properties","resultTitle","resultLink","resultDetails","_populateResultTitle","subtitle","breadcrumb","apiUrl","docUrlValue","name","apiName","_getPath","descriptionContent","join","display_name","rawName","displayName","icon","caretTarget","result","status","previousElement","results","listElementTargets","nextElement","clickResult","operationId","operation","loaderTarget","searchIconTarget","docUrl","activeId","idValue","bodyTarget","html","containerTargets","maxHeight","parseInt","offsetHeight","style","expandFromNav","_expandOperations","expandFromButton","toggleFromButton","button","_collapseOperations","collapseFromButton","expandFromHighlight","expandable","_setParamUrl","_setDomApiKeyFromLocalStorage","_retrieveApiKeysFromLocalStorage","_currentServerLocalStorageKey","_currentAuthenticationLocalStorageKey","_setParamInOperationUrl","_hasNoApiKey","_getLocalStorageApiKey","_getLocalStorageApiKey2","_hasNoApiKey2","_setParamInOperationUrl2","_currentAuthenticationLocalStorageKey2","_currentServerLocalStorageKey2","_retrieveApiKeysFromLocalStorage2","_setDomApiKeyFromLocalStorage2","_setParamUrl2","localStorageName","documentationIdValue","serverId","get","authenticationId","changeAuthentication","schemeId","apiKey","changeServer","server","parentElement","clickedButton","sendRequestController","application","getControllerForElementAndIdentifier","serverUrlTarget","updateServer","resetApiKey","apiKeys","serverApiKeys","localStorage","setItem","JSON","stringify","updateApiKey","key","set","parse","getItem","operationLinkTargets","operationLink","operationLinkParams","apiKeyTargets","documentationId","_setUiIncrement","_updateIncrement","_updateInputsName","_buildAndStoreParentIndexes","_isArray","_resetIndexes","_getParentCollection","_getParent","_getIndex","_getIndex2","_getParent2","_getParentCollection2","_resetIndexes2","_isArray2","_buildAndStoreParentIndexes2","_updateInputsName2","_updateIncrement2","_setUiIncrement2","addOne","activeElement","template","templateTarget","currentItem","hasButtonTarget","insertBefore","buttonTarget","removeAll","itemTargets","item","removeOne","updateRequest","toDelete","explorerCollectionIndex","explorerSendRequestOutlet","fromIndex","property","inputElement","fullName","replaceAll","parentIndex","parentIndexes","parentItem","concat","explorerCollectionIndexesValue","explorerIsCollection","inputNameValue","childItem","parentCollectionElement","outlets","inputName","_unexpectedErrorHandler","_setResponseStatusAndContent","_setLoadingState","_handleImage","_handleImage2","_setLoadingState2","_setResponseStatusAndContent2","_unexpectedErrorHandler2","handleResponse","responsePromise","contentType","text","handleFailure","error","responseStatusTarget","statusCode","preTarget","responseContentTarget","hasAuthMessageTarget","authMessageTemplateTarget","prepend","authMessageTarget","syntaxHighlightOutlets","outlet","isLoading","iconTarget","arrayBuffer","blob","Blob","type","imageUrl","createObjectURL","image","src","objectTarget","_selectedAuthenticationScheme","_computedAuthSchemeLabel","_computedAuthSchemeLabel2","_selectedAuthenticationScheme2","updateSelectedAuthScheme","selectAuthScheme","buttonOrSpanAuthentication","closestLi","previousSelected","selectedScheme","selectedLabel","authSchemeLabelTargets","scheme","selectedElement","schemeLabel","RequestBuilder","queryParams","Headers","cookies","Map","body","setMethod","setHeader","deleteHeader","delete","addCookie","deleteCookie","addQueryParam","setBody","unsetBody","updateUrl","buildCookies","size","build","k","v","requestOptions","LINE_BREAK","_capitalizeHeaderKey","_filterHeaders","_parseRequestOptions","RequestToCurl","options","_parseRequestOptions2","_filterHeaders2","_capitalizeHeaderKey2","convert","CurlGenerator","headerKey","word","blacklist","filteredHeaders","header","parsing","_generatePreview","_computeUrl","_presentValuesFromEntries","_submitFormData","_retrieveFormMethod","_isLoadingState","_initializeRequestBuilder","_hasNoAuthenticationSchemes","_selectedAuthenticationSchemeAuthType","_selectedAuthenticationSchemeScheme","_selectedAuthenticationSchemeParameterName","_selectedAuthenticationSchemeDestination","_addCredentialInHeader","_addCredentialInCookie","_addCredentialInQuery","_isDifferentHostname","_maybeProxify","_removeSerializedNulls","_removeSerializedNulls2","_maybeProxify2","_isDifferentHostname2","_addCredentialInQuery2","_addCredentialInCookie2","_addCredentialInHeader2","_selectedAuthenticationSchemeDestination2","_selectedAuthenticationSchemeParameterName2","_selectedAuthenticationSchemeScheme2","_selectedAuthenticationSchemeAuthType2","_hasNoAuthenticationSchemes2","_initializeRequestBuilder2","_isLoadingState2","_retrieveFormMethod2","_submitFormData2","_presentValuesFromEntries2","_computeUrl2","_generatePreview2","onSubmit","trackUrlValue","validateAndSubmitForm","form","checkValidity","reportValidity","handleKeydownForBothForms","isUrlFormValid","urlFormTarget","isRequestFormValid","requestFormTarget","credential","resetRequest","explorerCollectionOutlets","controller","serializedUrlForm","serializeJSON","skipFalsyValuesForTypes","serializedRequestForm","useIntKeysAsArrayIndex","pathParameters","queryParameters","requestBuilder","_method","displayableCurlSnippet","previewTarget","rawPath","operationPathValue","reduce","acc","filteredQueryParameters","proxyfiedRequestOptions","catch","requestHostname","hostname","serializedFormData","ariaBusy","enctypeValue","assign","authType","parameterName","destination","headerValue","present","proxyUrlValue","jwtTokenValue","serializedForm","traverse","schema","isArray","n","enctype","operationPath","jwtToken","proxyUrl","_setSharedValues","_generateShareUrl","_getCurrentServerId","_generateDigest","_formDataToObject","_populateInputs","_fillFormInputWithValue","_encodeString","_decodeString","_decodeString2","_encodeString2","_fillFormInputWithValue2","_populateInputs2","_formDataToObject2","_generateDigest2","_getCurrentServerId2","_generateShareUrl2","_setSharedValues2","digestParam","sharedValues","urlForm","requestForm","fillShareUrl","shareFieldTarget","explorerCollectionOutletConnected","outletController","keyValues","regexInputName","matchData","match","RegExp","shift","digest","decodedString","decodedObject","shareUrl","Date","now","serverTargets","currentServerTarget","urlFormData","FormData","requestFormData","digestObject","stringToDigest","formData","formDataObject","trimmedValue","console","log","checked","serializedJSON","currentFilter","_setFilter","display","reset","_displayHighlight","_appendDismissButton","_removeHighlight","_copyToClipboard","_copyToClipboard2","_removeHighlight2","_appendDismissButton2","_displayHighlight2","setHighlight","highlightFromAnchor","highlightInDoc","propertyId","anchor","docProperty","dismiss","tabParent","hasDismissTarget","dismissTarget","Application","context","load","definitionsFromContext","register","Hotkeys","_existingSubscription","_existingSubscription2","loaded","loadedValue","contentTarget","replaceWith","createRange","createContextualFragment","dispatchEvent","Event","el","identifier","Boolean","initLoaderUpdates","disconnected","stopLoaderUpdates","rejected","updateLoaderMessage","containerTarget","messages","loadMessages","nextMessageIn10Seconds","loaderTimer","nextMessage","x","_switchBody","_switchSelection","_switchExample","_switchExample2","_switchSelection2","_switchBody2","show","bodyId","bodyScope","scope","selectTarget","buttonTargets","exampleTarget","scopeTargets","expand","responseTarget","closeButton","dialogTarget","redirect","hljs","registerLanguage","bash","shell","yaml","curl","ruby","python","xml","highlightExamples","highlightElement","unobserve"],"sourceRoot":""}