{"version":3,"file":"script.min.js","sources":["../../../../block-editor/blocks/card-slider/script.js","../../../../assets/js/modules/_slider.js"],"sourcesContent":["import { slider } from \"../../../assets/js/modules/_slider.js\";\n\nconst config = {\n\twrap: \".card-slider__inner\",\n\tnext: \".card-slider__next\",\n\tprev: \".card-slider__prev\",\n\titems: \".card-slider__inner .card\",\n};\n\nexport const instances = Array.from(\n\tdocument.querySelectorAll( '.card-slider' )\n).map( node => slider( node, config ) );\n","export function slider( node, config = {} ) {\n\tconfig = {\n\t\twrap: '.slider__wrap',\n\t\tnext: '.slider__next',\n\t\tprev: '.slider__prev',\n\t\titems: '.slider__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\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\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 - 200 ) {\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( 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\twindow.addEventListener( 'resize', () => {\n\t\tsetScrollIndex( getCurrentScrollIndex() );\n\t\tsetState();\n\n\t\tif ( typeof config.resize === 'function' ) {\n\t\t\tconfig.resize();\n\t\t}\n\t} );\n\tsetScrollIndex( 0 );\n\tsetState();\n\n\treturn node;\n}\n"],"names":["config","wrap","next","prev","items","instances","Array","from","document","querySelectorAll","map","node","querySelector","interval","getCurrentScrollIndex","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","resize","slider"],"mappings":"+DAEA,MAAMA,EAAS,CACdC,KAAM,sBACNC,KAAM,qBACNC,KAAM,qBACNC,MAAO,6BAGKC,EAAYC,MAAMC,KAC9BC,SAASC,iBAAkB,iBAC1BC,KAAKC,GCXA,SAAiBA,EAAMX,EAAS,IACtCA,EAAS,CACRC,KAAM,gBACNC,KAAM,gBACNC,KAAM,gBACNC,MAAO,mBACJJ,GAGJ,MAAMC,EAAQU,EAAKC,cAAeZ,EAAOC,MACnCG,EAAQE,MAAMC,KAAMI,EAAKF,iBAAkBT,EAAOI,QAClDF,EAAQS,EAAKC,cAAeZ,EAAOE,MACnCC,EAAQQ,EAAKC,cAAeZ,EAAOG,MAEzC,IAAOF,IAAUG,EAChB,OAGD,IAAIS,EAAW,KAEf,MAAMC,EAAwBA,IACtBV,EAAMM,KAAKK,GAAQC,KAAKC,IAAKF,EAAKG,WAAajB,EAAKkB,cAAeC,QAAQ,CAAEC,EAASC,EAAMC,EAAGC,IAC9FF,EAAOE,EAAOH,GAAYE,EAAIF,GACnCjB,EAAMqB,OAAS,GAGbC,EAAiBA,CAAEC,EAAOC,EAAW,YAC1C,MAAMC,EAAWC,iBAAiB7B,GAAM8B,iBAAiB,cAEpDJ,GAASvB,EAAMqB,OAASI,EAC5B5B,EAAK+B,SAAU,CACdV,KAAMlB,EAAOuB,GAAQT,WACrBe,IAAK,EACLL,aAEUf,EAAW,IACtBqB,cAAerB,GACfA,EAAW,KACZ,EAGKsB,EAAWA,KAEX/B,EAAOA,EAAMqB,OAAS,GAAIP,WAAajB,EAAKkB,WAAalB,EAAKmC,YAAc,IAChFlC,EAAKmC,UAAW,EAEhBnC,EAAKoC,gBAAiB,YAIlBlC,EAAM,GAAGc,WAAajB,EAAKkB,YAAc,EAC7ChB,EAAKkC,UAAW,EAEhBlC,EAAKmC,gBAAiB,WACvB,EAGKC,EAAaA,KAClB,MAAMZ,EAAQX,KAAKwB,MAAOxB,KAAKyB,IAAK3B,IAA0B,EAAG,IACjEY,EAAgBC,GAEXd,GAAYc,GAAS,IACzBO,cAAerB,GACfA,EAAW,KACZ,EAGK6B,EAAaA,KAClB,MAAMf,EAAQX,KAAKwB,MAAOxB,KAAK2B,IAAK7B,IAA0B,EAAGV,EAAMqB,OAAS,IAChFC,EAAgBC,GAEE,OAAbd,GAAqBc,IAAUvB,EAAMqB,OAAS,IAClDS,cAAerB,GACfA,EAAW,KACZ,EAGK+B,EAAW,WAChBC,KAAKC,oBAAqB,WAAYF,IAGjCG,EAAY,SAAUC,EAAIC,EAAQ,KAClC,OAASpC,GACbqB,cAAerB,GAGhBA,EAAWqC,YAAaF,EAAIC,GAC5BJ,KAAKM,iBAAkB,UAAWC,GAClCP,KAAKM,iBAAkB,WAAYP,IAG9BQ,EAAU,WACfP,KAAKC,oBAAqB,UAAWM,GACrCC,OAAOnB,cAAerB,GACtBA,EAAW,MAyBZ,OAtBKV,IACJA,EAAKgD,iBAAkB,aAAa,IAAMJ,EAAUO,KAAMnD,EAAMoC,KAChEpC,EAAKgD,iBAAkB,QAASZ,IAG5BrC,IACJA,EAAKiD,iBAAkB,aAAa,IAAMJ,EAAUO,KAAMpD,EAAMwC,KAChExC,EAAKiD,iBAAkB,QAAST,IAGjCzC,EAAKkD,iBAAkB,SAAUhB,GACjCkB,OAAOF,iBAAkB,UAAU,KAClCzB,EAAgBZ,KAChBqB,IAE8B,mBAAlBnC,EAAOuD,QAClBvD,EAAOuD,QACR,IAED7B,EAAgB,GAChBS,IAEOxB,CACR,CD7Ge6C,CAAQ7C,EAAMX"}