ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 15.8 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-experimental-image.mjs","sources":["../../components/experimental/image/utils.ts","../../components/experimental/image/image-loader.ts","../../components/experimental/image/image.component.ts","../../components/experimental/image/image.module.ts","../../components/experimental/image/typings.ts","../../components/experimental/image/public-api.ts","../../components/experimental/image/ng-zorro-antd-experimental-image.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport function isFixedSize(size: number | string): boolean {\n return typeof size === 'number' || /^(\\d)+(px)?$/.test(size);\n}\n\nexport function normalizeSrc(src: string): string {\n return src[0] === '/' ? src.slice(1) : src;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { isNil } from 'ng-zorro-antd/core/util';\n\nimport { NzImageSrcLoader } from './typings';\nimport { normalizeSrc } from './utils';\n\nexport const defaultImageSrcLoader: NzImageSrcLoader = ({ src }) => {\n return src;\n};\n\n/**\n * AliObjectsLoader return format\n * {domain}/{src}?x-oss-process=image/resize,w_{width}\n */\nexport function createAliObjectsLoader(domain: string): NzImageSrcLoader {\n return ({ src, width }) => {\n const params = isNil(width) ? '' : `?x-oss-process=image/resize,w_${width}`;\n return `${domain}/${normalizeSrc(src)}${params}`;\n };\n}\n\n/**\n * ImgixLoader return format\n * {domain}/{src}?format=auto&fit=max&w={width}\n */\nexport function createImgixLoader(domain: string): NzImageSrcLoader {\n return ({ src, width }) => {\n const params = isNil(width) ? '' : `&fit=max&w=${width}`;\n return `${domain}/${normalizeSrc(src)}?format=auto${params}`;\n };\n}\n\n/**\n * CloudinaryLoader return format\n * {domain}/c_limit,q_auto,w_{width}/{src}\n */\nexport function createCloudinaryLoader(domain: string): NzImageSrcLoader {\n return ({ src, width }) => {\n const params = isNil(width) ? '' : `,w_${width}`;\n return `${domain}/c_limit,q_auto${params}/${normalizeSrc(src)}`;\n };\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { ImagePreloadService, PreloadDisposeHandle } from 'ng-zorro-antd/core/services';\nimport { BooleanInput } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { defaultImageSrcLoader } from './image-loader';\nimport { NzImageSrcLoader } from './typings';\nimport { isFixedSize } from './utils';\n\nexport const NZ_CONFIG_MODULE_NAME: NzConfigKey = 'imageExperimental';\nconst sizeBreakpoints = [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840];\n\n@Component({\n selector: 'nz-image',\n exportAs: 'nzImage',\n template: `\n <img\n #imageRef\n nz-image\n [nzSrc]=\"src\"\n [nzSrcset]=\"srcset\"\n [nzDisablePreview]=\"nzDisablePreview\"\n [nzFallback]=\"nzFallback\"\n [nzPlaceholder]=\"nzPlaceholder\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n [attr.srcset]=\"srcset\"\n [attr.alt]=\"nzAlt || null\"\n />\n `,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NzImageViewComponent implements OnInit, OnChanges, OnDestroy {\n readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n static ngAcceptInputType_nzAutoSrcset: BooleanInput;\n static ngAcceptInputType_nzPriority: BooleanInput;\n static ngAcceptInputType_nzDisablePreview: BooleanInput;\n\n @Input() nzSrc: string = '';\n @Input() nzAlt: string = '';\n @Input() nzWidth: string | number = 'auto';\n @Input() nzHeight: string | number = 'auto';\n @Input() @WithConfig() nzSrcLoader: NzImageSrcLoader = defaultImageSrcLoader;\n @Input() @InputBoolean() @WithConfig() nzAutoSrcset: boolean = false;\n @Input() @InputBoolean() nzPriority: boolean = false;\n @Input() @WithConfig() nzFallback: string | null = null;\n @Input() @WithConfig() nzPlaceholder: string | null = null;\n @Input() @InputBoolean() @WithConfig() nzDisablePreview: boolean = false;\n @ViewChild('imageRef') imageRef!: ElementRef<HTMLImageElement>;\n\n src = '';\n\n width: string | number = 'auto';\n height: string | number = 'auto';\n srcset = '';\n internalImage!: HTMLImageElement;\n\n private destroy$ = new Subject<void>();\n private reloadDisposeHandler: PreloadDisposeHandle = () => void 0;\n\n constructor(\n private cdr: ChangeDetectorRef,\n public nzConfigService: NzConfigService,\n private imagePreloadService: ImagePreloadService\n ) {\n this.nzConfigService\n .getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.composeImageAttrs();\n this.cdr.markForCheck();\n });\n }\n\n ngOnInit(): void {\n if (this.nzPriority) {\n this.preload();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { nzLoader, nzSrc, nzOptimize } = changes;\n\n if (nzSrc || nzLoader || nzOptimize) {\n this.composeImageAttrs();\n }\n }\n\n ngOnDestroy(): void {\n this.reloadDisposeHandler();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private preload(): void {\n this.reloadDisposeHandler = this.imagePreloadService.addPreload({\n src: this.src,\n srcset: this.srcset\n });\n }\n\n private optimizable(): boolean {\n if (this.nzAutoSrcset) {\n if (!isFixedSize(this.nzWidth) || !isFixedSize(this.nzHeight)) {\n warn(\n `When using \"nzAutoSrcset\" you should use a fixed size width and height, for more information please refer to CLS (https://web.dev/cls/) performance metrics`\n );\n return false;\n }\n if (this.nzSrc.endsWith('.svg')) {\n warn(`SVG does not need to be optimized`);\n return false;\n }\n if (this.nzSrc.startsWith('data:')) {\n warn(`Data URLs cannot be optimized`);\n return false;\n }\n return true;\n }\n return false;\n }\n\n private composeImageAttrs(): void {\n const loader = this.getLoader();\n if (!this.optimizable()) {\n this.src = loader({ src: this.nzSrc });\n this.width = this.nzWidth;\n this.height = this.nzHeight;\n return;\n }\n this.width = typeof this.nzWidth === 'number' ? this.nzWidth : parseInt(this.nzWidth, 10);\n this.height = typeof this.nzHeight === 'number' ? this.nzHeight : parseInt(this.nzHeight, 10);\n const widths = this.convertWidths(this.width, sizeBreakpoints);\n this.src = loader({ src: this.nzSrc, width: widths[0] });\n this.srcset = widths\n .map(\n (w, i) =>\n `${loader({\n src: this.nzSrc,\n width: w\n })} ${i + 1}x`\n )\n .join(', ');\n }\n\n private getLoader(): NzImageSrcLoader {\n return this.nzSrcLoader || defaultImageSrcLoader;\n }\n\n private convertWidths(width: number, optimizeSizes: number[]): number[] {\n const allSizes = [...optimizeSizes].sort((a, b) => a - b);\n return [\n ...new Set(\n // 2x scale is sufficient\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2].map(w => allSizes.find(p => p >= w) || w)\n )\n ];\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzImageModule as ImageModule } from 'ng-zorro-antd/image';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\n\nimport { NzImageViewComponent } from './image.component';\n\n@NgModule({\n imports: [\n BidiModule,\n OverlayModule,\n PortalModule,\n DragDropModule,\n CommonModule,\n NzIconModule,\n NzPipesModule,\n PlatformModule,\n ImageModule\n ],\n exports: [NzImageViewComponent],\n declarations: [NzImageViewComponent]\n})\nexport class NzImageModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport type NzImageSrcLoader = (params: { src: string; width?: number }) => string;\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './image.component';\nexport * from './image-loader';\nexport * from './image.module';\nexport * from './typings';\nexport * from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ImageModule"],"mappings":"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"}