{"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: '.flex-grid',\n\t\tnext: '.card-grid__next',\n\t\tprev: '.card-grid__prev',\n\t\titems: '.flex-grid__item',\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 allImages = node.querySelector( config.items ).querySelectorAll('[loading=\"lazy\"]');\n\n\tif ( ! wrap || ! items ) {\n\t\treturn;\n\t}\n\n\tlet interval = null;\n\n\tconst getCurrentScrollIndex = () => {\n\t\treturn items.map( item => Math.abs( item.offsetLeft - wrap.scrollLeft ) ).reduce( ( closest, left, i, lefts ) => {\n\t\t\treturn left < lefts[ closest ] ? i : closest;\n\t\t}, items.length - 1 );\n\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 ( items[ items.length - 1 ].offsetLeft - wrap.scrollLeft < wrap.offsetWidth ) {\n\t\t\tnext.disabled = true;\n\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( Math.min( getCurrentScrollIndex() + 1, items.length - 1 ) );\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\n\t\t}\n\t})\n\n\treturn node;\n\n\n}\n\n\nexport const instances = Array.from( document.querySelectorAll( '.card-grid' ) ).map( init );\n"],"names":["init","node","config","wrap","next","prev","items","querySelector","Array","from","querySelectorAll","allImages","interval","getCurrentScrollIndex","map","item","Math","abs","offsetLeft","scrollLeft","reduce","closest","left","i","lefts","length","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","addEventListener","mouseup","window","call","forEach","img","setAttribute","matchMedia","query","matches","setTimeout","instances","document"],"mappings":"4GAAO,SAASA,EAAMC,EAAMC,EAAS,IACpCA,EAAS,CACRC,KAAM,aACNC,KAAM,mBACNC,KAAM,mBACNC,MAAO,sBACJJ,GAGJ,MAAMC,EAAQF,EAAKM,cAAeL,EAAOC,MACnCG,EAAQE,MAAMC,KAAMR,EAAKS,iBAAkBR,EAAOI,QAClDF,EAAQH,EAAKM,cAAeL,EAAOE,MACnCC,EAAQJ,EAAKM,cAAeL,EAAOG,MACnCM,EAAYV,EAAKM,cAAeL,EAAOI,OAAQI,iBAAiB,oBAEtE,IAAOP,IAAUG,EAChB,OAGD,IAAIM,EAAW,KAEf,MAAMC,EAAwBA,IACtBP,EAAMQ,KAAKC,GAAQC,KAAKC,IAAKF,EAAKG,WAAaf,EAAKgB,cAAeC,QAAQ,CAAEC,EAASC,EAAMC,EAAGC,IAC9FF,EAAOE,EAAOH,GAAYE,EAAIF,GACnCf,EAAMmB,OAAS,GAIbC,EAAiBA,CAAEC,EAAOC,EAAW,YAC1C,MAAMC,EAAWC,iBAAiB3B,GAAM4B,iBAAiB,cAEpDJ,GAASrB,EAAMmB,OAASI,EAC5B1B,EAAK6B,SAAU,CACdV,KAAMhB,EAAOqB,GAAQT,WACrBe,IAAK,EACLL,aAEUhB,EAAW,IACtBsB,cAAetB,GACfA,EAAW,KACZ,EAGKuB,EAAWA,KAEX7B,EAAOA,EAAMmB,OAAS,GAAIP,WAAaf,EAAKgB,WAAahB,EAAKiC,YAClEhC,EAAKiC,UAAW,EAGhBjC,EAAKkC,gBAAiB,YAIlBhC,EAAM,GAAGY,WAAaf,EAAKgB,YAAc,EAC7Cd,EAAKgC,UAAW,EAEhBhC,EAAKiC,gBAAiB,WACvB,EAGKC,EAAaA,KAClB,MAAMZ,EAAQX,KAAKwB,MAAOxB,KAAKyB,IAAK5B,IAA0B,EAAG,IACjEa,EAAgBC,GAEXf,GAAYe,GAAS,IACzBO,cAAetB,GACfA,EAAW,KACZ,EAGK8B,EAAaA,KAClB,MAAMf,EAAQX,KAAKwB,MAAOxB,KAAK2B,IAAK9B,IAA0B,EAAGP,EAAMmB,OAAS,IAChFC,EAAgBC,GAEE,OAAbf,GAAqBe,IAAUrB,EAAMmB,OAAS,IAClDS,cAAetB,GACfA,EAAW,KACZ,EAGKgC,EAAW,WAChBC,KAAKC,oBAAqB,WAAYF,IAGjCG,EAAY,SAAUC,EAAIC,EAAQ,KAClC,OAASrC,GACbsB,cAAetB,GAGhBA,EAAWsC,YAAaF,EAAIC,GAC5BJ,KAAKM,iBAAkB,UAAWC,GAClCP,KAAKM,iBAAkB,WAAYP,IAG9BQ,EAAU,WACfP,KAAKC,oBAAqB,UAAWM,GACrCC,OAAOnB,cAAetB,GACtBA,EAAW,MAGPP,IACJA,EAAK8C,iBAAkB,aAAa,IAAMJ,EAAUO,KAAMjD,EAAMkC,KAChElC,EAAK8C,iBAAkB,QAASZ,IAG5BnC,IACJA,EAAK+C,iBAAkB,aAAa,IAAMJ,EAAUO,KAAMlD,EAAMsC,KAChEtC,EAAK+C,iBAAkB,QAAST,IAGjCvC,EAAKgD,iBAAkB,SAAUhB,GAEjCxB,EAAU4C,SAASC,IAClBA,EAAIC,aAAa,UAAW,QAAQ,IAErC/B,EAAgB,GAChBS,IAaA,OAXmBkB,OAAOK,WAAW,sBAE1BP,iBAAiB,UAAUQ,IACjCA,EAAMC,SACTC,YAAW,KACV1B,GAAU,GACR,IAEJ,IAGMlC,CAGR,OAGa6D,EAAYtD,MAAMC,KAAMsD,SAASrD,iBAAkB,eAAiBI,IAAKd"}