# All files / src/utils applyImage.js

52.17% Statements 12/23
31.82% Branches 7/22
25% Functions 1/4
52.38% Lines 11/21

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45

    2x

    2x

    1x
    1x
    1x

    1x

    1x

    1x

    1x
    1x

    1x

     // @flow

    function applyStyle(target, endStyle, withoutPlaceholder) {
      if (withoutPlaceholder) {
        target.style.opacity = 1; // eslint-disable-line
      } else {
        const style = target.getAttribute('style');
        target.setAttribute('style', `${style && style.includes('opacity') ? '' : 'opacity: 0;'}${style}${endStyle}`);
      }
    }

    export default function applyImage(target: any, image: Image, src: string) {
      Iif (this) {
        this.setState(previousState => ({
          mountedImages: new Set(previousState.mountedImages.add(target)),
        }));
        this.removeImgLoadingRef(image);
      } else {
        if (!target) return;

        /* eslint-disable */
        target.src = src;
        Eif (target.dataset.srcset) {
          target.srcset = target.dataset.srcset;
        }

        target.style.visibility = 'visible';

        const withoutPlaceholder = target.getAttribute('data-placeholder') === 'false';
        /* eslint-enable */
        const currentTarget = withoutPlaceholder ? target : target.nextSibling;

        Eif (currentTarget || withoutPlaceholder) {
          target.addEventListener('load', () => {
            if (target) {
              const endStyle = target.getAttribute('data-end-style') || '';
              applyStyle(currentTarget, endStyle, withoutPlaceholder);
              target.removeEventListener('load', applyStyle);
            }
          });
        }
        window.__REACT_SIMPLE_IMG__.imgLoadingRefs.delete(target);
      }
    }