;(($) => {
    function createCountdownTimer(containerId, options) {
      const container = $(`#${containerId}`);
      const endDate = new Date(options.date);
  
      function updateCountdown() {
        const now = new Date();
        const distance = endDate - now;
  
        if (distance < 0) {
          clearInterval(interval);
          container.html("<p>" + wp.i18n.__('Countdown finished!', 'ultimate-countdown-timer') + "</p>");
          if (options.redirect) {
            setTimeout(() => {
              window.location.href = options.redirect;
            }, 1000);
          }
          return;
        }
  
        const days = Math.floor(distance / (1000 * 60 * 60 * 24));
        const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        const seconds = Math.floor((distance % (1000 * 60)) / 1000);
  
        container.empty();
  
        const units = [
          { show: options.showDays, value: days, label: wp.i18n.__('Days', 'ultimate-countdown-timer') },
          { show: options.showHours, value: hours, label: wp.i18n.__('Hours', 'ultimate-countdown-timer') },
          { show: options.showMinutes, value: minutes, label: wp.i18n.__('Minutes', 'ultimate-countdown-timer') },
          { show: options.showSeconds, value: seconds, label: wp.i18n.__('Seconds', 'ultimate-countdown-timer') }
        ];
  
        units.forEach((unit, index) => {
          if (unit.show === '1') {
            container.append(`
              <div class="countdown-item">
                <span class="countdown-value">${unit.value.toString().padStart(2, '0')}</span>
                <span class="countdown-label">${unit.label}</span>
              </div>
            `);
  
            if (index < units.length - 1 && units[index + 1].show === '1') {
              container.append('<span class="countdown-separator">:</span>');
            }
          }
        });
      }
  
      updateCountdown();
      const interval = setInterval(updateCountdown, 1000);
    }
  
    $(document).ready(function() {
      if (typeof ultimateCountdownData !== 'undefined') {
        createCountdownTimer(ultimateCountdownData.containerId, ultimateCountdownData);
      }
    });
  })(jQuery);
  