{"version":3,"file":"Article.Main.min.js","mappings":"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","sources":["/./Common/Constants.ts","/./Common/AppliesToControl.ts","/./Common/MetaTagHelpers.ts","/./Common/CardCarouselHelpers.ts","/./Common/HashManager.ts","/./Common/Dropdown.ts","/./Common/TabControl.ts","/./Common/Strings.ts","/./Common/AuthenticationTypes.ts","/./Article/handleAdminPolicies.ts","/./Common/Auth/AuthHelpers.ts","/./Common/Helpers.ts","/./Common/AdminPolicies/parseAdminPolicies.ts","/./Article/Article.Main.ts"],"sourcesContent":["// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nexport const wedcsConstants = {\r\n\tcomponentGroup: {\r\n\t\toutcomeDrivenHelp: 'ODH',\r\n\t\tcssControl: 'CSSControl',\r\n\t},\r\n\tinteractionType: {\r\n\t\tformSubmit: '2',\r\n\t\tsamePage: '11',\r\n\t\tcompletedFinalStepInSeries: '22',\r\n\t},\r\n\tcoreEventType: {\r\n\t\tpageView: '0',\r\n\t\tanchorLinkClick: '1',\r\n\t\timageLinkClick: '2',\r\n\t\timageAreaClick: '3',\r\n\t\timputClick: '4',\r\n\t\tcustomEvent: '5',\r\n\t\tpageUnload: '11',\r\n\t},\r\n\tendActionAction: {\r\n\t\tgoto: 'Goto',\r\n\t\tsend: 'Send',\r\n\t},\r\n\tendActionOffer: {\r\n\t\tphone: 'PHN',\r\n\t\tcontact: 'Contact',\r\n\t}\r\n};\r\n\r\nexport const eventConstants = {\r\n\tCLICK_EVENT_TYPE: 'click',\r\n\tCOPY_EVENT_TYPE: 'copy',\r\n\tTAB_KEYCODE: 9,\r\n\tENTER_KEYCODE: 13,\r\n\tESC_KEYCODE: 27,\r\n\tDOWN_KEYCODE: 40,\r\n\tUP_KEYCODE: 38,\r\n};\r\n\r\nexport const styleTransitionMs = 10;\r\n\r\nexport const hiddenClass = 'ocHidden';\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport { hiddenClass } from './Constants';\r\n\r\nconst collapsedClass = 'collapsed';\r\n\r\nexport default class AppliesToControl {\r\n\tprivate collapsed = true;\r\n\tprivate readonly container: JQuery;\r\n\tprivate readonly reversedItems: JQuery;\r\n\tprivate readonly collapseButton: JQuery;\r\n\tprivate readonly expandButton: JQuery;\r\n\r\n\tconstructor() {\r\n\t\tthis.container = $('#supAppliesToList');\r\n\t\tthis.collapseButton = $('.appliesToOverflowControl.collapse').click(() => this.collapse());\r\n\t\tthis.expandButton = $('.appliesToOverflowControl.expand').click(() => this.expand());\r\n\r\n\t\t// assumes items are followed by expand and collapse button siblings\r\n\t\tthis.reversedItems = this.expandButton.prevAll('.appliesToItem');\r\n\r\n\t\tif (this.reversedItems.length > 0) {\r\n\t\t\t// start collapsed, watch for resizes\r\n\t\t\tthis.collapse();\r\n\t\t\t$(window).on('resize', () => this.handleResize());\r\n\t\t}\r\n\t}\r\n\r\n\texpand(this: AppliesToControl) {\r\n\t\tthis.collapsed = false;\r\n\r\n\t\t// set container to multiple line state for overflow\r\n\t\tthis.container.removeClass(collapsedClass);\r\n\r\n\t\t// unhide all items\r\n\t\tthis.reversedItems.removeClass(hiddenClass);\r\n\r\n\t\t// set button states\r\n\t\tthis.collapseButton.toggleClass(hiddenClass, this.reversedItems.offset().top <= this.container.offset().top);\r\n\t\tthis.expandButton.addClass(hiddenClass);\r\n\t}\r\n\r\n\tcollapse(this: AppliesToControl) {\r\n\t\tthis.collapsed = true;\r\n\r\n\t\t// set container to single line height to minimize layout flicker\r\n\t\tthis.container.addClass(collapsedClass);\r\n\r\n\t\t// unhide all items first\r\n\t\tthis.reversedItems.removeClass(hiddenClass);\r\n\r\n\t\t// hide buttons\r\n\t\tthis.collapseButton.addClass(hiddenClass);\r\n\t\tthis.expandButton.addClass(hiddenClass);\r\n\r\n\t\t// hide overflow items until expand button is visible on single line\r\n\t\tthis.reversedItems.each((index, element) => this.hideItem(index, element));\r\n\t}\r\n\r\n\thandleResize(this: AppliesToControl) {\r\n\t\tthis.collapsed ? this.collapse() : this.expand();\r\n\t}\r\n\r\n\tprivate hideItem(this: AppliesToControl, index: number, element: HTMLElement): false | void {\r\n\t\tconst item = $(element);\r\n\r\n\t\tif (item.offset().top <= this.container.offset().top &&\r\n\t\t\t(index === 0 || this.expandButton.removeClass(hiddenClass).offset().top <= this.container.offset().top)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\titem.addClass(hiddenClass);\r\n\t\t}\r\n\t}\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport type { ApplicationInsights } from '@microsoft/1ds-analytics-web-js';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tanalytics?: ApplicationInsights\r\n\t}\r\n}\r\n\r\nexport const refreshTelemetryMetadata = () => {\r\n\tconst analytics = window.analytics;\r\n\r\n\tif (analytics) {\r\n\t\ttry {\r\n\t\t\tanalytics.getWebAnalyticsExtension().refreshMetadata();\r\n\t\t} catch (e) {\r\n\t\t\tanalytics.trackException({\r\n\t\t\t\texception: {\r\n\t\t\t\t\tname: 'CustomError',\r\n\t\t\t\t\tmessage: `Failed to refresh 1DS metadata: ${e}`,\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst getMetaTag = (name: string): HTMLMetaElement | undefined => document.getElementsByTagName('meta').namedItem(name);\r\n\r\nexport const getMetaTagValue = (name: string): string | undefined => getMetaTag(name)?.content;\r\n\r\nexport const setMetaTag = (name: string, value: string) => {\r\n\tlet tag = getMetaTag(name);\r\n\tif (tag) {\r\n\t\ttag.content = value;\r\n\t}\r\n\telse {\r\n\t\tlet element = document.createElement('meta');\r\n\t\telement.name = name;\r\n\t\telement.content = value;\r\n\r\n\t\tdocument.head.appendChild(element);\r\n\t}\r\n\r\n\trefreshTelemetryMetadata();\r\n};\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// requires JS and CSS from slick-carousel npm to be loaded on page\r\n\r\nimport * as metaTagHelpers from \"../Common/MetaTagHelpers\"\r\n\r\nconst scrollSpeedMs = 400;\r\nconst buttonDisabledClass = 'supCardControlCarouselDisabledButton';\r\nconst prevButtonSelector = '.supCardControlCarouselPrevButton';\r\nconst nextButtonSelector = '.supCardControlCarouselNextButton';\r\nconst allButtonSelector = `${prevButtonSelector}, ${nextButtonSelector}`;\r\n\r\nfunction toggleButtons(container: HTMLDivElement, enable: boolean) {\r\n\t$(container).children(allButtonSelector).toggleClass(buttonDisabledClass, !enable);\r\n}\r\n\r\nexport const cardContainerSelector = '.supCardControlContainer';\r\nexport const cardSelector = '.supCardControlCard';\r\n\r\nexport const heroCardContainerSelector = '.heroCardControlContainer';\r\nexport const heroCardSelector = '.heroCardControlCard';\r\n\r\nexport const isCopilotPage = metaTagHelpers.getMetaTagValue(\"awa-asst\").includes(\"copilot\");\r\n\r\nexport function initializeCardCarousel(element: HTMLDivElement) {\r\n\t// assumes document direction is equal to content direction\r\n\t// existing BUG: does not work with RTL markets with fallback LTR content\r\n\tconst rtl = element.ownerDocument.dir === 'rtl';\r\n\tconst root = $(element);\r\n\r\n\tconst breakpoints = [\r\n\t\t{\r\n\t\t\tbreakpoint: 900,\r\n\t\t\tsettings: {\r\n\t\t\t\tslidesToShow: 3,\r\n\t\t\t\tslidesToScroll: 3,\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\tbreakpoint: 768,\r\n\t\t\tsettings: {\r\n\t\t\t\tslidesToShow: 2,\r\n\t\t\t\tslidesToScroll: 2,\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\tbreakpoint: 480,\r\n\t\t\tsettings: {\r\n\t\t\t\tslidesToShow: 1,\r\n\t\t\t\tslidesToScroll: 1,\r\n\t\t\t},\r\n\t\t},\r\n\t];\r\n\r\n\troot.children(cardContainerSelector).eq(0).slick({\r\n\t\taccessibility: false,\r\n\t\tslidesToShow: 4,\r\n\t\tslidesToScroll: 4,\r\n\t\tinfinite: false,\r\n\t\tarrows: true,\r\n\t\tspeed: scrollSpeedMs,\r\n\t\tprevArrow: root.children(prevButtonSelector),\r\n\t\tnextArrow: root.children(nextButtonSelector),\r\n\t\trtl: rtl,\r\n\t\tresponsive: breakpoints,\r\n\t\tdots: isCopilotPage,\r\n\t});\r\n\r\n\troot.children(heroCardContainerSelector).eq(0).slick({\r\n\t\taccessibility: false,\r\n\t\tinfinite: false,\r\n\t\tarrows: true,\r\n\t\tspeed: scrollSpeedMs,\r\n\t\tprevArrow: root.children(prevButtonSelector),\r\n\t\tnextArrow: root.children(nextButtonSelector),\r\n\t\trtl: rtl,\r\n\t\tdots: isCopilotPage,\r\n\t});\r\n}\r\n\r\nexport function updateDots(selector: string) {\r\n\t$(selector).on('setPosition', function (_, slick: any) {\r\n\t\tconst dots = slick.$dots;\r\n\t\tif (dots) {\r\n\t\t\tslick.options?.slidesToShow < slick.slideCount ? dots.show() : dots.hide();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconsole.error('dots is undefined');\r\n\t\t}\r\n\t});\r\n}\r\n\r\nexport function assignTabIndex(cards: JQuery) {\r\n\tcards.each((_, element) => {\r\n\t\tconst isActive = element.classList.contains('slick-active');\r\n\r\n\t\telement?.classList?.contains('heroCardControlCard') ? element.tabIndex = -1 : (element.tabIndex = isActive ? undefined : -1);\r\n\r\n\t\t$(element).find('a, input, button, select').each((_, descendant) => {\r\n\t\t\tdescendant.tabIndex = isActive ? undefined : -1;\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function assignVisibility(cards: JQuery) {\r\n\tcards.each((_, element) => {\r\n\t\t// Prevent hidden video player card get focused\r\n\t\telement.classList.contains('slick-active') ? element.style.visibility = 'visible' : element.style.visibility = 'hidden';\r\n\t});\r\n}\r\n\r\nexport function assignFocus(cards: JQuery) {\r\n\tconst activeCard = cards.filter('.slick-active').first();\r\n\r\n\tif (activeCard.length > 0) {\r\n\t\tactiveCard.focus();\r\n\t}\r\n}\r\n\r\nfunction assignHeroFocus(cards: JQuery) {\r\n\tconst activeCard = cards?.filter('.slick-active')?.first();\r\n\tconst activeElement = activeCard?.find('a, input, button, select')?.first();\r\n\r\n\tif (activeElement.length > 0) {\r\n\t\tactiveElement.focus();\r\n\t}\r\n}\r\n\r\nfunction updateHeroSection(wrapper: HTMLElement, backgroundUrl: string) {\r\n\tif (wrapper) {\r\n\t\twrapper.style.backgroundImage = backgroundUrl === \"\" ? 'none' : `url(${backgroundUrl})`;\r\n\t\twrapper.classList.add('heroCarouselSection');\r\n\t}\r\n}\r\n\r\nfunction toggleTooltip(button: JQuery, event: JQuery.Event, selector: string) {\r\n\tvar tooltipElement = button.find(selector);\r\n\tif (tooltipElement.length) {\r\n\t\tconst isVisible = event.type === 'focus' || event.type === 'mouseenter';\r\n\t\ttooltipElement.css({\r\n\t\t\tvisibility: isVisible ? 'visible' : 'hidden',\r\n\t\t\topacity: isVisible ? '1' : '0'\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function showTooltip(selector: string) {\r\n\tconst nextButton = $(nextButtonSelector, $(selector));\r\n\tconst prevButton = $(prevButtonSelector, $(selector));\r\n\r\n\tnextButton.on('focus blur mouseenter mouseleave', function (event) {\r\n\t\ttoggleTooltip(nextButton, event, '.nextButtonTooltip');\r\n\t});\r\n\tprevButton.on('focus blur mouseenter mouseleave', function (event) {\r\n\t\ttoggleTooltip(prevButton, event, '.prevButtonTooltip');\r\n\t});\r\n}\r\n\r\nexport function assignBackgroundImage(elements: HTMLCollectionOf, selector: string) {\r\n\tconst wrapper = document.querySelector(selector)?.closest('.no-wrapper') as HTMLElement;\r\n\tconst initialBackgroundUrl = elements[0].querySelector('.slick-active').getAttribute('backgroundimage');\r\n\r\n\tupdateHeroSection(wrapper, initialBackgroundUrl);\r\n\r\n\t$(elements).on('beforeChange', function (_event: JQuery.Event, slick: any, _currIndex: number, nextIndex: number) {\r\n\t\tupdateHeroSection(wrapper, slick.$slides.eq(nextIndex)?.attr('backgroundimage'));\r\n\t});\r\n}\r\n\r\nexport function assignButtonVisibilityEvents(elements: HTMLCollectionOf, selector: string) {\r\n\t$(elements)\r\n\t\t.on('beforeChange', function (this: HTMLDivElement) {\r\n\t\t\ttoggleButtons(this, false);\r\n\t\t}).on('afterChange', function (this: HTMLDivElement) {\r\n\t\t\tif (selector === cardSelector) {\r\n\t\t\t\tassignVisibility($(this).find(selector));\r\n\t\t\t\tassignFocus($(this).find(selector));\r\n\t\t\t}\r\n\r\n\t\t\tif (selector === heroCardSelector) assignHeroFocus($(this)?.find(selector));\r\n\t\t\ttoggleButtons(this, true);\r\n\t\t\tassignTabIndex($(this).find(selector));\r\n\t});\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nfunction isUpperCaseMatch(left: string, right: string) {\r\n\treturn left.toUpperCase() === right.toUpperCase();\r\n}\r\n\r\nexport default class HashManager {\r\n\tprivate readonly callbacks = new Map();\r\n\tprivate hashValues: Array = [];\r\n\r\n\tsetCallback(this: HashManager, key: string, callback: Function) {\r\n\t\tthis.callbacks.set(key.toUpperCase(), callback);\r\n\t}\r\n\r\n\tappend(this: HashManager, value: string) {\r\n\t\t// exact match with existing values, return\r\n\t\tif (this.hashValues.findIndex(v => isUpperCaseMatch(value, v)) !== -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tuple = value.split('=');\r\n\r\n\t\t// not a tuple, add\r\n\t\tif (tuple.length === 1) {\r\n\t\t\tthis.hashValues.push(value);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// tuple, find existing value with matching first tuple element\r\n\t\t\tconst index = this.hashValues.findIndex(v => {\r\n\t\t\t\tconst t = v.split('=');\r\n\t\t\t\tif (t.length > 1 && isUpperCaseMatch(t[0], tuple[0])) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// update or add\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.hashValues[index] = value;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.hashValues.push(value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.callbacks.get(value.toUpperCase())?.();\r\n\t}\r\n\r\n\treplaceAll(this: HashManager, location: Location) {\r\n\t\tconst hash = location.hash.substring(1);\r\n\r\n\t\tif (hash.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst replacementValues = hash.split('&');\r\n\r\n\t\t// append on existing (will trigger callbacks for updated items)\r\n\t\tfor (const value of replacementValues) {\r\n\t\t\tthis.append(value);\r\n\t\t}\r\n\r\n\t\t// set existing to new set (removes old items that don't have replacements and preserves new ordering)\r\n\t\tthis.hashValues = replacementValues;\r\n\t}\r\n\r\n\ttoHashString(this: HashManager) {\r\n\t\treturn this.hashValues.join('&');\r\n\t}\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport type Support from '../Support/Support';\r\nimport type * as EventHelpers from './EventHelpers';\r\nimport type { Behavior } from '@microsoft/1ds-analytics-web-js';\r\nimport { styleTransitionMs, hiddenClass } from './Constants';\r\n\r\ntype BehaviorKey = keyof typeof Behavior;\r\n\r\nconst accessibilityTransitionMs = 20;\r\n\r\nconst innerContainerOpenedClass = 'ocCustomDropdownOptionsInnerContainerOpened';\r\nconst zeroOpacityClass = 'ocZeroOpacity';\r\nconst optionClass = 'ocCustomDropdownOption';\r\nconst optionSelector = `li.${optionClass}`;\r\nconst optionAnchorSelector = 'a.ocCustomDropdownOptionAnchor';\r\n\r\nconst expandBehavior: BehaviorKey = 'EXPAND';\r\nconst collapseBehavior: BehaviorKey = 'REDUCE';\r\nconst minimumHeight = 185;\r\n\r\nfunction getAvailableHeight(document: Document, element: JQuery): number | string {\r\n\tconst documentHeight = $(document).height();\r\n\r\n\tconst elementHeight = element.outerHeight();\r\n\tconst elementBottomPosition = element.offset().top + elementHeight;\r\n\r\n\tconst availableHeight = Math.max(documentHeight - elementBottomPosition - 5, 0);\r\n\r\n\tif (elementHeight < minimumHeight) {\r\n\t\treturn '';\r\n\t}\r\n\telse if (availableHeight < minimumHeight) {\r\n\t\treturn minimumHeight;\r\n\t}\r\n\telse if (elementHeight < availableHeight) {\r\n\t\treturn elementHeight;\r\n\t}\r\n\r\n\treturn '';\r\n}\r\n\r\nexport default class Dropdown {\r\n\tprivate readonly utilities: Support;\r\n\tprivate readonly eventHelpers: typeof EventHelpers;\r\n\tprivate readonly ownerDocument: Document;\r\n\tprivate readonly rootElement: HTMLDivElement;\r\n\tprivate readonly entranceElement: HTMLAnchorElement;\r\n\tprivate readonly innerContainer: HTMLUListElement;\r\n\tprivate readonly entranceWidthPlaceholder: HTMLDivElement;\r\n\tprivate readonly contentContainer: HTMLElement;\r\n\r\n\tconstructor(root: HTMLDivElement, utilities: Support) {\r\n\t\tthis.utilities = utilities;\r\n\t\tthis.eventHelpers = utilities.eventHelpers;\r\n\r\n\t\tthis.ownerDocument = root.ownerDocument;\r\n\r\n\t\tthis.rootElement = root;\r\n\t\tthis.entranceElement = root.querySelector('a.ocCustomDropdownEntrance');\r\n\t\tthis.innerContainer = root.querySelector('ul.ocCustomDropdownOptionsInnerContainer');\r\n\t\tthis.entranceWidthPlaceholder = root.querySelector('div.ocCustomDropdownMaintainerOfEntranceWidth');\r\n\r\n\t\tconst contentContainerId = root.dataset['ocidofwrapperaroundcontentcontrolledbythisdropdown'];\r\n\t\tthis.contentContainer = root.ownerDocument.getElementById(contentContainerId);\r\n\r\n\t\t$(this.ownerDocument).on('keydown', event => this.handleOutsideKeyDown(event));\r\n\t\t$(this.ownerDocument.body).on('click', event => this.handleOutsideClick(event));\r\n\r\n\t\t$(this.entranceElement).on('click', () => this.handleEntranceClick());\r\n\r\n\t\t$(this.innerContainer)\r\n\t\t\t.on('keydown', event => this.handleOptionKeyDown(event))\r\n\t\t\t.on('click', optionSelector, event => {\r\n\t\t\t\tthis.switchSelected(event.currentTarget);\r\n\t\t\t\tthis.close();\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate setEntranceText(value: string) {\r\n\t\tthis.entranceElement.dataset.biName = value;\r\n\t\tthis.entranceElement.setAttribute('aria-label', value);\r\n\t\t$(this.entranceElement).children('.ocCustomDropdownEntranceText').text(value);\r\n\t}\r\n\r\n\tisOpen(this: Dropdown) {\r\n\t\treturn this.innerContainer.classList.contains(innerContainerOpenedClass);\r\n\t}\r\n\r\n\tcontainsElement(this: Dropdown, element: HTMLElement) {\r\n\t\treturn this.rootElement.contains(element);\r\n\t}\r\n\r\n\topen(this: Dropdown) {\r\n\t\t// copy width to placeholder\r\n\t\tconst entranceWidth = $(this.entranceElement).width();\r\n\t\t$(this.entranceWidthPlaceholder).width(entranceWidth);\r\n\r\n\t\t// display dropdown items\r\n\t\tthis.innerContainer.classList.add(innerContainerOpenedClass);\r\n\t\tthis.innerContainer.classList.remove(zeroOpacityClass);\r\n\r\n\t\t// toggle behavior logging\r\n\t\tthis.rootElement.dataset.biBhvr = collapseBehavior;\r\n\r\n\t\t// set dropdown list height\r\n\t\tconst innerContainer = $(this.innerContainer);\r\n\t\tinnerContainer.outerHeight(getAvailableHeight(this.ownerDocument, innerContainer));\r\n\r\n\t\tsetTimeout(() => this.rootElement.setAttribute('aria-expanded', 'true'), accessibilityTransitionMs);\r\n\t}\r\n\r\n\tclose(this: Dropdown) {\r\n\t\tthis.innerContainer.classList.remove(innerContainerOpenedClass);\r\n\t\t$(this.innerContainer).outerHeight('');\r\n\r\n\t\tthis.rootElement.dataset.biBhvr = expandBehavior;\r\n\r\n\t\tsetTimeout(() => this.rootElement.setAttribute('aria-expanded', 'false'),\r\n\t\t\taccessibilityTransitionMs);\r\n\t}\r\n\r\n\tswitchSelected(this: Dropdown, item: HTMLLIElement) {\r\n\t\tif (item.parentElement !== this.innerContainer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.utilities.suspendStateOfContents($(this.contentContainer));\r\n\r\n\t\t// update aria states\r\n\t\t$(item).siblings().children(optionAnchorSelector).attr('aria-selected', 'false');\r\n\t\titem.querySelector(optionAnchorSelector).setAttribute('aria-selected', 'true');\r\n\r\n\t\t// set label on dropdown entrance\r\n\t\tthis.setEntranceText(item.innerText.trim());\r\n\r\n\t\tconst contentElement = this.ownerDocument.getElementById(\r\n\t\t\titem.dataset['ocidofcontentcontrolledbythisoption']);\r\n\r\n\t\tfor (let i = 0; i < this.contentContainer.children.length; i++) {\r\n\t\t\tconst child = this.contentContainer.children[i];\r\n\t\t\tif (child !== contentElement) {\r\n\t\t\t\tchild.classList.add(hiddenClass, zeroOpacityClass);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcontentElement.classList.remove(hiddenClass);\r\n\t\tsetTimeout(() => contentElement.classList.remove(zeroOpacityClass), styleTransitionMs);\r\n\t}\r\n\r\n\tprivate handleOutsideClick(\r\n\t\tthis: Dropdown,\r\n\t\tevent: JQuery.ClickEvent) {\r\n\t\tif (this.isOpen() && !this.containsElement(event.target)) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleOutsideKeyDown(\r\n\t\tthis: Dropdown, event: JQuery.KeyDownEvent) {\r\n\t\tif (this.isOpen() &&\r\n\t\t\tthis.eventHelpers.eventIsEscKeypress(event) ||\r\n\t\t\tthis.eventHelpers.eventIsTabKeypress(event)) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleEntranceClick(this: Dropdown) {\r\n\t\tthis.isOpen() ? this.close() : this.open();\r\n\t}\r\n\r\n\tprivate handleOptionKeyDown(\r\n\t\tthis: Dropdown,\r\n\t\tevent: JQuery.KeyDownEvent) {\r\n\t\tif (this.eventHelpers.eventIsDownKeypress(event)) {\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\t$(event.target)\r\n\t\t\t\t.closest(optionSelector)\r\n\t\t\t\t.next(optionSelector)\r\n\t\t\t\t.focus();\r\n\t\t}\r\n\t\telse if (this.eventHelpers.eventIsUpKeypress(event)) {\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\t$(event.target)\r\n\t\t\t\t.closest(optionSelector)\r\n\t\t\t\t.prev(optionSelector)\r\n\t\t\t\t.focus();\r\n\t\t}\r\n\t\telse if (this.eventHelpers.eventIsEnterKeypress(event)) {\r\n\t\t\t// assumes that enter will also trigger click event on anchor inside option to select\r\n\t\t\tthis.utilities.pushOntoExecutionStack(() => this.entranceElement.focus(), this);\r\n\t\t}\r\n\t}\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport { eventConstants, hiddenClass } from './Constants';\r\nimport { cardContainerSelector } from './CardCarouselHelpers';\r\nimport { getMetaTagValue } from \"./MetaTagHelpers\";\r\nimport type { ApplicationInsights, Behavior } from '@microsoft/1ds-analytics-web-js';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tanalytics?: ApplicationInsights,\r\n\t\toneDS: {\r\n\t\t\tBehavior: typeof Behavior,\r\n\t\t},\r\n\t}\r\n}\r\n\r\ntype HashManager = {\r\n\taddHashElementCallback: (value: string, callback: Function) => void,\r\n\tappendHashElement: (value: string) => void,\r\n}\r\n\r\nexport type TabConfigLog = {\r\n\tname: string,\r\n\tactivetab: string,\r\n\tdefaulttab: string,\r\n\tistargeted: string,\r\n}\r\n\r\nconst headerContainerActiveTabAttribute = 'ms.activetab';\r\nconst activeTabClass = 'supTabControlHeaderActive';\r\nconst tabContentPositionAttribute = 'referenced-content-position';\r\nconst tabInsertPosition = 'afterbegin';\r\nconst cssOverflowProperty = 'overflow';\r\n\r\nfunction logAction(tabConfigPageTags: Record, tab: HTMLAnchorElement, eventType: string) {\r\n\tconst analytics = window.analytics;\r\n\r\n\tif (analytics) {\r\n\t\tanalytics.capturePageAction(null, {\r\n\t\t\tbehavior: window.oneDS.Behavior.TAB,\r\n\t\t\tpageTags: {\r\n\t\t\t\ttabconfig: tabConfigPageTags,\r\n\t\t\t},\r\n\t\t\tactionType: eventType === eventConstants.CLICK_EVENT_TYPE ? 'CL' : undefined,\r\n\t\t\tcontentTags: {\r\n\t\t\t\tareaName: 'tabs',\r\n\t\t\t\tcontentName: tab.text,\r\n\t\t\t\tslotNumber: tab.getAttribute(tabContentPositionAttribute),\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default class TabControl {\r\n\tprivate readonly hashManager: HashManager;\r\n\tprivate readonly suspendContentFunction: (content: HTMLDivElement) => void;\r\n\tprivate readonly logPageTagFactory: () => Record;\r\n\r\n\tprivate readonly id: string;\r\n\tprivate readonly hasTargeting: boolean;\r\n\r\n\tprivate readonly headerContainer: HTMLDivElement;\r\n\tprivate readonly headerTabs: NodeListOf;\r\n\tprivate readonly headerOverflowContainer: HTMLDivElement;\r\n\tprivate readonly headerOverflowDropdownContent: HTMLDivElement;\r\n\tprivate readonly headerOverflowDropdownIcon: HTMLAnchorElement;\r\n\r\n\tprivate readonly contents: NodeListOf;\r\n\r\n\tconstructor(\r\n\t\thashManager: HashManager,\r\n\t\tsuspendContentFunction: (content: HTMLDivElement) => void,\r\n\t\tlogPageTagFactory: () => Record,\r\n\t\tcontainer: HTMLDivElement) {\r\n\r\n\t\tthis.hashManager = hashManager;\r\n\t\tthis.suspendContentFunction = suspendContentFunction;\r\n\t\tthis.logPageTagFactory = logPageTagFactory;\r\n\r\n\t\tthis.id = container.id;\r\n\t\tthis.hasTargeting =\r\n\t\t\tcontainer.getAttribute('tab-control-with-os-targeting') === 'true' ||\r\n\t\t\tcontainer.getAttribute('tab-control-with-office-version-targeting') === 'true' ||\r\n\t\t\tcontainer.getAttribute('tab-control-with-windows-version-targeting') === 'true';\r\n\r\n\t\tthis.headerContainer = container.querySelector('div.supTabControlHeader');\r\n\t\tthis.headerTabs = this.headerContainer.querySelectorAll('a.supTabControlTabHeader');\r\n\t\tthis.headerOverflowContainer = container.querySelector('div.supTabControlOverflowDropdown');\r\n\t\tthis.headerOverflowDropdownContent = this.headerOverflowContainer.querySelector('div.supTabControlOverflowDropdownContent');\r\n\t\tthis.headerOverflowDropdownIcon = this.headerOverflowContainer.querySelector('a.supTabControlOverflowDropdownIcon');\r\n\t\tthis.contents = container.querySelectorAll('div.supTabControlTabContent');\r\n\r\n\t\t// NodeList.forEach is not supported in IE, use normal array loop\r\n\t\tfor (let i = 0; i < this.headerTabs.length; i++) {\r\n\t\t\tconst tab = this.headerTabs[i];\r\n\t\t\tconst tabHash = tab.getAttribute('tab-hash');\r\n\r\n\t\t\ttab.addEventListener('click', e => {\r\n\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t// update hash in URL (triggers tab switch)\r\n\t\t\t\tthis.hashManager.appendHashElement(tabHash);\r\n\r\n\t\t\t\tlogAction(this.logPageTagFactory(), tab, e.type);\r\n\r\n\t\t\t\tthis.closeOverflowDropdown();\r\n\t\t\t});\r\n\r\n\t\t\tthis.hashManager.addHashElementCallback(tabHash, () => {\r\n\t\t\t\tthis.selectTab(tab);\r\n\r\n\t\t\t\t// Refresh card carousel components within the tab control's tab content.\r\n\t\t\t\t$(`.supTabControlTabContent ${cardContainerSelector}`).slick?.('refresh');\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.headerOverflowDropdownIcon.addEventListener('click', e => {\r\n\t\t\te.stopPropagation();\r\n\t\t\tif (this.headerOverflowDropdownContent.classList.toggle(hiddenClass)) {\r\n\t\t\t\t$(this.headerContainer).css(cssOverflowProperty, 'hidden');\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$(this.headerContainer).css(cssOverflowProperty, 'visible');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetTabConfigLogObject(this: TabControl): TabConfigLog {\r\n\t\treturn {\r\n\t\t\tname: this.headerContainer.querySelector(`a.${activeTabClass}`).text,\r\n\t\t\tactivetab: this.headerContainer.getAttribute(headerContainerActiveTabAttribute),\r\n\t\t\tdefaulttab: this.headerContainer.getAttribute('ms.defaulttab'),\r\n\t\t\tistargeted: `${this.id},${this.hasTargeting}`,\r\n\t\t}\r\n\t}\r\n\r\n\tprivate selectTab(this: TabControl, selectedTab: HTMLAnchorElement) {\r\n\t\t// XSL position() is 1-indexed, decrement to 0-indexed\r\n\t\tconst selectedIndex = parseInt(selectedTab.getAttribute(tabContentPositionAttribute), 10) - 1;\r\n\r\n\t\t// NodeList.forEach is not supported in IE, use normal array loop\r\n\t\tfor (let i = 0; i < this.headerTabs.length; i++) {\r\n\t\t\tconst tab = this.headerTabs[i];\r\n\r\n\t\t\tif (tab !== selectedTab) {\r\n\t\t\t\ttab.setAttribute('aria-selected', 'false');\r\n\t\t\t\ttab.classList.remove(activeTabClass);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// NodeList.forEach is not supported in IE, use normal array loop\r\n\t\tfor (let i = 0; i < this.contents.length; i++) {\r\n\t\t\tif (i !== selectedIndex) {\r\n\t\t\t\tconst content = this.contents[i];\r\n\r\n\t\t\t\tthis.suspendContentFunction(content);\r\n\t\t\t\tcontent.classList.add(hiddenClass);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tselectedTab.setAttribute('aria-selected', 'true');\r\n\t\tselectedTab.classList.add(activeTabClass);\r\n\t\tthis.contents.item(selectedIndex).classList.remove(hiddenClass);\r\n\r\n\t\t// update ms.activetab attribute\r\n\t\tconst targetingValue = selectedTab.getAttribute('targeted-office-version')\r\n\t\t\t?? selectedTab.getAttribute('targeted-os')\r\n\t\t\t?? selectedIndex + 1;\r\n\r\n\t\tthis.headerContainer.setAttribute(headerContainerActiveTabAttribute, `${this.id},${targetingValue}`);\r\n\r\n\t\t// handle tab overflow\r\n\t\tthis.handleTabOverflow();\r\n\t}\r\n\r\n\thandleTabOverflow(this: TabControl) {\r\n\t\tlet tabHeaderTotalWidth = 0;\r\n\r\n\t\t// 1. move all tabs from overflow container to header container (implicitly restores to original ordering)\r\n\t\t// NodeList.forEach is not supported in IE, use normal array loop\r\n\t\tfor (let i = this.headerTabs.length - 1; i >= 0; i--) {\r\n\t\t\tconst tab = this.headerTabs[i];\r\n\t\t\tthis.headerContainer.insertAdjacentElement(tabInsertPosition, tab);\r\n\t\t\ttabHeaderTotalWidth += $(tab).outerWidth(true);\r\n\t\t}\r\n\r\n\t\t// 2. move overflow headers to dropdown\r\n\t\tlet overflowWidth = tabHeaderTotalWidth - $(this.headerContainer).width();\r\n\t\tif (getMetaTagValue('awa-asst').includes('copilot')) {\r\n\t\t\t// Copilot uses rounded borders for active tabs\r\n\t\t\t// Additional overflow measurement is added to account for those borders\r\n\t\t\toverflowWidth -= 20; \r\n\t\t}\r\n\t\tif (overflowWidth > 0) {\r\n\t\t\toverflowWidth += $(this.headerOverflowDropdownIcon).outerWidth(true);\r\n\r\n\t\t\t// move tabs to dropdown until there is no more overflow (reverse order)\r\n\t\t\tfor (let i = this.headerTabs.length - 1; i >= 0 && overflowWidth > 0; i--) {\r\n\t\t\t\tconst tab = this.headerTabs[i];\r\n\r\n\t\t\t\tif (!tab.classList.contains(activeTabClass)) {\r\n\t\t\t\t\toverflowWidth -= $(tab).outerWidth(true);\r\n\t\t\t\t\tthis.headerOverflowDropdownContent.insertAdjacentElement(tabInsertPosition, tab);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerOverflowContainer.classList.remove(hiddenClass);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.headerOverflowContainer.classList.add(hiddenClass);\r\n\t\t}\r\n\t}\r\n\r\n\tcloseOverflowDropdown(this: TabControl) {\r\n\t\tthis.headerOverflowDropdownContent.classList.add(hiddenClass);\r\n\t\t$(this.headerContainer).css(cssOverflowProperty, 'hidden');\r\n\t}\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n// Silent Sign In\r\nexport const eventNameSilentSignInComplete = \"silentSignInComplete\";\r\n\r\n// Popup Sign In\r\nexport const eventNamePopupSignInComplete = \"popupSignInComplete\";\r\n\r\n// Value Guidance strings\r\nexport const eventNameVgSignInSuccess = \"vg.signin.success\";\r\nexport const eventNameVgSignInFailed = \"vg.signin.failed\";\r\n\r\nexport const vgComponentNames = {\r\n\tvgHero: 'vg-hero',\r\n\tvgExplore: 'vg-explore'\r\n}\r\n\r\nexport const HvcComponentType = {\r\n\t[vgComponentNames.vgHero]: 'ValueGuidanceV2HvcHero',\r\n\t[vgComponentNames.vgExplore]: 'ValueGuidanceV2HvcExplore'\r\n}\r\n\r\nexport const TenantAdminPoliciesElementId = \"TAP__SETTINGS\";\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nexport enum DataBoundary {\r\n\tNone = 'None',\r\n\tEU = 'EU'\r\n}\r\n\r\nexport enum UserAgeGroup {\r\n\tUndefined,\r\n\tMinorWithoutParentalConsent,\r\n\tMinorWithParentalConsent,\r\n\tAdult,\r\n\tNotAdult,\r\n\tMinorNoParentalConsentRequired,\r\n}\r\n\r\nexport interface MeControlAccount {\r\n\ttype: string,\r\n\ttenantId: string,\r\n\tmemberName: string,\r\n\tdisplayName: string,\r\n\tfirstName: string,\r\n\tlastName: string,\r\n\tauthenticatedState: string\r\n}\r\n\r\nexport interface SilentSignInProperties {\r\n\taccount: MeControlAccount,\r\n\tuserIsChild?: boolean,\r\n\tlocalTelemetryId: string,\r\n\ttelemetryAuthType: string,\r\n\tpuid: string,\r\n\tauthType: string,\r\n\tdataBoundary: string,\r\n\tageGroup?: UserAgeGroup\r\n}\r\n\r\nexport type MsShellObj = {\r\n\tmeControlOptions: { currentAccount: MeControlAccount }\r\n}\r\n\r\nexport interface IMsCommonShell {\r\n\tload: (msShellCurrentAccount: MsShellObj) => Promise;\r\n\tmeControlOptions: () => { currentAccount: MeControlAccount };\r\n}\r\n\r\n// Value Guidance Types\r\nexport interface ISignInCompletionObj {\r\n\teventType: string,\r\n\tauthType?: string,\r\n\tdataBoundary?: DataBoundary,\r\n\tmeControlAccount?: MeControlAccount\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\nimport { parseAdminPolicies } from '../Common/AdminPolicies/parseAdminPolicies';\r\nimport { addSilentAuthEventListener } from \"../Common/Auth/AuthHelpers\";\r\nimport { isAadUser } from '../Common/Helpers';\r\nimport { SilentSignInProperties } from '../Common/AuthenticationTypes';\r\n\r\nexport function handleAdminPolicies(): void {\r\n\t//TODO: utilize promise from window.manageSilentSignIn\r\n\taddSilentAuthEventListener((props: CustomEvent) => {\r\n\r\n\t\tif (props.detail instanceof Error) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst authProperties = props.detail as SilentSignInProperties;\r\n\t\tconst aadPrivacySubtext = document.getElementById(\"aadPrivacySubtext\");\r\n\r\n\t\tif (!isAadUser(authProperties.authType)) {\r\n\t\t\taadPrivacySubtext?.remove();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// only apply policies for AAD users\r\n\t\tconst policies = parseAdminPolicies();\r\n\r\n\t\tconst feedbackContainer = document.getElementById(\"supFeedbackWrapper\");\r\n\t\tif (!policies.AllowFeedback) {\r\n\t\t\tfeedbackContainer?.remove();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If policy enables feedback for AAD users, display disclaimer text\r\n\t\tif (feedbackContainer !== null) {\r\n\t\t\taadPrivacySubtext?.classList?.remove(\"ocHidden\");\r\n\t\t}\r\n\t});\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport { SilentSignInProperties } from \"../AuthenticationTypes\";\r\nimport { getMetaTagValue } from \"../MetaTagHelpers\";\r\nimport { eventNameSilentSignInComplete } from \"../Strings\";\r\n\r\n//todo: move some of the auth helpers from Helpers.ts to here\r\n\r\n/**\r\n * Checks if the user is authenticated by looking at the \r\n * current me control account, as well as the meta tag values for auth type and tenant id\r\n * @returns true if the user is authenticated, false otherwise\r\n */\r\nexport function isUserAuthenticated(): boolean {\r\n return (!!getMetaTagValue(\"awa-authtype\") || !!getMetaTagValue(\"awa-tenantid\") || !!window.msCommonShell?.meControlOptions()?.currentAccount);\r\n}\r\n\r\n/**\r\n * Checks to see if the silent auth event will fire by looking\r\n * at the silentSigninProgress global variable first and then\r\n * checking to see if the silent auth iframe is on the page\r\n * @returns true if the silent auth event will fire, false otherwise\r\n */\r\nexport function willSilentAuthEventFire(): boolean {\r\n if (typeof window.silentSigninProgress !== 'undefined') {\r\n return window.silentSigninProgress;\r\n }\r\n\r\n return !!document.getElementById(\"iframeOP\");\r\n}\r\n\r\n/**\r\n * Adds an event listener for the silent auth event and takes an option timeout parameter\r\n * for how long to wait for the event to fire. If the event does not fire within the timeout period \r\n * the listener will be removed and the callback will be called when the timeout expires.\r\n * @param listener the callback to be called when the silent auth event fires or the timeout expires\r\n * @param timeout the amount of time (in milliseconds) to wait for the silent auth event to fire\r\n */\r\nexport function addSilentAuthEventListener(listener: (event: CustomEvent) => any, timeout?: number, options?: boolean | AddEventListenerOptions): void {\r\n \r\n if(!timeout){\r\n window.addEventListener(eventNameSilentSignInComplete, listener, options);\r\n return;\r\n }\r\n \r\n //handles silent auth event by removing the timeout and calling the listener callback\r\n function silentAuthEventCallbackWrapper(event: CustomEvent){\r\n clearTimeout(timeoutHandler);\r\n listener(event);\r\n }\r\n\r\n //handles the timeout by removing the silent auth listener and calling the listener callback with error\r\n function timeoutCallback(){\r\n window.removeEventListener(eventNameSilentSignInComplete, silentAuthEventCallbackWrapper);\r\n listener(new CustomEvent(eventNameSilentSignInComplete, { detail: new Error(`Silent auth did not complete before allowed timeout of ${timeout}`) }));\r\n }\r\n\r\n let timeoutHandler = setTimeout(timeoutCallback, timeout);\r\n window.addEventListener(eventNameSilentSignInComplete, silentAuthEventCallbackWrapper, options);\r\n}","// Copyright (C) Microsoft Corporation. All rights reserved.\r\nimport { MeControlAccount, DataBoundary } from '../Common/AuthenticationTypes';\r\n\r\n/*\r\n * @param {string} authType - authentication type from user auth object\r\n * @returns {boolean} - true if user is authenticated, false otherwise\r\n */\r\nexport const isUserAuthenticated = (authType: string): boolean => (authType && (authType != '') ? authType.toLowerCase() != 'none' : false);\r\n\r\n/*\r\n * @returns {MeControlAccount} - returns current user account information if available\r\n */\r\nexport const getCurrUser = (): MeControlAccount => (window?.msCommonShell?.meControlOptions()?.currentAccount);\r\n\r\n/*\r\n * @param {string} authType - authentication type from user auth object\r\n * @returns {boolean} - true if user is AAD user, false otherwise\r\n */\r\nexport const isAadUser = (authType): boolean => !!authType && (authType.toLowerCase() === \"aad\");\r\n\r\n/*\r\n * @param {window} window - window to close\r\n */\r\nexport const closeWindow = (window: Window | undefined | null): void => window?.close();\r\n\r\n/*\r\n * Returns valid data source\r\n * @param {string} dataBoundary - data boundary from user auth object\r\n */\r\nexport const parseDataBoundary = (dataBoundary: string): DataBoundary => (dataBoundary === DataBoundary.EU ? DataBoundary.EU : DataBoundary.None);\r\n\r\n/*\r\n * @param {string} url - URL to open in pop up window\r\n * @param {string} width - width of the window\r\n * @param {string} height - height of the window\r\n * @returns {Window} - returns the window created\r\n */\r\nexport const createPopUpWindow = (url: string, width: number, height: number) : Window | null => {\r\n\tif (window) {\r\n\t\tconst wLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n\t\tconst wTop = window.screenTop ? window.screenTop : window.screenY;\r\n\r\n\t\tconst left = wLeft + (window.innerWidth / 2) - (width / 2);\r\n\t\tconst top = wTop + (window.innerHeight / 2) - (height / 2);\r\n\t\treturn window.open(url, '_blank', `popup=yes, width=${width}, height=${height}, top=${top}, left=${left}`);\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n/*\r\n * @param {MeControlAccount} userAccount - sets MeControlAccount in msCommonShell\r\n * @param {window} win - window to set MeControlAccount in\r\n */\r\nexport const SetMeControlAccount = (userAccount: MeControlAccount, window: any): void => {\r\n\t// ToDo: pattri, #7729785 set type for window\r\n\twindow?.MeControl?.API?.setActiveAccount(userAccount);\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport { AdminPolicy } from './types';\r\nimport { TenantAdminPoliciesElementId } from '../Strings';\r\n\r\n\r\nexport function parseAdminPolicies(element?: HTMLElement): AdminPolicy {\r\n\treturn parseAdminPoliciesInternal(element ?? document.getElementById(TenantAdminPoliciesElementId));\r\n}\r\n\r\n\r\nfunction parseAdminPoliciesInternal(element: HTMLElement): AdminPolicy {\r\n\tconst jsonPayload = element?.dataset.settings;\r\n\r\n\tif (jsonPayload) {\r\n\t\treturn JSON.parse(jsonPayload) as AdminPolicy;\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\nimport type Support from '../Support/Support';\r\nimport { eventConstants, hiddenClass } from '../Common/Constants';\r\nimport AppliesToControl from '../Common/AppliesToControl';\r\nimport { initializeCardCarousel, isCopilotPage, assignButtonVisibilityEvents, assignBackgroundImage, assignTabIndex, assignVisibility, cardSelector, heroCardSelector, updateDots, showTooltip } from '../Common/CardCarouselHelpers';\r\nimport HashManager from '../Common/HashManager';\r\nimport Dropdown from '../Common/Dropdown';\r\nimport TabControl from '../Common/TabControl';\r\nimport type { TabConfigLog } from '../Common/TabControl';\r\nimport { handleAdminPolicies } from './handleAdminPolicies';\r\n\r\ntype ArticleExtendedSupport = Support & {\r\n\tControls: {\r\n\t\tAppliesTo?: {\r\n\t\t\tinitializeControl: () => void,\r\n\t\t\tclickHandlerForExpand: () => void,\r\n\t\t\tclickHandlerForCollapse: () => void,\r\n\t\t\trenderOverflowControls: () => void,\r\n\t\t},\r\n\t\tCardControl?: {\r\n\t\t\tinitializeSlickCarousels: () => void,\r\n\t\t\tassignButtonVisibilityEvents: () => void,\r\n\t\t\tassignTabIndex: (cards: JQuery) => void,\r\n\t\t\tassignVisibility: (cards: JQuery) => void,\r\n\t\t\tassignBackgroundImage: () => void,\r\n\t\t\tupdateDots: (selector: string) => void,\r\n\t\t\tshowToolTip: (selector: string) => void,\r\n\t\t},\r\n\t},\r\n\tHashManager?: {\r\n\t\taddHashElementCallback: (value: string, callback: Function) => void,\r\n\t\tappendHashElement: (value: string) => void,\r\n\t},\r\n\tCustomDropdown?: {\r\n\t\tisDropdownClosed: (elementInDropdown: JQuery) => boolean,\r\n\t\topenDropdown: (elementInDropdown: JQuery) => void,\r\n\t\tcloseDropdown: (elementInDropdown: JQuery) => void,\r\n\t\tcloseAllDropdowns: () => void,\r\n\t},\r\n};\r\n\r\n$(() => {\r\n\tdocument.getElementById('ocpFallbackNotificationBarCloseButtonLink')?.addEventListener(eventConstants.CLICK_EVENT_TYPE, _ => {\r\n\t\tdocument.getElementById('ocpFallbackNotificationBar').classList.add(hiddenClass);\r\n\t});\r\n\r\n\tlet appliesToControl: AppliesToControl;\r\n\r\n\tconst occe: ArticleExtendedSupport = window.occe;\r\n\r\n\tocce.Controls.AppliesTo = {\r\n\t\tinitializeControl: function () {\r\n\t\t\tappliesToControl = new AppliesToControl();\r\n\t\t},\r\n\t\tclickHandlerForExpand: function () {\r\n\t\t\tappliesToControl.expand();\r\n\t\t},\r\n\t\tclickHandlerForCollapse: function () {\r\n\t\t\tappliesToControl.collapse();\r\n\t\t},\r\n\t\trenderOverflowControls: function () {\r\n\t\t\tappliesToControl.handleResize();\r\n\t\t},\r\n\t};\r\n\r\n\tocce.Controls.AppliesTo.initializeControl();\r\n\r\n\tfunction removeIfEmpty(_: number, e: HTMLElement) {\r\n\t\tconst element = $(e);\r\n\r\n\t\tif ($.trim(element.text()).length === 0 && element.find('img').length === 0) {\r\n\t\t\telement.remove();\r\n\t\t}\r\n\t}\r\n\r\n\tconst bandedTables: JQuery = $('table.banded');\r\n\r\n\t// remove empty tables\r\n\tbandedTables.each(removeIfEmpty);\r\n\r\n\t// remove empty rows\r\n\tbandedTables.find('tr').each(removeIfEmpty);\r\n\r\n\t// make adjacent rows have alternate colors in a banded table have to be flipped\r\n\t// when the header cells are inside a \r\n\tbandedTables.filter((_, element) => !!element.tHead).addClass('flipColors');\r\n\r\n\tconst hashManager = new HashManager();\r\n\r\n\tocce.HashManager = {\r\n\t\taddHashElementCallback: function (value, callback) {\r\n\t\t\thashManager.setCallback(value, callback);\r\n\t\t},\r\n\t\tappendHashElement: function (value) {\r\n\t\t\thashManager.append(value);\r\n\r\n\t\t\twindow.history.pushState(undefined, undefined, `#${hashManager.toHashString()}`);\r\n\t\t},\r\n\t};\r\n\r\n\t$(window).on('hashchange', () => hashManager.replaceAll(window.location));\r\n\r\n\tconst carouselClass = 'supCardControlCarousel';\r\n\tconst heroCarouselClass = 'heroCardControlCarousel';\r\n\r\n\tocce.Controls.CardControl = {\r\n\t\tinitializeSlickCarousels: function () {\r\n\t\t\tconst elements = document.querySelectorAll(`.${carouselClass}, .${heroCarouselClass}`);\r\n\r\n\t\t\telements.forEach(element => {\r\n\t\t\t\tinitializeCardCarousel(element as HTMLDivElement);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tassignButtonVisibilityEvents: function () {\r\n\t\t\t// assumes class is on div\r\n\t\t\tconst elements = >document.getElementsByClassName(carouselClass);\r\n\t\t\tconst heroElements = >document.getElementsByClassName(heroCarouselClass);\r\n\r\n\t\t\tassignButtonVisibilityEvents(elements, cardSelector);\r\n\t\t\tassignButtonVisibilityEvents(heroElements, heroCardSelector);\r\n\r\n\t\t},\r\n\t\tassignTabIndex: assignTabIndex,\r\n\t\tassignVisibility: assignVisibility,\r\n\t\tassignBackgroundImage: function () {\r\n\t\t\tconst heroElements = >document.getElementsByClassName(heroCarouselClass);\r\n\t\t\tassignBackgroundImage(heroElements, heroCardSelector);\r\n\t\t},\r\n\t\tupdateDots: updateDots,\r\n\t\tshowToolTip: showTooltip,\r\n\t};\r\n\r\n\t$(`.${carouselClass}`).on('init', function (this: HTMLElement) {\r\n\t\tocce.Controls.CardControl.assignTabIndex($(this).find(cardSelector));\r\n\t\t// For some reason this is hidding the cards, commenting for now\r\n\t\t//occe.Controls.CardControl.assignVisibility($(this).find(cardSelector));\r\n\t\tif (isCopilotPage) occe.Controls.CardControl.updateDots(`.${carouselClass}`);\r\n\t});\r\n\r\n\t$(`.${heroCarouselClass}`).on('init', function (this: HTMLElement) {\r\n\t\tocce.Controls.CardControl.assignTabIndex($(this).find(heroCardSelector));\r\n\t\tocce.Controls.CardControl.assignBackgroundImage();\r\n\t\tocce.Controls.CardControl.showToolTip(`.${heroCarouselClass}`);\r\n\t\tif (isCopilotPage) occe.Controls.CardControl.updateDots(`.${heroCarouselClass}`);\r\n\t});\r\n\r\n\tocce.Controls.CardControl.initializeSlickCarousels();\r\n\tocce.Controls.CardControl.assignButtonVisibilityEvents();\r\n\r\n\tconst dropdowns = new Array();\r\n\r\n\t// assumes class is on div\r\n\tconst dropdownRootElements = >document.getElementsByClassName('ocCustomDropdownRoot');\r\n\r\n\tfor (let i = 0; i < dropdownRootElements.length; i++) {\r\n\t\tdropdowns.push(new Dropdown(dropdownRootElements[i], occe));\r\n\t}\r\n\r\n\tconst findDropdown = (element: HTMLElement | undefined): Dropdown | undefined => {\r\n\t\tfor (let i = 0; i < dropdowns.length; i++) {\r\n\t\t\tif (dropdowns[i].containsElement(element)) {\r\n\t\t\t\treturn dropdowns[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tocce.CustomDropdown = {\r\n\t\tisDropdownClosed: function (elementInDropdown: JQuery) {\r\n\t\t\treturn !findDropdown(elementInDropdown.get(0))?.isOpen() ?? true;\r\n\t\t},\r\n\t\topenDropdown: function (elementInDropdown: JQuery) {\r\n\t\t\treturn findDropdown(elementInDropdown.get(0))?.open();\r\n\t\t},\r\n\t\tcloseDropdown: function (elementInDropdown: JQuery) {\r\n\t\t\treturn findDropdown(elementInDropdown.get(0))?.close();\r\n\t\t},\r\n\t\tcloseAllDropdowns: function () {\r\n\t\t\tdropdowns.forEach(d => d.close());\r\n\t\t}\r\n\t};\r\n\r\n\tconst tabControls = new Array();\r\n\r\n\t// assumes class is on div\r\n\tconst tabControlElements = >document.getElementsByClassName('supTabControl');\r\n\r\n\tfunction suspendTabContent(element: HTMLElement) {\r\n\t\tocce.suspendStateOfContents($(element));\r\n\t}\r\n\r\n\tfunction generateTabControlPageTags(): Record {\r\n\t\tconst tags: Record = {};\r\n\r\n\t\ttabControls.forEach((tabControl: TabControl, index: number) => {\r\n\t\t\ttags[`tabcontrol${index}`] = tabControl.getTabConfigLogObject();\r\n\t\t});\r\n\r\n\t\treturn tags;\r\n\t}\r\n\r\n\tfor (let i = 0; i < tabControlElements.length; i++) {\r\n\t\tconst tabControl = new TabControl(occe.HashManager, suspendTabContent, generateTabControlPageTags, tabControlElements[i]);\r\n\t\ttabControl.handleTabOverflow();\r\n\t\ttabControls.push(tabControl);\r\n\t}\r\n\r\n\t$(window).on('resize', () => {\r\n\t\ttabControls.forEach((tabControl: TabControl) => tabControl.handleTabOverflow());\r\n\t});\r\n\r\n\t$(window).on('click blur', () => {\r\n\t\ttabControls.forEach((tabControl: TabControl) => tabControl.closeOverflowDropdown());\r\n\t});\r\n\r\n\t// process existing hash callbacks\r\n\thashManager.replaceAll(window.location);\r\n});\r\n\r\n$(window).on('load', () => {\r\n\t//handle tenant admin policies\r\n\thandleAdminPolicies();\r\n\r\n\t// reduce high-res img width\r\n\tconst highResolutionImages = document.querySelectorAll(\".ocpHighResContent img\");\r\n\r\n\t// NodeList.forEach is not supported in IE, use normal array loop\r\n\tfor (let i = 0; i < highResolutionImages.length; i++) {\r\n\t\tconst image = highResolutionImages[i];\r\n\r\n\t\timage.width = image.naturalWidth / 2;\r\n\t}\r\n});\r\n"],"names":["eventConstants","hiddenClass","collapsedClass","AppliesToControl","constructor","collapsed","this","container","$","collapseButton","click","collapse","expandButton","expand","reversedItems","prevAll","length","window","on","handleResize","removeClass","toggleClass","offset","top","addClass","each","index","element","hideItem","item","name","document","getElementsByTagName","namedItem","getMetaTag","content","buttonDisabledClass","prevButtonSelector","nextButtonSelector","allButtonSelector","toggleButtons","enable","children","cardContainerSelector","cardSelector","heroCardSelector","isCopilotPage","includes","updateDots","selector","_","slick","dots","$dots","options","slidesToShow","slideCount","show","hide","console","error","assignTabIndex","cards","isActive","classList","contains","tabIndex","undefined","find","descendant","assignVisibility","style","visibility","updateHeroSection","wrapper","backgroundUrl","backgroundImage","add","toggleTooltip","button","event","tooltipElement","isVisible","type","css","opacity","showTooltip","nextButton","prevButton","assignButtonVisibilityEvents","elements","activeCard","filter","first","focus","assignFocus","activeElement","assignHeroFocus","isUpperCaseMatch","left","right","toUpperCase","HashManager","callbacks","Map","hashValues","setCallback","key","callback","set","append","value","findIndex","v","tuple","split","push","t","get","replaceAll","location","hash","substring","replacementValues","toHashString","join","innerContainerOpenedClass","zeroOpacityClass","optionSelector","optionAnchorSelector","Dropdown","root","utilities","eventHelpers","ownerDocument","rootElement","entranceElement","querySelector","innerContainer","entranceWidthPlaceholder","contentContainerId","dataset","contentContainer","getElementById","handleOutsideKeyDown","body","handleOutsideClick","handleEntranceClick","handleOptionKeyDown","switchSelected","currentTarget","close","setEntranceText","biName","setAttribute","text","isOpen","containsElement","open","entranceWidth","width","remove","biBhvr","outerHeight","documentHeight","height","elementHeight","elementBottomPosition","availableHeight","Math","max","getAvailableHeight","setTimeout","parentElement","suspendStateOfContents","siblings","attr","innerText","trim","contentElement","i","child","target","eventIsEscKeypress","eventIsTabKeypress","eventIsDownKeypress","preventDefault","closest","next","eventIsUpKeypress","prev","eventIsEnterKeypress","pushOntoExecutionStack","headerContainerActiveTabAttribute","activeTabClass","tabContentPositionAttribute","tabInsertPosition","cssOverflowProperty","logAction","tabConfigPageTags","tab","eventType","analytics","capturePageAction","behavior","oneDS","Behavior","TAB","pageTags","tabconfig","actionType","contentTags","areaName","contentName","slotNumber","getAttribute","TabControl","hashManager","suspendContentFunction","logPageTagFactory","id","hasTargeting","headerContainer","headerTabs","querySelectorAll","headerOverflowContainer","headerOverflowDropdownContent","headerOverflowDropdownIcon","contents","tabHash","addEventListener","e","stopPropagation","appendHashElement","closeOverflowDropdown","addHashElementCallback","selectTab","toggle","getTabConfigLogObject","activetab","defaulttab","istargeted","selectedTab","selectedIndex","parseInt","targetingValue","handleTabOverflow","tabHeaderTotalWidth","insertAdjacentElement","outerWidth","overflowWidth","eventNameSilentSignInComplete","TenantAdminPoliciesElementId","UserAgeGroup","DataBoundary","handleAdminPolicies","listener","props","detail","Error","authProperties","aadPrivacySubtext","authType","toLowerCase","policies","jsonPayload","settings","JSON","parse","parseAdminPoliciesInternal","feedbackContainer","AllowFeedback","appliesToControl","occe","removeIfEmpty","Controls","AppliesTo","initializeControl","clickHandlerForExpand","clickHandlerForCollapse","renderOverflowControls","bandedTables","tHead","history","pushState","carouselClass","heroCarouselClass","CardControl","initializeSlickCarousels","forEach","rtl","dir","eq","accessibility","slidesToScroll","infinite","arrows","speed","prevArrow","nextArrow","responsive","breakpoint","initializeCardCarousel","getElementsByClassName","heroElements","assignBackgroundImage","initialBackgroundUrl","_event","_currIndex","nextIndex","$slides","showToolTip","dropdowns","Array","dropdownRootElements","findDropdown","CustomDropdown","isDropdownClosed","elementInDropdown","openDropdown","closeDropdown","closeAllDropdowns","d","tabControls","tabControlElements","suspendTabContent","generateTabControlPageTags","tags","tabControl","highResolutionImages","image","naturalWidth"],"sourceRoot":""}