{
  "version": 3,
  "sources": ["/cdn/shop/t/324/assets/ia-size-guide.js?cb=1792420693"],
  "sourcesContent": ["/* Size guide panel (A/B: body class ia-ab-size-guide). The element puts one opener next to the\n   product's size option (findTarget) and opens the theme's popup-component around the panel;\n   the opener stays hidden by CSS on pages without the class. */\n(function () {\n  if (customElements.get('ia-size-guide')) return;\n\n  var VARIANT_CLASS = 'ia-ab-size-guide';\n  var LEGEND_CLASS = 'ia-size-guide-legend';\n\n  function clean(text) {\n    return (text || '').replace(/\\*/g, '').trim().toLowerCase();\n  }\n\n  class IaSizeGuide extends HTMLElement {\n    constructor() {\n      super();\n      this.opener = null;\n      this.observer = null;\n      this.timer = 0;\n      this.onOpen = this.onOpen.bind(this);\n      this.onTabChange = this.onTabChange.bind(this);\n      this.onTabKey = this.onTabKey.bind(this);\n      this.onMutation = this.onMutation.bind(this);\n    }\n\n    connectedCallback() {\n      this.popup = this.querySelector('popup-component');\n      this.tabs = this.querySelector('tabs-component');\n      this.names = (this.dataset.optionNames || '').split('|').filter(Boolean);\n      this.product = document.querySelector('product-component[data-product-handle=\"' + this.dataset.productHandle + '\"]');\n\n      this.opener = document.createElement('button');\n      this.opener.type = 'button';\n      this.opener.className = 'ia-size-guide-link';\n      this.opener.textContent = this.dataset.label;\n      this.opener.setAttribute('aria-haspopup', 'dialog');\n      this.opener.setAttribute('aria-controls', this.dataset.dialogId);\n      this.opener.addEventListener('click', this.onOpen);\n      this.placeOpener();\n\n      // Bold Options draws its fields after load and the theme may redraw the legends: the\n      // one opener follows the best target as it appears\n      if (this.product) {\n        this.observer = new MutationObserver(this.onMutation);\n        this.observer.observe(this.product, {childList: true, subtree: true});\n      }\n\n      if (this.tabs) {\n        this.tabs.addEventListener('theme:tab:change', this.onTabChange);\n        this.tabs.addEventListener('keydown', this.onTabKey);\n      }\n    }\n\n    disconnectedCallback() {\n      if (this.observer) this.observer.disconnect();\n      this.observer = null;\n      clearTimeout(this.timer);\n\n      if (this.opener) {\n        this.opener.removeEventListener('click', this.onOpen);\n        if (this.opener.parentNode) this.opener.parentNode.classList.remove(LEGEND_CLASS);\n        this.opener.remove();\n        this.opener = null;\n      }\n\n      if (this.tabs) {\n        this.tabs.removeEventListener('theme:tab:change', this.onTabChange);\n        this.tabs.removeEventListener('keydown', this.onTabKey);\n      }\n    }\n\n    // Debounced on a timer, which keeps running in a background tab where Bold may render\n    onMutation() {\n      clearTimeout(this.timer);\n      this.timer = setTimeout(() => this.placeOpener(), 50);\n    }\n\n    // Listed names in order, first among the product's options, then among Bold Options\n    // fields; without either, the last option takes the opener\n    findTarget() {\n      if (!this.product) return null;\n      var options = Array.prototype.slice.call(this.product.querySelectorAll('.product__content .selector-wrapper')).map(function (wrapper) {\n        var name = wrapper.querySelector('.radio__legend__option-name');\n        return {text: clean(name && name.textContent), node: wrapper.querySelector('.radio__legend')};\n      });\n      var fields = Array.prototype.slice.call(this.product.querySelectorAll('.bold_option_title')).map(function (title) {\n        return {text: clean(title.textContent.replace(this.opener.textContent, '')), node: title};\n      }, this);\n      var pick = function (list) {\n        for (var i = 0; i < this.names.length; i++) {\n          for (var j = 0; j < list.length; j++) {\n            if (list[j].node && list[j].text === this.names[i]) return list[j].node;\n          }\n        }\n        return null;\n      }.bind(this);\n      var last = options.filter(function (option) {\n        return option.node;\n      }).pop();\n      return pick(options) || pick(fields) || (last ? last.node : null);\n    }\n\n    placeOpener() {\n      if (!this.opener) return;\n      var target = this.findTarget();\n      if (!target || this.opener.parentNode === target) return;\n      if (this.opener.parentNode) this.opener.parentNode.classList.remove(LEGEND_CLASS);\n      target.classList.add(LEGEND_CLASS);\n      target.appendChild(this.opener);\n    }\n\n    onOpen(event) {\n      if (!document.body.classList.contains(VARIANT_CLASS) || !this.popup) return;\n      event.preventDefault();\n      window.theme.a11y.lastElement = this.opener;\n      this.popup.popupOpen();\n    }\n\n    // The theme's tabs switch classes only; the ARIA state follows them here\n    onTabChange() {\n      this.tabs.querySelectorAll('[role=\"tab\"]').forEach(function (tab) {\n        var selected = tab.classList.contains('current');\n        tab.setAttribute('aria-selected', selected ? 'true' : 'false');\n        tab.setAttribute('tabindex', selected ? '0' : '-1');\n      });\n    }\n\n    // Arrow keys move between tabs and select, as in the WAI tabs pattern\n    onTabKey(event) {\n      if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n      var tabs = Array.prototype.slice.call(this.tabs.querySelectorAll('[role=\"tab\"]'));\n      var index = tabs.indexOf(event.target);\n      if (index === -1) return;\n\n      event.preventDefault();\n      var step = event.key === 'ArrowRight' ? 1 : -1;\n      var next = tabs[(index + step + tabs.length) % tabs.length];\n      next.click();\n      next.focus();\n    }\n  }\n\n  customElements.define('ia-size-guide', IaSizeGuide);\n})();\n"],
  "mappings": "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",
  "names": []
}
