{
  "version": 3,
  "sources": ["/cdn/shop/t/59/assets/pet-personalization-fields.js?ppv=5"],
  "sourcesContent": ["(function () {\n  // The block can appear more than once, but document listeners must have one owner.\n  if (window.PetPersonalizationValidation) return;\n  const blockSelector = 'pet-personalization-fields';\n  const buttonSelector = 'button[ref=\"addToCartButton\"], button[name=\"add\"], .sticky-add-to-cart__button';\n  const uploads = new WeakMap();\n  const forms = new WeakMap();\n  const observedInputs = new WeakSet();\n  // Product-level lifetime survives form replacements and back/forward restoration.\n  const tracking = new Map();\n  let refreshTimer;\n\n  window.dataLayer = window.dataLayer || [];\n  window.gtag = window.gtag || function () {\n    window.dataLayer.push(arguments);\n  };\n\n  const blocksFor = (id) => Array.from(document.querySelectorAll(blockSelector)).filter((block) => block.dataset.petFormId === id);\n  const fieldsFor = (id) => blocksFor(id).flatMap((block) => Array.from(block.querySelectorAll('[data-pet-upload-field]')));\n  const sectionFor = (form) => form.closest('.shopify-section') || form.closest('section') || document;\n  const stateFor = (form) => forms.get(form);\n  const message = (field, key) => field.closest(blockSelector)?.dataset[key] || '';\n  const setText = (element, text) => {\n    if (element && element.textContent !== text) element.textContent = text;\n  };\n\n  function setStatus(element, text) {\n    if (!element) return;\n    setText(element, text);\n    element.hidden = !text;\n  }\n\n  function setUploadState(field, state) {\n    field.dataset.petUploadState = state;\n    field.dataset.petUploadComplete = ['selected', 'successful'].includes(state) ? 'true' : 'false';\n    const key = { selected: 'petPhotoSelected', uploading: 'petUploading', successful: 'petUploadSuccess', failed: 'petUploadFailed' }[state];\n    setStatus(field.querySelector('[data-pet-photo-status]'), key ? message(field, key) : '');\n    const retry = field.querySelector('[data-pet-upload-retry]');\n    if (retry) retry.hidden = state !== 'failed';\n  }\n\n  function isComplete(id) {\n    return blocksFor(id).every((block) => {\n      const names = Array.from(block.querySelectorAll('input[type=\"text\"][required]'));\n      const fields = Array.from(block.querySelectorAll('[data-pet-upload-field]'));\n      return names.every((input) => input.value.trim()) && fields.length > 0 &&\n        fields.every((field) => field.dataset.petUploadComplete === 'true');\n    });\n  }\n\n  function trackPersonalization(form, interacted = false) {\n    if (!form) return;\n    const formId = form.getAttribute('id');\n    if (!formId) return;\n    const blocks = blocksFor(formId);\n    const trackingBlock = blocks.find((block) => block.hasAttribute('data-pet-tracking-product-id')) ||\n      sectionFor(form).querySelector(`${blockSelector}[data-pet-tracking-product-id]`);\n    const productId = trackingBlock?.getAttribute('data-pet-tracking-product-id');\n    if (!productId) return;\n    if (!tracking.has(productId)) tracking.set(productId, { interacted: false, started: false, completed: false });\n    const state = tracking.get(productId);\n    state.interacted ||= interacted;\n    if (!state.interacted || stateFor(form)?.variantPending) return;\n    const button = form.querySelector('[data-pet-variant-available]');\n    const variantId = button?.dataset.petVariantId || form.querySelector('[name=\"id\"]')?.value;\n    const petCount = Number(trackingBlock?.getAttribute('data-pet-count') || 0);\n    if (!variantId || !Number.isInteger(petCount) || petCount < 1) return;\n    const amount = button?.dataset.petVariantPriceAmount;\n    const value = Number(amount);\n    const currency = button?.dataset.petCurrency;\n    if (!amount?.trim() || !Number.isFinite(value) || value < 0 || !/^[A-Z]{3}$/.test(currency || '')) return;\n    const payload = { product_id: String(productId), variant_id: String(variantId), pet_count: petCount, value, currency };\n    const publish = (stage) => {\n      if (state[stage]) return;\n      try {\n        state[stage] = true;\n        const eventName = stage === 'started' ? 'personalization_start' : 'personalization_completed';\n        window.gtag('event', eventName, { ...payload });\n      } catch (_) { /* Tracking must never interrupt personalization. */ }\n    };\n    publish('started');\n    if (isComplete(formId)) publish('completed');\n  }\n\n  function getButtons(form) {\n    return Array.from(sectionFor(form).querySelectorAll(buttonSelector)).filter((button) => {\n      const owner = button.form || button.closest('product-form-component')?.querySelector('form');\n      return owner ? owner === form : button.matches('.sticky-add-to-cart__button');\n    });\n  }\n\n  function refresh(id) {\n    const form = document.getElementById(id);\n    const blocks = blocksFor(id);\n    if (!form || !blocks.length) return;\n    const state = stateFor(form);\n    const busy = !!state?.busy;\n    const complete = isComplete(id);\n    trackPersonalization(form);\n    blocks.forEach((block) => {\n      block.querySelectorAll('[data-pet-name]').forEach((input) => {\n        setStatus(input.closest('.pet-personalization__field').querySelector('[data-pet-name-status]'),\n          input.value.trim() ? block.dataset.petNameAdded : '');\n      });\n    });\n    getButtons(form).forEach((button) => {\n      button.dataset.petPersonalizationManaged = 'true';\n      // Server-rendered availability is authoritative, not our temporary busy state.\n      const available = button.dataset.petVariantAvailable === 'true';\n      const locked = busy || !!state?.variantPending;\n      button.disabled = !available || locked;\n      button.toggleAttribute('aria-busy', busy);\n      if (!available || locked) button.setAttribute('aria-disabled', 'true');\n      else button.removeAttribute('aria-disabled');\n      if (busy) button.dataset.petPersonalizationUploadLoading = 'true';\n      else delete button.dataset.petPersonalizationUploadLoading;\n      if (!available) return;\n      const label = busy ? blocks[0].dataset.petUploading : complete\n        ? `${button.dataset.petReadyLabel} - ${button.dataset.petVariantPrice?.trim() || ''}`\n        : blocks[0].dataset.petIncompleteCta;\n      setText(button.querySelector('.add-to-cart-text__label'), label);\n      const separatePrice = button.querySelector('.add-to-cart-text__price');\n      if (separatePrice) separatePrice.hidden = true;\n    });\n  }\n\n  function errorFor(field, text) {\n    let error = field.querySelector('.pet-personalization__error');\n    if (!error) {\n      error = document.createElement('p');\n      error.className = 'pet-personalization__error';\n      error.id = `${field.querySelector('input')?.id || 'PetField'}-error`;\n      field.appendChild(error);\n    }\n    setText(error, text);\n    error.hidden = !text;\n    field.classList.toggle('pet-personalization__field--error', !!text);\n    field.querySelector('.filepond--root')?.classList.toggle('pet-personalization__upload--invalid', !!text);\n    const input = field.querySelector('input[type=\"text\"], .filepond--browser, input[type=\"file\"]');\n    if (input) {\n      input.classList.toggle('pet-personalization__input--error', !!text);\n      if (text) input.setAttribute('aria-invalid', 'true');\n      else input.removeAttribute('aria-invalid');\n      const ids = new Set((input.getAttribute('aria-describedby') || '').split(/\\s+/).filter(Boolean));\n      if (text) ids.add(error.id);\n      else ids.delete(error.id);\n      if (ids.size) input.setAttribute('aria-describedby', Array.from(ids).join(' '));\n      else input.removeAttribute('aria-describedby');\n    }\n  }\n\n  function reportMissing(id) {\n    let first;\n    blocksFor(id).forEach((block) => {\n      // Walk in visual order: name, optional/required text, photo, then next pet.\n      block.querySelectorAll('.pet-personalization__field').forEach((field) => {\n        const input = field.querySelector('input[type=\"text\"][required]');\n        const isUpload = field.hasAttribute('data-pet-upload-field');\n        const missing = input ? !input.value.trim() : isUpload && field.dataset.petUploadComplete !== 'true';\n        if (!missing) {\n          if (input || isUpload) errorFor(field, '');\n          return;\n        }\n        const uploadState = field.dataset.petUploadState;\n        const text = uploadState === 'failed' ? block.dataset.petUploadFailed\n          : uploadState === 'uploading' ? block.dataset.petUploading : block.dataset.petRequiredError;\n        errorFor(field, text);\n        if (!first) first = input || field;\n      });\n    });\n    if (first) {\n      if (!first.matches('input')) first.setAttribute('tabindex', '-1');\n      first.scrollIntoView({ block: 'center', behavior: matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth' });\n      first.focus({ preventScroll: true });\n    }\n    return !first;\n  }\n\n  function syncUpload(field) {\n    const upload = uploads.get(field);\n    if (!upload) return;\n    const { pond, input } = upload;\n    const form = document.getElementById(field.closest(blockSelector).dataset.petFormId);\n    const browser = pond.element.querySelector('.filepond--browser');\n    if (browser) {\n      browser.setAttribute('aria-describedby', input.getAttribute('aria-describedby') || '');\n      browser.setAttribute('aria-label', field.querySelector('label')?.textContent.trim() || '');\n    }\n    pond.element.querySelectorAll('.filepond--data input').forEach((generated) => {\n      generated.setAttribute('form', form.getAttribute('id'));\n    });\n    if (stateFor(form)?.busy) return;\n    const files = pond.getFiles();\n    const statuses = window.FilePond.FileStatus;\n    const file = files[0];\n    const ready = files.length === 1 && file.status === statuses.IDLE && file.file instanceof Blob && file.file.size > 0;\n    const failed = file && [statuses.LOAD_ERROR, statuses.PROCESSING_ERROR, statuses.PROCESSING_REVERT_ERROR].includes(file.status);\n    const state = !files.length ? 'empty' : failed ? 'failed' : ready ? 'selected' : 'loading';\n    // Unrelated FilePond events must not erase a server error on the same file.\n    if (upload.fileId !== file?.id || !['failed', 'successful'].includes(field.dataset.petUploadState)) {\n      setUploadState(field, state);\n      if (ready || failed || !files.length) errorFor(field, '');\n      if (failed) browser?.setAttribute('aria-invalid', 'true');\n    }\n    upload.fileId = file?.id;\n    refresh(form.getAttribute('id'));\n  }\n\n  function initUpload(input) {\n    const field = input.closest('[data-pet-upload-field]');\n    if (uploads.has(field)) return;\n    const pond = window.FilePond.create(input, {\n      acceptedFileTypes: ['image/*'], allowMultiple: false, allowPaste: true,\n      allowReorder: false, allowReplace: true, checkValidity: true,\n      credits: false, maxFiles: 1, required: true, storeAsFile: true,\n      stylePanelLayout: 'compact',\n      fileValidateTypeLabelExpectedTypes: input.dataset.petUploadExpectedTypes || '',\n      labelFileTypeNotAllowed: input.dataset.petUploadTypeError || '',\n      labelInvalidField: input.dataset.petUploadInvalid || '',\n      labelFileLoadError: message(field, 'petUploadFailed'),\n      labelTapToRetry: field.querySelector('[data-pet-upload-retry]').textContent,\n      labelIdle: `<span class=\"pet-personalization__upload-prompt\"><svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" focusable=\"false\"><path d=\"M12 3v12m0-12 4.5 4.5M12 3 7.5 7.5M5 14v3.5A2.5 2.5 0 0 0 7.5 20h9a2.5 2.5 0 0 0 2.5-2.5V14\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.8\"/></svg><span>${input.dataset.petUploadLabel || ''}</span></span>`,\n    });\n    uploads.set(field, { pond, input, fileId: null });\n    ['initfile', 'addfilestart', 'addfile', 'removefile', 'updatefiles', 'preparefile', 'error'].forEach((name) => {\n      pond.on(name, () => {\n        if (['addfilestart', 'addfile'].includes(name) && pond.getFiles().length) {\n          trackPersonalization(document.getElementById(field.closest(blockSelector).dataset.petFormId), true);\n        }\n        syncUpload(field);\n      });\n    });\n    field.querySelector('[data-pet-upload-retry]').addEventListener('click', async () => {\n      const form = document.getElementById(field.closest(blockSelector).dataset.petFormId);\n      if (stateFor(form)?.busy) return;\n      const file = pond.getFiles()[0];\n      if (file?.status === window.FilePond.FileStatus.LOAD_ERROR) {\n        const source = file.source;\n        await pond.removeFile(file.id);\n        pond.addFile(source).catch(() => {});\n        return;\n      }\n      // Retry the entire multipart request: Shopify stores all pet photos together.\n      fieldsFor(form.getAttribute('id')).forEach((item) => {\n        const itemUpload = uploads.get(item);\n        if (itemUpload?.pond.getFiles()[0]?.status === window.FilePond.FileStatus.IDLE) {\n          setUploadState(item, 'selected');\n          errorFor(item, '');\n        }\n      });\n      refresh(form.getAttribute('id'));\n      form.requestSubmit();\n    });\n    syncUpload(field);\n  }\n\n  function setBusy(form, busy) {\n    const state = stateFor(form);\n    if (!state) return;\n    state.busy = busy;\n    blocksFor(form.getAttribute('id')).forEach((block) => {\n      block.querySelectorAll('input[type=\"text\"]').forEach((input) => { input.readOnly = busy; });\n    });\n    fieldsFor(form.getAttribute('id')).forEach((field) => {\n      const pond = uploads.get(field)?.pond;\n      if (pond) pond.setOptions({ disabled: busy });\n      const retry = field.querySelector('[data-pet-upload-retry]');\n      if (retry) retry.disabled = busy;\n    });\n    refresh(form.getAttribute('id'));\n  }\n\n  const cartUrl = () => `${window.Shopify?.routes?.root || '/'}cart.js`;\n  async function getCart() {\n    const response = await fetch(cartUrl(), { credentials: 'same-origin', cache: 'no-store', headers: { Accept: 'application/json' } });\n    if (!response.ok) throw new Error('Unable to verify cart');\n    const cart = await response.json();\n    if (!Array.isArray(cart.items)) throw new Error('Invalid cart response');\n    return cart;\n  }\n\n  function matchesAttempt(item, attempt) {\n    return String(item.variant_id || item.id) === attempt.variant &&\n      attempt.properties.every(([key, value]) => item.properties?.[key] === value);\n  }\n\n  function findAddedItem(cart, attempt) {\n    return cart.items.find((item) => matchesAttempt(item, attempt) &&\n      item.quantity >= (attempt.quantities.get(item.key) || 0) + attempt.quantity &&\n      attempt.photos.every((key) => {\n        const value = item.properties?.[key];\n        return typeof value === 'string' && /^https?:\\/\\//.test(value) && value.includes('/uploads/');\n      }));\n  }\n\n  function cartChangedWithoutPhotos(cart, attempt) {\n    return cart.items.some((item) => matchesAttempt(item, attempt) && item.quantity > (attempt.quantities.get(item.key) || 0));\n  }\n\n  function uploadFailure(form) {\n    fieldsFor(form.getAttribute('id')).forEach((field) => {\n      setUploadState(field, 'failed');\n      errorFor(field, '');\n    });\n    setBusy(form, false);\n  }\n\n  function completeSubmission(form, attempt, cart, sections) {\n    const state = stateFor(form);\n    state.attempt = null;\n    setBusy(form, false);\n    fieldsFor(form.getAttribute('id')).forEach((field) => setUploadState(field, 'successful'));\n    const cartDrawer = document.querySelector('cart-drawer-component');\n    if (cartDrawer) {\n      form.dispatchEvent(new CustomEvent('cart:update', {\n        bubbles: true,\n        detail: {\n          resource: cart,\n          sourceId: form.getAttribute('id'),\n          data: {\n            source: 'pet-personalization',\n            itemCount: attempt.quantity,\n            productId: form.closest('product-form-component')?.dataset.productId,\n            sections,\n          },\n        },\n      }));\n      return;\n    }\n    window.location.assign(attempt.destination);\n  }\n\n  async function submit(form) {\n    const state = stateFor(form);\n    if (!state || state.busy || state.variantPending) return;\n    if (!reportMissing(form.getAttribute('id'))) return;\n    if (!form.reportValidity()) return;\n    const mainButton = form.querySelector('[data-pet-variant-available]');\n    if (mainButton?.dataset.petVariantAvailable !== 'true') return;\n\n    // Snapshot before locking fields so every selected file and property is included.\n    const data = new FormData(form);\n    const photoKeys = [];\n    fieldsFor(form.getAttribute('id')).forEach((field) => {\n      const { pond, input } = uploads.get(field);\n      const file = pond.getFiles()[0].file;\n      data.set(input.name, file, file.name);\n      photoKeys.push(input.name.slice(11, -1));\n    });\n    blocksFor(form.getAttribute('id')).forEach((block) => block.querySelectorAll('[data-pet-optional-property]').forEach((input) => {\n      if (!input.value.trim()) data.delete(input.name);\n    }));\n    const sectionIds = Array.from(document.querySelectorAll('cart-items-component[data-section-id]'))\n      .map((component) => component.dataset.sectionId)\n      .filter(Boolean);\n    if (sectionIds.length) data.set('sections', [...new Set(sectionIds)].join(','));\n    const returnTo = data.get('return_to');\n    const destination = new URL(typeof returnTo === 'string' && returnTo ? returnTo : `${window.Shopify?.routes?.root || '/'}cart`, location.origin);\n    if (destination.origin !== location.origin) return;\n    const properties = Array.from(data.entries()).filter(([key, value]) => key.startsWith('properties[') && typeof value === 'string')\n      .map(([key, value]) => [key.slice(11, -1), value]);\n    setBusy(form, true);\n    fieldsFor(form.getAttribute('id')).forEach((field) => setUploadState(field, 'uploading'));\n    let posted = false;\n    try {\n      const cart = await getCart();\n      // The previous POST may have succeeded even if its response was lost.\n      if (state.attempt) {\n        if (findAddedItem(cart, state.attempt)) {\n          completeSubmission(form, state.attempt, cart);\n          return;\n        }\n        if (cartChangedWithoutPhotos(cart, state.attempt)) throw new Error('Cart changed without verified uploads');\n      }\n      const attempt = {\n        variant: String(data.get('id')), quantity: Number(data.get('quantity') || 1), properties,\n        photos: photoKeys, quantities: new Map(cart.items.map((item) => [item.key, item.quantity])),\n        destination: destination.href,\n      };\n      state.attempt = attempt;\n      posted = true;\n      const response = await fetch(form.action, {\n        method: 'POST', body: data, credentials: 'same-origin',\n        headers: { Accept: 'application/json', 'X-Requested-With': 'XMLHttpRequest' },\n      });\n      let sections;\n      try { sections = (await response.clone().json()).sections; } catch (_) { /* Cart verification remains authoritative. */ }\n      const updatedCart = await getCart();\n      if (findAddedItem(updatedCart, attempt)) {\n        completeSubmission(form, attempt, updatedCart, sections);\n        return;\n      }\n      if (!response.ok && response.status >= 400 && response.status < 500 && !cartChangedWithoutPhotos(updatedCart, attempt)) state.attempt = null;\n      throw new Error('Upload was not confirmed by Shopify');\n    } catch (_) {\n      if (posted && state.attempt) {\n        try {\n          const cart = await getCart();\n          if (findAddedItem(cart, state.attempt)) {\n            completeSubmission(form, state.attempt, cart);\n            return;\n          }\n        } catch (_) { /* Keep the attempt for reconciliation on explicit retry. */ }\n      }\n      uploadFailure(form);\n    }\n  }\n\n  function formForButton(button) {\n    const direct = button.form || button.closest('product-form-component')?.querySelector('form');\n    if (direct && blocksFor(direct.getAttribute('id')).length) return direct;\n    if (!button.matches('.sticky-add-to-cart__button')) return null;\n    const id = button.closest('.shopify-section')?.querySelector(blockSelector)?.dataset.petFormId;\n    return id ? document.getElementById(id) : null;\n  }\n\n  function init() {\n    document.querySelectorAll(blockSelector).forEach((block) => {\n      const form = document.getElementById(block.dataset.petFormId);\n      if (!form) return;\n      if (!forms.has(form)) {\n        forms.set(form, { busy: false, variantPending: false, attempt: null });\n        const details = form.closest('.product-details');\n        if (details && window.ResizeObserver) {\n          const updateSticky = () => details.classList.toggle('pet-personalization--tall-details', details.offsetHeight > window.innerHeight - 100);\n          new ResizeObserver(updateSticky).observe(details);\n          window.addEventListener('resize', updateSticky);\n          updateSticky();\n        }\n        // Our validation walks external form-associated inputs in their visual order.\n        form.noValidate = true;\n        form.enctype = 'multipart/form-data';\n        form.addEventListener('submit', (event) => {\n          event.preventDefault();\n          event.stopImmediatePropagation();\n          void submit(form);\n        }, true);\n      }\n      block.querySelectorAll('input[type=\"text\"]').forEach((input) => {\n        if (observedInputs.has(input)) return;\n        observedInputs.add(input);\n        let previousValue = input.value;\n        ['input', 'change'].forEach((name) => input.addEventListener(name, () => {\n          if (input.value !== previousValue) {\n            previousValue = input.value;\n            trackPersonalization(form, true);\n          }\n          if (input.value.trim()) errorFor(input.closest('.pet-personalization__field'), '');\n          refresh(form.getAttribute('id'));\n        }));\n      });\n      if (window.FilePond && window.FilePondPluginImagePreview && window.FilePondPluginFileValidateType) {\n        if (!window.PetPersonalizationFilePondPluginsRegistered) {\n          window.FilePond.registerPlugin(window.FilePondPluginFileValidateType, window.FilePondPluginImagePreview);\n          window.PetPersonalizationFilePondPluginsRegistered = true;\n        }\n        block.querySelectorAll('input[data-pet-filepond]').forEach(initUpload);\n      }\n      refresh(form.getAttribute('id'));\n    });\n  }\n\n  document.addEventListener('click', (event) => {\n    const button = event.target.closest?.(buttonSelector);\n    if (!button) return;\n    const form = formForButton(button);\n    if (!form) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    void submit(form);\n  }, true);\n  document.addEventListener('variant:selected', (event) => {\n    const section = event.target.closest?.('.shopify-section');\n    section?.querySelectorAll('product-form-component form').forEach((form) => {\n      const state = stateFor(form);\n      if (state) { state.variantPending = true; refresh(form.getAttribute('id')); }\n    });\n  });\n  document.addEventListener('variant:update', (event) => {\n    const section = event.target.closest?.('.shopify-section');\n    window.setTimeout(() => {\n      section?.querySelectorAll('product-form-component form').forEach((form) => {\n        const state = stateFor(form);\n        if (!state) return;\n        state.variantPending = false;\n        const newForm = event.detail?.data?.html?.getElementById(form.getAttribute('id'));\n        const newButton = newForm?.querySelector('[data-pet-variant-available]');\n        // Theme morphs only button children; explicitly refresh the root metadata.\n        if (newButton) getButtons(form).forEach((button) => {\n          ['petVariantAvailable', 'petVariantId', 'petVariantPrice', 'petVariantPriceAmount', 'petCurrency', 'petReadyLabel'].forEach((key) => {\n            button.dataset[key] = newButton.dataset[key];\n          });\n          if (newButton.dataset.petVariantAvailable !== 'true') {\n            setText(button.querySelector('.add-to-cart-text__label'), newButton.querySelector('.add-to-cart-text__label')?.textContent || '');\n          }\n        });\n        refresh(form.getAttribute('id'));\n      });\n    }, 0);\n  });\n  window.addEventListener('pageshow', (event) => {\n    if (!event.persisted) return;\n    document.querySelectorAll('product-form-component form').forEach((form) => {\n      const state = stateFor(form);\n      if (!state) return;\n      state.variantPending = false;\n      setBusy(form, false);\n      fieldsFor(form.getAttribute('id')).forEach((field) => { setUploadState(field, 'empty'); syncUpload(field); });\n    });\n  });\n  window.PetPersonalizationValidation = {\n    isComplete,\n    validate(id) {\n      const form = document.getElementById(id);\n      if (stateFor(form)?.busy || stateFor(form)?.variantPending) return false;\n      return reportMissing(id);\n    },\n  };\n  window.PetPersonalizationButtonState = { refresh };\n  window.PetPersonalizationUploadState = {\n    set(id, busy) { const form = document.getElementById(id); if (form) setBusy(form, busy); },\n    startIfComplete(id) {\n      const form = document.getElementById(id);\n      if (!form || !blocksFor(id).length || !isComplete(id)) return false;\n      setBusy(form, true);\n      return true;\n    },\n  };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n  window.addEventListener('load', init);\n  document.addEventListener('shopify:section:load', init);\n  new MutationObserver(() => {\n    clearTimeout(refreshTimer);\n    refreshTimer = setTimeout(init, 50);\n  }).observe(document.documentElement, { childList: true, subtree: true });\n})();\n"],
  "mappings": "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",
  "names": []
}
