{
  "version": 3,
  "sources": ["/cdn/shop/t/16/assets/local-pickup.js?G=ET7F&Yyv=E&za=WmAC"],
  "sourcesContent": ["import { Component } from '@theme/component';\nimport { morph } from '@theme/morph';\nimport { ThemeEvents, VariantUpdateEvent } from '@theme/events';\n\nclass LocalPickup extends Component {\n  /** @type {AbortController | undefined} */\n  #activeFetch;\n\n  connectedCallback() {\n    super.connectedCallback();\n\n    const closestSection = this.closest(`.shopify-section, dialog`);\n\n    /** @type {(event: VariantUpdateEvent) => void} */\n    const variantUpdated = (event) => {\n      if (event.detail.data.newProduct) {\n        this.dataset.productUrl = event.detail.data.newProduct.url;\n      }\n\n      const variantId = event.detail.resource ? event.detail.resource.id : null;\n      const variantAvailable = event.detail.resource ? event.detail.resource.available : null;\n      if (variantId !== this.dataset.variantId) {\n        if (variantId && variantAvailable) {\n          this.removeAttribute('hidden');\n          this.dataset.variantId = variantId;\n          this.#fetchAvailability(variantId);\n        } else {\n          this.setAttribute('hidden', '');\n        }\n      }\n    };\n\n    closestSection?.addEventListener(ThemeEvents.variantUpdate, variantUpdated);\n\n    this.disconnectedCallback = () => {\n      closestSection?.removeEventListener(ThemeEvents.variantUpdate, variantUpdated);\n    };\n  }\n\n  #createAbortController() {\n    if (this.#activeFetch) this.#activeFetch.abort();\n    this.#activeFetch = new AbortController();\n    return this.#activeFetch;\n  }\n\n  /**\n   * Fetches the availability of a variant.\n   * @param {string} variantId - The ID of the variant to fetch availability for.\n   */\n  #fetchAvailability = (variantId) => {\n    if (!variantId) return;\n\n    const abortController = this.#createAbortController();\n\n    const url = this.dataset.productUrl;\n    fetch(`${url}?variant=${variantId}&section_id=${this.dataset.sectionId}`, {\n      signal: abortController.signal,\n    })\n      .then((response) => response.text())\n      .then((text) => {\n        if (abortController.signal.aborted) return;\n\n        const html = new DOMParser().parseFromString(text, 'text/html');\n        const wrapper = html.querySelector(`local-pickup[data-variant-id=\"${variantId}\"]`);\n        if (wrapper) {\n          this.removeAttribute('hidden');\n          morph(this, wrapper);\n        } else this.setAttribute('hidden', '');\n      })\n      .catch((_e) => {\n        if (abortController.signal.aborted) return;\n        this.setAttribute('hidden', '');\n      });\n  };\n}\n\nif (!customElements.get('local-pickup')) {\n  customElements.define('local-pickup', LocalPickup);\n}\n"],
  "mappings": "AAAA,OAAS,cAAiB,mBAC1B,OAAS,UAAa,eACtB,OAAS,gBAAuC,gBAEhD,MAAM,oBAAoB,SAAU,CAElC,aAEA,mBAAoB,CAClB,MAAM,kBAAkB,EAExB,MAAM,eAAiB,KAAK,QAAQ,0BAA0B,EAGxD,eAAkB,OAAU,CAC5B,MAAM,OAAO,KAAK,aACpB,KAAK,QAAQ,WAAa,MAAM,OAAO,KAAK,WAAW,KAGzD,MAAM,UAAY,MAAM,OAAO,SAAW,MAAM,OAAO,SAAS,GAAK,KAC/D,iBAAmB,MAAM,OAAO,SAAW,MAAM,OAAO,SAAS,UAAY,KAC/E,YAAc,KAAK,QAAQ,YACzB,WAAa,kBACf,KAAK,gBAAgB,QAAQ,EAC7B,KAAK,QAAQ,UAAY,UACzB,KAAK,mBAAmB,SAAS,GAEjC,KAAK,aAAa,SAAU,EAAE,EAGpC,EAEA,gBAAgB,iBAAiB,YAAY,cAAe,cAAc,EAE1E,KAAK,qBAAuB,IAAM,CAChC,gBAAgB,oBAAoB,YAAY,cAAe,cAAc,CAC/E,CACF,CAEA,wBAAyB,CACvB,OAAI,KAAK,cAAc,KAAK,aAAa,MAAM,EAC/C,KAAK,aAAe,IAAI,gBACjB,KAAK,YACd,CAMA,mBAAsB,WAAc,CAClC,GAAI,CAAC,UAAW,OAEhB,MAAM,gBAAkB,KAAK,uBAAuB,EAE9C,IAAM,KAAK,QAAQ,WACzB,MAAM,GAAG,GAAG,YAAY,SAAS,eAAe,KAAK,QAAQ,SAAS,GAAI,CACxE,OAAQ,gBAAgB,MAC1B,CAAC,EACE,KAAM,UAAa,SAAS,KAAK,CAAC,EAClC,KAAM,MAAS,CACd,GAAI,gBAAgB,OAAO,QAAS,OAGpC,MAAM,QADO,IAAI,UAAU,EAAE,gBAAgB,KAAM,WAAW,EACzC,cAAc,iCAAiC,SAAS,IAAI,EAC7E,SACF,KAAK,gBAAgB,QAAQ,EAC7B,MAAM,KAAM,OAAO,GACd,KAAK,aAAa,SAAU,EAAE,CACvC,CAAC,EACA,MAAO,IAAO,CACT,gBAAgB,OAAO,SAC3B,KAAK,aAAa,SAAU,EAAE,CAChC,CAAC,CACL,CACF,CAEK,eAAe,IAAI,cAAc,GACpC,eAAe,OAAO,eAAgB,WAAW",
  "names": []
}
