import {Component, ComponentInterface, Prop, h, Host, Element} from '@stencil/core';

@Component({
  tag: 'hy-adjacent-image-text',
  styleUrl: 'adjacent-image-text.scss',
  shadow: false,
})
export class AdjacentImageText implements ComponentInterface {
  @Element() el: HTMLElement;
  @Prop() headerstyle: string = 'default';
  @Prop() imageUrl: string = null;
  @Prop() imageAlt: string = '';
  @Prop() textTitle?: string;
  @Prop() textDescription: string = null;

  @Prop() mainUrl?: string;
  @Prop() mainUrlTitle?: string;
  @Prop() mainUrlAriaLabel?: string;
  @Prop() mainUrlIsExternal: boolean = false;

  @Prop() mainUrl2?: string;
  @Prop() mainUrlTitle2?: string;
  @Prop() mainUrlAriaLabel2?: string;
  @Prop() mainUrlIsExternal2: boolean = false;

  componentDidLoad() {
    let hyMainDiv = this.el.closest('.hy-main');
    if (hyMainDiv) {
      if (!hyMainDiv.classList.contains('with-sidebar')) {
        this.headerstyle = 'large';
      }
    }
  }

  render() {
    const classAttributes = ['hy-adjacent-image-text', `hy-adjacent-image-text__${this.headerstyle}`].join(' ');
    const contentClassAttributes = [
      'hy-adjacent-image-text__text-container',
      'hy-adjacent-image-text__text-container--left',
    ].join(' ');

    const imageLeftClassAttributes = ['hy-adjacent-image-text__image-container'].join(' ');

    const aspectRatioWidth = 6;
    const aspectRatioHeight = 4;
    const aspect = (aspectRatioHeight / aspectRatioWidth) * 100;
    const aspectRatio = {
      '--aspectRatio': `${aspect}%` as 'aspectRatio',
    };

    return (
      <Host>
        <div class={classAttributes}>
          <div class={imageLeftClassAttributes} style={aspectRatio}>
            <img alt={this.imageAlt} class="hy-image__image" src={this.imageUrl} />
          </div>
          <div class={contentClassAttributes}>
            <div class="hy-adjacent-image-text__text-container__info-wrapper">
              <div class="hy-adjacent-image-text__text-container__title">{this.textTitle}</div>
              <p
                class={`hy-adjacent-image-text__text-container__description hy-adjacent-image-text__text-container__description__${this.headerstyle}`}
              >
                {this.textDescription}
              </p>
            </div>
            <div class="hy-adjacent-image-text__text-container__links-wrapper">
              {this.mainUrl && (
                <div class="hy-adjacent-image-text__text-container__link">
                  <hy-cta-link
                    link-content={this.mainUrlTitle}
                    sc-label={this.mainUrlAriaLabel}
                    url={this.mainUrl}
                    is-external={this.mainUrlIsExternal}
                  />
                </div>
              )}
              {this.mainUrl2 && (
                <div class="hy-adjacent-image-text__text-container__link">
                  <hy-cta-link
                    link-content={this.mainUrlTitle2}
                    sc-label={this.mainUrlAriaLabel2}
                    url={this.mainUrl2}
                    is-external={this.mainUrlIsExternal2}
                  />
                </div>
              )}
            </div>
          </div>
        </div>
        <hy-box mb="1.75, 1.75, 2, 2.5" />
      </Host>
    );
  }
}