ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
59 lines • 10.5 kB
JavaScript
import { OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
import { ComponentPortal } from '@angular/cdk/portal';
import { Injectable, Injector } from '@angular/core';
import { 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';
import * as i0 from "@angular/core";
import * as i1 from "@angular/cdk/overlay";
import * as i2 from "ng-zorro-antd/core/config";
import * as i3 from "@angular/cdk/bidi";
export class NzImageService {
constructor(overlay, injector, nzConfigService, directionality) {
this.overlay = overlay;
this.injector = injector;
this.nzConfigService = nzConfigService;
this.directionality = directionality;
}
preview(images, options, zoomMap) {
return this.display(images, options, zoomMap);
}
display(images, config, scaleStepMap) {
const configMerged = { ...new NzImagePreviewOptions(), ...(config ?? {}) };
const overlayRef = this.createOverlay(configMerged);
const previewComponent = this.attachPreviewComponent(overlayRef, configMerged);
previewComponent.setImages(images, scaleStepMap);
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) {
const globalConfig = this.nzConfigService.getConfigForComponent(NZ_CONFIG_MODULE_NAME) || {};
const overLayConfig = new OverlayConfig({
scrollStrategy: this.overlay.scrollStrategies.block(),
positionStrategy: this.overlay.position().global(),
disposeOnNavigation: config.nzCloseOnNavigation ?? globalConfig.nzCloseOnNavigation ?? true,
direction: config.nzDirection || globalConfig.nzDirection || this.directionality.value
});
return this.overlay.create(overLayConfig);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzImageService, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: i2.NzConfigService }, { token: i3.Directionality }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzImageService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzImageService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }, { type: i2.NzConfigService }, { type: i3.Directionality }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQVcsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQVcscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFRcEUsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxPQUFnQixFQUNoQixRQUFrQixFQUNsQixlQUFnQyxFQUNoQyxjQUE4QjtRQUg5QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUNyQyxDQUFDO0lBRUosT0FBTyxDQUNMLE1BQWlCLEVBQ2pCLE9BQStCLEVBQy9CLE9BQTJDO1FBRTNDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxPQUFPLENBQ2IsTUFBaUIsRUFDakIsTUFBOEIsRUFDOUIsWUFBZ0Q7UUFFaEQsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLElBQUkscUJBQXFCLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0UsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVyRixnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUFzQixFQUFFLE1BQTZCO1FBQ2xGLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtnQkFDN0MsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTthQUNyRDtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLHVCQUF1QixFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQTZCO1FBQ2pELE1BQU0sWUFBWSxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQWlCLElBQUksRUFBRSxDQUFDO1FBQzlHLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3RDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUNyRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNsRCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLElBQUksWUFBWSxDQUFDLG1CQUFtQixJQUFJLElBQUk7WUFDM0YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7U0FDdkYsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDOzhHQXhEVSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEltYWdlQ29uZmlnLCBOekNvbmZpZ1NlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvY29uZmlnJztcblxuaW1wb3J0IHsgTlpfQ09ORklHX01PRFVMRV9OQU1FIH0gZnJvbSAnLi9pbWFnZS1jb25maWcnO1xuaW1wb3J0IHsgTnpJbWFnZSwgTnpJbWFnZVByZXZpZXdPcHRpb25zIH0gZnJvbSAnLi9pbWFnZS1wcmV2aWV3LW9wdGlvbnMnO1xuaW1wb3J0IHsgTnpJbWFnZVByZXZpZXdSZWYgfSBmcm9tICcuL2ltYWdlLXByZXZpZXctcmVmJztcbmltcG9ydCB7IE56SW1hZ2VQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOekltYWdlU2NhbGVTdGVwLCBOekltYWdlVXJsIH0gZnJvbSAnLi9pbWFnZS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE56SW1hZ2VTZXJ2aWNlIHtcbiAgcHJldmlldyhpbWFnZXM6IE56SW1hZ2VbXSwgb3B0aW9uPzogTnpJbWFnZVByZXZpZXdPcHRpb25zKTogTnpJbWFnZVByZXZpZXdSZWY7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOekltYWdlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG56Q29uZmlnU2VydmljZTogTnpDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5XG4gICkge31cblxuICBwcmV2aWV3KFxuICAgIGltYWdlczogTnpJbWFnZVtdLFxuICAgIG9wdGlvbnM/OiBOekltYWdlUHJldmlld09wdGlvbnMsXG4gICAgem9vbU1hcD86IE1hcDxOekltYWdlVXJsLCBOekltYWdlU2NhbGVTdGVwPlxuICApOiBOekltYWdlUHJldmlld1JlZiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheShpbWFnZXMsIG9wdGlvbnMsIHpvb21NYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5KFxuICAgIGltYWdlczogTnpJbWFnZVtdLFxuICAgIGNvbmZpZz86IE56SW1hZ2VQcmV2aWV3T3B0aW9ucyxcbiAgICBzY2FsZVN0ZXBNYXA/OiBNYXA8TnpJbWFnZVVybCwgTnpJbWFnZVNjYWxlU3RlcD5cbiAgKTogTnpJbWFnZVByZXZpZXdSZWYge1xuICAgIGNvbnN0IGNvbmZpZ01lcmdlZCA9IHsgLi4ubmV3IE56SW1hZ2VQcmV2aWV3T3B0aW9ucygpLCAuLi4oY29uZmlnID8/IHt9KSB9O1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoY29uZmlnTWVyZ2VkKTtcbiAgICBjb25zdCBwcmV2aWV3Q29tcG9uZW50ID0gdGhpcy5hdHRhY2hQcmV2aWV3Q29tcG9uZW50KG92ZXJsYXlSZWYsIGNvbmZpZ01lcmdlZCk7XG4gICAgcHJldmlld0NvbXBvbmVudC5zZXRJbWFnZXMoaW1hZ2VzLCBzY2FsZVN0ZXBNYXApO1xuICAgIGNvbnN0IHByZXZpZXdSZWYgPSBuZXcgTnpJbWFnZVByZXZpZXdSZWYocHJldmlld0NvbXBvbmVudCwgY29uZmlnTWVyZ2VkLCBvdmVybGF5UmVmKTtcblxuICAgIHByZXZpZXdDb21wb25lbnQucHJldmlld1JlZiA9IHByZXZpZXdSZWY7XG4gICAgcmV0dXJuIHByZXZpZXdSZWY7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaFByZXZpZXdDb21wb25lbnQob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgY29uZmlnOiBOekltYWdlUHJldmlld09wdGlvbnMpOiBOekltYWdlUHJldmlld0NvbXBvbmVudCB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogT3ZlcmxheVJlZiwgdXNlVmFsdWU6IG92ZXJsYXlSZWYgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOekltYWdlUHJldmlld09wdGlvbnMsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChOekltYWdlUHJldmlld0NvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IG92ZXJsYXlSZWYuYXR0YWNoKGNvbnRhaW5lclBvcnRhbCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KGNvbmZpZzogTnpJbWFnZVByZXZpZXdPcHRpb25zKTogT3ZlcmxheVJlZiB7XG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gKHRoaXMubnpDb25maWdTZXJ2aWNlLmdldENvbmZpZ0ZvckNvbXBvbmVudChOWl9DT05GSUdfTU9EVUxFX05BTUUpIGFzIEltYWdlQ29uZmlnKSB8fCB7fTtcbiAgICBjb25zdCBvdmVyTGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IGNvbmZpZy5uekNsb3NlT25OYXZpZ2F0aW9uID8/IGdsb2JhbENvbmZpZy5uekNsb3NlT25OYXZpZ2F0aW9uID8/IHRydWUsXG4gICAgICBkaXJlY3Rpb246IGNvbmZpZy5uekRpcmVjdGlvbiB8fCBnbG9iYWxDb25maWcubnpEaXJlY3Rpb24gfHwgdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlckxheUNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==