{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/global.js?codex=20260813"],
  "sourcesContent": ["/* FrameArt \u2014 comportamentos globais (sem dependencias externas). */\n(function () {\n  'use strict';\n\n  // Prefixo de rota da loja (muda em lojas com m\u00FAltiplos idiomas).\n  function routeRoot() {\n    return (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';\n  }\n\n  /* ------------------------------------------------------- menu mobile -- */\n  function initMobileMenu() {\n    document.querySelectorAll('[data-menu-toggle]').forEach(function (button) {\n      var menu = document.getElementById(button.getAttribute('aria-controls'));\n      if (!menu) return;\n\n      button.addEventListener('click', function () {\n        var open = menu.getAttribute('data-open') === 'true';\n        menu.setAttribute('data-open', String(!open));\n        button.setAttribute('aria-expanded', String(!open));\n      });\n    });\n  }\n\n  /* --------------------------------------------------------- slideshow -- */\n  function initSlideshows() {\n    document.querySelectorAll('[data-slideshow]').forEach(function (root) {\n      var slides = Array.prototype.slice.call(root.querySelectorAll('[data-slide]'));\n      if (slides.length < 2) return;\n\n      var dots = Array.prototype.slice.call(root.querySelectorAll('[data-slide-dot]'));\n      var interval = parseInt(root.getAttribute('data-autoplay'), 10) || 0;\n      var index = 0;\n      var timer = null;\n\n      function show(next) {\n        index = (next + slides.length) % slides.length;\n        slides.forEach(function (slide, i) {\n          slide.hidden = i !== index;\n        });\n        dots.forEach(function (dot, i) {\n          dot.setAttribute('aria-current', String(i === index));\n        });\n      }\n\n      function restart() {\n        if (!interval) return;\n        window.clearInterval(timer);\n        timer = window.setInterval(function () {\n          show(index + 1);\n        }, interval);\n      }\n\n      root.querySelectorAll('[data-slide-prev]').forEach(function (el) {\n        el.addEventListener('click', function () {\n          show(index - 1);\n          restart();\n        });\n      });\n\n      root.querySelectorAll('[data-slide-next]').forEach(function (el) {\n        el.addEventListener('click', function () {\n          show(index + 1);\n          restart();\n        });\n      });\n\n      dots.forEach(function (dot, i) {\n        dot.addEventListener('click', function () {\n          show(i);\n          restart();\n        });\n      });\n\n      show(0);\n      restart();\n    });\n  }\n\n  /* ---------------------------------------------------- galeria produto -- */\n  function initProductGallery() {\n    document.querySelectorAll('[data-gallery]').forEach(function (root) {\n      var images = Array.prototype.slice.call(root.querySelectorAll('[data-gallery-image]'));\n      var thumbs = Array.prototype.slice.call(root.querySelectorAll('[data-gallery-thumb]'));\n      if (images.length === 0) return;\n\n      var index = 0;\n\n      function show(next) {\n        index = (next + images.length) % images.length;\n        images.forEach(function (slide, i) {\n          var active = i === index;\n          slide.hidden = !active;\n\n          // Pausa v\u00EDdeos ao sair do slide, para n\u00E3o tocar escondido.\n          if (!active) {\n            slide.querySelectorAll('video').forEach(function (video) {\n              if (!video.paused) video.pause();\n            });\n            var iframe = slide.querySelector('iframe');\n            if (iframe) iframe.src = iframe.src;\n          }\n        });\n        thumbs.forEach(function (thumb, i) {\n          thumb.setAttribute('aria-current', String(i === index));\n        });\n      }\n\n      thumbs.forEach(function (thumb, i) {\n        thumb.addEventListener('click', function () {\n          show(i);\n        });\n      });\n\n      root.querySelectorAll('[data-gallery-prev]').forEach(function (el) {\n        el.addEventListener('click', function () {\n          show(index - 1);\n        });\n      });\n\n      root.querySelectorAll('[data-gallery-next]').forEach(function (el) {\n        el.addEventListener('click', function () {\n          show(index + 1);\n        });\n      });\n\n      show(0);\n    });\n  }\n\n  /* ------------------------------- troca de variante na pagina produto -- */\n  function initVariantPicker() {\n    document.querySelectorAll('[data-variant-picker]').forEach(function (form) {\n      var selects = Array.prototype.slice.call(form.querySelectorAll('[data-option-index]'));\n      var idInput = form.querySelector('[data-variant-id]');\n      var priceEl = form.querySelector('[data-variant-price]');\n      var installmentsEl = form.querySelector('[data-variant-installments]');\n      var button = form.querySelector('[data-add-to-cart]');\n      var dataEl = document.querySelector('[data-variants-json]');\n      if (!idInput || !dataEl) return;\n\n      var variants;\n      try {\n        variants = JSON.parse(dataEl.textContent);\n      } catch (error) {\n        return;\n      }\n\n      var installmentCount = parseInt(form.getAttribute('data-installments'), 10) || 3;\n      var moneyFormat = form.getAttribute('data-money-format') || 'R$ {{amount}}';\n\n      function formatMoney(cents) {\n        var value = (cents / 100).toFixed(2).replace('.', ',');\n        var parts = value.split(',');\n        parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n        return moneyFormat.replace('{{amount}}', parts.join(','));\n      }\n\n      function update() {\n        var chosen = selects.map(function (select) {\n          return select.value;\n        });\n\n        var match = variants.find(function (variant) {\n          return chosen.every(function (value, i) {\n            return variant.options[i] === value;\n          });\n        });\n\n        if (!match) {\n          if (button) {\n            button.setAttribute('aria-disabled', 'true');\n            button.disabled = true;\n          }\n          return;\n        }\n\n        idInput.value = match.id;\n\n        if (priceEl) priceEl.textContent = formatMoney(match.price);\n        if (installmentsEl && installmentCount > 0) {\n          installmentsEl.textContent =\n            'ou ' +\n            formatMoney(Math.round(match.price / installmentCount)) +\n            ' em at\u00E9 ' +\n            installmentCount +\n            'x sem juros';\n        }\n\n        if (button) {\n          var available = match.available;\n          button.disabled = !available;\n          button.setAttribute('aria-disabled', String(!available));\n          button.textContent = available ? button.dataset.labelAvailable : button.dataset.labelSoldOut;\n        }\n      }\n\n      selects.forEach(function (select) {\n        select.addEventListener('change', update);\n      });\n\n      update();\n    });\n  }\n\n  /* ------------------------------- mostrar/esconder blocos (contas) --- */\n  function initToggles() {\n    document.querySelectorAll('[data-toggle]').forEach(function (button) {\n      if (button.dataset.toggleBound === 'true') return;\n      button.dataset.toggleBound = 'true';\n\n      var target = document.getElementById(button.getAttribute('data-toggle'));\n      if (!target) return;\n\n      button.addEventListener('click', function (event) {\n        event.preventDefault();\n        var hidden = target.hasAttribute('hidden');\n        if (hidden) {\n          target.removeAttribute('hidden');\n          var field = target.querySelector('input, textarea, select');\n          if (field) field.focus();\n        } else {\n          target.setAttribute('hidden', '');\n        }\n        button.setAttribute('aria-expanded', String(hidden));\n      });\n    });\n  }\n\n  /* ===================================================== carrinho AJAX === */\n\n  var CartDrawer = {\n    root: function () {\n      return document.querySelector('[data-cart-drawer]');\n    },\n\n    open: function () {\n      var el = CartDrawer.root();\n      if (!el) return;\n      el.setAttribute('aria-hidden', 'false');\n      document.body.classList.add('cart-drawer-open');\n      var close = el.querySelector('.cart-drawer__close');\n      if (close) close.focus();\n    },\n\n    close: function () {\n      var el = CartDrawer.root();\n      if (!el) return;\n      el.setAttribute('aria-hidden', 'true');\n      document.body.classList.remove('cart-drawer-open');\n    },\n\n    isOpen: function () {\n      var el = CartDrawer.root();\n      return !!el && el.getAttribute('aria-hidden') === 'false';\n    },\n\n    setBusy: function (busy) {\n      var el = CartDrawer.root();\n      if (el) el.classList.toggle('is-loading', !!busy);\n    },\n\n    // Re-renderiza o drawer pela Section Rendering API, sem recarregar a p\u00E1gina.\n    refresh: function () {\n      return fetch(routeRoot() +'?sections=cart-drawer')\n        .then(function (response) {\n          if (!response.ok) throw new Error('N\u00E3o foi poss\u00EDvel atualizar o carrinho.');\n          return response.json();\n        })\n        .then(function (data) {\n          var markup = data['cart-drawer'];\n          if (!markup) return;\n\n          var wrapper = document.createElement('div');\n          wrapper.innerHTML = markup;\n\n          var fresh = wrapper.querySelector('[data-cart-drawer]');\n          var current = CartDrawer.root();\n          if (!fresh || !current) return;\n\n          var wasOpen = CartDrawer.isOpen();\n          current.innerHTML = fresh.innerHTML;\n          current.setAttribute('data-item-count', fresh.getAttribute('data-item-count'));\n          current.setAttribute('aria-hidden', wasOpen ? 'false' : 'true');\n\n          CartDrawer.updateCount(parseInt(fresh.getAttribute('data-item-count'), 10) || 0);\n        });\n    },\n\n    updateCount: function (count) {\n      document.querySelectorAll('[data-cart-count]').forEach(function (badge) {\n        badge.textContent = count;\n        badge.hidden = count === 0;\n      });\n    },\n\n    change: function (line, quantity) {\n      CartDrawer.setBusy(true);\n      return fetch(routeRoot() +'cart/change.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify({ line: line, quantity: quantity })\n      })\n        .then(function (response) {\n          return response.json();\n        })\n        .then(function () {\n          return CartDrawer.refresh();\n        })\n        .catch(function (error) {\n          console.error(error);\n        })\n        .then(function () {\n          CartDrawer.setBusy(false);\n        });\n    }\n  };\n\n  function initCartDrawer() {\n    // Delega\u00E7\u00E3o no document: o conte\u00FAdo do drawer \u00E9 substitu\u00EDdo a cada mudan\u00E7a.\n    if (document.body.dataset.cartDrawerBound === 'true') return;\n    document.body.dataset.cartDrawerBound = 'true';\n\n    document.addEventListener('click', function (event) {\n      var opener = event.target.closest('[data-cart-drawer-open]');\n      if (opener && CartDrawer.root()) {\n        event.preventDefault();\n        CartDrawer.open();\n        return;\n      }\n\n      if (event.target.closest('[data-cart-drawer-close]')) {\n        event.preventDefault();\n        CartDrawer.close();\n        return;\n      }\n\n      var qtyButton = event.target.closest('[data-cart-qty]');\n      if (qtyButton) {\n        event.preventDefault();\n        CartDrawer.change(\n          parseInt(qtyButton.getAttribute('data-cart-line-index'), 10),\n          parseInt(qtyButton.getAttribute('data-cart-qty'), 10)\n        );\n      }\n    });\n\n    document.addEventListener('change', function (event) {\n      var input = event.target.closest('[data-cart-qty-input]');\n      if (!input) return;\n      CartDrawer.change(\n        parseInt(input.getAttribute('data-cart-line-index'), 10),\n        Math.max(0, parseInt(input.value, 10) || 0)\n      );\n    });\n\n    document.addEventListener('keydown', function (event) {\n      if (event.key === 'Escape' && CartDrawer.isOpen()) CartDrawer.close();\n    });\n  }\n\n  /* ------------------------------- adicionar ao carrinho sem recarregar -- */\n  function initAddToCart() {\n    document.querySelectorAll('[data-variant-picker]').forEach(function (form) {\n      if (form.dataset.ajaxBound === 'true') return;\n      form.dataset.ajaxBound = 'true';\n\n      form.addEventListener('submit', function (event) {\n        if (!CartDrawer.root()) return; // sem drawer, deixa o envio normal seguir\n        event.preventDefault();\n\n        var button = form.querySelector('[data-add-to-cart]');\n        var errorEl = form.querySelector('[data-cart-error]');\n        var original = button ? button.textContent : '';\n\n        if (errorEl) errorEl.hidden = true;\n        if (button) {\n          button.disabled = true;\n          button.textContent = '...';\n        }\n\n        fetch(routeRoot() +'cart/add.js', {\n          method: 'POST',\n          headers: { Accept: 'application/json' },\n          body: new FormData(form)\n        })\n          .then(function (response) {\n            return response.json().then(function (data) {\n              if (!response.ok) throw new Error(data.description || data.message);\n              return data;\n            });\n          })\n          .then(function () {\n            return CartDrawer.refresh();\n          })\n          .then(function () {\n            CartDrawer.open();\n          })\n          .catch(function (error) {\n            if (errorEl) {\n              errorEl.textContent = error.message;\n              errorEl.hidden = false;\n            }\n          })\n          .then(function () {\n            if (button) {\n              button.disabled = false;\n              button.textContent = original;\n            }\n          });\n      });\n    });\n  }\n\n  /* ------------------------------- seletor de quantidade na pagina PDP -- */\n  function initQuantityStepper() {\n    document.querySelectorAll('[data-qty-input]').forEach(function (input) {\n      var wrapper = input.closest('.qty-stepper');\n      if (!wrapper || wrapper.dataset.stepperBound === 'true') return;\n      wrapper.dataset.stepperBound = 'true';\n\n      function step(delta) {\n        var min = parseInt(input.getAttribute('min'), 10) || 1;\n        input.value = Math.max(min, (parseInt(input.value, 10) || min) + delta);\n      }\n\n      var minus = wrapper.querySelector('[data-qty-minus]');\n      var plus = wrapper.querySelector('[data-qty-plus]');\n      if (minus) minus.addEventListener('click', function () { step(-1); });\n      if (plus) plus.addEventListener('click', function () { step(1); });\n    });\n  }\n\n  /* ------------------------------------------------- calculo de frete -- */\n  function initShippingCalculator() {\n    function selectedProductPayload(root) {\n      var scope = root.closest('.product__info') || document;\n      var form = scope.querySelector('[data-variant-picker]');\n      if (!form) return null;\n\n      var variantInput = form.querySelector('[data-variant-id]');\n      var quantityInput = form.querySelector('[data-qty-input], input[name=\"quantity\"]');\n      var variantId = variantInput && variantInput.value;\n      var quantity = Math.max(1, parseInt(quantityInput && quantityInput.value, 10) || 1);\n\n      if (!variantId) return null;\n      return {\n        id: Number(variantId),\n        quantity: quantity,\n        properties: {\n          _shipping_quote: String(Date.now())\n        }\n      };\n    }\n\n    function shippingRatesParams(zip) {\n      return (\n        'shipping_address%5Bzip%5D=' +\n        encodeURIComponent(zip) +\n        '&shipping_address%5Bcountry%5D=Brazil'\n      );\n    }\n\n    function shippingRatesUrl(zip) {\n      return (\n        routeRoot() +\n        'cart/async_shipping_rates.json?shipping_address%5Bzip%5D=' +\n        encodeURIComponent(zip) +\n        '&shipping_address%5Bcountry%5D=Brazil'\n      );\n    }\n\n    function syncShippingRatesUrl(zip) {\n      return (\n        routeRoot() +\n        'cart/shipping_rates.json?shipping_address%5Bzip%5D=' +\n        encodeURIComponent(zip) +\n        '&shipping_address%5Bcountry%5D=Brazil'\n      );\n    }\n\n    function prepareShippingRates(zip) {\n      return fetch(routeRoot() + 'cart/prepare_shipping_rates.json?' + shippingRatesParams(zip), {\n        method: 'POST',\n        headers: { Accept: 'application/json' }\n      }).then(function (response) {\n        if (!response.ok && response.status !== 202) throw new Error('prepare:' + response.status);\n      });\n    }\n\n    function parseJsonResponse(response) {\n      return response.text().then(function (text) {\n        if (!text) return null;\n        try {\n          return JSON.parse(text);\n        } catch (error) {\n          throw new Error('parse:' + response.status);\n        }\n      });\n    }\n\n    function fetchShippingRates(zip, attempt) {\n      attempt = attempt || 0;\n\n      return fetch(shippingRatesUrl(zip), { headers: { Accept: 'application/json' } })\n        .then(function (response) {\n          return parseJsonResponse(response).then(function (data) {\n            if (!response.ok) {\n              var errorText = data && (data.error || data.message || data.description || data.zip);\n              if (Array.isArray(errorText)) errorText = errorText.join(' ');\n              throw new Error('rates:' + (errorText || response.status));\n            }\n\n            if ((!data || !data.shipping_rates) && attempt < 20) {\n              return new Promise(function (resolve) {\n                window.setTimeout(resolve, 500);\n              }).then(function () {\n                return fetchShippingRates(zip, attempt + 1);\n              });\n            }\n\n            if (!data || !data.shipping_rates) throw new Error('rates:timeout');\n            return data;\n          });\n        });\n    }\n\n    function fetchSyncShippingRates(zip) {\n      return fetch(syncShippingRatesUrl(zip), { headers: { Accept: 'application/json' } })\n        .then(function (response) {\n          return parseJsonResponse(response).then(function (data) {\n            if (!response.ok) {\n              var errorText = data && (data.error || data.message || data.description || data.zip);\n              if (Array.isArray(errorText)) errorText = errorText.join(' ');\n              throw new Error('sync-rates:' + (errorText || response.status));\n            }\n\n            if (!data || !data.shipping_rates) throw new Error('sync-rates:empty');\n            return data;\n          });\n        });\n    }\n\n    function removeTemporaryItem(key) {\n      if (!key) return Promise.resolve();\n\n      return fetch(routeRoot() + 'cart/change.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify({ id: key, quantity: 0 })\n      }).then(function () {});\n    }\n\n    function quoteCurrentProduct(root, zip) {\n      var item = selectedProductPayload(root);\n      if (!item) throw new Error('variant');\n\n      var temporaryKey = null;\n\n      return fetch(routeRoot() + 'cart/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify({ items: [item] })\n      })\n        .then(function (response) {\n          return response.json().then(function (data) {\n            if (!response.ok) throw new Error('add:' + (data.description || data.message || response.status));\n            temporaryKey = data.items && data.items[0] && data.items[0].key;\n            return prepareShippingRates(zip)\n              .then(function () {\n                return fetchShippingRates(zip);\n              })\n              .catch(function (error) {\n                if (error && error.message === 'prepare:422') return fetchSyncShippingRates(zip);\n                throw error;\n              });\n          });\n        })\n        .then(\n          function (data) {\n            return removeTemporaryItem(temporaryKey).then(function () {\n              return data;\n            });\n          },\n          function (error) {\n            return removeTemporaryItem(temporaryKey).then(function () {\n              throw error;\n            });\n          }\n        );\n    }\n\n    document.querySelectorAll('[data-shipping-calc]').forEach(function (root) {\n      if (root.dataset.shippingBound === 'true') return;\n      root.dataset.shippingBound = 'true';\n\n      var input = root.querySelector('[data-shipping-zip]');\n      var button = root.querySelector('[data-shipping-submit]');\n      var result = root.querySelector('[data-shipping-result]');\n      if (!input || !button || !result) return;\n\n      function message(text, isError) {\n        result.hidden = false;\n        result.innerHTML =\n          '<p class=\"shipping-calc__message' + (isError ? ' shipping-calc__message--error' : '') + '\"></p>';\n        result.querySelector('p').textContent = text;\n      }\n\n      // M\u00E1scara de CEP: 00000-000\n      input.addEventListener('input', function () {\n        var digits = input.value.replace(/\\D/g, '').slice(0, 8);\n        input.value = digits.length > 5 ? digits.slice(0, 5) + '-' + digits.slice(5) : digits;\n      });\n\n      input.addEventListener('keydown', function (event) {\n        if (event.key === 'Enter') {\n          event.preventDefault();\n          button.click();\n        }\n      });\n\n      button.addEventListener('click', function () {\n        var zip = input.value.replace(/\\D/g, '');\n        if (zip.length !== 8) {\n          message(root.dataset.msgInvalid || 'Informe um CEP v\u00E1lido, com 8 d\u00EDgitos.', true);\n          return;\n        }\n\n        message(root.dataset.msgLoading || 'Calculando...', false);\n        button.disabled = true;\n\n        quoteCurrentProduct(root, zip)\n          .then(function (data) {\n            var rates = data.shipping_rates || [];\n\n            if (rates.length === 0) {\n              message(root.dataset.msgEmpty || 'Nenhuma op\u00E7\u00E3o de entrega para este CEP.', false);\n              button.disabled = false;\n              return;\n            }\n\n            result.hidden = false;\n            result.innerHTML = '';\n\n            rates.forEach(function (rate) {\n              var row = document.createElement('div');\n              row.className = 'shipping-calc__rate';\n\n              var left = document.createElement('span');\n              left.textContent = rate.name;\n\n              if (rate.delivery_range && rate.delivery_range.length) {\n                var eta = document.createElement('span');\n                eta.className = 'shipping-calc__rate-eta';\n                eta.textContent = rate.delivery_range.join(' \u2014 ');\n                left.appendChild(eta);\n              }\n\n              var price = document.createElement('strong');\n              var value = parseFloat(rate.price);\n              price.textContent =\n                value === 0 ? root.dataset.msgFree || 'Gr\u00E1tis' : 'R$ ' + value.toFixed(2).replace('.', ',');\n\n              row.appendChild(left);\n              row.appendChild(price);\n              result.appendChild(row);\n            });\n            button.disabled = false;\n          })\n          .catch(function (error) {\n            button.disabled = false;\n            var detail = error && error.message ? ' [' + error.message + ']' : '';\n            message((root.dataset.msgError || 'N\u00E3o foi poss\u00EDvel calcular agora. Tente novamente.') + detail, true);\n          });\n      });\n    });\n  }\n\n  function init() {\n    initToggles();\n    initCartDrawer();\n    initAddToCart();\n    initQuantityStepper();\n    initShippingCalculator();\n    initMobileMenu();\n    initSlideshows();\n    initProductGallery();\n    initVariantPicker();\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n\n  // Re-inicializa ao editar se\u00E7\u00F5es no editor de temas do Shopify.\n  document.addEventListener('shopify:section:load', init);\n})();\n"],
  "mappings": "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",
  "names": []
}
