(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@nativescript/angular'), require('nativescript-ui-sidedrawer')) :
    typeof define === 'function' && define.amd ? define('nativescript-ui-sidedrawer-angular', ['exports', '@angular/core', '@nativescript/angular', 'nativescript-ui-sidedrawer'], factory) :
    (global = global || self, factory(global['nativescript-ui-sidedrawer-angular'] = {}, global.ng.core, global['ns-angular'], global['ns-ui-sidedrawer']));
}(this, (function (exports, core, angular, nativescriptUiSidedrawer) { 'use strict';

    /// <reference path="references.d.ts" />
    var TKDRAWERCONTENT = "TKDrawerContent";
    var TKMAINCONTENT = "TKMainContent";
    /**
    * This is the SideDrawer component. It separates your mobile app's screen
    * into a main part and a menu part whereby the menu part is shown upon a swipe
    * gesture using a transition effect.
    */
    var RadSideDrawerComponent = /** @class */ (function () {
        function RadSideDrawerComponent(elementRef, viewContainer) {
            this.elementRef = elementRef;
            this.viewContainer = viewContainer;
            this.drawerOpening = new core.EventEmitter();
            this.drawerOpen = new core.EventEmitter();
            this.drawerClosing = new core.EventEmitter();
            this.drawerClosed = new core.EventEmitter();
            this.sideDrawer = this.elementRef.nativeElement;
        }
        Object.defineProperty(RadSideDrawerComponent.prototype, "transition", {
            /**
              * [Deprecated: Please use the 'drawerTransition' property instead].
              */
            set: function (transition) {
                this.sideDrawer.drawerTransition = transition;
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(RadSideDrawerComponent.prototype, "nativeElement", {
            get: function () {
                return this.sideDrawer;
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(RadSideDrawerComponent.prototype, "drawerContentSize", {
            /**
              * Defines either the width or the height
              * of the menu pane depending on the location of the SideDrawer.
              * Top or Bottom - height, Right or Left - width.
              */
            set: function (value) {
                this._drawerContentSize = value;
                this.updateContentSize();
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(RadSideDrawerComponent.prototype, "gesturesEnabled", {
            set: function (value) {
                this._gesturesEnabled = value;
                this.updateGesturesEnabled();
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(RadSideDrawerComponent.prototype, "drawerTransition", {
            set: function (value) {
                this._drawerTransition = value;
                this.updateDrawerTransition();
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(RadSideDrawerComponent.prototype, "drawerLocation", {
            set: function (value) {
                this._drawerLocation = value;
                this.updateDrawerLocation();
            },
            enumerable: false,
            configurable: true
        });
        RadSideDrawerComponent.prototype.updateDrawerLocation = function () {
            this.sideDrawer.drawerLocation = this._drawerLocation;
        };
        RadSideDrawerComponent.prototype.updateDrawerTransition = function () {
            this.sideDrawer.drawerTransition = this._drawerTransition;
        };
        RadSideDrawerComponent.prototype.updateGesturesEnabled = function () {
            this.sideDrawer.gesturesEnabled = this._gesturesEnabled;
        };
        RadSideDrawerComponent.prototype.updateContentSize = function () {
            this.sideDrawer.drawerContentSize = this._drawerContentSize;
        };
        return RadSideDrawerComponent;
    }());
    RadSideDrawerComponent.decorators = [
        { type: core.Component, args: [{
                    selector: 'RadSideDrawer',
                    template: "<ng-content></ng-content>"
                },] }
    ];
    RadSideDrawerComponent.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] },
        { type: core.ViewContainerRef, decorators: [{ type: core.Inject, args: [core.ViewContainerRef,] }] }
    ]; };
    RadSideDrawerComponent.propDecorators = {
        drawerOpening: [{ type: core.Output }],
        drawerOpen: [{ type: core.Output }],
        drawerClosing: [{ type: core.Output }],
        drawerClosed: [{ type: core.Output }],
        transition: [{ type: core.Input }]
    };
    /**
     * Directive identifying the drawer content.
     */
    var TKDrawerContentDirective = /** @class */ (function () {
        function TKDrawerContentDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._elementRef.nativeElement.id = TKDRAWERCONTENT;
        }
        return TKDrawerContentDirective;
    }());
    TKDrawerContentDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkDrawerContent]"
                },] }
    ];
    TKDrawerContentDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    /**
     * Directive identifying the main content.
     */
    var TKMainContentDirective = /** @class */ (function () {
        function TKMainContentDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._elementRef.nativeElement.id = TKMAINCONTENT;
        }
        return TKMainContentDirective;
    }());
    TKMainContentDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkMainContent]"
                },] }
    ];
    TKMainContentDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var ɵ0 = function (parent, child) {
        var drawer = parent;
        var childView = child;
        if (childView.id === TKMAINCONTENT) {
            drawer.mainContent = childView;
        }
        if (childView.id === TKDRAWERCONTENT) {
            drawer.drawerContent = childView;
        }
    }, ɵ1 = function (parent, child) {
        var drawer = parent;
        var childView = child;
        if (childView.id === TKMAINCONTENT) {
            drawer.mainContent = null;
        }
        if (childView.id === TKDRAWERCONTENT) {
            drawer.drawerContent = null;
        }
    };
    var sideDrawerMeta = {
        insertChild: ɵ0,
        removeChild: ɵ1,
    };
    /**
     * Directives identifying the RadSideDrawer.
     */
    var SIDEDRAWER_DIRECTIVES = [RadSideDrawerComponent, TKDrawerContentDirective, TKMainContentDirective];
    angular.registerElement("RadSideDrawer", function () { return nativescriptUiSidedrawer.RadSideDrawer; }, sideDrawerMeta);
    /**
     * NgModule containing all of the RadSideDrawer directives.
     */
    var NativeScriptUISideDrawerModule = /** @class */ (function () {
        function NativeScriptUISideDrawerModule() {
        }
        return NativeScriptUISideDrawerModule;
    }());
    NativeScriptUISideDrawerModule.decorators = [
        { type: core.NgModule, args: [{
                    declarations: [SIDEDRAWER_DIRECTIVES],
                    exports: [SIDEDRAWER_DIRECTIVES]
                },] }
    ];

    /**
     * Generated bundle index. Do not edit.
     */

    exports.NativeScriptUISideDrawerModule = NativeScriptUISideDrawerModule;
    exports.RadSideDrawerComponent = RadSideDrawerComponent;
    exports.SIDEDRAWER_DIRECTIVES = SIDEDRAWER_DIRECTIVES;
    exports.TKDrawerContentDirective = TKDrawerContentDirective;
    exports.TKMainContentDirective = TKMainContentDirective;
    exports.ɵ0 = ɵ0;
    exports.ɵ1 = ɵ1;

    Object.defineProperty(exports, '__esModule', { value: true });

})));
//# sourceMappingURL=nativescript-ui-sidedrawer-angular.umd.js.map
