{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/craftdiy-save-first-v1.js?craftdiy_release=v44-final.5"],
  "sourcesContent": ["(() => {\n  'use strict';\n\n  const VERSION = '1.3.1-cart-cta';\n  const sessionsByRoot = new WeakMap();\n  const sessionsByForm = new WeakMap();\n  const STAGED_SELECTOR = '[data-craftdiy-staged-file]';\n\n  function injectStyles() {\n    if (document.querySelector('[data-craftdiy-save-first-styles]')) return;\n    const style = document.createElement('style');\n    style.dataset.craftdiySaveFirstStyles = VERSION;\n    style.textContent = `\n      .craftdiy-save-first-guide{\n        margin:8px 0 0;\n        padding:7px 10px;\n        border-left:3px solid #b78335;\n        border-radius:0 7px 7px 0;\n        background:rgba(183,131,53,.10);\n        color:#4c321f;\n        font:700 11.5px/1.4 Arial,sans-serif;\n        letter-spacing:.01em;\n      }\n      .craftdiy-save-first-guide[data-state=\"ready\"]{\n        border-left-color:#456355;\n        background:rgba(69,99,85,.10);\n        color:#345044;\n      }\n      .craftdiy-save-first-guide[data-state=\"working\"]{opacity:.72}\n      .craftdiy-save-first-guide--purchase{\n        grid-column:2!important;\n        grid-row:1!important;\n        min-width:0;\n        min-height:52px;\n        margin:0;\n        padding:5px 8px;\n        display:grid;\n        grid-template-columns:34px minmax(0,1fr);\n        gap:8px;\n        align-items:center;\n        border:1px solid rgba(43,33,24,.13);\n        border-radius:4px;\n        background:#fff;\n        color:#2b2118;\n      }\n      .craftdiy-save-first-guide--purchase[hidden]{display:none!important}\n      .craftdiy-save-first-guide__brand{\n        width:34px;\n        height:34px;\n        display:grid;\n        place-items:center;\n        border-radius:4px;\n        background:#5a31f4;\n        color:#fff;\n        font:700 10px/1 Arial,sans-serif;\n        letter-spacing:-.04em;\n      }\n      .craftdiy-save-first-guide__copy{min-width:0;display:grid;gap:2px}\n      .craftdiy-save-first-guide__copy strong{\n        font:800 10px/1.1 Arial,sans-serif;\n        letter-spacing:.02em;\n      }\n      .craftdiy-save-first-guide__copy small{\n        font:400 8.5px/1.2 Arial,sans-serif;\n      }\n      form.craftdiy-save-first[data-craftdiy-design-saved=\"false\"] [data-add]{\n        opacity:.48;\n        cursor:not-allowed!important;\n      }\n      @media(max-width:520px){\n        .craftdiy-save-first-guide--purchase{\n          min-height:44px;\n          padding:4px 6px;\n          grid-template-columns:30px minmax(0,1fr);\n          gap:6px;\n        }\n        .craftdiy-save-first-guide__brand{width:30px;height:30px;font-size:9px}\n        .craftdiy-save-first-guide__copy strong{font-size:9px}\n        .craftdiy-save-first-guide__copy small{font-size:7.5px}\n      }\n    `;\n    document.head.appendChild(style);\n  }\n\n  function applyButton(session) {\n    return session.customizer.querySelector('[data-action=\"apply\"],[data-apply],.cpm__apply');\n  }\n\n  function addButton(session) {\n    return [...session.form.querySelectorAll('[data-add],button[name=\"add\"],input[name=\"add\"]')]\n      .find((button) => !button.closest('.shopify-payment-button')) || null;\n  }\n\n  function setButtonLabel(button, text) {\n    if (!button) return;\n    const label = button.querySelector?.('[data-apply-label],[data-add-label]');\n    if (label) label.textContent = text;\n    else if (button instanceof HTMLInputElement) button.value = text;\n    else button.textContent = text;\n  }\n\n  function ensureGuide(session) {\n    const guides = [...session.form.querySelectorAll('[data-craftdiy-save-first-guide]')];\n    let guide = guides.shift();\n    guides.forEach((duplicate) => duplicate.remove());\n    if (guide) return guide;\n    guide = document.createElement('p');\n    guide.className = 'craftdiy-save-first-guide';\n    guide.dataset.craftdiySaveFirstGuide = VERSION;\n    guide.setAttribute('role', 'status');\n    guide.setAttribute('aria-live', 'polite');\n    const purchase = session.form.querySelector('.cv9__purchase');\n    if (purchase) {\n      const brand = document.createElement('span');\n      const copy = document.createElement('span');\n      const heading = document.createElement('strong');\n      const detail = document.createElement('small');\n      guide.classList.add('craftdiy-save-first-guide--purchase');\n      brand.className = 'craftdiy-save-first-guide__brand';\n      brand.setAttribute('aria-hidden', 'true');\n      brand.textContent = 'shop';\n      copy.className = 'craftdiy-save-first-guide__copy';\n      copy.append(heading, detail);\n      guide.append(brand, copy);\n      const payment = purchase.querySelector('.cv9__payment');\n      if (payment) purchase.insertBefore(guide, payment);\n      else purchase.appendChild(guide);\n    } else {\n      const actions = applyButton(session)?.closest('.craftdiy-customizer__actions');\n      if (actions?.parentElement) actions.insertAdjacentElement('afterend', guide);\n      else session.root.appendChild(guide);\n    }\n    return guide;\n  }\n\n  function syncVariantInput(session) {\n    const input = session.form.querySelector('input[name=\"id\"]');\n    const variantId = String(session.variant?.id || session.root.dataset.variantId || '');\n    if (!input || !variantId) return;\n    if (input.value && input.value !== variantId) return;\n    const changed = input.value !== variantId;\n    input.value = variantId;\n    input.setAttribute('value', variantId);\n    if (changed) input.dispatchEvent(new Event('change', { bubbles: true }));\n  }\n\n  function updateGuide(guide, state, message) {\n    guide.dataset.state = state;\n    const heading = guide.querySelector('.craftdiy-save-first-guide__copy strong');\n    const detail = guide.querySelector('.craftdiy-save-first-guide__copy small');\n    if (!heading || !detail) {\n      guide.textContent = message;\n      return;\n    }\n    heading.textContent = state === 'working' ? 'SAVING DESIGN\u2026' : 'NEXT STEP';\n    detail.textContent = message.replace(/^NEXT STEP\\s*\u2014\\s*/, '');\n  }\n\n  function clearStagedFiles(session) {\n    session.form.querySelectorAll(STAGED_SELECTOR).forEach((node) => node.remove());\n    session.stagedFiles = [];\n  }\n\n  function setReady(session, ready, message) {\n    syncVariantInput(session);\n    session.ready = ready;\n    session.form.classList.add('craft-production-required', 'craftdiy-save-first');\n    session.form.classList.toggle('craft-production-working', session.saving);\n    session.form.dataset.craftProductionMode = 'native-files-save-first';\n    session.form.dataset.craftProductionReady = ready ? 'true' : 'false';\n    session.form.dataset.craftdiyDesignSaved = ready ? 'true' : 'false';\n\n    const apply = applyButton(session);\n    const add = addButton(session);\n    const available = session.variant?.available !== false;\n    if (apply) {\n      apply.disabled = Boolean(session.saving || session.cartSubmitting || (ready && !available));\n      setButtonLabel(apply, session.saving\n        ? 'SAVING DESIGN\u2026'\n        : session.cartSubmitting ? 'ADDING TO CART\u2026'\n          : ready ? available ? 'ADD TO CART' : 'SOLD OUT'\n            : 'SAVE DESIGN & CONTINUE');\n    }\n    if (add) {\n      add.disabled = Boolean(session.saving || !ready || !available);\n      add.setAttribute('aria-disabled', add.disabled ? 'true' : 'false');\n      setButtonLabel(add, available ? 'ADD TO CART' : 'SOLD OUT');\n    }\n\n    const guide = ensureGuide(session);\n    const guideMessage = message || (ready\n      ? '\u2713 DESIGN SAVED \u2014 Add to cart or checkout with Shop Pay.'\n      : 'NEXT STEP \u2014 Save your design to unlock Add to cart or checkout with Shop Pay.');\n    guide.hidden = Boolean(ready && guide.classList.contains('craftdiy-save-first-guide--purchase'));\n    updateGuide(guide, ready ? 'ready' : session.saving ? 'working' : 'locked', guideMessage);\n  }\n\n  function lockSession(session, message) {\n    if (!session || session.saving || session.cartSubmitting) return;\n    session.cartSubmitting = false;\n    clearStagedFiles(session);\n    setReady(session, false, message);\n  }\n\n  function submitSavedDesign(session) {\n    if (!session?.ready || session.saving || session.cartSubmitting) return;\n    const add = addButton(session);\n    const available = session.variant?.available !== false;\n    if (!add || !available || add.disabled) {\n      session.customizer.setStatus?.(\n        available ? 'Add to cart is temporarily unavailable. Please refresh and try again.' : 'This option is sold out.',\n        'error',\n      );\n      return;\n    }\n    session.cartSubmitting = true;\n    setReady(session, true, 'Adding your saved design to cart\u2026');\n    if (typeof session.form.requestSubmit === 'function') session.form.requestSubmit(add);\n    else add.click();\n  }\n\n  function canvasBlob(canvas) {\n    return new Promise((resolve, reject) => {\n      if (!canvas) return reject(new Error('The personalized preview canvas is unavailable.'));\n      canvas.toBlob((blob) => {\n        if (blob) resolve(blob);\n        else reject(new Error('The personalized preview image could not be created.'));\n      }, 'image/png', 1);\n    });\n  }\n\n  function stageFile(form, propertyName, file) {\n    if (!(file instanceof File)) throw new Error(`${propertyName} is unavailable. Please choose the file again.`);\n    if (typeof DataTransfer !== 'function') {\n      throw new Error('This browser cannot prepare production files for checkout. Please update the browser and try again.');\n    }\n    const transfer = new DataTransfer();\n    transfer.items.add(file);\n    const input = document.createElement('input');\n    input.type = 'file';\n    input.name = `properties[${propertyName}]`;\n    input.files = transfer.files;\n    input.tabIndex = -1;\n    input.setAttribute('aria-hidden', 'true');\n    input.style.display = 'none';\n    input.dataset.craftdiyStagedFile = VERSION;\n    form.appendChild(input);\n    return input;\n  }\n\n  async function saveDesign(session, payload) {\n    if (session.saving) return;\n    session.saving = true;\n    clearStagedFiles(session);\n    setReady(session, false, 'Saving your design and preparing production files\u2026');\n    try {\n      const validated = payload || session.customizer.validateForApply();\n      session.customizer.syncPayload?.();\n      session.customizer.drawCanvas?.();\n      const blob = await canvasBlob(session.customizer.canvas);\n      const previewFile = new File(\n        [blob],\n        `craftdiy-${session.designId}-preview.png`,\n        { type: 'image/png', lastModified: Date.now() },\n      );\n\n      const staged = [stageFile(session.form, 'Customization Preview', previewFile)];\n      const usedNames = new Set(['Customization Preview']);\n      (session.customizer.config?.photoZones || []).forEach((zone, index) => {\n        const file = session.customizer.photoState?.[index]?.file;\n        if (!(file instanceof File)) return;\n        const base = String(zone.propertyName || `Uploaded Photo ${index + 1}`).trim();\n        let name = base || `Uploaded Photo ${index + 1}`;\n        if (usedNames.has(name)) name = `${name} ${index + 1}`;\n        usedNames.add(name);\n        staged.push(stageFile(session.form, name, file));\n      });\n\n      session.stagedFiles = staged;\n      session.form.enctype = 'multipart/form-data';\n      session.saving = false;\n      setReady(session, true);\n      session.customizer.setStatus?.('Design saved \u2713 Choose Add to cart or Shop Pay.', 'success');\n      document.dispatchEvent(new CustomEvent('craftdiy:design-saved', {\n        detail: { form: session.form, customizer: session.customizer, source: VERSION },\n      }));\n    } catch (error) {\n      session.saving = false;\n      clearStagedFiles(session);\n      setReady(session, false, 'Design not saved \u2014 review the highlighted option and try again.');\n      session.customizer.setStatus?.(error?.message || String(error), 'error');\n      console.error('[CRAFTDIY save-first] save failed', error);\n    }\n  }\n\n  function isAcceleratedTarget(target) {\n    if (!(target instanceof Element)) return false;\n    return Boolean(target.closest(\n      '.shopify-payment-button,[data-shopify=\"payment-button\"],shopify-accelerated-checkout,shopify-accelerated-checkout-cart',\n    ));\n  }\n\n  function isAcceleratedSubmit(session, submitter) {\n    if (submitter?.name === 'checkout' || isAcceleratedTarget(submitter)) return true;\n    return Date.now() - session.acceleratedIntentAt < 2500;\n  }\n\n  function bindSession(detail) {\n    const { root, form, customizer, variant } = detail || {};\n    if (!(root instanceof Element) || !(form instanceof HTMLFormElement) || !customizer) return;\n\n    const previous = sessionsByRoot.get(root);\n    previous?.abortController.abort();\n    const abortController = new AbortController();\n    const session = {\n      root,\n      form,\n      customizer,\n      variant,\n      abortController,\n      ready: false,\n      saving: false,\n      cartSubmitting: false,\n      stagedFiles: [],\n      acceleratedIntentAt: 0,\n      designId: crypto.randomUUID?.() || `${Date.now()}-${Math.random().toString(16).slice(2)}`,\n    };\n    sessionsByRoot.set(root, session);\n    sessionsByForm.set(form, session);\n    injectStyles();\n    syncVariantInput(session);\n\n    customizer.addEventListener('craftdiy:apply-request', (event) => {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      if (session.ready) {\n        submitSavedDesign(session);\n        return;\n      }\n      void saveDesign(session, event.detail?.payload);\n    }, { capture: true, signal: abortController.signal });\n\n    queueMicrotask(() => lockSession(session));\n  }\n\n  document.addEventListener('craftdiy:router-configured', (event) => bindSession(event.detail), true);\n\n  document.addEventListener('craftdiy:customization-change', (event) => {\n    const root = event.target?.closest?.('[data-craftdiy-sku-router]');\n    const session = root ? sessionsByRoot.get(root) : null;\n    if (!session || session.saving) return;\n    queueMicrotask(() => lockSession(session));\n  }, true);\n\n  document.addEventListener('click', (event) => {\n    if (!isAcceleratedTarget(event.target)) return;\n    const form = event.target.closest('form');\n    const session = form ? sessionsByForm.get(form) : null;\n    if (!session) return;\n    session.acceleratedIntentAt = Date.now();\n    if (session.ready) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    session.customizer.setStatus?.('Save your design before checkout.', 'error');\n    applyButton(session)?.focus();\n  }, true);\n\n  document.addEventListener('submit', (event) => {\n    const form = event.target;\n    const session = form instanceof HTMLFormElement ? sessionsByForm.get(form) : null;\n    if (!session) return;\n    if (!session.ready) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      session.customizer.setStatus?.('Save your design before adding to cart or checking out.', 'error');\n      applyButton(session)?.focus();\n      return;\n    }\n    if (isAcceleratedSubmit(session, event.submitter)) {\n      // Keep the native Shopify submission, but prevent the older cart bridge from\n      // converting Shop Pay into an AJAX add-to-cart request.\n      event.stopImmediatePropagation();\n    }\n  }, true);\n\n  document.addEventListener('shopify:section:load', () => {\n    document.querySelectorAll('[data-craftdiy-sku-router]').forEach((root) => {\n      const session = sessionsByRoot.get(root);\n      if (session) lockSession(session);\n    });\n  });\n\n  document.addEventListener('craftdiy:cart-added', (event) => {\n    const form = event.detail?.form;\n    const session = form instanceof HTMLFormElement ? sessionsByForm.get(form) : null;\n    if (!session) return;\n    session.cartSubmitting = false;\n    const apply = applyButton(session);\n    if (apply) {\n      apply.disabled = true;\n      setButtonLabel(apply, 'ADDED TO CART \u2713');\n    }\n  });\n\n  document.addEventListener('craftdiy:cart-error', (event) => {\n    const form = event.detail?.form;\n    const session = form instanceof HTMLFormElement ? sessionsByForm.get(form) : null;\n    if (!session || !session.ready) return;\n    session.cartSubmitting = false;\n    const apply = applyButton(session);\n    if (apply) {\n      apply.disabled = false;\n      setButtonLabel(apply, 'TRY ADDING AGAIN');\n    }\n  });\n})();\n\r\n"],
  "mappings": "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",
  "names": []
}
