{"version":3,"file":"script.min.js","sources":["../../../../block-editor/blocks/card-grid/script.js"],"sourcesContent":["export function init(node, config = {}) {\n\tconfig = {\n\t\twrap: \".card-grid__items\",\n\t\tnext: \".card-grid__next\",\n\t\tprev: \".card-grid__prev\",\n\t\titems: \".card-grid__items .card\",\n\t\t...config,\n\t};\n\n\tconst wrap = node.querySelector(config.wrap);\n\tconst items = Array.from(node.querySelectorAll(config.items));\n\tconst next = node.querySelector(config.next);\n\tconst prev = node.querySelector(config.prev);\n\tconst expand = node.querySelector( '.card-grid__expand' );\n\n\tif ( expand && items ) {\n\t\tconst expander = expand.querySelector( '.card-grid__expand-button' );\n\n\t\tif ( expander ) {\n\t\t\texpander.addEventListener( 'click', (e) => {\n\t\t\t\te.preventDefault();\n\n\t\t\t\texpander.parentNode.removeChild( expander );\n\t\t\t\titems.forEach( item => item.classList.remove( 'card-grid__hidden' ) );\n\t\t\t} );\n\t\t}\n\t}\n\n\tif (!wrap || !items || (!prev && !next)) {\n\t\treturn;\n\t}\n\n\tconst allImages = node\n\t\t.querySelector(config.items)\n\t\t.querySelectorAll('[loading=\"lazy\"]');\n\tconst cardGrid = wrap.closest(config.wrap);\n\tconst isSlider = cardGrid.classList.contains(\"is-slider-mobile\");\n\n\n\tlet interval = null;\n\n\tif (items.length > 3 && isSlider) {\n\t\tcardGrid.classList.add(\"has-slider-nav\");\n\t}\n\n\tconst getCurrentScrollIndex = () => {\n\t\treturn items\n\t\t\t.map((item) => Math.abs(item.offsetLeft - wrap.scrollLeft))\n\t\t\t.reduce((closest, left, i, lefts) => {\n\t\t\t\treturn left < lefts[closest] ? i : closest;\n\t\t\t}, items.length - 1);\n\t};\n\n\tconst setScrollIndex = (index, behavior = \"smooth\") => {\n\t\tconst viewable = getComputedStyle(wrap).getPropertyValue(\"--viewable\");\n\n\t\tif (index <= items.length - viewable) {\n\t\t\twrap.scrollTo({\n\t\t\t\tleft: items[index].offsetLeft,\n\t\t\t\ttop: 0,\n\t\t\t\tbehavior,\n\t\t\t});\n\t\t} else if (interval > 0) {\n\t\t\tclearInterval(interval);\n\t\t\tinterval = null;\n\t\t}\n\t};\n\n\tconst setState = () => {\n\t\t// the last item is in view\n\t\tif (\n\t\t\titems[items.length - 1].offsetLeft - wrap.scrollLeft < wrap.offsetWidth &&\n next\n\t\t) {\n\t\t\tnext.disabled = true;\n\t\t} else if ( next ) {\n\t\t\tnext.removeAttribute(\"disabled\");\n\t\t}\n\n\t\t// first item is is view\n\t\tif ( items[0].offsetLeft - wrap.scrollLeft >= 0 && prev ) {\n\t\t\tprev.disabled = true;\n\t\t} else if ( prev ) {\n\t\t\tprev.removeAttribute(\"disabled\");\n\t\t}\n\t};\n\n\tconst scrollPrev = () => {\n\t\tconst index = Math.round(Math.max(getCurrentScrollIndex() - 1, 0));\n\t\tsetScrollIndex(index);\n\n\t\tif (interval && index <= 0) {\n\t\t\tclearInterval(interval);\n\t\t\tinterval = null;\n\t\t}\n\t};\n\n\tconst scrollNext = () => {\n\t\tconst index = Math.round(\n\t\t\tMath.min(getCurrentScrollIndex() + 1, items.length - 1)\n\t\t);\n\t\tsetScrollIndex(index);\n\n\t\tif (interval !== null && index === items.length - 1) {\n\t\t\tclearInterval(interval);\n\t\t\tinterval = null;\n\t\t}\n\t};\n\n\tconst mouseout = function () {\n\t\tthis.removeEventListener(\"mouseout\", mouseout);\n\t};\n\n\tconst mousedown = function (cb, delay = 200) {\n\t\tif (null !== interval) {\n\t\t\tclearInterval(interval);\n\t\t}\n\n\t\tinterval = setInterval(cb, delay);\n\t\tthis.addEventListener(\"mouseup\", mouseup);\n\t\tthis.addEventListener(\"mouseout\", mouseout);\n\t};\n\n\tconst mouseup = function () {\n\t\tthis.removeEventListener(\"mouseup\", mouseup);\n\t\twindow.clearInterval(interval);\n\t\tinterval = null;\n\t};\n\n\tif (prev) {\n\t\tprev.addEventListener(\"mousedown\", () => mousedown.call(prev, scrollPrev));\n\t\tprev.addEventListener(\"click\", scrollPrev);\n\t}\n\n\tif (next) {\n\t\tnext.addEventListener(\"mousedown\", () => mousedown.call(next, scrollNext));\n\t\tnext.addEventListener(\"click\", scrollNext);\n\t}\n\n\twrap.addEventListener(\"scroll\", setState);\n\t//switch to Eager loading due to image loading issues\n\tallImages.forEach((img) => {\n\t\timg.setAttribute(\"loading\", \"eager\");\n\t});\n\tsetScrollIndex(0);\n\tsetState();\n\n\tconst matchMedia = window.matchMedia(\"(max-width: 600px)\");\n\n\tmatchMedia.addEventListener(\"change\", (query) => {\n\t\tif (query.matches) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetState();\n\t\t\t}, 100);\n\t\t}\n\t});\n\n\treturn node;\n}\n\nexport const instances = Array.from(\n\tdocument.querySelectorAll(\".card-grid\")\n).map(init);\n"],"names":["init","node","config","wrap","next","prev","items","querySelector","Array","from","querySelectorAll","expand","expander","addEventListener","e","preventDefault","parentNode","removeChild","forEach","item","classList","remove","allImages","cardGrid","closest","isSlider","contains","interval","length","add","getCurrentScrollIndex","map","Math","abs","offsetLeft","scrollLeft","reduce","left","i","lefts","setScrollIndex","index","behavior","viewable","getComputedStyle","getPropertyValue","scrollTo","top","clearInterval","setState","offsetWidth","disabled","removeAttribute","scrollPrev","round","max","scrollNext","min","mouseout","this","removeEventListener","mousedown","cb","delay","setInterval","mouseup","window","call","img","setAttribute","matchMedia","query","matches","setTimeout","instances","document"],"mappings":"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"}