{"version":3,"file":"script.min.js","sources":["../../../../block-editor/blocks/card-slider/script.js"],"sourcesContent":["export function init (node, config = {}) {\n\tconfig = {\n\t\twrap: \".card-slider__slides\",\n\t\tnext: \".card-slider__next\",\n\t\tprev: \".card-slider__prev\",\n\t\titems: \".card-slider__slides .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\n\tif (!wrap || !items || items.length === 0 || (!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\n\tlet interval = null;\n\n\tnode.setAttribute(\"data-slide-count\", items.length);\n\n\tconst getCurrentScrollIndex = () => {\n\t\treturn items\n\t\t\t.map((item) =>\n\t\t\t\tMath.abs(item.offsetLeft - wrap.scrollLeft - wrap.offsetLeft)\n\t\t\t)\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\tif (index <= items.length) {\n\t\t\twrap.scrollTo({\n\t\t\t\tleft: items[index].offsetLeft - wrap.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\t// const setState = () => {\n\t// \tconst windowWidth = window.innerWidth;\n\t// \tconsole.log('window width', windowWidth);\n\t// \tconst lastItemOffsetRight =\n\t// \t\twindowWidth - items[items.length - 1].getBoundingClientRect().right;\n\t// \tconsole.log('last offsetright', lastItemOffsetRight);\n\t// \tconst wrapOffsetRight = windowWidth - wrap.getBoundingClientRect().right;\n\t// \tconsole.log('offset right', wrapOffsetRight);\n\t// \tif (lastItemOffsetRight >= wrapOffsetRight && next) {\n\t// \t\tnext.disabled = true;\n\t// \t} else if (next) {\n\t// \t\tnext.removeAttribute(\"disabled\");\n\t// \t}\n\t// \tconsole.log('item 0 offsetLeft', items[0].offsetLeft);\n\t// \tconsole.log('slides scrollLeft', wrap.scrollLeft);\n\t// \tconsole.log('slides offsetLeft', wrap.offsetLeft);\n\t// \t// first item is is view\n\t// \tif (items[0].offsetLeft - wrap.scrollLeft - wrap.offsetLeft >= 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 setState = () => {\n\t\t// the last item is in view\n\t\tlet lastItem = items[ items.length - 1 ];\n\t\tlet lastItemOffset = lastItem.getBoundingClientRect().x;\n\t\tlet lastItemWidth = lastItem.offsetWidth;\n\t\tlet fullWrapWidth = wrap.offsetWidth + wrap.offsetLeft;\n\t\t\n\t\tif ( Math.round((lastItemOffset + lastItemWidth)) <= fullWrapWidth) {\n\t\t\tnext.disabled = true;\n\t\t} else {\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 ) {\n\t\t\tprev.disabled = true;\n\t\t} else {\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-slider\")\n).map(init);\n"],"names":["init","node","config","wrap","next","prev","items","querySelector","Array","from","querySelectorAll","length","allImages","closest","interval","setAttribute","getCurrentScrollIndex","map","item","Math","abs","offsetLeft","scrollLeft","reduce","left","i","lefts","setScrollIndex","index","behavior","scrollTo","top","clearInterval","setState","lastItem","lastItemOffset","getBoundingClientRect","x","lastItemWidth","offsetWidth","fullWrapWidth","round","disabled","removeAttribute","scrollPrev","max","scrollNext","min","mouseout","this","removeEventListener","mousedown","cb","delay","setInterval","addEventListener","mouseup","window","call","forEach","img","matchMedia","query","matches","setTimeout","instances","document"],"mappings":"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"}