{"version":3,"sources":["webpack:///./Src/Components/Drawer/Drawer.ts","webpack:///./Src/Components/Navigation/AccessibleMegaMenu.ts","webpack:///./Src/Components/Toggle/Toggle.ts","webpack:///./Src/Components/ToggleClass/ToggleClass.ts","webpack:///./Src/Components/Utilities/GuardedDisable.ts"],"names":["createSelectors","elements","map","element","join","toggleInitialDrawers","$drawers","$","length","each","i","el","LsDrawer","toggle","initialized","$document","document","on","this","buttonSelectors","e","noActivation","noTransition","noDisabling","preventDefault","$handle","currentTarget","data","extend","trigger","undefined","call","$context","closest","context","get","name","attr","find","filter","opening","checked","target","$input","isChecked","prop","fieldSelectors","open","selector","toArray","$drawer","hasClass","close","$handles","removeAttr","handle","handleOpening","toggleClass","$target","drawerOpening","$inputs","addBack","isSupported","removeClass","height","scrollHeight","duration","Math","round","pow","css","enable","activateContent","currentHeight","offsetHeight","addClass","forceRedraw","disable","onTransitionEnd","$focused","off","navSelector","navTriggerSelector","menuSelector","menuTriggerSelector","menuPanelSelector","openClass","openOnMouseover","openDelay","closeDelay","options","mouseFocused","justFocused","mouseHovered","addAccessibilityAttributes","navId","addUniqueId","$nav","$navTriggers","$menus","$menu","$menuTrigger","settings","triggerId","$menuPanel","panelId","not","addEventListeners","onFocusIn","onFocusOut","onKeyDown","onMouseOver","onMouseOut","onMouseDown","onClick","onNavTriggerClick","$activeElement","AccessibleMegaMenus","activeElement","window","clearTimeout","focusTimeoutId","$closestPanel","$menuPanels","openMenu","$closestMenu","cvox","Api","getCurrentNode","setTimeout","node","has","hideAllMenus","relatedTarget","which","Key","Escape","$tabbables","insidePanel","found","UpArrow","DownArrow","LeftArrow","RightArrow","indexOf","$setFocus","index","getNewIndex","eq","first","Tab","shiftKey","toggleTriggersAndPanels","last","Space","Enter","stopPropagation","mouseTimeoutId","$focusable","$panels","isTouch","state","String","addClickOutsideEventListener","onOutsideClick","removeClickOutsideEventListener","pageScrollPosition","documentElement","scrollTop","openMenuTopPosition","offset","top","type","is","keyCode","$ancestors","$triggers","$el","id","uniqueId","defaults","AccessibleMegaMenuPseudos","Boolean","$elements","$element","forward","AccessibleMegaMenu","amm","_window","_document","_$document","_isTouch","navigator","msMaxTouchPoints","AccessibleMegaMenuDefaults","expr","pseudos","createPseudo","dataName","focusable","tabIndex","getAttribute","isTabIndexNaN","isNaN","NaN","tabbable","Number","visible","parents","canBeDisabled","disabled","HTMLAnchorElement","href","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","some","T","selectors","push","onEvent","tab","LsToggle","toggleElement","callback","callbackParameters","cssClass","disableContent","$form","submit","print","refresh","value","val","isPlainObject","Object","keys","values","v","d","toggleProperty","property","location","reload","checkSelectors","textSelectors","$wrapper","compareValue","trim","condition","LsToggleClass","caller","callers","split","disabledBy","LsGuardedDisable"],"mappings":"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","file":"20250325-e800252bc3c64a375113.js","sourcesContent":["import $ = require(\"jquery\");\r\n\r\nimport LsCallback from \"~/Src/Components/Callback/Callback\";\r\nimport LsGuardedDisable from \"~/Src/Components/Utilities/GuardedDisable\";\r\nimport LsToggle from \"~/Src/Components/Toggle/Toggle\";\r\nimport LsTransition from \"~/Src/Components/Transition/Transition\";\r\nimport { forceRedraw } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./Drawer.scss\";\r\n\r\ninterface IEventData {\r\n    noActivation?: boolean;\r\n    noTransition?: boolean;\r\n    noDisabling?: boolean;\r\n}\r\n\r\ninterface IToggleData extends IEventData {\r\n    opening?: boolean;\r\n}\r\n\r\nexport class LsDrawer {\r\n    protected static initialized = false;\r\n    protected static buttonSelectors = ['a[role=\"button\"]:not([aria-disabled=\"true\"])', \"button\", 'input[type=\"button\"]', 'input[type=\"submit\"]'];\r\n    protected static fieldSelectors = ['input:not([type=\"hidden\"])', \"textarea\", \"select\"];\r\n\r\n    public constructor() {\r\n        if (!LsDrawer.initialized) {\r\n            const $document = $(document);\r\n\r\n            $(() => {\r\n                this.toggleInitialDrawers();\r\n            });\r\n            $document.on(\"ajaxPageLoad\", () => {\r\n                this.toggleInitialDrawers();\r\n            });\r\n\r\n            $document.on(\"click\", this.createSelectors(LsDrawer.buttonSelectors), (e: LsJQueryEvent, { noActivation, noTransition, noDisabling }: IEventData = {}) => {\r\n                e.preventDefault();\r\n                const $handle = $(e.currentTarget);\r\n                const data: LsJQueryData = $handle.data();\r\n                LsDrawer.toggle(data[\"target\"], $.extend({ noActivation, noTransition, noDisabling }, data));\r\n                $handle.trigger(\"blur\");\r\n\r\n                if ((data !== undefined) && (\"callback\" in data)) {\r\n                    LsCallback.call(data[\"callback\"], data[\"callbackParameters\"], e.currentTarget);\r\n                }\r\n            });\r\n\r\n            $document.on(\"change\", this.createSelectors(['input[type=\"checkbox\"]']), (e: LsJQueryEvent, { noActivation, noTransition, noDisabling }: IEventData = {}) => {\r\n                const $handle = $(e.currentTarget);\r\n                const data: LsJQueryData = $handle.data();\r\n                LsDrawer.toggle(data[\"target\"], $.extend({ noActivation, noTransition, noDisabling }, data));\r\n\r\n                if ((data !== undefined) && (\"callback\" in data)) {\r\n                    LsCallback.call(data[\"callback\"], data[\"callbackParameters\"], e.currentTarget);\r\n                }\r\n            });\r\n\r\n            $document.on(\"change\", this.createSelectors(['input[type=\"radio\"]']), (e, { noActivation, noTransition, noDisabling }: IEventData = {}) => {\r\n                const $handle = $(e.currentTarget);\r\n                const $context: JQuery = $handle.closest(\"form, body\");\r\n                const context = $context.get(0);\r\n                const name = $handle.attr(\"name\");\r\n                const $radios = $context.find(`input[type=\"radio\"][name=\"${name}\"]`);\r\n                const $radioSet = $radios.filter((i, el: Element): boolean => {\r\n                    return ($(el) as JQuery).closest(\"form, body\").get(0) === context;\r\n                });\r\n                $radioSet.each((i, el: HTMLInputElement) => {\r\n                    const $radio = $(el);\r\n                    const data: LsJQueryData = $radio.data();\r\n                    LsDrawer.toggle(data[\"target\"], $.extend({ opening: el.checked, noActivation, noTransition, noDisabling }, data));\r\n\r\n                    if ((data !== undefined) && (\"callback\" in data)) {\r\n                        LsCallback.call(data[\"callback\"], data[\"callbackParameters\"], el);\r\n                    }\r\n                });\r\n            });\r\n\r\n            // don't set focus on label\r\n            $document.on(\"mousedown\", \"[data-drawer-checkbox-label]\", e => {\r\n                e.preventDefault();\r\n            });\r\n\r\n            // don't set focus on checkbox\r\n            $document.on(\"click\", \"[data-drawer-checkbox-label]\", e => {\r\n                if (e.target === e.currentTarget) {\r\n                    e.preventDefault();\r\n\r\n                    const $input = $(e.currentTarget).find(\"input\");\r\n                    const isChecked = $input.prop(\"checked\");\r\n                    $input.prop(\"checked\", !isChecked);\r\n                    $input.trigger(\"change\");\r\n                }\r\n            });\r\n\r\n            LsDrawer.initialized = true;\r\n        }\r\n    }\r\n\r\n    public static open = (selector: LsJQuerySelector): void => {\r\n        const $drawers = $(selector);\r\n        for (const el of $drawers.toArray()) {\r\n            const $drawer = $(el);\r\n            if (!$drawer.hasClass(\"lsc-open\")) {\r\n                LsDrawer.toggle($drawer, { opening: true });\r\n            }\r\n        }\r\n    }\r\n\r\n    public static close = (selector: LsJQuerySelector): void => {\r\n        const $drawers = $(selector) as JQuery;\r\n        for (const el of $drawers.toArray()) {\r\n            const $drawer = $(el);\r\n            if ($drawer.hasClass(\"lsc-open\")) {\r\n                LsDrawer.toggle($drawer, { opening: false });\r\n            }\r\n        }\r\n    }\r\n\r\n    public static toggle = (selector: LsJQuerySelector, { opening, noActivation, noTransition, noDisabling }: IToggleData = {}): void => {\r\n        const $drawers = $(selector);\r\n\r\n        $drawers.removeAttr(\"data-toggle-on-load\");\r\n\r\n        let $handles: JQuery;\r\n        if (typeof selector === \"string\") {\r\n            $handles = $(`[data-toggle=\"drawer\"][data-target=\"${selector}\"]`);\r\n        }\r\n        if (!$handles || ($handles.length === 0)) {\r\n            $handles = $('[data-toggle=\"drawer\"]').filter((i, handle): boolean => {\r\n                const data: LsJQueryData = $(handle).data();\r\n                if (data.target) {\r\n                    const $targets = $(data.target);\r\n                    for (const target of $targets.toArray()) {\r\n                        for (const drawer of $drawers.toArray()) {\r\n                            if (drawer === target) {\r\n                                return true;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return false;\r\n            });\r\n        }\r\n        if ($handles && ($handles.length > 0)) {\r\n            for (const el of $handles.toArray()) {\r\n                const $handle = $(el);\r\n                const handleOpening = opening === undefined ? !$handle.hasClass(\"lsc-open\") : opening;\r\n                $handle.toggleClass(\"lsc-open\", handleOpening);\r\n            }\r\n        }\r\n\r\n        for (const target of $drawers.toArray()) {\r\n            const $target = $(target);\r\n            if ((opening === undefined) || (!opening === $target.hasClass(\"lsc-open\"))) {\r\n                const drawerOpening = opening === undefined ? !$target.hasClass(\"lsc-open\") : opening;\r\n                const selector = [...LsDrawer.buttonSelectors, ...LsDrawer.fieldSelectors].join(\", \");\r\n                const $inputs = $target.find(selector).addBack(selector);\r\n                if (!noTransition && LsTransition.isSupported) {\r\n                    $target.removeClass(\"lsc-closed\");\r\n                    const height = target.scrollHeight;\r\n                    const duration = Math.round(39 * Math.pow(height, .44));\r\n                    $target.css(\"transition-duration\", `${duration}ms`);\r\n\r\n                    if (drawerOpening) {\r\n                        $target.css(\"height\", height);\r\n                        if (!noDisabling) {\r\n                            LsGuardedDisable.enable($inputs, \"drawer\");\r\n                        }\r\n                        // do not by default set focus on field when drawer opens because mobile keyboard can cover field - per Alonna 2019-10-01\r\n                        // noActivation can be undefined\r\n                        if (noActivation === false) {\r\n                            LsToggle.activateContent($target);\r\n                        }\r\n                        $target.trigger(\"drawerOpen\");\r\n                    } else {\r\n                        const currentHeight = target.offsetHeight;\r\n                        $target.addClass(\"no-transition lsu-tsn-no\");\r\n                        $target.css(\"height\", currentHeight);\r\n                        forceRedraw(target);\r\n                        $target.removeClass(\"no-transition lsu-tsn-no\");\r\n                        $target.css(\"height\", 0);\r\n                        if (!noDisabling) {\r\n                            LsGuardedDisable.disable($inputs, \"drawer\");\r\n                        }\r\n                        $target.trigger(\"drawerClose\");\r\n                    }\r\n\r\n                    $target.on(\"transitionend\", { opening: drawerOpening } as any, LsDrawer.onTransitionEnd);\r\n                } else {\r\n                    $target.toggleClass(\"lsc-closed\", !drawerOpening);\r\n                    if (drawerOpening) {\r\n                        if (!noDisabling) {\r\n                            LsGuardedDisable.enable($inputs, \"drawer\");\r\n                        }\r\n                        // do not by default set focus on field when drawer opens because mobile keyboard can cover field - per Alonna 2019-10-01\r\n                        // noActivation can be undefined\r\n                        if (noActivation === false) {\r\n                            LsToggle.activateContent($target);\r\n                        }\r\n                    } else {\r\n                        const $focused = $target.find(\":focus\");\r\n                        if ($focused.length > 0) {\r\n                            $focused.trigger(\"blur\");\r\n                        }\r\n                        if (!noDisabling) {\r\n                            LsGuardedDisable.disable($inputs, \"drawer\");\r\n                        }\r\n                    }\r\n                }\r\n\r\n                $target.toggleClass(\"no-transition lsu-tsn-no\", !!noTransition); // noTransition can be undefined\r\n                $target.toggleClass(\"lsc-open\", drawerOpening);\r\n                forceRedraw(target);\r\n                $target.removeClass(\"no-transition lsu-tsn-no\");\r\n            }\r\n        }\r\n    }\r\n\r\n    protected createSelectors = (elements: Array<string>): string => {\r\n        const selectors = elements.map(element => `${element}[data-toggle=\"drawer\"]`);\r\n        return selectors.join(\", \");\r\n    }\r\n\r\n    protected static onTransitionEnd = (e: LsJQueryEvent<Element, { opening: boolean }>) => {\r\n        if (e.target === e.currentTarget) {\r\n            const $target = $(e.currentTarget);\r\n            $target.addClass(\"no-transition lsu-tsn-no\");\r\n            $target.css(\"height\", \"\");\r\n            $target.toggleClass(\"lsc-closed\", !e.data || !e.data.opening);\r\n            forceRedraw(e.currentTarget);\r\n            $target.removeClass(\"no-transition lsu-tsn-no\");\r\n            $target.off(\"transitionend\", LsDrawer.onTransitionEnd);\r\n        }\r\n    }\r\n\r\n    protected toggleInitialDrawers = (): void => {\r\n        const $drawers = $(\"[data-drawer][data-toggle-on-load]\");\r\n        if ($drawers.length > 0) {\r\n            $drawers.each((i, el: Element) => {\r\n                LsDrawer.toggle(el);\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nexport default LsDrawer;","/*\r\nCopyright © 2013 Adobe Systems Incorporated.\r\n\r\nLicensed under the Apache License, Version 2.0 (the “License”);\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\nhttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an “AS IS” BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n*/\r\n\r\nimport { Key } from \"ts-keycode-enum\";\r\n\r\nimport { uniqueId } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./AccessibleMegaMenu.scss\";\r\n\r\ninterface IAccessibleMegaMenuOptions {\r\n    navSelector: string; // CSS selector for topmost wrapper of navigation\r\n    navTriggerSelector: string; // CSS selector for button-like element to toggle entire navigation\r\n    menuSelector: string; // CSS selector for wrapper of individual menu within navigation\r\n    menuTriggerSelector: string; // CSS selector for link/button element to toggle individual content\r\n    menuPanelSelector: string; // CSS selector for individual menu content\r\n    openClass: string; // CSS class for the open state\r\n    openOnMouseover: boolean | (() => boolean); // whether menu should open on mouseover\r\n    openDelay: number; // open delay when opening menu via mouseover\r\n    closeDelay: number; // open delay when opening menu via mouseover\r\n    //hoverClass: string; // CSS class for the hover state\r\n    //focusClass: string; // CSS class for the focus state\r\n}\r\n\r\nclass AccessibleMegaMenuDefaults implements IAccessibleMegaMenuOptions {\r\n    public navSelector = \"[data-amm-nav]\";\r\n    public navTriggerSelector = \"[data-amm-nav-trigger]\";\r\n    public menuSelector = \"[data-amm-menu]\";\r\n    public menuTriggerSelector = \"[data-amm-menu-trigger]\";\r\n    public menuPanelSelector = \"[data-amm-menu-panel]\";\r\n    public openClass = \"lsc-amm--open\"; // default css class for the open state\r\n    public openOnMouseover = false; // default setting for whether menu should open on mouseover\r\n    public openDelay = 150; // default open delay when opening menu via mouseover\r\n    public closeDelay = 300; // default open delay when opening menu via mouseover\r\n    //public hoverClass = \"lsc-amm--hover\"; // default css class for the hover state\r\n    //public focusClass = \"lsc-amm--focus\"; // default css class for the focus state\r\n}\r\n\r\nexport class AccessibleMegaMenu {\r\n    protected get openOnMouseover() {\r\n        if (typeof this.settings?.openOnMouseover === \"function\") {\r\n            return this.settings.openOnMouseover();\r\n        }\r\n        return Boolean(this.settings?.openOnMouseover || false);\r\n    }\r\n\r\n    protected $nav: JQuery;\r\n    protected $navTriggers: JQuery;\r\n    protected $menus: JQuery;\r\n    protected $menuPanels: JQuery;\r\n\r\n    protected settings: IAccessibleMegaMenuOptions;\r\n\r\n    protected focusTimeoutId: ReturnType<typeof window.setTimeout>;\r\n    protected mouseTimeoutId: ReturnType<typeof window.setTimeout>;\r\n\r\n    protected mouseFocused = false;\r\n    protected justFocused = false;\r\n\r\n    protected mouseHovered = false;\r\n\r\n    public constructor(el: HTMLElement, options?: Partial<IAccessibleMegaMenuOptions>) {\r\n        this.$nav = $(el);\r\n        const initialized = !!this.$nav.data(\"amm\");\r\n        if (!initialized) {\r\n            this.settings = $.extend({}, AccessibleMegaMenus.defaults, options, this.$nav.data(), this.$nav.data(\"options\"));\r\n            this.$nav.data(\"amm\", this);\r\n\r\n            this.$navTriggers = $(this.settings.navTriggerSelector);\r\n            this.$menus = this.$nav.find(this.settings.menuSelector);\r\n            this.$menuPanels = this.$nav.find(this.settings.menuPanelSelector);\r\n\r\n            const ammp = new AccessibleMegaMenuPseudos();\r\n            this.addAccessibilityAttributes();\r\n            this.addEventListeners();\r\n        }\r\n    }\r\n\r\n    protected addAccessibilityAttributes = () => {\r\n        const navId = this.addUniqueId(this.$nav);\r\n\r\n        this.$navTriggers.attr({ \r\n            \"aria-expanded\": false,\r\n            \"aria-pressed\": false,\r\n            \"aria-controls\": navId,\r\n        });\r\n\r\n        for (const el of this.$menus.toArray()) {\r\n            const $menu = $(el);\r\n\r\n            const $menuTrigger = $menu.find(this.settings.menuTriggerSelector);\r\n            const triggerId = this.addUniqueId($menuTrigger);\r\n\r\n            const $menuPanel = $menu.find(this.settings.menuPanelSelector);\r\n            if ($menuPanel.length > 0) {\r\n                const panelId = this.addUniqueId($menuPanel);\r\n\r\n                $menuTrigger.attr({\r\n                    \"role\": \"button\",\r\n                    \"aria-controls\": panelId,\r\n                    \"aria-expanded\": false,\r\n                    \"tabindex\": 0,\r\n                });\r\n\r\n                $menuPanel.attr({\r\n                    \"role\": \"region\",\r\n                    \"aria-expanded\": false,\r\n                    \"aria-hidden\": true,\r\n                });\r\n\r\n                $menuPanel.not(\"[aria-labelledby]\").attr(\"aria-labelledby\", triggerId);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected addEventListeners = () => {\r\n        this.$nav.on(\"focusin\", `:focusable, ${this.settings.menuPanelSelector}`, this.onFocusIn);\r\n        this.$nav.on(\"focusout\", `:focusable, ${this.settings.menuPanelSelector}`, this.onFocusOut);\r\n        this.$nav.on(\"keydown\", this.onKeyDown);\r\n        this.$nav.on(\"mouseover\", this.onMouseOver);\r\n        this.$nav.on(\"mouseout\", this.onMouseOut);\r\n        this.$nav.on(\"mousedown\", this.onMouseDown);\r\n        this.$nav.on(\"click\", this.onClick);\r\n\r\n        this.$navTriggers.on(\"click\", this.onNavTriggerClick);\r\n\r\n        //if (AccessibleMegaMenus.isTouch) {\r\n        //    this.$nav.on(\"touchmove\", this.touchmoveHandler);\r\n        //}\r\n\r\n        const $activeElement = $(AccessibleMegaMenus.document.activeElement);\r\n        const $closestNav = $activeElement.closest(this.$nav);\r\n        if ($closestNav.length > 0) {\r\n            $activeElement.trigger(\"focusin\");\r\n        }\r\n    }\r\n\r\n    protected onFocusIn = (e: LsJQueryEvent) => {\r\n        AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n        const $closestPanel = $(e.target).closest(this.settings.menuPanelSelector) as JQuery;\r\n        this.justFocused = !this.mouseFocused || (!this.openOnMouseover && this.mouseFocused);\r\n        this.mouseFocused = false;\r\n        if (this.justFocused) {\r\n            const $panels = this.$menuPanels.not($closestPanel).filter(`.${this.settings.openClass}`);\r\n            if ($panels.length > 0) {\r\n                this.openMenu(e);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected onFocusOut = (e: LsJQueryEvent) => {\r\n        this.justFocused = false;\r\n        const $closestMenu = $(e.target).closest(this.settings.menuSelector);\r\n\r\n        if (typeof (AccessibleMegaMenus.window as any).cvox?.Api?.getCurrentNode === \"function\") { // if ChromeVox is running\r\n            this.focusTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n                (window as any).cvox.Api.getCurrentNode((node: Element) => {\r\n                    if ($closestMenu.has(node).length > 0) { // the current node being voiced is in the menu\r\n                        // keep the panel open\r\n                        AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n                    } else {\r\n                        this.focusTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n                            this.hideAllMenus(e);\r\n                        }, 275); // TODO: what is this for? should it be moved to settings?\r\n                    }\r\n                });\r\n            }, 25); // TODO: what is this for? should it be moved to settings?\r\n        } else {\r\n            this.focusTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n                if (!this.mouseFocused || (e as JQuery.EventBase).relatedTarget) {\r\n                    this.hideAllMenus(e);\r\n                }\r\n            }, 300); // TODO: what is this for? should it be moved to settings?\r\n        }\r\n    }\r\n\r\n    protected onKeyDown = (e: LsJQueryEvent) => {\r\n        const $target = $(e.target) as JQuery;\r\n\r\n        // TODO: handle arrow keys on form elements in a menu\r\n\r\n        if (e.which === Key.Escape) {\r\n            this.mouseFocused = false;\r\n            this.hideAllMenus(e);\r\n        } else {\r\n            const $closestMenu = $target.closest(this.settings.menuSelector);\r\n            const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n            const $tabbables = this.$nav.find(\":tabbable\");\r\n            const insidePanel = ($closestMenu.length === 1) && ($closestPanel.length === 1);\r\n            let found = false;\r\n\r\n            if ([Key.UpArrow, Key.DownArrow, Key.LeftArrow, Key.RightArrow].indexOf(e.which) >= 0) {\r\n                e.preventDefault();\r\n                this.mouseFocused = false;\r\n\r\n                let $setFocus: JQuery;\r\n                if ((e.which === Key.UpArrow) || (e.which === Key.DownArrow)) {\r\n                    if (insidePanel) {\r\n                        const $tabbables = $closestMenu.find(\":tabbable\");\r\n                        const index = this.getNewIndex($tabbables, $target, e.which === Key.DownArrow);\r\n                        if (index >= 0) {\r\n                            $setFocus = $tabbables.eq(index);\r\n                        }\r\n                    } else if (e.which === Key.UpArrow) {\r\n                        this.hideAllMenus(e);\r\n                    } else {\r\n                        this.openMenu(e);\r\n                        const $panels = $closestMenu.find(this.settings.menuPanelSelector);\r\n                        $setFocus = $panels.find(\":tabbable\").first();\r\n                    }\r\n                } else if ((e.which === Key.LeftArrow) || (e.which === Key.RightArrow)) {\r\n                    const $menus = this.$menus.filter(\":visible\");\r\n                    const index = this.getNewIndex($menus, $closestMenu, e.which === Key.RightArrow);\r\n                    if (index >= 0) {\r\n                        const $newMenu = $menus.eq(index);\r\n                        $setFocus = $newMenu.find(this.settings.menuTriggerSelector);\r\n                    }\r\n                }\r\n                if ($setFocus?.length === 1) {\r\n                    $setFocus.trigger(\"focus\");\r\n                    found = true;\r\n                }\r\n            } else if (e.which === Key.Tab) {\r\n                this.mouseFocused = false;\r\n                let $setFocus: JQuery;\r\n                if (e.shiftKey && !insidePanel && $target.hasClass(this.settings.openClass)) {\r\n                    this.hideAllMenus(e);\r\n                    const $menus = this.$menus.filter(\":visible\");\r\n                    const index = this.getNewIndex($menus, $closestMenu, !e.shiftKey);\r\n                    if (index >= 0) {\r\n                        const $menu = $menus.eq(index);\r\n                        const $panels = $menu.find(this.settings.menuPanelSelector);\r\n                        if ($panels.length > 0) {\r\n                            this.toggleTriggersAndPanels($menu, true);\r\n                            $setFocus = $menu.find(\":tabbable\").last();\r\n                        }\r\n                    }\r\n                } else {\r\n                    const index = this.getNewIndex($tabbables, $target, !e.shiftKey)\r\n                    if (index >= 0) {\r\n                        $setFocus = $tabbables.eq(index);\r\n                    }\r\n                }\r\n                if ($setFocus?.length === 1) {\r\n                    $setFocus.trigger(\"focus\");\r\n                    found = true;\r\n                }\r\n                if (found) {\r\n                    e.preventDefault();\r\n                }\r\n            } else if ((e.which === Key.Space) || (e.which === Key.Enter)) {\r\n                if (!insidePanel) {\r\n                    const $panels = $closestMenu.find(this.settings.menuPanelSelector);\r\n                    if ($panels.length === 1) {\r\n                        e.preventDefault();\r\n                        e.stopPropagation();\r\n                        if ($target.hasClass(this.settings.openClass)) {\r\n                            this.hideAllMenus(e);\r\n                        } else {\r\n                            this.openMenu(e);\r\n                            this.justFocused = false;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        this.justFocused = false;\r\n    }\r\n\r\n    protected onMouseOver = (e: LsJQueryEvent) => {\r\n        AccessibleMegaMenus.window.clearTimeout(this.mouseTimeoutId);\r\n        this.mouseHovered = true;\r\n\r\n        if (this.openOnMouseover) {\r\n            this.mouseTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n                const $target = $(e.target);\r\n                this.openMenu(e);\r\n            }, this.settings.openDelay);\r\n        }\r\n    }\r\n\r\n    protected onMouseOut = (e: LsJQueryEvent) => {\r\n        AccessibleMegaMenus.window.clearTimeout(this.mouseTimeoutId);\r\n        this.mouseHovered = false;\r\n\r\n        if (this.openOnMouseover) {\r\n            this.mouseTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n                this.hideAllMenus(e);\r\n            }, this.settings.closeDelay);\r\n        }\r\n    }\r\n\r\n    protected onMouseDown = (e: LsJQueryEvent) => {\r\n        const $target = $(e.target);\r\n        const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n        const $focusable = $target.closest(\":focusable\");\r\n\r\n        if (($closestPanel.length > 0) || ($focusable.length > 0)) {\r\n            this.mouseFocused = true;\r\n        }\r\n\r\n        AccessibleMegaMenus.window.clearTimeout(this.mouseTimeoutId);\r\n        this.mouseTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n            AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n        }, 1);\r\n    }\r\n\r\n    protected onClick = (e: LsJQueryEvent) => {\r\n        const $target = $(e.target).closest(\":tabbable\");\r\n\r\n        const $closestMenu = $target.closest(this.settings.menuSelector);\r\n        const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n        const $panels = $closestMenu.find(this.settings.menuPanelSelector);\r\n        const insidePanel = ($closestMenu.length === 1) && ($closestPanel.length === 1);\r\n\r\n        // TODO: fix bug original in plugin - window losing and regaining focus triggers focusin which sets justfocused back to true\r\n        if (!insidePanel && ($panels.length === 1) && (!this.mouseHovered || AccessibleMegaMenus.isTouch || !this.openOnMouseover)) {\r\n            if (!$target.hasClass(this.settings.openClass)) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this.openMenu(e);\r\n                this.justFocused = false;\r\n            } else if (this.justFocused) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this.justFocused = false;\r\n            } else if (!this.mouseHovered || (!AccessibleMegaMenus.isTouch && !this.openOnMouseover)) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this.hideAllMenus(e);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected onNavTriggerClick = () => {\r\n        // TODO: handle multiple nav triggers\r\n        const state = this.$navTriggers.attr(\"aria-expanded\") !== \"true\";\r\n        this.$navTriggers.attr({\r\n            \"aria-expanded\": String(state),\r\n            \"aria-pressed\": String(state),\r\n        });\r\n        this.$nav.toggleClass(\"lsc-amm--open\", state);\r\n    }\r\n\r\n    protected addClickOutsideEventListener = () => {\r\n        AccessibleMegaMenus.$document.on(\"mouseup touchend mspointerup pointerup\", null, this.onOutsideClick); // null selector to satisfy jQuery type definitions\r\n    }\r\n\r\n    protected removeClickOutsideEventListener = () => {\r\n        AccessibleMegaMenus.$document.off(\"mouseup touchend mspointerup pointerup\", this.onOutsideClick);\r\n    }\r\n\r\n    protected onOutsideClick = (e: LsJQueryEvent) => {\r\n        const $closestMenu = $(e.target).closest(this.settings.menuSelector);\r\n        if ($closestMenu.length === 0) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            this.hideAllMenus(e);\r\n        }\r\n    }\r\n\r\n    // TODO: replace with MutationObserver for performance\r\n    //protected addDomAttributeModifiedEventListener = () => {\r\n    //    // Narrator in Windows 8 automatically toggles the aria-expanded property on double tap or click.\r\n    //    // To respond to the change to collapse the panel, we must add a listener for a DOMAttrModified event.\r\n    //    const $panels = this.$menuPanels.filter('[aria-expanded=\"true\"]');\r\n    //    $panels.on(\"DOMAttrModified\", this.onDomAttributeModified);\r\n    //}\r\n    //\r\n    //protected removeDomAttributeModifiedEventListener = () => {\r\n    //    this.$menuPanels.off(\"DOMAttrModified\", this.onDomAttributeModified);\r\n    //}\r\n    //\r\n    //// handle Windows 8 Narrator ExpandCollapse pattern\r\n    //protected onDomAttributeModified = (e: LsJQueryEvent) => {\r\n    //    const originalEvent: { [name: string]: any } = e.originalEvent;\r\n    //    if ((originalEvent.attrName === \"aria-expanded\") && (originalEvent.newValue === \"false\") && $(e.target).hasClass(this.settings.openClass)) {\r\n    //        e.preventDefault();\r\n    //        e.stopPropagation();\r\n    //        this.hideAllMenus(e);\r\n    //    }\r\n    //}\r\n\r\n    protected openMenu = (e: LsJQueryEvent) => {\r\n        this.removeClickOutsideEventListener();\r\n        //this.removeDomAttributeModifiedEventListener();\r\n        AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n\r\n        const $target = $(e.target) as JQuery;\r\n        const $closestMenu = $target.closest(this.settings.menuSelector);\r\n        if ($closestMenu.length > 0) {\r\n            const $menus = $(this.settings.menuSelector).not($closestMenu);\r\n            this.toggleTriggersAndPanels($menus, false);\r\n\r\n            this.toggleTriggersAndPanels($closestMenu, true);\r\n\r\n            const pageScrollPosition = AccessibleMegaMenus.document.documentElement.scrollTop;\r\n            const openMenuTopPosition = $closestMenu.offset().top;\r\n            if (pageScrollPosition > openMenuTopPosition) {\r\n                AccessibleMegaMenus.document.documentElement.scrollTop = openMenuTopPosition;\r\n            }\r\n\r\n            if ((e.type === \"mouseover\") && ($closestMenu.length === 1)) {\r\n                const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n                if ($closestPanel.length === 0) {\r\n                    const $activeElement = this.$nav.find(AccessibleMegaMenus.document.activeElement);\r\n                    if (($activeElement.length > 0) && $target.is(\":tabbable\")) {\r\n                        $target.trigger(\"focus\");\r\n                        this.justFocused = false;\r\n                    }\r\n                }\r\n            }\r\n\r\n            this.addClickOutsideEventListener();\r\n            //this.addDomAttributeModifiedEventListener();\r\n        } else {\r\n            this.toggleTriggersAndPanels(this.$nav, false);\r\n        }\r\n    }\r\n\r\n    protected hideAllMenus = (e: LsJQueryEvent) => {\r\n        this.removeClickOutsideEventListener();\r\n        //this.removeDomAttributeModifiedEventListener();\r\n\r\n        const $menus = this.$menus.has(`.${this.settings.openClass}`);\r\n        if (!(e as JQuery.EventBase).relatedTarget || !($menus.is((e as JQuery.EventBase).relatedTarget) || $menus.has((e as JQuery.EventBase).relatedTarget).length > 0)) {\r\n            if (((e.type === \"mouseout\") || (e.type === \"focusout\")) && ($menus.has(AccessibleMegaMenus.document.activeElement).length > 0)) {\r\n                return;\r\n            }\r\n\r\n            this.toggleTriggersAndPanels($menus, false);\r\n\r\n            //if (((e.type === \"keydown\") && (e.keyCode === Key.Escape)) || (e.type === \"DOMAttrModified\")) {\r\n            if ((e.type === \"keydown\") && (e.keyCode === Key.Escape)) {\r\n                AccessibleMegaMenus.window.setTimeout(() => {\r\n                    //this.$nav.find(this.settings.menuPanelSelector).off(\"DOMAttrModified\", this.onDomAttributeModified);\r\n                    const $trigger = $menus.find(this.settings.menuTriggerSelector).first();\r\n                    $trigger.trigger(\"focus\");\r\n                    this.justFocused = false;\r\n                }, 99); // TODO: what is this for? should it be moved to settings?\r\n            }\r\n        } else if ($menus.length === 0) {\r\n            this.toggleTriggersAndPanels(this.$nav, false);\r\n        }\r\n    }\r\n\r\n    // TODO: what is the precedent for this variable name in other components?\r\n    protected toggleTriggersAndPanels = ($ancestors: JQuery, opening: boolean) => {\r\n        const $panels = $ancestors.find(this.settings.menuPanelSelector);\r\n        if (!opening || ($panels.length > 0)) {\r\n            const $triggers = $ancestors.find(this.settings.menuTriggerSelector);\r\n            $triggers.toggleClass(this.settings.openClass, opening);\r\n            $panels.toggleClass(this.settings.openClass, opening);\r\n            $triggers.attr({ \"aria-expanded\": String(opening) });\r\n            $panels.attr({ \"aria-expanded\": String(opening), \"aria-hidden\": String(!opening) });\r\n        }\r\n    }\r\n\r\n    protected getNewIndex($elements: JQuery, $element: JQuery, forward: boolean) {\r\n        const index = $elements.index($element);\r\n        if ((!forward && (index > 0)) || (forward && (index < $elements.length - 1))) {\r\n            return index + (forward ? 1 : -1);\r\n        }\r\n        return -1;\r\n    }\r\n\r\n    protected addUniqueId = ($el: JQuery) => {\r\n        const el = $el.get(0);\r\n        const id = uniqueId(el);\r\n        el.id = id;\r\n        return id;\r\n    }\r\n}\r\n\r\nexport class AccessibleMegaMenus {\r\n    protected static _window: Window;\r\n    public static get window() {\r\n        return AccessibleMegaMenus._window || (AccessibleMegaMenus._window = window);\r\n    }\r\n\r\n    protected static _document: Document;\r\n    public static get document() {\r\n        return AccessibleMegaMenus._document || (AccessibleMegaMenus._document = document);\r\n    }\r\n\r\n    protected static _$document: JQuery<Document>;\r\n    public static get $document() {\r\n        return AccessibleMegaMenus._$document || (AccessibleMegaMenus._$document = $(AccessibleMegaMenus.document));\r\n    }\r\n\r\n    protected static _isTouch: boolean;\r\n    public static get isTouch() {\r\n        if (AccessibleMegaMenus._isTouch === undefined) {\r\n            AccessibleMegaMenus._isTouch = AccessibleMegaMenus._isTouch = \"ontouchstart\" in window || !!(window.navigator as any).msMaxTouchPoints;\r\n        }\r\n        return AccessibleMegaMenus._isTouch;\r\n    }\r\n\r\n    public static readonly defaults = new AccessibleMegaMenuDefaults();\r\n\r\n    public constructor() {\r\n        $(() => {\r\n            const $navs = $(AccessibleMegaMenus.defaults.navSelector);\r\n            for (const el of $navs.toArray()) {\r\n                const data = $(el).data();\r\n                if (!data?.amm) {\r\n                    const amm = new AccessibleMegaMenu(el);\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    // Handle touch move event on menu\r\n    //protected touchmoveHandler = () => {\r\n    //    this.justMoved = true;\r\n    //}\r\n}\r\n\r\nclass AccessibleMegaMenuPseudos {\r\n    protected static initialized = false;\r\n\r\n    public constructor() {\r\n        if (!AccessibleMegaMenuPseudos.initialized) {\r\n            /* :focusable and :tabbable selectors originally from\r\n            https://raw.github.com/jquery/jquery-ui/master/ui/jquery.ui.core.js */\r\n\r\n            $.extend($.expr.pseudos, {\r\n                data: $.expr.createPseudo((dataName: string) => el => !!$.data(el, dataName)),\r\n\r\n                focusable: (el: Element) => {\r\n                    const tabIndex = el.getAttribute(\"tabindex\");\r\n                    const isTabIndexNaN = isNaN(tabIndex as any ?? NaN);\r\n                    return AccessibleMegaMenuPseudos.focusable(el, isTabIndexNaN);\r\n                },\r\n\r\n                tabbable: (el: Element) => {\r\n                    const tabIndex = el.getAttribute(\"tabindex\");\r\n                    const isTabIndexNaN = isNaN(tabIndex as any ?? NaN);\r\n                    return (isTabIndexNaN || (Number(tabIndex) >= 0)) && AccessibleMegaMenuPseudos.focusable(el, isTabIndexNaN);\r\n                },\r\n            });\r\n        }\r\n    }\r\n\r\n    public static visible(el: Element) {\r\n        if ($.expr.pseudos.visible(el)) {\r\n            const $hidden = $(el).parents().addBack().filter((i, el) => $(el).css(\"visibility\") === \"hidden\");\r\n            return $hidden.length === 0;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public static focusable(el: Element, isTabIndexNaN: boolean) {\r\n        if (AccessibleMegaMenuPseudos.visible(el)) {\r\n            if (AccessibleMegaMenuPseudos.canBeDisabled(el)) {\r\n                return !el.disabled;\r\n            } else if (el instanceof HTMLAnchorElement && el.href) {\r\n                return true;\r\n            }\r\n            return !isTabIndexNaN;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    protected static canBeDisabled(el: Element): el is HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | HTMLButtonElement {\r\n        return [HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement, HTMLButtonElement].some(T => el instanceof T);\r\n    }\r\n}\r\n\r\nexport default AccessibleMegaMenus;","import $ = require(\"jquery\");\r\n\r\nimport LsCallback from \"~/Src/Components/Callback/Callback\";\r\nimport LsGuardedDisable from \"~/Src/Components/Utilities/GuardedDisable\";\r\nimport { forceRedraw } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\ninterface IOnEvent {\r\n    (el: Element, data: { toggle: \"tab\", tab: LsJQuerySelector, target: LsJQuerySelector, state?: boolean, callback?: string }): void;\r\n    (el: Element, data: { toggle: \"class\", target: LsJQuerySelector, cssClass: string, state?: boolean, callback?: string }): void;\r\n    (el: Element, data: { toggle: \"element\", target: LsJQuerySelector, state?: boolean, callback?: string } & IEventData): void;\r\n    (el: Element, data: { toggle: \"submit\", target?: LsJQuerySelector, callback?: string }): void;\r\n    (el: Element, data: { toggle: \"print\" }): void;\r\n    (el: Element, data: { toggle: \"refresh\" }): void;\r\n}\r\n\r\ninterface IEventData {\r\n    noActivation?: boolean;\r\n}\r\n\r\nexport class LsToggle {\r\n    protected static initialized = false;\r\n    protected $document: JQuery<Document>;\r\n\r\n    protected static buttonSelectors = ['a[role=\"button\"]:not([aria-disabled=\"true\"])', \"button\", 'input[type=\"button\"]', 'input[type=\"submit\"]'];\r\n    protected static checkSelectors = ['input[type=\"checkbox\"]', 'input[type=\"radio\"]'];\r\n    protected static textSelectors = ['input[type=\"date\"]', 'input[type=\"datetime-local\"]', 'input[type=\"email\"]', 'input[type=\"password\"]', 'input[type=\"tel\"]', 'input[type=\"text\"]', 'input[type=\"time\"]', \"textarea\"];\r\n    protected static fieldSelectors = ['input:not([type=\"hidden\"])', \"textarea\", \"select\"];\r\n\r\n    public constructor() {\r\n        if (!LsToggle.initialized) {\r\n            this.$document = $(document);\r\n\r\n            this.$document.on(\"click\", this.createSelectors(LsToggle.buttonSelectors), (e, { noActivation }: IEventData = {}) => {\r\n                e.preventDefault();\r\n                const $el = $(e.currentTarget);\r\n                const data = $el.data();\r\n                if (noActivation !== undefined) {\r\n                    data.noActivation = noActivation;\r\n                }\r\n                this.onEvent(e.currentTarget, data as any);\r\n            });\r\n            this.$document.on(\"change\", this.createSelectors(['input[type=\"checkbox\"]']), (e, { noActivation }: IEventData = {}) => {\r\n                const $el = $(e.currentTarget);\r\n                const data = $el.data();\r\n                if (noActivation !== undefined) {\r\n                    data.noActivation = noActivation;\r\n                }\r\n                this.onEvent(e.currentTarget, data as any);\r\n            });\r\n            this.$document.on(\"change\", this.createSelectors(['input[type=\"radio\"]']), (e: LsJQueryEvent<HTMLInputElement>, { noActivation }: IEventData = {}) => {\r\n                const $el = $(e.currentTarget);\r\n                const $context = $el.closest(\"form, body\");\r\n                const context = $context.get(0);\r\n                const name = e.currentTarget.name;\r\n                const $radios = $context.find(`input[type=\"radio\"][name=\"${name}\"]`);\r\n                const $radioSet = $radios.filter((i, el) => {\r\n                    return $(el).closest(\"form, body\").get(0) === context;\r\n                });\r\n                $radioSet.each((i, el: HTMLInputElement) => {\r\n                    const $radio = $(el);\r\n                    const data: LsJQueryData = $radio.data();\r\n                    data.state = el.checked;\r\n                    if (noActivation !== undefined) {\r\n                        data.noActivation = noActivation;\r\n                    }\r\n                    this.onEvent(e.currentTarget, data as any);\r\n                });\r\n            });\r\n\r\n            this.$document.on(\"change\", this.createSelectors([\"select\"]), (e, { noActivation }: IEventData = {}) => {\r\n                const $el = $(e.currentTarget);\r\n                const data: LsJQueryData = $el.data();\r\n                if (noActivation !== undefined) {\r\n                    data.noActivation = noActivation;\r\n                }\r\n                const value = $el.val();\r\n                if ($.isPlainObject(data.target)) {\r\n                    for (const selector of Object.keys(data.target)) {\r\n                        const values = data.target[selector].map(v => String(v));\r\n                        const d = {\r\n                            ...data,\r\n                            target: selector,\r\n                            state: values.indexOf(value) >= 0,\r\n                        };\r\n                        this.onEvent(e.currentTarget, d as any);\r\n                    }\r\n                }\r\n                $el.data(\"prevValue\", value);\r\n            });\r\n\r\n            this.$document.on(\"change\", 'input[type=\"radio\"][data-toggle=\"tab\"]', (e: LsJQueryEvent<HTMLInputElement>, { noActivation }: IEventData = {}) => {\r\n                e.preventDefault();\r\n                const $tabs = $(`input[type=\"radio\"][data-toggle=\"tab\"][name=\"${e.currentTarget.name}\"]`);\r\n                $tabs.each((i, el: HTMLElement) => {\r\n                    const $tab = $(el);\r\n                    const data: LsJQueryData = $tab.data();\r\n                    data.tab = el;\r\n                    data.state = el === e.currentTarget;\r\n                    if (noActivation !== undefined) {\r\n                        data.noActivation = noActivation;\r\n                    }\r\n                    this.onEvent(e.currentTarget, data as any);\r\n                });\r\n            });\r\n\r\n            LsToggle.initialized = true;\r\n        }\r\n    }\r\n\r\n    protected createSelectors = (elements: Array<string>): string => {\r\n        let selectors: Array<string> = [];\r\n        for (let element of elements) {\r\n            for (let toggle of [\"class\", \"element\", \"submit\", \"print\", \"refresh\"]) {\r\n                selectors.push(`${element}[data-toggle=\"${toggle}\"]`);\r\n            }\r\n        }\r\n        return selectors.join(\", \");\r\n    }\r\n\r\n    protected onEvent: IOnEvent = (el: Element, data): void => {\r\n        switch (data.toggle) {\r\n            case \"tab\":\r\n                if ((data.tab !== undefined) && (data.target !== undefined)) {\r\n                    $(data.tab).each((i, el) => LsToggle.toggleClass($(el).closest(\"[data-tab]\"), \"lsc-active\", data.state));\r\n                    $(data.target).each((i, el) => LsToggle.toggleElement($(el), data.state));\r\n                    //$(data.target).find(this.fieldSelectors.join(\", \")).each((i, el) => this.toggleProperty($(el), \"disabled\", !data.state));\r\n                    if ((data.callback !== undefined) && data.state) {\r\n                        LsCallback.call(data.callback, data.callbackParameters, el);\r\n                    }\r\n                }\r\n                break;\r\n            case \"class\":\r\n                $(data.target).each((i, el) => LsToggle.toggleClass($(el), data.cssClass, data.state));\r\n                if ((data.callback !== undefined) && data.state) {\r\n                    LsCallback.call(data.callback, data.callbackParameters, el);\r\n                }\r\n                break;\r\n            case \"element\":\r\n                if (data.target !== undefined) {\r\n                    $(data.target).each((i, el) => {\r\n                        const $target = $(el);\r\n                        LsToggle.toggleElement($target, data.state);\r\n                        LsToggle.disableContent($target, data.state === undefined ? undefined : !data.state);\r\n                        if (!data.noActivation) {\r\n                            LsToggle.activateContent($target);\r\n                        }\r\n                    });\r\n                    if ((data.callback !== undefined) && (data.state !== false)) {\r\n                        LsCallback.call(data.callback, data.callbackParameters, el);\r\n                    }\r\n                }\r\n                break;\r\n            case \"submit\":\r\n                $(data.target || el).each((i, el) => {\r\n                    const $target = $(el);\r\n\r\n                    let $form = $target.closest(\"form\");\r\n\r\n                    if ($form.length === 0) {\r\n                        const id = $target.attr(\"form\");\r\n                        $form = $(`#${id}`);\r\n                    }\r\n\r\n                    if ($form.length > 0) {\r\n                        LsToggle.submit($form);\r\n                    }\r\n                });\r\n                if (data.callback !== undefined) {\r\n                    LsCallback.call(data.callback, data.callbackParameters, el);\r\n                }\r\n                break;\r\n            case \"print\":\r\n                LsToggle.print();\r\n                break;\r\n            case \"refresh\":\r\n                LsToggle.refresh();\r\n                break;\r\n        }\r\n    }\r\n\r\n    public static toggleClass($target: JQuery, cssClass: string, state?: boolean) {\r\n        $target.toggleClass(cssClass, state);\r\n    }\r\n\r\n    public static toggleElement($target: JQuery, state?: boolean) {\r\n        if (state === undefined) {\r\n            state = $target.prop(\"hidden\");\r\n        }\r\n        $target.prop(\"hidden\", !state);\r\n    }\r\n\r\n    public static toggleProperty($target: JQuery, property: string, state?: boolean) {\r\n        if (state === undefined) {\r\n            state = !$target.prop(property);\r\n        }\r\n        $target.prop(property, state);\r\n    }\r\n\r\n    public static submit($target: JQuery) {\r\n        $target.trigger(\"submit\");\r\n    }\r\n\r\n    public static print() {\r\n        window.print();\r\n    }\r\n\r\n    public static refresh() {\r\n        window.location.reload(true);\r\n    }\r\n\r\n    public static activateContent($target: JQuery) {\r\n        const $input = $target.not(\"[data-no-activation]\").find(LsToggle.fieldSelectors.join(\", \")).addBack(LsToggle.fieldSelectors.join(\", \")).not(\"[data-no-activation]\");\r\n        if (($input.length !== 1) || !$target.is(\":visible\") || $input.is(\":disabled\")) {\r\n            return;\r\n        }\r\n        const tabindex = $input.attr(\"tabindex\");\r\n        if (tabindex === \"-1\") {\r\n            return;\r\n        }\r\n        if ($input.is(LsToggle.checkSelectors.join(\", \"))) {\r\n            $input.prop(\"checked\", true);\r\n            $input.trigger(\"focus\");\r\n            $input.trigger(\"change\");\r\n        } else if ($input.is(LsToggle.textSelectors.join(\", \"))) {\r\n            const $wrapper = $input.closest(\".ls-field-wrapper\");\r\n            $wrapper.addClass(\"no-transition lsu-tsn-no\");\r\n            // focus event causes drawer to slide open rather than reveal in Chrome due to scrolling the element into view\r\n            //$input.trigger(\"focus\");\r\n            $input.trigger(\"select\");\r\n            forceRedraw($input.get(0));\r\n            $wrapper.removeClass(\"no-transition lsu-tsn-no\");\r\n        }\r\n    }\r\n\r\n    protected static disableContent($target: JQuery, state?: boolean) {\r\n        if (state === undefined) {\r\n            const $hidden = $target.closest(\"[hidden]\");\r\n            state = $hidden.length > 0;\r\n        }\r\n        const selector = [...LsToggle.buttonSelectors, ...LsToggle.fieldSelectors].join(\", \");\r\n        const $inputs = $target.find(selector).addBack(selector);\r\n        if (state) {\r\n            LsGuardedDisable.disable($inputs, \"ToggleElement\");\r\n        } else {\r\n            LsGuardedDisable.enable($inputs, \"ToggleElement\");\r\n        }\r\n    }\r\n}\r\n\r\nexport default LsToggle;","import $ = require(\"jquery\");\r\n\r\nexport class LsToggleClass {\r\n    protected static initialized = false;\r\n\r\n    public constructor() {\r\n        if (!LsToggleClass.initialized) {\r\n            this.toggleClass(\"[data-toggle-class]\");\r\n\r\n            $(() => {\r\n                this.toggleClass(\"[data-toggle-class]\");\r\n            });\r\n\r\n            $(document).on(\"input blur\", \"[data-toggle-class]\", e => {\r\n                this.toggleClass(e.target);\r\n            });\r\n\r\n            LsToggleClass.initialized = true;\r\n        }\r\n    }\r\n\r\n    protected toggleClass = (selector: LsJQuerySelector) => {\r\n        const $elements = $(selector);\r\n        for (const el of $elements.toArray()) {\r\n            const $el = $(el);\r\n            $el.toggleClass($el.data(\"toggleClass\"), this.compareValue($el));\r\n        }\r\n    }\r\n\r\n    protected compareValue = ($input: JQuery) => {\r\n        var value = ($input.val() as string).trim();\r\n        var condition = $input.data(\"toggleOn\");\r\n        switch (condition) {\r\n            case \"empty\":\r\n            case \"\":\r\n                return value === \"\";\r\n            case \"filled\":\r\n            case \"!empty\":\r\n                return value !== \"\";\r\n            default:\r\n                return value === condition;\r\n        }\r\n    }\r\n}\r\n\r\nexport default LsToggleClass;","import $ = require(\"jquery\");\r\n\r\nexport class LsGuardedDisable {\r\n    public static enable(selector: LsJQuerySelector, caller: string) {\r\n        let $elements = $(selector);\r\n        $elements = $elements.filter(`[data-disabled-by~=\"${caller}\"]`);\r\n        if ($elements.length > 0) {\r\n            for (const el of $elements.toArray()) {\r\n                const $el = $(el);\r\n\r\n                const disabledBy = $el.attr(\"data-disabled-by\");\r\n                let callers = disabledBy.split(/\\s+/);\r\n                callers = callers.filter(v => v && (v !== caller));\r\n                if (callers.length > 0) {\r\n                    $el.attr(\"data-disabled-by\", callers.join(\" \"));\r\n                } else {\r\n                    $el.removeAttr(\"data-disabled-by\");\r\n\r\n                    if (el.disabled === true) {\r\n                        el.disabled = false;\r\n                    } else if (el.disabled === false) {\r\n                        // do nothing\r\n                    } else {\r\n                        $el.attr(\"aria-disabled\", \"false\");\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public static disable(selector: LsJQuerySelector, caller: string) {\r\n        const $elements = $(selector);\r\n        if ($elements.length > 0) {\r\n            for (const el of $elements.toArray()) {\r\n                const $el = $(el);\r\n\r\n                const disabledBy = $el.attr(\"data-disabled-by\");\r\n                $el.attr(\"data-disabled-by\", disabledBy ? `${disabledBy} ${caller}` : caller);\r\n\r\n                if (el.disabled === false) {\r\n                    el.disabled = true;\r\n                } else if (el.disabled === true) {\r\n                    // do nothing\r\n                } else {\r\n                    $el.attr(\"aria-disabled\", \"false\");\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport default LsGuardedDisable;"],"sourceRoot":""}