{"version":3,"sources":["constant.js","render.js","component/affix.js","component/alerts.js","component/breadcrumb.js","component/footer.js","component/links.js","component/navbar.js","component/sidebar.js","component/tab.js","component/tables.js","service/globalevents.js","service/search.js","service/utility.js"],"names":["active","expanded","filtered","show","hide","collapsed","Object","assign","$","fn","breakWord","workAroundFixedHeaderForAnchors","highlight","enableSearch","renderTables","renderAlerts","updateAlertHeightOnResize","renderLinks","renderSidebar","renderAffix","renderNavbar","renderLogo","updateLogo","updateLogoOnResize","updateTocHeightOnResize","updateSidenavTopOnResize","renderFooter","breakText","renderTabs","contributionDiv","hierarchy","$headers","map","h","join","stack","each","i","e","id","item","name","str","text","replace","href","items","length","frame","tagName","type","siblings","push","buildParent","childrenToAttach","pop","parentFrame","parent","child","topLevel","html","formList","empty","append","is","css","on","scrollspy","data","target","hash","activate","contribution","get","outerHTML","remove","setAlertHeight","maxHeight","Math","max","apply","this","outerHeight","window","addClass","renderBreadcrumb","breadcrumb","innerHTML","needFooter","document","height","scrollTop","resetBottomCss","removeClass","shiftUpBottomCss","fadeIn","fadeOut","attr","links","filter","hostname","location","initializeNavbar","navbar","querySelector","body","classList","contains","let","last_known_scroll_position","ticking","addEventListener","scrollY","requestAnimationFrame","add","unoMenuReq","XMLHttpRequest","$navbar","getElementById","wordpressMenuHasLoaded","open","onload","status","responseText","JSON","parse","trigger","onerror","send","ajaxComplete","event","xhr","settings","url","getElementsByClassName","className","curWidth","innerWidth","headerLogo","mobileLogo","URL","src","deskLogo","loadNavbar","navbarPath","tocPath","find","appendTo","index","lastIndexOf","navrel","substr","currentAbsPath","getAbsolutePath","pathname","isRelativePath","isActive","originalHref","getDirectory","parents","$img","jQuery","imgID","imgClass","imgURL","$svg","removeAttr","replaceWith","sidefilterHeight","setTocHeight","headerHeight","breadcrumbHeight","tocToggleHeight","sidenavPaddingTop","maxHeightToc","width","intViewportHeight","innerHeight","parseInt","setSidenavTop","sidenavTop","sidetocTop","articleMarginTopDesk","articleMarginTopMobile","sideToggleSideToc","footer","sidetoc","loadToc","load","tocrel","currentHref","searchResult","has","toggleClass","val","value","tocLineAnchor","j","anchor","parentNodes","k","parentText","children","toLowerCase","indexOf","top","position","contentAttrs","Tab","defineProperty","prototype","a","getAttribute","split","enumerable","configurable","li","hasAttribute","set","removeAttribute","setAttribute","section","tabIndex","focus","initTabs","container","queryStringTabs","qs","parseQueryString","t","tabs","undefined","elements","querySelectorAll","state","groups","selectedTabs","group","element","independent","firstElementChild","dataTab","tab","nextElementSibling","tabGroup","updateVisibilityAndSelection","handleClick","info","HTMLElement","closest","tabIds","parentElement","preventDefault","setTimeout","originalTop","getBoundingClientRect","_i","_a","selected","arraysIntersect","previousTabId","splice","_b","_c","updateTabsQueryStringParam","MouseEvent","scrollTo","pageYOffset","tabIds_1","tabId","dispatchEvent","CustomEvent","bubbles","anySelected","firstVisibleTab","visible","condition","_d","protocol","host","args","parts","name_1","hasOwnProperty","encodeURIComponent","history","replaceState","title","queryString","match","pl","decode","s","decodeURIComponent","search","urlParams","substring","exec","b","a_1","itemA","b_1","wrap","refresh","article","content","console","error","path","docsUrl","getElementsByTagName","includes","searchParam","slice","decodeURI","anchors","options","placement","icon","block","hljs","highlightBlock","range","lines","Number","found","start","end","isNaN","query","relHref","q","worker","Worker","webWorkerSearch","indexReady","Deferred","onmessage","oEvent","resolve","handleSearchResults","d","promise","done","postSearchQuery","localSearch","lunrIndex","lunr","ref","field","boost","tokenizer","seperator","searchData","searchDataRequest","indexPath","prop","hits","results","forEach","hit","keywords","autoCollapse","collapse","keyword","mark","searchQuery","key","off","postMessage","relativeUrlToAbsoluteUrl","currentUrl","relativeUrl","currentItems","relativeItems","depth","concat","itemHref","itemTitle","itemBrief","words","queryIndex","itemNode","itemTitleNode","itemBriefNode","word","isAbsolutePath","test","classes","level","getList","model","cls","l","breakPlainText","HISTORY_SUPPORT","pushState","ANCHOR_REGEX","scrollIfAnchor","pushToHistory","anchorOffset","rect","first","pageXOffset","scrollToCurrent","offset"],"mappings":"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","file":"docfx.js","sourcesContent":["const active = 'active';\r\nconst expanded = 'in';\r\nconst filtered = 'filtered';\r\nconst show = 'show';\r\nconst hide = 'hide';\r\nconst collapsed = 'collapsed';\r\n","// workaround for gulp-uglify changing order of execution on $.fn func assignments\r\nObject.assign($.fn, { breakWord });\r\n\r\nworkAroundFixedHeaderForAnchors();\r\nhighlight();\r\nenableSearch();\r\n\r\nrenderTables();\r\nrenderAlerts();\r\nupdateAlertHeightOnResize();\r\nrenderLinks();\r\nrenderSidebar();\r\nrenderAffix();\r\n\r\nrenderNavbar();\r\nrenderLogo();\r\nupdateLogo()\r\nupdateLogoOnResize();\r\nupdateTocHeightOnResize();\r\nupdateSidenavTopOnResize();\r\nrenderFooter();\r\nbreakText();\r\nrenderTabs();\r\nupdateLogo();\r\n","//Setup Affix\r\nfunction renderAffix() {\r\n const hierarchy = getHierarchy();\r\n\r\n if (hierarchy && hierarchy.length > 0) {\r\n let html = '
In This Article
'\r\n html += formList(hierarchy, ['nav', 'bs-docs-sidenav']);\r\n\r\n $(\"#affix\").empty().append(html);\r\n\r\n if ($('footer').is(':visible')) {\r\n $(\".sideaffix\").css(\"bottom\", \"70px\");\r\n }\r\n\r\n $('#affix a').on('click', function (e) {\r\n const scrollspy = $('[data-spy=\"scroll\"]').data()['bs.scrollspy'];\r\n const target = e.target.hash;\r\n if (scrollspy && target) {\r\n scrollspy.activate(target);\r\n }\r\n });\r\n\r\n const contribution = $('.contribution');\r\n const contributionDiv = contribution.get(0).outerHTML;\r\n contribution.remove();\r\n $('.sideaffix').append(contributionDiv);\r\n\r\n }\r\n\r\n function getHierarchy() {\r\n // supported headers are h1, h2, h3, and h4\r\n const $headers = $($.map(['h1', 'h2', 'h3', 'h4'], function (h) { return \".article article \" + h; }).join(\", \"));\r\n\r\n // a stack of hierarchy items that are currently being built\r\n const stack = [];\r\n $headers.each(function (i, e) {\r\n if (!e.id) {\r\n return;\r\n }\r\n\r\n const item = {\r\n name: htmlEncode($(e).text()),\r\n href: \"#\" + e.id,\r\n items: []\r\n };\r\n\r\n if (!stack.length) {\r\n stack.push({ type: e.tagName, siblings: [item] });\r\n return;\r\n }\r\n\r\n const frame = stack[stack.length - 1];\r\n if (e.tagName === frame.type) {\r\n frame.siblings.push(item);\r\n } else if (e.tagName[1] > frame.type[1]) {\r\n // we are looking at a child of the last element of frame.siblings.\r\n // push a frame onto the stack. After we've finished building this item's children,\r\n // we'll attach it as a child of the last element\r\n stack.push({ type: e.tagName, siblings: [item] });\r\n } else { // e.tagName[1] < frame.type[1]\r\n // we are looking at a sibling of an ancestor of the current item.\r\n // pop frames from the stack, building items as we go, until we reach the correct level at which to attach this item.\r\n while (e.tagName[1] < stack[stack.length - 1].type[1]) {\r\n buildParent();\r\n }\r\n if (e.tagName === stack[stack.length - 1].type) {\r\n stack[stack.length - 1].siblings.push(item);\r\n } else {\r\n stack.push({ type: e.tagName, siblings: [item] });\r\n }\r\n }\r\n });\r\n while (stack.length > 1) {\r\n buildParent();\r\n }\r\n\r\n function buildParent() {\r\n const childrenToAttach = stack.pop();\r\n const parentFrame = stack[stack.length - 1];\r\n const parent = parentFrame.siblings[parentFrame.siblings.length - 1];\r\n $.each(childrenToAttach.siblings, function (i, child) {\r\n parent.items.push(child);\r\n });\r\n }\r\n if (stack.length > 0) {\r\n\r\n const topLevel = stack.pop().siblings;\r\n if (topLevel.length === 1) { // if there's only one topmost header, dump it\r\n return topLevel[0].items;\r\n }\r\n return topLevel;\r\n }\r\n return undefined;\r\n }\r\n\r\n function htmlEncode(str) {\r\n if (!str) return str;\r\n return str\r\n .replace(/&/g, '&')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n .replace(//g, '>');\r\n }\r\n\r\n function htmlDecode(str) {\r\n if (!str) return str;\r\n return str\r\n .replace(/"/g, '\"')\r\n .replace(/'/g, \"'\")\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/&/g, '&');\r\n }\r\n\r\n function cssEscape(str) {\r\n // see: http://stackoverflow.com/questions/2786538/need-to-escape-a-special-character-in-a-jquery-selector-string#answer-2837646\r\n if (!str) return str;\r\n return str\r\n .replace(/[!\"#$%&'()*+,.\\/:;<=>?@[\\\\\\]^`{|}~]/g, \"\\\\$&\");\r\n }\r\n}\r\n","// Styling for alerts.\r\nfunction setAlertHeight(){\r\n var maxHeight = Math.max.apply(null, $(\".col-md-6 div.alert\").map(function ()\r\n {\r\n return $(this).outerHeight();\r\n }).get());\r\n\r\n $('.alert').css('height', maxHeight);\r\n \r\n}\r\n\r\nfunction updateAlertHeightOnResize() {\r\n $(window).on('resize', function () {\r\n $('.alert').css('height', 'auto');\r\n setAlertHeight();\r\n });\r\n}\r\n\r\nfunction renderAlerts() {\r\n $('.NOTE, .TIP').addClass('alert alert-info');\r\n $('.WARNING').addClass('alert alert-warning');\r\n $('.IMPORTANT, .CAUTION').addClass('alert alert-danger');\r\n setAlertHeight();\r\n\r\n}\r\n","function renderBreadcrumb() {\r\n const breadcrumb = [];\r\n\r\n $('#navbar a.active').each(function (i, e) {\r\n breadcrumb.push({\r\n href: e.href,\r\n name: e.innerHTML\r\n });\r\n })\r\n $('#toc a.active').each(function (i, e) {\r\n breadcrumb.push({\r\n href: e.href,\r\n name: e.innerHTML\r\n });\r\n })\r\n\r\n const html = formList(breadcrumb, 'breadcrumb');\r\n $('#breadcrumb').html(html);\r\n}\r\n","// Show footer\r\nfunction renderFooter() {\r\n initFooter();\r\n $(window).on(\"scroll\", () => showFooterCore());\r\n\r\n function initFooter() {\r\n if (needFooter()) {\r\n shiftUpBottomCss();\r\n $(\"footer\").show();\r\n } else {\r\n resetBottomCss();\r\n $(\"footer\").hide();\r\n }\r\n }\r\n\r\n function showFooterCore() {\r\n if (needFooter()) {\r\n shiftUpBottomCss();\r\n $(\"footer\").fadeIn();\r\n } else {\r\n resetBottomCss();\r\n $(\"footer\").fadeOut();\r\n }\r\n }\r\n\r\n function needFooter() {\r\n const scrollHeight = $(document).height();\r\n const scrollPosition = $(window).height() + $(window).scrollTop();\r\n return (scrollHeight - scrollPosition) < 1;\r\n }\r\n\r\n function resetBottomCss() {\r\n $(\".sidetoc\").removeClass(\"shiftup\");\r\n $(\".sideaffix\").removeClass(\"shiftup\");\r\n }\r\n\r\n function shiftUpBottomCss() {\r\n $(\".sidetoc\").addClass(\"shiftup\");\r\n $(\".sideaffix\").addClass(\"shiftup\");\r\n }\r\n}\r\n","// Open links to different host in a new window.\r\nfunction renderLinks() {\r\n if ($(\"meta[property='docfx:newtab']\").attr(\"content\") === \"true\") {\r\n $(document.links).filter(function () {\r\n return this.hostname !== window.location.hostname;\r\n }).attr('target', '_blank');\r\n }\r\n}\r\n","/**\r\n * Load the navbar from the uno website\r\n */\r\nfunction initializeNavbar() {\r\n\r\n const navbar = document.querySelector(\"header > .navbar\");\r\n if (document.body.classList.contains(\"front-page\")) {\r\n let last_known_scroll_position = 0;\r\n let ticking = false;\r\n\r\n function doSomething(scroll_pos) {\r\n if (scroll_pos >= 100) navbar.classList.add(\"scrolled\");\r\n else navbar.classList.remove(\"scrolled\");\r\n }\r\n\r\n window.addEventListener(\"scroll\", function () {\r\n last_known_scroll_position = window.scrollY;\r\n\r\n if (!ticking) {\r\n window.requestAnimationFrame(function () {\r\n doSomething(last_known_scroll_position);\r\n ticking = false;\r\n });\r\n\r\n ticking = true;\r\n }\r\n });\r\n }\r\n\r\n const unoMenuReq = new XMLHttpRequest();\r\n const unoMenuEndpoint = \"https://platform.uno/wp-json/wp/v2/menu\";\r\n const $navbar = document.getElementById(\"navbar\");\r\n let wordpressMenuHasLoaded = false;\r\n\r\n unoMenuReq.open(\"get\", unoMenuEndpoint, true);\r\n\r\n if (typeof navbar !== \"undefined\") {\r\n unoMenuReq.onload = function () {\r\n if (unoMenuReq.status === 200 && unoMenuReq.responseText) {\r\n $navbar.innerHTML = JSON.parse(\r\n unoMenuReq.responseText\r\n );\r\n wordpressMenuHasLoaded = true;\r\n $(document).trigger(\"wordpressMenuHasLoaded\");\r\n }\r\n };\r\n unoMenuReq.onerror = function (e) {\r\n };\r\n unoMenuReq.send();\r\n }\r\n\r\n $(document).ajaxComplete(function (event, xhr, settings) {\r\n const docFxNavbarHasLoaded = settings.url === \"toc.html\";\r\n\r\n if (docFxNavbarHasLoaded && wordpressMenuHasLoaded) {\r\n const $docfxNavbar = $navbar.getElementsByClassName(\"navbar-nav\");\r\n $docfxNavbar[0].className += \" hidden\";\r\n\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Changes the logo on resize\r\n*/\r\n\r\nfunction updateLogo() {\r\n const curWidth = window.innerWidth;\r\n const headerLogo = document.getElementById('logo');\r\n if (curWidth < 1024) {\r\n const mobileLogo = new URL('UnoLogoSmall.png', headerLogo.src).href;\r\n headerLogo.src = mobileLogo;\r\n } else {\r\n const deskLogo = new URL('uno-logo.svg', headerLogo.src).href;\r\n headerLogo.src = deskLogo;\r\n }\r\n}\r\n\r\nfunction updateLogoOnResize() {\r\n $(window).on('resize', function () {\r\n updateLogo();\r\n });\r\n}\r\n\r\n\r\n// Update href in navbar\r\nfunction renderNavbar() {\r\n const navbar = $('#navbar ul')[0];\r\n if (typeof (navbar) === 'undefined') {\r\n loadNavbar();\r\n } else {\r\n $('#navbar ul a.active').parents('li').addClass(active);\r\n renderBreadcrumb();\r\n }\r\n\r\n function loadNavbar() {\r\n let navbarPath = $(\"meta[property='docfx\\\\:navrel']\").attr(\"content\");\r\n if (!navbarPath) {\r\n return;\r\n }\r\n navbarPath = navbarPath.replace(/\\\\/g, '/');\r\n let tocPath = $(\"meta[property='docfx\\\\:tocrel']\").attr(\"content\") || '';\r\n if (tocPath) tocPath = tocPath.replace(/\\\\/g, '/');\r\n $.get(navbarPath, function (data) {\r\n $(data).find(\"#toc>ul\").appendTo(\"#navbar\");\r\n const index = navbarPath.lastIndexOf('/');\r\n let navrel = '';\r\n if (index > -1) {\r\n navrel = navbarPath.substr(0, index + 1);\r\n }\r\n $('#navbar>ul').addClass('navbar-nav');\r\n\r\n const currentAbsPath = getAbsolutePath(window.location.pathname);\r\n\r\n // set active item\r\n $('#navbar').find('a[href]').each(function (i, e) {\r\n let href = $(e).attr(\"href\");\r\n if (isRelativePath(href)) {\r\n href = navrel + href;\r\n $(e).attr(\"href\", href);\r\n\r\n // TODO: currently only support one level navbar\r\n let isActive = false;\r\n let originalHref = e.name;\r\n if (originalHref) {\r\n originalHref = navrel + originalHref;\r\n if (getDirectory(getAbsolutePath(originalHref)) === getDirectory(getAbsolutePath(tocPath))) {\r\n isActive = true;\r\n }\r\n } else {\r\n if (getAbsolutePath(href) === currentAbsPath) {\r\n\r\n const dropdown = $(e).attr('data-toggle') === \"dropdown\";\r\n\r\n if (!dropdown) {\r\n isActive = true;\r\n }\r\n }\r\n }\r\n if (isActive) {\r\n $(e).addClass(active);\r\n }\r\n }\r\n });\r\n renderNavbar();\r\n });\r\n }\r\n}\r\n\r\nfunction renderLogo() {\r\n // For LOGO SVG\r\n // Replace SVG with inline SVG\r\n // http://stackoverflow.com/questions/11978995/how-to-change-color-of-svg-image-using-css-jquery-svg-image-replacement\r\n $('img.svg').each(function () {\r\n const $img = jQuery(this);\r\n const imgID = $img.attr('id');\r\n const imgClass = $img.attr('class');\r\n const imgURL = $img.attr('src');\r\n\r\n jQuery.get(imgURL, function (data) {\r\n // Get the SVG tag, ignore the rest\r\n let $svg = $(data).find('svg');\r\n\r\n // Add replaced image's ID to the new SVG\r\n if (typeof imgID !== 'undefined') {\r\n $svg = $svg.attr('id', imgID);\r\n }\r\n // Add replaced image's classes to the new SVG\r\n if (typeof imgClass !== 'undefined') {\r\n $svg = $svg.attr('class', imgClass + ' replaced-svg');\r\n }\r\n\r\n // Remove any invalid XML tags as per http://validator.w3.org\r\n $svg = $svg.removeAttr('xmlns:a');\r\n\r\n // Replace image with new SVG\r\n $img.replaceWith($svg);\r\n\r\n }, 'xml');\r\n });\r\n}\r\n","const sidefilterHeight = 94; //94px from sidefilter height\r\n\r\nfunction setTocHeight() {\r\n if($(window).width() < 768) {\r\n let headerHeight = $(\"#header-container\").outerHeight();\r\n let breadcrumbHeight = $(\"#breadcrumb\").outerHeight();\r\n let tocToggleHeight = $(\".btn.toc-toggle.collapse\").outerHeight();\r\n let intViewportHeight = window.innerHeight;\r\n let sidenavPaddingTop = parseInt($(\".sidenav\").css('padding-top'));\r\n let maxHeightToc = intViewportHeight - (headerHeight + breadcrumbHeight + tocToggleHeight + sidefilterHeight + sidenavPaddingTop);\r\n $(\".sidetoc\").css(\"max-height\", maxHeightToc);\r\n } else {\r\n $(\".sidetoc\").css(\"max-height\", \"none\");\r\n }\r\n}\r\n\r\nfunction updateTocHeightOnResize() {\r\n $(window).on('resize', function () {\r\n setTocHeight();\r\n });\r\n}\r\n\r\nfunction setSidenavTop() {\r\n let headerHeight = $(\"#header-container\").outerHeight();\r\n let breadcrumbHeight = $(\"#breadcrumb\").outerHeight();\r\n let tocToggleHeight = $(\".btn.toc-toggle.collapse\").outerHeight();\r\n let sidenavTop = headerHeight + breadcrumbHeight;\r\n let sidefilterTop = headerHeight + breadcrumbHeight;\r\n let sidetocTop = sidefilterTop + sidefilterHeight;\r\n let articleMarginTopDesk = sidenavTop + tocToggleHeight + 30; //30px from .sidenav padding top and bottom\r\n let articleMarginTopMobile = sidenavTop;\r\n $(\".sidenav\").css(\"top\", sidenavTop);\r\n $(\".sidefilter\").css(\"top\", sidenavTop);\r\n $(\".sidetoc\").css(\"top\", sidetocTop);\r\n\r\n if($(window).width() < 768) {\r\n $(\".body-content .article\").attr(\"style\", \"margin-top:\" + (articleMarginTopDesk + 5) + \"px !important\");\r\n } else {\r\n $(\".body-content .article\").attr(\"style\", \"margin-top:\" + (articleMarginTopMobile + 5) + \"px !important\");\r\n }\r\n}\r\n\r\nfunction updateSidenavTopOnResize() {\r\n $(window).on('resize', function () {\r\n setSidenavTop();\r\n });\r\n}\r\n\r\nfunction renderSidebar() {\r\n\r\n const sideToggleSideToc = $('#sidetoggle .sidetoc')[0];\r\n const footer = $('footer');\r\n const sidetoc = $('.sidetoc');\r\n\r\n if (typeof (sideToggleSideToc) === 'undefined') {\r\n loadToc();\r\n } else {\r\n registerTocEvents();\r\n if (footer.is(':visible')) {\r\n sidetoc.addClass('shiftup');\r\n }\r\n\r\n // Scroll to active item\r\n let top = 0;\r\n $('#toc a.active').parents('li').each(function (i, e) {\r\n $(e).addClass(active).addClass(expanded);\r\n $(e).children('a').addClass(active);\r\n top += $(e).position().top;\r\n })\r\n\r\n sidetoc.scrollTop(top - 50);\r\n\r\n if (footer.is(':visible')) {\r\n sidetoc.addClass('shiftup');\r\n }\r\n\r\n if (window.location.href.indexOf(\"articles/intro.html\") > -1 && $(window).width() > 850) {\r\n $('.nav.level1 li:eq(1)').addClass(expanded);\r\n }\r\n\r\n renderBreadcrumb();\r\n setSidenavTop();\r\n setTocHeight();\r\n }\r\n\r\n function registerTocEvents() {\r\n $('.toc .nav > li > .expand-stub').on('click', function (e) {\r\n $(e.target).parent().toggleClass(expanded);\r\n });\r\n $('.toc .nav > li > .expand-stub + a:not([href])').on('click', function (e) {\r\n $(e.target).parent().toggleClass(expanded);\r\n });\r\n $('#toc_filter_input').on('input', function () {\r\n const val = this.value;\r\n if (val === '') {\r\n // Clear 'filtered' class\r\n $('#toc li').removeClass(filtered).removeClass(hide);\r\n return;\r\n }\r\n\r\n // Get leaf nodes\r\n const tocLineAnchor = $('#toc li>a');\r\n\r\n tocLineAnchor.filter(function (i, e) {\r\n return $(e).siblings().length === 0\r\n }).each(function (j, anchor) {\r\n let text = $(anchor).attr('title');\r\n const parent = $(anchor).parent();\r\n const parentNodes = parent.parents('ul>li');\r\n for (let k = 0; k < parentNodes.length; k++) {\r\n let parentText = $(parentNodes[k]).children('a').attr('title');\r\n if (parentText) text = parentText + '.' + text;\r\n }\r\n\r\n if (filterNavItem(text, val)) {\r\n parent.addClass(show);\r\n parent.removeClass(hide);\r\n } else {\r\n parent.addClass(hide);\r\n parent.removeClass(show);\r\n }\r\n });\r\n\r\n tocLineAnchor.filter(function (i, e) {\r\n return $(e).siblings().length > 0\r\n }).each(function (i, anchor) {\r\n const parent = $(anchor).parent();\r\n if (parent.find('li.show').length > 0) {\r\n parent.addClass(show);\r\n parent.addClass(filtered);\r\n parent.removeClass(hide);\r\n } else {\r\n parent.addClass(hide);\r\n parent.removeClass(show);\r\n parent.removeClass(filtered);\r\n }\r\n })\r\n\r\n function filterNavItem(name, text) {\r\n\r\n if (!text) return true;\r\n\r\n return name && name.toLowerCase().indexOf(text.toLowerCase()) > -1;\r\n\r\n }\r\n });\r\n }\r\n\r\n function loadToc() {\r\n let tocPath = $(\"meta[property='docfx\\\\:tocrel']\").attr(\"content\");\r\n\r\n if (!tocPath) {\r\n return;\r\n }\r\n tocPath = tocPath.replace(/\\\\/g, '/');\r\n $('#sidetoc').load(tocPath + \" #sidetoggle > div\", function () {\r\n const index = tocPath.lastIndexOf('/');\r\n let tocrel = '';\r\n\r\n if (index > -1) {\r\n tocrel = tocPath.substr(0, index + 1);\r\n }\r\n\r\n const currentHref = getAbsolutePath(window.location.pathname);\r\n\r\n $('#sidetoc').find('a[href]').each(function (i, e) {\r\n let href = $(e).attr(\"href\");\r\n if (isRelativePath(href)) {\r\n href = tocrel + href;\r\n $(e).attr(\"href\", href);\r\n }\r\n\r\n if (getAbsolutePath(e.href) === currentHref) {\r\n $(e).addClass(active);\r\n }\r\n\r\n $(e).breakWord();\r\n });\r\n\r\n renderSidebar();\r\n const body = $('body');\r\n const searchResult = $('#search-results');\r\n\r\n if (searchResult.length !== 0) {\r\n $('#search').show();\r\n body.trigger(\"searchEvent\");\r\n }\r\n\r\n // if the target of the click isn't the container nor a descendant of the container\r\n body.on('mouseup', function (e) {\r\n if (!searchResult.is(e.target) && searchResult.has(e.target).length === 0) {\r\n searchResult.hide();\r\n }\r\n });\r\n });\r\n }\r\n}\r\n","function renderTabs() {\r\n\r\n const contentAttrs = {\r\n id: 'data-bi-id',\r\n name: 'data-bi-name',\r\n type: 'data-bi-type'\r\n };\r\n\r\n const Tab = (function () {\r\n function Tab(li, a, section) {\r\n this.li = li;\r\n this.a = a;\r\n this.section = section;\r\n }\r\n\r\n Object.defineProperty(Tab.prototype, \"tabIds\", {\r\n get: function () {\r\n return this.a.getAttribute('data-tab').split(' ');\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n Object.defineProperty(Tab.prototype, \"condition\", {\r\n get: function () {\r\n return this.a.getAttribute('data-condition');\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n Object.defineProperty(Tab.prototype, \"visible\", {\r\n get: function () {\r\n return !this.li.hasAttribute('hidden');\r\n },\r\n set: function (value) {\r\n if (value) {\r\n this.li.removeAttribute('hidden');\r\n this.li.removeAttribute('aria-hidden');\r\n } else {\r\n this.li.setAttribute('hidden', 'hidden');\r\n this.li.setAttribute('aria-hidden', 'true');\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n Object.defineProperty(Tab.prototype, \"selected\", {\r\n get: function () {\r\n return !this.section.hasAttribute('hidden');\r\n },\r\n set: function (value) {\r\n if (value) {\r\n this.a.setAttribute('aria-selected', 'true');\r\n this.a.tabIndex = 0;\r\n this.section.removeAttribute('hidden');\r\n this.section.removeAttribute('aria-hidden');\r\n } else {\r\n this.a.setAttribute('aria-selected', 'false');\r\n this.a.tabIndex = -1;\r\n this.section.setAttribute('hidden', 'hidden');\r\n this.section.setAttribute('aria-hidden', 'true');\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n Tab.prototype.focus = function () {\r\n this.a.focus();\r\n };\r\n\r\n return Tab;\r\n\r\n }());\r\n\r\n initTabs(document.body);\r\n\r\n function initTabs(container) {\r\n const queryStringTabs = readTabsQueryStringParam();\r\n const elements = container.querySelectorAll('.tabGroup');\r\n const state = {groups: [], selectedTabs: []};\r\n for (let i = 0; i < elements.length; i++) {\r\n const group = initTabGroup(elements.item(i));\r\n if (!group.independent) {\r\n updateVisibilityAndSelection(group, state);\r\n state.groups.push(group);\r\n }\r\n }\r\n container.addEventListener('click', function (event) {\r\n return handleClick(event, state);\r\n });\r\n if (state.groups.length === 0) {\r\n return state;\r\n }\r\n selectTabs(queryStringTabs, container);\r\n updateTabsQueryStringParam(state);\r\n notifyContentUpdated();\r\n return state;\r\n }\r\n\r\n function initTabGroup(element) {\r\n\r\n const group = {\r\n independent: element.hasAttribute('data-tab-group-independent'),\r\n tabs: []\r\n };\r\n\r\n let li = element.firstElementChild.firstElementChild;\r\n while (li) {\r\n const a = li.firstElementChild;\r\n a.setAttribute(contentAttrs.name, 'tab');\r\n\r\n const dataTab = a.getAttribute('data-tab').replace(/\\+/g, ' ');\r\n a.setAttribute('data-tab', dataTab);\r\n\r\n const section = element.querySelector(\"[id=\\\"\" + a.getAttribute('aria-controls') + \"\\\"]\");\r\n const tab = new Tab(li, a, section);\r\n group.tabs.push(tab);\r\n\r\n li = li.nextElementSibling;\r\n }\r\n\r\n element.setAttribute(contentAttrs.name, 'tab-group');\r\n element.tabGroup = group;\r\n\r\n return group;\r\n }\r\n\r\n function updateVisibilityAndSelection(group, state) {\r\n let anySelected = false;\r\n let firstVisibleTab;\r\n\r\n for (let _i = 0, _a = group.tabs; _i < _a.length; _i++) {\r\n let tab = _a[_i];\r\n tab.visible = tab.condition === null || state.selectedTabs.indexOf(tab.condition) !== -1;\r\n if (tab.visible) {\r\n if (!firstVisibleTab) {\r\n firstVisibleTab = tab;\r\n }\r\n }\r\n tab.selected = tab.visible && arraysIntersect(state.selectedTabs, tab.tabIds);\r\n anySelected = anySelected || tab.selected;\r\n }\r\n\r\n if (!anySelected) {\r\n for (let _b = 0, _c = group.tabs; _b < _c.length; _b++) {\r\n const tabIds = _c[_b].tabIds;\r\n for (let _d = 0, tabIds_1 = tabIds; _d < tabIds_1.length; _d++) {\r\n const tabId = tabIds_1[_d];\r\n const index = state.selectedTabs.indexOf(tabId);\r\n if (index === -1) {\r\n continue;\r\n }\r\n state.selectedTabs.splice(index, 1);\r\n }\r\n }\r\n const tab = firstVisibleTab;\r\n tab.selected = true;\r\n state.selectedTabs.push(tab.tabIds[0]);\r\n }\r\n }\r\n\r\n function getTabInfoFromEvent(event) {\r\n\r\n if (!(event.target instanceof HTMLElement)) {\r\n return null;\r\n }\r\n\r\n const anchor = event.target.closest('a[data-tab]');\r\n\r\n if (anchor === null) {\r\n return null;\r\n }\r\n\r\n const tabIds = anchor.getAttribute('data-tab').split(' ');\r\n const group = anchor.parentElement.parentElement.parentElement.tabGroup;\r\n\r\n if (group === undefined) {\r\n return null;\r\n }\r\n\r\n return {tabIds: tabIds, group: group, anchor: anchor};\r\n }\r\n\r\n function handleClick(event, state) {\r\n const info = getTabInfoFromEvent(event);\r\n\r\n if (info === null) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n info.anchor.href = 'javascript:';\r\n\r\n setTimeout(function () {\r\n return info.anchor.href = '#' + info.anchor.getAttribute('aria-controls');\r\n });\r\n\r\n const tabIds = info.tabIds, group = info.group;\r\n const originalTop = info.anchor.getBoundingClientRect().top;\r\n\r\n if (group.independent) {\r\n for (let _i = 0, _a = group.tabs; _i < _a.length; _i++) {\r\n const tab = _a[_i];\r\n tab.selected = arraysIntersect(tab.tabIds, tabIds);\r\n }\r\n } else {\r\n if (arraysIntersect(state.selectedTabs, tabIds)) {\r\n return;\r\n }\r\n const previousTabId = group.tabs.filter(function (t) {\r\n return t.selected;\r\n })[0].tabIds[0];\r\n state.selectedTabs.splice(state.selectedTabs.indexOf(previousTabId), 1, tabIds[0]);\r\n for (let _b = 0, _c = state.groups; _b < _c.length; _b++) {\r\n const group_1 = _c[_b];\r\n updateVisibilityAndSelection(group_1, state);\r\n }\r\n updateTabsQueryStringParam(state);\r\n }\r\n notifyContentUpdated();\r\n const top = info.anchor.getBoundingClientRect().top;\r\n if (top !== originalTop && event instanceof MouseEvent) {\r\n window.scrollTo(0, window.pageYOffset + top - originalTop);\r\n }\r\n }\r\n\r\n function selectTabs(tabIds) {\r\n for (let _i = 0, tabIds_1 = tabIds; _i < tabIds_1.length; _i++) {\r\n const tabId = tabIds_1[_i];\r\n const a = document.querySelector(\".tabGroup > ul > li > a[data-tab=\\\"\" + tabId + \"\\\"]:not([hidden])\");\r\n\r\n if (a === null) {\r\n return;\r\n }\r\n\r\n a.dispatchEvent(new CustomEvent('click', {bubbles: true}));\r\n }\r\n }\r\n\r\n function readTabsQueryStringParam() {\r\n const qs = parseQueryString();\r\n const t = qs.tabs;\r\n\r\n if (t === undefined || t === '') {\r\n return [];\r\n }\r\n\r\n return t.split(',');\r\n }\r\n\r\n function updateTabsQueryStringParam(state) {\r\n const qs = parseQueryString();\r\n qs.tabs = state.selectedTabs.join();\r\n\r\n const url = location.protocol + \"//\" + location.host + location.pathname + \"?\" + toQueryString(qs) + location.hash;\r\n\r\n if (location.href === url) {\r\n return;\r\n }\r\n\r\n history.replaceState({}, document.title, url);\r\n }\r\n\r\n function toQueryString(args) {\r\n const parts = [];\r\n\r\n for (let name_1 in args) {\r\n if (args.hasOwnProperty(name_1) && args[name_1] !== '' && args[name_1] !== null && args[name_1] !== undefined) {\r\n parts.push(encodeURIComponent(name_1) + '=' + encodeURIComponent(args[name_1]));\r\n }\r\n }\r\n\r\n return parts.join('&');\r\n }\r\n\r\n function parseQueryString(queryString) {\r\n let match;\r\n const pl = /\\+/g;\r\n const search = /([^&=]+)=?([^&]*)/g;\r\n\r\n const decode = function (s) {\r\n return decodeURIComponent(s.replace(pl, ' '));\r\n };\r\n\r\n if (queryString === undefined) {\r\n queryString = '';\r\n }\r\n\r\n queryString = queryString.substring(1);\r\n const urlParams = {};\r\n\r\n while (match = search.exec(queryString)) {\r\n urlParams[decode(match[1])] = decode(match[2]);\r\n }\r\n\r\n return urlParams;\r\n }\r\n\r\n function arraysIntersect(a, b) {\r\n for (let _i = 0, a_1 = a; _i < a_1.length; _i++) {\r\n const itemA = a_1[_i];\r\n\r\n for (let _a = 0, b_1 = b; _a < b_1.length; _a++) {\r\n const itemB = b_1[_a];\r\n if (itemA === itemB) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function notifyContentUpdated() {\r\n // Dispatch this event when needed\r\n // window.dispatchEvent(new CustomEvent('content-update'));\r\n }\r\n}\r\n","/**\r\n * Styling for tables in conceptual documents using Bootstrap.\r\n * See http://getbootstrap.com/css/#tables\r\n */\r\nfunction renderTables() {\r\n $('table').addClass('table table-bordered table-striped table-condensed').wrap('
');\r\n}\r\n","window.refresh = function (article) {\r\n\r\n // Update markup result\r\n if (typeof article == 'undefined' || typeof article.content == 'undefined') {\r\n console.error(\"Null Argument\");\r\n }\r\n\r\n $(\"article.content\").html(article.content);\r\n\r\n highlight();\r\n renderTables();\r\n renderAlerts();\r\n renderAffix();\r\n renderTabs();\r\n}\r\n\r\n$(document).on('wordpressMenuHasLoaded', function () {\r\n const path = window.location.pathname;\r\n const docsUrl = '/docs/articles/';\r\n const wpNavBar = document.getElementById('menu-menu-principal');\r\n const items = wpNavBar.getElementsByTagName('a');\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n\r\n if (items[i].href.includes(docsUrl) && path.includes(docsUrl) && !items[i].href.includes('#')) {\r\n $(items[i]).addClass('activepath');\r\n }\r\n }\r\n\r\n const queryString = window.location.search;\r\n\r\n if (queryString) {\r\n const queryStringComponents = queryString.split('=');\r\n const searchParam = queryStringComponents.slice(-1)[0];\r\n $('#search-query').val(decodeURI(searchParam));\r\n }\r\n\r\n});\r\n\r\n\r\n// Enable anchors for headings.\r\n(function () {\r\n anchors.options = {\r\n placement: 'right',\r\n visible: 'hover',\r\n icon: '#'\r\n };\r\n anchors.add('article h2:not(.no-anchor), article h3:not(.no-anchor), article h4:not(.no-anchor)');\r\n})();\r\n","// Enable highlight.js\r\nfunction highlight() {\r\n\r\n $('pre code').each(function (i, block) {\r\n hljs.highlightBlock(block);\r\n });\r\n\r\n $('pre code[highlight-lines]').each(function (i, block) {\r\n if (block.innerHTML === \"\") return;\r\n const lines = block.innerHTML.split('\\n');\r\n\r\n const queryString = block.getAttribute('highlight-lines');\r\n if (!queryString) return;\r\n\r\n let rangesString = queryString.split(',');\r\n let ranges = rangesString.map(Number);\r\n\r\n for (let range of ranges) {\r\n const found = range.match(/^(\\d+)\\-(\\d+)?$/);\r\n let start = 0;\r\n let end = 0;\r\n if (found) {\r\n // consider region as `{startlinenumber}-{endlinenumber}`, in which {endlinenumber} is optional\r\n start = +found[1];\r\n end = +found[2];\r\n if (isNaN(end) || end > lines.length) {\r\n end = lines.length;\r\n }\r\n } else {\r\n // consider region as a sigine line number\r\n if (isNaN(range)) continue;\r\n start = +range;\r\n end = start;\r\n }\r\n if (start <= 0 || end <= 0 || start > end || start > lines.length) {\r\n // skip current region if invalid\r\n continue;\r\n }\r\n lines[start - 1] = '' + lines[start - 1];\r\n lines[end - 1] = lines[end - 1] + '';\r\n }\r\n\r\n block.innerHTML = lines.join('\\n');\r\n });\r\n}\r\n\r\n// Support full-text-search\r\nfunction enableSearch() {\r\n let query;\r\n const relHref = $(\"meta[property='docfx\\\\:rel']\").attr(\"content\");\r\n\r\n if (typeof relHref === 'undefined') {\r\n return;\r\n }\r\n\r\n try {\r\n const worker = new Worker(relHref + 'styles/search-worker.js');\r\n if (!worker && !window.worker) {\r\n localSearch();\r\n } else {\r\n webWorkerSearch(worker);\r\n }\r\n renderSearchBox();\r\n highlightKeywords();\r\n addSearchEvent();\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n //Adjust the position of search box in navbar\r\n function renderSearchBox() {\r\n autoCollapse();\r\n\r\n $(window).on('resize', () => autoCollapse());\r\n\r\n $(document).on('click', '.navbar-collapse.in', function (e) {\r\n if ($(e.target).is('a')) {\r\n $(this).collapse(hide);\r\n }\r\n });\r\n\r\n function autoCollapse() {\r\n const navbar = $('#autocollapse');\r\n if (navbar.height() === null) {\r\n setTimeout(autoCollapse, 300);\r\n }\r\n navbar.removeClass(collapsed);\r\n if (navbar.height() > 60) {\r\n navbar.addClass(collapsed);\r\n }\r\n }\r\n }\r\n\r\n // Search factory\r\n function localSearch() {\r\n const lunrIndex = lunr(function () {\r\n this.ref('href');\r\n this.field('title', {boost: 50});\r\n this.field('keywords', {boost: 20});\r\n });\r\n lunr.tokenizer.seperator = /[\\s\\-\\.]+/;\r\n let searchData = {};\r\n const searchDataRequest = new XMLHttpRequest();\r\n\r\n const indexPath = relHref + \"index.json\";\r\n if (indexPath) {\r\n searchDataRequest.open('GET', indexPath);\r\n searchDataRequest.onload = function () {\r\n if (this.status !== 200) {\r\n return;\r\n }\r\n searchData = JSON.parse(this.responseText);\r\n for (let prop in searchData) {\r\n if (searchData.hasOwnProperty(prop)) {\r\n lunrIndex.add(searchData[prop]);\r\n }\r\n }\r\n }\r\n searchDataRequest.send();\r\n }\r\n\r\n $(\"body\").on(\"queryReady\", function () {\r\n const hits = lunrIndex.search(query);\r\n const results = [];\r\n hits.forEach(function (hit) {\r\n const item = searchData[hit.ref];\r\n results.push({'href': item.href, 'title': item.title, 'keywords': item.keywords});\r\n });\r\n handleSearchResults(results);\r\n });\r\n }\r\n\r\n function webWorkerSearch(worker) {\r\n const indexReady = $.Deferred();\r\n worker.onmessage = function (oEvent) {\r\n switch (oEvent.data.e) {\r\n case 'index-ready':\r\n indexReady.resolve();\r\n break;\r\n case 'query-ready':\r\n const hits = oEvent.data.d;\r\n handleSearchResults(hits);\r\n break;\r\n }\r\n }\r\n\r\n indexReady.promise().done(function () {\r\n\r\n $(\"body\").on(\"query-ready\", function () {\r\n postSearchQuery(worker, query);\r\n });\r\n\r\n postSearchQuery(worker, query);\r\n\r\n });\r\n }\r\n\r\n /**\r\n * This function posts the message to the worker if the string has at least\r\n * three characters.\r\n *\r\n * @param worker The search worker used by DocFx (lunr)\r\n * @param searchQuery The string to post to the worker.\r\n */\r\n function postSearchQuery(worker, searchQuery) {\r\n if (searchQuery && (searchQuery.length >= 3)) {\r\n worker.postMessage({q: `${searchQuery}*`});\r\n } else {\r\n worker.postMessage({q: ''});\r\n }\r\n }\r\n\r\n /**\r\n * Highlight the searching keywords\r\n */\r\n function highlightKeywords() {\r\n const q = url('?q');\r\n if (q != null) {\r\n const keywords = q.split(\"%20\");\r\n keywords.forEach(function (keyword) {\r\n if (keyword !== \"\") {\r\n $('.data-searchable *').mark(keyword);\r\n $('article *').mark(keyword);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function addSearchEvent() {\r\n $('body').on(\"searchEvent\", function () {\r\n $('#search-results>.sr-items').html('

No results found

');\r\n\r\n const searchQuery = $('#search-query');\r\n\r\n searchQuery.on('input', function (e) {\r\n return e.key !== 'Enter';\r\n });\r\n\r\n searchQuery.on(\"keyup\", function (e) {\r\n $('#search-results').show();\r\n query = `${e.target.value}`;\r\n $(\"body\").trigger(\"query-ready\");\r\n $('#search-results>.search-list').text('Search Results for \"' + query + '\"');\r\n }).off(\"keydown\");\r\n });\r\n }\r\n\r\n function relativeUrlToAbsoluteUrl(currentUrl, relativeUrl) {\r\n const currentItems = currentUrl.split(/\\/+/);\r\n const relativeItems = relativeUrl.split(/\\/+/);\r\n let depth = currentItems.length - 1;\r\n const items = [];\r\n for (let i = 0; i < relativeItems.length; i++) {\r\n if (relativeItems[i] === '..') {\r\n depth--;\r\n } else if (relativeItems[i] !== '.') {\r\n items.push(relativeItems[i]);\r\n }\r\n }\r\n return currentItems.slice(0, depth).concat(items).join('/');\r\n }\r\n\r\n function extractContentBrief(content) {\r\n const briefOffset = 50;\r\n const words = query.split(/\\s+/g);\r\n const queryIndex = content.indexOf(words[0]);\r\n\r\n if (queryIndex > briefOffset) {\r\n return \"...\" + content.slice(queryIndex - briefOffset, queryIndex + briefOffset) + \"...\";\r\n } else if (queryIndex <= briefOffset) {\r\n return content.slice(0, queryIndex + briefOffset) + \"...\";\r\n }\r\n }\r\n\r\n function handleSearchResults(hits) {\r\n if (hits.length === 0) {\r\n $('#search-results>.sr-items').html('

No results found

');\r\n } else {\r\n $('#search-results>.sr-items').empty().append(\r\n hits.slice(0, 20).map(function (hit) {\r\n const currentUrl = window.location.href;\r\n\r\n const itemRawHref = relativeUrlToAbsoluteUrl(currentUrl, relHref + hit.href);\r\n const itemHref = relHref + hit.href + \"?q=\" + query;\r\n const itemTitle = hit.title;\r\n const itemBrief = extractContentBrief(hit.keywords);\r\n\r\n const itemNode = $('').attr('class', 'sr-item').attr('href', itemHref);\r\n const itemTitleNode = $('
').attr('class', 'item-title').text(itemTitle);\r\n const itemBriefNode = $('
').attr('class', 'item-brief').text(itemBrief);\r\n itemNode.append(itemTitleNode).append(itemBriefNode);\r\n\r\n return itemNode;\r\n })\r\n );\r\n query.split(/\\s+/).forEach(function (word) {\r\n if (word !== '') {\r\n word = word.replace(/\\*/g, '');\r\n $('#search-results>.sr-items *').mark(word);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","function getAbsolutePath(href) {\r\n // Use anchor to normalize href\r\n const anchor = $('')[0];\r\n // Ignore protocal, remove search and query\r\n return anchor.host + anchor.pathname;\r\n}\r\n\r\nfunction isRelativePath(href) {\r\n if (href === undefined || href === '' || href[0] === '/') {\r\n return false;\r\n }\r\n return !isAbsolutePath(href);\r\n}\r\n\r\nfunction isAbsolutePath(href) {\r\n return (/^(?:[a-z]+:)?\\/\\//i).test(href);\r\n}\r\n\r\nfunction getDirectory(href) {\r\n if (!href) {\r\n return '';\r\n }\r\n\r\n const index = href.lastIndexOf('/');\r\n\r\n if (index === -1) {\r\n return '';\r\n }\r\n\r\n if (index > -1) {\r\n return href.substr(0, index);\r\n }\r\n}\r\n\r\nfunction formList(item, classes) {\r\n let level = 1;\r\n const model = {\r\n items: item\r\n };\r\n\r\n const cls = [].concat(classes).join(\" \");\r\n return getList(model, cls);\r\n\r\n function getList(model, cls) {\r\n\r\n if (!model || !model.items) {\r\n return null;\r\n }\r\n\r\n const l = model.items.length;\r\n\r\n if (l === 0) {\r\n return null;\r\n }\r\n\r\n let html = '';\r\n return html;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Add into long word.\r\n * @param {String} text - The word to break. It should be in plain text without HTML tags.\r\n */\r\nfunction breakPlainText(text) {\r\n if (!text) return text;\r\n return text.replace(/([a-z])([A-Z])|(\\.)(\\w)/g, '$1$3$2$4')\r\n}\r\n\r\n/**\r\n * Add into long word. The jQuery element should contain no html tags.\r\n * If the jQuery element contains tags, this function will not change the element.\r\n */\r\nfunction breakWord() {\r\n if (this.html() === this.text()) {\r\n this.html(function (index, text) {\r\n return breakPlainText(text);\r\n })\r\n }\r\n\r\n return this;\r\n}\r\n\r\n/**\r\n * adjusted from https://stackoverflow.com/a/13067009/1523776\r\n */\r\nfunction workAroundFixedHeaderForAnchors() {\r\n const HISTORY_SUPPORT = !!(history && history.pushState);\r\n const ANCHOR_REGEX = /^#[^ ]+$/;\r\n\r\n function getFixedOffset() {\r\n return $('header').first().height();\r\n }\r\n\r\n /**\r\n * If the provided href is an anchor which resolves to an element on the\r\n * page, scroll to it.\r\n * @param {String} href destination\r\n * @param {Boolean} pushToHistory push to history\r\n * @return {Boolean} - Was the href an anchor.\r\n */\r\n function scrollIfAnchor(href, pushToHistory) {\r\n let match, rect, anchorOffset;\r\n\r\n if (!ANCHOR_REGEX.test(href)) {\r\n return false;\r\n }\r\n\r\n match = document.getElementById(href.slice(1));\r\n\r\n if (match) {\r\n rect = match.getBoundingClientRect();\r\n anchorOffset = window.pageYOffset + rect.top - getFixedOffset();\r\n window.scrollTo(window.pageXOffset, anchorOffset);\r\n\r\n // Add the state to history as-per normal anchor links\r\n if (HISTORY_SUPPORT && pushToHistory) {\r\n history.pushState({}, document.title, location.pathname + href);\r\n }\r\n }\r\n\r\n return !!match;\r\n }\r\n\r\n /**\r\n * Attempt to scroll to the current location's hash.\r\n */\r\n function scrollToCurrent() {\r\n scrollIfAnchor(window.location.hash, false);\r\n }\r\n\r\n $(window).on('hashchange', () => scrollToCurrent());\r\n // Exclude tabbed content case\r\n scrollToCurrent();\r\n\r\n $(document).on('ready', function () {\r\n $('body').scrollspy({offset: 150});\r\n });\r\n}\r\n\r\nfunction breakText() {\r\n $(\".xref\").addClass(\"text-break\");\r\n const texts = $(\".text-break\");\r\n texts.each(function () {\r\n $(this).breakWord();\r\n });\r\n}\r\n"]}