{"version":3,"file":"igniteui-angular-navigation-drawer.mjs","sources":["../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.directives.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.html","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/public_api.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.module.ts","../../../projects/igniteui-angular/navigation-drawer/src/igniteui-angular-navigation-drawer.ts"],"sourcesContent":["import { Directive, HostBinding, Input, TemplateRef, booleanAttribute, inject } from '@angular/core';\n\n@Directive({\n    selector: '[igxDrawerItem]',\n    exportAs: 'igxDrawerItem',\n    standalone: true\n})\nexport class IgxNavDrawerItemDirective {\n\n    /**\n     * Styles a navigation drawer item as selected.\n     * If not set, `active` will have default value `false`.\n     *\n     * @example\n     * ```html\n     * <span igxDrawerItem [active]=\"true\">Active Item</span>\n     * ```\n     */\n    @Input({ transform: booleanAttribute }) public active = false;\n\n    /**\n     * Disables a navigation drawer item.\n     * If not set, `disabled` will have default value `false`.\n     *\n     * @example\n     * ```html\n     * <span igxDrawerItem [disabled]=\"true\">Disabled Item</span>\n     * ```\n     */\n    @Input({ transform: booleanAttribute }) public disabled = false;\n\n    /**\n     * Styles a navigation drawer item as a group header.\n     * If not set, `isHeader` will have default value `false`.\n     *\n     * @example\n     * ```html\n     * <span igxDrawerItem [isHeader]=\"true\">Header</span>\n     * ```\n     */\n    @Input({ transform: booleanAttribute }) public isHeader = false;\n\n    /**\n     * @hidden\n     */\n    public readonly activeClass = 'igx-nav-drawer__item--active';\n\n     /**\n     * @hidden\n     */\n     public readonly disabledClass = 'igx-nav-drawer__item--disabled';\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-nav-drawer__item')\n    public get defaultCSS(): boolean {\n        return !this.active && !this.isHeader;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-nav-drawer__item--active')\n    public get currentCSS(): boolean {\n        return this.active && !this.isHeader && !this.disabled;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-nav-drawer__item--header')\n    public get headerCSS(): boolean {\n        return this.isHeader;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-nav-drawer__item--disabled')\n    public get disabledCSS(): boolean {\n        return this.disabled;\n    }\n}\n\n@Directive({\n    selector: '[igxDrawer]',\n    standalone: true\n})\nexport class IgxNavDrawerTemplateDirective {\n    public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n    selector: '[igxDrawerMini]',\n    standalone: true\n})\nexport class IgxNavDrawerMiniTemplateDirective {\n    public template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import { AfterContentInit, afterRenderEffect, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, ViewChild, Renderer2, booleanAttribute, inject, signal, computed } from '@angular/core';\nimport { fromEvent, interval, Subscription } from 'rxjs';\nimport { debounce } from 'rxjs/operators';\nimport { IgxNavigationService, IToggleView } from 'igniteui-angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport { IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerItemDirective } from './navigation-drawer.directives';\nimport { PlatformUtil } from 'igniteui-angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { HammerInput } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n/**\n * **Ignite UI for Angular Navigation Drawer** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)\n *\n * The Ignite UI Navigation Drawer is a collapsible side navigation container commonly used in combination with the Navbar.\n *\n * Example:\n * ```html\n * <igx-nav-drawer id=\"navigation\" [isOpen]=\"true\">\n *   <ng-template igxDrawer>\n *     <nav>\n *       <span igxDrawerItem [isHeader]=\"true\">Email</span>\n *       <span igxDrawerItem igxRipple>Inbox</span>\n *       <span igxDrawerItem igxRipple>Deleted</span>\n *       <span igxDrawerItem igxRipple>Sent</span>\n *     </nav>\n *   </ng-template>\n * </igx-nav-drawer>\n * ```\n */\n@Component({\n    providers: [HammerGesturesManager],\n    selector: 'igx-nav-drawer',\n    templateUrl: 'navigation-drawer.component.html',\n    styles: [`\n        :host {\n            display: block;\n            height: 100%;\n        }\n    `],\n    imports: [IgxNavDrawerItemDirective, NgTemplateOutlet]\n})\nexport class IgxNavigationDrawerComponent implements\n    IToggleView,\n    OnInit,\n    AfterContentInit,\n    OnDestroy,\n    OnChanges {\n    private elementRef = inject<ElementRef>(ElementRef);\n    private _state = inject(IgxNavigationService, { optional: true });\n    private renderer = inject(Renderer2);\n    private _touchManager = inject(HammerGesturesManager);\n    private platformUtil = inject(PlatformUtil);\n\n    private _isOpen = signal(false);\n    private _pinned = signal(false);\n    private _miniTemplate = signal<IgxNavDrawerMiniTemplateDirective | undefined>(undefined);\n    private _visibleOverlay = computed<boolean>(() => {\n        return !this._pinned() && (this._isOpen() || !!this._miniTemplate());\n    });\n    private _closingAnimation = signal(false);\n\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-nav-drawer')\n    public cssClass = true;\n\n    /**\n     * ID of the component\n     *\n     * ```typescript\n     * // get\n     * let myNavDrawerId = this.navdrawer.id;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     *  <igx-nav-drawer id='navdrawer'></igx-nav-drawer>\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input() public id = `igx-nav-drawer-${NEXT_ID++}`;\n\n    /**\n     * Position of the Navigation Drawer. Can be \"left\"(default) or \"right\".\n     *\n     * ```typescript\n     * // get\n     * let myNavDrawerPosition = this.navdrawer.position;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [position]=\"'left'\"></igx-nav-drawer>\n     * ```\n     */\n    @Input() public position = 'left';\n\n    /**\n     * Enables the use of touch gestures to manipulate the drawer:\n     * - swipe/pan from edge to open, swipe-toggle and pan-drag.\n     *\n     * ```typescript\n     * // get\n     * let gesturesEnabled = this.navdrawer.enableGestures;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [enableGestures]='true'></igx-nav-drawer>\n     * ```\n     */\n    @Input({ transform: booleanAttribute }) public enableGestures = true;\n\n    /**\n     * @hidden\n     */\n    @Output() public isOpenChange = new EventEmitter<boolean>();\n\n    /**\n     * Minimum device width required for automatic pin to be toggled.\n     * Default is 1024, can be set to a falsy value to disable this behavior.\n     *\n     * ```typescript\n     * // get\n     * let navDrawerPinThreshold = this.navdrawer.pinThreshold;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [pinThreshold]='1024'></igx-nav-drawer>\n     * ```\n     */\n    @Input() public pinThreshold = 1024;\n\n    /**\n     * When pinned the drawer is relatively positioned instead of sitting above content.\n     * May require additional layout styling.\n     *\n     * ```typescript\n     * // get\n     * let navDrawerIsPinned = this.navdrawer.pin;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [pin]=\"false\"></igx-nav-drawer>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public get pin(): boolean {\n        return this._pinned();\n    }\n    public set pin(v: boolean) {\n        this._pinned.set(v);\n    }\n\n\n    /**\n     * Width of the drawer in its open state.\n     *\n     * ```typescript\n     * // get\n     * let navDrawerWidth = this.navdrawer.width;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [width]=\"'228px'\"></igx-nav-drawer>\n     * ```\n     */\n    private _width: string;\n\n    @Input()\n    public get width() {\n        return this._width;\n    }\n    public set width(value: string) {\n        this._width = value;\n    }\n\n\n    /**\n     * Enables/disables the animation, when toggling the drawer. Set to `false` by default.\n     * ````html\n     * <igx-nav-drawer [disableAnimation]=\"true\"></igx-nav-drawer>\n     * ````\n     */\n    @HostBinding('class.igx-nav-drawer--disable-animation')\n    @Input({ transform: booleanAttribute }) public disableAnimation = false;\n\n    /**\n     * Width of the drawer in its mini state.\n     *\n     * ```typescript\n     * // get\n     * let navDrawerMiniWidth = this.navdrawer.miniWidth;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [miniWidth]=\"'34px'\"></igx-nav-drawer>\n     * ```\n     */\n    @Input() public miniWidth: string;\n\n    /**\n     * Pinned state change output for two-way binding.\n     *\n     * ```html\n     * <igx-nav-drawer [(pin)]='isPinned'></igx-nav-drawer>\n     * ```\n     */\n    @Output() public pinChange = new EventEmitter<boolean>(true);\n    /**\n     * Event fired as the Navigation Drawer is about to open.\n     *\n     * ```html\n     *  <igx-nav-drawer (opening)='onOpening()'></igx-nav-drawer>\n     * ```\n     */\n    @Output() public opening = new EventEmitter();\n    /**\n     * Event fired when the Navigation Drawer has opened.\n     *\n     * ```html\n     * <igx-nav-drawer (opened)='onOpened()'></igx-nav-drawer>\n     * ```\n     */\n    @Output() public opened = new EventEmitter();\n    /**\n     * Event fired as the Navigation Drawer is about to close.\n     *\n     * ```html\n     * <igx-nav-drawer (closing)='onClosing()'></igx-nav-drawer>\n     * ```\n     */\n    @Output() public closing = new EventEmitter();\n    /**\n     * Event fired when the Navigation Drawer has closed.\n     *\n     * ```html\n     * <igx-nav-drawer (closed)='onClosed()'></igx-nav-drawer>\n     * ```\n     */\n    @Output() public closed = new EventEmitter();\n\n    /**\n     * @hidden\n     */\n    @ContentChild(IgxNavDrawerTemplateDirective, { read: IgxNavDrawerTemplateDirective })\n    protected contentTemplate: IgxNavDrawerTemplateDirective;\n\n    @ViewChild('aside', { static: true }) private _drawer: ElementRef<HTMLElement>;\n    @ViewChild('overlay', { static: true }) private _overlay: ElementRef<HTMLElement>;\n    @ViewChild('dummy', { static: true }) private _styleDummy: ElementRef<HTMLElement>;\n\n    /**\n     * State of the drawer.\n     *\n     * ```typescript\n     * // get\n     * let navDrawerIsOpen = this.navdrawer.isOpen;\n     * ```\n     *\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [isOpen]='false'></igx-nav-drawer>\n     * ```\n     *\n     * Two-way data binding.\n     * ```html\n     * <!--set-->\n     * <igx-nav-drawer [(isOpen)]='model.isOpen'></igx-nav-drawer>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public get isOpen() {\n        return this._isOpen();\n    }\n    public set isOpen(value) {\n        this._isOpen.set(value);\n        this.isOpenChange.emit(value);\n    }\n\n    /**\n     * Returns nativeElement of the component.\n     *\n     * @hidden\n     */\n    public get element() {\n        return this.elementRef.nativeElement;\n    }\n\n    /**\n     * @hidden\n     */\n    public get template() {\n        if (this.miniTemplate && !this.isOpen) {\n            return this.miniTemplate.template;\n        } else if (this.contentTemplate) {\n            return this.contentTemplate.template;\n        }\n    }\n    /**\n     * @hidden\n     */\n    public get miniTemplate(): IgxNavDrawerMiniTemplateDirective {\n        return this._miniTemplate();\n    }\n\n    /**\n     * @hidden\n     */\n    @ContentChild(IgxNavDrawerMiniTemplateDirective, { read: IgxNavDrawerMiniTemplateDirective })\n    public set miniTemplate(v: IgxNavDrawerMiniTemplateDirective) {\n        this._miniTemplate.set(v);\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-nav-drawer--mini')\n    public get isMini(): boolean {\n        return !!this.miniTemplate && !this.isOpen;\n    }\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-nav-drawer--pinned')\n    public get pinned(): boolean {\n        return !!this.pin;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('style.--ig-nav-drawer-size')\n    public get normalSize() {\n        if (!this.isOpen) {\n            return '0px';\n        }\n\n        return this.width;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('style.--ig-nav-drawer-size--mini')\n    public get miniSize() {\n        if (this.miniTemplate && this.miniWidth) {\n            return this.miniWidth;\n        }\n    }\n\n    /** @hidden */\n    @HostBinding('style.order')\n    public get isPinnedRight() {\n        return this.pin && this.position === 'right' ? '1' : '0';\n    }\n\n    private _gesturesAttached = false;\n    private _widthCache: { width: number; miniWidth: number; windowWidth: number } = { width: null, miniWidth: null, windowWidth: null };\n    private _resizeObserver: Subscription;\n    private css: { [name: string]: string } = {\n        drawer: 'igx-nav-drawer__aside',\n        mini: 'igx-nav-drawer__aside--mini',\n        overlay: 'igx-nav-drawer__overlay',\n        styleDummy: 'igx-nav-drawer__style-dummy'\n    };\n\n    /**\n     * @hidden\n     */\n    public get drawer() {\n        return this._drawer?.nativeElement;\n    }\n\n    /**\n     * @hidden\n     */\n    public get overlay() {\n        return this._overlay?.nativeElement;\n    }\n\n    /**\n     * @hidden\n     */\n    public get styleDummy() {\n        return this._styleDummy.nativeElement;\n    }\n\n    /** Pan animation properties */\n    private _panning = false;\n    private _panStartWidth: number;\n    private _panLimit: number;\n\n    /**\n     * Property to decide whether to change width or translate the drawer from pan gesture.\n     *\n     * @hidden\n     */\n    public get hasAnimateWidth(): boolean {\n        return this.pin || !!this.miniTemplate;\n    }\n\n    private _maxEdgeZone = 50;\n    /**\n     * Used for touch gestures (swipe and pan).\n     * Defaults to 50 (in px) and is extended to at least 110% of the mini template width if available.\n     *\n     * @hidden\n     */\n    public get maxEdgeZone() {\n        return this._maxEdgeZone;\n    }\n\n    /**\n     * Gets the Drawer width for specific state.\n     * Will attempt to evaluate requested state and cache.\n     *\n     *\n     * @hidden\n     */\n    public get expectedWidth() {\n        return this.getExpectedWidth(false);\n    }\n\n    /**\n     * Get the Drawer mini width for specific state.\n     * Will attempt to evaluate requested state and cache.\n     *\n     * @hidden\n     */\n    public get expectedMiniWidth() {\n        return this.getExpectedWidth(true);\n    }\n\n    /**\n     * @hidden\n     */\n    public get touchManager() {\n        return this._touchManager;\n    }\n\n    /**\n     * Exposes optional navigation service\n     *\n     * @hidden\n     */\n    public get state() {\n        return this._state;\n    }\n\n    constructor() {\n        afterRenderEffect(() => {\n            if (this._closingAnimation()) return;\n            this.togglePopover(this._visibleOverlay());\n        });\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnInit() {\n        // DOM and @Input()-s initialized\n        if (this._state) {\n            this._state.add(this.id, this);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public ngAfterContentInit() {\n        // wait for template and ng-content to be ready\n        this.updateEdgeZone();\n        this.checkPinThreshold();\n\n        this.ensureEvents();\n\n        // TODO: apply platform-safe Ruler from http://plnkr.co/edit/81nWDyreYMzkunihfRgX?p=preview\n        // (https://github.com/angular/angular/issues/6515), blocked by https://github.com/angular/angular/issues/6904\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnDestroy() {\n        this._touchManager.destroy();\n        if (this._state) {\n            this._state.remove(this.id);\n        }\n        if (this._resizeObserver) {\n            this._resizeObserver.unsubscribe();\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n        // simple settings can come from attribute set (rather than binding), make sure boolean props are converted\n        if (changes.enableGestures && changes.enableGestures.currentValue !== undefined) {\n            this.enableGestures = !!(this.enableGestures && this.enableGestures.toString() === 'true');\n            this.ensureEvents();\n        }\n        if (changes.pin && changes.pin.currentValue !== undefined) {\n            this.pin = !!(this.pin && this.pin.toString() === 'true');\n            if (this.pin) {\n                this._touchManager.destroy();\n                this._gesturesAttached = false;\n            } else {\n                this.ensureEvents();\n            }\n        }\n\n        if (changes.pinThreshold) {\n            if (this.pinThreshold) {\n                this.ensureEvents();\n                this.checkPinThreshold();\n            }\n        }\n\n        if (changes.miniWidth) {\n            this.updateEdgeZone();\n        }\n    }\n\n    /**\n     * Toggle the open state of the Navigation Drawer.\n     *\n     * ```typescript\n     * this.navdrawer.toggle();\n     * ```\n     */\n    public toggle() {\n        if (this.isOpen) {\n            this.close();\n        } else {\n            this.open();\n        }\n    }\n\n    /**\n     * Open the Navigation Drawer. Has no effect if already opened.\n     *\n     * ```typescript\n     * this.navdrawer.open();\n     * ```\n     */\n    public open() {\n        if (this._panning) {\n            this.resetPan();\n        }\n\n        if (this.isOpen) {\n            return;\n        }\n\n        this.opening.emit();\n        this.isOpen = true;\n\n        // TODO: Switch to animate API when available\n        // var animationCss = this.animate.css();\n        //     animationCss\n        //         .setStyles({'width':'50px'}, {'width':'400px'})\n        //         .start(this.elementRef.nativeElement)\n        //         .onComplete(() => animationCss.setToStyles({'width':'auto'}).start(this.elementRef.nativeElement));\n\n        this.elementRef.nativeElement.addEventListener('transitionend', this.toggleOpenedEvent, false);\n\n        requestAnimationFrame(()=>{});\n    }\n\n    /**\n     * Close the Navigation Drawer. Has no effect if already closed.\n     *\n     * ```typescript\n     * this.navdrawer.close();\n     * ```\n     */\n    public close() {\n        if (this._panning) {\n            this.resetPan();\n        }\n\n        if (!this.isOpen) {\n            return;\n        }\n\n        this.closing.emit();\n\n        // TODO: intersection observer for close popover instead of transitionend\n        this._closingAnimation.set(true);\n        this.isOpen = false;\n        this.elementRef.nativeElement.addEventListener('transitionend', this.toggleClosedEvent, false);\n    }\n\n    /**\n     * @hidden\n     */\n    protected set_maxEdgeZone(value: number) {\n        this._maxEdgeZone = value;\n    }\n\n    /**\n     * Get the Drawer width for specific state. Will attempt to evaluate requested state and cache.\n     *\n     * @hidden\n     * @param [mini] - Request mini width instead\n     */\n    protected getExpectedWidth(mini?: boolean): number {\n        if (mini) {\n            if (!this.miniTemplate) {\n                return 0;\n            }\n            if (this.miniWidth) {\n                return parseFloat(this.miniWidth);\n            } else {\n                // if (!this.isOpen) { // This WON'T work due to transition timings...\n                //     return this.elementRef.nativeElement.children[1].offsetWidth;\n                // } else {\n                if (this._widthCache.miniWidth === null) {\n                    // force class for width calc. TODO?\n                    // force class for width calc. TODO?\n                    this.renderer.addClass(this.styleDummy, this.css.drawer);\n                    this.renderer.addClass(this.styleDummy, this.css.mini);\n                    this._widthCache.miniWidth = this.styleDummy.offsetWidth;\n                    this.renderer.removeClass(this.styleDummy, this.css.drawer);\n                    this.renderer.removeClass(this.styleDummy, this.css.mini);\n                }\n                return this._widthCache.miniWidth;\n            }\n        } else {\n            if (this.width) {\n                return parseFloat(this.width);\n            } else {\n                if (this._widthCache.width === null) {\n                    // force class for width calc. TODO?\n                    // force class for width calc. TODO?\n                    this.renderer.addClass(this.styleDummy, this.css.drawer);\n                    this._widthCache.width = this.styleDummy.offsetWidth;\n                    this.renderer.removeClass(this.styleDummy, this.css.drawer);\n                }\n                return this._widthCache.width;\n            }\n        }\n    }\n\n    private getWindowWidth() {\n        return (window.innerWidth > 0) ? window.innerWidth : screen.width;\n    }\n\n    /**\n     * Get current Drawer width.\n     */\n    private getDrawerWidth(): number {\n        return this.drawer.offsetWidth;\n    }\n\n    private ensureEvents() {\n        // set listeners for swipe/pan only if needed, but just once\n        if (this.enableGestures && !this.pin && !this._gesturesAttached) {\n            // Built-in manager handler(L20887) causes endless loop and max stack exception.\n            // https://github.com/angular/angular/issues/6993\n            // Use ours for now (until beta.10):\n            // this.renderer.listen(document, \"swipe\", this.swipe);\n            this._touchManager.addGlobalEventListener('document', 'swipe', this.swipe);\n            this._gesturesAttached = true;\n\n            // this.renderer.listen(document, \"panstart\", this.panstart);\n            // this.renderer.listen(document, \"pan\", this.pan);\n            this._touchManager.addGlobalEventListener('document', 'panstart', this.panstart);\n            this._touchManager.addGlobalEventListener('document', 'panmove', this.pan);\n            this._touchManager.addGlobalEventListener('document', 'panend', this.panEnd);\n        }\n        if (!this._resizeObserver && this.platformUtil.isBrowser) {\n            this._resizeObserver = fromEvent(window, 'resize').pipe(debounce(() => interval(150)))\n                .subscribe((value) => {\n                    this.checkPinThreshold(value);\n                });\n        }\n    }\n\n    private updateEdgeZone() {\n        let maxValue;\n\n        if (this.miniTemplate) {\n            maxValue = Math.max(this._maxEdgeZone, this.getExpectedWidth(true) * 1.1);\n            this.set_maxEdgeZone(maxValue);\n        }\n    }\n\n    private checkPinThreshold = (evt?: Event) => {\n        if (!this.platformUtil.isBrowser) {\n            return;\n        }\n        let windowWidth;\n        if (this.pinThreshold) {\n            windowWidth = this.getWindowWidth();\n            if (evt && this._widthCache.windowWidth === windowWidth) {\n                return;\n            }\n            this._widthCache.windowWidth = windowWidth;\n            if (!this.pin && windowWidth >= this.pinThreshold) {\n                this.pin = true;\n                this.pinChange.emit(true);\n            } else if (this.pin && windowWidth < this.pinThreshold) {\n                this.pin = false;\n                this.pinChange.emit(false);\n            }\n        }\n    };\n\n    private swipe = (evt: HammerInput) => {\n        // TODO: Could also force input type: http://stackoverflow.com/a/27108052\n        if (!this.enableGestures || evt.pointerType !== 'touch') {\n            return;\n        }\n\n        // HammerJS swipe is horizontal-only by default, don't check deltaY\n        let deltaX;\n        let startPosition;\n        if (this.position === 'right') {\n            // when on the right use inverse of deltaX\n            deltaX = -evt.deltaX;\n            startPosition = this.getWindowWidth() - (evt.center.x + evt.distance);\n        } else {\n            deltaX = evt.deltaX;\n            startPosition = evt.center.x - evt.distance;\n        }\n        // only accept closing swipe (ignoring minEdgeZone) when the drawer is expanded:\n        if ((this.isOpen && deltaX < 0) ||\n            // positive deltaX from the edge:\n            (deltaX > 0 && startPosition < this.maxEdgeZone)) {\n            this.toggle();\n        }\n    };\n\n    private panstart = (evt: HammerInput) => { // TODO: test code\n        if (!this.enableGestures || this.pin || evt.pointerType !== 'touch') {\n            return;\n        }\n        const startPosition = this.position === 'right' ? this.getWindowWidth() - (evt.center.x + evt.distance)\n            : evt.center.x - evt.distance;\n\n        // cache width during animation, flag to allow further handling\n        if (this.isOpen || (startPosition < this.maxEdgeZone)) {\n            this._panning = true;\n            this._panStartWidth = this.getExpectedWidth(!this.isOpen);\n            this._panLimit = this.getExpectedWidth(this.isOpen);\n\n            this.renderer.addClass(this.overlay, 'panning');\n            this.renderer.addClass(this.drawer, 'panning');\n        }\n    };\n\n    private pan = (evt: HammerInput) => {\n        // TODO: input.deltaX = prevDelta.x + (center.x - offset.x);\n        // get actual delta (not total session one) from event?\n        // pan WILL also fire after a full swipe, only resize on flag\n        if (!this._panning) {\n            return;\n        }\n        const right: boolean = this.position === 'right';\n        // when on the right use inverse of deltaX\n        const deltaX = right ? -evt.deltaX : evt.deltaX;\n        let newX;\n        let percent;\n        const visibleWidth = this._panStartWidth + deltaX;\n\n        if (this.isOpen && deltaX < 0) {\n            // when visibleWidth hits limit - stop animating\n            if (visibleWidth <= this._panLimit) {\n                return;\n            }\n\n            if (this.hasAnimateWidth) {\n                percent = (visibleWidth - this._panLimit) / (this._panStartWidth - this._panLimit);\n                newX = visibleWidth;\n            } else {\n                percent = visibleWidth / this._panStartWidth;\n                newX = evt.deltaX;\n            }\n            this.setXSize(newX, percent.toPrecision(2));\n\n        } else if (!this.isOpen && deltaX > 0) {\n            // when visibleWidth hits limit - stop animating\n            if (visibleWidth >= this._panLimit) {\n                return;\n            }\n\n            if (this.hasAnimateWidth) {\n                percent = (visibleWidth - this._panStartWidth) / (this._panLimit - this._panStartWidth);\n                newX = visibleWidth;\n            } else {\n                percent = visibleWidth / this._panLimit;\n                newX = (this._panLimit - visibleWidth) * (right ? 1 : -1);\n            }\n            this.setXSize(newX, percent.toPrecision(2));\n        }\n    };\n\n    private panEnd = (evt: HammerInput) => {\n        if (this._panning) {\n            const deltaX = this.position === 'right' ? -evt.deltaX : evt.deltaX;\n            const visibleWidth: number = this._panStartWidth + deltaX;\n            this.resetPan();\n\n            // check if pan brought the drawer to 50%\n            if (this.isOpen && visibleWidth <= this._panStartWidth / 2) {\n                this.close();\n            } else if (!this.isOpen && visibleWidth >= this._panLimit / 2) {\n                this.open();\n            }\n            this._panStartWidth = null;\n        }\n    };\n\n    private resetPan() {\n        this._panning = false;\n        /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n        /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n        this.renderer.removeClass(this.overlay, 'panning');\n        this.renderer.removeClass(this.drawer, 'panning');\n        this.setXSize(0, '');\n    }\n\n    /**\n     * Sets the absolute position or width in case the drawer doesn't change position.\n     *\n     * @param x the number pixels to translate on the X axis or the width to set. 0 width will clear the style instead.\n     * @param opacity optional value to apply to the overlay\n     */\n    private setXSize(x: number, opacity?: string) {\n        // Angular polyfills patches window.requestAnimationFrame, but switch to DomAdapter API (TODO)\n        window.requestAnimationFrame(() => {\n            if (this.hasAnimateWidth) {\n                this.renderer.setStyle(this.drawer, 'width', x ? Math.abs(x) + 'px' : '');\n            } else {\n                this.renderer.setStyle(this.drawer, 'transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n                this.renderer.setStyle(this.drawer, '-webkit-transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n            }\n            if (opacity !== undefined) {\n                this.renderer.setStyle(this.overlay, 'opacity', opacity);\n            }\n        });\n    }\n\n    private togglePopover(show: boolean) {\n        // check element and functionality exist:\n        if (typeof this.drawer?.showPopover !== 'function') return;\n\n        const popoverOpen = this.drawer.matches(':popover-open');\n        if (show === popoverOpen) return;\n\n        if (show) {\n            this.overlay.showPopover();\n            this.drawer.showPopover();\n        } else {\n            this.overlay.hidePopover();\n            this.drawer.hidePopover();\n        }\n    }\n\n    private toggleOpenedEvent = () => {\n        this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleOpenedEvent, false);\n        this.opened.emit();\n    };\n\n    private toggleClosedEvent = () => {\n        this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleClosedEvent, false);\n        this._closingAnimation.set(false);\n        this.closed.emit();\n    };\n}\n","<ng-template #defaultItemsTemplate>\n    <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n    <div igxDrawerItem> Start by adding</div>\n    <div igxDrawerItem> <code>&lt;ng-template igxDrawer&gt;</code> </div>\n    <div igxDrawerItem> And some items inside </div>\n    <div igxDrawerItem> Style with igxDrawerItem </div>\n    <div igxDrawerItem> and igxRipple directives</div>\n    <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n    [attr.popover]=\"pin ? null : 'manual'\"\n    class=\"igx-nav-drawer__overlay\"\n    [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n    [class.igx-nav-drawer--disable-animation]=\"disableAnimation\"\n    (click)=\"close()\" #overlay>\n</div>\n<nav\n    class=\"igx-nav-drawer__aside\"\n    [attr.popover]=\"pin ? null : 'manual'\"\n    [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n    [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n    [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n    [class.igx-nav-drawer__aside--pinned]=\"pin\"\n    [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n    [class.igx-nav-drawer--disable-animation]=\"disableAnimation\">\n\n    <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n","import { IgxNavigationDrawerComponent } from './navigation-drawer.component';\nimport { IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective } from './navigation-drawer.directives';\n\nexport * from './navigation-drawer.component';\nexport * from './navigation-drawer.directives';\n\n/* NOTE: Navigation drawer directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_NAVIGATION_DRAWER_DIRECTIVES = [\n    IgxNavigationDrawerComponent,\n    IgxNavDrawerItemDirective,\n    IgxNavDrawerMiniTemplateDirective,\n    IgxNavDrawerTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_NAVIGATION_DRAWER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n */\n@NgModule({\n    imports: [\n        ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n    ]\n})\nexport class IgxNavigationDrawerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxNavigationDrawerComponent","i2.IgxNavDrawerItemDirective","i2.IgxNavDrawerMiniTemplateDirective","i2.IgxNavDrawerTemplateDirective"],"mappings":"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"}