File

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

Description

This class creates teaser text overlays.

Implements

FsTeaserOverlayFactoryInterface

Index

Methods

Constructor

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

Methods

Public create
create()
Returns : OverlayText
Private createTextOverlay
createTextOverlay(ltText: CmsInputTextFormData, ltColorR: CmsInputNumberFormData, ltColorG: CmsInputNumberFormData, ltColorB: CmsInputNumberFormData, ltFontSize: CmsInputComboBoxFormData)
Parameters :
Name Type Optional
ltText CmsInputTextFormData No
ltColorR CmsInputNumberFormData No
ltColorG CmsInputNumberFormData No
ltColorB CmsInputNumberFormData No
ltFontSize CmsInputComboBoxFormData No
Returns : OverlayText
import {
  CmsInputComboBoxFormData,
  CmsInputNumberFormData,
  TextLinkTemplate,
  CmsInputTextFormData,
  FontSize,
  OverlayDimension,
  OverlayPosition,
  OverlayText,
  FsTeaserOverlayFactoryInterface,
} from './fs-teaser.model';
import { nullSafe, toRgbString } from 'fs-spartacus-common';

function isOfTypeFontSize(fontSize: string | null | undefined): fontSize is FontSize {
  return ['medium', 'small', 'big'].includes(fontSize);
}

/**
 * This class creates teaser text overlays.
 *
 * @export
 * @class FsTeaserTextOverlay
 */
export class FsTeaserTextOverlay implements FsTeaserOverlayFactoryInterface<OverlayText> {
  constructor(private area: TextLinkTemplate, private positionAndDimension: OverlayPosition & OverlayDimension) {}

  private createTextOverlay(
    ltText: CmsInputTextFormData,
    ltColorR: CmsInputNumberFormData,
    ltColorG: CmsInputNumberFormData,
    ltColorB: CmsInputNumberFormData,
    ltFontSize: CmsInputComboBoxFormData
  ): OverlayText {
    const colorR = nullSafe(ltColorR?.value, 0);
    const colorG = nullSafe(ltColorG?.value, 0);
    const colorB = nullSafe(ltColorB?.value, 0);
    const fontSizeString = nullSafe(ltFontSize?.value?.identifier as FontSize, '');
    const fontSize = isOfTypeFontSize(fontSizeString) ? fontSizeString : 'medium';
    const text: OverlayText = {
      fontSize,
      value: nullSafe(ltText?.value, ''),
      color: toRgbString(colorR, colorG, colorB),
      ...this.positionAndDimension,
    };
    return text;
  }

  public create(): OverlayText {
    if (this.area?.link?.formData != null) {
      const { lt_color_b, lt_color_g, lt_color_r, lt_font_size, lt_text } = this.area.link.formData;
      if (lt_text != null) {
        return this.createTextOverlay(lt_text, lt_color_r, lt_color_g, lt_color_b, lt_font_size);
      }
    }
  }
}

results matching ""

    No results matching ""