angular-gallery
Version:
Responsive gallery for Angular with touch screen support.
99 lines • 11.7 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';
var Overlay = /** @class */ (function () {
function Overlay(componentFactoryResolver, appRef, injector, eventService) {
var _this = this;
this.componentFactoryResolver = componentFactoryResolver;
this.appRef = appRef;
this.injector = injector;
this.eventService = eventService;
this.componentRefs = {};
this._properties = {};
this.globalEventsSubscription = this.eventService.emitter.subscribe(function (event) {
_this.handleGlobalEvents(event);
});
}
Overlay.prototype.appendComponentToBody = function (properties, component) {
if (component === void 0) { component = OverlayContainerComponent; }
//if (this.componentRefs[properties.id]){
if (this.componentRefs[0]) {
return;
}
var 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);
var 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);
}
}
*/
Overlay.prototype.load = function (properties) {
properties = this.applyPropertieDefaults(defaultProperties, properties);
this.appendComponentToBody(properties);
};
Overlay.prototype.close = function (prop) {
if (prop === void 0) { prop = {}; }
/*
if (this.componentRefs[prop.id]){
(<ContainerProperties>this.componentRefs[prop.id].instance).closeOverlay();
}
*/
};
Overlay.prototype.applyPropertieDefaults = function (defaultProperties, properties) {
if (!properties) {
properties = {};
}
if (!properties.index) {
properties.index = 0;
}
this._defaultProperties = Object.assign({}, defaultProperties);
return Object.assign(this._defaultProperties, properties);
};
Overlay.prototype.objectLength = function (obj) {
var length = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key))
length++;
}
return length;
};
;
Overlay.prototype.handleGlobalEvents = function (event) {
if (event.type === '[Overlay] Hide') {
this.handleCloseEvent();
}
};
Overlay.prototype.handleCloseEvent = function () {
//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 = function () { return [
{ type: ComponentFactoryResolver },
{ type: ApplicationRef },
{ type: Injector },
{ type: EventService }
]; };
Overlay = __decorate([
Injectable()
], Overlay);
return Overlay;
}());
export { Overlay };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1nYWxsZXJ5LyIsInNvdXJjZXMiOlsibGliL292ZXJsYXkvb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RDtJQU1JLGlCQUNZLHdCQUFrRCxFQUNsRCxNQUFzQixFQUN0QixRQUFrQixFQUNsQixZQUEwQjtRQUp0QyxpQkFVQztRQVRXLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVJ0QyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQVFsQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUMvRCxVQUFDLEtBQUs7WUFDRixLQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsdUNBQXFCLEdBQXJCLFVBQXNCLFVBQWUsRUFBRSxTQUEwQztRQUExQywwQkFBQSxFQUFBLHFDQUEwQztRQUM3RSx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDO1lBQ3RCLE9BQU87U0FDVjtRQUVELElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0I7YUFDN0MsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0IsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBRWYsWUFBWSxDQUFDLFFBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBRTVGLGNBQWM7UUFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7O01BUUU7SUFFSyxzQkFBSSxHQUFYLFVBQVksVUFBNkI7UUFDckMsVUFBVSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLHVCQUFLLEdBQVosVUFBYSxJQUFjO1FBQWQscUJBQUEsRUFBQSxTQUFjO1FBQ3ZCOzs7O1VBSUU7SUFDTixDQUFDO0lBRUQsd0NBQXNCLEdBQXRCLFVBQXVCLGlCQUFpQixFQUFFLFVBQVU7UUFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBQztZQUNsQixVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELDhCQUFZLEdBQVosVUFBYSxHQUFHO1FBQ1osSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUNwQixLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDYixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUFBLENBQUM7SUFFRixvQ0FBa0IsR0FBbEIsVUFBbUIsS0FBSztRQUNwQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUM7WUFDaEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQsa0NBQWdCLEdBQWhCO1FBQ0ksaURBQWlEO1FBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7Z0JBckZxQyx3QkFBd0I7Z0JBQzFDLGNBQWM7Z0JBQ1osUUFBUTtnQkFDSixZQUFZOztJQVY3QixPQUFPO1FBRG5CLFVBQVUsRUFBRTtPQUNBLE9BQU8sQ0E2Rm5CO0lBQUQsY0FBQztDQUFBLEFBN0ZELElBNkZDO1NBN0ZZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbWJlZGRlZFZpZXdSZWYsIEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4vZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9vdmVybGF5LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3ZlcmxheVByb3BlcnRpZXMsIENvbnRhaW5lclByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGVmYXVsdFByb3BlcnRpZXMgfSBmcm9tICcuL2RlZmF1bHQtcHJvcGVydGllcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPdmVybGF5IHtcbiAgICBnbG9iYWxFdmVudHNTdWJzY3JpcHRpb247XG4gICAgY29tcG9uZW50UmVmcyA9IHt9O1xuICAgIF9wcm9wZXJ0aWVzOiBhbnkgPSB7fTtcbiAgICBfZGVmYXVsdFByb3BlcnRpZXM6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZ2xvYmFsRXZlbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5ldmVudFNlcnZpY2UuZW1pdHRlci5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUdsb2JhbEV2ZW50cyhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXBwZW5kQ29tcG9uZW50VG9Cb2R5KHByb3BlcnRpZXM6IGFueSwgY29tcG9uZW50OiBhbnkgPSBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50KTp2b2lkIHtcbiAgICAgICAgLy9pZiAodGhpcy5jb21wb25lbnRSZWZzW3Byb3BlcnRpZXMuaWRdKXtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmc1swXSl7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICAgICAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcbiAgICAgICAgICAgIC5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG5cbiAgICAgICAgLy90aGlzLmNvbXBvbmVudFJlZnNbcHJvcGVydGllcy5pZF0gPSBjb21wb25lbnRSZWY7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmc1swXSA9IGNvbXBvbmVudFJlZjtcblxuICAgICAgICAoPENvbnRhaW5lclByb3BlcnRpZXM+Y29tcG9uZW50UmVmLmluc3RhbmNlKS5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIC8vIEFkZCB0byBib2R5XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG4gICAgfVxuXG4gICAgLypcbiAgICBhcHBlbmRDb21wb25lbnRUb1RhZyhlbGVtZW50OiBhbnksIHRhZ25hbWU6IHN0cmluZyA9ICcnKTp2b2lkIHtcbiAgICAgICAgaWYgKHRhZ25hbWUpe1xuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnbmFtZSlbMF0uYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgICovXG5cbiAgICBwdWJsaWMgbG9hZChwcm9wZXJ0aWVzOiBPdmVybGF5UHJvcGVydGllcyk6dm9pZCB7XG4gICAgICAgIHByb3BlcnRpZXMgPSB0aGlzLmFwcGx5UHJvcGVydGllRGVmYXVsdHMoZGVmYXVsdFByb3BlcnRpZXMsIHByb3BlcnRpZXMpO1xuICAgICAgICB0aGlzLmFwcGVuZENvbXBvbmVudFRvQm9keShwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UocHJvcDogYW55ID0ge30pOnZvaWQge1xuICAgICAgICAvKlxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWZzW3Byb3AuaWRdKXtcbiAgICAgICAgICAgICg8Q29udGFpbmVyUHJvcGVydGllcz50aGlzLmNvbXBvbmVudFJlZnNbcHJvcC5pZF0uaW5zdGFuY2UpLmNsb3NlT3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgfVxuXG4gICAgYXBwbHlQcm9wZXJ0aWVEZWZhdWx0cyhkZWZhdWx0UHJvcGVydGllcywgcHJvcGVydGllcyl7XG4gICAgICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgICAgICAgcHJvcGVydGllcyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcHJvcGVydGllcy5pbmRleCl7IFxuICAgICAgICAgICAgcHJvcGVydGllcy5pbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGVmYXVsdFByb3BlcnRpZXMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0UHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMuX2RlZmF1bHRQcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBvYmplY3RMZW5ndGgob2JqKTpudW1iZXIge1xuICAgICAgICBsZXQgbGVuZ3RoID0gMCwga2V5O1xuICAgICAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgbGVuZ3RoKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9O1xuXG4gICAgaGFuZGxlR2xvYmFsRXZlbnRzKGV2ZW50KXtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdbT3ZlcmxheV0gSGlkZScpe1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbG9zZUV2ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVDbG9zZUV2ZW50KCl7XG4gICAgICAgIC8vY29uc3QgaWQgPSAncG9wb3Zlcic7IC8vIE5vdGU6IHBhc3MgaWQgaW4gZXZlbnRcbiAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZnNbMF0uaG9zdFZpZXcpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZnNbMF0uZGVzdHJveSgpO1xuICAgICAgICBkZWxldGUgdGhpcy5jb21wb25lbnRSZWZzWzBdO1xuICAgIH1cbn0iXX0=