{"version":3,"sources":["webpack:///./Src/Components/Breakpoints/Breakpoints.ts","webpack:///./Src/Components/Callback/Callback.ts","webpack:///./Src/Components/Hint/Hint.ts","webpack:///./Src/Components/Loading/Loading.ts","webpack:///./Src/Components/Logging/Logger.ts","webpack:///./Src/Components/Modal/Modal.ts","webpack:///./Src/Components/Transition/Transition.ts","webpack:///./Src/Components/Utilities/SessionArray.ts","webpack:///./Src/Components/Utilities/Utilities.ts"],"names":["LsBreakpoint","bp","unit","LsBreakpoints","isBreakpoint","value","log","mq","breakpoint","matches","mediaQuery","window","matchMedia","minMatch","breakpoints","filter","sort","length","maxMatch","Object","keys","some","k","this","_window","LsCallback","call","callbackFunction","callbackParameters","el","parameters","Array","isArray","unshift","apply","$el","$","undefined","_left","offset","left","_top","_width","outerWidth","_height","outerHeight","_xMin","_xMid","width","_xMax","_yMin","top","_yMid","height","_yMax","preventDefault","0","spf48","LsHintOptions","onClick","e","currentTarget","data","onTouch","stopPropagation","is","LsHint","hide","show","initialized","$document","on","clearTitle","_$document","document","arg","options","isEvent","$trigger","defaults","extend","adjacent","position","$template","popup","html","$popup","appendTo","$notch","find","target","map","s","parseInt","openModalByTarget","$target","append","title","openModalByContent","$adjacent","attr","css","prop","forceRedraw","get","popupHeight","popupWidth","adjacentPos","ElementPositioningSystem","windowWidth","documentHeight","popupTop","popupLeft","notchTop","notchLeft","yMin","gap","xMin","xMax","yMax","xMid","yMid","in","removeAttr","Event","each","i","out","setTimeout","trigger","off","overlayId","delay","LsLoading","_document","showOverlay","overlayDisabled","trace","getElementById","LsLoadingOptions","dataset","clearTimeout","timer","isNaN","hideOverlay","loading","enableOverlay","disableOverlay","buttonSelectors","checkSelectors","createSelectors","elements","element","join","logAttributes","attributes","attribute","substr","toLowerCase","replace","m","p1","toUpperCase","v","LsLogger","id","checked","type","label","text","which","HTMLInputElement","HTMLSelectElement","getIdentifier","_$window","_globalLoggerUrl","getLoggerUrl","_userActionLoggerUrl","_exitLoggerUrl","_isChromium","chrome","navigator","userAgent","indexOf","_unloadEvent","isChromium","PageTransitionEvent","_batchUserActions","_debounce","traceLog","postUserActions","maxWait","message","level","globalLoggerUrl","Message","Location","location","href","Level","debug","console","json","JSON","stringify","ajax","url","global","contentType","messages","$window","unloadEvent","postExit","timestamp","Date","toISOString","logs","add","batchUserActions","getTraceData","removeAll","cancel","traceLogs","excerpt","content","stripHtml","escapeHtml","escape","isGlobalLoggerUrl","loggerUrl","a","createElement","postTrace","userActionLoggerUrl","exitLoggerUrl","$token","val","method","async","logger","getAttribute","name","tagName","LsModalWidths","destroyOnClose","loadFromCache","closeCurrent","LsModalDefaults","open","$modal","transition","transitionIn","openCallback","openCallbackParameters","showCallback","showCallbackParameters","close","transitionOut","remove","closeCallback","closeCallbackParameters","hideCallback","hideCallbackParameters","$close","canClose","addClass","initCallback","initCallbackParameters","LsModal","openInitialModals","$modals","uniqueId","LsModals","openModal","ids","unfreezePage","openModalByUrl","closest","closeModal","mousedownTarget","mouseupTarget","every","modal","getModal","setCssVariables","_html","documentElement","_$html","_body","body","_$body","_ids","slice","_scrollbarWidth","measureScrollbar","toggleModal","opening","$m","isParent","contains","isVisible","freezePage","getContext","isInContext","context","Element","findInContext","$html","removeClass","style","setProperty","scrollbarWidth","createModal","extendedOptions","selector","targetElement","querySelector","modalContent","HTMLScriptElement","innerHTML","headers","success","result","complete","openErrorNotificationModal","createNotificationModal","openInformationNotificationModal","openSuccessNotificationModal","openWarningNotificationModal","closeAllModals","isInModal","test","trim","$content","template","jQuery","insertModal","notificationType","$title","origin","$body","LsTransition","originalEvent","propertyName","transitionEnd","transitionBegin","_isSupported","$element","wrapperData","elementData","isSupported","wrapperHeight","innerHeight","elementHeight","one","destroyOnOut","key","values","increment","now","decrement","LsSessionArray","_sessionStorage","sessionStorage","_values","getItem","parse","ex","setItem","getCookie","RegExp","exec","cookie","unescape","setCookie","cname","cvalue","exdays","expires","d","setTime","getTime","toUTCString","prefix","Math","random","toString","offsetHeight","div","overflow","appendChild","offsetWidth","clientWidth","removeChild","generateUUID","w","performance","c","r","floor","debounce","callback","frameId","cancelAnimationFrame","requestAnimationFrame","container","returnValue"],"mappings":"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","file":"20250325-2a32c2208de5d568d1e4.js","sourcesContent":["import $ = require(\"jquery\");\r\n\r\nimport LsLogger from \"~/Src/Components/Logging/Logger\";\r\n\r\nexport enum LsBreakpoint {\r\n    spf0 = 0,\r\n    spf24 = 24,\r\n    spf32 = 32,\r\n    spf40 = 40,\r\n    spf48 = 48,\r\n    spf56 = 56,\r\n    spf64 = 64,\r\n    spf72 = 72,\r\n    spf80 = 80,\r\n    spf88 = 88,\r\n    spf96 = 96,\r\n}\r\n\r\nexport class LsBreakpoints {\r\n    public static bp(bp: LsBreakpoint, unit?: true): string;\r\n    public static bp(bp: LsBreakpoint, unit: false): number;\r\n    public static bp(bp: LsBreakpoint, unit = true) {\r\n        if (LsBreakpoints.isBreakpoint(bp)) {\r\n            const value = (bp * 16) + 1;\r\n            return unit ? `${value}px` : value;\r\n        }\r\n        LsLogger.log(`${bp} is not a valid breakpoint`, \"error\");\r\n    }\r\n\r\n    public static mq(bp: LsBreakpoint) {\r\n        let breakpoint: string;\r\n        if (breakpoint = LsBreakpoints.bp(bp)) {\r\n            return `screen and (min-width: ${breakpoint})`;\r\n        }\r\n    }\r\n\r\n    public static matches(bp: LsBreakpoint) {\r\n        let mediaQuery: string;\r\n        if (mediaQuery = LsBreakpoints.mq(bp)) {\r\n            return window.matchMedia(mediaQuery)?.matches;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public static minMatch(breakpoints: Array<LsBreakpoint>) {\r\n        const matches = breakpoints.filter(bp => LsBreakpoints.matches(bp)).sort();\r\n        if (matches.length > 0) {\r\n            return matches[0];\r\n        }\r\n        return;\r\n    }\r\n\r\n    public static maxMatch(breakpoints: Array<LsBreakpoint>): LsBreakpoint {\r\n        const matches = breakpoints.filter(bp => LsBreakpoints.matches(bp)).sort();\r\n        if (matches.length > 0) {\r\n            return matches[matches.length - 1];\r\n        }\r\n        return;\r\n    }\r\n\r\n    protected static isBreakpoint(bp: any): bp is LsBreakpoint {\r\n        return Object.keys(LsBreakpoint).some(k => LsBreakpoint[k] === bp);\r\n    }\r\n}\r\n\r\nexport default LsBreakpoints;","export type LsCallbackFunction = string | Function;\r\nexport type LsCallbackParameters = { [key: string]: any } | Array<any>;\r\n\r\nexport class LsCallback {\r\n    // ReSharper disable once InconsistentNaming\r\n    protected static _window: Window;\r\n    protected static get window(): Window {\r\n        return this._window || (LsCallback._window = window);\r\n    }\r\n\r\n    public static call(callbackFunction: LsCallbackFunction, callbackParameters: LsCallbackParameters = [], el: Element = null) {\r\n        const parameters: Array<any> = [el];\r\n\r\n        if (Array.isArray(callbackParameters)) {\r\n            parameters.unshift(...callbackParameters);\r\n        } else {\r\n            parameters.unshift(callbackParameters);\r\n        }\r\n\r\n        if ((typeof callbackFunction === \"string\") && (callbackFunction in LsCallback.window)) {\r\n            window[callbackFunction].apply(el, parameters);\r\n        } else if (typeof callbackFunction === \"function\") {\r\n            callbackFunction.apply(el, parameters);\r\n        }\r\n    }\r\n}\r\n\r\nexport default LsCallback;","import $ = require(\"jquery\");\r\n\r\nimport { LsBreakpoints, LsBreakpoint } from \"~/Src/Components/Breakpoints/Breakpoints\";\r\nimport LsModals from \"~/Src/Components/Modal/Modal\";\r\nimport LsTransition from \"~/Src/Components/Transition/Transition\";\r\nimport { forceRedraw } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./Hint.scss\";\r\n\r\nclass ElementPositioningSystem {\r\n    protected $el: JQuery<Element>;\r\n\r\n    // ReSharper disable InconsistentNaming\r\n    protected _left: number;\r\n    protected _top: number;\r\n    protected _width: number;\r\n    protected _height: number;\r\n\r\n    protected _xMin: number;\r\n    protected _xMid: number;\r\n    protected _xMax: number;\r\n    protected _yMin: number;\r\n    protected _yMid: number;\r\n    protected _yMax: number;\r\n    // ReSharper restore InconsistentNaming\r\n\r\n    public constructor(el: Element) {\r\n        this.$el = $(el);\r\n    }\r\n\r\n    protected get left(): number {\r\n        if (this._left === undefined) {\r\n            const { left, top } = this.$el.offset();\r\n            this._left = left;\r\n            this._top = top;\r\n        }\r\n        return this._left;\r\n    }\r\n\r\n    protected get top(): number {\r\n        if (this._top === undefined) {\r\n            const { left, top } = this.$el.offset();\r\n            this._left = left;\r\n            this._top = top;\r\n        }\r\n        return this._top;\r\n    }\r\n\r\n    protected get width(): number {\r\n        if (this._width === undefined) {\r\n            this._width = this.$el.outerWidth();\r\n        }\r\n        return this._width;\r\n    }\r\n\r\n    protected get height(): number {\r\n        if (this._height === undefined) {\r\n            this._height = this.$el.outerHeight();\r\n        }\r\n        return this._height;\r\n    }\r\n\r\n    public get xMin(): number {\r\n        if (this._xMin === undefined) {\r\n            this._xMin = this.left;\r\n        }\r\n        return this._xMin;\r\n    }\r\n\r\n    public get xMid(): number {\r\n        if (this._xMid === undefined) {\r\n            this._xMid = this.left + (this.width / 2);\r\n        }\r\n        return this._xMid;\r\n    }\r\n\r\n    public get xMax(): number {\r\n        if (this._xMax === undefined) {\r\n            this._xMax = this.left + this.width;\r\n        }\r\n        return this._xMax;\r\n    }\r\n\r\n    public get yMin(): number {\r\n        if (this._yMin === undefined) {\r\n            this._yMin = this.top;\r\n        }\r\n        return this._yMin;\r\n    }\r\n\r\n    public get yMid(): number {\r\n        if (this._yMid === undefined) {\r\n            this._yMid = this.top + (this.height / 2);\r\n        }\r\n        return this._yMid;\r\n    }\r\n\r\n    public get yMax(): number {\r\n        if (this._yMax === undefined) {\r\n            this._yMax = this.top + this.height;\r\n        }\r\n        return this._yMax;\r\n    }\r\n}\r\n\r\nexport interface ILsHintOptions {\r\n    readonly target?: string;\r\n    readonly title?: string;\r\n    readonly adjacent?: LsJQuerySelector;\r\n    readonly position?: \"top\" | \"left\" | \"right\" | \"bottom\";\r\n    readonly width?: string;\r\n    readonly preventDefault?: boolean;\r\n    readonly breakpoints?: {\r\n        [bp: number]: string;\r\n    };\r\n}\r\n\r\nexport class LsHintOptions implements ILsHintOptions {\r\n    public readonly width: string = \"\";\r\n    public readonly preventDefault: boolean = true;\r\n    public readonly breakpoints = { 0: \"modal\", [LsBreakpoint.spf48]: \"tooltip\" };\r\n}\r\n\r\nexport class LsHint {\r\n    // ReSharper disable InconsistentNaming\r\n    protected static _$document: JQuery<Document>;\r\n    protected static get $document() {\r\n        return LsHint._$document || (LsHint._$document = $(document));\r\n    }\r\n    // ReSharper restore InconsistentNaming\r\n\r\n    protected static initialized = false;\r\n    protected static gap = 10;\r\n\r\n    public constructor() {\r\n        if (!LsHint.initialized) {\r\n            LsHint.$document.on(\"mouseenter\", '[data-toggle=\"hint\"]:not(input):not(textarea)', LsHint.show);\r\n            LsHint.$document.on(\"mouseleave\", '[data-toggle=\"hint\"]:not(input):not(textarea)', LsHint.hide);\r\n            LsHint.$document.on(\"click\", '[data-toggle=\"hint\"]:not(input):not(textarea)', this.onClick);\r\n            LsHint.$document.on(\"touchstart\", '[data-toggle=\"hint\"]:not(input):not(textarea)', this.onTouch);\r\n            LsHint.$document.on(\"mouseenter\", 'input[data-toggle=\"hint\"], textarea[data-toggle=\"hint\"]', e => LsHint.clearTitle(e.currentTarget));\r\n            LsHint.$document.on(\"focusin\", 'input[data-toggle=\"hint\"], textarea[data-toggle=\"hint\"]', LsHint.show);\r\n            LsHint.$document.on(\"focusout\", 'input[data-toggle=\"hint\"], textarea[data-toggle=\"hint\"]', LsHint.hide);\r\n\r\n            LsHint.initialized = true;\r\n        }\r\n    }\r\n\r\n    public static show(e: LsJQueryEvent, options?: ILsHintOptions);\r\n    public static show(el: LsJQuerySelector, options?: ILsHintOptions);\r\n    public static show(arg: LsJQueryEvent | LsJQuerySelector, options?: ILsHintOptions) {\r\n        if (LsHint.isEvent(arg)) {\r\n            arg.preventDefault();\r\n        }\r\n\r\n        const $trigger = $(LsHint.isEvent(arg) ? arg.currentTarget : arg);\r\n        LsHint.clearTitle($trigger);\r\n\r\n        const defaults = $.extend(\r\n            {\r\n                adjacent: $trigger,\r\n                position: ($trigger.is(\"input, textarea\") ? \"right\" : \"top\") as \"right\" | \"top\",\r\n            },\r\n            new LsHintOptions()\r\n        );\r\n        if (options !== undefined) {\r\n            options = $.extend({}, defaults, options);\r\n        } else {\r\n            options = $.extend({}, defaults, $trigger.data());\r\n        }\r\n\r\n        LsHint.hide();\r\n\r\n        const $template = $(\"#hint-popup-template\");\r\n        if ($template.length > 0) {\r\n            const popup = $template.html();\r\n            const $popup = $(popup).appendTo(\"body\");\r\n\r\n            const $notch = $popup.find(\".lsc-hint-notch\");\r\n\r\n            if (options.target !== undefined) {\r\n                const k = LsBreakpoints.maxMatch(Object.keys(options.breakpoints).map(s => parseInt(s)));\r\n                switch (options.breakpoints[k]) {\r\n                    case \"none\":\r\n                    default:\r\n                        return;\r\n                    case \"modal\":\r\n                        LsModals.openModalByTarget(options.target);\r\n                        return;\r\n                    case \"tooltip\":\r\n                        const $target = $(options.target);\r\n                        if ($target.length === 0) {\r\n                            return;\r\n                        }\r\n                        const html = $target.html();\r\n                        $popup.append(html);\r\n                        break;\r\n                }\r\n            } else if (options.title !== undefined) {\r\n                const k = LsBreakpoints.maxMatch(Object.keys(options.breakpoints).map(s => parseInt(s)));\r\n                switch (options.breakpoints[k]) {\r\n                    case \"none\":\r\n                    default:\r\n                        return;\r\n                    case \"modal\":\r\n                        LsModals.openModalByContent(options.title);\r\n                        return;\r\n                    case \"tooltip\":\r\n                        $popup.append(options.title);\r\n                        break;\r\n                }\r\n            }\r\n\r\n            let $adjacent: JQuery = $(options.adjacent);\r\n            if ($adjacent.length === 0) {\r\n                $adjacent = $trigger;\r\n            }\r\n\r\n            $trigger.data(options);\r\n\r\n            $popup.attr(\"data-position\", options.position);\r\n            $popup.css(\"width\", options.width);\r\n            $popup.prop(\"hidden\", false);\r\n            forceRedraw($popup.get(0));\r\n            const popupHeight = $popup.outerHeight();\r\n            const popupWidth = $popup.outerWidth();\r\n            $popup.prop(\"hidden\", true);\r\n            const adjacentPos = new ElementPositioningSystem($adjacent.get(0));\r\n            const windowWidth = $(window).width();\r\n            const documentHeight = LsHint.$document.height();\r\n            let popupTop, popupLeft, notchTop, notchLeft;\r\n            switch (options.position) {\r\n                case \"top\":\r\n                    popupTop = (adjacentPos.yMin - popupHeight) - LsHint.gap;\r\n                    break;\r\n                case \"left\":\r\n                    popupLeft = (adjacentPos.xMin - popupWidth) - LsHint.gap;\r\n                    break;\r\n                case \"right\":\r\n                    popupLeft = adjacentPos.xMax + LsHint.gap;\r\n                    break;\r\n                case \"bottom\":\r\n                    popupTop = adjacentPos.yMax + LsHint.gap;\r\n                    break;\r\n            }\r\n            switch (options.position) {\r\n                case \"top\":\r\n                case \"bottom\":\r\n                    popupLeft = adjacentPos.xMid - (popupWidth / 2);\r\n                    if (popupLeft < 0) {\r\n                        popupLeft = 0;\r\n                        notchLeft = adjacentPos.xMid;\r\n                    } else if ((popupLeft + popupWidth) > windowWidth) {\r\n                        popupLeft = windowWidth - popupWidth;\r\n                        notchLeft = adjacentPos.xMid - popupLeft;\r\n                    }\r\n                    break;\r\n                case \"left\":\r\n                case \"right\":\r\n                    popupTop = adjacentPos.yMid - (popupHeight / 2);\r\n                    if (popupTop < 0) {\r\n                        popupTop = 0;\r\n                        notchTop = adjacentPos.yMid;\r\n                    } else if ((popupTop + popupHeight) > documentHeight) {\r\n                        popupTop = documentHeight - popupHeight;\r\n                        notchTop = adjacentPos.yMid - popupTop;\r\n                    }\r\n                    break;\r\n            }\r\n            $popup.offset({\r\n                top: popupTop,\r\n                left: popupLeft\r\n            });\r\n            if (notchTop !== undefined) {\r\n                $notch.css(\"top\", notchTop);\r\n            }\r\n            if (notchLeft !== undefined) {\r\n                $notch.css(\"left\", notchLeft);\r\n            }\r\n            LsTransition.in($popup);\r\n\r\n            // enable touch anywhere to close\r\n            LsHint.$document.on(\"touchstart\", LsHint.hide);\r\n        }\r\n    }\r\n\r\n    public static hide = (e?: JQuery.TriggeredEvent) => {\r\n        if (e !== undefined) {\r\n            e.preventDefault();\r\n        }\r\n\r\n        const $popup = $(\".lsc-hint-popup\");\r\n        $popup.each((i, el: Element) => {\r\n            LsTransition.out(el);\r\n        });\r\n\r\n        // clean up in case transition never occurs\r\n        window.setTimeout(() => {\r\n            $popup.trigger(\"transitionend\");\r\n        }, 1000);\r\n\r\n        // disable touch anywhere to close\r\n        LsHint.$document.off(\"touchstart\", LsHint.hide);\r\n    }\r\n\r\n    protected onClick = (e: LsJQueryEvent) => {\r\n        const $trigger = $(e.currentTarget);\r\n        const preventDefault = !($trigger.data(\"preventDefault\") === false);\r\n\r\n        if (preventDefault) {\r\n            e.preventDefault();\r\n        }\r\n    }\r\n\r\n    protected onTouch = (e: LsJQueryEvent) => {\r\n        const $trigger = $(e.currentTarget);\r\n        const preventDefault = !($trigger.data(\"preventDefault\") === false);\r\n\r\n        e.stopPropagation();\r\n        if (preventDefault) {\r\n            e.preventDefault();\r\n        }\r\n\r\n        const $popup = $(\".lsc-hint-popup\");\r\n        if ($popup.is(\":visible\")) {\r\n            LsHint.hide(preventDefault ? e : undefined);\r\n        } else {\r\n            LsHint.show(e);\r\n        }\r\n    }\r\n\r\n    protected static clearTitle(el: LsJQuerySelector) {\r\n        const $trigger = $(el);\r\n        const title = $trigger.attr(\"title\");\r\n        if (title) {\r\n            $trigger.data(\"title\", $trigger.attr(\"title\"));\r\n            $trigger.removeAttr(\"title\");\r\n        }\r\n    }\r\n\r\n    protected static isEvent(e: any): e is LsJQueryEvent {\r\n        return e instanceof $.Event;\r\n    }\r\n}\r\n\r\nexport default LsHint;","import LsLogger from \"~/Src/Components/Logging/Logger\";\r\nimport LsTransition from \"~/Src/Components/Transition/Transition\";\r\n\r\nimport \"./Loading.scss\";\r\n\r\nclass LsLoadingOptions {\r\n    public static overlayId = \"lsLoadingOverlay\";\r\n    public static delay = 100;\r\n}\r\n\r\nexport class LsLoading {\r\n    protected static _window: Window;\r\n    protected static get window() {\r\n        return LsLoading._window || (LsLoading._window = window);\r\n    }\r\n\r\n    protected static _document: Document;\r\n    protected static get document() {\r\n        return LsLoading._document || (LsLoading._document = document);\r\n    }\r\n\r\n    protected static timer: number;\r\n    protected static overlayDisabled = false;\r\n\r\n    public static showOverlay() {\r\n        if (!LsLoading.overlayDisabled) {\r\n            const loading = LsLoading.document.getElementById(LsLoadingOptions.overlayId);\r\n            if (loading) {\r\n                LsLogger.trace(\"Showing loading overlay.\");\r\n                const delay = parseInt(loading.dataset.delay);\r\n                LsLoading.window.clearTimeout(LsLoading.timer);\r\n                LsLoading.timer = LsLoading.window.setTimeout(() => {\r\n                    if (!LsLoading.overlayDisabled) {\r\n                        LsTransition.in(loading);\r\n                    }\r\n                }, isNaN(delay) ? LsLoadingOptions.delay : delay);\r\n            } else {\r\n                LsLogger.trace(\"Loading overlay not found. Not showing loading overlay.\");\r\n                LsLogger.log(`Loading.showOverlay - element [#${LsLoadingOptions.overlayId}] not found`, \"fatal\");\r\n            }\r\n        } else {\r\n            LsLogger.trace(\"Loading overlay disabled. Not showing loading overlay.\");\r\n        }\r\n    }\r\n\r\n    public static hideOverlay() {\r\n        LsLoading.window.clearTimeout(LsLoading.timer);\r\n        const loading = LsLoading.document.getElementById(LsLoadingOptions.overlayId);\r\n        if (loading) {\r\n            LsLogger.trace(\"Hiding loading overlay.\");\r\n            LsTransition.out(loading);\r\n        } else {\r\n            LsLogger.trace(\"Loading overlay not found. Not hiding loading overlay.\");\r\n            LsLogger.log(`Loading.hideOverlay - element [#${LsLoadingOptions.overlayId}] not found`, \"fatal\");\r\n        }\r\n    }\r\n\r\n    public static enableOverlay() {\r\n        LsLogger.trace(\"Enabling loading overlay.\");\r\n        LsLoading.overlayDisabled = false;\r\n    }\r\n\r\n    public static disableOverlay() {\r\n        LsLogger.trace(\"Disabling loading overlay.\");\r\n        LsLoading.overlayDisabled = true;\r\n    }\r\n}\r\n\r\nexport default LsLoading;","import $ = require(\"jquery\");\r\nimport _debounce = require(\"lodash/debounce\");\r\n\r\nimport LsSessionArray from \"~/Src/Components/Utilities/SessionArray\";\r\n\r\ninterface LsTraceLog {\r\n    timestamp: string;\r\n    message: string;\r\n}\r\n\r\nexport type LsLoggerLevels = \"error\" | \"fatal\" | \"info\" | \"warn\" | \"trace\";\r\n\r\nexport class LsLogger {\r\n    // ReSharper disable InconsistentNaming\r\n    protected static _window: Window & typeof globalThis;\r\n    protected static get window() {\r\n        return LsLogger._window || (LsLogger._window = window);\r\n    }\r\n\r\n    protected static _$window: JQuery<Window>;\r\n    protected static get $window() {\r\n        return this._$window || (this._$window = $(LsLogger.window));\r\n    }\r\n\r\n    protected static _document: Document;\r\n    protected static get document() {\r\n        return LsLogger._document || (LsLogger._document = document);\r\n    }\r\n\r\n    protected _$document: JQuery<Document>;\r\n    protected get $document() {\r\n        return this._$document || (this._$document = $(LsLogger.document));\r\n    }\r\n\r\n    protected static _globalLoggerUrl: string;\r\n    protected static get globalLoggerUrl() {\r\n        if (LsLogger._globalLoggerUrl === undefined) {\r\n            LsLogger._globalLoggerUrl = LsLogger.getLoggerUrl(\"lsGlobalLogger\");\r\n        }\r\n        return LsLogger._globalLoggerUrl;\r\n    }\r\n\r\n    protected static _userActionLoggerUrl: string;\r\n    protected static get userActionLoggerUrl() {\r\n        if (LsLogger._userActionLoggerUrl === undefined) {\r\n            LsLogger._userActionLoggerUrl = LsLogger.getLoggerUrl(\"lsUserActionLogger\");\r\n        }\r\n        return LsLogger._userActionLoggerUrl;\r\n    }\r\n\r\n    protected static _exitLoggerUrl: string;\r\n    protected static get exitLoggerUrl() {\r\n        if (LsLogger._exitLoggerUrl === undefined) {\r\n            LsLogger._exitLoggerUrl = LsLogger.getLoggerUrl(\"lsExitLogger\");\r\n        }\r\n        return LsLogger._exitLoggerUrl;\r\n    }\r\n\r\n    protected static _isChromium: boolean;\r\n    protected static get isChromium() {\r\n        LsLogger._isChromium = LsLogger._isChromium || (LsLogger._isChromium = !!(window as any).chrome && (LsLogger.window.navigator.userAgent.indexOf(\"Edge\") === -1));\r\n        return LsLogger._isChromium;\r\n    }\r\n\r\n    protected static _unloadEvent: string;\r\n    protected static get unloadEvent() {\r\n        if (LsLogger._unloadEvent === undefined) {\r\n            LsLogger._unloadEvent = (LsLogger.isChromium || (typeof PageTransitionEvent === \"undefined\")) ? \"beforeunload\" : \"pagehide\"; // must use typeof here for IE 9 & 10\r\n        }\r\n        return LsLogger._unloadEvent;\r\n    }\r\n\r\n    protected static _batchUserActions: { (): void; cancel(): void; }; // using ReturnType<typeof _debounce> breaks syntax highlighting in Chrome Developer Tools\r\n    protected static get batchUserActions() {\r\n        if (LsLogger._batchUserActions === undefined) {\r\n            LsLogger._batchUserActions = _debounce(() => {\r\n                if (LsLogger.traceLog.length >= 5) {\r\n                    LsLogger.postUserActions();\r\n                }\r\n            }, 1000, { maxWait: 10 * 1000 });\r\n        }\r\n        return LsLogger._batchUserActions;\r\n    }\r\n    // ReSharper restore InconsistentNaming\r\n\r\n    protected buttonSelectors = ['a[role=\"button\"]:not([aria-disabled=\"true\"])', \"button\", 'input[type=\"button\"]', 'input[type=\"submit\"]'];\r\n    protected checkSelectors = ['input[type=\"checkbox\"]', 'input[type=\"radio\"]'];\r\n    //protected 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\r\n    protected static initialized = false;\r\n    protected static debug = true;\r\n    protected static traceLog = new LsSessionArray(\"TraceLogs\");\r\n\r\n    public constructor() {\r\n        if (!LsLogger.initialized) {\r\n            this.$document.on(\"click\", this.createSelectors(this.buttonSelectors), e => {\r\n                const $el = $(e.currentTarget);\r\n                const id = $el.data(\"logId\");\r\n                LsLogger.trace(`Clicked button [${id}]${this.logAttributes($el)}`);\r\n            });\r\n\r\n            this.$document.on(\"click\", this.createSelectors(['a:not([role=\"button\"]):not([aria-disabled=\"true\"])']), e => {\r\n                const $el = $(e.currentTarget);\r\n                const id = $el.data(\"logId\");\r\n                LsLogger.trace(`Clicked link [${id}]${this.logAttributes($el)}`);\r\n            });\r\n\r\n            this.$document.on(\"change\", this.createSelectors(this.checkSelectors), e => {\r\n                const $el = $(e.currentTarget);\r\n                const id = $el.data(\"logId\");\r\n                LsLogger.trace(`${(e.currentTarget as HTMLInputElement).checked ? \"Checked\" : \"Unchecked\"} ${(e.currentTarget as HTMLInputElement).type} [${id}]${this.logAttributes($el)}`);\r\n            });\r\n\r\n            this.$document.on(\"change\", this.createSelectors([\"select\"]), e => {\r\n                const $el = $(e.currentTarget);\r\n                const id = $el.data(\"logId\");\r\n                const $selected = $el.find(\":selected\");\r\n                const label = $selected.text();\r\n                LsLogger.trace(`Selected [${label}] from [${id}]${this.logAttributes($el)}`);\r\n            });\r\n\r\n            this.$document.on(\"keydown\", \"form\", e => {\r\n                if ((e.which === 13) && ((e.target instanceof HTMLInputElement) || (e.target instanceof HTMLSelectElement))) {\r\n                    const target = LsLogger.getIdentifier(e.target);\r\n                    const currentTarget = LsLogger.getIdentifier(e.currentTarget);\r\n                    LsLogger.trace(`Pressed enter key on [${target}] in [${currentTarget}]`);\r\n                }\r\n            });\r\n\r\n            this.$document.on(\"mouseenter\", this.createSelectors(['[data-toggle=\"hint\"]']), e => {\r\n                const $el = $(e.currentTarget);\r\n                const id = $el.data(\"logId\");\r\n                LsLogger.trace(`Hovered hint [${id}]${this.logAttributes($el)}`);\r\n            });\r\n\r\n            LsLogger.initialized = true;\r\n        }\r\n\r\n        // none of the above currently differentiate between actual and triggered events\r\n        // would like to log on input focus but determining actual or triggered focus is not possible -- https://github.com/jquery/jquery/issues/1741\r\n    }\r\n\r\n    public static log(message: string, level: LsLoggerLevels = \"error\") {\r\n        if (level === \"trace\") {\r\n            LsLogger.trace(message);\r\n        } else if (LsLogger.globalLoggerUrl) {\r\n            const data = {\r\n                Message: message,\r\n                Location: window.location.href,\r\n                Level: level\r\n            };\r\n\r\n            if (LsLogger.debug && (\"console\" in LsLogger.window)) {\r\n                LsLogger.window.console.log(data);\r\n            }\r\n\r\n            const json = JSON.stringify(data);\r\n            $.ajax({\r\n                url: LsLogger.globalLoggerUrl,\r\n                type: \"POST\",\r\n                global: false,\r\n                contentType: \"application/json\",\r\n                data: json\r\n            });\r\n        }\r\n    }\r\n\r\n    public static trace(...messages: Array<string>) {\r\n        if (LsLogger.debug && (\"console\" in LsLogger.window)) {\r\n            for (const message of messages) {\r\n                LsLogger.window.console.log(message);\r\n            }\r\n        }\r\n\r\n        if (LsLogger.traceLog.length === 0) {\r\n            LsLogger.$window.on(LsLogger.unloadEvent, LsLogger.postExit);\r\n        }\r\n\r\n        const timestamp = (new Date()).toISOString();\r\n        const logs: Array<LsTraceLog> = messages.map(message => ({ timestamp, message }));\r\n\r\n        LsLogger.traceLog.add(...logs);\r\n\r\n        LsLogger.batchUserActions();\r\n    }\r\n\r\n    public static getTraceData() {\r\n        let data = {};\r\n        if (LsLogger.traceLog.length > 0) {\r\n            const logs: Array<LsTraceLog> = LsLogger.traceLog.removeAll();\r\n\r\n            LsLogger.$window.off(LsLogger.unloadEvent, LsLogger.postExit);\r\n            LsLogger.batchUserActions.cancel();\r\n\r\n            const entries = logs.map(log => `[${log.timestamp}] ${log.message}`);\r\n            data = { traceLogs: entries.join(\"\\n \\t\") }; // newline to separate log entries, space for empty caller, tab to separate caller from message\r\n        }\r\n        return data;\r\n    }\r\n\r\n    public static excerpt(content: string, length: number, stripHtml = true, escapeHtml = false) {\r\n        if (content) {\r\n            if (stripHtml) {\r\n                content = $(`<div>${content}</div>`).text();\r\n            }\r\n            if (escapeHtml) {\r\n                content = escape(content);\r\n            }\r\n            const long = content.length > length;\r\n            return long ? `${content.substr(0, length)}...` : content;\r\n        }\r\n        return \"\";\r\n    }\r\n\r\n    public static isGlobalLoggerUrl(url: string) {\r\n        if (url) {\r\n            let loggerUrl = LsLogger.globalLoggerUrl;\r\n            if (loggerUrl) {\r\n                const a = LsLogger.document.createElement(\"a\");\r\n\r\n                a.href = url;\r\n                url = a.href;\r\n\r\n                a.href = loggerUrl;\r\n                loggerUrl = a.href;\r\n\r\n                return url === loggerUrl;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    protected static postUserActions() {\r\n        LsLogger.postTrace(LsLogger.userActionLoggerUrl);\r\n    }\r\n\r\n    protected static postExit() {\r\n        LsLogger.postTrace(LsLogger.exitLoggerUrl);\r\n    }\r\n\r\n    protected static postTrace(loggerUrl: string) {\r\n        if (loggerUrl && LsLogger.traceLog.length > 0) {\r\n            const data = LsLogger.getTraceData();\r\n            const $token = $(\"#LayoutAntiForgeryToken input\");\r\n            if ($token.length > 0) {\r\n                data[$token.attr(\"name\")] = $token.val();\r\n            }\r\n            $.ajax({\r\n                url: loggerUrl,\r\n                method: \"POST\",\r\n                global: false,\r\n                async: LsLogger.isChromium,\r\n                data: data\r\n            });\r\n        }\r\n    }\r\n\r\n    protected createSelectors = (elements: Array<string>) => {\r\n        const selectors = elements.map(element => `${element}[data-log-id]`);\r\n        return selectors.join(\", \");\r\n    }\r\n\r\n    protected logAttributes = ($el: JQuery) => {\r\n        let attributes: string | Array<string> = $el.data(\"logAttributes\");\r\n\r\n        if ((typeof attributes === \"string\") && (attributes.length > 0)) {\r\n            attributes = [attributes];\r\n        }\r\n\r\n        if (Array.isArray(attributes) && (attributes.length > 0)) {\r\n            const data: { [key: string]: any } = {};\r\n\r\n            for (let attribute of attributes) {\r\n                data[attribute] = $el.attr(attribute);\r\n                if (attribute.substr(0, 5) === \"data-\") {\r\n                    const k = attribute.substr(5).toLowerCase().replace(/^-+|-+(\\w)|-+$/g, (m, p1) => (p1 || \"\").toUpperCase());\r\n                    const v = $el.data(k);\r\n                    if (v !== data[attribute]) {\r\n                        data[`data:${k}`] = v;\r\n                    }\r\n                }\r\n            }\r\n\r\n            const pairs = Object.keys(data).map(k => {\r\n                return ` [${k}=${data[k]}]`;\r\n            });\r\n            return pairs.join(\"\");\r\n        }\r\n\r\n        return \"\";\r\n    }\r\n\r\n    public static getIdentifier = (el: Element) => {\r\n        return el.getAttribute(\"data-log-id\") || el.id || (el as HTMLInputElement).name || `unknown ${el.tagName.toLowerCase()}`;\r\n    }\r\n\r\n    protected static getLoggerUrl(id: string) {\r\n        const logger = LsLogger.window.document.getElementById(id);\r\n        if (logger) {\r\n            const url = logger.getAttribute(\"data-url\");\r\n            if (url) {\r\n                return url;\r\n            }\r\n        }\r\n        return undefined;\r\n    }\r\n}\r\n\r\nexport default LsLogger;","import $ = require(\"jquery\");\r\nimport _debounce = require(\"lodash/debounce\");\r\n\r\nimport { LsCallback, LsCallbackFunction, LsCallbackParameters } from \"~/Src/Components/Callback/Callback\";\r\nimport LsLoading from \"~/Src/Components/Loading/Loading\";\r\nimport LsLogger from \"~/Src/Components/Logging/Logger\";\r\nimport LsTransition from \"~/Src/Components/Transition/Transition\";\r\nimport { measureScrollbar, uniqueId } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./Modal.scss\";\r\n\r\nconst LsModalWidths = [\"auto\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as const;\r\n\r\nexport interface ILsModalOptions {\r\n    readonly canClose?: boolean;\r\n    readonly destroyOnClose?: boolean;\r\n    readonly loadFromCache?: boolean;\r\n    readonly closeCurrent?: boolean;\r\n    readonly origin?: LsJQuerySelector;\r\n    readonly width?: typeof LsModalWidths[number];\r\n\r\n    readonly transition?: string;\r\n    readonly transitionIn?: string;\r\n    readonly transitionOut?: string;\r\n\r\n    readonly initCallback?: LsCallbackFunction;\r\n    readonly initCallbackParameters?: LsCallbackParameters;\r\n    readonly openCallback?: LsCallbackFunction;\r\n    readonly openCallbackParameters?: LsCallbackParameters;\r\n    readonly showCallback?: LsCallbackFunction;\r\n    readonly showCallbackParameters?: LsCallbackParameters;\r\n    readonly closeCallback?: LsCallbackFunction;\r\n    readonly closeCallbackParameters?: LsCallbackParameters;\r\n    readonly hideCallback?: LsCallbackFunction;\r\n    readonly hideCallbackParameters?: LsCallbackParameters;\r\n}\r\n\r\nexport class LsModalDefaults implements ILsModalOptions {\r\n    public readonly destroyOnClose: boolean = false;\r\n    public readonly loadFromCache: boolean = true;\r\n    public readonly closeCurrent: boolean = false;\r\n}\r\n\r\nexport class LsModal {\r\n    public readonly id: string;\r\n    public readonly $modal: JQuery;\r\n    public readonly el: Element;\r\n\r\n    public readonly options: ILsModalOptions;\r\n\r\n    public constructor(id: string, options?: ILsModalOptions) {\r\n        this.id = id;\r\n        this.$modal = $(`#${this.id}`);\r\n        this.el = this.$modal.get(0);\r\n        this.$modal.data(\"modal\", this);\r\n\r\n        const $close = this.$modal.find(\"[data-modal-close]\");\r\n        this.options = $.extend(\r\n            { canClose: $close.length > 0 },\r\n            new LsModalDefaults(),\r\n            options,\r\n            this.$modal.data(),\r\n            this.$modal.data(\"options\")\r\n        );\r\n\r\n        if (!this.options.canClose) {\r\n            $close.remove();\r\n        }\r\n\r\n        if (this.options.width) {\r\n            if (LsModalWidths.indexOf(this.options.width) > -1) {\r\n                const $wrapper = this.$modal.find(\"[data-modal-wrapper]\");\r\n                $wrapper.addClass(\"lsc-modal-wrapper--\" + this.options.width);\r\n            } else {\r\n                LsLogger.log(\"unknown width \" + this.options.width + \" does not match one of the expected predefined values\", \"warn\");\r\n            }\r\n        }\r\n\r\n        if (this.options.initCallback) {\r\n            LsCallback.call(this.options.initCallback, this.options.initCallbackParameters, this.el);\r\n        }\r\n        this.$modal.trigger(\"modalInit\");\r\n    }\r\n\r\n    public open = (): void => {\r\n        this.$modal.data(\"destroyOnOut\", this.options.destroyOnClose);\r\n        this.$modal.removeAttr(\"data-open-on-load\");\r\n        if (this.options.transition || this.options.transitionIn) {\r\n            LsTransition.in(this.$modal);\r\n        } else {\r\n            this.$modal.prop(\"hidden\", false);\r\n        }\r\n        if (this.options.openCallback) {\r\n            LsCallback.call(this.options.openCallback, this.options.openCallbackParameters, this.el);\r\n        }\r\n        this.$modal.trigger(\"modalOpen\");\r\n    }\r\n\r\n    public show = (): void => {\r\n        this.$modal.data(\"destroyOnOut\", false);\r\n        if (this.options.transition || this.options.transitionIn) {\r\n            LsTransition.in(this.$modal);\r\n        } else {\r\n            this.$modal.prop(\"hidden\", false);\r\n        }\r\n        if (this.options.showCallback) {\r\n            LsCallback.call(this.options.showCallback, this.options.showCallbackParameters, this.el);\r\n        }\r\n        this.$modal.trigger(\"modalShow\");\r\n    }\r\n\r\n    public close = (): void => {\r\n        this.$modal.data(\"destroyOnOut\", this.options.destroyOnClose);\r\n        if (this.options.transition || this.options.transitionOut) {\r\n            LsTransition.out(this.$modal);\r\n        } else {\r\n            if (this.options.destroyOnClose) {\r\n                this.$modal.remove();\r\n            } else {\r\n                this.$modal.prop(\"hidden\", true);\r\n            }\r\n        }\r\n        if (this.options.closeCallback) {\r\n            LsCallback.call(this.options.closeCallback, this.options.closeCallbackParameters, this.el);\r\n        }\r\n        this.$modal.trigger(\"modalClose\");\r\n    }\r\n\r\n    public hide = (): void => {\r\n        this.$modal.data(\"destroyOnOut\", false);\r\n        if (this.options.transition || this.options.transitionOut) {\r\n            LsTransition.out(this.$modal);\r\n        } else {\r\n            this.$modal.prop(\"hidden\", true);\r\n        }\r\n        if (this.options.hideCallback) {\r\n            LsCallback.call(this.options.hideCallback, this.options.hideCallbackParameters, this.el);\r\n        }\r\n        this.$modal.trigger(\"modalHide\");\r\n    }\r\n}\r\n\r\nexport class LsModals {\r\n    // ReSharper disable InconsistentNaming\r\n    protected static _window: Window;\r\n    protected static get window() {\r\n        return LsModals._window || (LsModals._window = window);\r\n    }\r\n\r\n    protected static _$window: JQuery<Window>;\r\n    protected static get $window() {\r\n        return LsModals._$window || (LsModals._$window = $(LsModals.window));\r\n    }\r\n\r\n    protected static _document: Document;\r\n    protected static get document() {\r\n        return LsModals._document || (LsModals._document = document);\r\n    }\r\n\r\n    protected static _$document: JQuery<Document>;\r\n    protected static get $document() {\r\n        return LsModals._$document || (LsModals._$document = $(LsModals.document));\r\n    }\r\n\r\n    protected static _html: HTMLElement;\r\n    protected static get html() {\r\n        return LsModals._html || (LsModals._html = LsModals.document.documentElement);\r\n    }\r\n\r\n    protected static _$html: JQuery;\r\n    protected static get $html() {\r\n        return LsModals._$html || (LsModals._$html = $(LsModals.html));\r\n    }\r\n\r\n    protected static _body: Element;\r\n    protected static get body() {\r\n        return LsModals._body || (LsModals._body = LsModals.document.body);\r\n    }\r\n\r\n    protected static _$body: JQuery<Element>;\r\n    protected static get $body() {\r\n        return LsModals._$body || (LsModals._$body = $(LsModals.body));\r\n    }\r\n\r\n    protected static _ids: Array<string> = [];\r\n    public static get ids() {\r\n        LsModals._ids = LsModals._ids.filter(id => {\r\n            const $modal = $(`#${id}`);\r\n            const data = $modal.data();\r\n            return ($modal.length > 0) && !!data.modal;\r\n        });\r\n        return LsModals._ids.slice();\r\n    }\r\n    public static set ids(value) {\r\n        LsModals._ids = value;\r\n    }\r\n\r\n    protected static _scrollbarWidth: string;\r\n    public static get scrollbarWidth() {\r\n        if (LsModals._scrollbarWidth === undefined) {\r\n            LsModals._scrollbarWidth = measureScrollbar();\r\n        }\r\n        return LsModals._scrollbarWidth;\r\n    }\r\n    // ReSharper restore InconsistentNaming\r\n\r\n    protected static initialized = false;\r\n    protected static mousedownTarget: Element;\r\n    protected static mouseupTarget: Element;\r\n\r\n    public constructor() {\r\n        if (!LsModals.initialized) {\r\n            $(() => {\r\n                this.openInitialModals();\r\n            });\r\n            LsModals.$document.on(\"ajaxPageLoad\", this.openInitialModals);\r\n\r\n            LsModals.$document.on(\"click\", '[data-toggle=\"modal\"]:not([aria-disabled=\"true\"])', e => {\r\n                const $trigger = $(e.currentTarget);\r\n                const data: LsJQueryData = $trigger.data();\r\n\r\n                const preventDefault = !(data.preventDefault === false);\r\n                if (preventDefault) {\r\n                    e.preventDefault();\r\n                }\r\n\r\n                const href = $trigger.attr(\"href\");\r\n                if (data.target !== undefined) {\r\n                    LsModals.openModalByTarget(data.target, data as ILsModalOptions);\r\n                } else if (data.url !== undefined) {\r\n                    LsModals.openModalByUrl(data.url, data as ILsModalOptions);\r\n                } else if (href && href !== \"#\") {\r\n                    LsModals.openModalByUrl(href, data as ILsModalOptions);\r\n                } else {\r\n                    const $modal = $trigger.closest(\"[data-modal]\");\r\n                    if ($modal.length > 0) {\r\n                        LsModals.closeModal($modal);\r\n                    }\r\n                }\r\n            });\r\n\r\n            LsModals.$document.on(\"mousedown\", \"[data-modal]\", e => {\r\n                LsModals.mousedownTarget = e.target;\r\n            });\r\n\r\n            LsModals.$document.on(\"mouseup\", \"[data-modal]\", e => {\r\n                LsModals.mouseupTarget = e.target;\r\n            });\r\n\r\n            LsModals.$document.on(\"click\", \"[data-modal]\", e => {\r\n                if ([LsModals.mousedownTarget, LsModals.mouseupTarget, e.target].every(el => el === e.currentTarget)) {\r\n                    const ids = LsModals.ids;\r\n                    const $modal = ids.length > 0 ? $(`#${ids[0]}`) : $(e.currentTarget); // close topmost open modal when clicking any overlay\r\n                    const modal = LsModals.getModal($modal);\r\n                    LsLogger.trace(`Clicked modal overlay [${modal.id}]`);\r\n                    if (modal.options.canClose) {\r\n                        LsModals.closeModal($modal);\r\n                    }\r\n                }\r\n            });\r\n\r\n            LsModals.$document.on(\"keyup\", e => {\r\n                const ids = LsModals.ids;\r\n                if ((e.which === 27) && (ids.length > 0)) {\r\n                    const $modal = $(`#${ids[0]}`);\r\n                    const modal = LsModals.getModal($modal);\r\n                    LsLogger.trace(`Pressed escape key to close modal [${modal.id}]`);\r\n                    if (modal.options.canClose) {\r\n                        LsModals.closeModal($modal);\r\n                    }\r\n                }\r\n            });\r\n\r\n            LsModals.$window.on(\"resize\", _debounce(LsModals.setCssVariables, 100));\r\n            LsModals.setCssVariables();\r\n\r\n            LsModals.initialized = true;\r\n        }\r\n    }\r\n\r\n    public static openModalByContent = (content: LsJQuerySelector, options?: ILsModalOptions): void => {\r\n        LsLogger.trace(`Opening modal by content.`);\r\n        const $modal = LsModals.createModal(content, options);\r\n        LsModals.openModal($modal);\r\n    }\r\n\r\n    public static openModalByTarget = (target: string, options?: ILsModalOptions): void => {\r\n        const extendedOptions = $.extend(new LsModalDefaults(), options);\r\n\r\n        const selector = `[data-modal][data-modal-source=\"${target.replace(/\"/g, '\\\\\"')}\"]`;\r\n        const $modal = $(selector);\r\n        if ($modal.length > 0) {\r\n            if (extendedOptions.loadFromCache) {\r\n                LsLogger.trace(`Opening cached modal by target [${target}]`);\r\n                LsModals.openModal($modal);\r\n                return;\r\n            } else {\r\n                $modal.remove();\r\n            }\r\n        }\r\n\r\n        const targetElement = LsModals._document.querySelector(target);\r\n        if (targetElement) {\r\n            LsLogger.trace(`Opening modal by target [${target}]`);\r\n            const modalContent = targetElement instanceof HTMLScriptElement ? targetElement.innerHTML : targetElement;\r\n            const $modal = LsModals.createModal(modalContent, options);\r\n            $modal.attr(\"data-modal-source\", target);\r\n            LsModals.openModal($modal);\r\n        } else {\r\n            LsLogger.trace(`Modal target not found [${target}]`);\r\n        }\r\n    }\r\n\r\n    public static openModalByUrl = (url: string, options?: ILsModalOptions): void => {\r\n        const extendedOptions = $.extend(new LsModalDefaults(), options);\r\n\r\n        const $modal = $(`[data-modal][data-modal-source=\"${url}\"]`);\r\n        if ($modal.length > 0) {\r\n            if (extendedOptions.loadFromCache) {\r\n                LsLogger.trace(`Opening cached modal by URL [${url}]`);\r\n                LsLoading.hideOverlay();\r\n                LsModals.openModal($modal);\r\n                return;\r\n            } else {\r\n                $modal.remove();\r\n            }\r\n        }\r\n\r\n        if (url.length > 0) {\r\n            LsLogger.trace(`Opening modal by URL [${url}]`);\r\n            $.ajax({\r\n                method: \"GET\",\r\n                headers: { \"X-Accept\": \"ls-modal\" },\r\n                url: url,\r\n                success: (result: string): void => {\r\n                    const $modal = LsModals.createModal(result, options);\r\n                    $modal.attr(\"data-modal-source\", url);\r\n                    LsModals.openModal($modal);\r\n                },\r\n                complete: () => {\r\n                    LsLoading.hideOverlay();\r\n                },\r\n            });\r\n        }\r\n    }\r\n\r\n    public static openErrorNotificationModal = (title: string = \"Error\", content: string = \"\", options?: ILsModalOptions): void => {\r\n        LsLogger.trace(`Opening error notification modal [title=${title}][content=${LsLogger.excerpt(content, 50)}]`);\r\n        const $modal = LsModals.createNotificationModal(\"error\", title, content, options);\r\n        LsModals.openModal($modal);\r\n    }\r\n\r\n    public static openInformationNotificationModal = (title: string = \"Information\", content: string = \"\", options?: ILsModalOptions): void => {\r\n        LsLogger.trace(`Opening information notification modal [title=${title}][content=${LsLogger.excerpt(content, 50)}]`);\r\n        const $modal = LsModals.createNotificationModal(\"information\", title, content, options);\r\n        LsModals.openModal($modal);\r\n    }\r\n\r\n    public static openSuccessNotificationModal = (title: string = \"Success\", content: string = \"\", options?: ILsModalOptions): void => {\r\n        LsLogger.trace(`Opening success notification modal [title=${title}][content=${LsLogger.excerpt(content, 50)}]`);\r\n        const $modal = LsModals.createNotificationModal(\"success\", title, content, options);\r\n        LsModals.openModal($modal);\r\n    }\r\n\r\n    public static openWarningNotificationModal = (title: string = \"Warning\", content: string = \"\", options?: ILsModalOptions): void => {\r\n        LsLogger.trace(`Opening warning notification modal [title=${title}][content=${LsLogger.excerpt(content, 50)}]`);\r\n        const $modal = LsModals.createNotificationModal(\"warning\", title, content, options);\r\n        LsModals.openModal($modal);\r\n    }\r\n\r\n    protected static openModal = ($modal: JQuery): void => {\r\n        LsModals.toggleModal($modal, true);\r\n    }\r\n\r\n    public static closeModal = ($modal: JQuery): void => {\r\n        LsModals.toggleModal($modal, false);\r\n    }\r\n\r\n    protected static toggleModal($modal: JQuery, opening: boolean) {\r\n        if ($modal.length > 0) {\r\n            const modal = LsModals.getModal($modal);\r\n\r\n            if (!opening) {\r\n                LsLogger.trace(`Closing modal [${modal.id}]`);\r\n                modal.close();\r\n            }\r\n\r\n            const ids = LsModals.ids.filter(id => {\r\n                if (id === modal.id) {\r\n                    return false;\r\n                }\r\n\r\n                const $m = $(`#${id}`);\r\n                const m = LsModals.getModal($m);\r\n\r\n                const isParent = $.contains(m.el, modal.el);\r\n                const isVisible = $m.is(\":visible\");\r\n\r\n                if (isParent && !isVisible) {\r\n                    m.show();\r\n                } else if (!isParent && isVisible) {\r\n                    if (modal.options.closeCurrent) {\r\n                        m.close();\r\n                        return false;\r\n                    } else {\r\n                        m.hide();\r\n                    }\r\n                }\r\n\r\n                return true;\r\n            });\r\n            LsModals.ids = ids;\r\n\r\n            if (!LsModals.initialized) {\r\n                LsModals.setCssVariables();\r\n            }\r\n\r\n            if (opening) {\r\n                modal.open();\r\n                ids.unshift(modal.id);\r\n                LsModals.ids = ids;\r\n            } else if (ids.length > 0) {\r\n                const $m = $(`#${ids[0]}`);\r\n                const m = LsModals.getModal($m);\r\n                m.show();\r\n            }\r\n\r\n            if (ids.length > 0) {\r\n                LsModals.freezePage();\r\n            } else {\r\n                LsModals.unfreezePage();\r\n            }\r\n        }\r\n    }\r\n\r\n    public static closeAllModals = (): void => {\r\n        LsLogger.trace(`Closing all modals [${LsModals.ids.join(\", \")}]`);\r\n        for (let id of LsModals.ids) {\r\n            const $modal = $(`#${id}`);\r\n            const modal = LsModals.getModal($modal);\r\n            modal.close();\r\n        }\r\n        LsModals.ids = [];\r\n        LsModals.unfreezePage();\r\n    }\r\n\r\n    public static isInModal = (el: LsJQuerySelector): boolean => {\r\n        const $modal = $(el).closest(\"[data-modal]\");\r\n        return $modal.length > 0;\r\n    }\r\n\r\n    public static getContext(el: LsJQuerySelector): JQuery {\r\n        return $(el).closest(\"[data-modal], body\");\r\n    }\r\n\r\n    public static isInContext(el: LsJQuerySelector, context: LsJQuerySelector) {\r\n        const $el: JQuery = $(el);\r\n        if (!(context instanceof Element)) {\r\n            const $context: JQuery = $(context);\r\n            context = $context.get(0);\r\n        }\r\n        return $el.closest(\"[data-modal], body\").get(0) === context;\r\n    }\r\n\r\n    public static findInContext(el: LsJQuerySelector, context: LsJQuerySelector): JQuery {\r\n        const $context = $(context);\r\n        const $el = $context.find(el as any);\r\n        return $el.filter((i, el) => LsModals.isInContext(el, context));\r\n    }\r\n\r\n    protected openInitialModals = (): void => {\r\n        const $modals = $(\"[data-modal][data-open-on-load]\");\r\n        if ($modals.length > 0) {\r\n            $modals.each((i, el) => {\r\n                const $modal = $(el);\r\n                LsLogger.trace(`Opening initial modal [${uniqueId(el)}]`);\r\n                LsModals.openModal($modal);\r\n            });\r\n        } else if (LsModals.ids.length === 0) {\r\n            LsModals.unfreezePage();\r\n        }\r\n    }\r\n\r\n    protected static createModal = (content: LsJQuerySelector, options?: ILsModalOptions): JQuery => {\r\n        let $modal: JQuery;\r\n        if ((typeof content === \"string\") && (!/^</.test(content.trim()))) {\r\n            content = `<div>${content}</div>`;\r\n        }\r\n        const $content = $(content);\r\n        if ($content.is(\"[data-modal]\")) {\r\n            $modal = $content;\r\n        } else {\r\n            const template = $(\"#modal-template\").html();\r\n            $modal = $(template);\r\n            $modal.removeAttr(\"id\");\r\n            $modal.find(\"[data-modal-content]\").append(content as any);\r\n        }\r\n        $modal.prop(\"hidden\", true);\r\n        $modal.data(\"options\", options);\r\n        if (!jQuery.contains(document.documentElement, $modal.get(0))) {\r\n            LsModals.insertModal($modal);\r\n        }\r\n        return $modal;\r\n    }\r\n\r\n    protected static createNotificationModal = (notificationType: \"error\" | \"information\" | \"success\" | \"warning\", title: string, content: LsJQuerySelector, options?: ILsModalOptions): JQuery => {\r\n        const template = $(`#${notificationType}-notification-modal-template`).html();\r\n        const $modal = $(template);\r\n        const $title = $modal.find(\"[data-modal-title]\");\r\n        const $content = $modal.find(\"[data-modal-content]\");\r\n        $modal.removeAttr(\"id\");\r\n        if (title) {\r\n            $title.html(title);\r\n        } else {\r\n            $title.hide();\r\n        }\r\n        $content.append(content as any);\r\n        $modal.prop(\"hidden\", true);\r\n        $modal.data(\"options\", options);\r\n        LsModals.insertModal($modal);\r\n        return $modal;\r\n    }\r\n\r\n    protected static insertModal = ($modal: JQuery): void => {\r\n        const data: LsJQueryData = $modal.data();\r\n        const origin = ((\"options\" in data) && (\"origin\" in data.options) && data.options.origin) || data.origin;\r\n        if (origin !== undefined) {\r\n            LsLogger.trace(`Appending modal [${$modal.attr(\"id\") || \"\"}] to [${origin}]`);\r\n            $modal.appendTo(origin);\r\n        } else {\r\n            LsLogger.trace(`Appending modal [${$modal.attr(\"id\") || \"\"}] to [body]`);\r\n            LsModals.$body.append($modal);\r\n        }\r\n    }\r\n\r\n    protected static getModal = ($modal: JQuery): LsModal => {\r\n        const data = $modal.data();\r\n        return (data && data.modal) || new LsModal(uniqueId($modal.get(0)));\r\n    }\r\n\r\n    protected static freezePage() {\r\n        LsModals.$html.addClass(\"lsc-modal-open\");\r\n    }\r\n\r\n    protected static unfreezePage() {\r\n        LsModals.$html.removeClass(\"lsc-modal-open\");\r\n    }\r\n\r\n    protected static setCssVariables() {\r\n        const height = LsModals.$window.height();\r\n        LsModals.html.style.setProperty(\"--ls-window-height\", `${height}px`);\r\n        //const width = (LsModals.body.clientWidth < LsModals.window.innerWidth) ? LsModals.scrollbarWidth : 0;\r\n        const width = LsModals.scrollbarWidth; // html has overflow-y: scroll\r\n        LsModals.html.style.setProperty(\"--ls-scrollbar-width\", width);\r\n    }\r\n}\r\n\r\nexport default LsModals;","import $ = require(\"jquery\");\r\n\r\nimport { forceRedraw } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./Transition.scss\";\r\n\r\nexport class LsTransition {\r\n    protected static initialized = false;\r\n    protected $document: JQuery<Document>;\r\n\r\n    // ReSharper disable InconsistentNaming\r\n    protected static _isSupported: boolean;\r\n    public static get isSupported(): boolean {\r\n        return LsTransition._isSupported || (LsTransition._isSupported = $(\"html.csstransitions\").length > 0);\r\n    }\r\n    // ReSharper restore InconsistentNaming\r\n\r\n    public constructor() {\r\n        if (!LsTransition.initialized) {\r\n            this.$document = $(document);\r\n\r\n            this.$document.on(\"transitionend\", \".lsc-transition-wrapper\", e => {\r\n                if (e.target === e.currentTarget) {\r\n                    const $el = $(e.currentTarget);\r\n                    $el.addClass(\"no-transition lsu-tsn-no\");\r\n                    $el.css((e.originalEvent as TransitionEvent).propertyName, \"\");\r\n                    forceRedraw(e.currentTarget as Element);\r\n                    $el.removeClass(\"no-transition lsu-tsn-no\");\r\n                }\r\n            });\r\n\r\n            this.$document.on(\"transitionend\", \".lsc-transition.lsc-in.lsc-after\", e => {\r\n                if (e.target === e.currentTarget) {\r\n                    LsTransition.transitionEnd($(e.currentTarget));\r\n                }\r\n            });\r\n\r\n            this.$document.on(\"transitionend\", \".lsc-transition.lsc-out.lsc-after\", e => {\r\n                if (e.target === e.currentTarget) {\r\n                    LsTransition.transitionEnd($(e.currentTarget), true);\r\n                }\r\n            });\r\n\r\n            this.$document.on(\"click\", '[data-toggle=\"transition\"]', e => {\r\n                e.preventDefault();\r\n                const $el = $(e.currentTarget);\r\n                const data = $el.data();\r\n                $(data.in).each((i, el) => LsTransition.transitionBegin(el));\r\n                $(data.out).each((i, el) => LsTransition.transitionBegin(el, true));\r\n            });\r\n\r\n            LsTransition.initialized = true;\r\n        }\r\n    }\r\n\r\n    public static in = (el: LsJQuerySelector): void => {\r\n        LsTransition.transitionBegin(el);\r\n    }\r\n\r\n    public static out = (el: LsJQuerySelector): void => {\r\n        LsTransition.transitionBegin(el, true);\r\n    }\r\n\r\n    protected static transitionBegin = (element: LsJQuerySelector, out = false): void => {\r\n        const $element = $(element);\r\n        if ($element.length > 0) {\r\n            const $wrapper = $element.closest(\".lsc-transition-wrapper\");\r\n\r\n            const wrapperData = $wrapper.length > 0 ? $wrapper.data() : {};\r\n            const elementData = $element.data();\r\n\r\n            const transition: string = elementData.transition || wrapperData.transition || \"lsc-fade\";\r\n            const transitionIn = elementData.transitionIn || wrapperData.transitionIn || transition;\r\n            const transitionOut = elementData.transitionOut || wrapperData.transitionOut || transition;\r\n\r\n            if (out) {\r\n                $element.removeClass(transitionIn);\r\n                $element.addClass(transitionOut);\r\n                $element.addClass(\"lsc-out lsc-before lsc-transitioning\");\r\n                $element.removeClass(\"lsc-in lsc-after\");\r\n            } else {\r\n                $element.prop(\"hidden\", true);\r\n\r\n                forceRedraw($element.get(0));\r\n                $element.removeClass(transitionOut);\r\n                $element.addClass(transitionIn);\r\n                $element.addClass(\"lsc-in lsc-before lsc-transitioning\");\r\n                $element.removeClass(\"lsc-out lsc-after\");\r\n\r\n                $element.prop(\"hidden\", false);\r\n\r\n                if (LsTransition.isSupported && $wrapper.length > 0) {\r\n                    const wrapperHeight = $wrapper.innerHeight();\r\n                    const elementHeight = $element.innerHeight();\r\n\r\n                    $wrapper.addClass(\"no-transition lsu-tsn-no\");\r\n                    $wrapper.css(\"height\", wrapperHeight);\r\n                    forceRedraw($wrapper.get(0));\r\n                    $wrapper.removeClass(\"no-transition lsu-tsn-no\");\r\n                    $wrapper.css(\"height\", elementHeight);\r\n                    if (wrapperHeight === elementHeight) {\r\n                        $element.one(\"transitionend\", e => {\r\n                            $wrapper.addClass(\"no-transition lsu-tsn-no\");\r\n                            $wrapper.css(\"height\", \"\");\r\n                            forceRedraw($wrapper.get(0) as Element);\r\n                            $wrapper.removeClass(\"no-transition lsu-tsn-no\");\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n\r\n            forceRedraw($element.get(0));\r\n            $element.addClass(\"lsc-after\");\r\n            $element.removeClass(\"lsc-before\");\r\n\r\n            if (!LsTransition.isSupported) {\r\n                LsTransition.transitionEnd($element, out);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected static transitionEnd = ($element: JQuery, out = false): void => {\r\n        $element.removeClass(\"lsc-transitioning\");\r\n        if (out) {\r\n            const data: LsJQueryData = $element.data();\r\n            if ((data.destroyOnOut !== undefined) && (data.destroyOnOut !== false)) {\r\n                $element.remove();\r\n            } else {\r\n                $element.prop(\"hidden\", true);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport default LsTransition;","import LsLogger from \"~/Src/Components/Logging/Logger\";\r\n\r\nclass LsSessionArray {\r\n    // ReSharper disable InconsistentNaming\r\n    protected static _sessionStorage: Storage;\r\n    protected static get sessionStorage() {\r\n        return LsSessionArray._sessionStorage || (LsSessionArray._sessionStorage = window.sessionStorage);\r\n    }\r\n\r\n    protected static _isSupported: boolean;\r\n    protected static get isSupported() {\r\n        if (LsSessionArray._isSupported === undefined) {\r\n            LsSessionArray._isSupported = document.querySelector(\"html.sessionstorage\") !== null;\r\n            if (!LsSessionArray._isSupported) {\r\n                LsLogger.trace(\"SessionStorage not supported.\");\r\n            }\r\n        }\r\n        return LsSessionArray._isSupported;\r\n    }\r\n\r\n    protected _values: Array<any>;\r\n    protected get values() {\r\n        if (this._values === undefined) {\r\n            this._values = [];\r\n            if (LsSessionArray.isSupported) {\r\n                try {\r\n                    const json = LsSessionArray.sessionStorage.getItem(this.key);\r\n                    const values = JSON.parse(json);\r\n                    if (Array.isArray(values)) {\r\n                        this._values = values;\r\n                    }\r\n                } catch (ex) {\r\n                    LsLogger.log(ex, \"warn\");\r\n                    //LsLogger.trace(ex);\r\n                }\r\n            }\r\n        }\r\n        return this._values.slice();\r\n    }\r\n    protected set values(value: Array<any>) {\r\n        this._values = value;\r\n        if (LsSessionArray.isSupported) {\r\n            try {\r\n                LsSessionArray.sessionStorage.setItem(this.key, JSON.stringify(this._values));\r\n            } catch (ex) {\r\n                LsLogger.log(ex, \"warn\");\r\n                //LsLogger.trace(ex);\r\n            }\r\n        }\r\n    }\r\n\r\n    public get length() {\r\n        return this.values.length;\r\n    }\r\n    // ReSharper restore InconsistentNaming\r\n\r\n    protected key: string;\r\n\r\n    public constructor(key: string) {\r\n        this.key = key;\r\n    }\r\n\r\n    public add = (...values: Array<any>) => {\r\n        this.values = [...this.values, ...values];\r\n    }\r\n\r\n    public remove = (...values: Array<any>) => {\r\n        this.values = this.values.filter(value => values.indexOf(value) === -1)\r\n    }\r\n\r\n    public removeAll = () => {\r\n        const values = this.values.slice();\r\n        this.values = [];\r\n        return values;\r\n    }\r\n\r\n    public increment = () => {\r\n        this.values = [...this.values, Date.now()];\r\n    }\r\n\r\n    public decrement = () => {\r\n        this.values = this.values.slice(0, -1);\r\n    }\r\n}\r\n\r\nexport default LsSessionArray;","//added for code review\r\nexport var getCookie = (name: string) => {\r\n    try {\r\n        const re = new RegExp(name + \"=([^;]+)\");\r\n        const value = re.exec(document.cookie);\r\n        return (value !== null) ? unescape(value[1]) : null;\r\n    } catch (e) {\r\n        return null;\r\n    }\r\n};\r\n\r\nexport var setCookie = (cname: string, cvalue: string, exdays: number) => {\r\n    let expires;\r\n    if (exdays) {\r\n        const d = new Date();\r\n        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n        expires = `expires=${d.toUTCString()}`;\r\n    }\r\n\r\n    document.cookie = `${cname}=${cvalue}; ${expires}; path=/`;\r\n};\r\n\r\nexport var uniqueId = (el: Element, prefix: string = \"uniqueId\") => {\r\n    const d = document;\r\n    let id = el.id;\r\n    if (!id) {\r\n        do {\r\n            id = `${prefix}-${Math.random().toString(16).slice(2)}`;\r\n        } while (d.getElementById(id));\r\n        el.id = id;\r\n    }\r\n    return id;\r\n}\r\n\r\nexport var forceRedraw = (el: Element) => {\r\n    const __ = (el as HTMLElement).offsetHeight;\r\n}\r\n\r\nexport var measureScrollbar = () => {\r\n    const d = document;\r\n    let div = d.createElement(\"div\");\r\n\r\n    div.style.height = \"99px\";\r\n    div.style.width = \"99px\";\r\n    div.style.overflow = \"scroll\";\r\n    div.style.position = \"absolute\";\r\n    div.style.top = \"-999px\";\r\n\r\n    d.body.appendChild(div);\r\n\r\n    const width = div.offsetWidth - div.clientWidth;\r\n\r\n    d.body.removeChild(div);\r\n    div = null;\r\n\r\n    return `${width}px`;\r\n}\r\n\r\nexport var generateUUID = () => {\r\n    const w = window;\r\n    let d = (new Date()).getTime();\r\n    if ((\"performance\" in w) && (typeof w.performance.now === \"function\")) {\r\n        d += performance.now(); //use high-precision timer if available\r\n    }\r\n    const uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\r\n        const r = (d + (Math.random() * 16)) % 16 | 0;\r\n        d = Math.floor(d / 16);\r\n        return (c === \"x\" ? r : (r & 0x3 | 0x8)).toString(16);\r\n    });\r\n    return uuid;\r\n};\r\n\r\nexport var debounce = (callback: () => void) => {\r\n    const w = window;\r\n    let frameId: ReturnType<typeof window.requestAnimationFrame>;\r\n    return () => {\r\n        w.cancelAnimationFrame(frameId);\r\n        frameId = w.requestAnimationFrame(callback);\r\n    };\r\n}\r\n\r\nexport function includes(container: Array<any>, value: any) {\r\n    var returnValue = false;\r\n    var pos = container.indexOf(value);\r\n    if (pos >= 0) {\r\n        returnValue = true;\r\n    }\r\n    return returnValue;\r\n}"],"sourceRoot":""}