ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
68 lines • 10.5 kB
JavaScript
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { Directionality } from '@angular/cdk/bidi';
import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
import { ComponentPortal } from '@angular/cdk/portal';
import { Injectable, Injector, Optional } from '@angular/core';
import { NzConfigService } from 'ng-zorro-antd/core/config';
import { IMAGE_PREVIEW_MASK_CLASS_NAME, NZ_CONFIG_MODULE_NAME } from './image-config';
import { NzImagePreviewOptions } from './image-preview-options';
import { NzImagePreviewRef } from './image-preview-ref';
import { NzImagePreviewComponent } from './image-preview.component';
export class NzImageService {
constructor(overlay, injector, nzConfigService, directionality) {
this.overlay = overlay;
this.injector = injector;
this.nzConfigService = nzConfigService;
this.directionality = directionality;
}
preview(images, options) {
return this.display(images, options);
}
display(images, config) {
const configMerged = Object.assign(Object.assign({}, new NzImagePreviewOptions()), (config !== null && config !== void 0 ? config : {}));
const overlayRef = this.createOverlay(configMerged);
const previewComponent = this.attachPreviewComponent(overlayRef, configMerged);
previewComponent.setImages(images);
const previewRef = new NzImagePreviewRef(previewComponent, configMerged, overlayRef);
previewComponent.previewRef = previewRef;
return previewRef;
}
attachPreviewComponent(overlayRef, config) {
const injector = Injector.create({
parent: this.injector,
providers: [
{ provide: OverlayRef, useValue: overlayRef },
{ provide: NzImagePreviewOptions, useValue: config }
]
});
const containerPortal = new ComponentPortal(NzImagePreviewComponent, null, injector);
const containerRef = overlayRef.attach(containerPortal);
return containerRef.instance;
}
createOverlay(config) {
var _a, _b;
const globalConfig = this.nzConfigService.getConfigForComponent(NZ_CONFIG_MODULE_NAME) || {};
const overLayConfig = new OverlayConfig({
hasBackdrop: true,
scrollStrategy: this.overlay.scrollStrategies.block(),
positionStrategy: this.overlay.position().global(),
disposeOnNavigation: (_b = (_a = config.nzCloseOnNavigation) !== null && _a !== void 0 ? _a : globalConfig.nzCloseOnNavigation) !== null && _b !== void 0 ? _b : true,
backdropClass: IMAGE_PREVIEW_MASK_CLASS_NAME,
direction: config.nzDirection || globalConfig.nzDirection || this.directionality.value
});
return this.overlay.create(overLayConfig);
}
}
NzImageService.decorators = [
{ type: Injectable }
];
NzImageService.ctorParameters = () => [
{ type: Overlay },
{ type: Injector },
{ type: NzConfigService },
{ type: Directionality, decorators: [{ type: Optional }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFXLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPcEUsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxPQUFnQixFQUNoQixRQUFrQixFQUNsQixlQUFnQyxFQUNwQixjQUE4QjtRQUgxQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUNqRCxDQUFDO0lBRUosT0FBTyxDQUFDLE1BQWlCLEVBQUUsT0FBK0I7UUFDeEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sT0FBTyxDQUFDLE1BQWlCLEVBQUUsTUFBOEI7UUFDL0QsTUFBTSxZQUFZLG1DQUFRLElBQUkscUJBQXFCLEVBQUUsR0FBSyxDQUFDLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLEVBQUUsQ0FBQyxDQUFFLENBQUM7UUFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0UsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXJGLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDekMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFVBQXNCLEVBQUUsTUFBNkI7UUFDbEYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDckIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO2dCQUM3QyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2FBQ3JEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEQsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBNkI7O1FBQ2pELE1BQU0sWUFBWSxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQWlCLElBQUksRUFBRSxDQUFDO1FBQzlHLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUNyRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNsRCxtQkFBbUIsRUFBRSxNQUFBLE1BQUEsTUFBTSxDQUFDLG1CQUFtQixtQ0FBSSxZQUFZLENBQUMsbUJBQW1CLG1DQUFJLElBQUk7WUFDM0YsYUFBYSxFQUFFLDZCQUE2QjtZQUM1QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztTQUN2RixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQW5ERixVQUFVOzs7WUFmRixPQUFPO1lBRUssUUFBUTtZQUVQLGVBQWU7WUFMNUIsY0FBYyx1QkFzQmxCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJbWFnZUNvbmZpZywgTnpDb25maWdTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL2NvbmZpZyc7XG5cbmltcG9ydCB7IElNQUdFX1BSRVZJRVdfTUFTS19DTEFTU19OQU1FLCBOWl9DT05GSUdfTU9EVUxFX05BTUUgfSBmcm9tICcuL2ltYWdlLWNvbmZpZyc7XG5pbXBvcnQgeyBOekltYWdlLCBOekltYWdlUHJldmlld09wdGlvbnMgfSBmcm9tICcuL2ltYWdlLXByZXZpZXctb3B0aW9ucyc7XG5pbXBvcnQgeyBOekltYWdlUHJldmlld1JlZiB9IGZyb20gJy4vaW1hZ2UtcHJldmlldy1yZWYnO1xuaW1wb3J0IHsgTnpJbWFnZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLXByZXZpZXcuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBOekltYWdlU2VydmljZSB7XG4gIHByZXZpZXcoaW1hZ2VzOiBOekltYWdlW10sIG9wdGlvbj86IE56SW1hZ2VQcmV2aWV3T3B0aW9ucyk6IE56SW1hZ2VQcmV2aWV3UmVmO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTnpJbWFnZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBuekNvbmZpZ1NlcnZpY2U6IE56Q29uZmlnU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eVxuICApIHt9XG5cbiAgcHJldmlldyhpbWFnZXM6IE56SW1hZ2VbXSwgb3B0aW9ucz86IE56SW1hZ2VQcmV2aWV3T3B0aW9ucyk6IE56SW1hZ2VQcmV2aWV3UmVmIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5KGltYWdlcywgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXkoaW1hZ2VzOiBOekltYWdlW10sIGNvbmZpZz86IE56SW1hZ2VQcmV2aWV3T3B0aW9ucyk6IE56SW1hZ2VQcmV2aWV3UmVmIHtcbiAgICBjb25zdCBjb25maWdNZXJnZWQgPSB7IC4uLm5ldyBOekltYWdlUHJldmlld09wdGlvbnMoKSwgLi4uKGNvbmZpZyA/PyB7fSkgfTtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KGNvbmZpZ01lcmdlZCk7XG4gICAgY29uc3QgcHJldmlld0NvbXBvbmVudCA9IHRoaXMuYXR0YWNoUHJldmlld0NvbXBvbmVudChvdmVybGF5UmVmLCBjb25maWdNZXJnZWQpO1xuICAgIHByZXZpZXdDb21wb25lbnQuc2V0SW1hZ2VzKGltYWdlcyk7XG4gICAgY29uc3QgcHJldmlld1JlZiA9IG5ldyBOekltYWdlUHJldmlld1JlZihwcmV2aWV3Q29tcG9uZW50LCBjb25maWdNZXJnZWQsIG92ZXJsYXlSZWYpO1xuXG4gICAgcHJldmlld0NvbXBvbmVudC5wcmV2aWV3UmVmID0gcHJldmlld1JlZjtcbiAgICByZXR1cm4gcHJldmlld1JlZjtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoUHJldmlld0NvbXBvbmVudChvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IE56SW1hZ2VQcmV2aWV3T3B0aW9ucyk6IE56SW1hZ2VQcmV2aWV3Q29tcG9uZW50IHtcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBPdmVybGF5UmVmLCB1c2VWYWx1ZTogb3ZlcmxheVJlZiB9LFxuICAgICAgICB7IHByb3ZpZGU6IE56SW1hZ2VQcmV2aWV3T3B0aW9ucywgdXNlVmFsdWU6IGNvbmZpZyB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKE56SW1hZ2VQcmV2aWV3Q29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoY29uZmlnOiBOekltYWdlUHJldmlld09wdGlvbnMpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBnbG9iYWxDb25maWcgPSAodGhpcy5uekNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnRm9yQ29tcG9uZW50KE5aX0NPTkZJR19NT0RVTEVfTkFNRSkgYXMgSW1hZ2VDb25maWcpIHx8IHt9O1xuICAgIGNvbnN0IG92ZXJMYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiBjb25maWcubnpDbG9zZU9uTmF2aWdhdGlvbiA/PyBnbG9iYWxDb25maWcubnpDbG9zZU9uTmF2aWdhdGlvbiA/PyB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogSU1BR0VfUFJFVklFV19NQVNLX0NMQVNTX05BTUUsXG4gICAgICBkaXJlY3Rpb246IGNvbmZpZy5uekRpcmVjdGlvbiB8fCBnbG9iYWxDb25maWcubnpEaXJlY3Rpb24gfHwgdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlckxheUNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==