{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/cart-brinde.js"],
  "sourcesContent": ["import { isOrderBrindeLine, planOrderBrindes, readOrderCampaigns } from './cart-brinde-pedido.js';\n\nconst CONTRACT_KEYS = new Set(['_fn_brinde', 'Brinde', '_group', '_fn_brinde_preco', '_fn_brinde_slot']);\nconst CAMPAIGN_ID = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\nconst PRICE = /^\\d+(?:\\.\\d{1,2})?$/;\nconst SLOT = /^(.+):(\\d+)$/;\nconst MAX_PASSES = 5;\nconst CHECKOUT_WAIT_MS = 3000;\nconst CHECKOUT_FORMS = ['form.cart-drawer__checkout-form', 'form.prazo-modal__checkout-form'];\n\nconst isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);\nconst filled = (value) => typeof value === 'string' && value.trim() !== '';\nconst textOrNull = (value) => (filled(value) ? value : null);\nconst positiveInteger = (value) => Number.isInteger(value) && value > 0;\nconst variantIdOf = (value) => {\n  const id = typeof value === 'string' && /^\\d+$/.test(value) ? Number(value) : value;\n  return Number.isSafeInteger(id) && id > 0 ? id : null;\n};\n\nfunction readProducts(raw) {\n  if (!isRecord(raw)) return null;\n  const products = [];\n  for (const [handle, value] of Object.entries(raw)) {\n    const variant = isRecord(value) ? variantIdOf(value.variant) : null;\n    if (!filled(handle) || variant === null || typeof value.price !== 'string' || !PRICE.test(value.price)) return null;\n    products.push({ handle, variant, price: value.price });\n  }\n  return products.length ? products : null;\n}\n\nexport function readCampaigns(raw) {\n  if (!Array.isArray(raw)) return [];\n  const seen = new Set();\n  const campaigns = [];\n  for (const entry of raw) {\n    if (!isRecord(entry) || typeof entry.id !== 'string' || !CAMPAIGN_ID.test(entry.id) || seen.has(entry.id)) continue;\n    const products = readProducts(entry.products);\n    if (!filled(entry.label) || !positiveInteger(entry.every) || !positiveInteger(entry.max) || !products) continue;\n    seen.add(entry.id);\n    campaigns.push({ id: entry.id, label: entry.label, every: entry.every, max: entry.max, products });\n  }\n  return campaigns;\n}\n\nconst cartLine = ({ key, handle, variant, quantity, price, linePrice, addon, addonKind, group, brinde, slot, brindePrice, personalized, image }) => ({\n  key: String(key),\n  handle: typeof handle === 'string' ? handle : '',\n  variant: variantIdOf(variant),\n  quantity: Number.isInteger(quantity) ? quantity : 0,\n  price: Number.isFinite(price) ? price : 0,\n  linePrice: Number.isFinite(linePrice) ? linePrice : 0,\n  addon: !!addon,\n  addonKind: textOrNull(addonKind),\n  group: textOrNull(group),\n  brinde: textOrNull(brinde),\n  slot: textOrNull(slot),\n  brindePrice: textOrNull(brindePrice),\n  personalized: !!personalized,\n  image: textOrNull(image),\n});\n\nexport function readState(text) {\n  let parsed;\n  try {\n    parsed = JSON.parse(text);\n  } catch {\n    return null;\n  }\n  if (!isRecord(parsed)) return null;\n  const lines = Array.isArray(parsed.lines) ? parsed.lines.filter((entry) => isRecord(entry) && entry.key) : [];\n  return {\n    campaigns: readCampaigns(parsed.campaigns),\n    orderCampaigns: readOrderCampaigns(parsed.orderCampaigns),\n    lines: lines.map(cartLine),\n  };\n}\n\nexport function linesFromCart(cart) {\n  const items = isRecord(cart) && Array.isArray(cart.items) ? cart.items.filter(isRecord) : [];\n  return items.map((item) => {\n    const properties = isRecord(item.properties) ? item.properties : {};\n    return cartLine({\n      key: item.key,\n      handle: item.handle,\n      variant: item.variant_id,\n      quantity: item.quantity,\n      price: item.final_price,\n      linePrice: item.original_line_price,\n      addon: filled(properties._addon),\n      addonKind: properties._addon,\n      group: properties._group,\n      brinde: properties._fn_brinde,\n      slot: properties._fn_brinde_slot,\n      brindePrice: properties._fn_brinde_preco,\n      personalized: filled(properties._fn_brinde)\n        && Object.entries(properties).some(([name, value]) => !CONTRACT_KEYS.has(name) && filled(value)),\n    });\n  });\n}\n\nexport function brindesEarned(campaign, product, lines) {\n  const units = lines\n    .filter((entry) => entry.handle === product.handle && !entry.brinde && !entry.addon)\n    .reduce((sum, entry) => sum + Math.max(0, entry.quantity), 0);\n  return Math.min(Math.floor(units / campaign.every), campaign.max);\n}\n\nexport function brindeProperties(campaign, product, position) {\n  return {\n    _fn_brinde: campaign.id,\n    Brinde: campaign.label,\n    _group: `brinde-${campaign.id}-${product.handle}-${position}`,\n    _fn_brinde_preco: product.price,\n    _fn_brinde_slot: `${product.handle}:${position}`,\n  };\n}\n\nconst byLeavingOrder = (a, b) => (Number(b.plain) - Number(a.plain)) || (b.position - a.position);\n\nexport function planBrindes({ campaigns, lines, refused = new Set() }) {\n  const remove = new Set();\n  const fix = {};\n  const add = [];\n  const refuse = [];\n  let notice = false;\n  const addonsOf = (brinde) => (brinde.group ? lines.filter((entry) => entry.addon && entry.group === brinde.group) : []);\n  const takeOut = (brinde) => {\n    remove.add(brinde.key);\n    addonsOf(brinde).forEach((addon) => remove.add(addon.key));\n  };\n\n  const kept = new Map();\n  for (const brinde of lines.filter((entry) => entry.brinde)) {\n    const campaign = campaigns.find((entry) => entry.id === brinde.brinde);\n    const slot = SLOT.exec(brinde.slot || '');\n    const position = slot ? Number(slot[2]) : -1;\n    const product = campaign && slot ? campaign.products.find((entry) => entry.handle === slot[1]) : null;\n    const fits = product\n      && brinde.variant === product.variant\n      && brinde.brindePrice === product.price\n      && brinde.group === `brinde-${campaign.id}-${product.handle}-${position}`;\n    if (!fits) {\n      takeOut(brinde);\n      continue;\n    }\n    const key = `${campaign.id}|${product.handle}`;\n    if (!kept.has(key)) kept.set(key, []);\n    kept.get(key).push({ brinde, position, plain: !brinde.personalized && addonsOf(brinde).length === 0 });\n  }\n\n  for (const campaign of campaigns) {\n    for (const product of campaign.products) {\n      const key = `${campaign.id}|${product.handle}`;\n      const present = kept.get(key) || [];\n      const earned = brindesEarned(campaign, product, lines);\n\n      if (present.length > earned) {\n        present.slice().sort(byLeavingOrder).slice(0, present.length - earned).forEach(({ brinde, plain }) => {\n          takeOut(brinde);\n          if (!plain) notice = true;\n        });\n        continue;\n      }\n\n      const stacked = present.filter(({ brinde }) => brinde.quantity !== 1);\n      if (stacked.length) {\n        stacked.forEach(({ brinde }) => { fix[brinde.key] = 1; });\n        continue;\n      }\n\n      const charged = present.filter(({ brinde }) => brinde.price > 0);\n      if (charged.length) {\n        charged.forEach(({ brinde }) => takeOut(brinde));\n        refuse.push(key);\n        continue;\n      }\n\n      if (present.length === earned || refused.has(key)) continue;\n      const taken = new Set(present.map(({ position }) => position));\n      const items = [];\n      for (let position = 0; items.length < earned - present.length; position += 1) {\n        if (!taken.has(position)) items.push({ id: product.variant, quantity: 1, properties: brindeProperties(campaign, product, position) });\n      }\n      add.push({ key, items });\n    }\n  }\n\n  return { remove: [...remove], fix, add, refuse, notice };\n}\n\nexport const isSettled = (plan) => !plan.remove.length && !Object.keys(plan.fix).length && !plan.add.length;\n\nconst planEvery = ({ campaigns, orderCampaigns = [] }, lines, refused) => ({\n  quantity: planBrindes({ campaigns, lines: lines.filter((line) => !isOrderBrindeLine(line, orderCampaigns)), refused }),\n  order: planOrderBrindes({ campaigns: orderCampaigns, lines, refused }),\n});\n\nexport function createCartBrinde({ root, cart, fetch, delay, notify, pathname }) {\n  const drawer = root.getElementById('cart-drawer');\n  if (!drawer || !cart || typeof cart.enqueueWrite !== 'function') return null;\n\n  const addUrl = drawer.dataset.cartAddUrl;\n  const updateUrl = drawer.dataset.cartUpdateUrl;\n  const cartUrl = drawer.dataset.cartUrl || '/cart';\n  const refused = new Set();\n  let scheduled = false;\n  let dirty = false;\n  let idle = Promise.resolve();\n  let leaving = false;\n  let pendingNotice = null;\n\n  const readDrawerState = () => {\n    const node = drawer.querySelector('[data-cart-brinde-state]');\n    return node ? readState(node.textContent) : null;\n  };\n\n  async function post(url, payload) {\n    const response = await fetch(url, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n      body: JSON.stringify({ ...payload, sections: 'cart-drawer', sections_url: pathname }),\n    });\n    return response.ok ? response.json() : null;\n  }\n\n  const paint = (data) => {\n    if (!cart.replaceContent(data && data.sections && data.sections['cart-drawer'])) cart.reload();\n  };\n\n  const removedGiftImage = (lines, keys) => {\n    const gift = lines.find((entry) => keys.includes(entry.key) && entry.brinde && !entry.addon && entry.image);\n    return gift ? gift.image : null;\n  };\n\n  function announce(subtitle, image) {\n    const title = drawer.dataset.noticeBrindeTitle;\n    if (!title) return;\n    const payload = { title, subtitle: subtitle || '' };\n    if (image) payload.image = image;\n    if (drawer.open) notify(payload);\n    else pendingNotice = payload;\n  }\n\n  function orderNotice({ reason, label, minimumText, engraving }) {\n    const template = reason === 'minimum' ? drawer.dataset.noticeBrindePedidoMinimum : drawer.dataset.noticeBrindePedidoEnded;\n    if (!template) return null;\n    const sentences = [template.replace('{minimo}', minimumText || '').replace('{rotulo}', label || '')];\n    if (engraving && drawer.dataset.noticeBrindePedidoEngraving) sentences.push(drawer.dataset.noticeBrindePedidoEngraving);\n    return sentences.join(' ');\n  }\n\n  async function pass() {\n    const state = readDrawerState();\n    if (!state) return false;\n    const { quantity, order } = planEvery(state, state.lines, refused);\n    [...quantity.refuse, ...order.refuse].forEach((key) => refused.add(key));\n\n    const updates = { ...quantity.fix, ...order.fix };\n    [...quantity.remove, ...order.remove].forEach((key) => { updates[key] = 0; });\n    if (Object.keys(updates).length) {\n      const data = await post(updateUrl, { updates });\n      if (!data) return false;\n      paint(data);\n      const subtitle = order.notice ? orderNotice(order.notice) : null;\n      if (subtitle) announce(subtitle, removedGiftImage(state.lines, order.remove));\n      else if (quantity.notice) announce(drawer.dataset.noticeBrindeSubtitle, removedGiftImage(state.lines, quantity.remove));\n      return true;\n    }\n\n    for (const addition of [...quantity.add, ...order.add]) {\n      const data = await post(addUrl, { items: addition.items });\n      if (!data) {\n        refused.add(addition.key);\n        continue;\n      }\n      paint(data);\n      return true;\n    }\n    return false;\n  }\n\n  function schedule() {\n    if (scheduled) {\n      dirty = true;\n      return idle;\n    }\n    scheduled = true;\n    idle = cart.enqueueWrite(async () => {\n      try {\n        for (let passes = 0; passes < MAX_PASSES; passes += 1) {\n          dirty = false;\n          const changed = await pass();\n          if (!changed && !dirty) break;\n        }\n      } catch {\n        dirty = false;\n      } finally {\n        scheduled = false;\n      }\n    });\n    return idle;\n  }\n\n  async function beforeCheckout() {\n    await idle;\n    const state = readDrawerState();\n    if (!state) return;\n    const response = await fetch(`${cartUrl}.js`, { headers: { Accept: 'application/json' } });\n    if (!response.ok) return;\n    const fresh = planEvery(state, linesFromCart(await response.json()), refused);\n    if (isSettled(fresh.quantity) && isSettled(fresh.order)) return;\n    const rendered = await fetch(`${cartUrl}?sections=cart-drawer`, { headers: { Accept: 'application/json' } });\n    if (!rendered.ok) return;\n    const sections = await rendered.json();\n    if (!cart.replaceContent(sections && sections['cart-drawer'])) return;\n    await schedule();\n  }\n\n  function resume(form) {\n    const button = form.querySelector('[name=\"checkout\"]');\n    if (!button) return;\n    form.dataset.brindeChecked = 'true';\n    try {\n      form.requestSubmit(button);\n    } finally {\n      delete form.dataset.brindeChecked;\n    }\n  }\n\n  function onSubmit(event) {\n    const target = event.target;\n    const form = target && typeof target.closest === 'function' ? target.closest(CHECKOUT_FORMS.join(', ')) : null;\n    if (!form || form.dataset.brindeChecked || typeof form.requestSubmit !== 'function') return;\n    const button = event.submitter || form.querySelector('[name=\"checkout\"]');\n    if (!button || button.getAttribute('name') !== 'checkout') return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    if (leaving) return;\n    leaving = true;\n    button.setAttribute('aria-busy', 'true');\n    Promise.race([beforeCheckout().catch(() => {}), delay(CHECKOUT_WAIT_MS)]).then(() => {\n      leaving = false;\n      button.removeAttribute('aria-busy');\n      const selector = CHECKOUT_FORMS.find((candidate) => form.matches(candidate));\n      const live = root.contains(form) ? form : root.querySelector(selector);\n      if (live) resume(live);\n    });\n  }\n\n  const changeUrl = drawer.dataset.cartChangeUrl;\n  let engraveAfterColor = null;\n\n  const giftCardOf = (group) => Array.from(drawer.querySelectorAll('[data-gift-colors-for]')).find((node) => node.dataset.giftColorsFor === group) || null;\n\n  function setColorsOpen(card, open) {\n    const panel = card.querySelector('[data-gift-colors]');\n    const toggle = card.querySelector('[data-action=\"gift-color-toggle\"]');\n    card.classList.toggle('is-colors-open', open);\n    if (toggle) toggle.setAttribute('aria-expanded', open ? 'true' : 'false');\n    if (panel) panel.inert = !open;\n  }\n\n  function toggleColors(button) {\n    const card = button.closest('[data-gift-colors-for]');\n    if (!card) return;\n    const open = !card.classList.contains('is-colors-open');\n    if (!open) engraveAfterColor = null;\n    setColorsOpen(card, open);\n  }\n\n  function colorFirst(trigger) {\n    const group = trigger.dataset.group;\n    const card = giftCardOf(group);\n    if (!card) return;\n    engraveAfterColor = group;\n    setColorsOpen(card, true);\n    if (typeof card.scrollIntoView === 'function') card.scrollIntoView({ block: 'nearest' });\n    const first = card.querySelector('[data-action=\"gift-color-pick\"]');\n    if (first && typeof first.focus === 'function') first.focus({ preventScroll: true });\n    if (drawer.dataset.noticeGiftColorFirst) notify({ title: drawer.dataset.noticeGiftColorFirst, subtitle: drawer.dataset.noticeGiftColorFirstHint || '' });\n  }\n\n  async function readCartItems() {\n    const response = await fetch(`${cartUrl}.js`, { headers: { Accept: 'application/json' } });\n    if (!response.ok) return null;\n    const data = await response.json();\n    return isRecord(data) && Array.isArray(data.items) ? data.items : null;\n  }\n\n  const giftFrameOf = (items, group) => (items || []).find((item) => isRecord(item.properties)\n    && item.properties._group === group && filled(item.properties._fn_brinde) && !filled(item.properties._addon)) || null;\n\n  const sameProperties = (left, right) => Array.from(new Set([...Object.keys(left), ...Object.keys(right)]))\n    .every((name) => (left[name] || '') === (right[name] || ''));\n\n  function readShown(card) {\n    const selected = card.querySelector('[data-action=\"gift-color-pick\"].is-selected');\n    const chip = card.querySelector('[data-gift-color-chip]');\n    const image = card.querySelector('[data-gift-image]');\n    const frameWindow = card.querySelector('[data-gift-window]');\n    return {\n      color: selected ? selected.dataset.color || '' : '',\n      chipStyle: chip ? chip.getAttribute('style') : null,\n      image: image ? image.getAttribute('src') : null,\n      windowShown: !!frameWindow && !frameWindow.hidden,\n    };\n  }\n\n  function show(card, { color, chipStyle, image, windowShown }) {\n    card.querySelectorAll('[data-action=\"gift-color-pick\"]').forEach((node) => {\n      const on = !!color && node.dataset.color === color;\n      node.classList.toggle('is-selected', on);\n      node.setAttribute('aria-pressed', on ? 'true' : 'false');\n    });\n    const toggle = card.querySelector('[data-action=\"gift-color-toggle\"]');\n    const chip = card.querySelector('[data-gift-color-chip]');\n    const label = card.querySelector('[data-gift-color-label]');\n    const empty = card.querySelector('[data-gift-color-empty]');\n    const current = card.querySelector('[data-gift-color-current]');\n    if (chip) {\n      chip.hidden = !color;\n      if (chipStyle) chip.setAttribute('style', chipStyle);\n      else chip.removeAttribute('style');\n    }\n    if (label) {\n      label.textContent = color;\n      label.hidden = !color;\n    }\n    if (empty) empty.hidden = !!color;\n    if (current) {\n      current.textContent = color ? `\u00B7 ${color}` : '';\n      current.hidden = !color;\n    }\n    if (toggle) {\n      const template = toggle.dataset.labelTemplate || '';\n      if (color && template) toggle.setAttribute('aria-label', template.replace('%color%', color));\n      else toggle.removeAttribute('aria-label');\n    }\n    const thumbnail = card.querySelector('[data-gift-image]');\n    if (thumbnail && image) {\n      thumbnail.setAttribute('src', image);\n      thumbnail.removeAttribute('srcset');\n    }\n    const frameWindow = card.querySelector('[data-gift-window]');\n    if (frameWindow) frameWindow.hidden = !windowShown;\n  }\n\n  function pickColor(swatch) {\n    const card = swatch.closest('[data-gift-colors-for]');\n    const color = swatch.dataset.color;\n    if (!card || !color || !changeUrl || card.getAttribute('aria-busy') === 'true') return Promise.resolve();\n    const group = card.dataset.giftColorsFor;\n    const continueToEngraving = engraveAfterColor === group;\n    engraveAfterColor = null;\n    const frameWindow = card.querySelector('[data-gift-window]');\n    const horizontal = !!frameWindow && frameWindow.classList.contains('cart-gift-frame-window--h');\n    const picked = (horizontal && swatch.dataset.coverH) || swatch.dataset.cover || '';\n    const before = readShown(card);\n    const thumbnail = card.querySelector('[data-gift-image]');\n    const baseImage = thumbnail ? thumbnail.dataset.baseImage || '' : '';\n    show(card, {\n      color,\n      chipStyle: swatch.dataset.hex ? `--swatch: ${swatch.dataset.hex}` : null,\n      image: picked || baseImage || before.image,\n      windowShown: !!picked,\n    });\n    card.setAttribute('aria-busy', 'true');\n    cart.hideError();\n    return cart.enqueueWrite(async () => {\n      try {\n        const frame = giftFrameOf(await readCartItems(), group);\n        if (!frame) throw new Error('cart-brinde: the gift left the bag');\n        const current = frame.properties;\n        const turned = current['Orienta\u00E7\u00E3o'] === 'Deitado' || /-h\\.(jpe?g|png|webp)/i.test(current._cover_image || '');\n        const cover = (turned && swatch.dataset.coverH) || swatch.dataset.cover || '';\n        const properties = { ...current, 'Cor da moldura': color };\n        if (cover) properties._cover_image = cover;\n        else delete properties._cover_image;\n        if (!sameProperties(properties, current)) {\n          const data = await post(changeUrl, { id: frame.key, quantity: 1, properties });\n          if (!data) throw new Error('cart-brinde: colour write failed');\n          const after = giftFrameOf(await readCartItems(), group);\n          if (!after || after.quantity !== 1 || !sameProperties(after.properties, properties)) throw new Error('cart-brinde: colour not applied');\n          card.removeAttribute('aria-busy');\n          paint(data);\n          if (drawer.dataset.noticeGiftColor) notify({ title: drawer.dataset.noticeGiftColor, subtitle: color });\n        } else {\n          card.removeAttribute('aria-busy');\n          setColorsOpen(card, false);\n        }\n        if (continueToEngraving) {\n          const engrave = Array.from(drawer.querySelectorAll('[data-action=\"upsell-engrave\"]')).find((node) => node.dataset.group === group);\n          if (engrave) engrave.click();\n        }\n      } catch {\n        show(card, before);\n        card.removeAttribute('aria-busy');\n        cart.showError();\n      }\n    });\n  }\n\n  drawer.addEventListener('click', (event) => {\n    const trigger = event.target.closest('[data-action]');\n    if (!trigger || !drawer.contains(trigger)) return;\n    switch (trigger.dataset.action) {\n      case 'gift-color-toggle':\n        event.preventDefault();\n        toggleColors(trigger);\n        break;\n      case 'gift-color-first':\n        event.preventDefault();\n        colorFirst(trigger);\n        break;\n      case 'gift-color-pick':\n        event.preventDefault();\n        pickColor(trigger);\n        break;\n      default:\n        break;\n    }\n  });\n\n  drawer.addEventListener('cart:rendered', () => { schedule(); });\n  drawer.addEventListener('cart:opened', () => {\n    if (!pendingNotice) return;\n    notify(pendingNotice);\n    pendingNotice = null;\n  });\n  root.addEventListener('submit', onSubmit, true);\n  schedule();\n\n  return { schedule, beforeCheckout, refused };\n}\n\nif (typeof document !== 'undefined') {\n  const start = () => createCartBrinde({\n    root: document,\n    cart: window.fnCart,\n    fetch: (url, init) => window.fetch(url, init),\n    delay: (ms) => new Promise((resolve) => { setTimeout(resolve, ms); }),\n    notify: (payload) => {\n      if (window.fnCartNotice) window.fnCartNotice.show(payload);\n    },\n    pathname: window.location.pathname,\n  });\n  if (window.fnCart) start();\n  else document.addEventListener('fn:cart-ready', start, { once: true });\n}\n"],
  "mappings": "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",
  "names": []
}
