File

src/converter/teaser/fs-teaser-image-overlay.ts

Description

This class is a factory to create image overlays from an ImageLinkTemplate.

Implements

FsTeaserOverlayFactoryInterface

Index

Methods

Constructor

constructor(area: ImageLinkTemplate, positionAndDimension)
Parameters :
Name Type Optional
area ImageLinkTemplate No
positionAndDimension No

Methods

Public create
create()
Returns : OverlayImage
Private createImageOverlay
createImageOverlay(link: CmsMediaFormData, imageAltText?: CmsInputTextFormData)
Parameters :
Name Type Optional
link CmsMediaFormData No
imageAltText CmsInputTextFormData Yes
Returns : OverlayImage
import { nullSafe } from 'fs-spartacus-common';
import {
  CmsInputTextFormData,
  ImageLinkTemplate,
  CmsMediaFormData,
  OverlayDimension,
  OverlayImage,
  OverlayPosition,
  FsTeaserOverlayFactoryInterface,
} from './fs-teaser.model';

const defaultResolution = 'ORIGINAL';

/**
 * This class is a factory to create image overlays from an {@link ImageLinkTemplate}.
 *
 * @export
 * @class FsTeaserImageOverlay
 */
export class FsTeaserImageOverlay implements FsTeaserOverlayFactoryInterface<OverlayImage> {
  constructor(private area: ImageLinkTemplate, private positionAndDimension: OverlayPosition & OverlayDimension) {}

  private createImageOverlay(link: CmsMediaFormData, imageAltText?: CmsInputTextFormData): OverlayImage {
    const image: OverlayImage = {
      url: nullSafe(link.value.resolutions.resolutionsMetaData[defaultResolution]?.url, null),
      resolution: defaultResolution,
      resolutions: nullSafe(link.value.resolutions.resolutionsMetaData, {}),
      altText: nullSafe(imageAltText && imageAltText.value, ''),
      ...this.positionAndDimension,
    };
    return image;
  }

  public create(): OverlayImage {
    if (this.area.link != null && this.area.link.formData != null) {
      const { st_alt_text, st_picture } = this.area.link.formData;
      if (st_picture?.value?.resolutions?.resolutionsMetaData != null) {
        return this.createImageOverlay(st_picture, st_alt_text);
      }
    }
  }
}

results matching ""

    No results matching ""