angular-gallery
Version:
Responsive gallery for Angular with touch screen support.
95 lines • 11.2 kB
JavaScript
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