{"version":3,"file":"js/06-javadocs.js","sources":["js/06-javadocs.js"],"sourcesContent":["/*******************************************************************************\n * Copyright (c) 2018 IBM Corporation and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors:\n *     IBM Corporation - initial API and implementation\n *******************************************************************************/\n\nvar PACKAGE_FRAME = \".leftBottom iframe\";\nvar CLASS_FRAME = \"iframe.rightIframe\";\nvar DEFAULT_PACKAGE_HTML = \"allclasses-frame.html\";\nvar DEFAULT_CLASS_HTML = \"overview-summary.html\";\nvar PACKAGE_PARAM = \"package\";\nvar CLASS_PARAM = \"class\";\nvar FRAMELESS_DEFAULT_PACKAGE_HTML = \"allclasses.html\";\n\nvar defaultHtmlRootPath = \"\";\nvar defaultPackageHtml = \"\";\nvar defaultClassHtml = \"\";\n\nvar iFrameClicked = false;\n// Make sure the footer and header of the documentation page is always in the\n// browser viewport.\nfunction resizeJavaDocWindow() {\n  var topSection = $(\"#background_container\").outerHeight();\n  var bottomSection = $(\"#footer_container\").height();\n\n  var middleSectionHeight = $(window).height() - (topSection + bottomSection);\n  $(\"#javadoc_container\").height(middleSectionHeight);\n}\n\n/* Handles any elements which are not accessible by a screen reader and fixes DAP violations. */\nfunction addAccessibility() {\n  var javadoc_container = $(\"#javadoc_container\").contents();\n  var classFrame = javadoc_container.find(\"iframe[name='classFrame']\");\n\n  // Add accessibility labels to the search input and search reset button, and fix duplicate navigation roles.\n  classFrame\n    .contents()\n    .find(\"#search\")\n    .attr(\"aria-label\", \"Search\");\n  classFrame\n    .contents()\n    .find(\"#reset\")\n    .attr(\"aria-label\", \"Reset the search field\");\n  classFrame\n    .contents()\n    .find(\"header > nav\")\n    .removeAttr(\"role\")\n    .attr(\"aria-label\", \"Header navigation\");\n  classFrame\n    .contents()\n    .find(\"footer > nav\")\n    .removeAttr(\"role\")\n    .attr(\"aria-label\", \"Footer navigation\");\n}\n\nfunction addAccessibilityFrameless(){\n  var javadoc_container = $(\"#javadoc_container\").contents();\n  javadoc_container\n    .contents()\n    .find(\"#search-input\")\n    .attr(\"aria-label\", \"Search\");\n  javadoc_container\n    .contents()\n    .find(\"#reset-button\")\n    .attr(\"aria-label\", \"Reset the search field\");\n}\n\nfunction addExpandAndCollapseToggleButtons() {\n  var javadoc_container = $(\"#javadoc_container\").contents();\n  var iframes = javadoc_container.find(\"iframe\");\n\n  var leftTop = javadoc_container.find(\".leftTop\");\n  var leftBottom = javadoc_container.find(\".leftBottom\");\n\n  $(iframes).each(function() {\n    // Look for the two left side iframes\n    var isTopLeftPackageIFrame = $(this).attr(\"name\") === \"packageListFrame\";\n    var isBottomLeftPackageIFrame = $(this).attr(\"name\") === \"packageFrame\";\n    var isClassFrame = $(this).attr(\"name\") === \"classFrame\";\n\n    if (\n      isTopLeftPackageIFrame &&\n      $(this)\n        .contents()\n        .find(\".toggle\").length === 0\n    ) {\n      var list = $(this)\n        .contents()\n        .find('ul[title=\"Packages\"]');\n      var header = $(this)\n        .contents()\n        .find(\"h2[title='Packages']\");\n\n      // A empty whitespace only <p> element needs to be hidden\n      var emptyParagraphElement = $(this)\n        .contents()\n        .find(\"body > p\");\n      emptyParagraphElement.hide();\n\n      var headerHeight = header.outerHeight(true); // true to include margins too\n      var toggleButton = $(\n        '<div class=\"toggle\" collapsed=\"false\" tabindex=0><img src=\"/img/all_guides_minus.svg\" alt=\"Collapse\" aria-label=\"Collapse\" /></div>'\n      );\n      toggleButton.on(\"click\", function() {\n        var collapsed = $(this).attr(\"collapsed\");\n        if (collapsed === \"true\") {\n          // Expand the list\n          list.show();\n          leftTop.css(\"height\", \"45%\");\n          leftBottom.css(\"height\", \"55%\");\n          $(this)\n            .empty()\n            .append(\n              $(\n                '<img src=\"/img/all_guides_minus.svg\" alt=\"Collapse\" aria-label=\"Collapse\"/>'\n              )\n            );\n          $(this).attr(\"collapsed\", false);\n        } else {\n          // Collapse the list\n          list.hide();\n          leftTop.css(\"height\", headerHeight);\n          leftTop.css(\"overflow\", \"hidden\");\n          leftBottom.css(\"height\", \"86%\");\n          $(this)\n            .empty()\n            .append(\n              $(\n                '<img src=\"/img/all_guides_plus.svg\" alt=\"Expand\" aria-label=\"Expand\"/>'\n              )\n            );\n          $(this).attr(\"collapsed\", true);\n        }\n      });\n      toggleButton.on(\"keypress\", function(event) {\n        event.stopPropagation();\n        // Enter key\n        if (event.which === 13 || event.keyCode === 13) {\n          toggleButton.click();\n        }\n      });\n      header.append(toggleButton);\n    }\n    if (\n      isBottomLeftPackageIFrame &&\n      $(this)\n        .contents()\n        .find(\".toggle\").length === 0\n    ) {\n      addExpandAndCollapseToggleButtonForPackageFrame(\n        $(this).contents(),\n        leftBottom\n      );\n    }\n  });\n}\n\nfunction addExpandAndCollapseToggleButtonForPackageFrame(contents, leftBottom) {\n  var list2 = contents.find(\"main.indexContainer > ul\");\n  var frame2 = contents.find(\"div.leftBottom\");\n\n  // Add region to the package div\n  var packageHeader = contents.find(\"h1.bar\");\n  var packageHeaderText = packageHeader\n    .text()\n    .replace(\"/s/g\", \" \")\n    .trim();\n  // Move the header text only if it is showing \"All Classes\" content\n  if (packageHeaderText === \"All Classes\") {\n    contents.find(\"main.indexContainer\").prepend(packageHeader.remove());\n  }\n  // packageHeader.attr('role', 'region');\n\n  // I did not know how to select for text that contained whitespace.\n  // example: \"All Classes\"\n  var header2 = contents.find(\"h1:contains('Classes')\");\n  var headerHeight2 = header2.outerHeight(true); // true to include margins too\n\n  // .text() returns encoded spaces, convert back to normal spaces\n  // for string comparison.\n  var header2_text = header2\n    .text()\n    .replace(\"/s/g\", \" \")\n    .trim();\n  if (header2_text === \"All Classes\") {\n    var toggleButton2 = $(\n      '<div class=\"toggle\" collapsed=\"false\" tabindex=0><img src=\"/img/all_guides_minus.svg\" alt=\"Collapse\" aria-label=\"Collapse\" /></div>'\n    );\n    toggleButton2.on(\"click\", function() {\n      var collapsed = $(this).attr(\"collapsed\");\n      if (collapsed === \"true\") {\n        // Expand the list\n        list2.show();\n        leftBottom.css(\"height\", \"55%\");\n        $(this)\n          .empty()\n          .append(\n            $(\n              '<img src=\"/img/all_guides_minus.svg\" alt=\"Collapse\" aria-label=\"Collapse\"/>'\n            )\n          );\n        $(this).attr(\"collapsed\", false);\n      } else {\n        // Collapse the list\n        list2.hide();\n        leftBottom.css(\"height\", headerHeight2);\n        $(this)\n          .empty()\n          .append(\n            $(\n              '<img src=\"/img/all_guides_plus.svg\" alt=\"Expand\" aria-label=\"Expand\"/>'\n            )\n          );\n        $(this).attr(\"collapsed\", true);\n      }\n    });\n    toggleButton2.on(\"keypress\", function(event) {\n      event.stopPropagation();\n      // Enter key\n      if (event.which === 13 || event.keyCode === 13) {\n        toggleButton2.click();\n      }\n    });\n    header2.append(toggleButton2);\n  }\n}\nfunction addiPadScrolling() {\n  if (navigator.platform.match(/iPad/)) {\n    $(\"#javadoc_container\")\n      .contents()\n      .find(\".leftTop, .leftBottom, .rightContainer\")\n      .css(\"-webkit-overflow-scrolling\", \"touch\");\n    $(\"#javadoc_container\")\n      .contents()\n      .find(\".leftTop, .leftBottom, .rightContainer\")\n      .css(\"overflow-y\", \"scroll\");\n  }\n}\n\n/*\n     Add a listener to scrolling in the main frame.\n */\nfunction addScrollListener() {\n  var javadoc_container = $(\"#javadoc_container\").contents();\n  var rightFrame = javadoc_container.find(CLASS_FRAME);\n  rightFrame\n    .contents()\n    .off(\"scroll\")\n    .on(\"scroll\", function(event) {\n      hideFooter($(this));\n    });\n}\n\n/* Scroll listener to the left frame */\nfunction addLeftFrameScrollListener(frameToListen, frameElementToListen) {\n  var frame = $(\"#javadoc_container\")\n    .contents()\n    .find(frameToListen);\n  if (frame.length === 0) {\n    return;\n  }\n  var frameHeader = frame.contents().find(frameElementToListen);\n  var packagesList = frame\n    .contents()\n    .find(\"h2[title='Packages']\")\n    .next();\n  var classesList = frame\n    .contents()\n    .find(\"h1.bar\")\n    .next();\n  var offsetTop = frameHeader.offset().top;\n  var origPaddingTop = parseInt(\n    frameHeader.css(\"padding-top\").replace(\"px\", \"\")\n  );\n  var headerHeight = frameHeader.height();\n  // For FireFox, cannot just use border-top, has to use border-top-color, border-top-style, border-top-width\n  var origBorderTopWidth = frameHeader.css(\"border-top-width\");\n  var origBorderTopStyle = frameHeader.css(\"border-top-style\");\n  var origBorderTopColor = frameHeader.css(\"border-top-color\");\n  var stickyBeforeCss =\n    '<style data-class=\"sticky\">.sticky:before {top:' +\n    origPaddingTop +\n    \"px; \" +\n    \"border-top-width: \" +\n    origBorderTopWidth +\n    \"; border-top-style: \" +\n    origBorderTopStyle +\n    \"; border-top-color: \" +\n    origBorderTopColor +\n    \";}</style>\";\n  frame\n    .contents()\n    .off(\"scroll\")\n    .on(\"scroll\", function(event) {\n      var topPos = $(this).scrollTop();\n      if (topPos >= offsetTop - 20) {\n        if (!frameHeader.hasClass(\"sticky\")) {\n          // sticky css will set margin-top to 0, otherwise the rolling content will appear in the margin-top area.\n          // To maintain the spacing and look with margin-top removed, replace padding-top and border-top\n          // with temporarily values and adjust sticky header with calculated padding-top and border-top.\n          frameHeader.css(\"padding-top\", offsetTop + origPaddingTop);\n          packagesList.css(\n            \"padding-top\",\n            offsetTop + origPaddingTop + headerHeight\n          );\n          classesList.css(\n            \"padding-top\",\n            offsetTop + origPaddingTop + headerHeight\n          );\n          frameHeader.css(\"border-top-width\", \"0px\");\n          frameHeader.css(\"border-top-style\", \"solid\");\n          frameHeader.css(\"border-top-color\", \"transparent\");\n\n          if ($(this).find('head style[data-class=\"sticky\"]').length) {\n            $(this)\n              .find('head style[data-class=\"sticky\"]')\n              .replaceWith(stickyBeforeCss);\n          } else {\n            $(this)\n              .find(\"head\")\n              .append(stickyBeforeCss);\n          }\n          frameHeader.addClass(\"sticky\");\n        }\n      } else {\n        if (frameHeader.hasClass(\"sticky\")) {\n          frameHeader.removeClass(\"sticky\");\n          /* restore the original padding-top and border-top css */\n          frameHeader.css(\"padding-top\", origPaddingTop);\n          frameHeader.css(\"border-top-width\", origBorderTopWidth);\n          frameHeader.css(\"border-top-style\", origBorderTopStyle);\n          frameHeader.css(\"border-top-color\", origBorderTopColor);\n        }\n      }\n    });\n}\n\n/*\n     Check if the right iframe has been scrolled down at least 85% to show the footer.\n */\nfunction hideFooter(element) {\n  var scrollTop = element.scrollTop(); // Add the viewport to the top of the scrollTop to see if we've reached end of page.\n  var javadoc_container = $(\"#javadoc_container\").contents();\n  var rightFrame = javadoc_container.find(CLASS_FRAME);\n  var rightFrameViewportHeight = rightFrame.contents()[0].documentElement\n    .clientHeight;\n  var height = element.height();\n  var footer = $(\"footer\");\n\n  // Show footer if the scrollTop plus the viewport height of the right iFrame is at least 85% past the bottom of the right iFrame.\n  if (scrollTop + rightFrameViewportHeight > height * 0.85) {\n    if (!footer.data(\"visible\") || footer.data(\"visible\") === \"false\") {\n      footer.data(\"visible\", true);\n      footer.css(\"display\", \"block\");\n    }\n  } else {\n    if (footer.data(\"visible\")) {\n      footer.data(\"visible\", \"false\");\n      footer.css(\"display\", \"none\");\n    }\n  }\n}\n\nfunction addNavHoverListener() {\n  var javadoc_container = $(\"#javadoc_container\").contents();\n  var navHeader = javadoc_container.find(\".top-nav\");\n  var tabs = navHeader.contents().find(\"li:has(a)\");\n  tabs.off(\"mouseover\").on(\"mouseover\", function() {\n    $(this).addClass(\"clickableNavListTab\");\n  });\n  tabs.off(\"mouseleave\").on(\"mouseleave\", function() {\n    $(this).removeClass(\"clickableNavListTab\");\n  });\n}\n\n// Returns a json object with the package and class from the url\nfunction parseQueryParams() {\n  var targetPage = {};\n  var queryParams = window.location.search;\n  if (queryParams && queryParams !== undefined) {\n    queryParams = queryParams.substring(1); // Remove the '?'\n    var splitQueryParams = queryParams.split(\"&\");\n    for (i = 0; i < splitQueryParams.length; i++) {\n      var queryParam = splitQueryParams[i].trim();\n      if (queryParam.indexOf(PACKAGE_PARAM) === 0) {\n        targetPage.package = queryParam.substring(PACKAGE_PARAM.length + 1);\n      } else {\n        var tmpClassPage = queryParam;\n        if (queryParam.indexOf(CLASS_PARAM) === 0) {\n          tmpClassPage = queryParam.substring(CLASS_PARAM.length + 1);\n        } else if (queryParam.indexOf(\"=\") !== -1) {\n          tmpClassPage = \"\";\n        }\n        if (tmpClassPage !== \"\") {\n          targetPage.class = tmpClassPage;\n        }\n      }\n    }\n  }\n  return targetPage;\n}\n\nfunction setDynamicIframeContent() {\n  // setup the default html path\n  if (defaultPackageHtml === \"\") {\n    var container = $(\"#javadoc_container\");\n    var isFrameless = container.contents().find('iframe').length === 0;\n    var alocation;\n    if (isFrameless) {\n      alocation = container.contents().attr('location');\n    } else {\n      alocation = container\n      .contents()\n      .find(\".leftTop iframe\")\n      .contents()\n      .attr(\"location\");\n    }\n\n    if (alocation) {\n      defaultHtmlRootPath = getJavaDocHtmlPath(alocation.href, true);\n      defaultClassHtml = defaultHtmlRootPath + DEFAULT_CLASS_HTML;\n      if (isFrameless) {\n        defaultPackageHtml = defaultHtmlRootPath + FRAMELESS_DEFAULT_PACKAGE_HTML;\n      } else {\n        defaultPackageHtml = defaultHtmlRootPath + DEFAULT_PACKAGE_HTML;\n      }\n    }    \n  }\n\n  var targetPage = parseQueryParams();\n  if (targetPage.package) {\n    setIFrameContent(PACKAGE_FRAME, defaultHtmlRootPath + targetPage.package);\n  }\n  if (targetPage.class) {\n    setIFrameContent(CLASS_FRAME, defaultHtmlRootPath + targetPage.class);\n  }\n  updateTitle(targetPage.package); \n  var isexternal = $(\"#javadoc_container\").contents().find(\".external-link\").length !== 0;\n  if(isexternal){\n    $(\"#javadoc_container\").contents().find(\".external-link\").attr('target','_blank');\n  }\n}\n\n// Update title in browser tab to show current page\nfunction updateTitle(currentPage) {\n  if (currentPage !== undefined && currentPage !== \"allclasses-frame.html\" && currentPage !== \"allclasses-index.html\") {\n    var currentPage = currentPage\n      .substring(0, currentPage.lastIndexOf(\"/\"))\n      .replace(/\\//g, \".\");\n    if (window.top.location.pathname.includes(\"microprofile\")) {\n      $(\"title\").text(currentPage + \" - MicroProfile API - Open Liberty\");\n    } else {\n      $(\"title\").text(currentPage + \" - Java EE API - Open Liberty\");\n    }\n  }\n}\n\nfunction addClickListeners() {\n  var main_frame = $(\"#javadoc_container\");\n  var iframes = main_frame\n    .contents()\n    .find(\"iframe\");\n\n  $(iframes).each(function() {\n    addClickListener($(this).contents());\n  });\n}\n\nfunction addClickListener(contents) {\n  contents.on(\"click\", function(e) {\n    var handlingClick = true;\n    var iframeName = CLASS_FRAME;\n    var paramKey = CLASS_PARAM;\n    var href = e.target.href;\n\n    if (e.target.target === undefined) {\n      // handling\n      // <a href ...>\n      //   <span> ... </span>\n      // </a>\n      // or\n      // <a href ...>\n      //   <code> ... </code>\n      // </a>\n      if (e.target.parentNode.localName === \"a\") {\n        href = e.target.parentNode.href; // This is when a click happens in the contents instead of one of the tabs in the javadoc.\n        if (e.target.parentNode.target === \"packageFrame\") {\n          iframeName = PACKAGE_FRAME;\n          paramKey = PACKAGE_PARAM;\n        }\n      } else {\n        handlingClick = false;\n      }\n    } else if (e.target.target === \"packageFrame\") {\n      iframeName = PACKAGE_FRAME;\n      paramKey = PACKAGE_PARAM;\n    } else if (e.target.href && e.target.href.indexOf(\"javascript:\") === 0) {\n      // let javadoc handles the click for \"All/Instance/Abstract\" methods in\n      // the Method Summary section\n      handlingClick = false;\n    }\n    if (handlingClick) {\n      // handling onclick here, not by the provided javadoc implementation\n      e.preventDefault();\n      e.stopPropagation();\n\n      var queryParams = setQueryParams(href, paramKey);\n      setIFrameContent(iframeName, href);\n      setPackageContainerHeight();\n\n      // provide state data to be used by the popstate event to render the frame contents\n      var state = {};\n      state[iframeName] = href;\n\n      var otherQueryParamsContent = getRemainingQueryParam(queryParams, paramKey);\n      testObject = otherQueryParamsContent;\n      for (key in otherQueryParamsContent) {\n        var otherStateKey = CLASS_FRAME;\n        if (otherQueryParamsContent.hasOwnProperty(key)){\n          if (key === PACKAGE_PARAM) {\n            otherStateKey = PACKAGE_FRAME;\n          }\n          var value = otherQueryParamsContent[key];\n          state[otherStateKey] = defaultHtmlRootPath + decodeURIComponent(value);\n        }\n      }\n\n      var search = window.location.search;\n      var hash = window.location.hash;      \n      // Removing old search and hash, otherwise it adds duplicate query parameters and hashes.\n      var newURL = window.location.href.replace(search, '').replace(hash, '') + '?' + decodeURIComponent(queryParams.toString());\n      window.history.pushState(state, null, newURL);\n      \n      //updating canonical url when right container iframe clicked\n      iFrameClicked = true;\n      replaceCanonicalUrl(newURL);\n\n      var package;\n      if(queryParams.has(PACKAGE_PARAM)){\n        queryParams.delete(PACKAGE_PARAM);\n      }\n\n      updateTitle(package);\n\n      // Remove all selected li in this list and add active class to parent li\n      $(e.target.parentNode)\n        .parents(\".indexContainer\")\n        .find(\"li.selected\")\n        .removeClass(\"selected\");\n      $(e.target)\n        .parents(\"li\")\n        .first()\n        .addClass(\"selected\");\n    }\n  });\n}\n\nfunction setPackageContainerHeight() {\n  var packageContainer = $(\"#javadoc_container\")\n    .contents()\n    .find(\".leftBottom\");\n  if (packageContainer.css(\"height\") !== \"55%\") {\n    // restore the height in case it is collapsed\n    packageContainer.css(\"height\", \"55%\");\n  }\n}\n\nfunction setIFrameContent(iframeName, href) {\n  window.onpopstate = (e) => {\n    popStateOrPageRefresh();\n  };\n  if(iFrameClicked == false) {\n    popStateOrPageRefresh();\n  }\n\n  var iframeContent = $(\"#javadoc_container\").contents()\n    .find(iframeName)\n    .contents();\n  if (iframeContent.length === 0) {\n    return;\n  }\n  var errorhref = \"/docs/ref/javadocs/doc-404.html\";\n  // get current version to create path to all classes frame\n  var path = window.top.location.pathname;\n  if (path.includes(\"microprofile\")) {\n    var currentVersion = path.slice(-4, -1);\n    var allClassesHref =\n      \"/javadocs/microprofile-\" +\n      currentVersion +\n      \"-javadoc/allclasses-frame.html\";\n  } else if (path.includes(\"liberty-javaee\")) {\n    var currentVersion = path.slice(-2, -1);\n    var allClassesHref =\n      \"/javadocs/liberty-javaee\" +\n      currentVersion +\n      \"-javadoc/allclasses-frame.html\";\n  } else {\n    var allClassesHref = defaultPackageHtml;\n  }\n\n  // check if href results in 404 and redirect to doc-404.html if it does\n  var http = new XMLHttpRequest();\n  http.onreadystatechange = function() {\n    if (this.readyState === 4 && this.status === 200) {\n      // replace the content only if the current content is from a different href\n      if (iframeContent.attr(\"location\").href !== href) {\n        iframeContent.attr(\"location\").replace(href);\n      }\n    } else if (this.status === 404) {\n      if (iframeName === \"iframe.rightIframe\") {\n        iframeContent.attr(\"location\").replace(errorhref);\n      } else if (iframeName === \".leftBottom iframe\") {\n        iframeContent.attr(\"location\").replace(allClassesHref);\n      }\n    }\n  };\n  http.open(\"HEAD\", href);\n  http.send();\n}\n\n//when back button pressed or page refresh\nfunction popStateOrPageRefresh() {\n  var url = window.top.location.href;\n  replaceCanonicalUrl(url);\n}\n\n// If package is provided as paramName, then return the class param. Otherwise return the package param.\nfunction getRemainingQueryParam(queryParams, paramName) {\n  var lookForParam = PACKAGE_PARAM;\n  var returnParams = {};\n  if (paramName === PACKAGE_PARAM) {\n    lookForParam = CLASS_PARAM;\n  }\n  if (queryParams.has(lookForParam)) {\n    try {\n      returnParams[lookForParam] = queryParams.get(lookForParam);\n    } catch (ex) {}\n  }\n  return returnParams;\n}\n\n// To mark the javadoc bookmarkable, query params are used to contain two pieces of information.\n//   package=xxx.html\n//   class=xxx.html\n// eg. ?package=javax/enterprise/util/package-frame.html&class=javax/interceptor/InterceptorBinding.html\n//\n// The package param is used to render the content in the left bottom iframe. The class param\n// is used to render the content in the right iframe.\nfunction setQueryParams(url, paramName) {\n  var newURL = new URL(window.location.href);\n  var queryParams = newURL.searchParams;\n  if (url !== undefined && url !== \"\") {\n    var htmlPath = getJavaDocHtmlPath(url);\n    queryParams.set(paramName, htmlPath);\n  }\n  // The param approach is to always include both package and class param. If default content is\n  // displayed for package/class frame content, provide the param to point to the default html too.\n  if (!queryParams.has(PACKAGE_PARAM)) {\n    // add default package\n    queryParams.set(PACKAGE_PARAM, getJavaDocHtmlPath(defaultPackageHtml));\n  }\n  if (!queryParams.has(CLASS_PARAM)) {\n    // add default class\n    queryParams.set(CLASS_PARAM, getJavaDocHtmlPath(defaultClassHtml));\n  }\n\n  return queryParams;\n}\n\n// Eg if href is http://localhost:4000/docs/modules/reference/microprofile-1.3-javadoc/javax/enterprise/context/package-frame.html\n// if returnBase is true, return http://localhost:4000/docs/modules/reference/microprofile-1.3-javadoc/\n// otherwise return javax/enterprise/context/package-frame.html\n\nfunction getJavaDocHtmlPath(href, returnBase) {\n  var javaDocPath = \"\";\n  try {\n    var stringToMatch = \"(.*/docs/modules/reference/.*-javadoc/)(.*)\";\n    var regExpToMatch = new RegExp(stringToMatch, \"g\");\n    var groups = regExpToMatch.exec(href);\n    if (returnBase) {\n      javaDocPath = groups[1];\n    } else {\n      javaDocPath = groups[2];\n    }\n    console.log(javadocPath);\n  } catch (e) {}\n  return javaDocPath;\n}\n\n// add current hash to url when version button clicked\nfunction versionClick(event) {\n  event.target.href += window.location.hash;\n}\n\nfunction getDocInfo(iframe_src) {\n  if (iframe_src.includes(\"microprofile\")) {\n    // Historical reason for having a trailing '-' to separate the version from doc_type\n    doc_type = \"microprofile-\";\n    doc_version = iframe_src.substring(\n      iframe_src.indexOf(doc_type) + doc_type.length,\n      iframe_src.indexOf(\"-javadoc\")\n    );\n  } else if (iframe_src.includes(\"liberty-javaee\")) {\n    doc_type = \"liberty-javaee\";\n    doc_version = iframe_src.substring(\n      iframe_src.indexOf(doc_type) + doc_type.length,\n      iframe_src.indexOf(\"-javadoc\")\n    );\n  } else if (iframe_src.includes(\"liberty-jakartaee\")) {\n    doc_type = \"liberty-jakartaee\";\n    doc_version = iframe_src.substring(\n      iframe_src.indexOf(doc_type) + doc_type.length,\n      iframe_src.indexOf(\"-javadoc\")\n    );\n  } else {\n    // Should never happen\n    doc_version = 0;\n    doc_type = 0;\n  }\n  return {version: doc_version, type: doc_type};\n}\n\n// Highlight the iframe's TOC according to the query param in the URL\nfunction highlightTOC(iframeName) {\n  var toc, href;\n  var targetPage = parseQueryParams();\n  var iframeContent = $(\"#javadoc_container\")\n    .contents()\n    .find(iframeName)\n    .contents();\n  if (iframeName == \".leftTop iframe\") {\n    href = targetPage.package;\n    toc = iframeContent.find('li a[href=\"' + href + '\"]');\n  } else if (iframeName == PACKAGE_FRAME) {\n    href = targetPage.class;\n    href = href.substring(href.lastIndexOf(\"/\") + 1);\n    toc = iframeContent.find('li a[href=\"' + href + '\"]');\n  }\n  if (toc) {\n    toc\n      .parents(\"li\")\n      .first()\n      .addClass(\"selected\");\n  }\n}\n\nfunction getLibertyVersionFromUrl() {\n  var currentPath = window.location.pathname;\n  return currentPath.split('/')[2];\n}\n\nfunction modifyPackageTopLinks() {\n  var iframe_src = $(\"#javadoc_container\").attr(\"src\").toLowerCase();\n  var liberty_version = getLibertyVersionFromUrl(); // e.g. 21.0.0.12\n  var doc = getDocInfo(iframe_src);\n  var doc_type = doc.type;\n  var doc_version = doc.version;\n\n  var iframeContent = $(\"#javadoc_container\")\n    .contents()\n    .find(\".leftTop iframe\")\n    .contents();\n\n  iframeContent.find('ul[title=\"Packages\"] li a').each(function() {\n    var port = window.location.port !== \"\" ? \":\" + window.location.port : \"\";\n    var package = $(this).attr(\"href\");\n    if (package.includes(\"../\")) {\n      package = package.substring(package.lastIndexOf(\"../\") + 3);\n    }\n    if (!package.includes(window.location.hostname)) {\n      $(this).attr(\n        \"href\",\n        \"https://\" +\n          window.location.hostname +\n          port +\n          \"/docs/\" +\n          liberty_version +\n          \"/reference/javadoc/\" +\n          doc_type + doc_version + \"-javadoc.html\" +\n          \"?package=\" + package +\n          \"&class=overview-summary.html\"\n      );\n      //find out how to load specific package to iframe\n      $(this).on(\"click\", function(event) {\n        event.preventDefault();\n        event.stopPropagation();\n        iFrameClicked = true;\n        var url = $(this).attr(\"href\");\n        //updating canonical url when left container iframe clicked\n        replaceCanonicalUrl(url);\n        setIFrameContent(PACKAGE_FRAME, defaultHtmlRootPath + package);\n        window.history.pushState(\n          {\n            iframeName: \".leftTop iframe\",\n            otherStateKey: defaultHtmlRootPath + package\n          },\n          \"\",\n          $(this).attr(\"href\")\n        );\n      });\n    }\n  });\n}\n\nfunction replaceCanonicalUrl(url) {\n  var canonicalTag = document.querySelector('link[rel=\"canonical\"]');\n  var canonicalUrl = canonicalTag.href;\n  var newCanonicalUrl = canonicalUrl.replace(canonicalUrl.substring(canonicalUrl.indexOf('reference')), '')+url.substring(url.indexOf('reference'));\n  canonicalTag.href = newCanonicalUrl;\n}\n\nfunction setFramelessQueryParams(){\n  var mainFrame = $('#javadoc_container');\n  var isFrameless = mainFrame.contents().find('iframe').length === 0;\n  if (isFrameless) {\n    var alocation = mainFrame.contents().attr('location').href;\n    //var origin = window.location.origin;\n    alocation = alocation.substring(origin.length);\n    // remove /docs/modules/reference/\n    if (alocation.indexOf('/docs/modules/reference/') === 0) {\n      alocation = alocation.substring(24);\n    }\n\n    var currentHref= window.location.href;\n    var newURL = new URL(currentHref);\n    var queryParams = newURL.searchParams;\n    queryParams.set('path', alocation);\n    var baseURL = currentHref.split('?')[0].split('#')[0];\n    var newQueryString = '?' + decodeURIComponent(queryParams.toString());\n    var newURL = baseURL + newQueryString + window.location.hash;\n\n    // Navigate to the new URL\n    if(newURL !== currentHref){\n      window.history.replaceState({}, null, newURL);\n    }\n  }\n}\n\n// Load the frameless javadoc location if the javadocPath query parameter does not match the existing iframe src\nfunction loadJavadocFromUrl(){\n  var mainFrame = $('#javadoc_container');\n  var isFrameless = mainFrame.contents().find('iframe').length === 0;\n  if(isFrameless){\n    var search = window.location.search;\n    var params = new URLSearchParams(search);\n    //var old_query_params = parseQueryParams();\n    var javadocPath = encodeURI(params.get('path'));\n    var tempJavadocPath = javadocPath;\n    // add back /docs/modules/reference/\n    if (!javadocPath.startsWith('/docs/modules/reference/')) {\n      tempJavadocPath = \"/docs/modules/reference/\" + javadocPath;\n    }\n    if (!(javadocPath === null || javadocPath === \"null\" || javadocPath === \"\")) {\n      if (mainFrame[0].contentWindow.location.href !== tempJavadocPath) {\n        mainFrame[0].src = tempJavadocPath;\n      }\n    }\n  }\n}\n\n$(document).ready(function() {\n  iFrameClicked = false;\n  $(window).on(\"resize\", function() {\n    resizeJavaDocWindow();\n  });\n  \n  loadJavadocFromUrl();\n\n  $(\"#javadoc_container\").on(\"load\", function() {\n    resizeJavaDocWindow();\n    \n    var mainFrame = $('#javadoc_container');\n    var isFrameless = mainFrame.contents().find('iframe').length === 0;\n    if(isFrameless){\n      addAccessibilityFrameless();\n    }else{\n      addAccessibility();\n    }\n    addExpandAndCollapseToggleButtons();\n    addNavHoverListener();\n    addLeftFrameScrollListener(\".leftTop iframe\", 'h2[title=\"Packages\"]');\n    addLeftFrameScrollListener(PACKAGE_FRAME, \".bar\");\n    addScrollListener();\n    addClickListeners();\n    addiPadScrolling();\n    highlightTOC(\".leftTop iframe\");\n    setFramelessQueryParams();\n\n    $(\"#javadoc_container\")\n      .contents()\n      .find(PACKAGE_FRAME)\n      .on(\"load\", function() {\n        addClickListener($(this).contents());\n        // add back the toggle expand/collapse button\n        addExpandAndCollapseToggleButtonForPackageFrame(\n          $(this).contents(),\n          $(\"#javadoc_container\")\n            .contents()\n            .find(\".leftBottom\")\n        );\n        addLeftFrameScrollListener(PACKAGE_FRAME, \".bar\");\n        highlightTOC(PACKAGE_FRAME);\n      });\n\n    $(\"#javadoc_container\")\n      .contents()\n      .find(CLASS_FRAME)\n      .on(\"load\", function() {\n        addAccessibility();\n        addNavHoverListener();\n        addScrollListener();\n        addClickListener($(this).contents());\n      });\n\n    $(\"#javadoc_container\")\n      .contents()\n      .find(\".leftTop iframe\")\n      .on(\"load\", function() {\n        modifyPackageTopLinks();\n      });\n\n    $(\"#javadoc_container\")\n      .contents()\n      .find(\".leftTop iframe\")\n      .ready(function() {\n        var mainFrame = $('#javadoc_container');\n        var isFrameless = mainFrame.contents().find('iframe').length === 0;\n        if(!isFrameless){\n          modifyPackageTopLinks();\n        }\n      });\n\n    setDynamicIframeContent();\n\n  });\n});\n"],"names":["PACKAGE_FRAME","CLASS_FRAME","DEFAULT_PACKAGE_HTML","DEFAULT_CLASS_HTML","PACKAGE_PARAM","CLASS_PARAM","FRAMELESS_DEFAULT_PACKAGE_HTML","defaultHtmlRootPath","defaultPackageHtml","defaultClassHtml","iFrameClicked","resizeJavaDocWindow","topSection","$","outerHeight","bottomSection","height","middleSectionHeight","window","addAccessibility","classFrame","contents","find","attr","removeAttr","addAccessibilityFrameless","javadoc_container","addExpandAndCollapseToggleButtons","iframes","leftTop","leftBottom","each","list","headerHeight","toggleButton","isTopLeftPackageIFrame","this","isBottomLeftPackageIFrame","length","header","hide","on","show","css","empty","append","event","stopPropagation","which","keyCode","click","addExpandAndCollapseToggleButtonForPackageFrame","toggleButton2","list2","packageHeader","header2","text","replace","trim","prepend","remove","headerHeight2","addiPadScrolling","navigator","platform","match","addScrollListener","off","hideFooter","addLeftFrameScrollListener","frameToListen","frameElementToListen","frameHeader","packagesList","classesList","offsetTop","origPaddingTop","origBorderTopWidth","origBorderTopStyle","origBorderTopColor","stickyBeforeCss","frame","next","offset","top","parseInt","topPos","scrollTop","hasClass","replaceWith","addClass","removeClass","element","rightFrameViewportHeight","documentElement","clientHeight","footer","data","addNavHoverListener","tabs","parseQueryParams","targetPage","queryParams","location","search","undefined","splitQueryParams","substring","split","i","tmpClassPage","queryParam","indexOf","package","class","setDynamicIframeContent","alocation","isFrameless","container","getJavaDocHtmlPath","href","setIFrameContent","updateTitle","currentPage","lastIndexOf","pathname","includes","addClickListeners","addClickListener","e","handlingClick","iframeName","paramKey","target","parentNode","localName","preventDefault","setQueryParams","state","setPackageContainerHeight","otherQueryParamsContent","getRemainingQueryParam","key","testObject","value","otherStateKey","hasOwnProperty","decodeURIComponent","hash","newURL","toString","history","pushState","replaceCanonicalUrl","has","delete","parents","first","packageContainer","onpopstate","popStateOrPageRefresh","allClassesHref","http","iframeContent","path","slice","XMLHttpRequest","onreadystatechange","readyState","status","open","send","paramName","lookForParam","returnParams","get","ex","url","URL","searchParams","htmlPath","set","returnBase","javaDocPath","groups","RegExp","exec","console","log","javadocPath","versionClick","getDocInfo","iframe_src","doc_type","doc_version","version","type","highlightTOC","toc","getLibertyVersionFromUrl","modifyPackageTopLinks","toLowerCase","liberty_version","doc","port","hostname","canonicalTag","document","querySelector","canonicalUrl","newCanonicalUrl","setFramelessQueryParams","currentHref","mainFrame","origin","replaceState","loadJavadocFromUrl","tempJavadocPath","params","URLSearchParams","encodeURI","startsWith","contentWindow","src","ready"],"mappings":"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"}