UNPKG

angular-gallery

Version:

Responsive gallery for Angular with touch screen support.

95 lines 11.2 kB
import { __decorate } from "tslib"; import { Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef } from '@angular/core'; import { EventService } from './event.service'; import { OverlayContainerComponent } from './overlay-container.component'; import { defaultProperties } from './default-properties'; let Overlay = class Overlay { constructor(componentFactoryResolver, appRef, injector, eventService) { this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; this.eventService = eventService; this.componentRefs = {}; this._properties = {}; this.globalEventsSubscription = this.eventService.emitter.subscribe((event) => { this.handleGlobalEvents(event); }); } appendComponentToBody(properties, component = OverlayContainerComponent) { //if (this.componentRefs[properties.id]){ if (this.componentRefs[0]) { return; } const componentRef = this.componentFactoryResolver .resolveComponentFactory(component) .create(this.injector); //this.componentRefs[properties.id] = componentRef; this.componentRefs[0] = componentRef; componentRef.instance.properties = properties; this.appRef.attachView(componentRef.hostView); const domElem = componentRef.hostView.rootNodes[0]; // Add to body document.body.appendChild(domElem); } /* appendComponentToTag(element: any, tagname: string = ''):void { if (tagname){ document.getElementsByTagName(tagname)[0].appendChild(element); } else { document.body.appendChild(element); } } */ load(properties) { properties = this.applyPropertieDefaults(defaultProperties, properties); this.appendComponentToBody(properties); } close(prop = {}) { /* if (this.componentRefs[prop.id]){ (<ContainerProperties>this.componentRefs[prop.id].instance).closeOverlay(); } */ } applyPropertieDefaults(defaultProperties, properties) { if (!properties) { properties = {}; } if (!properties.index) { properties.index = 0; } this._defaultProperties = Object.assign({}, defaultProperties); return Object.assign(this._defaultProperties, properties); } objectLength(obj) { let length = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) length++; } return length; } ; handleGlobalEvents(event) { if (event.type === '[Overlay] Hide') { this.handleCloseEvent(); } } handleCloseEvent() { //const id = 'popover'; // Note: pass id in event this.appRef.detachView(this.componentRefs[0].hostView); this.componentRefs[0].destroy(); delete this.componentRefs[0]; } }; Overlay.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ApplicationRef }, { type: Injector }, { type: EventService } ]; Overlay = __decorate([ Injectable() ], Overlay); export { Overlay }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1nYWxsZXJ5LyIsInNvdXJjZXMiOlsibGliL292ZXJsYXkvb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxJQUFhLE9BQU8sR0FBcEIsTUFBYSxPQUFPO0lBTWhCLFlBQ1ksd0JBQWtELEVBQ2xELE1BQXNCLEVBQ3RCLFFBQWtCLEVBQ2xCLFlBQTBCO1FBSDFCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVJ0QyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQVFsQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUMvRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELHFCQUFxQixDQUFDLFVBQWUsRUFBRSxZQUFpQix5QkFBeUI7UUFDN0UseUNBQXlDO1FBQ3pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBQztZQUN0QixPQUFPO1NBQ1Y7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsd0JBQXdCO2FBQzdDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQzthQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNCLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUVmLFlBQVksQ0FBQyxRQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUksWUFBWSxDQUFDLFFBQWlDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUU1RixjQUFjO1FBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7OztNQVFFO0lBRUssSUFBSSxDQUFDLFVBQTZCO1FBQ3JDLFVBQVUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBWSxFQUFFO1FBQ3ZCOzs7O1VBSUU7SUFDTixDQUFDO0lBRUQsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsVUFBVTtRQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFDO1lBQ2xCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQUc7UUFDWixJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNiLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsTUFBTSxFQUFFLENBQUM7U0FDekM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQUEsQ0FBQztJQUVGLGtCQUFrQixDQUFDLEtBQUs7UUFDcEIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFDO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELGdCQUFnQjtRQUNaLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDSixDQUFBOztZQXRGeUMsd0JBQXdCO1lBQzFDLGNBQWM7WUFDWixRQUFRO1lBQ0osWUFBWTs7QUFWN0IsT0FBTztJQURuQixVQUFVLEVBQUU7R0FDQSxPQUFPLENBNkZuQjtTQTdGWSxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW1iZWRkZWRWaWV3UmVmLCBBcHBsaWNhdGlvblJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE92ZXJsYXlQcm9wZXJ0aWVzLCBDb250YWluZXJQcm9wZXJ0aWVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGRlZmF1bHRQcm9wZXJ0aWVzIH0gZnJvbSAnLi9kZWZhdWx0LXByb3BlcnRpZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3ZlcmxheSB7XG4gICAgZ2xvYmFsRXZlbnRzU3Vic2NyaXB0aW9uO1xuICAgIGNvbXBvbmVudFJlZnMgPSB7fTtcbiAgICBfcHJvcGVydGllczogYW55ID0ge307XG4gICAgX2RlZmF1bHRQcm9wZXJ0aWVzOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xuICAgICAgICB0aGlzLmdsb2JhbEV2ZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXR0ZXIuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVHbG9iYWxFdmVudHMoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFwcGVuZENvbXBvbmVudFRvQm9keShwcm9wZXJ0aWVzOiBhbnksIGNvbXBvbmVudDogYW55ID0gT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudCk6dm9pZCB7XG4gICAgICAgIC8vaWYgKHRoaXMuY29tcG9uZW50UmVmc1twcm9wZXJ0aWVzLmlkXSl7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZnNbMF0pe1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICAgICAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpXG4gICAgICAgICAgICAuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuXG4gICAgICAgIC8vdGhpcy5jb21wb25lbnRSZWZzW3Byb3BlcnRpZXMuaWRdID0gY29tcG9uZW50UmVmO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZnNbMF0gPSBjb21wb25lbnRSZWY7XG5cbiAgICAgICAgKDxDb250YWluZXJQcm9wZXJ0aWVzPmNvbXBvbmVudFJlZi5pbnN0YW5jZSkucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAvLyBBZGQgdG8gYm9keVxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgIH1cblxuICAgIC8qXG4gICAgYXBwZW5kQ29tcG9uZW50VG9UYWcoZWxlbWVudDogYW55LCB0YWduYW1lOiBzdHJpbmcgPSAnJyk6dm9pZCB7XG4gICAgICAgIGlmICh0YWduYW1lKXtcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ25hbWUpWzBdLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqL1xuXG4gICAgcHVibGljIGxvYWQocHJvcGVydGllczogT3ZlcmxheVByb3BlcnRpZXMpOnZvaWQge1xuICAgICAgICBwcm9wZXJ0aWVzID0gdGhpcy5hcHBseVByb3BlcnRpZURlZmF1bHRzKGRlZmF1bHRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTtcbiAgICAgICAgdGhpcy5hcHBlbmRDb21wb25lbnRUb0JvZHkocHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKHByb3A6IGFueSA9IHt9KTp2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmc1twcm9wLmlkXSl7XG4gICAgICAgICAgICAoPENvbnRhaW5lclByb3BlcnRpZXM+dGhpcy5jb21wb25lbnRSZWZzW3Byb3AuaWRdLmluc3RhbmNlKS5jbG9zZU92ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICAqL1xuICAgIH1cblxuICAgIGFwcGx5UHJvcGVydGllRGVmYXVsdHMoZGVmYXVsdFByb3BlcnRpZXMsIHByb3BlcnRpZXMpe1xuICAgICAgICBpZiAoIXByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXByb3BlcnRpZXMuaW5kZXgpeyBcbiAgICAgICAgICAgIHByb3BlcnRpZXMuaW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlZmF1bHRQcm9wZXJ0aWVzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLl9kZWZhdWx0UHJvcGVydGllcywgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgb2JqZWN0TGVuZ3RoKG9iaik6bnVtYmVyIHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IDAsIGtleTtcbiAgICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIGxlbmd0aCsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfTtcblxuICAgIGhhbmRsZUdsb2JhbEV2ZW50cyhldmVudCl7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnW092ZXJsYXldIEhpZGUnKXtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2VFdmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xvc2VFdmVudCgpe1xuICAgICAgICAvL2NvbnN0IGlkID0gJ3BvcG92ZXInOyAvLyBOb3RlOiBwYXNzIGlkIGluIGV2ZW50XG4gICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWZzWzBdLmhvc3RWaWV3KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzWzBdLmRlc3Ryb3koKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuY29tcG9uZW50UmVmc1swXTtcbiAgICB9XG59Il19