{"version":3,"sources":["jsdelivr-header.js","/gh/themiify/themify-count-down@1.0.0/web_component/master.js"],"names":[],"mappings":"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","file":"/gh/themiify/themify-count-down@1.0.0/web_component/master.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /gh/themiify/themify-count-down@1.0.0/web_component/master.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","class TabsComponent extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n\r\n    // Create container for the component (no Shadow DOM)\r\n    const container = document.createElement(\"div\");\r\n\r\n    // Template HTML with Styles\r\n    container.innerHTML = `\r\n        <div part=\"main-container\">\r\n          <!-- Tab Headers -->\r\n          <div class=\"tab-header\" part=\"tab-header\">\r\n            <slot name=\"tab-headers\"></slot>\r\n          </div>\r\n  \r\n          <!-- Tab Contents -->\r\n          <div class=\"tab-contents\" part=\"tab-content\">\r\n            <slot name=\"tab-contents\"></slot>\r\n          </div>\r\n        </div>\r\n      `;\r\n\r\n    this.attachShadow({mode: \"open\"}).appendChild(container);\r\n\r\n    this.tabs = []; // To hold references to tab headers\r\n    this.contents = []; // To hold references to tab contents\r\n  }\r\n\r\n  connectedCallback() {\r\n    // Fetch the headers and content when the component is connected to the DOM\r\n    this.tabs = this.querySelectorAll('[slot=\"tab-headers\"]');\r\n    this.contents = this.querySelectorAll('[slot=\"tab-contents\"]');\r\n\r\n    if (this.tabs.length === 0 || this.contents.length === 0) {\r\n      console.warn(\r\n        \"ProductFeaturesDetail: Ensure both headers and content slots are provided.\"\r\n      );\r\n      return;\r\n    }\r\n\r\n    // Initialize tabs\r\n    this.tabs.forEach((tab, index) => {\r\n      tab.addEventListener(\"click\", () => this.switchTab(index));\r\n    });\r\n\r\n    // Initialize the first tab as active\r\n    this.switchTab(0);\r\n  }\r\n\r\n  resetTabs() {\r\n    // Reset Styles for All Tabs and Contents\r\n    this.tabs.forEach(tab => tab.classList.remove(\"styles\"));\r\n    this.contents.forEach(content => content.classList.remove(\"active\"));\r\n  }\r\n\r\n  switchTab(index) {\r\n    this.resetTabs();\r\n\r\n    // Activate the clicked tab and its corresponding content\r\n    this.tabs[index].classList.add(\"styles\");\r\n    this.contents[index].classList.add(\"active\");\r\n  }\r\n}\r\n\r\n// Register the Custom Element\r\ncustomElements.define(\"tabs-component\", TabsComponent);\r\n\r\n\r\n\r\n\r\n\r\n\r\nclass CountdownTimer extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n    this.attachShadow({ mode: 'open' });\r\n    this.timer = null;\r\n  }\r\n\r\n  static get observedAttributes() {\r\n    return ['boxed', 'separator'];\r\n  }\r\n\r\n  connectedCallback() {\r\n    this.updateTimer();\r\n  }\r\n\r\n  attributeChangedCallback(name, oldValue, newValue) {\r\n    if (name === 'boxed' || name === 'separator') {\r\n      this.updateTimer();\r\n    }\r\n  }\r\n\r\n  disconnectedCallback() {\r\n    clearInterval(this.timer);\r\n  }\r\n\r\n  updateTimer() {\r\n    const inputDate = this.getAttribute('date');\r\n    const expiredMessage = this.getAttribute('expired-message') || \"Time's up!\";\r\n    const hideDays = this.hasAttribute('hide-days');\r\n    const hideHours = this.hasAttribute('hide-hours');\r\n    const hideMinutes = this.hasAttribute('hide-minutes');\r\n    const hideSeconds = this.hasAttribute('hide-seconds');\r\n    const boxed = this.hasAttribute('boxed');\r\n    const separator = this.getAttribute('separator') || '';\r\n\r\n    const dateParts = this.parseDate(inputDate);\r\n\r\n    if (dateParts) {\r\n      const { year, month, day } = dateParts;\r\n      const countdownDate = new Date(year, month - 1, day).getTime();\r\n      this.renderTemplate({ hideDays, hideHours, hideMinutes, hideSeconds, boxed, separator });\r\n      this.startCountdown(countdownDate, expiredMessage, { hideDays, hideHours, hideMinutes, hideSeconds });\r\n    } else {\r\n      this.shadowRoot.innerHTML = ``;\r\n    }\r\n  }\r\n\r\n  parseDate(input) {\r\n    const regex = /(?<year>\\d{4})[^\\d]*(?<month>\\d{1,2})[^\\d]*(?<day>\\d{1,2})|(?<day2>\\d{1,2})[^\\d]*(?<month2>\\d{1,2})[^\\d]*(?<year2>\\d{4})|(?<month3>[A-Za-z]+)[^\\d]*(?<day3>\\d{1,2})[^\\d]*(?<year3>\\d{4})/;\r\n    const match = input.match(regex);\r\n\r\n    if (match) {\r\n      let year, month, day;\r\n\r\n      if (match.groups.year && match.groups.month && match.groups.day) {\r\n        year = parseInt(match.groups.year);\r\n        month = parseInt(match.groups.month);\r\n        day = parseInt(match.groups.day);\r\n      } else if (match.groups.day2 && match.groups.month2 && match.groups.year2) {\r\n        year = parseInt(match.groups.year2);\r\n        month = parseInt(match.groups.month2);\r\n        day = parseInt(match.groups.day2);\r\n      } else if (match.groups.month3 && match.groups.day3 && match.groups.year3) {\r\n        year = parseInt(match.groups.year3);\r\n        day = parseInt(match.groups.day3);\r\n        month = this.getMonthIndex(match.groups.month3);\r\n      }\r\n\r\n      if (this.isValidDate(year, month, day)) {\r\n        return { year, month, day };\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  getMonthIndex(monthName) {\r\n    const monthNames = [\r\n      \"january\", \"february\", \"march\", \"april\", \"may\", \"june\", \"july\",\r\n      \"august\", \"september\", \"october\", \"november\", \"december\"\r\n    ];\r\n    return monthNames.indexOf(monthName.toLowerCase()) + 1;\r\n  }\r\n\r\n  isValidDate(year, month, day) {\r\n    const date = new Date(year, month - 1, day);\r\n    return (\r\n      date.getFullYear() === parseInt(year) &&\r\n      date.getMonth() === parseInt(month) - 1 &&\r\n      date.getDate() === parseInt(day)\r\n    );\r\n  }\r\n\r\n  renderTemplate({ hideDays, hideHours, hideMinutes, hideSeconds, boxed, separator }) {\r\n    const separatorHTML = separator ? `<span class=\"separator\">${separator}</span>` : '';\r\n\r\n    this.shadowRoot.innerHTML = `\r\n      <style>\r\n        .countdown-timer {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: 5px;\r\n          font-family: Arial, sans-serif;\r\n          \r\n        }\r\n        .time-unit {\r\n          text-align: center;\r\n          ${boxed ? 'border: 1px solid gray; padding: 5px; border-radius: 3px;' : ''}\r\n        }\r\n        .value {\r\n          font-size: 1.5em;\r\n          font-weight: bold;\r\n        }\r\n        .separator {\r\n          font-size: 1.5em;\r\n          font-weight: bold;\r\n          margin: 0 5px;\r\n        }\r\n      </style>\r\n      <div class=\"countdown-timer\" part=\"container\">\r\n        ${!hideDays ? `\r\n          <div class=\"time-unit\" part=\"time-unit\">\r\n            <span class=\"js-days value\" part=\"value\">0</span>\r\n            <div class=\"days-label\" part=\"label\"><slot name=\"days-label\">يوم</slot></div>\r\n          </div>\r\n          ${!hideHours ? separatorHTML : ''}\r\n        ` : ''}\r\n        ${!hideHours ? `\r\n          <div class=\"time-unit\" part=\"time-unit\">\r\n            <span class=\"js-hours value\" part=\"value\">0</span>\r\n            <div class=\"hours-label\" part=\"label\"><slot name=\"hours-label\">ساعة</slot></div>\r\n          </div>\r\n          ${!hideMinutes ? separatorHTML : ''}\r\n        ` : ''}\r\n        ${!hideMinutes ? `\r\n          <div class=\"time-unit\" part=\"time-unit\">\r\n            <span class=\"js-minutes value\" part=\"value\">0</span>\r\n            <div class=\"minutes-label\" part=\"label\"><slot name=\"minutes-label\">دقيقة</slot></div>\r\n          </div>\r\n          ${!hideSeconds ? separatorHTML : ''}\r\n        ` : ''}\r\n        ${!hideSeconds ? `\r\n          <div class=\"time-unit\" part=\"time-unit\">\r\n            <span class=\"js-seconds value\" part=\"value\">0</span>\r\n            <div class=\"seconds-label\" part=\"label\"><slot name=\"seconds-label\">ثانية</slot></div>\r\n          </div>\r\n        ` : ''}\r\n      </div>\r\n    `;\r\n  }\r\n\r\n  startCountdown(targetDate, expiredMessage, { hideDays, hideHours, hideMinutes, hideSeconds }) {\r\n    const daysElement = this.shadowRoot.querySelector('.js-days');\r\n    const hoursElement = this.shadowRoot.querySelector('.js-hours');\r\n    const minutesElement = this.shadowRoot.querySelector('.js-minutes');\r\n    const secondsElement = this.shadowRoot.querySelector('.js-seconds');\r\n\r\n    const updateTimer = () => {\r\n      const now = new Date().getTime();\r\n      const distance = targetDate - now;\r\n\r\n      if (distance < 0) {\r\n        this.shadowRoot.innerHTML = `<div>${expiredMessage}</div>`;\r\n        clearInterval(this.timer);\r\n        return;\r\n      }\r\n\r\n      let days = Math.floor(distance / (1000 * 60 * 60 * 24));\r\n      let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\r\n      let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n      let seconds = Math.floor((distance % (1000 * 60)) / 1000);\r\n\r\n      if (hideDays) hours += days * 24;\r\n      if (hideHours) minutes += hours * 60;\r\n      if (hideMinutes) seconds += minutes * 60;\r\n\r\n      if (daysElement) daysElement.textContent = days;\r\n      if (hoursElement) hoursElement.textContent = hours;\r\n      if (minutesElement) minutesElement.textContent = minutes;\r\n      if (secondsElement) secondsElement.textContent = seconds;\r\n    };\r\n\r\n    updateTimer();\r\n    this.timer = setInterval(updateTimer, 1000);\r\n  }\r\n}\r\n\r\ncustomElements.define('countdown-timer', CountdownTimer);\r\n"]}