Untitled

 avatar
unknown
plain_text
2 years ago
13 kB
6
Indexable
(function () {
  const EXPERIMENT_NO = '2.1';
  const VARIANT_NO = '1';

  const GOOGLE_ANALYTICS_TRACKING_ID = '';

  const LOG_PREFIX = '[CONVERSION] ' + EXPERIMENT_NO + ' -->';
  const SELECTOR_PREFIX = 'conversion-' + EXPERIMENT_NO.replace('.', '-');
  const STORAGE_PREFIX = 'CONVERSION_' + EXPERIMENT_NO.replace('.', '_');

  const DEBUGGING_TOKEN_NAME = 'DEBUGGING';
  const DEBUGGING_ENABLED = document.cookie.match(
    new RegExp('(^| )' + DEBUGGING_TOKEN_NAME + '=ENABLED([^;]*)', 'i')
  );

  const utils = {};

  utils.log = (...args) => {
    DEBUGGING_ENABLED && console.log(LOG_PREFIX, ...args);
  };

  utils.dispatchEvent = (event) => {
    let stop;

    const check = () => {
      if (stop) return;

      if (!(
        window.ga instanceof Function &&
        window.ga.getAll instanceof Function
      )) return requestAnimationFrame(check);

      stop = true;

      const properties = window.ga.getAll();

      let analytics;

      if (GOOGLE_ANALYTICS_TRACKING_ID)
        analytics = properties.find(
          property =>
          property.get('trackingId') === GOOGLE_ANALYTICS_TRACKING_ID
        );

      analytics = analytics ? analytics : properties[0];

      if (analytics) analytics.send(
        'event',
        'Adobe Target',
        EXPERIMENT_NO + ' -- ' + VARIANT_NO,
        event, { nonInteraction: true }
      );
    };

    requestAnimationFrame(check);
  };

  utils.waitUntil = (condition, wait = 5000) => {
    return new Promise((resolve, reject) => {
      let stop;

      const timeout = wait && setTimeout(() => {
        stop = true;
        reject();
      }, wait);

      const check = () => {
        if (stop) return;
        if (!condition()) return requestAnimationFrame(check);

        clearTimeout(timeout);
        resolve(condition());
      };

      requestAnimationFrame(check);
    });
  };

  const init = (() => {
    utils.log('VARIANT #' + VARIANT_NO + ' RUNNING');

    utils.dispatchEvent('experiment shown');

    utils
      .waitUntil(() => document.body, 0)
      .then(element => element.classList.add(SELECTOR_PREFIX));

    utils
      .waitUntil(() => document.querySelector('.header__search'))
      .then((element) => {
        element.classList.add(
          SELECTOR_PREFIX + '-dropdown',
          SELECTOR_PREFIX + '-hidden'
        );

        document
          .querySelector('.header__button')
          .insertAdjacentHTML('afterend', '\
            <button\
              type="button"\
              class="' + SELECTOR_PREFIX + '-search-button"\
            >\
              <svg\
                xmlns="http://www.w3.org/2000/svg"\
                viewBox="0 0 48 50"\
                width="48"\
                height="50"\
                fill="none"\
              >\
                <path\
                  d="M11.8708 36.07C11.8708 36.7367 11.6675 37.2467 11.2608 37.6C10.8542 37.9467 10.2108 38.12 9.33082 38.12C8.89082 38.12 8.49415 38.0867 8.14082 38.02C7.78749 37.9533 7.49749 37.88 7.27082 37.8L7.47082 36.62C7.67082 36.6867 7.90415 36.7533 8.17082 36.82C8.43749 36.8867 8.68749 36.92 8.92082 36.92C9.05415 36.92 9.18082 36.91 9.30082 36.89C9.42082 36.8633 9.52415 36.8233 9.61082 36.77C9.70415 36.7167 9.77415 36.6467 9.82082 36.56C9.87415 36.4667 9.90082 36.35 9.90082 36.21C9.90082 36.05 9.83749 35.9067 9.71082 35.78C9.58415 35.6467 9.42415 35.5167 9.23082 35.39C9.04415 35.2633 8.83749 35.1333 8.61082 35C8.39082 34.86 8.18415 34.7033 7.99082 34.53C7.80415 34.3567 7.64749 34.16 7.52082 33.94C7.39415 33.7133 7.33082 33.45 7.33082 33.15C7.33082 32.49 7.54415 32.0033 7.97082 31.69C8.39749 31.37 8.98415 31.21 9.73082 31.21C10.1242 31.21 10.4675 31.2367 10.7608 31.29C11.0608 31.3433 11.3375 31.4033 11.5908 31.47L11.3908 32.64C11.2175 32.58 11.0108 32.5267 10.7708 32.48C10.5308 32.4267 10.2908 32.4 10.0508 32.4C9.73749 32.4 9.51415 32.4633 9.38082 32.59C9.24749 32.7167 9.18082 32.8667 9.18082 33.04C9.18082 33.2 9.24749 33.3433 9.38082 33.47C9.51415 33.5967 9.68082 33.7233 9.88082 33.85C10.0808 33.9767 10.2942 34.1067 10.5208 34.24C10.7542 34.3733 10.9708 34.5267 11.1708 34.7C11.3708 34.8733 11.5375 35.07 11.6708 35.29C11.8042 35.51 11.8708 35.77 11.8708 36.07ZM12.7111 38V31.33H16.8511L16.6511 32.57H14.4111V34H16.1911V35.1H14.4111V36.75H16.7011L16.8811 38H12.7111ZM21.4411 38L21.1511 36.98H19.1611L18.8711 38H17.1411L19.1811 31.33H21.2611L23.2811 38H21.4411ZM20.1611 32.85L19.4111 35.87H20.9111L20.1611 32.85ZM27.2708 38L25.9008 35.31H25.6608V38H23.9708V31.33H25.9208C26.4075 31.33 26.8375 31.3567 27.2108 31.41C27.5842 31.4633 27.8975 31.5633 28.1508 31.71C28.4108 31.8567 28.6075 32.0633 28.7408 32.33C28.8742 32.59 28.9408 32.9267 28.9408 33.34C28.9408 33.6067 28.9008 33.84 28.8208 34.04C28.7408 34.24 28.6308 34.4133 28.4908 34.56C28.3508 34.7067 28.1875 34.8267 28.0008 34.92C27.8208 35.0133 27.6308 35.0833 27.4308 35.13L29.2908 38H27.2708ZM27.1008 33.35C27.1008 33.0033 27.0208 32.77 26.8608 32.65C26.7075 32.53 26.4608 32.4633 26.1208 32.45H25.6608V34.28H26.1308C26.4575 34.28 26.7008 34.21 26.8608 34.07C27.0208 33.9233 27.1008 33.6833 27.1008 33.35ZM34.1476 37.8C33.9276 37.8933 33.6843 37.97 33.4176 38.03C33.1576 38.09 32.8476 38.12 32.4876 38.12C31.9876 38.12 31.561 38.0567 31.2076 37.93C30.8543 37.8033 30.5643 37.6033 30.3376 37.33C30.1176 37.05 29.9543 36.69 29.8476 36.25C29.741 35.81 29.6876 35.28 29.6876 34.66C29.6876 34.06 29.7376 33.5433 29.8376 33.11C29.9376 32.67 30.0976 32.31 30.3176 32.03C30.5376 31.75 30.821 31.5433 31.1676 31.41C31.5143 31.2767 31.9376 31.21 32.4376 31.21C32.811 31.21 33.1243 31.2433 33.3776 31.31C33.631 31.37 33.8576 31.4333 34.0576 31.5L33.7276 32.61C33.5743 32.5567 33.4176 32.5133 33.2576 32.48C33.0976 32.44 32.9276 32.42 32.7476 32.42C32.2876 32.42 31.951 32.6 31.7376 32.96C31.531 33.3133 31.4276 33.88 31.4276 34.66C31.4276 35.3667 31.5276 35.9133 31.7276 36.3C31.9276 36.68 32.2643 36.87 32.7376 36.87C32.9243 36.87 33.1043 36.85 33.2776 36.81C33.4576 36.77 33.6343 36.7167 33.8076 36.65L34.1476 37.8ZM38.5764 38V35.19H36.6864V38H34.9864V31.33H36.6864V33.95H38.5764V31.33H40.2764V38H38.5764Z"\
                  fill="white"\
                />\
                <path\
                  d="M27.1589 19.8077L31.2521 24.0109C31.4493 24.3112 31.4493 24.7615 31.2521 24.8616L30.3644 25.8124C30.1671 26.0625 29.7233 26.0625 29.4767 25.8124L25.1863 21.2088L25.0877 21.3088C24.3479 21.6591 23.6082 21.8092 22.8192 21.8092C19.6137 21.8092 17 19.0571 17 15.8546C17 12.6521 19.663 10 22.8685 10C26.074 10 28.589 12.6521 28.5397 15.8546C28.5397 17.3557 28.0466 18.7568 27.2575 19.7576L27.1589 19.8077ZM19.0216 15.9045C19.0216 18.0562 20.6983 19.7575 22.8189 19.7575C24.8901 19.7575 26.6161 18.1063 26.6161 15.9546C26.6161 13.8029 24.9394 12.1016 22.8189 12.1016C20.6983 12.1016 19.0216 13.7529 19.0216 15.9045Z"\
                  fill="white"\
                />\
              </svg>\
              <svg\
                xmlns="http://www.w3.org/2000/svg"\
                viewBox="0 0 48 50"\
                width="48"\
                height="50"\
                fill="none"\
              >\
                <path\
                  d="M16.0617 37.8C15.8417 37.8933 15.5983 37.97 15.3317 38.03C15.0717 38.09 14.7617 38.12 14.4017 38.12C13.9017 38.12 13.475 38.0567 13.1217 37.93C12.7683 37.8033 12.4783 37.6033 12.2517 37.33C12.0317 37.05 11.8683 36.69 11.7617 36.25C11.655 35.81 11.6017 35.28 11.6017 34.66C11.6017 34.06 11.6517 33.5433 11.7517 33.11C11.8517 32.67 12.0117 32.31 12.2317 32.03C12.4517 31.75 12.735 31.5433 13.0817 31.41C13.4283 31.2767 13.8517 31.21 14.3517 31.21C14.725 31.21 15.0383 31.2433 15.2917 31.31C15.545 31.37 15.7717 31.4333 15.9717 31.5L15.6417 32.61C15.4883 32.5567 15.3317 32.5133 15.1717 32.48C15.0117 32.44 14.8417 32.42 14.6617 32.42C14.2017 32.42 13.865 32.6 13.6517 32.96C13.445 33.3133 13.3417 33.88 13.3417 34.66C13.3417 35.3667 13.4417 35.9133 13.6417 36.3C13.8417 36.68 14.1783 36.87 14.6517 36.87C14.8383 36.87 15.0183 36.85 15.1917 36.81C15.3717 36.77 15.5483 36.7167 15.7217 36.65L16.0617 37.8ZM16.9005 38V31.33H18.6005V36.63H20.5705L20.7405 38H16.9005ZM26.4083 34.66C26.4083 35.3133 26.3483 35.8633 26.2283 36.31C26.115 36.75 25.9417 37.1067 25.7083 37.38C25.475 37.6467 25.185 37.8367 24.8383 37.95C24.4983 38.0633 24.105 38.12 23.6583 38.12C23.205 38.12 22.8083 38.0633 22.4683 37.95C22.1283 37.8367 21.8417 37.6467 21.6083 37.38C21.375 37.1067 21.1983 36.75 21.0783 36.31C20.965 35.8633 20.9083 35.3133 20.9083 34.66C20.9083 34.0067 20.965 33.46 21.0783 33.02C21.1983 32.5733 21.375 32.2167 21.6083 31.95C21.8417 31.6833 22.1283 31.4933 22.4683 31.38C22.8083 31.2667 23.205 31.21 23.6583 31.21C24.105 31.21 24.4983 31.2667 24.8383 31.38C25.185 31.4933 25.475 31.6833 25.7083 31.95C25.9417 32.2167 26.115 32.5733 26.2283 33.02C26.3483 33.46 26.4083 34.0067 26.4083 34.66ZM24.6783 34.66C24.6783 33.9 24.605 33.3333 24.4583 32.96C24.3183 32.5867 24.0517 32.4 23.6583 32.4C23.265 32.4 22.9983 32.5867 22.8583 32.96C22.7183 33.3333 22.6483 33.9 22.6483 34.66C22.6483 35.42 22.7183 35.99 22.8583 36.37C22.9983 36.7433 23.265 36.93 23.6583 36.93C24.0517 36.93 24.3183 36.7433 24.4583 36.37C24.605 35.99 24.6783 35.42 24.6783 34.66ZM31.5681 36.07C31.5681 36.7367 31.3648 37.2467 30.9581 37.6C30.5514 37.9467 29.9081 38.12 29.0281 38.12C28.5881 38.12 28.1914 38.0867 27.8381 38.02C27.4848 37.9533 27.1948 37.88 26.9681 37.8L27.1681 36.62C27.3681 36.6867 27.6014 36.7533 27.8681 36.82C28.1348 36.8867 28.3848 36.92 28.6181 36.92C28.7514 36.92 28.8781 36.91 28.9981 36.89C29.1181 36.8633 29.2214 36.8233 29.3081 36.77C29.4014 36.7167 29.4714 36.6467 29.5181 36.56C29.5714 36.4667 29.5981 36.35 29.5981 36.21C29.5981 36.05 29.5348 35.9067 29.4081 35.78C29.2814 35.6467 29.1214 35.5167 28.9281 35.39C28.7414 35.2633 28.5348 35.1333 28.3081 35C28.0881 34.86 27.8814 34.7033 27.6881 34.53C27.5014 34.3567 27.3448 34.16 27.2181 33.94C27.0914 33.7133 27.0281 33.45 27.0281 33.15C27.0281 32.49 27.2414 32.0033 27.6681 31.69C28.0948 31.37 28.6814 31.21 29.4281 31.21C29.8214 31.21 30.1648 31.2367 30.4581 31.29C30.7581 31.3433 31.0348 31.4033 31.2881 31.47L31.0881 32.64C30.9148 32.58 30.7081 32.5267 30.4681 32.48C30.2281 32.4267 29.9881 32.4 29.7481 32.4C29.4348 32.4 29.2114 32.4633 29.0781 32.59C28.9448 32.7167 28.8781 32.8667 28.8781 33.04C28.8781 33.2 28.9448 33.3433 29.0781 33.47C29.2114 33.5967 29.3781 33.7233 29.5781 33.85C29.7781 33.9767 29.9914 34.1067 30.2181 34.24C30.4514 34.3733 30.6681 34.5267 30.8681 34.7C31.0681 34.8733 31.2348 35.07 31.3681 35.29C31.5014 35.51 31.5681 35.77 31.5681 36.07ZM32.4083 38V31.33H36.5483L36.3483 32.57H34.1083V34H35.8883V35.1H34.1083V36.75H36.3983L36.5783 38H32.4083Z"\
                  fill="#004689"\
                />\
                <path\
                  d="M18.1 10.1499L31.85 23.8999L30.2 25.4999L16.5 11.7999L18.1 10.1499Z"\
                  fill="#004689"\
                />\
                <path\
                  d="M29.9499 10.3999L16.1499 24.1999L17.7499 25.7999L31.5999 12.0499L29.9499 10.3999Z"\
                  fill="#004689"\
                />\
              </svg>\
            </button>\
          ');

        element
          .querySelector('.container')
          .classList.add(SELECTOR_PREFIX + '-dropdown__main');

        document
          .querySelector('.header__top .header__button')
          .addEventListener('mousedown', () => {
            document
              .querySelector('.' + SELECTOR_PREFIX + '-search-button')
              .classList.remove(SELECTOR_PREFIX + '-search-button--is-active');

            document
              .querySelector('.' + SELECTOR_PREFIX + '-dropdown')
              .classList.add(SELECTOR_PREFIX + '-hidden');
          });

        document
          .querySelector('.' + SELECTOR_PREFIX + '-search-button')
          .addEventListener('click', function() {
            if (
              this.classList.contains(
                SELECTOR_PREFIX + '-search-button--is-active'
              )
            )
              utils.dispatchEvent('2.1 - Clicks on the close search icon');
            else utils.dispatchEvent('2.1 - Clicks on the search icon');

            this.classList.toggle(SELECTOR_PREFIX + '-search-button--is-active');

            document
              .querySelector('.' + SELECTOR_PREFIX + '-dropdown')
              .classList.toggle(SELECTOR_PREFIX + '-hidden');
          });

          document
            .querySelector('.header__search form[action="/search"] button[type="submit"]')
            .addEventListener('mousedown', () => {
              utils.dispatchEvent('2.1 - Searches from the basket');

              if (
                document
                  .querySelector('.header__search .dropdown-search span')
                  .textContent === 'Groceries'
              )
                utils.dispatchEvent('2.1 - Searches that head to the groceries site');
            });
      });
  })();
})();

Editor is loading...