{
  "version": 3,
  "sources": ["/cdn/shop/t/10/assets/custom-editorial.js?codex=20260428-editorial-handle-fallback"],
  "sourcesContent": ["(function () {\n  const gridConfigs = [\n    {\n      gridSelector:\n        '.ecom-collection__product-main.ecom-collection_product_template_collection .ecom-collection__product--wrapper-items',\n      itemClassName: 'ecom-collection__product-item',\n      getColumnCount: getCssGridColumnCount\n    },\n    {\n      gridSelector: '.product-list.product-list--collection[data-product-list]',\n      itemClassName: 'thumbnail',\n      getColumnCount: getTurboColumnCount\n    }\n  ];\n  const combinedGridSelector = gridConfigs.map(function (config) {\n    return config.gridSelector;\n  }).join(',');\n  const flagSelector = '.roi-editorial-flag';\n  const soldOutSelector = [\n    '.ecom-collection__product-badge--sold-out',\n    '.sold_out',\n    '.sold-out',\n    '.product-thumbnail__badge--sold-out'\n  ].join(',');\n  const requestFrame =\n    window.requestAnimationFrame ||\n    function (callback) {\n      return window.setTimeout(callback, 16);\n    };\n  let isScheduled = false;\n\n  // Codex: durable fallback for EComposer sections, which can be regenerated and lose hook output.\n  const editorialProductHandles = new Set([\n    'h-fische-anmut-schachset-gefertigt-aus-esche-und-ebenholz',\n    'leder-ablageschale-fur-geschlagene-figuren',\n    'modernes-kunst-schachspiel-aus-eschenholz',\n    'modernes-schachbrett',\n    'pflegeritual-schachfiguren',\n    'renaissance-schachset-gefertigt-aus-esche-und-ebenholz',\n    'schachbox-aus-kunstleder',\n    'schachbrett-palisander-ahorn',\n    'schachspiel-blau-konig-aus-eschenholz',\n    'schachspiel-dynastie-aus-nussholz',\n    'schachspiel-eclat-aus-ebenholz',\n    'schachspiel-einklang-aus-palisanderholz',\n    'schachspiel-eminenz-aus-ahorn-und-nussbaumholz',\n    'schachspiel-oeuvre-aus-olivenholz',\n    'schachspiel-perle-aus-eschenholz-und-buchsbaumholz',\n    'schachspiel-quintessence-aus-eschenmaser',\n    'schachspiel-racines-aus-olivenholz',\n    'schachspiel-reflexionen-aus-eschenholz-und-buchsbaumholz',\n    'schachspiel-serenitat-aus-mahagoni-und-seshamholz',\n    'schachspiel-sieg-aus-mahagoni',\n    'schachspiel-suzerain-aus-eschenholz-und-buchsbaum',\n    'schachspiel-vermeil-aus-eschenholz',\n    'signature-hulle-br-aus-bio-baumwolle'\n  ]);\n\n  function getCardProductHandle(card) {\n    const directHandle = card.dataset.productHandle || card.getAttribute('data-product-handle');\n    if (directHandle) {\n      return directHandle;\n    }\n\n    const productLink = card.querySelector('a[href*=\"/products/\"]');\n    if (!productLink) {\n      return '';\n    }\n\n    const match = productLink.getAttribute('href').match(/\\/products\\/([^?#/]+)/);\n    return match ? decodeURIComponent(match[1]) : '';\n  }\n\n  function cardHasEditorialMarker(card) {\n    return (\n      card.querySelector(flagSelector) ||\n      card.dataset.roiEditorialFeatured === 'true' ||\n      editorialProductHandles.has(getCardProductHandle(card))\n    );\n  }\n\n\n  function getCssGridColumnCount(grid) {\n    const computedColumns = window.getComputedStyle(grid).gridTemplateColumns;\n\n    if (computedColumns && computedColumns !== 'none') {\n      return computedColumns\n        .split(' ')\n        .map(function (part) {\n          return part.trim();\n        })\n        .filter(Boolean).length;\n    }\n\n    const fallbackColumns = parseInt(grid.dataset.gridColumn || '', 10);\n    return Number.isFinite(fallbackColumns) ? fallbackColumns : 0;\n  }\n\n  function getTurboColumnCount(grid) {\n    const firstCard = Array.from(grid.children).find(function (child) {\n      return child instanceof HTMLElement && child.classList.contains('thumbnail');\n    });\n\n    if (!firstCard) {\n      return 0;\n    }\n\n    if (firstCard.classList.contains('one-half')) return 2;\n    if (firstCard.classList.contains('one-third')) return 3;\n    if (firstCard.classList.contains('one-fourth')) return 4;\n    if (firstCard.classList.contains('one-fifth')) return 5;\n    if (firstCard.classList.contains('one-sixth')) return 6;\n\n    const gridWidth = grid.getBoundingClientRect().width;\n    const cardWidth = firstCard.getBoundingClientRect().width;\n    if (gridWidth > 0 && cardWidth > 0) {\n      return Math.max(1, Math.round(gridWidth / cardWidth));\n    }\n\n    return 0;\n  }\n\n  function isVisible(element) {\n    if (!(element instanceof HTMLElement)) {\n      return false;\n    }\n\n    const style = window.getComputedStyle(element);\n    return style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0';\n  }\n\n  function cardIsSoldOut(card) {\n    const soldOutBadge = card.querySelector(soldOutSelector);\n    if (isVisible(soldOutBadge) && (soldOutBadge.textContent || '').trim()) {\n      return true;\n    }\n\n    const addToCartButton = card.querySelector(\n      '.ecom-collection__product-submit, .ecom-product-single__add-to-cart--submit, button[name=\"add\"]'\n    );\n\n    return Boolean(\n      addToCartButton &&\n        /out\\s*stock|unavailable|ausverkauft|nicht\\s+verf[u\u00FC]gbar/i.test(addToCartButton.textContent || '')\n    );\n  }\n\n  function applyGridLayout(grid, config) {\n    let hasFeaturedItem = false;\n\n    Array.from(grid.children).forEach(function (child) {\n      if (!(child instanceof HTMLElement) || !child.classList.contains(config.itemClassName)) {\n        return;\n      }\n\n      if (cardIsSoldOut(child)) {\n        child.dataset.roiSoldOut = 'true';\n        delete child.dataset.roiEditorialFeatured;\n        return;\n      }\n\n      delete child.dataset.roiSoldOut;\n\n      if (cardHasEditorialMarker(child)) {\n        child.dataset.roiEditorialFeatured = 'true';\n        hasFeaturedItem = true;\n        return;\n      }\n\n      delete child.dataset.roiEditorialFeatured;\n    });\n\n    if (hasFeaturedItem) {\n      grid.dataset.roiEditorialGrid = 'true';\n      grid.dataset.roiEditorialColumns = String(config.getColumnCount(grid));\n      return;\n    }\n\n    delete grid.dataset.roiEditorialGrid;\n    delete grid.dataset.roiEditorialColumns;\n  }\n\n  function applyEditorialLayout() {\n    gridConfigs.forEach(function (config) {\n      document.querySelectorAll(config.gridSelector).forEach(function (grid) {\n        applyGridLayout(grid, config);\n      });\n    });\n  }\n\n  function scheduleApplyEditorialLayout() {\n    if (isScheduled) {\n      return;\n    }\n\n    isScheduled = true;\n    requestFrame(function () {\n      isScheduled = false;\n      applyEditorialLayout();\n    });\n  }\n\n  function shouldReapply(mutations) {\n    return mutations.some(function (mutation) {\n      if (mutation.type === 'childList') {\n        return mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0;\n      }\n\n      if (!(mutation.target instanceof Element)) {\n        return false;\n      }\n\n      return mutation.target.matches(flagSelector) || Boolean(mutation.target.closest(combinedGridSelector));\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', scheduleApplyEditorialLayout, { once: true });\n  } else {\n    scheduleApplyEditorialLayout();\n  }\n\n  window.addEventListener('load', scheduleApplyEditorialLayout);\n  window.addEventListener('resize', scheduleApplyEditorialLayout);\n  document.addEventListener('ecom-products-init', scheduleApplyEditorialLayout, true);\n  document.addEventListener('shopify:section:load', scheduleApplyEditorialLayout);\n\n  new MutationObserver(function (mutations) {\n    if (shouldReapply(mutations)) {\n      scheduleApplyEditorialLayout();\n    }\n  }).observe(document.documentElement, {\n    childList: true,\n    subtree: true,\n    attributes: true,\n    attributeFilter: ['class', 'hidden', 'data-roi-editorial-featured']\n  });\n})();\n\n/* codex-write-probe-20260428 */\n"],
  "mappings": "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",
  "names": []
}
