{
  "version": 3,
  "sources": ["/cdn/shop/t/21/assets/pawlab-sparse-variant.js?pawlab=sparse2"],
  "sourcesContent": ["/**\n * pawlab-sparse-variant.js\n *\n * Horizon's variant-picker commits the clicked option's data-variant-id and\n * the currently checked option values. On a sparse Color\u00D7Steps matrix that\n * combo often does not exist (e.g. Corn Grid Black has only 3 Steps Large).\n * Shopify then renders selected_or_first_available_variant as null, drops\n * ?variant=, and leaves ATC unavailable until a second click.\n *\n * Rewrite the other options only when the chosen Color has exactly one\n * available variant (Corn Grid Black \u2192 3 Steps Large). Colours with two or\n * more available Steps stay on Horizon's own picker. A colour with no\n * available variant (Yellow Fruit Wave DENY@0 / Coming) is not given a\n * stand-in Steps value.\n */\n(function (root) {\n  'use strict';\n\n  /**\n   * @param {Array<{id:number, available:boolean, option1?:string, option2?:string, option3?:string}>} variants\n   * @param {Array<{position:number, isColor:boolean}>} options\n   * @param {string[]} values\n   * @param {number} changedIndex\n   * @returns {{exact:boolean, variant: object|null}}\n   */\n  function resolveSparseVariant(variants, options, values, _changedIndex) {\n    var list = variants || [];\n    var opts = options || [];\n    var chosen = values || [];\n\n    function optionValue(variant, position) {\n      return variant['option' + position] || '';\n    }\n\n    function matches(variant, idxs) {\n      for (var i = 0; i < idxs.length; i++) {\n        var idx = idxs[i];\n        var opt = opts[idx];\n        if (!opt) return false;\n        if (optionValue(variant, opt.position) !== (chosen[idx] || '')) return false;\n      }\n      return true;\n    }\n\n    var allIdx = [];\n    for (var i = 0; i < opts.length; i++) allIdx.push(i);\n\n    for (var v = 0; v < list.length; v++) {\n      if (matches(list[v], allIdx)) return { exact: true, variant: list[v] };\n    }\n\n    var colorIdx = -1;\n    for (var c = 0; c < opts.length; c++) {\n      if (opts[c] && opts[c].isColor) {\n        colorIdx = c;\n        break;\n      }\n    }\n    if (colorIdx === -1) return { exact: false, variant: null };\n\n    var colorOpt = opts[colorIdx];\n    var colorValue = (chosen[colorIdx] || '').trim();\n    if (!colorOpt || !colorValue) return { exact: false, variant: null };\n\n    var availableForColor = [];\n    for (var p = 0; p < list.length; p++) {\n      if (optionValue(list[p], colorOpt.position) !== colorValue) continue;\n      if (list[p].available) availableForColor.push(list[p]);\n    }\n    if (availableForColor.length !== 1) return { exact: false, variant: null };\n    return { exact: false, variant: availableForColor[0] };\n  }\n\n  function productHandle(picker) {\n    var url = (picker.getAttribute('data-product-url') || root.location.pathname || '');\n    var match = url.match(/\\/products\\/([^/?#]+)/);\n    return match ? decodeURIComponent(match[1]) : '';\n  }\n\n  function isColorName(text) {\n    return /color|colour|\u984F\u8272|\u989C\u8272/i.test(text || '');\n  }\n\n  function optionGroups(picker) {\n    var form = picker.querySelector('.variant-picker__form') || picker;\n    var nodes = form.querySelectorAll(':scope > fieldset, :scope > .variant-option--dropdowns select');\n    var groups = [];\n    Array.prototype.forEach.call(nodes, function (el, index) {\n      var isSelect = el instanceof root.HTMLSelectElement;\n      var sample = isSelect ? el : el.querySelector('input[type=\"radio\"]');\n      var id = sample ? sample.getAttribute('data-input-id') || '' : '';\n      var position = parseInt(id.split('-')[0], 10);\n      if (!position) position = index + 1;\n      var name = '';\n      if (isSelect) name = el.getAttribute('name') || '';\n      else if (sample) name = sample.getAttribute('name') || '';\n      var legend = !isSelect && el.querySelector('legend') ? el.querySelector('legend').textContent : '';\n      groups.push({\n        position: position,\n        isColor: isColorName(name) || isColorName(legend),\n        contains: function (node) {\n          return el === node || el.contains(node);\n        },\n        value: function () {\n          if (isSelect) return el.value || '';\n          var checked = el.querySelector('input[type=\"radio\"]:checked');\n          return checked ? checked.value : '';\n        },\n        stampVariantId: function (variantId) {\n          var id = String(variantId);\n          if (isSelect) {\n            var opt = el.options[el.selectedIndex];\n            if (opt) opt.setAttribute('data-variant-id', id);\n            return;\n          }\n          var checked = el.querySelector('input[type=\"radio\"]:checked');\n          if (checked) checked.setAttribute('data-variant-id', id);\n        },\n        selectValue: function (want, variantId) {\n          var id = String(variantId);\n          if (isSelect) {\n            var match = null;\n            Array.prototype.forEach.call(el.options, function (opt) {\n              if (opt.value === want) match = opt;\n            });\n            if (!match) return null;\n            Array.prototype.forEach.call(el.options, function (opt) {\n              if (opt === match) opt.setAttribute('selected', 'selected');\n              else opt.removeAttribute('selected');\n            });\n            el.value = want;\n            match.setAttribute('data-variant-id', id);\n            return el;\n          }\n          var radios = el.querySelectorAll('input[type=\"radio\"]');\n          var picked = null;\n          Array.prototype.forEach.call(radios, function (input) {\n            if (input.value === want) picked = input;\n          });\n          if (!picked) return null;\n          Array.prototype.forEach.call(radios, function (input) {\n            var on = input === picked;\n            input.checked = on;\n            input.setAttribute('data-current-checked', on ? 'true' : 'false');\n          });\n          picked.setAttribute('data-variant-id', id);\n          return picked;\n        },\n      });\n    });\n    return groups;\n  }\n\n  function combinedListingSwitch(picker, input) {\n    if (!input || !input.getAttribute) return false;\n    var next = input.getAttribute('data-connected-product-url');\n    if (!next) return false;\n    var current = (picker.getAttribute('data-product-url') || '').split('?')[0];\n    var target = next.split('?')[0];\n    return Boolean(current && target && current !== target);\n  }\n\n  var products = new Map();\n  var inflight = new Map();\n\n  function loadProduct(handle) {\n    if (products.has(handle)) return Promise.resolve(products.get(handle));\n    if (inflight.has(handle)) return inflight.get(handle);\n    var pending = fetch('/products/' + encodeURIComponent(handle) + '.js?sparse=1', {\n      credentials: 'omit',\n      cache: 'no-cache',\n    })\n      .then(function (response) {\n        if (!response.ok) throw new Error('product.js ' + response.status);\n        return response.json();\n      })\n      .then(function (product) {\n        products.set(handle, product);\n        inflight.delete(handle);\n        return product;\n      })\n      .catch(function (error) {\n        inflight.delete(handle);\n        throw error;\n      });\n    inflight.set(handle, pending);\n    return pending;\n  }\n\n  function syncUrl(picker, variant) {\n    if (picker.getAttribute('data-template-product-match') !== 'true') return;\n    try {\n      var url = new URL(root.location.href);\n      url.searchParams.set('variant', String(variant.id));\n      if (url.href !== root.location.href) root.history.replaceState({}, '', url.toString());\n    } catch (e) {}\n  }\n\n  function syncForm(picker, variant) {\n    var productId = picker.getAttribute('data-product-id');\n    if (!productId) return;\n    var forms = document.querySelectorAll(\n      'product-form-component[data-product-id=\"' + productId + '\"]'\n    );\n    Array.prototype.forEach.call(forms, function (form) {\n      var idInput = form.querySelector('input[name=\"id\"]');\n      if (idInput) idInput.value = String(variant.id);\n    });\n  }\n\n  function applyResolved(picker, groups, values, variant, originalTarget) {\n    var dispatchEl = null;\n    groups.forEach(function (group, index) {\n      var want = variant['option' + group.position] || '';\n      if ((values[index] || '') === want) {\n        group.stampVariantId(variant.id);\n        return;\n      }\n      var el = group.selectValue(want, variant.id);\n      if (el && el !== originalTarget) dispatchEl = el;\n    });\n    if (originalTarget && originalTarget.setAttribute) {\n      originalTarget.setAttribute('data-variant-id', String(variant.id));\n    }\n    syncUrl(picker, variant);\n    syncForm(picker, variant);\n    return dispatchEl;\n  }\n\n  function onChange(event) {\n    var target = event.target;\n    if (!target || !target.closest) return;\n    var picker = target.closest('variant-picker');\n    if (!picker) return;\n    var isRadio = target instanceof root.HTMLInputElement && target.type === 'radio';\n    var isSelect = target instanceof root.HTMLSelectElement;\n    if (!isRadio && !isSelect) return;\n\n    if (target.getAttribute('data-pawlab-sparse-pass') === '1') {\n      target.removeAttribute('data-pawlab-sparse-pass');\n      return;\n    }\n\n    var control = isSelect ? target.options[target.selectedIndex] : target;\n    if (combinedListingSwitch(picker, control)) return;\n\n    var handle = productHandle(picker);\n    if (!handle) return;\n    var product = products.get(handle);\n    if (!product) {\n      if (target.getAttribute('data-pawlab-sparse-replay') === '1') {\n        target.removeAttribute('data-pawlab-sparse-replay');\n        return;\n      }\n      event.stopImmediatePropagation();\n      loadProduct(handle).then(\n        function () {\n          target.setAttribute('data-pawlab-sparse-replay', '1');\n          target.dispatchEvent(new Event('change', { bubbles: true }));\n        },\n        function () {\n          target.setAttribute('data-pawlab-sparse-replay', '1');\n          target.dispatchEvent(new Event('change', { bubbles: true }));\n        }\n      );\n      return;\n    }\n\n    var groups = optionGroups(picker);\n    if (groups.length < 2) return;\n    var values = groups.map(function (group) {\n      return group.value();\n    });\n    var changedIndex = -1;\n    for (var i = 0; i < groups.length; i++) {\n      if (groups[i].contains(target)) changedIndex = i;\n    }\n    var resolved = resolveSparseVariant(\n      product.variants,\n      groups.map(function (group) {\n        return { position: group.position, isColor: group.isColor };\n      }),\n      values,\n      changedIndex\n    );\n    if (!resolved.variant || resolved.exact) return;\n\n    var dispatchEl = applyResolved(picker, groups, values, resolved.variant, target);\n    if (!dispatchEl) return;\n    event.stopImmediatePropagation();\n    dispatchEl.setAttribute('data-pawlab-sparse-pass', '1');\n    dispatchEl.dispatchEvent(new Event('change', { bubbles: true }));\n  }\n\n  function boot() {\n    var pickers = document.querySelectorAll('variant-picker[data-product-url]');\n    Array.prototype.forEach.call(pickers, function (picker) {\n      var handle = productHandle(picker);\n      if (handle) loadProduct(handle);\n    });\n  }\n\n  root.PawlabSparseVariant = { resolveSparseVariant: resolveSparseVariant };\n\n  if (root.document) {\n    document.addEventListener('change', onChange, true);\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', boot);\n    } else {\n      boot();\n    }\n  }\n})(typeof globalThis !== 'undefined' ? globalThis : this);\n"],
  "mappings": "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",
  "names": ["i", "id"]
}
