{
  "version": 3,
  "sources": ["/cdn/shop/t/63/assets/stocked.food.custom.js?t=1231242423"],
  "sourcesContent": ["(function () {\n  if (!window.location.pathname.includes(\"/a/\")) {\n    return; // \uD83D\uDEAB Not the subscriptions page\n  }\n\n  const selector = \".SubscriptionGroup-Active\";\n\n  // If already present\n  const existing = document.querySelector(selector);\n  if (existing) {\n    runLogic(existing);\n    return;\n  }\n\n  const observer = new MutationObserver(() => {\n    const el = document.querySelector(selector);\n    if (el) {\n      observer.disconnect();\n      runLogic(el);\n    }\n  });\n\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true,\n  });\n\n  function runLogic(element) {\n    debugger;\n    let customerInformation = getLatestSkioUserEmail({ clean: true });\n    let customerEmailID = null;\n    if (customerInformation != null) {\n      customerEmailID = customerInformation.value.split(\"-skioSiteId-\")[0];\n    }\n    /*\n    console.log(`[EQ Debug]: Customer Email ID found`, customerEmailID);\n    console.log(`[EQ Debug]: Customer Information found`, customerInformation);\n    */\n    let positionToAddNewElement = element.closest(\".XiG.zI7.iyn.Hsu\");\n    if (customerEmailID == null) {\n      let textContentToAdd = `\u26A0\uFE0F Warning: Anything you change below won't affect orders that have already been paid for. If you're looking to make changes, reach out to us on <a href=\"mailto:team@stockedfood.com\">email</a> or <a href=\"https://wa.me/447942333689\">WhatsApp</a>!`;\n      const infoDiv = document.createElement(\"div\");\n      infoDiv.className = \"custom-subscription-info\";\n      infoDiv.innerHTML = `\n        <div style=\"\">\n          ${textContentToAdd}\n        </div>\n      `;\n      positionToAddNewElement.parentNode.insertBefore(\n        infoDiv,\n        positionToAddNewElement\n      );\n      console.log(\n        `[EQ Debug]: Found element for subscriptions page`,\n        positionToAddNewElement\n      );\n    } else {\n      const requestOptions = {\n        method: \"GET\",\n        redirect: \"follow\",\n      };\n      fetch(\n        `https://stockedfood.eqserver.net/order/graphql/customer/last5/by-email/${customerEmailID}`,\n        requestOptions\n      )\n        .then((response) => response.text())\n        .then((result) => {\n          console.log(JSON.parse(result)?.orders[0]?.processedAt);\n          console.log(JSON.parse(result)?.orders[0]?.tags);\n          let tags = null;\n          let orderPaymentDate = JSON.parse(result)?.orders[0]?.processedAt;\n          tags = JSON.parse(result)?.orders[0]?.tags;\n          let dateOfDelivery = extractDateFromTags(tags);\n          let dateOfDeliveryFormatted = null;\n          if(dateOfDelivery != null){\n            dateOfDeliveryFormatted = formatDDMMYYYYToReadable(dateOfDelivery);\n            console.log(`[EQ Debug]: Date of delivery extracted from tags: ${dateOfDeliveryFormatted}`);\n          }\n          let formattedDate = new Date(orderPaymentDate).toLocaleDateString(\"en-GB\", {\n            day: \"2-digit\",\n            month: \"long\",\n            year: \"numeric\",\n          });\n\n          let deliveryTextContentToAdd = ``;\n          let textContentToAdd = ``;\n          if(dateOfDelivery != null) { \n            deliveryTextContentToAdd = ` for <b>delivery on ${dateOfDeliveryFormatted}</b>`;\n            let todayDate = new Date();\n            let deliveryDateObj = new Date(dateOfDeliveryFormatted);\n            if(deliveryDateObj > todayDate){\n              textContentToAdd = `\u26A0\uFE0F Warning: you have an order that has been paid for on <b>${formattedDate}</b>${deliveryTextContentToAdd}. Anything you change below won't affect this order so if you're looking to make changes, reach out to us on <a href=\"mailto:team@stockedfood.com\">email</a> or <a href=\"https://wa.me/447942333689\">WhatsApp</a>!`;  \n            } else {\n              textContentToAdd = `\u26A0\uFE0F Warning: Anything you change below won't affect orders that have already been paid for. If you're looking to make changes, reach out to us on <a href=\"mailto:team@stockedfood.com\">email</a> or <a href=\"https://wa.me/447942333689\">WhatsApp</a>!`;\n            }\n          } else {\n            textContentToAdd = `\u26A0\uFE0F Warning: Anything you change below won't affect orders that have already been paid for. If you're looking to make changes, reach out to us on <a href=\"mailto:team@stockedfood.com\">email</a> or <a href=\"https://wa.me/447942333689\">WhatsApp</a>!`;\n          }\n          \n          \n          const infoDiv = document.createElement(\"div\");\n          infoDiv.className = \"custom-subscription-info\";\n          infoDiv.innerHTML = `\n            <div style=\"\">\n              ${textContentToAdd}\n            </div>\n          `;\n          positionToAddNewElement.parentNode.insertBefore(\n            infoDiv,\n            positionToAddNewElement\n          );\n        })\n        .catch((error) => console.error(error));\n    }\n    // \uD83D\uDD25 your actual logic here\n  }\n})();\n\n\nconst extractDateFromTags = (tags) => {\n  if (!Array.isArray(tags)) return null;\n\n  // Matches DD.MM.YYYY where year is between 2026\u20132030\n  const dateRegex = /\\b\\d{1,2}\\.\\d{1,2}\\.(2026|2027|2028|2029|2030)\\b/;\n\n  for (const tag of tags) {\n    const match = tag.match(dateRegex);\n    if (match) {\n      return match[0];\n    }\n  }\n\n  return null;\n}\n\n/**\n * Returns the latest email found inside UserAttributes in localStorage\n * @param {Object} options\n * @param {boolean} options.clean - remove \"-skioSiteId-...\" from email\n * @returns {{ key: string, value: string } | null}\n */\nconst getLatestSkioUserEmail = (options = { clean: false }) => {\n  let lastEmail = null;\n\n  for (let i = 0; i < localStorage.length; i++) {\n    const storageKey = localStorage.key(i);\n    const rawValue = localStorage.getItem(storageKey);\n\n    if (typeof rawValue !== \"string\" || !rawValue.includes(\"UserAttributes\")) {\n      continue;\n    }\n\n    try {\n      const parsed = JSON.parse(rawValue);\n      const userAttributes = parsed?.UserAttributes;\n\n      if (!Array.isArray(userAttributes)) continue;\n\n      const emailObj = userAttributes.find(\n        (attr) => attr?.Name === \"email\" && typeof attr.Value === \"string\"\n      );\n\n      if (emailObj) {\n        lastEmail = {\n          key: \"email\",\n          value: options.clean\n            ? emailObj.Value.split(\"-skioSiteId-\")[0]\n            : emailObj.Value,\n        };\n      }\n    } catch (e) {\n      // Ignore invalid JSON safely\n    }\n  }\n\n  return lastEmail;\n};\n\nconst formatDDMMYYYYToReadable = (dateStr) => {\n  if (!dateStr) return null;\n\n  const [day, month, year] = dateStr.split(\".\");\n  if (!day || !month || !year) return null;\n\n  const date = new Date(Date.UTC(year, month - 1, day));\n\n  return date.toLocaleDateString(\"en-GB\", {\n    day: \"2-digit\",\n    month: \"long\",\n    year: \"numeric\",\n    timeZone: \"UTC\",\n  });\n}"],
  "mappings": "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",
  "names": []
}
