@addapptables/notifier
Version:
Material notifier library for angular
101 lines • 7.01 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, Inject, Injector, ComponentFactoryResolver } from '@angular/core';
import { NotifierContainerService } from './notifier-container.service';
import { DOCUMENT } from '@angular/common';
import { DomPortalOutlet } from '@angular/cdk/portal';
import { NOTIFIER } from '../constants';
/** @type {?} */
let nextUniqueId = 0;
export class NotifierPortalService {
/**
* @param {?} _notifierContainerService
* @param {?} _document
* @param {?} _injector
* @param {?} _componentFactoryResolver
*/
constructor(_notifierContainerService, _document, _injector, _componentFactoryResolver) {
this._notifierContainerService = _notifierContainerService;
this._document = _document;
this._injector = _injector;
this._componentFactoryResolver = _componentFactoryResolver;
}
/**
* @return {?}
*/
create() {
/** @type {?} */
const pane = this._createPaneElement();
/** @type {?} */
const portal = this._createPortalOutlet(pane);
return portal;
}
/**
* @private
* @param {?} pane
* @return {?}
*/
_createPortalOutlet(pane) {
if (!this._appRef) {
this._appRef = this._injector.get(ApplicationRef);
}
return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector);
}
/**
* @private
* @return {?}
*/
_createPaneElement() {
/** @type {?} */
const pane = this._document.createElement('div');
pane.id = `${NOTIFIER + nextUniqueId++}`;
this._notifierContainerService.getContainerElement().appendChild(pane);
return pane;
}
/**
* @return {?}
*/
get getLastUniqueId() {
return `${NOTIFIER + (nextUniqueId - 1)}`;
}
}
NotifierPortalService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NotifierPortalService.ctorParameters = () => [
{ type: NotifierContainerService },
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: Injector },
{ type: ComponentFactoryResolver }
];
if (false) {
/**
* @type {?}
* @private
*/
NotifierPortalService.prototype._appRef;
/**
* @type {?}
* @private
*/
NotifierPortalService.prototype._notifierContainerService;
/**
* @type {?}
* @private
*/
NotifierPortalService.prototype._document;
/**
* @type {?}
* @private
*/
NotifierPortalService.prototype._injector;
/**
* @type {?}
* @private
*/
NotifierPortalService.prototype._componentFactoryResolver;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpZXItcG9ydGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRkYXBwdGFibGVzL25vdGlmaWVyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL25vdGlmaWVyLXBvcnRhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7SUFFcEMsWUFBWSxHQUFHLENBQUM7QUFHcEIsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7OztJQUloQyxZQUNVLHlCQUFtRCxFQUNqQyxTQUFjLEVBQ2hDLFNBQW1CLEVBQ25CLHlCQUFtRDtRQUhuRCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO0lBQ3pELENBQUM7Ozs7SUFFTCxNQUFNOztjQUNFLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7O2NBQ2hDLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1FBQzdDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7OztJQUVPLG1CQUFtQixDQUFDLElBQWlCO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQWlCLGNBQWMsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7Ozs7O0lBRU8sa0JBQWtCOztjQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLEdBQUcsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMseUJBQXlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzs7WUFsQ0YsVUFBVTs7OztZQVBGLHdCQUF3Qjs0Q0FjNUIsTUFBTSxTQUFDLFFBQVE7WUFmeUIsUUFBUTtZQUFFLHdCQUF3Qjs7Ozs7OztJQVc3RSx3Q0FBZ0M7Ozs7O0lBRzlCLDBEQUEyRDs7Ozs7SUFDM0QsMENBQXdDOzs7OztJQUN4QywwQ0FBMkI7Ozs7O0lBQzNCLDBEQUEyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEFwcGxpY2F0aW9uUmVmLCBJbmplY3QsIEluamVjdG9yLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vdGlmaWVyQ29udGFpbmVyU2VydmljZSB9IGZyb20gJy4vbm90aWZpZXItY29udGFpbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOT1RJRklFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTm90aWZpZXJQb3J0YWxTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9hcHBSZWY6IEFwcGxpY2F0aW9uUmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX25vdGlmaWVyQ29udGFpbmVyU2VydmljZTogTm90aWZpZXJDb250YWluZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICkgeyB9XG5cbiAgY3JlYXRlKCkge1xuICAgIGNvbnN0IHBhbmUgPSB0aGlzLl9jcmVhdGVQYW5lRWxlbWVudCgpO1xuICAgIGNvbnN0IHBvcnRhbCA9IHRoaXMuX2NyZWF0ZVBvcnRhbE91dGxldChwYW5lKTtcbiAgICByZXR1cm4gcG9ydGFsO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlUG9ydGFsT3V0bGV0KHBhbmU6IEhUTUxFbGVtZW50KTogRG9tUG9ydGFsT3V0bGV0IHtcbiAgICBpZiAoIXRoaXMuX2FwcFJlZikge1xuICAgICAgdGhpcy5fYXBwUmVmID0gdGhpcy5faW5qZWN0b3IuZ2V0PEFwcGxpY2F0aW9uUmVmPihBcHBsaWNhdGlvblJlZik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRG9tUG9ydGFsT3V0bGV0KHBhbmUsIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgdGhpcy5fYXBwUmVmLCB0aGlzLl9pbmplY3Rvcik7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQYW5lRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgcGFuZSA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHBhbmUuaWQgPSBgJHtOT1RJRklFUiArIG5leHRVbmlxdWVJZCsrfWA7XG4gICAgdGhpcy5fbm90aWZpZXJDb250YWluZXJTZXJ2aWNlLmdldENvbnRhaW5lckVsZW1lbnQoKS5hcHBlbmRDaGlsZChwYW5lKTtcbiAgICByZXR1cm4gcGFuZTtcbiAgfVxuXG4gIGdldCBnZXRMYXN0VW5pcXVlSWQoKSB7XG4gICAgcmV0dXJuIGAke05PVElGSUVSICsgKG5leHRVbmlxdWVJZCAtIDEpfWA7XG4gIH1cbn1cbiJdfQ==