Current File : //var/www/prestashop/modules/blockreassurance/_dev/front/index.js
/**
 * 2007-2019 PrestaShop
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future. If you wish to customize PrestaShop for your
 * needs please refer to http://www.prestashop.com for more information.
 *
 * @author    PrestaShop SA <contact@prestashop.com>
 * @copyright 2007-2019 PrestaShop SA
 * @license   http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 * International Registered Trademark & Property of PrestaShop SA
 */

import './front.scss';

$(window).ready(() => {
  /**
   * @param {String} imgSrc
   */
  function styleSVG(imgSrc) {
    const imgTarget = $(`.blockreassurance_product img.svg.invisible[src="${imgSrc}"], .blockreassurance img.svg.invisible[src="${imgSrc}"]`);

    if (imgTarget.length === 0) {
      return;
    }

    // Fetch the image
    $.ajax({
      url: imgSrc,
      type: 'GET',
      success(data) {
        if ($.isXMLDoc(data)) {
          // Get the SVG tag, ignore the rest
          let $svg = $(data).find('svg');
          // Add URL in data
          $svg = $svg.attr('data-img-url', imgSrc);
          // Remove any invalid XML tags as per http://validator.w3.org
          $svg = $svg.removeAttr('xmlns:a');
          // Set color defined in backoffice
          $svg.find('path[fill]').attr('fill', window.psr_icon_color);
          $svg.find('path:not([fill])').css('fill', window.psr_icon_color);
          // For each element, replace the svg with specific ID & CSS class
          imgTarget.each(function () {
            const imgID = $(this).attr('id');
            const imgClass = $(this).attr('class');
            let $imgSvg = $svg.clone();
            // Add replaced image's ID to the new SVG
            $imgSvg = typeof imgID !== 'undefined' ? $imgSvg.attr('id', imgID) : $imgSvg;
            // Add replaced image's classes to the new SVG
            $imgSvg = typeof imgClass !== 'undefined' ? $imgSvg.attr('class', `${imgClass} replaced-svg`) : $imgSvg.attr('class', ' replaced-svg');
            $imgSvg.removeClass('invisible');
            $(this).replaceWith($imgSvg);
          });
        }
      },
    });
  }

  const imgSrcSvg = $('.blockreassurance_product img.svg, .blockreassurance img.svg').map(function () {
    return $(this).attr('src');
  }).toArray();
  imgSrcSvg
    .filter((el, pos) => imgSrcSvg.indexOf(el) === pos)
    .forEach(styleSVG);
});