{"version":3,"file":"esfaenza-ngx-introjs.mjs","sources":["../../../projects/ngx-introjs/src/lib/intro-js.directive.ts","../../../projects/ngx-introjs/src/lib/intro-js.module.ts","../../../projects/ngx-introjs/src/lib/models/DOMEvent.ts","../../../projects/ngx-introjs/src/lib/models/IntroJsImplementation.ts","../../../projects/ngx-introjs/src/lib/models/IntroJs.ts","../../../projects/ngx-introjs/src/lib/intro-js.service.ts","../../../projects/ngx-introjs/src/public-api.ts","../../../projects/ngx-introjs/src/esfaenza-ngx-introjs.ts"],"sourcesContent":["import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[intro]'\r\n})\r\nexport class IntroJsDirective {\r\n  @Input('intro') Intro: any;\r\n  @Input() Order: number;\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2) { \r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.renderer.setAttribute(this.el.nativeElement, 'data-intro', this.Intro[this.Order.toString()] );\r\n    this.renderer.setAttribute(this.el.nativeElement, 'data-intro-group', this.Intro[\"Group\"] );\r\n    this.renderer.setAttribute(this.el.nativeElement, 'data-step', this.Order.toString() );\r\n  }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IntroJsDirective } from './intro-js.directive';\r\n\r\n@NgModule({\r\n  declarations: [IntroJsDirective],\r\n  imports: [CommonModule],\r\n  exports: [IntroJsDirective]\r\n})\r\nexport class IntroJsModule { }\r\n","export class DOMEvent {\r\n    events_key = 'introjs_event';\r\n    constructor() { }\r\n    private _stamp(obj, key = 'introjs-stamp') {\r\n        let keys = {};\r\n        // each group increments from 0\r\n        keys[key] = keys[key] || 0;\r\n        // stamp only once per object\r\n        if (obj[key] === undefined) {\r\n            // increment key for each new object\r\n            obj[key] = keys[key]++;\r\n        }\r\n        return obj[key];\r\n    }\r\n    _id(obj, type, listener, context) {\r\n        return type + this._stamp(listener) + (context ? '_' + this._stamp(context) : '');\r\n    }\r\n    public on(obj, type, listener, context, useCapture) {\r\n        let id = this._id.apply(this, arguments);\r\n        let handler = (e) => {\r\n            return listener.call(context || obj, e || window.event);\r\n        };\r\n        if ('addEventListener' in obj) {\r\n            obj.addEventListener(type, handler, useCapture);\r\n        }\r\n        else if ('attachEvent' in obj) {\r\n            obj.attachEvent('on' + type, handler);\r\n        }\r\n        obj[this.events_key] = obj[this.events_key] || {};\r\n        obj[this.events_key][id] = handler;\r\n    }\r\n    public off(obj, type, listener, context, useCapture) {\r\n        let id = this._id.apply(this, arguments);\r\n        let handler = obj[this.events_key] && obj[this.events_key][id];\r\n        if (!handler) {\r\n            return;\r\n        }\r\n        if ('removeEventListener' in obj) {\r\n            obj.removeEventListener(type, handler, useCapture);\r\n        }\r\n        else if ('detachEvent' in obj) {\r\n            obj.detachEvent('on' + type, handler);\r\n        }\r\n        obj[this.events_key][id] = null;\r\n    }\r\n}\r\n","import { IntroJsOptions } from './IntroJsOptions';\r\nimport { DOMEvent } from './DOMEvent';\r\nexport class IntroJsImplementation {\r\n    private DOMEvent;\r\n    public _targetElement: any;\r\n    public _introItems: any[];\r\n    public _options: IntroJsOptions;\r\n    public _currentStep: any;\r\n    public _currentStepNumber: any;\r\n    public _introCompleteCallback: any;\r\n    public _introBeforeChangeCallback: any;\r\n    public _introBeforeExitCallback: any;\r\n    public _introExitCallback: any;\r\n    public _introChangeCallback: any;\r\n    public _introAfterChangeCallback: any;\r\n    public _lastShowElementTimer: any;\r\n    public _introSkipCallback: any;\r\n    public _hintCloseCallback: any;\r\n    public _hintsAddedCallback: any;\r\n    public _hintClickCallback: any;\r\n    public _direction: any;\r\n    constructor(obj) {\r\n        this._targetElement = obj;\r\n        this._introItems = [];\r\n        this.DOMEvent = new DOMEvent();\r\n        this._options = {\r\n            /* Next button label in tooltip box */\r\n            nextLabel: 'Next &rarr;',\r\n            /* Previous button label in tooltip box */\r\n            prevLabel: '&larr; Back',\r\n            /* Skip button label in tooltip box */\r\n            skipLabel: 'Skip',\r\n            /* Done button label in tooltip box */\r\n            doneLabel: 'Done',\r\n            /* Hide previous button in the first step? Otherwise, it will be disabled button. */\r\n            hidePrev: false,\r\n            /* Hide next button in the last step? Otherwise, it will be disabled button. */\r\n            hideNext: false,\r\n            /* Default tooltip box position */\r\n            tooltipPosition: 'bottom',\r\n            /* Next CSS class for tooltip boxes */\r\n            tooltipClass: '',\r\n            /* CSS class that is added to the helperLayer */\r\n            highlightClass: '',\r\n            /* Close introduction when pressing Escape button? */\r\n            exitOnEsc: true,\r\n            /* Close introduction when clicking on overlay layer? */\r\n            exitOnOverlayClick: true,\r\n            /* Show step numbers in introduction? */\r\n            showStepNumbers: true,\r\n            /* Let user use keyboard to navigate the tour? */\r\n            keyboardNavigation: true,\r\n            /* Show tour control buttons? */\r\n            showButtons: true,\r\n            /* Show tour bullets? */\r\n            showBullets: true,\r\n            /* Show tour progress? */\r\n            showProgress: false,\r\n            /* Scroll to highlighted element? */\r\n            scrollToElement: true,\r\n            /*\r\n             * Should we scroll the tooltip or target element?\r\n             *\r\n             * Options are: 'element' or 'tooltip'\r\n             */\r\n            scrollTo: 'element',\r\n            /* Padding to add after scrolling when element is not in the viewport (in pixels) */\r\n            scrollPadding: 30,\r\n            /* Set the overlay opacity */\r\n            overlayOpacity: 0.8,\r\n            /* Precedence of positions, when auto is enabled */\r\n            positionPrecedence: ['bottom', 'top', 'right', 'left'],\r\n            /* Disable an interaction with element? */\r\n            disableInteraction: false,\r\n            /* Set how much padding to be used around helper element */\r\n            helperElementPadding: 10,\r\n            /* Default hint position */\r\n            hintPosition: 'top-middle',\r\n            /* Hint button label */\r\n            hintButtonLabel: 'Got it',\r\n            /* Adding animation to hints? */\r\n            hintAnimation: true,\r\n            /* additional classes to put on the buttons */\r\n            buttonClass: 'introjs-button',\r\n            steps: null,\r\n            hints: null\r\n        };\r\n    }\r\n    public _introForElement(targetElm, group) {\r\n        const allIntroSteps = targetElm.querySelectorAll('*[data-intro]');\r\n        let introItems = [];\r\n        if (this._options.steps) {\r\n            // use steps passed programmatically\r\n            this._forEach(this._options.steps, (step) => {\r\n                const currentItem = this._cloneObject(step);\r\n                // set the step\r\n                currentItem.step = introItems.length + 1;\r\n                // use querySelector function only when developer used CSS selector\r\n                if (typeof (currentItem.element) === 'string') {\r\n                    // grab the element with given selector from the page\r\n                    currentItem.element = document.querySelector(currentItem.element);\r\n                }\r\n                // intro without element\r\n                if (typeof (currentItem.element) === 'undefined' || currentItem.element === null) {\r\n                    let floatingElementQuery = document.querySelector('.introjsFloatingElement');\r\n                    if (floatingElementQuery === null) {\r\n                        floatingElementQuery = document.createElement('div');\r\n                        floatingElementQuery.className = 'introjsFloatingElement';\r\n                        document.body.appendChild(floatingElementQuery);\r\n                    }\r\n                    currentItem.element = floatingElementQuery;\r\n                    currentItem.position = 'floating';\r\n                }\r\n                currentItem.scrollTo = currentItem.scrollTo || this._options.scrollTo;\r\n                if (typeof (currentItem.disableInteraction) === 'undefined') {\r\n                    currentItem.disableInteraction = this._options.disableInteraction;\r\n                }\r\n                if (currentItem.element !== null) {\r\n                    introItems.push(currentItem);\r\n                }\r\n            }, null);\r\n        } else {\r\n            // use steps from data-* annotations\r\n            const elmsLength = allIntroSteps.length;\r\n            let disableInteraction;\r\n            // if there's no element to intro\r\n            if (elmsLength < 1) {\r\n                return false;\r\n            }\r\n            this._forEach(allIntroSteps, (currentElement) => {\r\n                // PR #80\r\n                // start intro for groups of elements\r\n                if (group && (currentElement.getAttribute('data-intro-group') !== group)) {\r\n                    return;\r\n                }\r\n                // skip hidden elements\r\n                if (currentElement.style.display === 'none') {\r\n                    return;\r\n                }\r\n                const step = parseInt(currentElement.getAttribute('data-step'), 10);\r\n                if (typeof (currentElement.getAttribute('data-disable-interaction')) !== 'undefined') {\r\n                    disableInteraction = !!currentElement.getAttribute('data-disable-interaction');\r\n                } else {\r\n                    disableInteraction = this._options.disableInteraction;\r\n                }\r\n                if (step > 0) {\r\n                    introItems[step - 1] = {\r\n                        element: currentElement,\r\n                        intro: currentElement.getAttribute('data-intro'),\r\n                        step: parseInt(currentElement.getAttribute('data-step'), 10),\r\n                        tooltipClass: currentElement.getAttribute('data-tooltipclass'),\r\n                        highlightClass: currentElement.getAttribute('data-highlightclass'),\r\n                        position: currentElement.getAttribute('data-position') || this._options.tooltipPosition,\r\n                        scrollTo: currentElement.getAttribute('data-scrollto') || this._options.scrollTo,\r\n                        disableInteraction\r\n                    };\r\n                }\r\n            }, null);\r\n            // next add intro items without data-step\r\n            // todo: we need a cleanup here, two loops are redundant\r\n            let nextStep = 0;\r\n            this._forEach(allIntroSteps, (currentElement) => {\r\n                // PR #80\r\n                // start intro for groups of elements\r\n                if (group && (currentElement.getAttribute('data-intro-group') !== group)) {\r\n                    return;\r\n                }\r\n                if (currentElement.getAttribute('data-step') === null) {\r\n                    while (true) {\r\n                        if (typeof introItems[nextStep] === 'undefined') {\r\n                            break;\r\n                        } else {\r\n                            nextStep++;\r\n                        }\r\n                    }\r\n                    if (typeof (currentElement.getAttribute('data-disable-interaction')) !== 'undefined') {\r\n                        disableInteraction = !!currentElement.getAttribute('data-disable-interaction');\r\n                    } else {\r\n                        disableInteraction = this._options.disableInteraction;\r\n                    }\r\n                    introItems[nextStep] = {\r\n                        element: currentElement,\r\n                        intro: currentElement.getAttribute('data-intro'),\r\n                        step: nextStep + 1,\r\n                        tooltipClass: currentElement.getAttribute('data-tooltipclass'),\r\n                        highlightClass: currentElement.getAttribute('data-highlightclass'),\r\n                        position: currentElement.getAttribute('data-position') || this._options.tooltipPosition,\r\n                        scrollTo: currentElement.getAttribute('data-scrollto') || this._options.scrollTo,\r\n                        disableInteraction\r\n                    };\r\n                }\r\n            }, null);\r\n        }\r\n        // removing undefined/null elements\r\n        const tempIntroItems = [];\r\n        for (let z = 0; z < introItems.length; z++) {\r\n            if (introItems[z]) {\r\n                // copy non-falsy values to the end of the array\r\n                tempIntroItems.push(introItems[z]);\r\n            }\r\n        }\r\n        introItems = tempIntroItems;\r\n        // Ok, sort all items with given steps\r\n        introItems.sort((a, b) => {\r\n            return a.step - b.step;\r\n        });\r\n        // set it to the introJs object\r\n        this._introItems = introItems;\r\n        // add overlay layer to the page\r\n        if (this._addOverlayLayer(targetElm)) {\r\n            // then, start the show\r\n            this._nextStep();\r\n            if (this._options.keyboardNavigation) {\r\n                this.DOMEvent.on(window, 'keydown', this._onKeyDown, this, true);\r\n            }\r\n            // for window resize\r\n            this.DOMEvent.on(window, 'resize', this._onResize, this, true);\r\n        }\r\n        return false;\r\n    }\r\n    private _onResize() {\r\n        this._refresh();\r\n    }\r\n    private _onKeyDown(e) {\r\n        let code = (e.code === null) ? e.which : e.code;\r\n        // if code/e.which is null\r\n        if (code === null) {\r\n            code = (e.charCode === null) ? e.keyCode : e.charCode;\r\n        }\r\n        if ((code === 'Escape' || code === 27) && this._options.exitOnEsc === true) {\r\n            // escape key pressed, exit the intro\r\n            // check if exit callback is defined\r\n            this._exitIntro(this._targetElement, null);\r\n        } else if (code === 'ArrowLeft' || code === 37) {\r\n            // left arrow\r\n            this._previousStep();\r\n        } else if (code === 'ArrowRight' || code === 39) {\r\n            // right arrow\r\n            this._nextStep();\r\n        } else if (code === 'Enter' || code === 13) {\r\n            // srcElement === ie\r\n            const target = e.target || e.srcElement;\r\n            if (target && target.className.match('introjs-prevbutton')) {\r\n                // user hit enter while focusing on previous button\r\n                this._previousStep();\r\n            } else if (target && target.className.match('introjs-skipbutton')) {\r\n                // user hit enter while focusing on skip button\r\n                if (this._introItems.length - 1 === this._currentStep && typeof (this._introCompleteCallback) === 'function') {\r\n                    this._introCompleteCallback();\r\n                }\r\n                this._exitIntro(this._targetElement, null);\r\n            } else if (target && target.getAttribute('data-stepnumber')) {\r\n                // user hit enter while focusing on step bullet\r\n                target.click();\r\n            } else {\r\n                // default behavior for responding to enter\r\n                this._nextStep();\r\n            }\r\n            // prevent default behaviour on hitting Enter, to prevent steps being skipped in some browsers\r\n            if (e.preventDefault) {\r\n                e.preventDefault();\r\n            } else {\r\n                e.returnValue = false;\r\n            }\r\n        }\r\n    }\r\n    private _cloneObject(object) {\r\n        if (object === null || typeof (object) !== 'object' || typeof (object.nodeType) !== 'undefined') {\r\n            return object;\r\n        }\r\n        const temp = {};\r\n        for (const key in object) {\r\n            if (typeof ((window as any).jQuery !== 'undefined' && object[key] instanceof (window as any).jQuery)) {\r\n                temp[key] = object[key];\r\n            } else {\r\n                temp[key] = this._cloneObject(object[key]);\r\n            }\r\n        }\r\n        return temp;\r\n    }\r\n    public _goToStep(step) {\r\n        // because steps starts with zero\r\n        this._currentStep = step - 2;\r\n        if (typeof (this._introItems) !== 'undefined') {\r\n            this._nextStep();\r\n        }\r\n    }\r\n    public _goToStepNumber(step) {\r\n        this._currentStepNumber = step;\r\n        if (typeof (this._introItems) !== 'undefined') {\r\n            this._nextStep();\r\n        }\r\n    }\r\n    public _nextStep() {\r\n        this._direction = 'forward';\r\n        if (typeof (this._currentStepNumber) !== 'undefined') {\r\n            this._forEach(this._introItems, (item, i) => {\r\n                if (item.step === this._currentStepNumber) {\r\n                    this._currentStep = i - 1;\r\n                    this._currentStepNumber = undefined;\r\n                }\r\n            }, null);\r\n        }\r\n        if (typeof (this._currentStep) === 'undefined') {\r\n            this._currentStep = 0;\r\n        } else {\r\n            ++this._currentStep;\r\n        }\r\n        const nextStep = this._introItems[this._currentStep];\r\n        let continueStep = true;\r\n        if (typeof (this._introBeforeChangeCallback) !== 'undefined') {\r\n            continueStep = this._introBeforeChangeCallback(nextStep.element);\r\n        }\r\n        // if `onbeforechange` returned `false`, stop displaying the element\r\n        if (continueStep === false) {\r\n            --this._currentStep;\r\n            return false;\r\n        }\r\n        if ((this._introItems.length) <= this._currentStep) {\r\n            // end of the intro\r\n            // check if any callback is defined\r\n            if (typeof (this._introCompleteCallback) === 'function') {\r\n                this._introCompleteCallback();\r\n            }\r\n            this._exitIntro(this._targetElement);\r\n            return;\r\n        }\r\n        this._showElement(nextStep);\r\n    }\r\n    public _previousStep() {\r\n        this._direction = 'backward';\r\n        if (this._currentStep === 0) {\r\n            return false;\r\n        }\r\n        --this._currentStep;\r\n        const nextStep = this._introItems[this._currentStep];\r\n        let continueStep = true;\r\n        if (typeof (this._introBeforeChangeCallback) !== 'undefined') {\r\n            continueStep = this._introBeforeChangeCallback(nextStep.element);\r\n        }\r\n        // if `onbeforechange` returned `false`, stop displaying the element\r\n        if (continueStep === false) {\r\n            ++this._currentStep;\r\n            return false;\r\n        }\r\n        this._showElement(nextStep);\r\n    }\r\n    public _refresh() {\r\n        // re-align intros\r\n        this._setHelperLayerPosition(document.querySelector('.introjs-helperLayer'));\r\n        this._setHelperLayerPosition(document.querySelector('.introjs-tooltipReferenceLayer'));\r\n        this._setHelperLayerPosition(document.querySelector('.introjs-disableInteraction'));\r\n        // re-align tooltip\r\n        if (this._currentStep !== undefined && this._currentStep !== null) {\r\n            const oldHelperNumberLayer = document.querySelector('.introjs-helperNumberLayer'), oldArrowLayer = document.querySelector('.introjs-arrow'), oldtooltipContainer = document.querySelector('.introjs-tooltip');\r\n            this._placeTooltip(this._introItems[this._currentStep].element, oldtooltipContainer, oldArrowLayer, oldHelperNumberLayer, null);\r\n        }\r\n        // re-align hints\r\n        this._reAlignHints();\r\n    }\r\n    public _exitIntro(targetElement, force = false) {\r\n        let continueExit = true;\r\n        // calling onbeforeexit callback\r\n        //\r\n        // If this callback return `false`, it would halt the process\r\n        if (this._introBeforeExitCallback !== undefined) {\r\n            continueExit = this._introBeforeExitCallback();\r\n        }\r\n        // skip this check if `force` parameter is `true`\r\n        // otherwise, if `onbeforeexit` returned `false`, don't exit the intro\r\n        if (!force && continueExit === false) {\r\n            return;\r\n        }\r\n        // remove overlay layers from the page\r\n        const overlayLayers = targetElement.querySelectorAll('.introjs-overlay');\r\n        if (overlayLayers && overlayLayers.length) {\r\n            this._forEach(overlayLayers, (overlayLayer) => {\r\n                overlayLayer.style.opacity = 0;\r\n                window.setTimeout(() => {\r\n                    if (overlayLayer.parentNode) {\r\n                        overlayLayer.parentNode.removeChild(overlayLayer);\r\n                    }\r\n                }, 500);\r\n            }, null);\r\n        }\r\n        // remove all helper layers\r\n        const helperLayer = targetElement.querySelector('.introjs-helperLayer');\r\n        if (helperLayer) {\r\n            helperLayer.parentNode.removeChild(helperLayer);\r\n        }\r\n        const referenceLayer = targetElement.querySelector('.introjs-tooltipReferenceLayer');\r\n        if (referenceLayer) {\r\n            referenceLayer.parentNode.removeChild(referenceLayer);\r\n        }\r\n        // remove disableInteractionLayer\r\n        const disableInteractionLayer = targetElement.querySelector('.introjs-disableInteraction');\r\n        if (disableInteractionLayer) {\r\n            disableInteractionLayer.parentNode.removeChild(disableInteractionLayer);\r\n        }\r\n        // remove intro floating element\r\n        const floatingElement = document.querySelector('.introjsFloatingElement');\r\n        if (floatingElement) {\r\n            floatingElement.parentNode.removeChild(floatingElement);\r\n        }\r\n        this._removeShowElement();\r\n        // remove `introjs-fixParent` class from the elements\r\n        const fixParents = document.querySelectorAll('.introjs-fixParent');\r\n        this._forEach(fixParents, (parent) => {\r\n            this._removeClass(parent, /introjs-fixParent/g);\r\n        }, null);\r\n        // clean listeners\r\n        this.DOMEvent.off(window, 'keydown', this._onKeyDown, this, true);\r\n        this.DOMEvent.off(window, 'resize', this._onResize, this, true);\r\n        // check if any callback is defined\r\n        if (this._introExitCallback !== undefined) {\r\n            this._introExitCallback();\r\n        }\r\n        // set the step to zero\r\n        this._currentStep = undefined;\r\n    }\r\n    private _placeTooltip(targetElement, tooltipLayer, arrowLayer, helperNumberLayer, hintMode) {\r\n        let tooltipCssClass = '', currentStepObj, tooltipOffset, targetOffset, windowSize, currentTooltipPosition;\r\n        hintMode = hintMode || false;\r\n        // reset the old style\r\n        tooltipLayer.style.top = null;\r\n        tooltipLayer.style.right = null;\r\n        tooltipLayer.style.bottom = null;\r\n        tooltipLayer.style.left = null;\r\n        tooltipLayer.style.marginLeft = null;\r\n        tooltipLayer.style.marginTop = null;\r\n        arrowLayer.style.display = 'inherit';\r\n        if (typeof (helperNumberLayer) !== 'undefined' && helperNumberLayer !== null) {\r\n            helperNumberLayer.style.top = null;\r\n            helperNumberLayer.style.left = null;\r\n        }\r\n        // prevent error when `this._currentStep` is undefined\r\n        if (!this._introItems[this._currentStep]) {\r\n            return;\r\n        }\r\n        // if we have a custom css class for each step\r\n        currentStepObj = this._introItems[this._currentStep];\r\n        if (typeof (currentStepObj.tooltipClass) === 'string') {\r\n            tooltipCssClass = currentStepObj.tooltipClass;\r\n        } else {\r\n            tooltipCssClass = this._options.tooltipClass;\r\n        }\r\n        tooltipLayer.className = ('introjs-tooltip ' + tooltipCssClass).replace(/^\\s+|\\s+$/g, '');\r\n        tooltipLayer.setAttribute('role', 'dialog');\r\n        currentTooltipPosition = this._introItems[this._currentStep].position;\r\n        // Floating is always valid, no point in calculating\r\n        if (currentTooltipPosition !== 'floating') {\r\n            currentTooltipPosition = this._determineAutoPosition(targetElement, tooltipLayer, currentTooltipPosition);\r\n        }\r\n        let tooltipLayerStyleLeft;\r\n        targetOffset = this._getOffset(targetElement);\r\n        tooltipOffset = this._getOffset(tooltipLayer);\r\n        windowSize = this._getWinSize();\r\n        this._addClass(tooltipLayer, 'introjs-' + currentTooltipPosition);\r\n        switch (currentTooltipPosition) {\r\n            case 'top-right-aligned':\r\n                arrowLayer.className = 'introjs-arrow bottom-right';\r\n                let tooltipLayerStyleRight = 0;\r\n                this._checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset, tooltipLayer);\r\n                tooltipLayer.style.bottom = (targetOffset.height + 20) + 'px';\r\n                break;\r\n            case 'top-middle-aligned':\r\n                arrowLayer.className = 'introjs-arrow bottom-middle';\r\n                let tooltipLayerStyleLeftRight = targetOffset.width / 2 - tooltipOffset.width / 2;\r\n                // a fix for middle aligned hints\r\n                if (hintMode) {\r\n                    tooltipLayerStyleLeftRight += 5;\r\n                }\r\n                if (this._checkLeft(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, tooltipLayer)) {\r\n                    tooltipLayer.style.right = null;\r\n                    this._checkRight(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, windowSize, tooltipLayer);\r\n                }\r\n                tooltipLayer.style.bottom = (targetOffset.height + 20) + 'px';\r\n                break;\r\n            case 'top-left-aligned':\r\n            // top-left-aligned is the same as the default top\r\n            case 'top':\r\n                arrowLayer.className = 'introjs-arrow bottom';\r\n                tooltipLayerStyleLeft = (hintMode) ? 0 : 15;\r\n                this._checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset, windowSize, tooltipLayer);\r\n                tooltipLayer.style.bottom = (targetOffset.height + 20) + 'px';\r\n                break;\r\n            case 'right':\r\n                tooltipLayer.style.left = (targetOffset.width + 20) + 'px';\r\n                if (targetOffset.top + tooltipOffset.height > windowSize.height) {\r\n                    // In this case, right would have fallen below the bottom of the screen.\r\n                    // Modify so that the bottom of the tooltip connects with the target\r\n                    arrowLayer.className = 'introjs-arrow left-bottom';\r\n                    tooltipLayer.style.top = '-' + (tooltipOffset.height - targetOffset.height - 20) + 'px';\r\n                } else {\r\n                    arrowLayer.className = 'introjs-arrow left';\r\n                }\r\n                break;\r\n            case 'left':\r\n                if (!hintMode && this._options.showStepNumbers === true) {\r\n                    tooltipLayer.style.top = '15px';\r\n                }\r\n                if (targetOffset.top + tooltipOffset.height > windowSize.height) {\r\n                    // In this case, left would have fallen below the bottom of the screen.\r\n                    // Modify so that the bottom of the tooltip connects with the target\r\n                    tooltipLayer.style.top = '-' + (tooltipOffset.height - targetOffset.height - 20) + 'px';\r\n                    arrowLayer.className = 'introjs-arrow right-bottom';\r\n                } else {\r\n                    arrowLayer.className = 'introjs-arrow right';\r\n                }\r\n                tooltipLayer.style.right = (targetOffset.width + 20) + 'px';\r\n                break;\r\n            case 'floating':\r\n                arrowLayer.style.display = 'none';\r\n                // we have to adjust the top and left of layer manually for intro items without element\r\n                tooltipLayer.style.left = '50%';\r\n                tooltipLayer.style.top = '50%';\r\n                tooltipLayer.style.marginLeft = '-' + (tooltipOffset.width / 2) + 'px';\r\n                tooltipLayer.style.marginTop = '-' + (tooltipOffset.height / 2) + 'px';\r\n                if (typeof (helperNumberLayer) !== 'undefined' && helperNumberLayer !== null) {\r\n                    helperNumberLayer.style.left = '-' + ((tooltipOffset.width / 2) + 18) + 'px';\r\n                    helperNumberLayer.style.top = '-' + ((tooltipOffset.height / 2) + 18) + 'px';\r\n                }\r\n                break;\r\n            case 'bottom-right-aligned':\r\n                arrowLayer.className = 'introjs-arrow top-right';\r\n                tooltipLayerStyleRight = 0;\r\n                this._checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset, tooltipLayer);\r\n                tooltipLayer.style.top = (targetOffset.height + 20) + 'px';\r\n                break;\r\n            case 'bottom-middle-aligned':\r\n                arrowLayer.className = 'introjs-arrow top-middle';\r\n                tooltipLayerStyleLeftRight = targetOffset.width / 2 - tooltipOffset.width / 2;\r\n                // a fix for middle aligned hints\r\n                if (hintMode) {\r\n                    tooltipLayerStyleLeftRight += 5;\r\n                }\r\n                if (this._checkLeft(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, tooltipLayer)) {\r\n                    tooltipLayer.style.right = null;\r\n                    this._checkRight(targetOffset, tooltipLayerStyleLeftRight, tooltipOffset, windowSize, tooltipLayer);\r\n                }\r\n                tooltipLayer.style.top = (targetOffset.height + 20) + 'px';\r\n                break;\r\n            // case 'bottom-left-aligned':\r\n            // Bottom-left-aligned is the same as the default bottom\r\n            // case 'bottom':\r\n            // Bottom going to follow the default behavior\r\n            default:\r\n                arrowLayer.className = 'introjs-arrow top';\r\n                tooltipLayerStyleLeft = 0;\r\n                this._checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset, windowSize, tooltipLayer);\r\n                tooltipLayer.style.top = (targetOffset.height + 20) + 'px';\r\n        }\r\n    }\r\n    private _checkRight(targetOffset, tooltipLayerStyleLeft, tooltipOffset, windowSize, tooltipLayer) {\r\n        if (targetOffset.left + tooltipLayerStyleLeft + tooltipOffset.width > windowSize.width) {\r\n            // off the right side of the window\r\n            tooltipLayer.style.left = (windowSize.width - tooltipOffset.width - targetOffset.left) + 'px';\r\n            return false;\r\n        }\r\n        tooltipLayer.style.left = tooltipLayerStyleLeft + 'px';\r\n        return true;\r\n    }\r\n    private _checkLeft(targetOffset, tooltipLayerStyleRight, tooltipOffset, tooltipLayer) {\r\n        if (targetOffset.left + targetOffset.width - tooltipLayerStyleRight - tooltipOffset.width < 0) {\r\n            // off the left side of the window\r\n            tooltipLayer.style.left = (-targetOffset.left) + 'px';\r\n            return false;\r\n        }\r\n        tooltipLayer.style.right = tooltipLayerStyleRight + 'px';\r\n        return true;\r\n    }\r\n    private _determineAutoPosition(targetElement, tooltipLayer, desiredTooltipPosition) {\r\n        // Take a clone of position precedence. These will be the available\r\n        const possiblePositions = this._options.positionPrecedence.slice();\r\n        const windowSize = this._getWinSize();\r\n        const tooltipHeight = this._getOffset(tooltipLayer).height + 10;\r\n        const tooltipWidth = this._getOffset(tooltipLayer).width + 20;\r\n        const targetElementRect = targetElement.getBoundingClientRect();\r\n        // If we check all the possible areas, and there are no valid places for the tooltip, the element\r\n        // must take up most of the screen real estate. Show the tooltip floating in the middle of the screen.\r\n        let calculatedPosition = 'floating';\r\n        /*\r\n        * auto determine position\r\n        */\r\n        // Check for space below\r\n        if (targetElementRect.bottom + tooltipHeight + tooltipHeight > windowSize.height) {\r\n            this._removeEntry(possiblePositions, 'bottom');\r\n        }\r\n        // Check for space above\r\n        if (targetElementRect.top - tooltipHeight < 0) {\r\n            this._removeEntry(possiblePositions, 'top');\r\n        }\r\n        // Check for space to the right\r\n        if (targetElementRect.right + tooltipWidth > windowSize.width) {\r\n            this._removeEntry(possiblePositions, 'right');\r\n        }\r\n        // Check for space to the left\r\n        if (targetElementRect.left - tooltipWidth < 0) {\r\n            this._removeEntry(possiblePositions, 'left');\r\n        }\r\n        // @var {String}  ex: 'right-aligned'\r\n        const desiredAlignment = ((pos) => {\r\n            const hyphenIndex = pos.indexOf('-');\r\n            if (hyphenIndex !== -1) {\r\n                // has alignment\r\n                return pos.substr(hyphenIndex);\r\n            }\r\n            return '';\r\n        })(desiredTooltipPosition || '');\r\n        // strip alignment from position\r\n        if (desiredTooltipPosition) {\r\n            // ex: \"bottom-right-aligned\"\r\n            // should return 'bottom'\r\n            desiredTooltipPosition = desiredTooltipPosition.split('-')[0];\r\n        }\r\n        if (possiblePositions.length) {\r\n            if (desiredTooltipPosition !== 'auto' &&\r\n                possiblePositions.indexOf(desiredTooltipPosition) > -1) {\r\n                // If the requested position is in the list, choose that\r\n                calculatedPosition = desiredTooltipPosition;\r\n            } else {\r\n                // Pick the first valid position, in order\r\n                calculatedPosition = possiblePositions[0];\r\n            }\r\n        }\r\n        // only top and bottom positions have optional alignments\r\n        if (['top', 'bottom'].indexOf(calculatedPosition) !== -1) {\r\n            calculatedPosition += this._determineAutoAlignment(targetElementRect.left, tooltipWidth, windowSize, desiredAlignment);\r\n        }\r\n        return calculatedPosition;\r\n    }\r\n    private _determineAutoAlignment(offsetLeft, tooltipWidth, windowSize, desiredAlignment) {\r\n        let halfTooltipWidth = tooltipWidth / 2, winWidth = Math.min(windowSize.width, window.screen.width), possibleAlignments = ['-left-aligned', '-middle-aligned', '-right-aligned'], calculatedAlignment = '';\r\n        // valid left must be at least a tooltipWidth\r\n        // away from right side\r\n        if (winWidth - offsetLeft < tooltipWidth) {\r\n            this._removeEntry(possibleAlignments, '-left-aligned');\r\n        }\r\n        // valid middle must be at least half\r\n        // width away from both sides\r\n        if (offsetLeft < halfTooltipWidth ||\r\n            winWidth - offsetLeft < halfTooltipWidth) {\r\n            this._removeEntry(possibleAlignments, '-middle-aligned');\r\n        }\r\n        // valid right must be at least a tooltipWidth\r\n        // width away from left side\r\n        if (offsetLeft < tooltipWidth) {\r\n            this._removeEntry(possibleAlignments, '-right-aligned');\r\n        }\r\n        if (possibleAlignments.length) {\r\n            if (possibleAlignments.indexOf(desiredAlignment) !== -1) {\r\n                // the desired alignment is valid\r\n                calculatedAlignment = desiredAlignment;\r\n            } else {\r\n                // pick the first valid position, in order\r\n                calculatedAlignment = possibleAlignments[0];\r\n            }\r\n        } else {\r\n            // if screen width is too small\r\n            // for ANY alignment, middle is\r\n            // probably the best for visibility\r\n            calculatedAlignment = '-middle-aligned';\r\n        }\r\n        return calculatedAlignment;\r\n    }\r\n    private _removeEntry(stringArray, stringToRemove) {\r\n        if (stringArray.indexOf(stringToRemove) > -1) {\r\n            stringArray.splice(stringArray.indexOf(stringToRemove), 1);\r\n        }\r\n    }\r\n    private _setHelperLayerPosition(helperLayer) {\r\n        if (helperLayer) {\r\n            // prevent error when `this._currentStep` in undefined\r\n            if (!this._introItems[this._currentStep]) {\r\n                return;\r\n            }\r\n            let currentElement = this._introItems[this._currentStep], elementPosition = this._getOffset(currentElement.element), widthHeightPadding = this._options.helperElementPadding;\r\n            // If the target element is fixed, the tooltip should be fixed as well.\r\n            // Otherwise, remove a fixed class that may be left over from the previous\r\n            // step.\r\n            if (this._isFixed(currentElement.element)) {\r\n                this._addClass(helperLayer, 'introjs-fixedTooltip');\r\n            } else {\r\n                this._removeClass(helperLayer, 'introjs-fixedTooltip');\r\n            }\r\n            if (currentElement.position === 'floating') {\r\n                widthHeightPadding = 0;\r\n            }\r\n            // set new position to helper layer\r\n            helperLayer.style.cssText = 'width: ' + (elementPosition.width + widthHeightPadding) + 'px; ' +\r\n                'height:' + (elementPosition.height + widthHeightPadding) + 'px; ' +\r\n                'top:' + (elementPosition.top - widthHeightPadding / 2) + 'px;' +\r\n                'left: ' + (elementPosition.left - widthHeightPadding / 2) + 'px;';\r\n        }\r\n    }\r\n    private _disableInteraction() {\r\n        let disableInteractionLayer = document.querySelector('.introjs-disableInteraction');\r\n        if (disableInteractionLayer === null) {\r\n            disableInteractionLayer = document.createElement('div');\r\n            disableInteractionLayer.className = 'introjs-disableInteraction';\r\n            this._targetElement.appendChild(disableInteractionLayer);\r\n        }\r\n        this._setHelperLayerPosition(disableInteractionLayer);\r\n    }\r\n    private _setAnchorAsButton(anchor) {\r\n        anchor.setAttribute('role', 'button');\r\n        anchor.tabIndex = 0;\r\n    }\r\n    private _showElement(targetElement) {\r\n        if (typeof (this._introChangeCallback) !== 'undefined') {\r\n            this._introChangeCallback(targetElement.element);\r\n        }\r\n\r\n        const oldHelperLayer = document.querySelector('.introjs-helperLayer');\r\n        const oldReferenceLayer = document.querySelector('.introjs-tooltipReferenceLayer');\r\n        let highlightClass = 'introjs-helperLayer';\r\n        let nextTooltipButton;\r\n        let prevTooltipButton;\r\n        let skipTooltipButton;\r\n        let scrollParent;\r\n        const helperLayer = document.createElement('div'), referenceLayer = document.createElement('div'), arrowLayer = document.createElement('div'), tooltipLayer = document.createElement('div'), tooltipTextLayer = document.createElement('div'), bulletsLayer = document.createElement('div'), progressLayer = document.createElement('div'), buttonsLayer = document.createElement('div');\r\n        // check for a current step highlight class\r\n        if (typeof (targetElement.highlightClass) === 'string') {\r\n            highlightClass += (' ' + targetElement.highlightClass);\r\n        }\r\n        // check for options highlight class\r\n        if (typeof (this._options.highlightClass) === 'string') {\r\n            highlightClass += (' ' + this._options.highlightClass);\r\n        }\r\n        if (oldHelperLayer !== null) {\r\n            const oldHelperNumberLayer = oldReferenceLayer.querySelector('.introjs-helperNumberLayer');\r\n            const oldtooltipLayer = oldReferenceLayer.querySelector('.introjs-tooltiptext');\r\n            const oldArrowLayer = oldReferenceLayer.querySelector('.introjs-arrow');\r\n            const oldtooltipContainer = oldReferenceLayer.querySelector('.introjs-tooltip');\r\n            skipTooltipButton = oldReferenceLayer.querySelector('.introjs-skipbutton');\r\n            prevTooltipButton = oldReferenceLayer.querySelector('.introjs-prevbutton');\r\n            nextTooltipButton = oldReferenceLayer.querySelector('.introjs-nextbutton');\r\n            // update or reset the helper highlight class\r\n            oldHelperLayer.className = highlightClass;\r\n            // hide the tooltip\r\n            (oldtooltipContainer as any).style.opacity = 0;\r\n            (oldtooltipContainer as any).style.display = 'none';\r\n            if (oldHelperNumberLayer !== null) {\r\n                let lastIntroItem = this._introItems[(targetElement.step - 2 >= 0 ? targetElement.step - 2 : 0)];\r\n                // EMAFIX: se fosse undefined avrebbe problemi nella riga dopo. Devo fixare\r\n                if (lastIntroItem === undefined) {\r\n                    lastIntroItem = null;\r\n                }\r\n                if (lastIntroItem !== null && (this._direction === 'forward' && lastIntroItem.position === 'floating') || (this._direction === 'backward' && targetElement.position === 'floating')) {\r\n                    (oldHelperNumberLayer as any).style.opacity = 0;\r\n                }\r\n            }\r\n            // scroll to element\r\n            scrollParent = this._getScrollParent(targetElement.element);\r\n            if (scrollParent !== document.body) {\r\n                // target is within a scrollable element\r\n                this._scrollParentToElement(scrollParent, targetElement.element);\r\n            }\r\n            // set new position to helper layer\r\n            this._setHelperLayerPosition(oldHelperLayer);\r\n            this._setHelperLayerPosition(oldReferenceLayer);\r\n            // remove `introjs-fixParent` class from the elements\r\n            const fixParents = document.querySelectorAll('.introjs-fixParent');\r\n            this._forEach(fixParents, (parent) => {\r\n                this._removeClass(parent, /introjs-fixParent/g);\r\n            }, null);\r\n            // remove old classes if the element still exist\r\n            this._removeShowElement();\r\n            // we should wait until the CSS3 transition is competed (it's 0.3 sec) to prevent incorrect `height` and `width` calculation\r\n            if (this._lastShowElementTimer) {\r\n                window.clearTimeout(this._lastShowElementTimer);\r\n            }\r\n            this._lastShowElementTimer = window.setTimeout(() => {\r\n                // set current step to the label\r\n                if (oldHelperNumberLayer !== null) {\r\n                    oldHelperNumberLayer.innerHTML = targetElement.step;\r\n                }\r\n                // set current tooltip text\r\n                oldtooltipLayer.innerHTML = targetElement.intro;\r\n                // set the tooltip position\r\n                (oldtooltipContainer as any).style.display = 'block';\r\n                this._placeTooltip(targetElement.element, oldtooltipContainer, oldArrowLayer, oldHelperNumberLayer, null);\r\n                // change active bullet\r\n                if (this._options.showBullets) {\r\n                    oldReferenceLayer.querySelector('.introjs-bullets li > a.active').className = '';\r\n                    oldReferenceLayer.querySelector('.introjs-bullets li > a[data-stepnumber=\"' + targetElement.step + '\"]').className = 'active';\r\n                }\r\n                (oldReferenceLayer.querySelector('.introjs-progress .introjs-progressbar') as any).style.cssText = 'width:' + this._getProgress() + '%;';\r\n                oldReferenceLayer.querySelector('.introjs-progress .introjs-progressbar').setAttribute('aria-valuenow', this._getProgress().toString());\r\n                // show the tooltip\r\n                (oldtooltipContainer as any).style.opacity = 1;\r\n                if (oldHelperNumberLayer) {\r\n                    (oldHelperNumberLayer as any).style.opacity = 1;\r\n                }\r\n                // reset button focus\r\n                if (typeof skipTooltipButton !== 'undefined' && skipTooltipButton !== null && /introjs-donebutton/gi.test(skipTooltipButton.className)) {\r\n                    // skip button is now \"done\" button\r\n                    skipTooltipButton.focus();\r\n                } else if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n                    // still in the tour, focus on next\r\n                    nextTooltipButton.focus();\r\n                }\r\n                // change the scroll of the window, if needed\r\n                this._scrollTo(targetElement.scrollTo, targetElement, oldtooltipLayer);\r\n            }, 350);\r\n            // end of old element if-else condition\r\n        } else {\r\n            helperLayer.className = highlightClass;\r\n            referenceLayer.className = 'introjs-tooltipReferenceLayer';\r\n            // scroll to element\r\n            scrollParent = this._getScrollParent(targetElement.element);\r\n            if (scrollParent !== document.body) {\r\n                // target is within a scrollable element\r\n                this._scrollParentToElement(scrollParent, targetElement.element);\r\n            }\r\n            // set new position to helper layer\r\n            this._setHelperLayerPosition(helperLayer);\r\n            this._setHelperLayerPosition(referenceLayer);\r\n            // add helper layer to target element\r\n            this._targetElement.appendChild(helperLayer);\r\n            this._targetElement.appendChild(referenceLayer);\r\n            arrowLayer.className = 'introjs-arrow';\r\n            tooltipTextLayer.className = 'introjs-tooltiptext';\r\n            tooltipTextLayer.innerHTML = targetElement.intro;\r\n            bulletsLayer.className = 'introjs-bullets';\r\n            if (this._options.showBullets === false) {\r\n                bulletsLayer.style.display = 'none';\r\n            }\r\n            const ulContainer = document.createElement('ul');\r\n            ulContainer.setAttribute('role', 'tablist');\r\n\r\n            let self = this;\r\n            const anchorClick = function() {\r\n                self._goToStep(this.getAttribute('data-stepnumber'));\r\n            };\r\n\r\n            this._forEach(this._introItems, (item, i) => {\r\n                const innerLi = document.createElement('li');\r\n                const anchorLink = document.createElement('a');\r\n                innerLi.setAttribute('role', 'presentation');\r\n                anchorLink.setAttribute('role', 'tab');\r\n                anchorLink.onclick = anchorClick;\r\n                if (i === (targetElement.step - 1)) {\r\n                    anchorLink.className = 'active';\r\n                }\r\n                this._setAnchorAsButton(anchorLink);\r\n                anchorLink.innerHTML = '&nbsp;';\r\n                anchorLink.setAttribute('data-stepnumber', item.step);\r\n                innerLi.appendChild(anchorLink);\r\n                ulContainer.appendChild(innerLi);\r\n            });\r\n            bulletsLayer.appendChild(ulContainer);\r\n            progressLayer.className = 'introjs-progress';\r\n            if (this._options.showProgress === false) {\r\n                progressLayer.style.display = 'none';\r\n            }\r\n            const progressBar = document.createElement('div');\r\n            progressBar.className = 'introjs-progressbar';\r\n            progressBar.setAttribute('role', 'progress');\r\n            progressBar.setAttribute('aria-valuemin', '0');\r\n            progressBar.setAttribute('aria-valuemax', '100');\r\n            progressBar.setAttribute('aria-valuenow', this._getProgress().toString());\r\n            progressBar.style.cssText = 'width:' + this._getProgress() + '%;';\r\n            progressLayer.appendChild(progressBar);\r\n            buttonsLayer.className = 'introjs-tooltipbuttons';\r\n            if (this._options.showButtons === false) {\r\n                buttonsLayer.style.display = 'none';\r\n            }\r\n            tooltipLayer.className = 'introjs-tooltip';\r\n            tooltipLayer.appendChild(tooltipTextLayer);\r\n            tooltipLayer.appendChild(bulletsLayer);\r\n            tooltipLayer.appendChild(progressLayer);\r\n            // add helper layer number\r\n            const helperNumberLayer = document.createElement('span');\r\n            if (this._options.showStepNumbers === true) {\r\n                helperNumberLayer.className = 'introjs-helperNumberLayer';\r\n                helperNumberLayer.innerHTML = targetElement.step;\r\n                referenceLayer.appendChild(helperNumberLayer);\r\n            }\r\n            tooltipLayer.appendChild(arrowLayer);\r\n            referenceLayer.appendChild(tooltipLayer);\r\n            // next button\r\n            nextTooltipButton = document.createElement('a');\r\n            nextTooltipButton.onclick = () => {\r\n                if (this._introItems.length - 1 !== this._currentStep) {\r\n                    this._nextStep();\r\n                }\r\n            };\r\n            this._setAnchorAsButton(nextTooltipButton);\r\n            nextTooltipButton.innerHTML = this._options.nextLabel;\r\n            // previous button\r\n            prevTooltipButton = document.createElement('a');\r\n            prevTooltipButton.onclick = () => {\r\n                if (this._currentStep !== 0) {\r\n                    this._previousStep();\r\n                }\r\n            };\r\n            this._setAnchorAsButton(prevTooltipButton);\r\n            prevTooltipButton.innerHTML = this._options.prevLabel;\r\n            // skip button\r\n            skipTooltipButton = document.createElement('a');\r\n            skipTooltipButton.className = this._options.buttonClass + ' introjs-skipbutton ';\r\n            this._setAnchorAsButton(skipTooltipButton);\r\n            skipTooltipButton.innerHTML = this._options.skipLabel;\r\n            skipTooltipButton.onclick = () => {\r\n                if (this._introItems.length - 1 === this._currentStep && typeof (this._introCompleteCallback) === 'function') {\r\n                    this._introCompleteCallback();\r\n                }\r\n                if (this._introItems.length - 1 !== this._currentStep && typeof (this._introExitCallback) === 'function') {\r\n                    this._introExitCallback();\r\n                }\r\n                if (typeof (this._introSkipCallback) === 'function') {\r\n                    this._introSkipCallback();\r\n                }\r\n                this._exitIntro(this._targetElement);\r\n            };\r\n            buttonsLayer.appendChild(skipTooltipButton);\r\n            // in order to prevent displaying next/previous button always\r\n            if (this._introItems.length > 1) {\r\n                buttonsLayer.appendChild(prevTooltipButton);\r\n                buttonsLayer.appendChild(nextTooltipButton);\r\n            }\r\n            tooltipLayer.appendChild(buttonsLayer);\r\n            // set proper position\r\n            this._placeTooltip(targetElement.element, tooltipLayer, arrowLayer, helperNumberLayer, null);\r\n            // change the scroll of the window, if needed\r\n            this._scrollTo(targetElement.scrollTo, targetElement, tooltipLayer);\r\n            // end of new element if-else condition\r\n        }\r\n        // removing previous disable interaction layer\r\n        const disableInteractionLayer = this._targetElement.querySelector('.introjs-disableInteraction');\r\n        if (disableInteractionLayer) {\r\n            disableInteractionLayer.parentNode.removeChild(disableInteractionLayer);\r\n        }\r\n        // disable interaction\r\n        if (targetElement.disableInteraction) {\r\n            this._disableInteraction();\r\n        }\r\n        // when it's the first step of tour\r\n        if (this._currentStep === 0 && this._introItems.length > 1) {\r\n            if (typeof skipTooltipButton !== 'undefined' && skipTooltipButton !== null) {\r\n                skipTooltipButton.className = this._options.buttonClass + ' introjs-skipbutton';\r\n            }\r\n            if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n                nextTooltipButton.className = this._options.buttonClass + ' introjs-nextbutton';\r\n            }\r\n            if (this._options.hidePrev === true) {\r\n                if (typeof prevTooltipButton !== 'undefined' && prevTooltipButton !== null) {\r\n                    prevTooltipButton.className = this._options.buttonClass + ' introjs-prevbutton introjs-hidden';\r\n                }\r\n                if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n                    this._addClass(nextTooltipButton, 'introjs-fullbutton');\r\n                }\r\n            } else {\r\n                if (typeof prevTooltipButton !== 'undefined' && prevTooltipButton !== null) {\r\n                    prevTooltipButton.className = this._options.buttonClass + ' introjs-prevbutton introjs-disabled';\r\n                }\r\n            }\r\n            if (typeof skipTooltipButton !== 'undefined' && skipTooltipButton !== null) {\r\n                skipTooltipButton.innerHTML = this._options.skipLabel;\r\n            }\r\n        } else if (this._introItems.length - 1 === this._currentStep || this._introItems.length === 1) {\r\n            // last step of tour\r\n            if (typeof skipTooltipButton !== 'undefined' && skipTooltipButton !== null) {\r\n                skipTooltipButton.innerHTML = this._options.doneLabel;\r\n                // adding donebutton class in addition to skipbutton\r\n                this._addClass(skipTooltipButton, 'introjs-donebutton');\r\n            }\r\n            if (typeof prevTooltipButton !== 'undefined' && prevTooltipButton !== null) {\r\n                prevTooltipButton.className = this._options.buttonClass + ' introjs-prevbutton';\r\n            }\r\n            if (this._options.hideNext === true) {\r\n                if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n                    nextTooltipButton.className = this._options.buttonClass + ' introjs-nextbutton introjs-hidden';\r\n                }\r\n                if (typeof prevTooltipButton !== 'undefined' && prevTooltipButton !== null) {\r\n                    this._addClass(prevTooltipButton, 'introjs-fullbutton');\r\n                }\r\n            } else {\r\n                if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n                    nextTooltipButton.className = this._options.buttonClass + ' introjs-nextbutton introjs-disabled';\r\n                }\r\n            }\r\n        } else {\r\n            // steps between start and end\r\n            if (typeof skipTooltipButton !== 'undefined' && skipTooltipButton !== null) {\r\n                skipTooltipButton.className = this._options.buttonClass + ' introjs-skipbutton';\r\n            }\r\n            if (typeof prevTooltipButton !== 'undefined' && prevTooltipButton !== null) {\r\n                prevTooltipButton.className = this._options.buttonClass + ' introjs-prevbutton';\r\n            }\r\n            if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n                nextTooltipButton.className = this._options.buttonClass + ' introjs-nextbutton';\r\n            }\r\n            if (typeof skipTooltipButton !== 'undefined' && skipTooltipButton !== null) {\r\n                skipTooltipButton.innerHTML = this._options.skipLabel;\r\n            }\r\n        }\r\n        prevTooltipButton.setAttribute('role', 'button');\r\n        nextTooltipButton.setAttribute('role', 'button');\r\n        skipTooltipButton.setAttribute('role', 'button');\r\n        // Set focus on \"next\" button, so that hitting Enter always moves you onto the next step\r\n        if (typeof nextTooltipButton !== 'undefined' && nextTooltipButton !== null) {\r\n            nextTooltipButton.focus();\r\n        }\r\n        this._setShowElement(targetElement);\r\n        // EMAFIX: Evito che l'evento parta per la tangente. Lo blocco nel contesto intro\r\n        if (tooltipLayer) {\r\n            tooltipLayer.onclick = (e) => {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n            };\r\n        }\r\n        if (typeof (this._introAfterChangeCallback) !== 'undefined') {\r\n            this._introAfterChangeCallback(targetElement.element);\r\n        }\r\n    }\r\n    private _scrollTo(scrollTo, targetElement, tooltipLayer) {\r\n        if (scrollTo === 'off') {\r\n            return;\r\n        }\r\n        let rect;\r\n        if (!this._options.scrollToElement) {\r\n            return;\r\n        }\r\n        if (scrollTo === 'tooltip') {\r\n            rect = tooltipLayer.getBoundingClientRect();\r\n        } else {\r\n            rect = targetElement.element.getBoundingClientRect();\r\n        }\r\n        if (!this._elementInViewport(targetElement.element)) {\r\n            const winHeight = this._getWinSize().height;\r\n            const top = rect.bottom - (rect.bottom - rect.top);\r\n            // TODO (afshinm): do we need scroll padding now?\r\n            // I have changed the scroll option and now it scrolls the window to\r\n            // the center of the target element or tooltip.\r\n            if (top < 0 || targetElement.element.clientHeight > winHeight) {\r\n                window.scrollBy(0, rect.top - ((winHeight / 2) - (rect.height / 2)) - this._options.scrollPadding); // 30px padding from edge to look nice\r\n                // Scroll down\r\n            } else {\r\n                window.scrollBy(0, rect.top - ((winHeight / 2) - (rect.height / 2)) + this._options.scrollPadding); // 30px padding from edge to look nice\r\n            }\r\n        }\r\n    }\r\n    private _removeShowElement() {\r\n        const elms = document.querySelectorAll('.introjs-showElement');\r\n        this._forEach(elms, (elm) => {\r\n            this._removeClass(elm, /introjs-[a-zA-Z]+/g);\r\n        });\r\n    }\r\n    private _setShowElement(targetElement) {\r\n        let parentElm;\r\n        // we need to add this show element class to the parent of SVG elements\r\n        // because the SVG elements can't have independent z-index\r\n        if (targetElement.element instanceof SVGElement) {\r\n            parentElm = targetElement.element.parentNode;\r\n            while (targetElement.element.parentNode !== null) {\r\n                if (!parentElm.tagName || parentElm.tagName.toLowerCase() === 'body') {\r\n                    break;\r\n                }\r\n                if (parentElm.tagName.toLowerCase() === 'svg') {\r\n                    this._addClass(parentElm, 'introjs-showElement introjs-relativePosition');\r\n                }\r\n                parentElm = parentElm.parentNode;\r\n            }\r\n        }\r\n        this._addClass(targetElement.element, 'introjs-showElement');\r\n        const currentElementPosition = this._getPropValue(targetElement.element, 'position');\r\n        if (currentElementPosition !== 'absolute' &&\r\n            currentElementPosition !== 'relative' &&\r\n            currentElementPosition !== 'fixed') {\r\n            // change to new intro item\r\n            this._addClass(targetElement.element, 'introjs-relativePosition');\r\n        }\r\n        parentElm = targetElement.element.parentNode;\r\n        while (parentElm !== null) {\r\n            if (!parentElm.tagName || parentElm.tagName.toLowerCase() === 'body') {\r\n                break;\r\n            }\r\n            // fix The Stacking Context problem.\r\n            // More detail: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context\r\n            const zIndex = this._getPropValue(parentElm, 'z-index');\r\n            const opacity = parseFloat(this._getPropValue(parentElm, 'opacity'));\r\n            const transform = this._getPropValue(parentElm, 'transform') || this._getPropValue(parentElm, '-webkit-transform') || this._getPropValue(parentElm, '-moz-transform') || this._getPropValue(parentElm, '-ms-transform') || this._getPropValue(parentElm, '-o-transform');\r\n            if (/[0-9]+/.test(zIndex) || opacity < 1 || (transform !== 'none' && transform !== undefined)) {\r\n                this._addClass(parentElm, 'introjs-fixParent');\r\n            }\r\n            parentElm = parentElm.parentNode;\r\n        }\r\n    }\r\n    private _forEach(arr, forEachFnc, completeFnc = null) {\r\n        // in case arr is an empty query selector node list\r\n        if (arr) {\r\n            for (let i = 0, len = arr.length; i < len; i++) {\r\n                forEachFnc(arr[i], i);\r\n            }\r\n        }\r\n        if (typeof (completeFnc) === 'function') {\r\n            completeFnc();\r\n        }\r\n    }\r\n    private _addClass(element, className) {\r\n        if (element instanceof SVGElement) {\r\n            // svg\r\n            const pre = element.getAttribute('class') || '';\r\n            element.setAttribute('class', pre + ' ' + className);\r\n        } else {\r\n            if (element.classList !== undefined) {\r\n                // check for modern classList property\r\n                const classes = className.split(' ');\r\n                this._forEach(classes, (cls) => {\r\n                    element.classList.add(cls);\r\n                });\r\n            } else if (!element.className.match(className)) {\r\n                // check if element doesn't already have className\r\n                element.className += ' ' + className;\r\n            }\r\n        }\r\n    }\r\n    private _removeClass(element, classNameRegex) {\r\n        if (element instanceof SVGElement) {\r\n            const pre = element.getAttribute('class') || '';\r\n            element.setAttribute('class', pre.replace(classNameRegex, '').replace(/^\\s+|\\s+$/g, ''));\r\n        } else {\r\n            element.className = element.className.replace(classNameRegex, '').replace(/^\\s+|\\s+$/g, '');\r\n        }\r\n    }\r\n    private _getPropValue(element, propName) {\r\n        let propValue = '';\r\n        if (element.currentStyle) { // IE\r\n            propValue = element.currentStyle[propName];\r\n        } else if (document.defaultView && document.defaultView.getComputedStyle) { // Others\r\n            propValue = document.defaultView.getComputedStyle(element, null).getPropertyValue(propName);\r\n        }\r\n        // Prevent exception in IE\r\n        if (propValue && propValue.toLowerCase) {\r\n            return propValue.toLowerCase();\r\n        } else {\r\n            return propValue;\r\n        }\r\n    }\r\n    private _isFixed(element) {\r\n        const p = element.parentNode;\r\n        if (!p || p.nodeName === 'HTML') {\r\n            return false;\r\n        }\r\n        if (this._getPropValue(element, 'position') === 'fixed') {\r\n            return true;\r\n        }\r\n        return this._isFixed(p);\r\n    }\r\n    private _getWinSize() {\r\n        if (window.innerWidth !== undefined) {\r\n            return { width: window.innerWidth, height: window.innerHeight };\r\n        } else {\r\n            const D = document.documentElement;\r\n            return { width: D.clientWidth, height: D.clientHeight };\r\n        }\r\n    }\r\n    private _elementInViewport(el) {\r\n        const rect = el.getBoundingClientRect();\r\n        return (rect.top >= 0 &&\r\n            rect.left >= 0 &&\r\n            (rect.bottom + 80) <= window.innerHeight && // add 80 to get the text right\r\n            rect.right <= window.innerWidth);\r\n    }\r\n    private _addOverlayLayer(targetElm) {\r\n        let overlayLayer = document.createElement('div'), styleText = '', self = this;\r\n        // set css class name\r\n        overlayLayer.className = 'introjs-overlay';\r\n        // check if the target element is body, we should calculate the size of overlay layer in a better way\r\n        if (!targetElm.tagName || targetElm.tagName.toLowerCase() === 'body') {\r\n            styleText += 'top: 0;bottom: 0; left: 0;right: 0;position: fixed;';\r\n            overlayLayer.style.cssText = styleText;\r\n        } else {\r\n            // set overlay layer position\r\n            const elementPosition = this._getOffset(targetElm);\r\n            if (elementPosition) {\r\n                styleText += 'width: ' + elementPosition.width + 'px; height:' + elementPosition.height + 'px; top:' + elementPosition.top + 'px;left: ' + elementPosition.left + 'px;';\r\n                overlayLayer.style.cssText = styleText;\r\n            }\r\n        }\r\n        targetElm.appendChild(overlayLayer);\r\n        overlayLayer.onclick = () => {\r\n            if (this._options.exitOnOverlayClick === true) {\r\n                this._exitIntro(targetElm);\r\n            }\r\n        };\r\n        window.setTimeout(() => {\r\n            styleText += 'opacity: ' + this._options.overlayOpacity.toString() + ';';\r\n            overlayLayer.style.cssText = styleText;\r\n        }, 10);\r\n        return true;\r\n    }\r\n    private _removeHintTooltip() {\r\n        const tooltip = document.querySelector('.introjs-hintReference');\r\n        if (tooltip) {\r\n            const step = tooltip.getAttribute('data-step');\r\n            tooltip.parentNode.removeChild(tooltip);\r\n            return step;\r\n        }\r\n    }\r\n    public _populateHints(targetElm) {\r\n        this._introItems = [];\r\n        if (this._options.hints) {\r\n            this._forEach(this._options.hints, (hint) => {\r\n                const currentItem = this._cloneObject(hint);\r\n                if (typeof (currentItem.element) === 'string') {\r\n                    // grab the element with given selector from the page\r\n                    currentItem.element = document.querySelector(currentItem.element);\r\n                }\r\n                currentItem.hintPosition = currentItem.hintPosition || this._options.hintPosition;\r\n                currentItem.hintAnimation = currentItem.hintAnimation || this._options.hintAnimation;\r\n                if (currentItem.element !== null) {\r\n                    this._introItems.push(currentItem);\r\n                }\r\n            }, null);\r\n        } else {\r\n            const hints = targetElm.querySelectorAll('*[data-hint]');\r\n            if (!hints || !hints.length) {\r\n                return false;\r\n            }\r\n            // first add intro items with data-step\r\n            this._forEach(hints, (currentElement) => {\r\n                // hint animation\r\n                let hintAnimation = currentElement.getAttribute('data-hintanimation');\r\n                if (hintAnimation) {\r\n                    hintAnimation = (hintAnimation === 'true');\r\n                } else {\r\n                    hintAnimation = this._options.hintAnimation;\r\n                }\r\n                this._introItems.push({\r\n                    element: currentElement,\r\n                    hint: currentElement.getAttribute('data-hint'),\r\n                    hintPosition: currentElement.getAttribute('data-hintposition') || this._options.hintPosition,\r\n                    hintAnimation,\r\n                    tooltipClass: currentElement.getAttribute('data-tooltipclass'),\r\n                    position: currentElement.getAttribute('data-position') || this._options.tooltipPosition\r\n                });\r\n            }, null);\r\n        }\r\n        this._addHints();\r\n        /*\r\n        todo:\r\n        these events should be removed at some point\r\n        */\r\n        this.DOMEvent.on(document, 'click', this._removeHintTooltip, this, false);\r\n        this.DOMEvent.on(window, 'resize', this._reAlignHints, this, true);\r\n    }\r\n    private _reAlignHints() {\r\n        this._forEach(this._introItems, (item) => {\r\n            if (typeof (item.targetElement) === 'undefined') {\r\n                return;\r\n            }\r\n            this._alignHintPosition(item.hintPosition, item.element, item.targetElement);\r\n        }, null);\r\n    }\r\n    private _hintQuerySelectorAll(selector) {\r\n        const hintsWrapper = document.querySelector('.introjs-hints');\r\n        return (hintsWrapper) ? hintsWrapper.querySelectorAll(selector) : [];\r\n    }\r\n    public _hideHint(stepId) {\r\n        const hint = this._hintQuerySelectorAll('.introjs-hint[data-step=\"' + stepId + '\"]')[0];\r\n        this._removeHintTooltip();\r\n        if (hint) {\r\n            this._addClass(hint, 'introjs-hidehint');\r\n        }\r\n        // call the callback function (if any)\r\n        if (typeof (this._hintCloseCallback) !== 'undefined') {\r\n            this._hintCloseCallback(stepId);\r\n        }\r\n    }\r\n    public _hideHints() {\r\n        const hints = this._hintQuerySelectorAll('.introjs-hint');\r\n        this._forEach(hints, (hint) => {\r\n            this._hideHint(hint.getAttribute('data-step'));\r\n        });\r\n    }\r\n    public _showHints() {\r\n        const hints = this._hintQuerySelectorAll('.introjs-hint');\r\n        if (hints && hints.length) {\r\n            this._forEach(hints, (hint) => {\r\n                this._showHint(hint.getAttribute('data-step'));\r\n            });\r\n        } else {\r\n            this._populateHints(this._targetElement);\r\n        }\r\n    }\r\n    public _showHint(stepId) {\r\n        const hint = this._hintQuerySelectorAll('.introjs-hint[data-step=\"' + stepId + '\"]')[0];\r\n        if (hint) {\r\n            this._removeClass(hint, /introjs-hidehint/g);\r\n        }\r\n    }\r\n    public _removeHints() {\r\n        const hints = this._hintQuerySelectorAll('.introjs-hint');\r\n        this._forEach(hints, (hint) => {\r\n            this._removeHint(hint.getAttribute('data-step'));\r\n        });\r\n    }\r\n    public _removeHint(stepId) {\r\n        const hint = this._hintQuerySelectorAll('.introjs-hint[data-step=\"' + stepId + '\"]')[0];\r\n        if (hint) {\r\n            hint.parentNode.removeChild(hint);\r\n        }\r\n    }\r\n    private _addHints() {\r\n        const self = this;\r\n        let hintsWrapper = document.querySelector('.introjs-hints');\r\n        if (hintsWrapper === null) {\r\n            hintsWrapper = document.createElement('div');\r\n            hintsWrapper.className = 'introjs-hints';\r\n        }\r\n        const getHintClick = function(i) {\r\n            return function(e) {\r\n                const evt = e ? e : window.event;\r\n                if (evt.stopPropagation) {\r\n                    evt.stopPropagation();\r\n                }\r\n                if (evt.cancelBubble !== null) {\r\n                    evt.cancelBubble = true;\r\n                }\r\n                this._showHintDialog.call(self, i);\r\n            };\r\n        };\r\n        this._forEach(this._introItems, (item, i) => {\r\n            // avoid append a hint twice\r\n            if (document.querySelector('.introjs-hint[data-step=\"' + i + '\"]')) {\r\n                return;\r\n            }\r\n            const hint = document.createElement('a');\r\n            this._setAnchorAsButton(hint);\r\n            hint.onclick = getHintClick(i);\r\n            hint.className = 'introjs-hint';\r\n            if (!item.hintAnimation) {\r\n                this._addClass(hint, 'introjs-hint-no-anim');\r\n            }\r\n            // hint's position should be fixed if the target element's position is fixed\r\n            if (this._isFixed(item.element)) {\r\n                this._addClass(hint, 'introjs-fixedhint');\r\n            }\r\n            const hintDot = document.createElement('div');\r\n            hintDot.className = 'introjs-hint-dot';\r\n            const hintPulse = document.createElement('div');\r\n            hintPulse.className = 'introjs-hint-pulse';\r\n            hint.appendChild(hintDot);\r\n            hint.appendChild(hintPulse);\r\n            hint.setAttribute('data-step', i);\r\n            // we swap the hint element with target element\r\n            // because _setHelperLayerPosition uses `element` property\r\n            item.targetElement = item.element;\r\n            item.element = hint;\r\n            // align the hint position\r\n            this._alignHintPosition(item.hintPosition, hint, item.targetElement);\r\n            hintsWrapper.appendChild(hint);\r\n        });\r\n        // adding the hints wrapper\r\n        document.body.appendChild(hintsWrapper);\r\n        // call the callback function (if any)\r\n        if (typeof (this._hintsAddedCallback) !== 'undefined') {\r\n            this._hintsAddedCallback();\r\n        }\r\n    }\r\n    private _alignHintPosition(position, hint, element) {\r\n        // get/calculate offset of target element\r\n        const offset = this._getOffset(element);\r\n        const iconWidth = 20;\r\n        const iconHeight = 20;\r\n        // align the hint element\r\n        switch (position) {\r\n            default:\r\n            case 'top-left':\r\n                hint.style.left = offset.left + 'px';\r\n                hint.style.top = offset.top + 'px';\r\n                break;\r\n            case 'top-right':\r\n                hint.style.left = (offset.left + offset.width - iconWidth) + 'px';\r\n                hint.style.top = offset.top + 'px';\r\n                break;\r\n            case 'bottom-left':\r\n                hint.style.left = offset.left + 'px';\r\n                hint.style.top = (offset.top + offset.height - iconHeight) + 'px';\r\n                break;\r\n            case 'bottom-right':\r\n                hint.style.left = (offset.left + offset.width - iconWidth) + 'px';\r\n                hint.style.top = (offset.top + offset.height - iconHeight) + 'px';\r\n                break;\r\n            case 'middle-left':\r\n                hint.style.left = offset.left + 'px';\r\n                hint.style.top = (offset.top + (offset.height - iconHeight) / 2) + 'px';\r\n                break;\r\n            case 'middle-right':\r\n                hint.style.left = (offset.left + offset.width - iconWidth) + 'px';\r\n                hint.style.top = (offset.top + (offset.height - iconHeight) / 2) + 'px';\r\n                break;\r\n            case 'middle-middle':\r\n                hint.style.left = (offset.left + (offset.width - iconWidth) / 2) + 'px';\r\n                hint.style.top = (offset.top + (offset.height - iconHeight) / 2) + 'px';\r\n                break;\r\n            case 'bottom-middle':\r\n                hint.style.left = (offset.left + (offset.width - iconWidth) / 2) + 'px';\r\n                hint.style.top = (offset.top + offset.height - iconHeight) + 'px';\r\n                break;\r\n            case 'top-middle':\r\n                hint.style.left = (offset.left + (offset.width - iconWidth) / 2) + 'px';\r\n                hint.style.top = offset.top + 'px';\r\n                break;\r\n        }\r\n    }\r\n    public _showHintDialog(stepId) {\r\n        const hintElement = document.querySelector('.introjs-hint[data-step=\"' + stepId + '\"]');\r\n        const item = this._introItems[stepId];\r\n        // call the callback function (if any)\r\n        if (typeof (this._hintClickCallback) !== 'undefined') {\r\n            this._hintClickCallback(hintElement, item, stepId);\r\n        }\r\n        // remove all open tooltips\r\n        const removedStep = this._removeHintTooltip();\r\n        // to toggle the tooltip\r\n        if (parseInt(removedStep, 10) === stepId) {\r\n            return;\r\n        }\r\n        const tooltipLayer = document.createElement('div');\r\n        const tooltipTextLayer = document.createElement('div');\r\n        const arrowLayer = document.createElement('div');\r\n        const referenceLayer = document.createElement('div');\r\n        tooltipLayer.className = 'introjs-tooltip';\r\n        tooltipLayer.onclick = (e) => {\r\n            // IE9 & Other Browsers\r\n            if (e.stopPropagation) {\r\n                e.stopPropagation();\r\n            } else {\r\n                e.cancelBubble = true;\r\n            }\r\n        };\r\n        tooltipTextLayer.className = 'introjs-tooltiptext';\r\n        const tooltipWrapper = document.createElement('p');\r\n        tooltipWrapper.innerHTML = item.hint;\r\n        const closeButton = document.createElement('a');\r\n        closeButton.className = this._options.buttonClass;\r\n        closeButton.setAttribute('role', 'button');\r\n        closeButton.innerHTML = this._options.hintButtonLabel;\r\n        closeButton.onclick = this._hideHint.bind(this, stepId);\r\n        tooltipTextLayer.appendChild(tooltipWrapper);\r\n        tooltipTextLayer.appendChild(closeButton);\r\n        arrowLayer.className = 'introjs-arrow';\r\n        tooltipLayer.appendChild(arrowLayer);\r\n        tooltipLayer.appendChild(tooltipTextLayer);\r\n        // set current step for _placeTooltip function\r\n        this._currentStep = hintElement.getAttribute('data-step');\r\n        // align reference layer position\r\n        referenceLayer.className = 'introjs-tooltipReferenceLayer introjs-hintReference';\r\n        referenceLayer.setAttribute('data-step', hintElement.getAttribute('data-step'));\r\n        this._setHelperLayerPosition(referenceLayer);\r\n        referenceLayer.appendChild(tooltipLayer);\r\n        document.body.appendChild(referenceLayer);\r\n        // set proper position\r\n        this._placeTooltip(hintElement, tooltipLayer, arrowLayer, null, true);\r\n    }\r\n    private _getOffset(element) {\r\n        const body = document.body;\r\n        const docEl = document.documentElement;\r\n        const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n        const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\r\n        const x = element.getBoundingClientRect();\r\n        return {\r\n            top: x.top + scrollTop,\r\n            width: x.width,\r\n            height: x.height,\r\n            left: x.left + scrollLeft\r\n        };\r\n    }\r\n    private _getScrollParent(element) {\r\n        let style = window.getComputedStyle(element);\r\n        const excludeStaticParent = (style.position === 'absolute');\r\n        const overflowRegex = /(auto|scroll)/;\r\n        if (style.position === 'fixed') {\r\n            return document.body;\r\n        }\r\n        for (let parent = element; (parent = parent.parentElement);) {\r\n            style = window.getComputedStyle(parent);\r\n            if (excludeStaticParent && style.position === 'static') {\r\n                continue;\r\n            }\r\n            if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\r\n                return parent;\r\n            }\r\n        }\r\n        return document.body;\r\n    }\r\n    private _scrollParentToElement(parent, element) {\r\n        parent.scrollTop = element.offsetTop - parent.offsetTop;\r\n    }\r\n    private _getProgress() {\r\n        // Steps are 0 indexed\r\n        const currentStep = parseInt((this._currentStep + 1), 10);\r\n        return ((currentStep / this._introItems.length) * 100);\r\n    }\r\n}\r\n","import { IntroJsOptions } from './IntroJsOptions';\r\nimport { IntroJsImplementation } from './IntroJsImplementation';\r\n\r\nexport class IntroJs {\r\n    public Instance: IntroJsImplementation;\r\n    public VERSION = '2.9.3';\r\n\r\n    constructor() {\r\n        let instance;\r\n        instance = new IntroJsImplementation(document.body);\r\n        this.Instance = instance;\r\n    }\r\n\r\n    setOption(option, value): IntroJs {\r\n        this.Instance._options[option] = value;\r\n        return this;\r\n    }\r\n\r\n    setOptions(options): IntroJs {\r\n        this.Instance._options = this._mergeOptions(this.Instance._options, options);\r\n        return this;\r\n    }\r\n\r\n    start(group): IntroJs {\r\n        this.Instance._introForElement(this.Instance._targetElement, group);\r\n        return this;\r\n    }\r\n\r\n    goToStep(step): IntroJs {\r\n        this.Instance._goToStep(step);\r\n        return this;\r\n    }\r\n\r\n    addStep(options): IntroJs {\r\n        if (!this.Instance._options.steps) {\r\n            this.Instance._options.steps = [];\r\n        }\r\n        this.Instance._options.steps.push(options);\r\n        return this;\r\n    }\r\n\r\n    goToStepNumber(step): IntroJs {\r\n        this.Instance._goToStepNumber(step);\r\n        return this;\r\n    }\r\n\r\n    nextStep(): IntroJs {\r\n        this.Instance._nextStep();\r\n        return this;\r\n    }\r\n    previousStep(): IntroJs {\r\n        this.Instance._previousStep();\r\n        return this;\r\n    }\r\n    exit(force = false): IntroJs {\r\n        this.Instance._exitIntro(this.Instance._targetElement, force);\r\n        return this;\r\n    }\r\n    refresh(): IntroJs {\r\n        this.Instance._refresh();\r\n        return this;\r\n    }\r\n    onbeforechange(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introBeforeChangeCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onbeforechange was not a function');\r\n        }\r\n        return this;\r\n    }\r\n    onchange(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introChangeCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onchange was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onafterchange(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introAfterChangeCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onafterchange was not a function');\r\n        }\r\n        return this;\r\n    }\r\n    oncomplete(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introCompleteCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for oncomplete was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onhintsadded(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._hintsAddedCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onhintsadded was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onhintclick(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._hintClickCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onhintclick was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onhintclose(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._hintCloseCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onhintclose was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onexit(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introExitCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onexit was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onskip(providedCallback) : IntroJs{\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introSkipCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onskip was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    onbeforeexit(providedCallback): IntroJs {\r\n        if (typeof (providedCallback) === 'function') {\r\n            this.Instance._introBeforeExitCallback = providedCallback;\r\n        } else {\r\n            throw new Error('Provided callback for onbeforeexit was not a function.');\r\n        }\r\n        return this;\r\n    }\r\n    addHints(): IntroJs {\r\n        this.Instance._populateHints(this.Instance._targetElement);\r\n        return this;\r\n    }\r\n    hideHint(stepId): IntroJs {\r\n        this.Instance._hideHint(stepId);\r\n        return this;\r\n    }\r\n    hideHints(): IntroJs {\r\n        this.Instance._hideHints();\r\n        return this;\r\n    }\r\n    showHint(stepId) : IntroJs{\r\n        this.Instance._showHint(stepId);\r\n        return this;\r\n    }\r\n    showHints() : IntroJs{\r\n        this.Instance._showHints();\r\n        return this;\r\n    }\r\n    removeHints() : IntroJs{\r\n        this.Instance._removeHints();\r\n        return this;\r\n    }\r\n    removeHint(stepId): IntroJs {\r\n        this.Instance._removeHint(stepId);\r\n        return this;\r\n    }\r\n    showHintDialog(stepId): IntroJs {\r\n        this.Instance._showHintDialog(stepId);\r\n        return this;\r\n    }\r\n\r\n    private _mergeOptions(obj1: IntroJsOptions, obj2: IntroJsOptions): IntroJsOptions {\r\n        let obj3: any = {};\r\n        let attrname;\r\n\r\n        for (attrname in obj1) { obj3[attrname] = obj1[attrname]; }\r\n        for (attrname in obj2) { obj3[attrname] = obj2[attrname]; }\r\n        return obj3;\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { IntroJs } from './models/IntroJs';\r\nimport { IntroJsOptions } from './models/IntroJsOptions';\r\n\r\nexport enum introStatus {\r\n\topen,\r\n\tclosed\r\n}\r\n\r\nexport interface IIntrojsService {\r\n\tintro: IntroJs;\r\n\taddListener(name: introStatus, callback: Function): void;\r\n\tremoveListener(name: introStatus): void;\r\n\tsetOptions(IntroJsOptions);\r\n\tstart(stepId?: number, group?: string): IntroJs;\r\n\texit(): IntroJs;\r\n\tclear(callback: Function): IntroJs;\r\n\taddHints(): IntroJs;\r\n\tshowHint(hintIdx: number): IntroJs;\r\n\tshowHints(): IntroJs;\r\n\thideHint(hintIdx: number): IntroJs;\r\n\thideHints(): IntroJs;\r\n\tprevious(): IntroJs;\r\n\tnext(): IntroJs;\r\n\trefresh(): IntroJs;\r\n\tonComplete(callback: Function): void;\r\n\tonExit(callback: Function): void;\r\n\tonBeforeChange(callback: Function): void;\r\n\tonAfterChange(callback: Function): void;\r\n\tonChange(callback: Function): void;\r\n\tonHintClick(callback: Function): void;\r\n\tonHintClose(callback: Function): void;\r\n\tonHintsAdded(callback: Function): void;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class IntroJsService implements IIntrojsService {\r\n\tprivate notifyList = [];\r\n\tpublic intro: IntroJs;\r\n\r\n\tprivate isFunction(func) {\r\n\t\treturn typeof func === \"function\"\r\n\t}\r\n\tconstructor() {\r\n\t\tthis.intro = new IntroJs();\r\n\t}\r\n\r\n\taddListener(name: introStatus, cb: Function) {\r\n\t\tif (this.isFunction(cb))\r\n\t\t\tthis.notifyList[name] = cb;\r\n\t}\r\n\tremoveListener(name: introStatus) {\r\n\t\tdelete this.notifyList[name];\r\n\t}\r\n\tprivate notifyListeners(status: introStatus) {\r\n\t\tfor (var key in this.notifyList) {\r\n\t\t\tif (this.notifyList.hasOwnProperty(key)) {\r\n\t\t\t\tif (this.isFunction(this.notifyList[key]))\r\n\t\t\t\t\tthis.notifyList[key](status);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tsetOptions(options: IntroJsOptions) {\r\n\t\treturn this.intro.setOptions(options);\r\n\t}\r\n\tstart(step?: number, group?: string) {\r\n\t\tif (step && typeof (step) === 'number')\r\n\t\t\tthis.intro.start(group).goToStep(step);\r\n\t\telse\r\n\t\t\tthis.intro.start(group);\r\n\r\n\t\tthis.notifyListeners(introStatus.open);\r\n\r\n\t\treturn this.intro;\r\n\t}\r\n\texit() {\r\n\t\tthis.notifyListeners(introStatus.closed);\r\n\t\treturn this.intro.exit();\r\n\t}\r\n\tclear(cb: Function) {\r\n\t\tif (typeof (this.intro) !== 'undefined')\r\n\t\t\tthis.intro.exit();\r\n\r\n\t\tthis.intro = new IntroJs();\r\n\r\n\t\tthis.notifyListeners(introStatus.closed);\r\n\r\n\t\tif (this.isFunction(cb)) cb();\r\n\r\n\t\treturn this.intro;\r\n\t}\r\n\taddHints() {\r\n\t\treturn this.intro.addHints();\r\n\t}\r\n\tshowHint(hintIndex: number) {\r\n\t\treturn this.intro.showHint(hintIndex);\r\n\t}\r\n\tshowHints() {\r\n\t\treturn this.intro.showHints();\r\n\t}\r\n\thideHint(hintIndex: number) {\r\n\t\treturn this.intro.hideHint(hintIndex);\r\n\t}\r\n\thideHints() {\r\n\t\treturn this.intro.hideHints();\r\n\t}\r\n\tprevious() {\r\n\t\tthis.notifyListeners(introStatus.open);\r\n\t\treturn this.intro.previousStep();\r\n\t}\r\n\tnext() {\r\n\t\tthis.notifyListeners(introStatus.open);\r\n\t\treturn this.intro.nextStep();\r\n\t}\r\n\trefresh() {\r\n\t\treturn this.intro.refresh();\r\n\t}\r\n\tonComplete(cb: Function) {\r\n\t\treturn this.intro.oncomplete(() => {\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t\tthis.notifyListeners(introStatus.closed);\r\n\t\t});\r\n\t}\r\n\tonExit(cb: Function) {\r\n\t\treturn this.intro.onexit(() => {\r\n\t\t\tthis.notifyListeners(introStatus.closed);\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t});\r\n\t}\r\n\tonBeforeChange(cb: Function) {\r\n\t\treturn this.intro.onbeforechange((target) => {\r\n\t\t\tif (this.isFunction(cb)) cb(target);\r\n\t\t});\r\n\t}\r\n\tonChange(cb: Function) {\r\n\t\treturn this.intro.onchange(() => {\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t});\r\n\t}\r\n\tonAfterChange(cb: Function) {\r\n\t\treturn this.intro.onafterchange(() => {\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t});\r\n\t}\r\n\tonHintClick(cb: Function) {\r\n\t\treturn this.intro.onhintclick(() => {\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t});\r\n\t}\r\n\tonHintClose(cb: Function) {\r\n\t\treturn this.intro.onhintclose(() => {\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t});\r\n\t}\r\n\tonHintsAdded(cb: Function) {\r\n\t\treturn this.intro.onhintclose(() => {\r\n\t\t\tif (this.isFunction(cb)) cb();\r\n\t\t});\r\n\t}\r\n}","/*\r\n * Public API Surface of ngx-introjs\r\n */\r\n\r\n\r\nexport { IntroJsModule } from './lib/intro-js.module';\r\nexport { IntroJsService } from './lib/intro-js.service';\r\nexport { IntroJsDirective } from './lib/intro-js.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}