{
  "version": 3,
  "sources": ["/cdn/shop/t/159/assets/bbb-share-cart-v6.js?cachecheck=1783382100"],
  "sourcesContent": ["(function () {\n  \"use strict\";\n\n  if (window.__bbbShareCartV6Loaded) return;\n  window.__bbbShareCartV6Loaded = true;\n\n  var CONFIG = {\n    restorePath: \"/cart?section_id=sc-restore-v10\",\n    workerUrl: \"https://api.buybookbook.xyz/share\"\n  };\n\n  function ensureModal() {\n    var existing = document.getElementById(\"bbb-share-cart-modal\");\n    if (existing) return existing;\n\n    var modal = document.createElement(\"div\");\n    modal.id = \"bbb-share-cart-modal\";\n    modal.className = \"bbb-share-cart-modal\";\n    modal.setAttribute(\"aria-hidden\", \"true\");\n    modal.innerHTML =\n      '<div class=\"bbb-share-cart-modal__dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Share cart link\">' +\n      '  <button type=\"button\" class=\"bbb-share-cart-modal__close\" data-action=\"close\">x</button>' +\n      '  <h3 class=\"bbb-share-cart-modal__title\">Share Link</h3>' +\n      '  <p class=\"bbb-share-cart-modal__note\">Free gifts, notes, and ETA messages may not be included in this link.</p>' +\n      '  <input id=\"bbb-share-cart-link\" class=\"bbb-share-cart-modal__input\" type=\"text\" readonly />' +\n      '  <button type=\"button\" class=\"bbb-share-cart-modal__copy\" data-action=\"copy\">Copy Link</button>' +\n      '  <p class=\"bbb-share-cart-modal__status\" aria-live=\"polite\"></p>' +\n      '</div>';\n\n    document.body.appendChild(modal);\n    modal.addEventListener(\"click\", function (event) {\n      if (event.target === modal || event.target.getAttribute(\"data-action\") === \"close\") {\n        hideModal();\n      }\n    });\n\n    modal.querySelector('[data-action=\"copy\"]').addEventListener(\"click\", function () {\n      var input = modal.querySelector(\"#bbb-share-cart-link\");\n      copyText(input.value, modal.querySelector(\".bbb-share-cart-modal__status\"));\n    });\n\n    return modal;\n  }\n\n  function showModal(link) {\n    var modal = ensureModal();\n    var input = modal.querySelector(\"#bbb-share-cart-link\");\n    var status = modal.querySelector(\".bbb-share-cart-modal__status\");\n    input.value = link;\n    status.textContent = \"\";\n    modal.setAttribute(\"aria-hidden\", \"false\");\n  }\n\n  function hideModal() {\n    var modal = document.getElementById(\"bbb-share-cart-modal\");\n    if (!modal) return;\n    modal.setAttribute(\"aria-hidden\", \"true\");\n  }\n\n  function setOverlayVisible(visible) {\n    var overlay = document.getElementById(\"bbb-share-cart-overlay\");\n    if (!overlay) return;\n    overlay.style.display = visible ? \"flex\" : \"none\";\n  }\n\n  function copyText(text, statusEl) {\n    if (!text) return;\n\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      navigator.clipboard.writeText(text).then(function () {\n        statusEl.textContent = \"Link copied.\";\n      }).catch(function () {\n        fallbackCopy(text, statusEl);\n      });\n      return;\n    }\n\n    fallbackCopy(text, statusEl);\n  }\n\n  function fallbackCopy(text, statusEl) {\n    var temp = document.createElement(\"textarea\");\n    temp.value = text;\n    temp.setAttribute(\"readonly\", \"\");\n    temp.style.position = \"absolute\";\n    temp.style.left = \"-9999px\";\n    document.body.appendChild(temp);\n    temp.select();\n    document.execCommand(\"copy\");\n    document.body.removeChild(temp);\n    statusEl.textContent = \"Link copied.\";\n  }\n\n  function normalizeCartItems(cart) {\n    if (!cart || !Array.isArray(cart.items)) return [];\n\n    return cart.items.map(function (item) {\n      var properties = Object.assign({}, item.properties || {});\n      properties._sc_title = item.title;\n\n      return {\n        id: item.variant_id,\n        quantity: item.quantity,\n        properties: properties\n      };\n    });\n  }\n\n  function toggleButtonState(button, disabled, text) {\n    button.disabled = disabled;\n    if (text) button.textContent = text;\n  }\n\n  function generateShareLink(button) {\n    var originalLabel = button.getAttribute(\"data-original-label\") || button.textContent;\n    button.setAttribute(\"data-original-label\", originalLabel);\n\n    toggleButtonState(button, true, \"Generating...\");\n    setOverlayVisible(true);\n\n    fetch(\"/cart.js\")\n      .then(function (res) { return res.json(); })\n      .then(function (cart) {\n        var items = normalizeCartItems(cart);\n        if (items.length === 0) throw new Error(\"EMPTY_CART\");\n\n        return fetch(CONFIG.workerUrl, {\n          method: \"POST\",\n          headers: { \"Content-Type\": \"application/json\" },\n          body: JSON.stringify({ items: items })\n        });\n      })\n      .then(function (res) { return res.json(); })\n      .then(function (payload) {\n        var token = payload && (payload.token || (payload.data && payload.data.token));\n        if (!token) throw new Error(\"TOKEN_NOT_RETURNED\");\n\n        var separator = CONFIG.restorePath.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n        var finalLink = window.location.origin + CONFIG.restorePath + separator + \"share_token=\" + encodeURIComponent(token);\n        showModal(finalLink);\n      })\n      .catch(function (error) {\n        if (error && error.message === \"EMPTY_CART\") {\n          window.alert(\"Your cart is empty.\");\n          return;\n        }\n        console.error(\"[BBB Share Cart V6]\", error);\n        window.alert(\"Unable to generate share cart link right now.\");\n      })\n      .finally(function () {\n        setOverlayVisible(false);\n        toggleButtonState(button, false, originalLabel);\n      });\n  }\n\n  function bindShareButtons() {\n    document.addEventListener(\"click\", function (event) {\n      var target = event.target && event.target.closest ? event.target : null;\n      var button = target && target.closest(\".share-cart-button,[data-share-cart-button]\");\n      if (!button) return;\n\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      generateShareLink(button);\n    }, true);\n  }\n\n  function init() {\n    bindShareButtons();\n    ensureModal();\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n  } else {\n    init();\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
