{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/media-gallery.js?cb=20260407-7"],
  "sourcesContent": ["import { Component } from '@theme/component';\nimport { ThemeEvents, VariantUpdateEvent, ZoomMediaSelectedEvent } from '@theme/events';\n\n/**\n * A custom element that renders a media gallery.\n *\n * @typedef {object} Refs\n * @property {import('./zoom-dialog').ZoomDialog} [zoomDialogComponent] - The zoom dialog component.\n * @property {import('./slideshow').Slideshow} [slideshow] - The slideshow component.\n * @property {HTMLElement[]} [media] - The media elements.\n *\n * @extends Component<Refs>\n */\nexport class MediaGallery extends Component {\n  connectedCallback() {\n    super.connectedCallback();\n\n    const { signal } = this.#controller;\n    const target = this.closest('.shopify-section, dialog');\n\n    target?.addEventListener(ThemeEvents.variantUpdate, this.#handleVariantUpdate, { signal });\n    this.refs.zoomDialogComponent?.addEventListener(ThemeEvents.zoomMediaSelected, this.#handleZoomMediaSelected, {\n      signal,\n    });\n  }\n\n  #controller = new AbortController();\n\n  disconnectedCallback() {\n    super.disconnectedCallback();\n\n    this.#controller.abort();\n  }\n\n  /**\n   * Handles a variant update event by replacing the current media gallery with a new one.\n   *\n   * @param {VariantUpdateEvent} event - The variant update event.\n   */\n  #handleVariantUpdate = (event) => {\n    const source = event.detail.data.html;\n\n    if (!source) return;\n    const newMediaGallery = source.querySelector('media-gallery');\n\n    if (!newMediaGallery) return;\n\n    this.replaceWith(newMediaGallery);\n  };\n\n  /**\n   * Handles the 'zoom-media:selected' event.\n   * @param {ZoomMediaSelectedEvent} event - The zoom-media:selected event.\n   */\n  #handleZoomMediaSelected = async (event) => {\n    this.slideshow?.select(event.detail.index, undefined, { animate: false });\n  };\n\n  /**\n   * Zooms the media gallery.\n   *\n   * @param {number} index - The index of the media to zoom.\n   * @param {PointerEvent} event - The pointer event.\n   */\n  zoom(index, event) {\n    this.refs.zoomDialogComponent?.open(index, event);\n  }\n\n  get slideshow() {\n    return this.refs.slideshow;\n  }\n\n  get media() {\n    return this.refs.media;\n  }\n\n  get presentation() {\n    return this.dataset.presentation;\n  }\n}\n\nif (!customElements.get('media-gallery')) {\n  customElements.define('media-gallery', MediaGallery);\n}\n"],
  "mappings": "AAAA,OAAS,cAAiB,mBAC1B,OAAS,gBAA+D,gBAYjE,aAAM,qBAAqB,SAAU,CAC1C,mBAAoB,CAClB,MAAM,kBAAkB,EAExB,KAAM,CAAE,MAAO,EAAI,KAAK,YACT,KAAK,QAAQ,0BAA0B,GAE9C,iBAAiB,YAAY,cAAe,KAAK,qBAAsB,CAAE,MAAO,CAAC,EACzF,KAAK,KAAK,qBAAqB,iBAAiB,YAAY,kBAAmB,KAAK,yBAA0B,CAC5G,MACF,CAAC,CACH,CAEA,YAAc,IAAI,gBAElB,sBAAuB,CACrB,MAAM,qBAAqB,EAE3B,KAAK,YAAY,MAAM,CACzB,CAOA,qBAAwB,OAAU,CAChC,MAAM,OAAS,MAAM,OAAO,KAAK,KAEjC,GAAI,CAAC,OAAQ,OACb,MAAM,gBAAkB,OAAO,cAAc,eAAe,EAEvD,iBAEL,KAAK,YAAY,eAAe,CAClC,EAMA,yBAA2B,MAAO,OAAU,CAC1C,KAAK,WAAW,OAAO,MAAM,OAAO,MAAO,OAAW,CAAE,QAAS,EAAM,CAAC,CAC1E,EAQA,KAAK,MAAO,MAAO,CACjB,KAAK,KAAK,qBAAqB,KAAK,MAAO,KAAK,CAClD,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,KAAK,SACnB,CAEA,IAAI,OAAQ,CACV,OAAO,KAAK,KAAK,KACnB,CAEA,IAAI,cAAe,CACjB,OAAO,KAAK,QAAQ,YACtB,CACF,CAEK,eAAe,IAAI,eAAe,GACrC,eAAe,OAAO,gBAAiB,YAAY",
  "names": []
}
