@ngx-gallery/lightbox
Version:
Angular gallery directive that hooks the lightbox with the images automatically.
182 lines • 15.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Inject, Injectable, Optional } from '@angular/core';
import { ComponentPortal } from '@angular/cdk/portal';
import { Overlay } from '@angular/cdk/overlay';
import { LEFT_ARROW, RIGHT_ARROW, ESCAPE } from '@angular/cdk/keycodes';
import { Gallery } from '@ngx-gallery/core';
import { Subject } from 'rxjs';
import { LIGHTBOX_CONFIG } from './lightbox.model';
import { defaultConfig } from './lightbox.default';
import { LightboxComponent } from './lightbox.component';
var Lightbox = /** @class */ (function () {
function Lightbox(config, _gallery, _overlay) {
this._gallery = _gallery;
this._overlay = _overlay;
/**
* Stream that emits when lightbox is opened
*/
this.opened = new Subject();
/**
* Stream that emits when lightbox is closed
*/
this.closed = new Subject();
this._config = config ? tslib_1.__assign({}, defaultConfig, config) : defaultConfig;
}
/**
* Set Lightbox Config
* @param config - LightboxConfig
*/
/**
* Set Lightbox Config
* @param {?} config - LightboxConfig
* @return {?}
*/
Lightbox.prototype.setConfig = /**
* Set Lightbox Config
* @param {?} config - LightboxConfig
* @return {?}
*/
function (config) {
this._config = tslib_1.__assign({}, this._config, config);
};
/**
* Open Lightbox Overlay
* @param i - Current Index
* @param id - Gallery ID
* @param config - Lightbox Config
*/
/**
* Open Lightbox Overlay
* @param {?=} i - Current Index
* @param {?=} id - Gallery ID
* @param {?=} config - Lightbox Config
* @return {?}
*/
Lightbox.prototype.open = /**
* Open Lightbox Overlay
* @param {?=} i - Current Index
* @param {?=} id - Gallery ID
* @param {?=} config - Lightbox Config
* @return {?}
*/
function (i, id, config) {
var _this = this;
if (i === void 0) { i = 0; }
if (id === void 0) { id = 'lightbox'; }
/** @type {?} */
var _config = config ? tslib_1.__assign({}, this._config, config) : this._config;
/** @type {?} */
var overlayConfig = {
backdropClass: _config.backdropClass,
panelClass: _config.panelClass,
hasBackdrop: _config.hasBackdrop,
positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(),
scrollStrategy: this._overlay.scrollStrategies.block(),
disposeOnNavigation: true
};
/** @type {?} */
var galleryRef = this._gallery.ref(id);
galleryRef.set(i);
this._overlayRef = this._overlay.create(overlayConfig);
// overlay opened event
this._overlayRef.attachments().subscribe(function () { return _this.opened.next(id); });
// overlay closed event
this._overlayRef.detachments().subscribe(function () { return _this.closed.next(id); });
// Attach gallery to the overlay
/** @type {?} */
var galleryPortal = new ComponentPortal(LightboxComponent);
/** @type {?} */
var lightboxRef = this._overlayRef.attach(galleryPortal);
lightboxRef.instance.id = id;
lightboxRef.instance.overlayRef = this._overlayRef;
lightboxRef.instance.closeIcon = this._config.closeIcon;
lightboxRef.instance.role = this._config.role;
lightboxRef.instance.ariaLabel = this._config.ariaLabel;
lightboxRef.instance.ariaLabelledBy = this._config.ariaLabelledBy;
lightboxRef.instance.ariaDescribedBy = this._config.ariaDescribedBy;
if (_config.hasBackdrop) {
this._overlayRef.backdropClick().subscribe(function () { return _this.close(); });
}
// Add keyboard shortcuts
if (_config.keyboardShortcuts) {
this._overlayRef.keydownEvents().subscribe(function (event) {
switch (event.keyCode) {
case LEFT_ARROW:
galleryRef.prev();
break;
case RIGHT_ARROW:
galleryRef.next();
break;
case ESCAPE:
_this.close();
}
});
}
};
/**
* Close Lightbox Overlay
*/
/**
* Close Lightbox Overlay
* @return {?}
*/
Lightbox.prototype.close = /**
* Close Lightbox Overlay
* @return {?}
*/
function () {
if (this._overlayRef.hasAttached()) {
this._overlayRef.detach();
}
};
Lightbox.decorators = [
{ type: Injectable }
];
/** @nocollapse */
Lightbox.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LIGHTBOX_CONFIG,] }] },
{ type: Gallery },
{ type: Overlay }
]; };
return Lightbox;
}());
export { Lightbox };
if (false) {
/**
* Gallery overlay ref
* @type {?}
* @private
*/
Lightbox.prototype._overlayRef;
/**
* Global config
* @type {?}
* @private
*/
Lightbox.prototype._config;
/**
* Stream that emits when lightbox is opened
* @type {?}
*/
Lightbox.prototype.opened;
/**
* Stream that emits when lightbox is closed
* @type {?}
*/
Lightbox.prototype.closed;
/**
* @type {?}
* @private
*/
Lightbox.prototype._gallery;
/**
* @type {?}
* @private
*/
Lightbox.prototype._overlay;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZ2FsbGVyeS9saWdodGJveC8iLCJzb3VyY2VzIjpbImxpYi9saWdodGJveC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFnQixNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RDtJQWVFLGtCQUFpRCxNQUFzQixFQUFVLFFBQWlCLEVBQVUsUUFBaUI7UUFBNUMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUFVLGFBQVEsR0FBUixRQUFRLENBQVM7Ozs7UUFMN0gsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7Ozs7UUFHL0IsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFHN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxzQkFBSyxhQUFhLEVBQUssTUFBTSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gsNEJBQVM7Ozs7O0lBQVQsVUFBVSxNQUFzQjtR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QUFDLEtBQVU7Z0JBQ3BELFFBQVEsS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDckIsS0FBSyxVQUFVO3dCQUNiLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDbEIsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsQixNQUFNO29CQUNSLEtBQUssTUFBTTt3QkFDVCxLQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCx3QkFBSzs7OztJQUFMO1FBQ0UsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDOztnQkFqR0YsVUFBVTs7OztnREFlSSxRQUFRLFlBQUksTUFBTSxTQUFDLGVBQWU7Z0JBdEJ4QyxPQUFPO2dCQUZQLE9BQU87O0lBMkdoQixlQUFDO0NBQUEsQUFsR0QsSUFrR0M7U0FqR1ksUUFBUTs7Ozs7OztJQUduQiwrQkFBZ0M7Ozs7OztJQUdoQywyQkFBZ0M7Ozs7O0lBR2hDLDBCQUErQjs7Ozs7SUFHL0IsMEJBQStCOzs7OztJQUUwQyw0QkFBeUI7Ozs7O0lBQUUsNEJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIE92ZXJsYXlDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEdhbGxlcnkgfSBmcm9tICdAbmd4LWdhbGxlcnkvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IExpZ2h0Ym94Q29uZmlnLCBMSUdIVEJPWF9DT05GSUcgfSBmcm9tICcuL2xpZ2h0Ym94Lm1vZGVsJztcbmltcG9ydCB7IGRlZmF1bHRDb25maWcgfSBmcm9tICcuL2xpZ2h0Ym94LmRlZmF1bHQnO1xuaW1wb3J0IHsgTGlnaHRib3hDb21wb25lbnQgfSBmcm9tICcuL2xpZ2h0Ym94LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMaWdodGJveCB7XG5cbiAgLyoqIEdhbGxlcnkgb3ZlcmxheSByZWYgKi9cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICAvKiogR2xvYmFsIGNvbmZpZyAqL1xuICBwcml2YXRlIF9jb25maWc6IExpZ2h0Ym94Q29uZmlnO1xuXG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGxpZ2h0Ym94IGlzIG9wZW5lZCAqL1xuICBvcGVuZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gbGlnaHRib3ggaXMgY2xvc2VkICovXG4gIGNsb3NlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KExJR0hUQk9YX0NPTkZJRykgY29uZmlnOiBMaWdodGJveENvbmZpZywgcHJpdmF0ZSBfZ2FsbGVyeTogR2FsbGVyeSwgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSkge1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZyA/IHsuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWd9IDogZGVmYXVsdENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgTGlnaHRib3ggQ29uZmlnXG4gICAqIEBwYXJhbSBjb25maWcgLSBMaWdodGJveENvbmZpZ1xuICAgKi9cbiAgc2V0Q29uZmlnKGNvbmZpZzogTGlnaHRib3hDb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSB7Li4udGhpcy5fY29uZmlnLCAuLi5jb25maWd9O1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gTGlnaHRib3ggT3ZlcmxheVxuICAgKiBAcGFyYW0gaSAtIEN1cnJlbnQgSW5kZXhcbiAgICogQHBhcmFtIGlkIC0gR2FsbGVyeSBJRFxuICAgKiBAcGFyYW0gY29uZmlnIC0gTGlnaHRib3ggQ29uZmlnXG4gICAqL1xuICBvcGVuKGkgPSAwLCBpZCA9ICdsaWdodGJveCcsIGNvbmZpZz86IExpZ2h0Ym94Q29uZmlnKSB7XG5cbiAgICBjb25zdCBfY29uZmlnID0gY29uZmlnID8gey4uLnRoaXMuX2NvbmZpZywgLi4uY29uZmlnfSA6IHRoaXMuX2NvbmZpZztcblxuICAgIGNvbnN0IG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWcgPSB7XG4gICAgICBiYWNrZHJvcENsYXNzOiBfY29uZmlnLmJhY2tkcm9wQ2xhc3MsXG4gICAgICBwYW5lbENsYXNzOiBfY29uZmlnLnBhbmVsQ2xhc3MsXG4gICAgICBoYXNCYWNrZHJvcDogX2NvbmZpZy5oYXNCYWNrZHJvcCxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0IGdhbGxlcnlSZWYgPSB0aGlzLl9nYWxsZXJ5LnJlZihpZCk7XG4gICAgZ2FsbGVyeVJlZi5zZXQoaSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICAvLyBvdmVybGF5IG9wZW5lZCBldmVudFxuICAgIHRoaXMuX292ZXJsYXlSZWYuYXR0YWNobWVudHMoKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuZWQubmV4dChpZCkpO1xuXG4gICAgLy8gb3ZlcmxheSBjbG9zZWQgZXZlbnRcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VkLm5leHQoaWQpKTtcblxuICAgIC8vIEF0dGFjaCBnYWxsZXJ5IHRvIHRoZSBvdmVybGF5XG4gICAgY29uc3QgZ2FsbGVyeVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoTGlnaHRib3hDb21wb25lbnQpO1xuICAgIGNvbnN0IGxpZ2h0Ym94UmVmOiBDb21wb25lbnRSZWY8TGlnaHRib3hDb21wb25lbnQ+ID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2goZ2FsbGVyeVBvcnRhbCk7XG5cbiAgICBsaWdodGJveFJlZi5pbnN0YW5jZS5pZCA9IGlkO1xuICAgIGxpZ2h0Ym94UmVmLmluc3RhbmNlLm92ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5UmVmO1xuICAgIGxpZ2h0Ym94UmVmLmluc3RhbmNlLmNsb3NlSWNvbiA9IHRoaXMuX2NvbmZpZy5jbG9zZUljb247XG4gICAgbGlnaHRib3hSZWYuaW5zdGFuY2Uucm9sZSA9IHRoaXMuX2NvbmZpZy5yb2xlO1xuICAgIGxpZ2h0Ym94UmVmLmluc3RhbmNlLmFyaWFMYWJlbCA9IHRoaXMuX2NvbmZpZy5hcmlhTGFiZWw7XG4gICAgbGlnaHRib3hSZWYuaW5zdGFuY2UuYXJpYUxhYmVsbGVkQnkgPSB0aGlzLl9jb25maWcuYXJpYUxhYmVsbGVkQnk7XG4gICAgbGlnaHRib3hSZWYuaW5zdGFuY2UuYXJpYURlc2NyaWJlZEJ5ID0gdGhpcy5fY29uZmlnLmFyaWFEZXNjcmliZWRCeTtcblxuICAgIGlmIChfY29uZmlnLmhhc0JhY2tkcm9wKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG5cbiAgICAvLyBBZGQga2V5Ym9hcmQgc2hvcnRjdXRzXG4gICAgaWYgKF9jb25maWcua2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgICAgICBnYWxsZXJ5UmVmLnByZXYoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgICAgICBnYWxsZXJ5UmVmLm5leHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRVNDQVBFOlxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgTGlnaHRib3ggT3ZlcmxheVxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==