| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818 |
- /* eslint-disable */
- /* If a new version is imported from swiper the global.Swiper definition at around line
- * 25 should be changed to global.SwiperVersionNo., eg. global.Swiper670, and the corresponding
- * references in jetpack-carousel.js updated to match new version number. This is to prevent
- * clashes with 3rd party plugin/themes usage of swiper
- */
- /**
- * Swiper 6.7.0
- * Most modern mobile touch slider and framework with hardware accelerated transitions
- * https://swiperjs.com
- *
- * Copyright 2014-2021 Vladimir Kharlampidi
- *
- * Released under the MIT License
- *
- * Released on: June 22, 2021
- */
- ( function ( global, factory ) {
- typeof exports === 'object' && typeof module !== 'undefined'
- ? ( module.exports = factory() )
- : typeof define === 'function' && define.amd
- ? define( factory )
- : ( ( global = typeof globalThis !== 'undefined' ? globalThis : global || self ),
- ( global.Swiper670 = factory() ) );
- } )( this, function () {
- 'use strict';
- function _defineProperties( target, props ) {
- for ( var i = 0; i < props.length; i++ ) {
- var descriptor = props[ i ];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ( 'value' in descriptor ) descriptor.writable = true;
- Object.defineProperty( target, descriptor.key, descriptor );
- }
- }
- function _createClass( Constructor, protoProps, staticProps ) {
- if ( protoProps ) _defineProperties( Constructor.prototype, protoProps );
- if ( staticProps ) _defineProperties( Constructor, staticProps );
- return Constructor;
- }
- function _extends() {
- _extends =
- Object.assign ||
- function ( target ) {
- for ( var i = 1; i < arguments.length; i++ ) {
- var source = arguments[ i ];
- for ( var key in source ) {
- if ( Object.prototype.hasOwnProperty.call( source, key ) ) {
- target[ key ] = source[ key ];
- }
- }
- }
- return target;
- };
- return _extends.apply( this, arguments );
- }
- /**
- * SSR Window 3.0.0
- * Better handling for window object in SSR environment
- * https://github.com/nolimits4web/ssr-window
- *
- * Copyright 2020, Vladimir Kharlampidi
- *
- * Licensed under MIT
- *
- * Released on: November 9, 2020
- */
- /* eslint-disable no-param-reassign */
- function isObject$1( obj ) {
- return (
- obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object
- );
- }
- function extend$1( target, src ) {
- if ( target === void 0 ) {
- target = {};
- }
- if ( src === void 0 ) {
- src = {};
- }
- Object.keys( src ).forEach( function ( key ) {
- if ( typeof target[ key ] === 'undefined' ) target[ key ] = src[ key ];
- else if (
- isObject$1( src[ key ] ) &&
- isObject$1( target[ key ] ) &&
- Object.keys( src[ key ] ).length > 0
- ) {
- extend$1( target[ key ], src[ key ] );
- }
- } );
- }
- var ssrDocument = {
- body: {},
- addEventListener: function addEventListener() {},
- removeEventListener: function removeEventListener() {},
- activeElement: {
- blur: function blur() {},
- nodeName: '',
- },
- querySelector: function querySelector() {
- return null;
- },
- querySelectorAll: function querySelectorAll() {
- return [];
- },
- getElementById: function getElementById() {
- return null;
- },
- createEvent: function createEvent() {
- return {
- initEvent: function initEvent() {},
- };
- },
- createElement: function createElement() {
- return {
- children: [],
- childNodes: [],
- style: {},
- setAttribute: function setAttribute() {},
- getElementsByTagName: function getElementsByTagName() {
- return [];
- },
- };
- },
- createElementNS: function createElementNS() {
- return {};
- },
- importNode: function importNode() {
- return null;
- },
- location: {
- hash: '',
- host: '',
- hostname: '',
- href: '',
- origin: '',
- pathname: '',
- protocol: '',
- search: '',
- },
- };
- function getDocument() {
- var doc = typeof document !== 'undefined' ? document : {};
- extend$1( doc, ssrDocument );
- return doc;
- }
- var ssrWindow = {
- document: ssrDocument,
- navigator: {
- userAgent: '',
- },
- location: {
- hash: '',
- host: '',
- hostname: '',
- href: '',
- origin: '',
- pathname: '',
- protocol: '',
- search: '',
- },
- history: {
- replaceState: function replaceState() {},
- pushState: function pushState() {},
- go: function go() {},
- back: function back() {},
- },
- CustomEvent: function CustomEvent() {
- return this;
- },
- addEventListener: function addEventListener() {},
- removeEventListener: function removeEventListener() {},
- getComputedStyle: function getComputedStyle() {
- return {
- getPropertyValue: function getPropertyValue() {
- return '';
- },
- };
- },
- Image: function Image() {},
- Date: function Date() {},
- screen: {},
- setTimeout: function setTimeout() {},
- clearTimeout: function clearTimeout() {},
- matchMedia: function matchMedia() {
- return {};
- },
- requestAnimationFrame: function requestAnimationFrame( callback ) {
- if ( typeof setTimeout === 'undefined' ) {
- callback();
- return null;
- }
- return setTimeout( callback, 0 );
- },
- cancelAnimationFrame: function cancelAnimationFrame( id ) {
- if ( typeof setTimeout === 'undefined' ) {
- return;
- }
- clearTimeout( id );
- },
- };
- function getWindow() {
- var win = typeof window !== 'undefined' ? window : {};
- extend$1( win, ssrWindow );
- return win;
- }
- /**
- * Dom7 3.0.0
- * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
- * https://framework7.io/docs/dom7.html
- *
- * Copyright 2020, Vladimir Kharlampidi
- *
- * Licensed under MIT
- *
- * Released on: November 9, 2020
- */
- function _inheritsLoose( subClass, superClass ) {
- subClass.prototype = Object.create( superClass.prototype );
- subClass.prototype.constructor = subClass;
- subClass.__proto__ = superClass;
- }
- function _getPrototypeOf( o ) {
- _getPrototypeOf = Object.setPrototypeOf
- ? Object.getPrototypeOf
- : function _getPrototypeOf( o ) {
- return o.__proto__ || Object.getPrototypeOf( o );
- };
- return _getPrototypeOf( o );
- }
- function _setPrototypeOf( o, p ) {
- _setPrototypeOf =
- Object.setPrototypeOf ||
- function _setPrototypeOf( o, p ) {
- o.__proto__ = p;
- return o;
- };
- return _setPrototypeOf( o, p );
- }
- function _isNativeReflectConstruct() {
- if ( typeof Reflect === 'undefined' || ! Reflect.construct ) return false;
- if ( Reflect.construct.sham ) return false;
- if ( typeof Proxy === 'function' ) return true;
- try {
- Date.prototype.toString.call( Reflect.construct( Date, [], function () {} ) );
- return true;
- } catch ( e ) {
- return false;
- }
- }
- function _construct( Parent, args, Class ) {
- if ( _isNativeReflectConstruct() ) {
- _construct = Reflect.construct;
- } else {
- _construct = function _construct( Parent, args, Class ) {
- var a = [ null ];
- a.push.apply( a, args );
- var Constructor = Function.bind.apply( Parent, a );
- var instance = new Constructor();
- if ( Class ) _setPrototypeOf( instance, Class.prototype );
- return instance;
- };
- }
- return _construct.apply( null, arguments );
- }
- function _isNativeFunction( fn ) {
- return Function.toString.call( fn ).indexOf( '[native code]' ) !== -1;
- }
- function _wrapNativeSuper( Class ) {
- var _cache = typeof Map === 'function' ? new Map() : undefined;
- _wrapNativeSuper = function _wrapNativeSuper( Class ) {
- if ( Class === null || ! _isNativeFunction( Class ) ) return Class;
- if ( typeof Class !== 'function' ) {
- throw new TypeError( 'Super expression must either be null or a function' );
- }
- if ( typeof _cache !== 'undefined' ) {
- if ( _cache.has( Class ) ) return _cache.get( Class );
- _cache.set( Class, Wrapper );
- }
- function Wrapper() {
- return _construct( Class, arguments, _getPrototypeOf( this ).constructor );
- }
- Wrapper.prototype = Object.create( Class.prototype, {
- constructor: {
- value: Wrapper,
- enumerable: false,
- writable: true,
- configurable: true,
- },
- } );
- return _setPrototypeOf( Wrapper, Class );
- };
- return _wrapNativeSuper( Class );
- }
- function _assertThisInitialized( self ) {
- if ( self === void 0 ) {
- throw new ReferenceError( "this hasn't been initialised - super() hasn't been called" );
- }
- return self;
- }
- /* eslint-disable no-proto */
- function makeReactive( obj ) {
- var proto = obj.__proto__;
- Object.defineProperty( obj, '__proto__', {
- get: function get() {
- return proto;
- },
- set: function set( value ) {
- proto.__proto__ = value;
- },
- } );
- }
- var Dom7 = /*#__PURE__*/ ( function ( _Array ) {
- _inheritsLoose( Dom7, _Array );
- function Dom7( items ) {
- var _this;
- _this = _Array.call.apply( _Array, [ this ].concat( items ) ) || this;
- makeReactive( _assertThisInitialized( _this ) );
- return _this;
- }
- return Dom7;
- } )( /*#__PURE__*/ _wrapNativeSuper( Array ) );
- function arrayFlat( arr ) {
- if ( arr === void 0 ) {
- arr = [];
- }
- var res = [];
- arr.forEach( function ( el ) {
- if ( Array.isArray( el ) ) {
- res.push.apply( res, arrayFlat( el ) );
- } else {
- res.push( el );
- }
- } );
- return res;
- }
- function arrayFilter( arr, callback ) {
- return Array.prototype.filter.call( arr, callback );
- }
- function arrayUnique( arr ) {
- var uniqueArray = [];
- for ( var i = 0; i < arr.length; i += 1 ) {
- if ( uniqueArray.indexOf( arr[ i ] ) === -1 ) uniqueArray.push( arr[ i ] );
- }
- return uniqueArray;
- }
- function qsa( selector, context ) {
- if ( typeof selector !== 'string' ) {
- return [ selector ];
- }
- var a = [];
- var res = context.querySelectorAll( selector );
- for ( var i = 0; i < res.length; i += 1 ) {
- a.push( res[ i ] );
- }
- return a;
- }
- function $( selector, context ) {
- var window = getWindow();
- var document = getDocument();
- var arr = [];
- if ( ! context && selector instanceof Dom7 ) {
- return selector;
- }
- if ( ! selector ) {
- return new Dom7( arr );
- }
- if ( typeof selector === 'string' ) {
- var html = selector.trim();
- if ( html.indexOf( '<' ) >= 0 && html.indexOf( '>' ) >= 0 ) {
- var toCreate = 'div';
- if ( html.indexOf( '<li' ) === 0 ) toCreate = 'ul';
- if ( html.indexOf( '<tr' ) === 0 ) toCreate = 'tbody';
- if ( html.indexOf( '<td' ) === 0 || html.indexOf( '<th' ) === 0 ) toCreate = 'tr';
- if ( html.indexOf( '<tbody' ) === 0 ) toCreate = 'table';
- if ( html.indexOf( '<option' ) === 0 ) toCreate = 'select';
- var tempParent = document.createElement( toCreate );
- tempParent.innerHTML = html;
- for ( var i = 0; i < tempParent.childNodes.length; i += 1 ) {
- arr.push( tempParent.childNodes[ i ] );
- }
- } else {
- arr = qsa( selector.trim(), context || document );
- } // arr = qsa(selector, document);
- } else if ( selector.nodeType || selector === window || selector === document ) {
- arr.push( selector );
- } else if ( Array.isArray( selector ) ) {
- if ( selector instanceof Dom7 ) return selector;
- arr = selector;
- }
- return new Dom7( arrayUnique( arr ) );
- }
- $.fn = Dom7.prototype;
- function addClass() {
- for (
- var _len = arguments.length, classes = new Array( _len ), _key = 0;
- _key < _len;
- _key++
- ) {
- classes[ _key ] = arguments[ _key ];
- }
- var classNames = arrayFlat(
- classes.map( function ( c ) {
- return c.split( ' ' );
- } )
- );
- this.forEach( function ( el ) {
- var _el$classList;
- ( _el$classList = el.classList ).add.apply( _el$classList, classNames );
- } );
- return this;
- }
- function removeClass() {
- for (
- var _len2 = arguments.length, classes = new Array( _len2 ), _key2 = 0;
- _key2 < _len2;
- _key2++
- ) {
- classes[ _key2 ] = arguments[ _key2 ];
- }
- var classNames = arrayFlat(
- classes.map( function ( c ) {
- return c.split( ' ' );
- } )
- );
- this.forEach( function ( el ) {
- var _el$classList2;
- ( _el$classList2 = el.classList ).remove.apply( _el$classList2, classNames );
- } );
- return this;
- }
- function toggleClass() {
- for (
- var _len3 = arguments.length, classes = new Array( _len3 ), _key3 = 0;
- _key3 < _len3;
- _key3++
- ) {
- classes[ _key3 ] = arguments[ _key3 ];
- }
- var classNames = arrayFlat(
- classes.map( function ( c ) {
- return c.split( ' ' );
- } )
- );
- this.forEach( function ( el ) {
- classNames.forEach( function ( className ) {
- el.classList.toggle( className );
- } );
- } );
- }
- function hasClass() {
- for (
- var _len4 = arguments.length, classes = new Array( _len4 ), _key4 = 0;
- _key4 < _len4;
- _key4++
- ) {
- classes[ _key4 ] = arguments[ _key4 ];
- }
- var classNames = arrayFlat(
- classes.map( function ( c ) {
- return c.split( ' ' );
- } )
- );
- return (
- arrayFilter( this, function ( el ) {
- return (
- classNames.filter( function ( className ) {
- return el.classList.contains( className );
- } ).length > 0
- );
- } ).length > 0
- );
- }
- function attr( attrs, value ) {
- if ( arguments.length === 1 && typeof attrs === 'string' ) {
- // Get attr
- if ( this[ 0 ] ) return this[ 0 ].getAttribute( attrs );
- return undefined;
- } // Set attrs
- for ( var i = 0; i < this.length; i += 1 ) {
- if ( arguments.length === 2 ) {
- // String
- this[ i ].setAttribute( attrs, value );
- } else {
- // Object
- for ( var attrName in attrs ) {
- this[ i ][ attrName ] = attrs[ attrName ];
- this[ i ].setAttribute( attrName, attrs[ attrName ] );
- }
- }
- }
- return this;
- }
- function removeAttr( attr ) {
- for ( var i = 0; i < this.length; i += 1 ) {
- this[ i ].removeAttribute( attr );
- }
- return this;
- }
- function transform( transform ) {
- for ( var i = 0; i < this.length; i += 1 ) {
- this[ i ].style.transform = transform;
- }
- return this;
- }
- function transition$1( duration ) {
- for ( var i = 0; i < this.length; i += 1 ) {
- this[ i ].style.transitionDuration =
- typeof duration !== 'string' ? duration + 'ms' : duration;
- }
- return this;
- }
- function on() {
- for (
- var _len5 = arguments.length, args = new Array( _len5 ), _key5 = 0;
- _key5 < _len5;
- _key5++
- ) {
- args[ _key5 ] = arguments[ _key5 ];
- }
- var eventType = args[ 0 ],
- targetSelector = args[ 1 ],
- listener = args[ 2 ],
- capture = args[ 3 ];
- if ( typeof args[ 1 ] === 'function' ) {
- eventType = args[ 0 ];
- listener = args[ 1 ];
- capture = args[ 2 ];
- targetSelector = undefined;
- }
- if ( ! capture ) capture = false;
- function handleLiveEvent( e ) {
- var target = e.target;
- if ( ! target ) return;
- var eventData = e.target.dom7EventData || [];
- if ( eventData.indexOf( e ) < 0 ) {
- eventData.unshift( e );
- }
- if ( $( target ).is( targetSelector ) ) listener.apply( target, eventData );
- else {
- var _parents = $( target ).parents(); // eslint-disable-line
- for ( var k = 0; k < _parents.length; k += 1 ) {
- if ( $( _parents[ k ] ).is( targetSelector ) ) listener.apply( _parents[ k ], eventData );
- }
- }
- }
- function handleEvent( e ) {
- var eventData = e && e.target ? e.target.dom7EventData || [] : [];
- if ( eventData.indexOf( e ) < 0 ) {
- eventData.unshift( e );
- }
- listener.apply( this, eventData );
- }
- var events = eventType.split( ' ' );
- var j;
- for ( var i = 0; i < this.length; i += 1 ) {
- var el = this[ i ];
- if ( ! targetSelector ) {
- for ( j = 0; j < events.length; j += 1 ) {
- var event = events[ j ];
- if ( ! el.dom7Listeners ) el.dom7Listeners = {};
- if ( ! el.dom7Listeners[ event ] ) el.dom7Listeners[ event ] = [];
- el.dom7Listeners[ event ].push( {
- listener: listener,
- proxyListener: handleEvent,
- } );
- el.addEventListener( event, handleEvent, capture );
- }
- } else {
- // Live events
- for ( j = 0; j < events.length; j += 1 ) {
- var _event = events[ j ];
- if ( ! el.dom7LiveListeners ) el.dom7LiveListeners = {};
- if ( ! el.dom7LiveListeners[ _event ] ) el.dom7LiveListeners[ _event ] = [];
- el.dom7LiveListeners[ _event ].push( {
- listener: listener,
- proxyListener: handleLiveEvent,
- } );
- el.addEventListener( _event, handleLiveEvent, capture );
- }
- }
- }
- return this;
- }
- function off() {
- for (
- var _len6 = arguments.length, args = new Array( _len6 ), _key6 = 0;
- _key6 < _len6;
- _key6++
- ) {
- args[ _key6 ] = arguments[ _key6 ];
- }
- var eventType = args[ 0 ],
- targetSelector = args[ 1 ],
- listener = args[ 2 ],
- capture = args[ 3 ];
- if ( typeof args[ 1 ] === 'function' ) {
- eventType = args[ 0 ];
- listener = args[ 1 ];
- capture = args[ 2 ];
- targetSelector = undefined;
- }
- if ( ! capture ) capture = false;
- var events = eventType.split( ' ' );
- for ( var i = 0; i < events.length; i += 1 ) {
- var event = events[ i ];
- for ( var j = 0; j < this.length; j += 1 ) {
- var el = this[ j ];
- var handlers = void 0;
- if ( ! targetSelector && el.dom7Listeners ) {
- handlers = el.dom7Listeners[ event ];
- } else if ( targetSelector && el.dom7LiveListeners ) {
- handlers = el.dom7LiveListeners[ event ];
- }
- if ( handlers && handlers.length ) {
- for ( var k = handlers.length - 1; k >= 0; k -= 1 ) {
- var handler = handlers[ k ];
- if ( listener && handler.listener === listener ) {
- el.removeEventListener( event, handler.proxyListener, capture );
- handlers.splice( k, 1 );
- } else if (
- listener &&
- handler.listener &&
- handler.listener.dom7proxy &&
- handler.listener.dom7proxy === listener
- ) {
- el.removeEventListener( event, handler.proxyListener, capture );
- handlers.splice( k, 1 );
- } else if ( ! listener ) {
- el.removeEventListener( event, handler.proxyListener, capture );
- handlers.splice( k, 1 );
- }
- }
- }
- }
- }
- return this;
- }
- function trigger() {
- var window = getWindow();
- for (
- var _len9 = arguments.length, args = new Array( _len9 ), _key9 = 0;
- _key9 < _len9;
- _key9++
- ) {
- args[ _key9 ] = arguments[ _key9 ];
- }
- var events = args[ 0 ].split( ' ' );
- var eventData = args[ 1 ];
- for ( var i = 0; i < events.length; i += 1 ) {
- var event = events[ i ];
- for ( var j = 0; j < this.length; j += 1 ) {
- var el = this[ j ];
- if ( window.CustomEvent ) {
- var evt = new window.CustomEvent( event, {
- detail: eventData,
- bubbles: true,
- cancelable: true,
- } );
- el.dom7EventData = args.filter( function ( data, dataIndex ) {
- return dataIndex > 0;
- } );
- el.dispatchEvent( evt );
- el.dom7EventData = [];
- delete el.dom7EventData;
- }
- }
- }
- return this;
- }
- function transitionEnd$1( callback ) {
- var dom = this;
- function fireCallBack( e ) {
- if ( e.target !== this ) return;
- callback.call( this, e );
- dom.off( 'transitionend', fireCallBack );
- }
- if ( callback ) {
- dom.on( 'transitionend', fireCallBack );
- }
- return this;
- }
- function outerWidth( includeMargins ) {
- if ( this.length > 0 ) {
- if ( includeMargins ) {
- var _styles = this.styles();
- return (
- this[ 0 ].offsetWidth +
- parseFloat( _styles.getPropertyValue( 'margin-right' ) ) +
- parseFloat( _styles.getPropertyValue( 'margin-left' ) )
- );
- }
- return this[ 0 ].offsetWidth;
- }
- return null;
- }
- function outerHeight( includeMargins ) {
- if ( this.length > 0 ) {
- if ( includeMargins ) {
- var _styles2 = this.styles();
- return (
- this[ 0 ].offsetHeight +
- parseFloat( _styles2.getPropertyValue( 'margin-top' ) ) +
- parseFloat( _styles2.getPropertyValue( 'margin-bottom' ) )
- );
- }
- return this[ 0 ].offsetHeight;
- }
- return null;
- }
- function offset() {
- if ( this.length > 0 ) {
- var window = getWindow();
- var document = getDocument();
- var el = this[ 0 ];
- var box = el.getBoundingClientRect();
- var body = document.body;
- var clientTop = el.clientTop || body.clientTop || 0;
- var clientLeft = el.clientLeft || body.clientLeft || 0;
- var scrollTop = el === window ? window.scrollY : el.scrollTop;
- var scrollLeft = el === window ? window.scrollX : el.scrollLeft;
- return {
- top: box.top + scrollTop - clientTop,
- left: box.left + scrollLeft - clientLeft,
- };
- }
- return null;
- }
- function styles() {
- var window = getWindow();
- if ( this[ 0 ] ) return window.getComputedStyle( this[ 0 ], null );
- return {};
- }
- function css( props, value ) {
- var window = getWindow();
- var i;
- if ( arguments.length === 1 ) {
- if ( typeof props === 'string' ) {
- // .css('width')
- if ( this[ 0 ] )
- return window.getComputedStyle( this[ 0 ], null ).getPropertyValue( props );
- } else {
- // .css({ width: '100px' })
- for ( i = 0; i < this.length; i += 1 ) {
- for ( var _prop in props ) {
- this[ i ].style[ _prop ] = props[ _prop ];
- }
- }
- return this;
- }
- }
- if ( arguments.length === 2 && typeof props === 'string' ) {
- // .css('width', '100px')
- for ( i = 0; i < this.length; i += 1 ) {
- this[ i ].style[ props ] = value;
- }
- return this;
- }
- return this;
- }
- function each( callback ) {
- if ( ! callback ) return this;
- this.forEach( function ( el, index ) {
- callback.apply( el, [ el, index ] );
- } );
- return this;
- }
- function filter( callback ) {
- var result = arrayFilter( this, callback );
- return $( result );
- }
- function html( html ) {
- if ( typeof html === 'undefined' ) {
- return this[ 0 ] ? this[ 0 ].innerHTML : null;
- }
- for ( var i = 0; i < this.length; i += 1 ) {
- this[ i ].innerHTML = html;
- }
- return this;
- }
- function text( text ) {
- if ( typeof text === 'undefined' ) {
- return this[ 0 ] ? this[ 0 ].textContent.trim() : null;
- }
- for ( var i = 0; i < this.length; i += 1 ) {
- this[ i ].textContent = text;
- }
- return this;
- }
- function is( selector ) {
- var window = getWindow();
- var document = getDocument();
- var el = this[ 0 ];
- var compareWith;
- var i;
- if ( ! el || typeof selector === 'undefined' ) return false;
- if ( typeof selector === 'string' ) {
- if ( el.matches ) return el.matches( selector );
- if ( el.webkitMatchesSelector ) return el.webkitMatchesSelector( selector );
- if ( el.msMatchesSelector ) return el.msMatchesSelector( selector );
- compareWith = $( selector );
- for ( i = 0; i < compareWith.length; i += 1 ) {
- if ( compareWith[ i ] === el ) return true;
- }
- return false;
- }
- if ( selector === document ) {
- return el === document;
- }
- if ( selector === window ) {
- return el === window;
- }
- if ( selector.nodeType || selector instanceof Dom7 ) {
- compareWith = selector.nodeType ? [ selector ] : selector;
- for ( i = 0; i < compareWith.length; i += 1 ) {
- if ( compareWith[ i ] === el ) return true;
- }
- return false;
- }
- return false;
- }
- function index() {
- var child = this[ 0 ];
- var i;
- if ( child ) {
- i = 0; // eslint-disable-next-line
- while ( ( child = child.previousSibling ) !== null ) {
- if ( child.nodeType === 1 ) i += 1;
- }
- return i;
- }
- return undefined;
- }
- function eq( index ) {
- if ( typeof index === 'undefined' ) return this;
- var length = this.length;
- if ( index > length - 1 ) {
- return $( [] );
- }
- if ( index < 0 ) {
- var returnIndex = length + index;
- if ( returnIndex < 0 ) return $( [] );
- return $( [ this[ returnIndex ] ] );
- }
- return $( [ this[ index ] ] );
- }
- function append() {
- var newChild;
- var document = getDocument();
- for ( var k = 0; k < arguments.length; k += 1 ) {
- newChild = k < 0 || arguments.length <= k ? undefined : arguments[ k ];
- for ( var i = 0; i < this.length; i += 1 ) {
- if ( typeof newChild === 'string' ) {
- var tempDiv = document.createElement( 'div' );
- tempDiv.innerHTML = newChild;
- while ( tempDiv.firstChild ) {
- this[ i ].appendChild( tempDiv.firstChild );
- }
- } else if ( newChild instanceof Dom7 ) {
- for ( var j = 0; j < newChild.length; j += 1 ) {
- this[ i ].appendChild( newChild[ j ] );
- }
- } else {
- this[ i ].appendChild( newChild );
- }
- }
- }
- return this;
- }
- function prepend( newChild ) {
- var document = getDocument();
- var i;
- var j;
- for ( i = 0; i < this.length; i += 1 ) {
- if ( typeof newChild === 'string' ) {
- var tempDiv = document.createElement( 'div' );
- tempDiv.innerHTML = newChild;
- for ( j = tempDiv.childNodes.length - 1; j >= 0; j -= 1 ) {
- this[ i ].insertBefore( tempDiv.childNodes[ j ], this[ i ].childNodes[ 0 ] );
- }
- } else if ( newChild instanceof Dom7 ) {
- for ( j = 0; j < newChild.length; j += 1 ) {
- this[ i ].insertBefore( newChild[ j ], this[ i ].childNodes[ 0 ] );
- }
- } else {
- this[ i ].insertBefore( newChild, this[ i ].childNodes[ 0 ] );
- }
- }
- return this;
- }
- function next( selector ) {
- if ( this.length > 0 ) {
- if ( selector ) {
- if ( this[ 0 ].nextElementSibling && $( this[ 0 ].nextElementSibling ).is( selector ) ) {
- return $( [ this[ 0 ].nextElementSibling ] );
- }
- return $( [] );
- }
- if ( this[ 0 ].nextElementSibling ) return $( [ this[ 0 ].nextElementSibling ] );
- return $( [] );
- }
- return $( [] );
- }
- function nextAll( selector ) {
- var nextEls = [];
- var el = this[ 0 ];
- if ( ! el ) return $( [] );
- while ( el.nextElementSibling ) {
- var _next = el.nextElementSibling; // eslint-disable-line
- if ( selector ) {
- if ( $( _next ).is( selector ) ) nextEls.push( _next );
- } else nextEls.push( _next );
- el = _next;
- }
- return $( nextEls );
- }
- function prev( selector ) {
- if ( this.length > 0 ) {
- var el = this[ 0 ];
- if ( selector ) {
- if ( el.previousElementSibling && $( el.previousElementSibling ).is( selector ) ) {
- return $( [ el.previousElementSibling ] );
- }
- return $( [] );
- }
- if ( el.previousElementSibling ) return $( [ el.previousElementSibling ] );
- return $( [] );
- }
- return $( [] );
- }
- function prevAll( selector ) {
- var prevEls = [];
- var el = this[ 0 ];
- if ( ! el ) return $( [] );
- while ( el.previousElementSibling ) {
- var _prev = el.previousElementSibling; // eslint-disable-line
- if ( selector ) {
- if ( $( _prev ).is( selector ) ) prevEls.push( _prev );
- } else prevEls.push( _prev );
- el = _prev;
- }
- return $( prevEls );
- }
- function parent( selector ) {
- var parents = []; // eslint-disable-line
- for ( var i = 0; i < this.length; i += 1 ) {
- if ( this[ i ].parentNode !== null ) {
- if ( selector ) {
- if ( $( this[ i ].parentNode ).is( selector ) ) parents.push( this[ i ].parentNode );
- } else {
- parents.push( this[ i ].parentNode );
- }
- }
- }
- return $( parents );
- }
- function parents( selector ) {
- var parents = []; // eslint-disable-line
- for ( var i = 0; i < this.length; i += 1 ) {
- var _parent = this[ i ].parentNode; // eslint-disable-line
- while ( _parent ) {
- if ( selector ) {
- if ( $( _parent ).is( selector ) ) parents.push( _parent );
- } else {
- parents.push( _parent );
- }
- _parent = _parent.parentNode;
- }
- }
- return $( parents );
- }
- function closest( selector ) {
- var closest = this; // eslint-disable-line
- if ( typeof selector === 'undefined' ) {
- return $( [] );
- }
- if ( ! closest.is( selector ) ) {
- closest = closest.parents( selector ).eq( 0 );
- }
- return closest;
- }
- function find( selector ) {
- var foundElements = [];
- for ( var i = 0; i < this.length; i += 1 ) {
- var found = this[ i ].querySelectorAll( selector );
- for ( var j = 0; j < found.length; j += 1 ) {
- foundElements.push( found[ j ] );
- }
- }
- return $( foundElements );
- }
- function children( selector ) {
- var children = []; // eslint-disable-line
- for ( var i = 0; i < this.length; i += 1 ) {
- var childNodes = this[ i ].children;
- for ( var j = 0; j < childNodes.length; j += 1 ) {
- if ( ! selector || $( childNodes[ j ] ).is( selector ) ) {
- children.push( childNodes[ j ] );
- }
- }
- }
- return $( children );
- }
- function remove() {
- for ( var i = 0; i < this.length; i += 1 ) {
- if ( this[ i ].parentNode ) this[ i ].parentNode.removeChild( this[ i ] );
- }
- return this;
- }
- var Methods = {
- addClass: addClass,
- removeClass: removeClass,
- hasClass: hasClass,
- toggleClass: toggleClass,
- attr: attr,
- removeAttr: removeAttr,
- transform: transform,
- transition: transition$1,
- on: on,
- off: off,
- trigger: trigger,
- transitionEnd: transitionEnd$1,
- outerWidth: outerWidth,
- outerHeight: outerHeight,
- styles: styles,
- offset: offset,
- css: css,
- each: each,
- html: html,
- text: text,
- is: is,
- index: index,
- eq: eq,
- append: append,
- prepend: prepend,
- next: next,
- nextAll: nextAll,
- prev: prev,
- prevAll: prevAll,
- parent: parent,
- parents: parents,
- closest: closest,
- find: find,
- children: children,
- filter: filter,
- remove: remove,
- };
- Object.keys( Methods ).forEach( function ( methodName ) {
- Object.defineProperty( $.fn, methodName, {
- value: Methods[ methodName ],
- writable: true,
- } );
- } );
- function deleteProps( obj ) {
- var object = obj;
- Object.keys( object ).forEach( function ( key ) {
- try {
- object[ key ] = null;
- } catch ( e ) {
- // no getter for object
- }
- try {
- delete object[ key ];
- } catch ( e ) {
- // something got wrong
- }
- } );
- }
- function nextTick( callback, delay ) {
- if ( delay === void 0 ) {
- delay = 0;
- }
- return setTimeout( callback, delay );
- }
- function now() {
- return Date.now();
- }
- function getComputedStyle$1( el ) {
- var window = getWindow();
- var style;
- if ( window.getComputedStyle ) {
- style = window.getComputedStyle( el, null );
- }
- if ( ! style && el.currentStyle ) {
- style = el.currentStyle;
- }
- if ( ! style ) {
- style = el.style;
- }
- return style;
- }
- function getTranslate( el, axis ) {
- if ( axis === void 0 ) {
- axis = 'x';
- }
- var window = getWindow();
- var matrix;
- var curTransform;
- var transformMatrix;
- var curStyle = getComputedStyle$1( el );
- if ( window.WebKitCSSMatrix ) {
- curTransform = curStyle.transform || curStyle.webkitTransform;
- if ( curTransform.split( ',' ).length > 6 ) {
- curTransform = curTransform
- .split( ', ' )
- .map( function ( a ) {
- return a.replace( ',', '.' );
- } )
- .join( ', ' );
- } // Some old versions of Webkit choke when 'none' is passed; pass
- // empty string instead in this case
- transformMatrix = new window.WebKitCSSMatrix( curTransform === 'none' ? '' : curTransform );
- } else {
- transformMatrix =
- curStyle.MozTransform ||
- curStyle.OTransform ||
- curStyle.MsTransform ||
- curStyle.msTransform ||
- curStyle.transform ||
- curStyle.getPropertyValue( 'transform' ).replace( 'translate(', 'matrix(1, 0, 0, 1,' );
- matrix = transformMatrix.toString().split( ',' );
- }
- if ( axis === 'x' ) {
- // Latest Chrome and webkits Fix
- if ( window.WebKitCSSMatrix ) curTransform = transformMatrix.m41;
- // Crazy IE10 Matrix
- else if ( matrix.length === 16 ) curTransform = parseFloat( matrix[ 12 ] );
- // Normal Browsers
- else curTransform = parseFloat( matrix[ 4 ] );
- }
- if ( axis === 'y' ) {
- // Latest Chrome and webkits Fix
- if ( window.WebKitCSSMatrix ) curTransform = transformMatrix.m42;
- // Crazy IE10 Matrix
- else if ( matrix.length === 16 ) curTransform = parseFloat( matrix[ 13 ] );
- // Normal Browsers
- else curTransform = parseFloat( matrix[ 5 ] );
- }
- return curTransform || 0;
- }
- function isObject( o ) {
- return (
- typeof o === 'object' &&
- o !== null &&
- o.constructor &&
- Object.prototype.toString.call( o ).slice( 8, -1 ) === 'Object'
- );
- }
- function extend() {
- var to = Object( arguments.length <= 0 ? undefined : arguments[ 0 ] );
- var noExtend = [ '__proto__', 'constructor', 'prototype' ]; // eslint-disable-next-line
- var HTMLElement = typeof window !== 'undefined' ? window.HTMLElement : undefined;
- for ( var i = 1; i < arguments.length; i += 1 ) {
- var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[ i ];
- if (
- nextSource !== undefined &&
- nextSource !== null &&
- ! ( HTMLElement && nextSource instanceof HTMLElement )
- ) {
- var keysArray = Object.keys( Object( nextSource ) ).filter( function ( key ) {
- return noExtend.indexOf( key ) < 0;
- } );
- for ( var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1 ) {
- var nextKey = keysArray[ nextIndex ];
- var desc = Object.getOwnPropertyDescriptor( nextSource, nextKey );
- if ( desc !== undefined && desc.enumerable ) {
- if ( isObject( to[ nextKey ] ) && isObject( nextSource[ nextKey ] ) ) {
- if ( nextSource[ nextKey ].__swiper__ ) {
- to[ nextKey ] = nextSource[ nextKey ];
- } else {
- extend( to[ nextKey ], nextSource[ nextKey ] );
- }
- } else if ( ! isObject( to[ nextKey ] ) && isObject( nextSource[ nextKey ] ) ) {
- to[ nextKey ] = {};
- if ( nextSource[ nextKey ].__swiper__ ) {
- to[ nextKey ] = nextSource[ nextKey ];
- } else {
- extend( to[ nextKey ], nextSource[ nextKey ] );
- }
- } else {
- to[ nextKey ] = nextSource[ nextKey ];
- }
- }
- }
- }
- }
- return to;
- }
- function bindModuleMethods( instance, obj ) {
- Object.keys( obj ).forEach( function ( key ) {
- if ( isObject( obj[ key ] ) ) {
- Object.keys( obj[ key ] ).forEach( function ( subKey ) {
- if ( typeof obj[ key ][ subKey ] === 'function' ) {
- obj[ key ][ subKey ] = obj[ key ][ subKey ].bind( instance );
- }
- } );
- }
- instance[ key ] = obj[ key ];
- } );
- }
- function classesToSelector( classes ) {
- if ( classes === void 0 ) {
- classes = '';
- }
- return (
- '.' +
- classes
- .trim()
- .replace( /([\.:\/])/g, '\\$1' ) // eslint-disable-line
- .replace( / /g, '.' )
- );
- }
- function createElementIfNotDefined( $container, params, createElements, checkProps ) {
- var document = getDocument();
- if ( createElements ) {
- Object.keys( checkProps ).forEach( function ( key ) {
- if ( ! params[ key ] && params.auto === true ) {
- var element = document.createElement( 'div' );
- element.className = checkProps[ key ];
- $container.append( element );
- params[ key ] = element;
- }
- } );
- }
- return params;
- }
- var support;
- function calcSupport() {
- var window = getWindow();
- var document = getDocument();
- return {
- touch: !! (
- 'ontouchstart' in window ||
- ( window.DocumentTouch && document instanceof window.DocumentTouch )
- ),
- pointerEvents:
- !! window.PointerEvent &&
- 'maxTouchPoints' in window.navigator &&
- window.navigator.maxTouchPoints >= 0,
- observer: ( function checkObserver() {
- return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
- } )(),
- passiveListener: ( function checkPassiveListener() {
- var supportsPassive = false;
- try {
- var opts = Object.defineProperty( {}, 'passive', {
- // eslint-disable-next-line
- get: function get() {
- supportsPassive = true;
- },
- } );
- window.addEventListener( 'testPassiveListener', null, opts );
- } catch ( e ) {
- // No support
- }
- return supportsPassive;
- } )(),
- gestures: ( function checkGestures() {
- return 'ongesturestart' in window;
- } )(),
- };
- }
- function getSupport() {
- if ( ! support ) {
- support = calcSupport();
- }
- return support;
- }
- var device;
- function calcDevice( _temp ) {
- var _ref = _temp === void 0 ? {} : _temp,
- userAgent = _ref.userAgent;
- var support = getSupport();
- var window = getWindow();
- var platform = window.navigator.platform;
- var ua = userAgent || window.navigator.userAgent;
- var device = {
- ios: false,
- android: false,
- };
- var screenWidth = window.screen.width;
- var screenHeight = window.screen.height;
- var android = ua.match( /(Android);?[\s\/]+([\d.]+)?/ ); // eslint-disable-line
- var ipad = ua.match( /(iPad).*OS\s([\d_]+)/ );
- var ipod = ua.match( /(iPod)(.*OS\s([\d_]+))?/ );
- var iphone = ! ipad && ua.match( /(iPhone\sOS|iOS)\s([\d_]+)/ );
- var windows = platform === 'Win32';
- var macos = platform === 'MacIntel'; // iPadOs 13 fix
- var iPadScreens = [
- '1024x1366',
- '1366x1024',
- '834x1194',
- '1194x834',
- '834x1112',
- '1112x834',
- '768x1024',
- '1024x768',
- '820x1180',
- '1180x820',
- '810x1080',
- '1080x810',
- ];
- if (
- ! ipad &&
- macos &&
- support.touch &&
- iPadScreens.indexOf( screenWidth + 'x' + screenHeight ) >= 0
- ) {
- ipad = ua.match( /(Version)\/([\d.]+)/ );
- if ( ! ipad ) ipad = [ 0, 1, '13_0_0' ];
- macos = false;
- } // Android
- if ( android && ! windows ) {
- device.os = 'android';
- device.android = true;
- }
- if ( ipad || iphone || ipod ) {
- device.os = 'ios';
- device.ios = true;
- } // Export object
- return device;
- }
- function getDevice( overrides ) {
- if ( overrides === void 0 ) {
- overrides = {};
- }
- if ( ! device ) {
- device = calcDevice( overrides );
- }
- return device;
- }
- var browser;
- function calcBrowser() {
- var window = getWindow();
- function isSafari() {
- var ua = window.navigator.userAgent.toLowerCase();
- return (
- ua.indexOf( 'safari' ) >= 0 && ua.indexOf( 'chrome' ) < 0 && ua.indexOf( 'android' ) < 0
- );
- }
- return {
- isEdge: !! window.navigator.userAgent.match( /Edge/g ),
- isSafari: isSafari(),
- isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test( window.navigator.userAgent ),
- };
- }
- function getBrowser() {
- if ( ! browser ) {
- browser = calcBrowser();
- }
- return browser;
- }
- var supportsResizeObserver = function supportsResizeObserver() {
- var window = getWindow();
- return typeof window.ResizeObserver !== 'undefined';
- };
- var Resize = {
- name: 'resize',
- create: function create() {
- var swiper = this;
- extend( swiper, {
- resize: {
- observer: null,
- createObserver: function createObserver() {
- if ( ! swiper || swiper.destroyed || ! swiper.initialized ) return;
- swiper.resize.observer = new ResizeObserver( function ( entries ) {
- var width = swiper.width,
- height = swiper.height;
- var newWidth = width;
- var newHeight = height;
- entries.forEach( function ( _ref ) {
- var contentBoxSize = _ref.contentBoxSize,
- contentRect = _ref.contentRect,
- target = _ref.target;
- if ( target && target !== swiper.el ) return;
- newWidth = contentRect
- ? contentRect.width
- : ( contentBoxSize[ 0 ] || contentBoxSize ).inlineSize;
- newHeight = contentRect
- ? contentRect.height
- : ( contentBoxSize[ 0 ] || contentBoxSize ).blockSize;
- } );
- if ( newWidth !== width || newHeight !== height ) {
- swiper.resize.resizeHandler();
- }
- } );
- swiper.resize.observer.observe( swiper.el );
- },
- removeObserver: function removeObserver() {
- if ( swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el ) {
- swiper.resize.observer.unobserve( swiper.el );
- swiper.resize.observer = null;
- }
- },
- resizeHandler: function resizeHandler() {
- if ( ! swiper || swiper.destroyed || ! swiper.initialized ) return;
- swiper.emit( 'beforeResize' );
- swiper.emit( 'resize' );
- },
- orientationChangeHandler: function orientationChangeHandler() {
- if ( ! swiper || swiper.destroyed || ! swiper.initialized ) return;
- swiper.emit( 'orientationchange' );
- },
- },
- } );
- },
- on: {
- init: function init( swiper ) {
- var window = getWindow();
- if ( swiper.params.resizeObserver && supportsResizeObserver() ) {
- swiper.resize.createObserver();
- return;
- } // Emit resize
- window.addEventListener( 'resize', swiper.resize.resizeHandler ); // Emit orientationchange
- window.addEventListener( 'orientationchange', swiper.resize.orientationChangeHandler );
- },
- destroy: function destroy( swiper ) {
- var window = getWindow();
- swiper.resize.removeObserver();
- window.removeEventListener( 'resize', swiper.resize.resizeHandler );
- window.removeEventListener( 'orientationchange', swiper.resize.orientationChangeHandler );
- },
- },
- };
- var Observer = {
- attach: function attach( target, options ) {
- if ( options === void 0 ) {
- options = {};
- }
- var window = getWindow();
- var swiper = this;
- var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
- var observer = new ObserverFunc( function ( mutations ) {
- // The observerUpdate event should only be triggered
- // once despite the number of mutations. Additional
- // triggers are redundant and are very costly
- if ( mutations.length === 1 ) {
- swiper.emit( 'observerUpdate', mutations[ 0 ] );
- return;
- }
- var observerUpdate = function observerUpdate() {
- swiper.emit( 'observerUpdate', mutations[ 0 ] );
- };
- if ( window.requestAnimationFrame ) {
- window.requestAnimationFrame( observerUpdate );
- } else {
- window.setTimeout( observerUpdate, 0 );
- }
- } );
- observer.observe( target, {
- attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
- childList: typeof options.childList === 'undefined' ? true : options.childList,
- characterData: typeof options.characterData === 'undefined' ? true : options.characterData,
- } );
- swiper.observer.observers.push( observer );
- },
- init: function init() {
- var swiper = this;
- if ( ! swiper.support.observer || ! swiper.params.observer ) return;
- if ( swiper.params.observeParents ) {
- var containerParents = swiper.$el.parents();
- for ( var i = 0; i < containerParents.length; i += 1 ) {
- swiper.observer.attach( containerParents[ i ] );
- }
- } // Observe container
- swiper.observer.attach( swiper.$el[ 0 ], {
- childList: swiper.params.observeSlideChildren,
- } ); // Observe wrapper
- swiper.observer.attach( swiper.$wrapperEl[ 0 ], {
- attributes: false,
- } );
- },
- destroy: function destroy() {
- var swiper = this;
- swiper.observer.observers.forEach( function ( observer ) {
- observer.disconnect();
- } );
- swiper.observer.observers = [];
- },
- };
- var Observer$1 = {
- name: 'observer',
- params: {
- observer: false,
- observeParents: false,
- observeSlideChildren: false,
- },
- create: function create() {
- var swiper = this;
- bindModuleMethods( swiper, {
- observer: _extends( {}, Observer, {
- observers: [],
- } ),
- } );
- },
- on: {
- init: function init( swiper ) {
- swiper.observer.init();
- },
- destroy: function destroy( swiper ) {
- swiper.observer.destroy();
- },
- },
- };
- var modular = {
- useParams: function useParams( instanceParams ) {
- var instance = this;
- if ( ! instance.modules ) return;
- Object.keys( instance.modules ).forEach( function ( moduleName ) {
- var module = instance.modules[ moduleName ]; // Extend params
- if ( module.params ) {
- extend( instanceParams, module.params );
- }
- } );
- },
- useModules: function useModules( modulesParams ) {
- if ( modulesParams === void 0 ) {
- modulesParams = {};
- }
- var instance = this;
- if ( ! instance.modules ) return;
- Object.keys( instance.modules ).forEach( function ( moduleName ) {
- var module = instance.modules[ moduleName ];
- var moduleParams = modulesParams[ moduleName ] || {}; // Add event listeners
- if ( module.on && instance.on ) {
- Object.keys( module.on ).forEach( function ( moduleEventName ) {
- instance.on( moduleEventName, module.on[ moduleEventName ] );
- } );
- } // Module create callback
- if ( module.create ) {
- module.create.bind( instance )( moduleParams );
- }
- } );
- },
- };
- /* eslint-disable no-underscore-dangle */
- var eventsEmitter = {
- on: function on( events, handler, priority ) {
- var self = this;
- if ( typeof handler !== 'function' ) return self;
- var method = priority ? 'unshift' : 'push';
- events.split( ' ' ).forEach( function ( event ) {
- if ( ! self.eventsListeners[ event ] ) self.eventsListeners[ event ] = [];
- self.eventsListeners[ event ][ method ]( handler );
- } );
- return self;
- },
- once: function once( events, handler, priority ) {
- var self = this;
- if ( typeof handler !== 'function' ) return self;
- function onceHandler() {
- self.off( events, onceHandler );
- if ( onceHandler.__emitterProxy ) {
- delete onceHandler.__emitterProxy;
- }
- for (
- var _len = arguments.length, args = new Array( _len ), _key = 0;
- _key < _len;
- _key++
- ) {
- args[ _key ] = arguments[ _key ];
- }
- handler.apply( self, args );
- }
- onceHandler.__emitterProxy = handler;
- return self.on( events, onceHandler, priority );
- },
- onAny: function onAny( handler, priority ) {
- var self = this;
- if ( typeof handler !== 'function' ) return self;
- var method = priority ? 'unshift' : 'push';
- if ( self.eventsAnyListeners.indexOf( handler ) < 0 ) {
- self.eventsAnyListeners[ method ]( handler );
- }
- return self;
- },
- offAny: function offAny( handler ) {
- var self = this;
- if ( ! self.eventsAnyListeners ) return self;
- var index = self.eventsAnyListeners.indexOf( handler );
- if ( index >= 0 ) {
- self.eventsAnyListeners.splice( index, 1 );
- }
- return self;
- },
- off: function off( events, handler ) {
- var self = this;
- if ( ! self.eventsListeners ) return self;
- events.split( ' ' ).forEach( function ( event ) {
- if ( typeof handler === 'undefined' ) {
- self.eventsListeners[ event ] = [];
- } else if ( self.eventsListeners[ event ] ) {
- self.eventsListeners[ event ].forEach( function ( eventHandler, index ) {
- if (
- eventHandler === handler ||
- ( eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler )
- ) {
- self.eventsListeners[ event ].splice( index, 1 );
- }
- } );
- }
- } );
- return self;
- },
- emit: function emit() {
- var self = this;
- if ( ! self.eventsListeners ) return self;
- var events;
- var data;
- var context;
- for (
- var _len2 = arguments.length, args = new Array( _len2 ), _key2 = 0;
- _key2 < _len2;
- _key2++
- ) {
- args[ _key2 ] = arguments[ _key2 ];
- }
- if ( typeof args[ 0 ] === 'string' || Array.isArray( args[ 0 ] ) ) {
- events = args[ 0 ];
- data = args.slice( 1, args.length );
- context = self;
- } else {
- events = args[ 0 ].events;
- data = args[ 0 ].data;
- context = args[ 0 ].context || self;
- }
- data.unshift( context );
- var eventsArray = Array.isArray( events ) ? events : events.split( ' ' );
- eventsArray.forEach( function ( event ) {
- if ( self.eventsAnyListeners && self.eventsAnyListeners.length ) {
- self.eventsAnyListeners.forEach( function ( eventHandler ) {
- eventHandler.apply( context, [ event ].concat( data ) );
- } );
- }
- if ( self.eventsListeners && self.eventsListeners[ event ] ) {
- self.eventsListeners[ event ].forEach( function ( eventHandler ) {
- eventHandler.apply( context, data );
- } );
- }
- } );
- return self;
- },
- };
- function updateSize() {
- var swiper = this;
- var width;
- var height;
- var $el = swiper.$el;
- if ( typeof swiper.params.width !== 'undefined' && swiper.params.width !== null ) {
- width = swiper.params.width;
- } else {
- width = $el[ 0 ].clientWidth;
- }
- if ( typeof swiper.params.height !== 'undefined' && swiper.params.height !== null ) {
- height = swiper.params.height;
- } else {
- height = $el[ 0 ].clientHeight;
- }
- if ( ( width === 0 && swiper.isHorizontal() ) || ( height === 0 && swiper.isVertical() ) ) {
- return;
- } // Subtract paddings
- width =
- width -
- parseInt( $el.css( 'padding-left' ) || 0, 10 ) -
- parseInt( $el.css( 'padding-right' ) || 0, 10 );
- height =
- height -
- parseInt( $el.css( 'padding-top' ) || 0, 10 ) -
- parseInt( $el.css( 'padding-bottom' ) || 0, 10 );
- if ( Number.isNaN( width ) ) width = 0;
- if ( Number.isNaN( height ) ) height = 0;
- extend( swiper, {
- width: width,
- height: height,
- size: swiper.isHorizontal() ? width : height,
- } );
- }
- function updateSlides() {
- var swiper = this;
- function getDirectionLabel( property ) {
- if (swiper.isHorizontal()) {
- return property;
- } // prettier-ignore
- return {
- width: 'height',
- 'margin-top': 'margin-left',
- 'margin-bottom ': 'margin-right',
- 'margin-left': 'margin-top',
- 'margin-right': 'margin-bottom',
- 'padding-left': 'padding-top',
- 'padding-right': 'padding-bottom',
- marginRight: 'marginBottom',
- }[ property ];
- }
- function getDirectionPropertyValue( node, label ) {
- return parseFloat( node.getPropertyValue( getDirectionLabel( label ) ) || 0 );
- }
- var params = swiper.params;
- var $wrapperEl = swiper.$wrapperEl,
- swiperSize = swiper.size,
- rtl = swiper.rtlTranslate,
- wrongRTL = swiper.wrongRTL;
- var isVirtual = swiper.virtual && params.virtual.enabled;
- var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
- var slides = $wrapperEl.children( '.' + swiper.params.slideClass );
- var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
- var snapGrid = [];
- var slidesGrid = [];
- var slidesSizesGrid = [];
- var offsetBefore = params.slidesOffsetBefore;
- if ( typeof offsetBefore === 'function' ) {
- offsetBefore = params.slidesOffsetBefore.call( swiper );
- }
- var offsetAfter = params.slidesOffsetAfter;
- if ( typeof offsetAfter === 'function' ) {
- offsetAfter = params.slidesOffsetAfter.call( swiper );
- }
- var previousSnapGridLength = swiper.snapGrid.length;
- var previousSlidesGridLength = swiper.slidesGrid.length;
- var spaceBetween = params.spaceBetween;
- var slidePosition = -offsetBefore;
- var prevSlideSize = 0;
- var index = 0;
- if ( typeof swiperSize === 'undefined' ) {
- return;
- }
- if ( typeof spaceBetween === 'string' && spaceBetween.indexOf( '%' ) >= 0 ) {
- spaceBetween = ( parseFloat( spaceBetween.replace( '%', '' ) ) / 100 ) * swiperSize;
- }
- swiper.virtualSize = -spaceBetween; // reset margins
- if ( rtl )
- slides.css( {
- marginLeft: '',
- marginTop: '',
- } );
- else
- slides.css( {
- marginRight: '',
- marginBottom: '',
- } );
- var slidesNumberEvenToRows;
- if ( params.slidesPerColumn > 1 ) {
- if (
- Math.floor( slidesLength / params.slidesPerColumn ) ===
- slidesLength / swiper.params.slidesPerColumn
- ) {
- slidesNumberEvenToRows = slidesLength;
- } else {
- slidesNumberEvenToRows =
- Math.ceil( slidesLength / params.slidesPerColumn ) * params.slidesPerColumn;
- }
- if ( params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row' ) {
- slidesNumberEvenToRows = Math.max(
- slidesNumberEvenToRows,
- params.slidesPerView * params.slidesPerColumn
- );
- }
- } // Calc slides
- var slideSize;
- var slidesPerColumn = params.slidesPerColumn;
- var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
- var numFullColumns = Math.floor( slidesLength / params.slidesPerColumn );
- for ( var i = 0; i < slidesLength; i += 1 ) {
- slideSize = 0;
- var slide = slides.eq( i );
- if ( params.slidesPerColumn > 1 ) {
- // Set slides order
- var newSlideOrderIndex = void 0;
- var column = void 0;
- var row = void 0;
- if ( params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1 ) {
- var groupIndex = Math.floor( i / ( params.slidesPerGroup * params.slidesPerColumn ) );
- var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
- var columnsInGroup =
- groupIndex === 0
- ? params.slidesPerGroup
- : Math.min(
- Math.ceil(
- ( slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup ) /
- slidesPerColumn
- ),
- params.slidesPerGroup
- );
- row = Math.floor( slideIndexInGroup / columnsInGroup );
- column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
- newSlideOrderIndex = column + ( row * slidesNumberEvenToRows ) / slidesPerColumn;
- slide.css( {
- '-webkit-box-ordinal-group': newSlideOrderIndex,
- '-moz-box-ordinal-group': newSlideOrderIndex,
- '-ms-flex-order': newSlideOrderIndex,
- '-webkit-order': newSlideOrderIndex,
- order: newSlideOrderIndex,
- } );
- } else if ( params.slidesPerColumnFill === 'column' ) {
- column = Math.floor( i / slidesPerColumn );
- row = i - column * slidesPerColumn;
- if (
- column > numFullColumns ||
- ( column === numFullColumns && row === slidesPerColumn - 1 )
- ) {
- row += 1;
- if ( row >= slidesPerColumn ) {
- row = 0;
- column += 1;
- }
- }
- } else {
- row = Math.floor( i / slidesPerRow );
- column = i - row * slidesPerRow;
- }
- slide.css(
- getDirectionLabel( 'margin-top' ),
- row !== 0 ? params.spaceBetween && params.spaceBetween + 'px' : ''
- );
- }
- if ( slide.css( 'display' ) === 'none' ) continue; // eslint-disable-line
- if ( params.slidesPerView === 'auto' ) {
- var slideStyles = getComputedStyle( slide[ 0 ] );
- var currentTransform = slide[ 0 ].style.transform;
- var currentWebKitTransform = slide[ 0 ].style.webkitTransform;
- if ( currentTransform ) {
- slide[ 0 ].style.transform = 'none';
- }
- if ( currentWebKitTransform ) {
- slide[ 0 ].style.webkitTransform = 'none';
- }
- if ( params.roundLengths ) {
- slideSize = swiper.isHorizontal() ? slide.outerWidth( true ) : slide.outerHeight( true );
- } else {
- // eslint-disable-next-line
- var width = getDirectionPropertyValue( slideStyles, 'width' );
- var paddingLeft = getDirectionPropertyValue( slideStyles, 'padding-left' );
- var paddingRight = getDirectionPropertyValue( slideStyles, 'padding-right' );
- var marginLeft = getDirectionPropertyValue( slideStyles, 'margin-left' );
- var marginRight = getDirectionPropertyValue( slideStyles, 'margin-right' );
- var boxSizing = slideStyles.getPropertyValue( 'box-sizing' );
- if ( boxSizing && boxSizing === 'border-box' ) {
- slideSize = width + marginLeft + marginRight;
- } else {
- var _slide$ = slide[ 0 ],
- clientWidth = _slide$.clientWidth,
- offsetWidth = _slide$.offsetWidth;
- slideSize =
- width +
- paddingLeft +
- paddingRight +
- marginLeft +
- marginRight +
- ( offsetWidth - clientWidth );
- }
- }
- if ( currentTransform ) {
- slide[ 0 ].style.transform = currentTransform;
- }
- if ( currentWebKitTransform ) {
- slide[ 0 ].style.webkitTransform = currentWebKitTransform;
- }
- if ( params.roundLengths ) slideSize = Math.floor( slideSize );
- } else {
- slideSize =
- ( swiperSize - ( params.slidesPerView - 1 ) * spaceBetween ) / params.slidesPerView;
- if ( params.roundLengths ) slideSize = Math.floor( slideSize );
- if ( slides[ i ] ) {
- slides[ i ].style[ getDirectionLabel( 'width' ) ] = slideSize + 'px';
- }
- }
- if ( slides[ i ] ) {
- slides[ i ].swiperSlideSize = slideSize;
- }
- slidesSizesGrid.push( slideSize );
- if ( params.centeredSlides ) {
- slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
- if ( prevSlideSize === 0 && i !== 0 )
- slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
- if ( i === 0 ) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
- if ( Math.abs( slidePosition ) < 1 / 1000 ) slidePosition = 0;
- if ( params.roundLengths ) slidePosition = Math.floor( slidePosition );
- if ( index % params.slidesPerGroup === 0 ) snapGrid.push( slidePosition );
- slidesGrid.push( slidePosition );
- } else {
- if ( params.roundLengths ) slidePosition = Math.floor( slidePosition );
- if (
- ( index - Math.min( swiper.params.slidesPerGroupSkip, index ) ) %
- swiper.params.slidesPerGroup ===
- 0
- )
- snapGrid.push( slidePosition );
- slidesGrid.push( slidePosition );
- slidePosition = slidePosition + slideSize + spaceBetween;
- }
- swiper.virtualSize += slideSize + spaceBetween;
- prevSlideSize = slideSize;
- index += 1;
- }
- swiper.virtualSize = Math.max( swiper.virtualSize, swiperSize ) + offsetAfter;
- var newSlidesGrid;
- if ( rtl && wrongRTL && ( params.effect === 'slide' || params.effect === 'coverflow' ) ) {
- $wrapperEl.css( {
- width: swiper.virtualSize + params.spaceBetween + 'px',
- } );
- }
- if ( params.setWrapperSize ) {
- var _$wrapperEl$css;
- $wrapperEl.css(
- ( ( _$wrapperEl$css = {} ),
- ( _$wrapperEl$css[ getDirectionLabel( 'width' ) ] =
- swiper.virtualSize + params.spaceBetween + 'px' ),
- _$wrapperEl$css )
- );
- }
- if ( params.slidesPerColumn > 1 ) {
- var _$wrapperEl$css2;
- swiper.virtualSize = ( slideSize + params.spaceBetween ) * slidesNumberEvenToRows;
- swiper.virtualSize =
- Math.ceil( swiper.virtualSize / params.slidesPerColumn ) - params.spaceBetween;
- $wrapperEl.css(
- ( ( _$wrapperEl$css2 = {} ),
- ( _$wrapperEl$css2[ getDirectionLabel( 'width' ) ] =
- swiper.virtualSize + params.spaceBetween + 'px' ),
- _$wrapperEl$css2 )
- );
- if ( params.centeredSlides ) {
- newSlidesGrid = [];
- for ( var _i = 0; _i < snapGrid.length; _i += 1 ) {
- var slidesGridItem = snapGrid[ _i ];
- if ( params.roundLengths ) slidesGridItem = Math.floor( slidesGridItem );
- if ( snapGrid[ _i ] < swiper.virtualSize + snapGrid[ 0 ] )
- newSlidesGrid.push( slidesGridItem );
- }
- snapGrid = newSlidesGrid;
- }
- } // Remove last grid elements depending on width
- if ( ! params.centeredSlides ) {
- newSlidesGrid = [];
- for ( var _i2 = 0; _i2 < snapGrid.length; _i2 += 1 ) {
- var _slidesGridItem = snapGrid[ _i2 ];
- if ( params.roundLengths ) _slidesGridItem = Math.floor( _slidesGridItem );
- if ( snapGrid[ _i2 ] <= swiper.virtualSize - swiperSize ) {
- newSlidesGrid.push( _slidesGridItem );
- }
- }
- snapGrid = newSlidesGrid;
- if (
- Math.floor( swiper.virtualSize - swiperSize ) -
- Math.floor( snapGrid[ snapGrid.length - 1 ] ) >
- 1
- ) {
- snapGrid.push( swiper.virtualSize - swiperSize );
- }
- }
- if ( snapGrid.length === 0 ) snapGrid = [ 0 ];
- if ( params.spaceBetween !== 0 ) {
- var _slides$filter$css;
- var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel( 'marginRight' );
- slides
- .filter( function ( _, slideIndex ) {
- if ( ! params.cssMode ) return true;
- if ( slideIndex === slides.length - 1 ) {
- return false;
- }
- return true;
- } )
- .css(
- ( ( _slides$filter$css = {} ),
- ( _slides$filter$css[ key ] = spaceBetween + 'px' ),
- _slides$filter$css )
- );
- }
- if ( params.centeredSlides && params.centeredSlidesBounds ) {
- var allSlidesSize = 0;
- slidesSizesGrid.forEach( function ( slideSizeValue ) {
- allSlidesSize += slideSizeValue + ( params.spaceBetween ? params.spaceBetween : 0 );
- } );
- allSlidesSize -= params.spaceBetween;
- var maxSnap = allSlidesSize - swiperSize;
- snapGrid = snapGrid.map( function ( snap ) {
- if ( snap < 0 ) return -offsetBefore;
- if ( snap > maxSnap ) return maxSnap + offsetAfter;
- return snap;
- } );
- }
- if ( params.centerInsufficientSlides ) {
- var _allSlidesSize = 0;
- slidesSizesGrid.forEach( function ( slideSizeValue ) {
- _allSlidesSize += slideSizeValue + ( params.spaceBetween ? params.spaceBetween : 0 );
- } );
- _allSlidesSize -= params.spaceBetween;
- if ( _allSlidesSize < swiperSize ) {
- var allSlidesOffset = ( swiperSize - _allSlidesSize ) / 2;
- snapGrid.forEach( function ( snap, snapIndex ) {
- snapGrid[ snapIndex ] = snap - allSlidesOffset;
- } );
- slidesGrid.forEach( function ( snap, snapIndex ) {
- slidesGrid[ snapIndex ] = snap + allSlidesOffset;
- } );
- }
- }
- extend( swiper, {
- slides: slides,
- snapGrid: snapGrid,
- slidesGrid: slidesGrid,
- slidesSizesGrid: slidesSizesGrid,
- } );
- if ( slidesLength !== previousSlidesLength ) {
- swiper.emit( 'slidesLengthChange' );
- }
- if ( snapGrid.length !== previousSnapGridLength ) {
- if ( swiper.params.watchOverflow ) swiper.checkOverflow();
- swiper.emit( 'snapGridLengthChange' );
- }
- if ( slidesGrid.length !== previousSlidesGridLength ) {
- swiper.emit( 'slidesGridLengthChange' );
- }
- if ( params.watchSlidesProgress || params.watchSlidesVisibility ) {
- swiper.updateSlidesOffset();
- }
- }
- function updateAutoHeight( speed ) {
- var swiper = this;
- var activeSlides = [];
- var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
- var newHeight = 0;
- var i;
- if ( typeof speed === 'number' ) {
- swiper.setTransition( speed );
- } else if ( speed === true ) {
- swiper.setTransition( swiper.params.speed );
- }
- var getSlideByIndex = function getSlideByIndex( index ) {
- if ( isVirtual ) {
- return swiper.slides.filter( function ( el ) {
- return parseInt( el.getAttribute( 'data-swiper-slide-index' ), 10 ) === index;
- } )[ 0 ];
- }
- return swiper.slides.eq( index )[ 0 ];
- }; // Find slides currently in view
- if ( swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1 ) {
- if ( swiper.params.centeredSlides ) {
- swiper.visibleSlides.each( function ( slide ) {
- activeSlides.push( slide );
- } );
- } else {
- for ( i = 0; i < Math.ceil( swiper.params.slidesPerView ); i += 1 ) {
- var index = swiper.activeIndex + i;
- if ( index > swiper.slides.length && ! isVirtual ) break;
- activeSlides.push( getSlideByIndex( index ) );
- }
- }
- } else {
- activeSlides.push( getSlideByIndex( swiper.activeIndex ) );
- } // Find new height from highest slide in view
- for ( i = 0; i < activeSlides.length; i += 1 ) {
- if ( typeof activeSlides[ i ] !== 'undefined' ) {
- var height = activeSlides[ i ].offsetHeight;
- newHeight = height > newHeight ? height : newHeight;
- }
- } // Update Height
- if ( newHeight ) swiper.$wrapperEl.css( 'height', newHeight + 'px' );
- }
- function updateSlidesOffset() {
- var swiper = this;
- var slides = swiper.slides;
- for ( var i = 0; i < slides.length; i += 1 ) {
- slides[ i ].swiperSlideOffset = swiper.isHorizontal()
- ? slides[ i ].offsetLeft
- : slides[ i ].offsetTop;
- }
- }
- function updateSlidesProgress( translate ) {
- if ( translate === void 0 ) {
- translate = ( this && this.translate ) || 0;
- }
- var swiper = this;
- var params = swiper.params;
- var slides = swiper.slides,
- rtl = swiper.rtlTranslate;
- if ( slides.length === 0 ) return;
- if ( typeof slides[ 0 ].swiperSlideOffset === 'undefined' ) swiper.updateSlidesOffset();
- var offsetCenter = -translate;
- if ( rtl ) offsetCenter = translate; // Visible Slides
- slides.removeClass( params.slideVisibleClass );
- swiper.visibleSlidesIndexes = [];
- swiper.visibleSlides = [];
- for ( var i = 0; i < slides.length; i += 1 ) {
- var slide = slides[ i ];
- var slideProgress =
- ( offsetCenter +
- ( params.centeredSlides ? swiper.minTranslate() : 0 ) -
- slide.swiperSlideOffset ) /
- ( slide.swiperSlideSize + params.spaceBetween );
- if ( params.watchSlidesVisibility || ( params.centeredSlides && params.autoHeight ) ) {
- var slideBefore = -( offsetCenter - slide.swiperSlideOffset );
- var slideAfter = slideBefore + swiper.slidesSizesGrid[ i ];
- var isVisible =
- ( slideBefore >= 0 && slideBefore < swiper.size - 1 ) ||
- ( slideAfter > 1 && slideAfter <= swiper.size ) ||
- ( slideBefore <= 0 && slideAfter >= swiper.size );
- if ( isVisible ) {
- swiper.visibleSlides.push( slide );
- swiper.visibleSlidesIndexes.push( i );
- slides.eq( i ).addClass( params.slideVisibleClass );
- }
- }
- slide.progress = rtl ? -slideProgress : slideProgress;
- }
- swiper.visibleSlides = $( swiper.visibleSlides );
- }
- function updateProgress( translate ) {
- var swiper = this;
- if ( typeof translate === 'undefined' ) {
- var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
- translate = ( swiper && swiper.translate && swiper.translate * multiplier ) || 0;
- }
- var params = swiper.params;
- var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
- var progress = swiper.progress,
- isBeginning = swiper.isBeginning,
- isEnd = swiper.isEnd;
- var wasBeginning = isBeginning;
- var wasEnd = isEnd;
- if ( translatesDiff === 0 ) {
- progress = 0;
- isBeginning = true;
- isEnd = true;
- } else {
- progress = ( translate - swiper.minTranslate() ) / translatesDiff;
- isBeginning = progress <= 0;
- isEnd = progress >= 1;
- }
- extend( swiper, {
- progress: progress,
- isBeginning: isBeginning,
- isEnd: isEnd,
- } );
- if (
- params.watchSlidesProgress ||
- params.watchSlidesVisibility ||
- ( params.centeredSlides && params.autoHeight )
- )
- swiper.updateSlidesProgress( translate );
- if ( isBeginning && ! wasBeginning ) {
- swiper.emit( 'reachBeginning toEdge' );
- }
- if ( isEnd && ! wasEnd ) {
- swiper.emit( 'reachEnd toEdge' );
- }
- if ( ( wasBeginning && ! isBeginning ) || ( wasEnd && ! isEnd ) ) {
- swiper.emit( 'fromEdge' );
- }
- swiper.emit( 'progress', progress );
- }
- function updateSlidesClasses() {
- var swiper = this;
- var slides = swiper.slides,
- params = swiper.params,
- $wrapperEl = swiper.$wrapperEl,
- activeIndex = swiper.activeIndex,
- realIndex = swiper.realIndex;
- var isVirtual = swiper.virtual && params.virtual.enabled;
- slides.removeClass(
- params.slideActiveClass +
- ' ' +
- params.slideNextClass +
- ' ' +
- params.slidePrevClass +
- ' ' +
- params.slideDuplicateActiveClass +
- ' ' +
- params.slideDuplicateNextClass +
- ' ' +
- params.slideDuplicatePrevClass
- );
- var activeSlide;
- if ( isVirtual ) {
- activeSlide = swiper.$wrapperEl.find(
- '.' + params.slideClass + '[data-swiper-slide-index="' + activeIndex + '"]'
- );
- } else {
- activeSlide = slides.eq( activeIndex );
- } // Active classes
- activeSlide.addClass( params.slideActiveClass );
- if ( params.loop ) {
- // Duplicate to all looped slides
- if ( activeSlide.hasClass( params.slideDuplicateClass ) ) {
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- ':not(.' +
- params.slideDuplicateClass +
- ')[data-swiper-slide-index="' +
- realIndex +
- '"]'
- )
- .addClass( params.slideDuplicateActiveClass );
- } else {
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- '.' +
- params.slideDuplicateClass +
- '[data-swiper-slide-index="' +
- realIndex +
- '"]'
- )
- .addClass( params.slideDuplicateActiveClass );
- }
- } // Next Slide
- var nextSlide = activeSlide
- .nextAll( '.' + params.slideClass )
- .eq( 0 )
- .addClass( params.slideNextClass );
- if ( params.loop && nextSlide.length === 0 ) {
- nextSlide = slides.eq( 0 );
- nextSlide.addClass( params.slideNextClass );
- } // Prev Slide
- var prevSlide = activeSlide
- .prevAll( '.' + params.slideClass )
- .eq( 0 )
- .addClass( params.slidePrevClass );
- if ( params.loop && prevSlide.length === 0 ) {
- prevSlide = slides.eq( -1 );
- prevSlide.addClass( params.slidePrevClass );
- }
- if ( params.loop ) {
- // Duplicate to all looped slides
- if ( nextSlide.hasClass( params.slideDuplicateClass ) ) {
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- ':not(.' +
- params.slideDuplicateClass +
- ')[data-swiper-slide-index="' +
- nextSlide.attr( 'data-swiper-slide-index' ) +
- '"]'
- )
- .addClass( params.slideDuplicateNextClass );
- } else {
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- '.' +
- params.slideDuplicateClass +
- '[data-swiper-slide-index="' +
- nextSlide.attr( 'data-swiper-slide-index' ) +
- '"]'
- )
- .addClass( params.slideDuplicateNextClass );
- }
- if ( prevSlide.hasClass( params.slideDuplicateClass ) ) {
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- ':not(.' +
- params.slideDuplicateClass +
- ')[data-swiper-slide-index="' +
- prevSlide.attr( 'data-swiper-slide-index' ) +
- '"]'
- )
- .addClass( params.slideDuplicatePrevClass );
- } else {
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- '.' +
- params.slideDuplicateClass +
- '[data-swiper-slide-index="' +
- prevSlide.attr( 'data-swiper-slide-index' ) +
- '"]'
- )
- .addClass( params.slideDuplicatePrevClass );
- }
- }
- swiper.emitSlidesClasses();
- }
- function updateActiveIndex( newActiveIndex ) {
- var swiper = this;
- var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
- var slidesGrid = swiper.slidesGrid,
- snapGrid = swiper.snapGrid,
- params = swiper.params,
- previousIndex = swiper.activeIndex,
- previousRealIndex = swiper.realIndex,
- previousSnapIndex = swiper.snapIndex;
- var activeIndex = newActiveIndex;
- var snapIndex;
- if ( typeof activeIndex === 'undefined' ) {
- for ( var i = 0; i < slidesGrid.length; i += 1 ) {
- if ( typeof slidesGrid[ i + 1 ] !== 'undefined' ) {
- if (
- translate >= slidesGrid[ i ] &&
- translate < slidesGrid[ i + 1 ] - ( slidesGrid[ i + 1 ] - slidesGrid[ i ] ) / 2
- ) {
- activeIndex = i;
- } else if ( translate >= slidesGrid[ i ] && translate < slidesGrid[ i + 1 ] ) {
- activeIndex = i + 1;
- }
- } else if ( translate >= slidesGrid[ i ] ) {
- activeIndex = i;
- }
- } // Normalize slideIndex
- if ( params.normalizeSlideIndex ) {
- if ( activeIndex < 0 || typeof activeIndex === 'undefined' ) activeIndex = 0;
- }
- }
- if ( snapGrid.indexOf( translate ) >= 0 ) {
- snapIndex = snapGrid.indexOf( translate );
- } else {
- var skip = Math.min( params.slidesPerGroupSkip, activeIndex );
- snapIndex = skip + Math.floor( ( activeIndex - skip ) / params.slidesPerGroup );
- }
- if ( snapIndex >= snapGrid.length ) snapIndex = snapGrid.length - 1;
- if ( activeIndex === previousIndex ) {
- if ( snapIndex !== previousSnapIndex ) {
- swiper.snapIndex = snapIndex;
- swiper.emit( 'snapIndexChange' );
- }
- return;
- } // Get real index
- var realIndex = parseInt(
- swiper.slides.eq( activeIndex ).attr( 'data-swiper-slide-index' ) || activeIndex,
- 10
- );
- extend( swiper, {
- snapIndex: snapIndex,
- realIndex: realIndex,
- previousIndex: previousIndex,
- activeIndex: activeIndex,
- } );
- swiper.emit( 'activeIndexChange' );
- swiper.emit( 'snapIndexChange' );
- if ( previousRealIndex !== realIndex ) {
- swiper.emit( 'realIndexChange' );
- }
- if ( swiper.initialized || swiper.params.runCallbacksOnInit ) {
- swiper.emit( 'slideChange' );
- }
- }
- function updateClickedSlide( e ) {
- var swiper = this;
- var params = swiper.params;
- var slide = $( e.target ).closest( '.' + params.slideClass )[ 0 ];
- var slideFound = false;
- var slideIndex;
- if ( slide ) {
- for ( var i = 0; i < swiper.slides.length; i += 1 ) {
- if ( swiper.slides[ i ] === slide ) {
- slideFound = true;
- slideIndex = i;
- break;
- }
- }
- }
- if ( slide && slideFound ) {
- swiper.clickedSlide = slide;
- if ( swiper.virtual && swiper.params.virtual.enabled ) {
- swiper.clickedIndex = parseInt( $( slide ).attr( 'data-swiper-slide-index' ), 10 );
- } else {
- swiper.clickedIndex = slideIndex;
- }
- } else {
- swiper.clickedSlide = undefined;
- swiper.clickedIndex = undefined;
- return;
- }
- if (
- params.slideToClickedSlide &&
- swiper.clickedIndex !== undefined &&
- swiper.clickedIndex !== swiper.activeIndex
- ) {
- swiper.slideToClickedSlide();
- }
- }
- var update = {
- updateSize: updateSize,
- updateSlides: updateSlides,
- updateAutoHeight: updateAutoHeight,
- updateSlidesOffset: updateSlidesOffset,
- updateSlidesProgress: updateSlidesProgress,
- updateProgress: updateProgress,
- updateSlidesClasses: updateSlidesClasses,
- updateActiveIndex: updateActiveIndex,
- updateClickedSlide: updateClickedSlide,
- };
- function getSwiperTranslate( axis ) {
- if ( axis === void 0 ) {
- axis = this.isHorizontal() ? 'x' : 'y';
- }
- var swiper = this;
- var params = swiper.params,
- rtl = swiper.rtlTranslate,
- translate = swiper.translate,
- $wrapperEl = swiper.$wrapperEl;
- if ( params.virtualTranslate ) {
- return rtl ? -translate : translate;
- }
- if ( params.cssMode ) {
- return translate;
- }
- var currentTranslate = getTranslate( $wrapperEl[ 0 ], axis );
- if ( rtl ) currentTranslate = -currentTranslate;
- return currentTranslate || 0;
- }
- function setTranslate( translate, byController ) {
- var swiper = this;
- var rtl = swiper.rtlTranslate,
- params = swiper.params,
- $wrapperEl = swiper.$wrapperEl,
- wrapperEl = swiper.wrapperEl,
- progress = swiper.progress;
- var x = 0;
- var y = 0;
- var z = 0;
- if ( swiper.isHorizontal() ) {
- x = rtl ? -translate : translate;
- } else {
- y = translate;
- }
- if ( params.roundLengths ) {
- x = Math.floor( x );
- y = Math.floor( y );
- }
- if ( params.cssMode ) {
- wrapperEl[ swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop' ] = swiper.isHorizontal()
- ? -x
- : -y;
- } else if ( ! params.virtualTranslate ) {
- $wrapperEl.transform( 'translate3d(' + x + 'px, ' + y + 'px, ' + z + 'px)' );
- }
- swiper.previousTranslate = swiper.translate;
- swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
- var newProgress;
- var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
- if ( translatesDiff === 0 ) {
- newProgress = 0;
- } else {
- newProgress = ( translate - swiper.minTranslate() ) / translatesDiff;
- }
- if ( newProgress !== progress ) {
- swiper.updateProgress( translate );
- }
- swiper.emit( 'setTranslate', swiper.translate, byController );
- }
- function minTranslate() {
- return -this.snapGrid[ 0 ];
- }
- function maxTranslate() {
- return -this.snapGrid[ this.snapGrid.length - 1 ];
- }
- function translateTo( translate, speed, runCallbacks, translateBounds, internal ) {
- if ( translate === void 0 ) {
- translate = 0;
- }
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- if ( translateBounds === void 0 ) {
- translateBounds = true;
- }
- var swiper = this;
- var params = swiper.params,
- wrapperEl = swiper.wrapperEl;
- if ( swiper.animating && params.preventInteractionOnTransition ) {
- return false;
- }
- var minTranslate = swiper.minTranslate();
- var maxTranslate = swiper.maxTranslate();
- var newTranslate;
- if ( translateBounds && translate > minTranslate ) newTranslate = minTranslate;
- else if ( translateBounds && translate < maxTranslate ) newTranslate = maxTranslate;
- else newTranslate = translate; // Update progress
- swiper.updateProgress( newTranslate );
- if ( params.cssMode ) {
- var isH = swiper.isHorizontal();
- if ( speed === 0 ) {
- wrapperEl[ isH ? 'scrollLeft' : 'scrollTop' ] = -newTranslate;
- } else {
- // eslint-disable-next-line
- if ( wrapperEl.scrollTo ) {
- var _wrapperEl$scrollTo;
- wrapperEl.scrollTo(
- ( ( _wrapperEl$scrollTo = {} ),
- ( _wrapperEl$scrollTo[ isH ? 'left' : 'top' ] = -newTranslate ),
- ( _wrapperEl$scrollTo.behavior = 'smooth' ),
- _wrapperEl$scrollTo )
- );
- } else {
- wrapperEl[ isH ? 'scrollLeft' : 'scrollTop' ] = -newTranslate;
- }
- }
- return true;
- }
- if ( speed === 0 ) {
- swiper.setTransition( 0 );
- swiper.setTranslate( newTranslate );
- if ( runCallbacks ) {
- swiper.emit( 'beforeTransitionStart', speed, internal );
- swiper.emit( 'transitionEnd' );
- }
- } else {
- swiper.setTransition( speed );
- swiper.setTranslate( newTranslate );
- if ( runCallbacks ) {
- swiper.emit( 'beforeTransitionStart', speed, internal );
- swiper.emit( 'transitionStart' );
- }
- if ( ! swiper.animating ) {
- swiper.animating = true;
- if ( ! swiper.onTranslateToWrapperTransitionEnd ) {
- swiper.onTranslateToWrapperTransitionEnd = function transitionEnd( e ) {
- if ( ! swiper || swiper.destroyed ) return;
- if ( e.target !== this ) return;
- swiper.$wrapperEl[ 0 ].removeEventListener(
- 'transitionend',
- swiper.onTranslateToWrapperTransitionEnd
- );
- swiper.$wrapperEl[ 0 ].removeEventListener(
- 'webkitTransitionEnd',
- swiper.onTranslateToWrapperTransitionEnd
- );
- swiper.onTranslateToWrapperTransitionEnd = null;
- delete swiper.onTranslateToWrapperTransitionEnd;
- if ( runCallbacks ) {
- swiper.emit( 'transitionEnd' );
- }
- };
- }
- swiper.$wrapperEl[ 0 ].addEventListener(
- 'transitionend',
- swiper.onTranslateToWrapperTransitionEnd
- );
- swiper.$wrapperEl[ 0 ].addEventListener(
- 'webkitTransitionEnd',
- swiper.onTranslateToWrapperTransitionEnd
- );
- }
- }
- return true;
- }
- var translate = {
- getTranslate: getSwiperTranslate,
- setTranslate: setTranslate,
- minTranslate: minTranslate,
- maxTranslate: maxTranslate,
- translateTo: translateTo,
- };
- function setTransition( duration, byController ) {
- var swiper = this;
- if ( ! swiper.params.cssMode ) {
- swiper.$wrapperEl.transition( duration );
- }
- swiper.emit( 'setTransition', duration, byController );
- }
- function transitionStart( runCallbacks, direction ) {
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- var swiper = this;
- var activeIndex = swiper.activeIndex,
- params = swiper.params,
- previousIndex = swiper.previousIndex;
- if ( params.cssMode ) return;
- if ( params.autoHeight ) {
- swiper.updateAutoHeight();
- }
- var dir = direction;
- if ( ! dir ) {
- if ( activeIndex > previousIndex ) dir = 'next';
- else if ( activeIndex < previousIndex ) dir = 'prev';
- else dir = 'reset';
- }
- swiper.emit( 'transitionStart' );
- if ( runCallbacks && activeIndex !== previousIndex ) {
- if ( dir === 'reset' ) {
- swiper.emit( 'slideResetTransitionStart' );
- return;
- }
- swiper.emit( 'slideChangeTransitionStart' );
- if ( dir === 'next' ) {
- swiper.emit( 'slideNextTransitionStart' );
- } else {
- swiper.emit( 'slidePrevTransitionStart' );
- }
- }
- }
- function transitionEnd( runCallbacks, direction ) {
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- var swiper = this;
- var activeIndex = swiper.activeIndex,
- previousIndex = swiper.previousIndex,
- params = swiper.params;
- swiper.animating = false;
- if ( params.cssMode ) return;
- swiper.setTransition( 0 );
- var dir = direction;
- if ( ! dir ) {
- if ( activeIndex > previousIndex ) dir = 'next';
- else if ( activeIndex < previousIndex ) dir = 'prev';
- else dir = 'reset';
- }
- swiper.emit( 'transitionEnd' );
- if ( runCallbacks && activeIndex !== previousIndex ) {
- if ( dir === 'reset' ) {
- swiper.emit( 'slideResetTransitionEnd' );
- return;
- }
- swiper.emit( 'slideChangeTransitionEnd' );
- if ( dir === 'next' ) {
- swiper.emit( 'slideNextTransitionEnd' );
- } else {
- swiper.emit( 'slidePrevTransitionEnd' );
- }
- }
- }
- var transition = {
- setTransition: setTransition,
- transitionStart: transitionStart,
- transitionEnd: transitionEnd,
- };
- function slideTo( index, speed, runCallbacks, internal, initial ) {
- if ( index === void 0 ) {
- index = 0;
- }
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- if ( typeof index !== 'number' && typeof index !== 'string' ) {
- throw new Error(
- "The 'index' argument cannot have type other than 'number' or 'string'. [" +
- typeof index +
- '] given.'
- );
- }
- if ( typeof index === 'string' ) {
- /**
- * The `index` argument converted from `string` to `number`.
- * @type {number}
- */
- var indexAsNumber = parseInt( index, 10 );
- /**
- * Determines whether the `index` argument is a valid `number`
- * after being converted from the `string` type.
- * @type {boolean}
- */
- var isValidNumber = isFinite( indexAsNumber );
- if ( ! isValidNumber ) {
- throw new Error(
- "The passed-in 'index' (string) couldn't be converted to 'number'. [" + index + '] given.'
- );
- } // Knowing that the converted `index` is a valid number,
- // we can update the original argument's value.
- index = indexAsNumber;
- }
- var swiper = this;
- var slideIndex = index;
- if ( slideIndex < 0 ) slideIndex = 0;
- var params = swiper.params,
- snapGrid = swiper.snapGrid,
- slidesGrid = swiper.slidesGrid,
- previousIndex = swiper.previousIndex,
- activeIndex = swiper.activeIndex,
- rtl = swiper.rtlTranslate,
- wrapperEl = swiper.wrapperEl,
- enabled = swiper.enabled;
- if (
- ( swiper.animating && params.preventInteractionOnTransition ) ||
- ( ! enabled && ! internal && ! initial )
- ) {
- return false;
- }
- var skip = Math.min( swiper.params.slidesPerGroupSkip, slideIndex );
- var snapIndex = skip + Math.floor( ( slideIndex - skip ) / swiper.params.slidesPerGroup );
- if ( snapIndex >= snapGrid.length ) snapIndex = snapGrid.length - 1;
- if ( ( activeIndex || params.initialSlide || 0 ) === ( previousIndex || 0 ) && runCallbacks ) {
- swiper.emit( 'beforeSlideChangeStart' );
- }
- var translate = -snapGrid[ snapIndex ]; // Update progress
- swiper.updateProgress( translate ); // Normalize slideIndex
- if ( params.normalizeSlideIndex ) {
- for ( var i = 0; i < slidesGrid.length; i += 1 ) {
- var normalizedTranslate = -Math.floor( translate * 100 );
- var normalizedGird = Math.floor( slidesGrid[ i ] * 100 );
- var normalizedGridNext = Math.floor( slidesGrid[ i + 1 ] * 100 );
- if ( typeof slidesGrid[ i + 1 ] !== 'undefined' ) {
- if (
- normalizedTranslate >= normalizedGird &&
- normalizedTranslate < normalizedGridNext - ( normalizedGridNext - normalizedGird ) / 2
- ) {
- slideIndex = i;
- } else if (
- normalizedTranslate >= normalizedGird &&
- normalizedTranslate < normalizedGridNext
- ) {
- slideIndex = i + 1;
- }
- } else if ( normalizedTranslate >= normalizedGird ) {
- slideIndex = i;
- }
- }
- } // Directions locks
- if ( swiper.initialized && slideIndex !== activeIndex ) {
- if (
- ! swiper.allowSlideNext &&
- translate < swiper.translate &&
- translate < swiper.minTranslate()
- ) {
- return false;
- }
- if (
- ! swiper.allowSlidePrev &&
- translate > swiper.translate &&
- translate > swiper.maxTranslate()
- ) {
- if ( ( activeIndex || 0 ) !== slideIndex ) return false;
- }
- }
- var direction;
- if ( slideIndex > activeIndex ) direction = 'next';
- else if ( slideIndex < activeIndex ) direction = 'prev';
- else direction = 'reset'; // Update Index
- if (
- ( rtl && -translate === swiper.translate ) ||
- ( ! rtl && translate === swiper.translate )
- ) {
- swiper.updateActiveIndex( slideIndex ); // Update Height
- if ( params.autoHeight ) {
- swiper.updateAutoHeight();
- }
- swiper.updateSlidesClasses();
- if ( params.effect !== 'slide' ) {
- swiper.setTranslate( translate );
- }
- if ( direction !== 'reset' ) {
- swiper.transitionStart( runCallbacks, direction );
- swiper.transitionEnd( runCallbacks, direction );
- }
- return false;
- }
- if ( params.cssMode ) {
- var isH = swiper.isHorizontal();
- var t = -translate;
- if ( rtl ) {
- t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
- }
- if ( speed === 0 ) {
- wrapperEl[ isH ? 'scrollLeft' : 'scrollTop' ] = t;
- } else {
- // eslint-disable-next-line
- if ( wrapperEl.scrollTo ) {
- var _wrapperEl$scrollTo;
- wrapperEl.scrollTo(
- ( ( _wrapperEl$scrollTo = {} ),
- ( _wrapperEl$scrollTo[ isH ? 'left' : 'top' ] = t ),
- ( _wrapperEl$scrollTo.behavior = 'smooth' ),
- _wrapperEl$scrollTo )
- );
- } else {
- wrapperEl[ isH ? 'scrollLeft' : 'scrollTop' ] = t;
- }
- }
- return true;
- }
- if ( speed === 0 ) {
- swiper.setTransition( 0 );
- swiper.setTranslate( translate );
- swiper.updateActiveIndex( slideIndex );
- swiper.updateSlidesClasses();
- swiper.emit( 'beforeTransitionStart', speed, internal );
- swiper.transitionStart( runCallbacks, direction );
- swiper.transitionEnd( runCallbacks, direction );
- } else {
- swiper.setTransition( speed );
- swiper.setTranslate( translate );
- swiper.updateActiveIndex( slideIndex );
- swiper.updateSlidesClasses();
- swiper.emit( 'beforeTransitionStart', speed, internal );
- swiper.transitionStart( runCallbacks, direction );
- if ( ! swiper.animating ) {
- swiper.animating = true;
- if ( ! swiper.onSlideToWrapperTransitionEnd ) {
- swiper.onSlideToWrapperTransitionEnd = function transitionEnd( e ) {
- if ( ! swiper || swiper.destroyed ) return;
- if ( e.target !== this ) return;
- swiper.$wrapperEl[ 0 ].removeEventListener(
- 'transitionend',
- swiper.onSlideToWrapperTransitionEnd
- );
- swiper.$wrapperEl[ 0 ].removeEventListener(
- 'webkitTransitionEnd',
- swiper.onSlideToWrapperTransitionEnd
- );
- swiper.onSlideToWrapperTransitionEnd = null;
- delete swiper.onSlideToWrapperTransitionEnd;
- swiper.transitionEnd( runCallbacks, direction );
- };
- }
- swiper.$wrapperEl[ 0 ].addEventListener(
- 'transitionend',
- swiper.onSlideToWrapperTransitionEnd
- );
- swiper.$wrapperEl[ 0 ].addEventListener(
- 'webkitTransitionEnd',
- swiper.onSlideToWrapperTransitionEnd
- );
- }
- }
- return true;
- }
- function slideToLoop( index, speed, runCallbacks, internal ) {
- if ( index === void 0 ) {
- index = 0;
- }
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- var swiper = this;
- var newIndex = index;
- if ( swiper.params.loop ) {
- newIndex += swiper.loopedSlides;
- }
- return swiper.slideTo( newIndex, speed, runCallbacks, internal );
- }
- /* eslint no-unused-vars: "off" */
- function slideNext( speed, runCallbacks, internal ) {
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- var swiper = this;
- var params = swiper.params,
- animating = swiper.animating,
- enabled = swiper.enabled;
- if ( ! enabled ) return swiper;
- var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
- if ( params.loop ) {
- if ( animating && params.loopPreventsSlide ) return false;
- swiper.loopFix(); // eslint-disable-next-line
- swiper._clientLeft = swiper.$wrapperEl[ 0 ].clientLeft;
- }
- return swiper.slideTo( swiper.activeIndex + increment, speed, runCallbacks, internal );
- }
- /* eslint no-unused-vars: "off" */
- function slidePrev( speed, runCallbacks, internal ) {
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- var swiper = this;
- var params = swiper.params,
- animating = swiper.animating,
- snapGrid = swiper.snapGrid,
- slidesGrid = swiper.slidesGrid,
- rtlTranslate = swiper.rtlTranslate,
- enabled = swiper.enabled;
- if ( ! enabled ) return swiper;
- if ( params.loop ) {
- if ( animating && params.loopPreventsSlide ) return false;
- swiper.loopFix(); // eslint-disable-next-line
- swiper._clientLeft = swiper.$wrapperEl[ 0 ].clientLeft;
- }
- var translate = rtlTranslate ? swiper.translate : -swiper.translate;
- function normalize( val ) {
- if ( val < 0 ) return -Math.floor( Math.abs( val ) );
- return Math.floor( val );
- }
- var normalizedTranslate = normalize( translate );
- var normalizedSnapGrid = snapGrid.map( function ( val ) {
- return normalize( val );
- } );
- var prevSnap = snapGrid[ normalizedSnapGrid.indexOf( normalizedTranslate ) - 1 ];
- if ( typeof prevSnap === 'undefined' && params.cssMode ) {
- snapGrid.forEach( function ( snap ) {
- if ( ! prevSnap && normalizedTranslate >= snap ) prevSnap = snap;
- } );
- }
- var prevIndex;
- if ( typeof prevSnap !== 'undefined' ) {
- prevIndex = slidesGrid.indexOf( prevSnap );
- if ( prevIndex < 0 ) prevIndex = swiper.activeIndex - 1;
- }
- return swiper.slideTo( prevIndex, speed, runCallbacks, internal );
- }
- /* eslint no-unused-vars: "off" */
- function slideReset( speed, runCallbacks, internal ) {
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- var swiper = this;
- return swiper.slideTo( swiper.activeIndex, speed, runCallbacks, internal );
- }
- /* eslint no-unused-vars: "off" */
- function slideToClosest( speed, runCallbacks, internal, threshold ) {
- if ( speed === void 0 ) {
- speed = this.params.speed;
- }
- if ( runCallbacks === void 0 ) {
- runCallbacks = true;
- }
- if ( threshold === void 0 ) {
- threshold = 0.5;
- }
- var swiper = this;
- var index = swiper.activeIndex;
- var skip = Math.min( swiper.params.slidesPerGroupSkip, index );
- var snapIndex = skip + Math.floor( ( index - skip ) / swiper.params.slidesPerGroup );
- var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
- if ( translate >= swiper.snapGrid[ snapIndex ] ) {
- // The current translate is on or after the current snap index, so the choice
- // is between the current index and the one after it.
- var currentSnap = swiper.snapGrid[ snapIndex ];
- var nextSnap = swiper.snapGrid[ snapIndex + 1 ];
- if ( translate - currentSnap > ( nextSnap - currentSnap ) * threshold ) {
- index += swiper.params.slidesPerGroup;
- }
- } else {
- // The current translate is before the current snap index, so the choice
- // is between the current index and the one before it.
- var prevSnap = swiper.snapGrid[ snapIndex - 1 ];
- var _currentSnap = swiper.snapGrid[ snapIndex ];
- if ( translate - prevSnap <= ( _currentSnap - prevSnap ) * threshold ) {
- index -= swiper.params.slidesPerGroup;
- }
- }
- index = Math.max( index, 0 );
- index = Math.min( index, swiper.slidesGrid.length - 1 );
- return swiper.slideTo( index, speed, runCallbacks, internal );
- }
- function slideToClickedSlide() {
- var swiper = this;
- var params = swiper.params,
- $wrapperEl = swiper.$wrapperEl;
- var slidesPerView =
- params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
- var slideToIndex = swiper.clickedIndex;
- var realIndex;
- if ( params.loop ) {
- if ( swiper.animating ) return;
- realIndex = parseInt( $( swiper.clickedSlide ).attr( 'data-swiper-slide-index' ), 10 );
- if ( params.centeredSlides ) {
- if (
- slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||
- slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2
- ) {
- swiper.loopFix();
- slideToIndex = $wrapperEl
- .children(
- '.' +
- params.slideClass +
- '[data-swiper-slide-index="' +
- realIndex +
- '"]:not(.' +
- params.slideDuplicateClass +
- ')'
- )
- .eq( 0 )
- .index();
- nextTick( function () {
- swiper.slideTo( slideToIndex );
- } );
- } else {
- swiper.slideTo( slideToIndex );
- }
- } else if ( slideToIndex > swiper.slides.length - slidesPerView ) {
- swiper.loopFix();
- slideToIndex = $wrapperEl
- .children(
- '.' +
- params.slideClass +
- '[data-swiper-slide-index="' +
- realIndex +
- '"]:not(.' +
- params.slideDuplicateClass +
- ')'
- )
- .eq( 0 )
- .index();
- nextTick( function () {
- swiper.slideTo( slideToIndex );
- } );
- } else {
- swiper.slideTo( slideToIndex );
- }
- } else {
- swiper.slideTo( slideToIndex );
- }
- }
- var slide = {
- slideTo: slideTo,
- slideToLoop: slideToLoop,
- slideNext: slideNext,
- slidePrev: slidePrev,
- slideReset: slideReset,
- slideToClosest: slideToClosest,
- slideToClickedSlide: slideToClickedSlide,
- };
- function loopCreate() {
- var swiper = this;
- var document = getDocument();
- var params = swiper.params,
- $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
- $wrapperEl.children( '.' + params.slideClass + '.' + params.slideDuplicateClass ).remove();
- var slides = $wrapperEl.children( '.' + params.slideClass );
- if ( params.loopFillGroupWithBlank ) {
- var blankSlidesNum = params.slidesPerGroup - ( slides.length % params.slidesPerGroup );
- if ( blankSlidesNum !== params.slidesPerGroup ) {
- for ( var i = 0; i < blankSlidesNum; i += 1 ) {
- var blankNode = $( document.createElement( 'div' ) ).addClass(
- params.slideClass + ' ' + params.slideBlankClass
- );
- $wrapperEl.append( blankNode );
- }
- slides = $wrapperEl.children( '.' + params.slideClass );
- }
- }
- if ( params.slidesPerView === 'auto' && ! params.loopedSlides )
- params.loopedSlides = slides.length;
- swiper.loopedSlides = Math.ceil(
- parseFloat( params.loopedSlides || params.slidesPerView, 10 )
- );
- swiper.loopedSlides += params.loopAdditionalSlides;
- if ( swiper.loopedSlides > slides.length ) {
- swiper.loopedSlides = slides.length;
- }
- var prependSlides = [];
- var appendSlides = [];
- slides.each( function ( el, index ) {
- var slide = $( el );
- if ( index < swiper.loopedSlides ) {
- appendSlides.push( el );
- }
- if ( index < slides.length && index >= slides.length - swiper.loopedSlides ) {
- prependSlides.push( el );
- }
- slide.attr( 'data-swiper-slide-index', index );
- } );
- for ( var _i = 0; _i < appendSlides.length; _i += 1 ) {
- $wrapperEl.append(
- $( appendSlides[ _i ].cloneNode( true ) ).addClass( params.slideDuplicateClass )
- );
- }
- for ( var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1 ) {
- $wrapperEl.prepend(
- $( prependSlides[ _i2 ].cloneNode( true ) ).addClass( params.slideDuplicateClass )
- );
- }
- }
- function loopFix() {
- var swiper = this;
- swiper.emit( 'beforeLoopFix' );
- var activeIndex = swiper.activeIndex,
- slides = swiper.slides,
- loopedSlides = swiper.loopedSlides,
- allowSlidePrev = swiper.allowSlidePrev,
- allowSlideNext = swiper.allowSlideNext,
- snapGrid = swiper.snapGrid,
- rtl = swiper.rtlTranslate;
- var newIndex;
- swiper.allowSlidePrev = true;
- swiper.allowSlideNext = true;
- var snapTranslate = -snapGrid[ activeIndex ];
- var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
- if ( activeIndex < loopedSlides ) {
- newIndex = slides.length - loopedSlides * 3 + activeIndex;
- newIndex += loopedSlides;
- var slideChanged = swiper.slideTo( newIndex, 0, false, true );
- if ( slideChanged && diff !== 0 ) {
- swiper.setTranslate( ( rtl ? -swiper.translate : swiper.translate ) - diff );
- }
- } else if ( activeIndex >= slides.length - loopedSlides ) {
- // Fix For Positive Oversliding
- newIndex = -slides.length + activeIndex + loopedSlides;
- newIndex += loopedSlides;
- var _slideChanged = swiper.slideTo( newIndex, 0, false, true );
- if ( _slideChanged && diff !== 0 ) {
- swiper.setTranslate( ( rtl ? -swiper.translate : swiper.translate ) - diff );
- }
- }
- swiper.allowSlidePrev = allowSlidePrev;
- swiper.allowSlideNext = allowSlideNext;
- swiper.emit( 'loopFix' );
- }
- function loopDestroy() {
- var swiper = this;
- var $wrapperEl = swiper.$wrapperEl,
- params = swiper.params,
- slides = swiper.slides;
- $wrapperEl
- .children(
- '.' +
- params.slideClass +
- '.' +
- params.slideDuplicateClass +
- ',.' +
- params.slideClass +
- '.' +
- params.slideBlankClass
- )
- .remove();
- slides.removeAttr( 'data-swiper-slide-index' );
- }
- var loop = {
- loopCreate: loopCreate,
- loopFix: loopFix,
- loopDestroy: loopDestroy,
- };
- function setGrabCursor( moving ) {
- var swiper = this;
- if (
- swiper.support.touch ||
- ! swiper.params.simulateTouch ||
- ( swiper.params.watchOverflow && swiper.isLocked ) ||
- swiper.params.cssMode
- )
- return;
- var el = swiper.el;
- el.style.cursor = 'move';
- el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
- el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
- el.style.cursor = moving ? 'grabbing' : 'grab';
- }
- function unsetGrabCursor() {
- var swiper = this;
- if (
- swiper.support.touch ||
- ( swiper.params.watchOverflow && swiper.isLocked ) ||
- swiper.params.cssMode
- ) {
- return;
- }
- swiper.el.style.cursor = '';
- }
- var grabCursor = {
- setGrabCursor: setGrabCursor,
- unsetGrabCursor: unsetGrabCursor,
- };
- function appendSlide( slides ) {
- var swiper = this;
- var $wrapperEl = swiper.$wrapperEl,
- params = swiper.params;
- if ( params.loop ) {
- swiper.loopDestroy();
- }
- if ( typeof slides === 'object' && 'length' in slides ) {
- for ( var i = 0; i < slides.length; i += 1 ) {
- if ( slides[ i ] ) $wrapperEl.append( slides[ i ] );
- }
- } else {
- $wrapperEl.append( slides );
- }
- if ( params.loop ) {
- swiper.loopCreate();
- }
- if ( ! ( params.observer && swiper.support.observer ) ) {
- swiper.update();
- }
- }
- function prependSlide( slides ) {
- var swiper = this;
- var params = swiper.params,
- $wrapperEl = swiper.$wrapperEl,
- activeIndex = swiper.activeIndex;
- if ( params.loop ) {
- swiper.loopDestroy();
- }
- var newActiveIndex = activeIndex + 1;
- if ( typeof slides === 'object' && 'length' in slides ) {
- for ( var i = 0; i < slides.length; i += 1 ) {
- if ( slides[ i ] ) $wrapperEl.prepend( slides[ i ] );
- }
- newActiveIndex = activeIndex + slides.length;
- } else {
- $wrapperEl.prepend( slides );
- }
- if ( params.loop ) {
- swiper.loopCreate();
- }
- if ( ! ( params.observer && swiper.support.observer ) ) {
- swiper.update();
- }
- swiper.slideTo( newActiveIndex, 0, false );
- }
- function addSlide( index, slides ) {
- var swiper = this;
- var $wrapperEl = swiper.$wrapperEl,
- params = swiper.params,
- activeIndex = swiper.activeIndex;
- var activeIndexBuffer = activeIndex;
- if ( params.loop ) {
- activeIndexBuffer -= swiper.loopedSlides;
- swiper.loopDestroy();
- swiper.slides = $wrapperEl.children( '.' + params.slideClass );
- }
- var baseLength = swiper.slides.length;
- if ( index <= 0 ) {
- swiper.prependSlide( slides );
- return;
- }
- if ( index >= baseLength ) {
- swiper.appendSlide( slides );
- return;
- }
- var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
- var slidesBuffer = [];
- for ( var i = baseLength - 1; i >= index; i -= 1 ) {
- var currentSlide = swiper.slides.eq( i );
- currentSlide.remove();
- slidesBuffer.unshift( currentSlide );
- }
- if ( typeof slides === 'object' && 'length' in slides ) {
- for ( var _i = 0; _i < slides.length; _i += 1 ) {
- if ( slides[ _i ] ) $wrapperEl.append( slides[ _i ] );
- }
- newActiveIndex =
- activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
- } else {
- $wrapperEl.append( slides );
- }
- for ( var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1 ) {
- $wrapperEl.append( slidesBuffer[ _i2 ] );
- }
- if ( params.loop ) {
- swiper.loopCreate();
- }
- if ( ! ( params.observer && swiper.support.observer ) ) {
- swiper.update();
- }
- if ( params.loop ) {
- swiper.slideTo( newActiveIndex + swiper.loopedSlides, 0, false );
- } else {
- swiper.slideTo( newActiveIndex, 0, false );
- }
- }
- function removeSlide( slidesIndexes ) {
- var swiper = this;
- var params = swiper.params,
- $wrapperEl = swiper.$wrapperEl,
- activeIndex = swiper.activeIndex;
- var activeIndexBuffer = activeIndex;
- if ( params.loop ) {
- activeIndexBuffer -= swiper.loopedSlides;
- swiper.loopDestroy();
- swiper.slides = $wrapperEl.children( '.' + params.slideClass );
- }
- var newActiveIndex = activeIndexBuffer;
- var indexToRemove;
- if ( typeof slidesIndexes === 'object' && 'length' in slidesIndexes ) {
- for ( var i = 0; i < slidesIndexes.length; i += 1 ) {
- indexToRemove = slidesIndexes[ i ];
- if ( swiper.slides[ indexToRemove ] ) swiper.slides.eq( indexToRemove ).remove();
- if ( indexToRemove < newActiveIndex ) newActiveIndex -= 1;
- }
- newActiveIndex = Math.max( newActiveIndex, 0 );
- } else {
- indexToRemove = slidesIndexes;
- if ( swiper.slides[ indexToRemove ] ) swiper.slides.eq( indexToRemove ).remove();
- if ( indexToRemove < newActiveIndex ) newActiveIndex -= 1;
- newActiveIndex = Math.max( newActiveIndex, 0 );
- }
- if ( params.loop ) {
- swiper.loopCreate();
- }
- if ( ! ( params.observer && swiper.support.observer ) ) {
- swiper.update();
- }
- if ( params.loop ) {
- swiper.slideTo( newActiveIndex + swiper.loopedSlides, 0, false );
- } else {
- swiper.slideTo( newActiveIndex, 0, false );
- }
- }
- function removeAllSlides() {
- var swiper = this;
- var slidesIndexes = [];
- for ( var i = 0; i < swiper.slides.length; i += 1 ) {
- slidesIndexes.push( i );
- }
- swiper.removeSlide( slidesIndexes );
- }
- var manipulation = {
- appendSlide: appendSlide,
- prependSlide: prependSlide,
- addSlide: addSlide,
- removeSlide: removeSlide,
- removeAllSlides: removeAllSlides,
- };
- function onTouchStart( event ) {
- var swiper = this;
- var document = getDocument();
- var window = getWindow();
- var data = swiper.touchEventsData;
- var params = swiper.params,
- touches = swiper.touches,
- enabled = swiper.enabled;
- if ( ! enabled ) return;
- if ( swiper.animating && params.preventInteractionOnTransition ) {
- return;
- }
- var e = event;
- if ( e.originalEvent ) e = e.originalEvent;
- var $targetEl = $( e.target );
- if ( params.touchEventsTarget === 'wrapper' ) {
- if ( ! $targetEl.closest( swiper.wrapperEl ).length ) return;
- }
- data.isTouchEvent = e.type === 'touchstart';
- if ( ! data.isTouchEvent && 'which' in e && e.which === 3 ) return;
- if ( ! data.isTouchEvent && 'button' in e && e.button > 0 ) return;
- if ( data.isTouched && data.isMoved ) return; // change target el for shadow root componenet
- var swipingClassHasValue = !! params.noSwipingClass && params.noSwipingClass !== '';
- if (
- swipingClassHasValue &&
- e.target &&
- e.target.shadowRoot &&
- event.path &&
- event.path[ 0 ]
- ) {
- $targetEl = $( event.path[ 0 ] );
- }
- if (
- params.noSwiping &&
- $targetEl.closest(
- params.noSwipingSelector ? params.noSwipingSelector : '.' + params.noSwipingClass
- )[ 0 ]
- ) {
- swiper.allowClick = true;
- return;
- }
- if ( params.swipeHandler ) {
- if ( ! $targetEl.closest( params.swipeHandler )[ 0 ] ) return;
- }
- touches.currentX = e.type === 'touchstart' ? e.targetTouches[ 0 ].pageX : e.pageX;
- touches.currentY = e.type === 'touchstart' ? e.targetTouches[ 0 ].pageY : e.pageY;
- var startX = touches.currentX;
- var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
- var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
- var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
- if (
- edgeSwipeDetection &&
- ( startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold )
- ) {
- if ( edgeSwipeDetection === 'prevent' ) {
- event.preventDefault();
- } else {
- return;
- }
- }
- extend( data, {
- isTouched: true,
- isMoved: false,
- allowTouchCallbacks: true,
- isScrolling: undefined,
- startMoving: undefined,
- } );
- touches.startX = startX;
- touches.startY = startY;
- data.touchStartTime = now();
- swiper.allowClick = true;
- swiper.updateSize();
- swiper.swipeDirection = undefined;
- if ( params.threshold > 0 ) data.allowThresholdMove = false;
- if ( e.type !== 'touchstart' ) {
- var preventDefault = true;
- if ( $targetEl.is( data.focusableElements ) ) preventDefault = false;
- if (
- document.activeElement &&
- $( document.activeElement ).is( data.focusableElements ) &&
- document.activeElement !== $targetEl[ 0 ]
- ) {
- document.activeElement.blur();
- }
- var shouldPreventDefault =
- preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
- if (
- ( params.touchStartForcePreventDefault || shouldPreventDefault ) &&
- ! $targetEl[ 0 ].isContentEditable
- ) {
- e.preventDefault();
- }
- }
- swiper.emit( 'touchStart', e );
- }
- function onTouchMove( event ) {
- var document = getDocument();
- var swiper = this;
- var data = swiper.touchEventsData;
- var params = swiper.params,
- touches = swiper.touches,
- rtl = swiper.rtlTranslate,
- enabled = swiper.enabled;
- if ( ! enabled ) return;
- var e = event;
- if ( e.originalEvent ) e = e.originalEvent;
- if ( ! data.isTouched ) {
- if ( data.startMoving && data.isScrolling ) {
- swiper.emit( 'touchMoveOpposite', e );
- }
- return;
- }
- if ( data.isTouchEvent && e.type !== 'touchmove' ) return;
- var targetTouch =
- e.type === 'touchmove' &&
- e.targetTouches &&
- ( e.targetTouches[ 0 ] || e.changedTouches[ 0 ] );
- var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
- var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
- if ( e.preventedByNestedSwiper ) {
- touches.startX = pageX;
- touches.startY = pageY;
- return;
- }
- if ( ! swiper.allowTouchMove ) {
- // isMoved = true;
- swiper.allowClick = false;
- if ( data.isTouched ) {
- extend( touches, {
- startX: pageX,
- startY: pageY,
- currentX: pageX,
- currentY: pageY,
- } );
- data.touchStartTime = now();
- }
- return;
- }
- if ( data.isTouchEvent && params.touchReleaseOnEdges && ! params.loop ) {
- if ( swiper.isVertical() ) {
- // Vertical
- if (
- ( pageY < touches.startY && swiper.translate <= swiper.maxTranslate() ) ||
- ( pageY > touches.startY && swiper.translate >= swiper.minTranslate() )
- ) {
- data.isTouched = false;
- data.isMoved = false;
- return;
- }
- } else if (
- ( pageX < touches.startX && swiper.translate <= swiper.maxTranslate() ) ||
- ( pageX > touches.startX && swiper.translate >= swiper.minTranslate() )
- ) {
- return;
- }
- }
- if ( data.isTouchEvent && document.activeElement ) {
- if ( e.target === document.activeElement && $( e.target ).is( data.focusableElements ) ) {
- data.isMoved = true;
- swiper.allowClick = false;
- return;
- }
- }
- if ( data.allowTouchCallbacks ) {
- swiper.emit( 'touchMove', e );
- }
- if ( e.targetTouches && e.targetTouches.length > 1 ) return;
- touches.currentX = pageX;
- touches.currentY = pageY;
- var diffX = touches.currentX - touches.startX;
- var diffY = touches.currentY - touches.startY;
- if (
- swiper.params.threshold &&
- Math.sqrt( Math.pow( diffX, 2 ) + Math.pow( diffY, 2 ) ) < swiper.params.threshold
- )
- return;
- if ( typeof data.isScrolling === 'undefined' ) {
- var touchAngle;
- if (
- ( swiper.isHorizontal() && touches.currentY === touches.startY ) ||
- ( swiper.isVertical() && touches.currentX === touches.startX )
- ) {
- data.isScrolling = false;
- } else {
- // eslint-disable-next-line
- if ( diffX * diffX + diffY * diffY >= 25 ) {
- touchAngle = ( Math.atan2( Math.abs( diffY ), Math.abs( diffX ) ) * 180 ) / Math.PI;
- data.isScrolling = swiper.isHorizontal()
- ? touchAngle > params.touchAngle
- : 90 - touchAngle > params.touchAngle;
- }
- }
- }
- if ( data.isScrolling ) {
- swiper.emit( 'touchMoveOpposite', e );
- }
- if ( typeof data.startMoving === 'undefined' ) {
- if ( touches.currentX !== touches.startX || touches.currentY !== touches.startY ) {
- data.startMoving = true;
- }
- }
- if ( data.isScrolling ) {
- data.isTouched = false;
- return;
- }
- if ( ! data.startMoving ) {
- return;
- }
- swiper.allowClick = false;
- if ( ! params.cssMode && e.cancelable ) {
- e.preventDefault();
- }
- if ( params.touchMoveStopPropagation && ! params.nested ) {
- e.stopPropagation();
- }
- if ( ! data.isMoved ) {
- if ( params.loop ) {
- swiper.loopFix();
- }
- data.startTranslate = swiper.getTranslate();
- swiper.setTransition( 0 );
- if ( swiper.animating ) {
- swiper.$wrapperEl.trigger( 'webkitTransitionEnd transitionend' );
- }
- data.allowMomentumBounce = false; // Grab Cursor
- if (
- params.grabCursor &&
- ( swiper.allowSlideNext === true || swiper.allowSlidePrev === true )
- ) {
- swiper.setGrabCursor( true );
- }
- swiper.emit( 'sliderFirstMove', e );
- }
- swiper.emit( 'sliderMove', e );
- data.isMoved = true;
- var diff = swiper.isHorizontal() ? diffX : diffY;
- touches.diff = diff;
- diff *= params.touchRatio;
- if ( rtl ) diff = -diff;
- swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
- data.currentTranslate = diff + data.startTranslate;
- var disableParentSwiper = true;
- var resistanceRatio = params.resistanceRatio;
- if ( params.touchReleaseOnEdges ) {
- resistanceRatio = 0;
- }
- if ( diff > 0 && data.currentTranslate > swiper.minTranslate() ) {
- disableParentSwiper = false;
- if ( params.resistance )
- data.currentTranslate =
- swiper.minTranslate() -
- 1 +
- Math.pow( -swiper.minTranslate() + data.startTranslate + diff, resistanceRatio );
- } else if ( diff < 0 && data.currentTranslate < swiper.maxTranslate() ) {
- disableParentSwiper = false;
- if ( params.resistance )
- data.currentTranslate =
- swiper.maxTranslate() +
- 1 -
- Math.pow( swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio );
- }
- if ( disableParentSwiper ) {
- e.preventedByNestedSwiper = true;
- } // Directions locks
- if (
- ! swiper.allowSlideNext &&
- swiper.swipeDirection === 'next' &&
- data.currentTranslate < data.startTranslate
- ) {
- data.currentTranslate = data.startTranslate;
- }
- if (
- ! swiper.allowSlidePrev &&
- swiper.swipeDirection === 'prev' &&
- data.currentTranslate > data.startTranslate
- ) {
- data.currentTranslate = data.startTranslate;
- }
- if ( ! swiper.allowSlidePrev && ! swiper.allowSlideNext ) {
- data.currentTranslate = data.startTranslate;
- } // Threshold
- if ( params.threshold > 0 ) {
- if ( Math.abs( diff ) > params.threshold || data.allowThresholdMove ) {
- if ( ! data.allowThresholdMove ) {
- data.allowThresholdMove = true;
- touches.startX = touches.currentX;
- touches.startY = touches.currentY;
- data.currentTranslate = data.startTranslate;
- touches.diff = swiper.isHorizontal()
- ? touches.currentX - touches.startX
- : touches.currentY - touches.startY;
- return;
- }
- } else {
- data.currentTranslate = data.startTranslate;
- return;
- }
- }
- if ( ! params.followFinger || params.cssMode ) return; // Update active index in free mode
- if ( params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility ) {
- swiper.updateActiveIndex();
- swiper.updateSlidesClasses();
- }
- if ( params.freeMode ) {
- // Velocity
- if ( data.velocities.length === 0 ) {
- data.velocities.push( {
- position: touches[ swiper.isHorizontal() ? 'startX' : 'startY' ],
- time: data.touchStartTime,
- } );
- }
- data.velocities.push( {
- position: touches[ swiper.isHorizontal() ? 'currentX' : 'currentY' ],
- time: now(),
- } );
- } // Update progress
- swiper.updateProgress( data.currentTranslate ); // Update translate
- swiper.setTranslate( data.currentTranslate );
- }
- function onTouchEnd( event ) {
- var swiper = this;
- var data = swiper.touchEventsData;
- var params = swiper.params,
- touches = swiper.touches,
- rtl = swiper.rtlTranslate,
- $wrapperEl = swiper.$wrapperEl,
- slidesGrid = swiper.slidesGrid,
- snapGrid = swiper.snapGrid,
- enabled = swiper.enabled;
- if ( ! enabled ) return;
- var e = event;
- if ( e.originalEvent ) e = e.originalEvent;
- if ( data.allowTouchCallbacks ) {
- swiper.emit( 'touchEnd', e );
- }
- data.allowTouchCallbacks = false;
- if ( ! data.isTouched ) {
- if ( data.isMoved && params.grabCursor ) {
- swiper.setGrabCursor( false );
- }
- data.isMoved = false;
- data.startMoving = false;
- return;
- } // Return Grab Cursor
- if (
- params.grabCursor &&
- data.isMoved &&
- data.isTouched &&
- ( swiper.allowSlideNext === true || swiper.allowSlidePrev === true )
- ) {
- swiper.setGrabCursor( false );
- } // Time diff
- var touchEndTime = now();
- var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
- if ( swiper.allowClick ) {
- swiper.updateClickedSlide( e );
- swiper.emit( 'tap click', e );
- if ( timeDiff < 300 && touchEndTime - data.lastClickTime < 300 ) {
- swiper.emit( 'doubleTap doubleClick', e );
- }
- }
- data.lastClickTime = now();
- nextTick( function () {
- if ( ! swiper.destroyed ) swiper.allowClick = true;
- } );
- if (
- ! data.isTouched ||
- ! data.isMoved ||
- ! swiper.swipeDirection ||
- touches.diff === 0 ||
- data.currentTranslate === data.startTranslate
- ) {
- data.isTouched = false;
- data.isMoved = false;
- data.startMoving = false;
- return;
- }
- data.isTouched = false;
- data.isMoved = false;
- data.startMoving = false;
- var currentPos;
- if ( params.followFinger ) {
- currentPos = rtl ? swiper.translate : -swiper.translate;
- } else {
- currentPos = -data.currentTranslate;
- }
- if ( params.cssMode ) {
- return;
- }
- if ( params.freeMode ) {
- if ( currentPos < -swiper.minTranslate() ) {
- swiper.slideTo( swiper.activeIndex );
- return;
- }
- if ( currentPos > -swiper.maxTranslate() ) {
- if ( swiper.slides.length < snapGrid.length ) {
- swiper.slideTo( snapGrid.length - 1 );
- } else {
- swiper.slideTo( swiper.slides.length - 1 );
- }
- return;
- }
- if ( params.freeModeMomentum ) {
- if ( data.velocities.length > 1 ) {
- var lastMoveEvent = data.velocities.pop();
- var velocityEvent = data.velocities.pop();
- var distance = lastMoveEvent.position - velocityEvent.position;
- var time = lastMoveEvent.time - velocityEvent.time;
- swiper.velocity = distance / time;
- swiper.velocity /= 2;
- if ( Math.abs( swiper.velocity ) < params.freeModeMinimumVelocity ) {
- swiper.velocity = 0;
- } // this implies that the user stopped moving a finger then released.
- // There would be no events with distance zero, so the last event is stale.
- if ( time > 150 || now() - lastMoveEvent.time > 300 ) {
- swiper.velocity = 0;
- }
- } else {
- swiper.velocity = 0;
- }
- swiper.velocity *= params.freeModeMomentumVelocityRatio;
- data.velocities.length = 0;
- var momentumDuration = 1000 * params.freeModeMomentumRatio;
- var momentumDistance = swiper.velocity * momentumDuration;
- var newPosition = swiper.translate + momentumDistance;
- if ( rtl ) newPosition = -newPosition;
- var doBounce = false;
- var afterBouncePosition;
- var bounceAmount = Math.abs( swiper.velocity ) * 20 * params.freeModeMomentumBounceRatio;
- var needsLoopFix;
- if ( newPosition < swiper.maxTranslate() ) {
- if ( params.freeModeMomentumBounce ) {
- if ( newPosition + swiper.maxTranslate() < -bounceAmount ) {
- newPosition = swiper.maxTranslate() - bounceAmount;
- }
- afterBouncePosition = swiper.maxTranslate();
- doBounce = true;
- data.allowMomentumBounce = true;
- } else {
- newPosition = swiper.maxTranslate();
- }
- if ( params.loop && params.centeredSlides ) needsLoopFix = true;
- } else if ( newPosition > swiper.minTranslate() ) {
- if ( params.freeModeMomentumBounce ) {
- if ( newPosition - swiper.minTranslate() > bounceAmount ) {
- newPosition = swiper.minTranslate() + bounceAmount;
- }
- afterBouncePosition = swiper.minTranslate();
- doBounce = true;
- data.allowMomentumBounce = true;
- } else {
- newPosition = swiper.minTranslate();
- }
- if ( params.loop && params.centeredSlides ) needsLoopFix = true;
- } else if ( params.freeModeSticky ) {
- var nextSlide;
- for ( var j = 0; j < snapGrid.length; j += 1 ) {
- if ( snapGrid[ j ] > -newPosition ) {
- nextSlide = j;
- break;
- }
- }
- if (
- Math.abs( snapGrid[ nextSlide ] - newPosition ) <
- Math.abs( snapGrid[ nextSlide - 1 ] - newPosition ) ||
- swiper.swipeDirection === 'next'
- ) {
- newPosition = snapGrid[ nextSlide ];
- } else {
- newPosition = snapGrid[ nextSlide - 1 ];
- }
- newPosition = -newPosition;
- }
- if ( needsLoopFix ) {
- swiper.once( 'transitionEnd', function () {
- swiper.loopFix();
- } );
- } // Fix duration
- if ( swiper.velocity !== 0 ) {
- if ( rtl ) {
- momentumDuration = Math.abs( ( -newPosition - swiper.translate ) / swiper.velocity );
- } else {
- momentumDuration = Math.abs( ( newPosition - swiper.translate ) / swiper.velocity );
- }
- if ( params.freeModeSticky ) {
- // If freeModeSticky is active and the user ends a swipe with a slow-velocity
- // event, then durations can be 20+ seconds to slide one (or zero!) slides.
- // It's easy to see this when simulating touch with mouse events. To fix this,
- // limit single-slide swipes to the default slide duration. This also has the
- // nice side effect of matching slide speed if the user stopped moving before
- // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
- // For faster swipes, also apply limits (albeit higher ones).
- var moveDistance = Math.abs( ( rtl ? -newPosition : newPosition ) - swiper.translate );
- var currentSlideSize = swiper.slidesSizesGrid[ swiper.activeIndex ];
- if ( moveDistance < currentSlideSize ) {
- momentumDuration = params.speed;
- } else if ( moveDistance < 2 * currentSlideSize ) {
- momentumDuration = params.speed * 1.5;
- } else {
- momentumDuration = params.speed * 2.5;
- }
- }
- } else if ( params.freeModeSticky ) {
- swiper.slideToClosest();
- return;
- }
- if ( params.freeModeMomentumBounce && doBounce ) {
- swiper.updateProgress( afterBouncePosition );
- swiper.setTransition( momentumDuration );
- swiper.setTranslate( newPosition );
- swiper.transitionStart( true, swiper.swipeDirection );
- swiper.animating = true;
- $wrapperEl.transitionEnd( function () {
- if ( ! swiper || swiper.destroyed || ! data.allowMomentumBounce ) return;
- swiper.emit( 'momentumBounce' );
- swiper.setTransition( params.speed );
- setTimeout( function () {
- swiper.setTranslate( afterBouncePosition );
- $wrapperEl.transitionEnd( function () {
- if ( ! swiper || swiper.destroyed ) return;
- swiper.transitionEnd();
- } );
- }, 0 );
- } );
- } else if ( swiper.velocity ) {
- swiper.updateProgress( newPosition );
- swiper.setTransition( momentumDuration );
- swiper.setTranslate( newPosition );
- swiper.transitionStart( true, swiper.swipeDirection );
- if ( ! swiper.animating ) {
- swiper.animating = true;
- $wrapperEl.transitionEnd( function () {
- if ( ! swiper || swiper.destroyed ) return;
- swiper.transitionEnd();
- } );
- }
- } else {
- swiper.emit( '_freeModeNoMomentumRelease' );
- swiper.updateProgress( newPosition );
- }
- swiper.updateActiveIndex();
- swiper.updateSlidesClasses();
- } else if ( params.freeModeSticky ) {
- swiper.slideToClosest();
- return;
- } else if ( params.freeMode ) {
- swiper.emit( '_freeModeNoMomentumRelease' );
- }
- if ( ! params.freeModeMomentum || timeDiff >= params.longSwipesMs ) {
- swiper.updateProgress();
- swiper.updateActiveIndex();
- swiper.updateSlidesClasses();
- }
- return;
- } // Find current slide
- var stopIndex = 0;
- var groupSize = swiper.slidesSizesGrid[ 0 ];
- for (
- var i = 0;
- i < slidesGrid.length;
- i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup
- ) {
- var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
- if ( typeof slidesGrid[ i + _increment ] !== 'undefined' ) {
- if ( currentPos >= slidesGrid[ i ] && currentPos < slidesGrid[ i + _increment ] ) {
- stopIndex = i;
- groupSize = slidesGrid[ i + _increment ] - slidesGrid[ i ];
- }
- } else if ( currentPos >= slidesGrid[ i ] ) {
- stopIndex = i;
- groupSize = slidesGrid[ slidesGrid.length - 1 ] - slidesGrid[ slidesGrid.length - 2 ];
- }
- } // Find current slide size
- var ratio = ( currentPos - slidesGrid[ stopIndex ] ) / groupSize;
- var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
- if ( timeDiff > params.longSwipesMs ) {
- // Long touches
- if ( ! params.longSwipes ) {
- swiper.slideTo( swiper.activeIndex );
- return;
- }
- if ( swiper.swipeDirection === 'next' ) {
- if ( ratio >= params.longSwipesRatio ) swiper.slideTo( stopIndex + increment );
- else swiper.slideTo( stopIndex );
- }
- if ( swiper.swipeDirection === 'prev' ) {
- if ( ratio > 1 - params.longSwipesRatio ) swiper.slideTo( stopIndex + increment );
- else swiper.slideTo( stopIndex );
- }
- } else {
- // Short swipes
- if ( ! params.shortSwipes ) {
- swiper.slideTo( swiper.activeIndex );
- return;
- }
- var isNavButtonTarget =
- swiper.navigation &&
- ( e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl );
- if ( ! isNavButtonTarget ) {
- if ( swiper.swipeDirection === 'next' ) {
- swiper.slideTo( stopIndex + increment );
- }
- if ( swiper.swipeDirection === 'prev' ) {
- swiper.slideTo( stopIndex );
- }
- } else if ( e.target === swiper.navigation.nextEl ) {
- swiper.slideTo( stopIndex + increment );
- } else {
- swiper.slideTo( stopIndex );
- }
- }
- }
- function onResize() {
- var swiper = this;
- var params = swiper.params,
- el = swiper.el;
- if ( el && el.offsetWidth === 0 ) return; // Breakpoints
- if ( params.breakpoints ) {
- swiper.setBreakpoint();
- } // Save locks
- var allowSlideNext = swiper.allowSlideNext,
- allowSlidePrev = swiper.allowSlidePrev,
- snapGrid = swiper.snapGrid; // Disable locks on resize
- swiper.allowSlideNext = true;
- swiper.allowSlidePrev = true;
- swiper.updateSize();
- swiper.updateSlides();
- swiper.updateSlidesClasses();
- if (
- ( params.slidesPerView === 'auto' || params.slidesPerView > 1 ) &&
- swiper.isEnd &&
- ! swiper.isBeginning &&
- ! swiper.params.centeredSlides
- ) {
- swiper.slideTo( swiper.slides.length - 1, 0, false, true );
- } else {
- swiper.slideTo( swiper.activeIndex, 0, false, true );
- }
- if ( swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused ) {
- swiper.autoplay.run();
- } // Return locks after resize
- swiper.allowSlidePrev = allowSlidePrev;
- swiper.allowSlideNext = allowSlideNext;
- if ( swiper.params.watchOverflow && snapGrid !== swiper.snapGrid ) {
- swiper.checkOverflow();
- }
- }
- function onClick( e ) {
- var swiper = this;
- if ( ! swiper.enabled ) return;
- if ( ! swiper.allowClick ) {
- if ( swiper.params.preventClicks ) e.preventDefault();
- if ( swiper.params.preventClicksPropagation && swiper.animating ) {
- e.stopPropagation();
- e.stopImmediatePropagation();
- }
- }
- }
- function onScroll() {
- var swiper = this;
- var wrapperEl = swiper.wrapperEl,
- rtlTranslate = swiper.rtlTranslate,
- enabled = swiper.enabled;
- if ( ! enabled ) return;
- swiper.previousTranslate = swiper.translate;
- if ( swiper.isHorizontal() ) {
- if ( rtlTranslate ) {
- swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
- } else {
- swiper.translate = -wrapperEl.scrollLeft;
- }
- } else {
- swiper.translate = -wrapperEl.scrollTop;
- } // eslint-disable-next-line
- if ( swiper.translate === -0 ) swiper.translate = 0;
- swiper.updateActiveIndex();
- swiper.updateSlidesClasses();
- var newProgress;
- var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
- if ( translatesDiff === 0 ) {
- newProgress = 0;
- } else {
- newProgress = ( swiper.translate - swiper.minTranslate() ) / translatesDiff;
- }
- if ( newProgress !== swiper.progress ) {
- swiper.updateProgress( rtlTranslate ? -swiper.translate : swiper.translate );
- }
- swiper.emit( 'setTranslate', swiper.translate, false );
- }
- var dummyEventAttached = false;
- function dummyEventListener() {}
- function attachEvents() {
- var swiper = this;
- var document = getDocument();
- var params = swiper.params,
- touchEvents = swiper.touchEvents,
- el = swiper.el,
- wrapperEl = swiper.wrapperEl,
- device = swiper.device,
- support = swiper.support;
- swiper.onTouchStart = onTouchStart.bind( swiper );
- swiper.onTouchMove = onTouchMove.bind( swiper );
- swiper.onTouchEnd = onTouchEnd.bind( swiper );
- if ( params.cssMode ) {
- swiper.onScroll = onScroll.bind( swiper );
- }
- swiper.onClick = onClick.bind( swiper );
- var capture = !! params.nested; // Touch Events
- if ( ! support.touch && support.pointerEvents ) {
- el.addEventListener( touchEvents.start, swiper.onTouchStart, false );
- document.addEventListener( touchEvents.move, swiper.onTouchMove, capture );
- document.addEventListener( touchEvents.end, swiper.onTouchEnd, false );
- } else {
- if ( support.touch ) {
- var passiveListener =
- touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners
- ? {
- passive: true,
- capture: false,
- }
- : false;
- el.addEventListener( touchEvents.start, swiper.onTouchStart, passiveListener );
- el.addEventListener(
- touchEvents.move,
- swiper.onTouchMove,
- support.passiveListener
- ? {
- passive: false,
- capture: capture,
- }
- : capture
- );
- el.addEventListener( touchEvents.end, swiper.onTouchEnd, passiveListener );
- if ( touchEvents.cancel ) {
- el.addEventListener( touchEvents.cancel, swiper.onTouchEnd, passiveListener );
- }
- if ( ! dummyEventAttached ) {
- document.addEventListener( 'touchstart', dummyEventListener );
- dummyEventAttached = true;
- }
- }
- if (
- ( params.simulateTouch && ! device.ios && ! device.android ) ||
- ( params.simulateTouch && ! support.touch && device.ios )
- ) {
- el.addEventListener( 'mousedown', swiper.onTouchStart, false );
- document.addEventListener( 'mousemove', swiper.onTouchMove, capture );
- document.addEventListener( 'mouseup', swiper.onTouchEnd, false );
- }
- } // Prevent Links Clicks
- if ( params.preventClicks || params.preventClicksPropagation ) {
- el.addEventListener( 'click', swiper.onClick, true );
- }
- if ( params.cssMode ) {
- wrapperEl.addEventListener( 'scroll', swiper.onScroll );
- } // Resize handler
- if ( params.updateOnWindowResize ) {
- swiper.on(
- device.ios || device.android
- ? 'resize orientationchange observerUpdate'
- : 'resize observerUpdate',
- onResize,
- true
- );
- } else {
- swiper.on( 'observerUpdate', onResize, true );
- }
- }
- function detachEvents() {
- var swiper = this;
- var document = getDocument();
- var params = swiper.params,
- touchEvents = swiper.touchEvents,
- el = swiper.el,
- wrapperEl = swiper.wrapperEl,
- device = swiper.device,
- support = swiper.support;
- var capture = !! params.nested; // Touch Events
- if ( ! support.touch && support.pointerEvents ) {
- el.removeEventListener( touchEvents.start, swiper.onTouchStart, false );
- document.removeEventListener( touchEvents.move, swiper.onTouchMove, capture );
- document.removeEventListener( touchEvents.end, swiper.onTouchEnd, false );
- } else {
- if ( support.touch ) {
- var passiveListener =
- touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners
- ? {
- passive: true,
- capture: false,
- }
- : false;
- el.removeEventListener( touchEvents.start, swiper.onTouchStart, passiveListener );
- el.removeEventListener( touchEvents.move, swiper.onTouchMove, capture );
- el.removeEventListener( touchEvents.end, swiper.onTouchEnd, passiveListener );
- if ( touchEvents.cancel ) {
- el.removeEventListener( touchEvents.cancel, swiper.onTouchEnd, passiveListener );
- }
- }
- if (
- ( params.simulateTouch && ! device.ios && ! device.android ) ||
- ( params.simulateTouch && ! support.touch && device.ios )
- ) {
- el.removeEventListener( 'mousedown', swiper.onTouchStart, false );
- document.removeEventListener( 'mousemove', swiper.onTouchMove, capture );
- document.removeEventListener( 'mouseup', swiper.onTouchEnd, false );
- }
- } // Prevent Links Clicks
- if ( params.preventClicks || params.preventClicksPropagation ) {
- el.removeEventListener( 'click', swiper.onClick, true );
- }
- if ( params.cssMode ) {
- wrapperEl.removeEventListener( 'scroll', swiper.onScroll );
- } // Resize handler
- swiper.off(
- device.ios || device.android
- ? 'resize orientationchange observerUpdate'
- : 'resize observerUpdate',
- onResize
- );
- }
- var events = {
- attachEvents: attachEvents,
- detachEvents: detachEvents,
- };
- function setBreakpoint() {
- var swiper = this;
- var activeIndex = swiper.activeIndex,
- initialized = swiper.initialized,
- _swiper$loopedSlides = swiper.loopedSlides,
- loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
- params = swiper.params,
- $el = swiper.$el;
- var breakpoints = params.breakpoints;
- if ( ! breakpoints || ( breakpoints && Object.keys( breakpoints ).length === 0 ) ) return; // Get breakpoint for window width and update parameters
- var breakpoint = swiper.getBreakpoint( breakpoints, swiper.params.breakpointsBase, swiper.el );
- if ( ! breakpoint || swiper.currentBreakpoint === breakpoint ) return;
- var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[ breakpoint ] : undefined;
- if ( breakpointOnlyParams ) {
- [
- 'slidesPerView',
- 'spaceBetween',
- 'slidesPerGroup',
- 'slidesPerGroupSkip',
- 'slidesPerColumn',
- ].forEach( function ( param ) {
- var paramValue = breakpointOnlyParams[ param ];
- if ( typeof paramValue === 'undefined' ) return;
- if ( param === 'slidesPerView' && ( paramValue === 'AUTO' || paramValue === 'auto' ) ) {
- breakpointOnlyParams[ param ] = 'auto';
- } else if ( param === 'slidesPerView' ) {
- breakpointOnlyParams[ param ] = parseFloat( paramValue );
- } else {
- breakpointOnlyParams[ param ] = parseInt( paramValue, 10 );
- }
- } );
- }
- var breakpointParams = breakpointOnlyParams || swiper.originalParams;
- var wasMultiRow = params.slidesPerColumn > 1;
- var isMultiRow = breakpointParams.slidesPerColumn > 1;
- var wasEnabled = params.enabled;
- if ( wasMultiRow && ! isMultiRow ) {
- $el.removeClass(
- params.containerModifierClass +
- 'multirow ' +
- params.containerModifierClass +
- 'multirow-column'
- );
- swiper.emitContainerClasses();
- } else if ( ! wasMultiRow && isMultiRow ) {
- $el.addClass( params.containerModifierClass + 'multirow' );
- if ( breakpointParams.slidesPerColumnFill === 'column' ) {
- $el.addClass( params.containerModifierClass + 'multirow-column' );
- }
- swiper.emitContainerClasses();
- }
- var directionChanged =
- breakpointParams.direction && breakpointParams.direction !== params.direction;
- var needsReLoop =
- params.loop &&
- ( breakpointParams.slidesPerView !== params.slidesPerView || directionChanged );
- if ( directionChanged && initialized ) {
- swiper.changeDirection();
- }
- extend( swiper.params, breakpointParams );
- var isEnabled = swiper.params.enabled;
- extend( swiper, {
- allowTouchMove: swiper.params.allowTouchMove,
- allowSlideNext: swiper.params.allowSlideNext,
- allowSlidePrev: swiper.params.allowSlidePrev,
- } );
- if ( wasEnabled && ! isEnabled ) {
- swiper.disable();
- } else if ( ! wasEnabled && isEnabled ) {
- swiper.enable();
- }
- swiper.currentBreakpoint = breakpoint;
- swiper.emit( '_beforeBreakpoint', breakpointParams );
- if ( needsReLoop && initialized ) {
- swiper.loopDestroy();
- swiper.loopCreate();
- swiper.updateSlides();
- swiper.slideTo( activeIndex - loopedSlides + swiper.loopedSlides, 0, false );
- }
- swiper.emit( 'breakpoint', breakpointParams );
- }
- function getBreakpoint( breakpoints, base, containerEl ) {
- if ( base === void 0 ) {
- base = 'window';
- }
- if ( ! breakpoints || ( base === 'container' && ! containerEl ) ) return undefined;
- var breakpoint = false;
- var window = getWindow();
- var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
- var points = Object.keys( breakpoints ).map( function ( point ) {
- if ( typeof point === 'string' && point.indexOf( '@' ) === 0 ) {
- var minRatio = parseFloat( point.substr( 1 ) );
- var value = currentHeight * minRatio;
- return {
- value: value,
- point: point,
- };
- }
- return {
- value: point,
- point: point,
- };
- } );
- points.sort( function ( a, b ) {
- return parseInt( a.value, 10 ) - parseInt( b.value, 10 );
- } );
- for ( var i = 0; i < points.length; i += 1 ) {
- var _points$i = points[ i ],
- point = _points$i.point,
- value = _points$i.value;
- if ( base === 'window' ) {
- if ( window.matchMedia( '(min-width: ' + value + 'px)' ).matches ) {
- breakpoint = point;
- }
- } else if ( value <= containerEl.clientWidth ) {
- breakpoint = point;
- }
- }
- return breakpoint || 'max';
- }
- var breakpoints = {
- setBreakpoint: setBreakpoint,
- getBreakpoint: getBreakpoint,
- };
- function prepareClasses( entries, prefix ) {
- var resultClasses = [];
- entries.forEach( function ( item ) {
- if ( typeof item === 'object' ) {
- Object.keys( item ).forEach( function ( classNames ) {
- if ( item[ classNames ] ) {
- resultClasses.push( prefix + classNames );
- }
- } );
- } else if ( typeof item === 'string' ) {
- resultClasses.push( prefix + item );
- }
- } );
- return resultClasses;
- }
- function addClasses() {
- var swiper = this;
- var classNames = swiper.classNames,
- params = swiper.params,
- rtl = swiper.rtl,
- $el = swiper.$el,
- device = swiper.device,
- support = swiper.support; // prettier-ignore
- var suffixes = prepareClasses(
- [
- 'initialized',
- params.direction,
- {
- 'pointer-events': support.pointerEvents && ! support.touch,
- },
- {
- 'free-mode': params.freeMode,
- },
- {
- autoheight: params.autoHeight,
- },
- {
- rtl: rtl,
- },
- {
- multirow: params.slidesPerColumn > 1,
- },
- {
- 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column',
- },
- {
- android: device.android,
- },
- {
- ios: device.ios,
- },
- {
- 'css-mode': params.cssMode,
- },
- ],
- params.containerModifierClass
- );
- classNames.push.apply( classNames, suffixes );
- $el.addClass( [].concat( classNames ).join( ' ' ) );
- swiper.emitContainerClasses();
- }
- function removeClasses() {
- var swiper = this;
- var $el = swiper.$el,
- classNames = swiper.classNames;
- $el.removeClass( classNames.join( ' ' ) );
- swiper.emitContainerClasses();
- }
- var classes = {
- addClasses: addClasses,
- removeClasses: removeClasses,
- };
- function loadImage( imageEl, src, srcset, sizes, checkForComplete, callback ) {
- var window = getWindow();
- var image;
- function onReady() {
- if ( callback ) callback();
- }
- var isPicture = $( imageEl ).parent( 'picture' )[ 0 ];
- if ( ! isPicture && ( ! imageEl.complete || ! checkForComplete ) ) {
- if ( src ) {
- image = new window.Image();
- image.onload = onReady;
- image.onerror = onReady;
- if ( sizes ) {
- image.sizes = sizes;
- }
- if ( srcset ) {
- image.srcset = srcset;
- }
- if ( src ) {
- image.src = src;
- }
- } else {
- onReady();
- }
- } else {
- // image already loaded...
- onReady();
- }
- }
- function preloadImages() {
- var swiper = this;
- swiper.imagesToLoad = swiper.$el.find( 'img' );
- function onReady() {
- if ( typeof swiper === 'undefined' || swiper === null || ! swiper || swiper.destroyed )
- return;
- if ( swiper.imagesLoaded !== undefined ) swiper.imagesLoaded += 1;
- if ( swiper.imagesLoaded === swiper.imagesToLoad.length ) {
- if ( swiper.params.updateOnImagesReady ) swiper.update();
- swiper.emit( 'imagesReady' );
- }
- }
- for ( var i = 0; i < swiper.imagesToLoad.length; i += 1 ) {
- var imageEl = swiper.imagesToLoad[ i ];
- swiper.loadImage(
- imageEl,
- imageEl.currentSrc || imageEl.getAttribute( 'src' ),
- imageEl.srcset || imageEl.getAttribute( 'srcset' ),
- imageEl.sizes || imageEl.getAttribute( 'sizes' ),
- true,
- onReady
- );
- }
- }
- var images = {
- loadImage: loadImage,
- preloadImages: preloadImages,
- };
- function checkOverflow() {
- var swiper = this;
- var params = swiper.params;
- var wasLocked = swiper.isLocked;
- var lastSlidePosition =
- swiper.slides.length > 0 &&
- params.slidesOffsetBefore +
- params.spaceBetween * ( swiper.slides.length - 1 ) +
- swiper.slides[ 0 ].offsetWidth * swiper.slides.length;
- if ( params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition ) {
- swiper.isLocked = lastSlidePosition <= swiper.size;
- } else {
- swiper.isLocked = swiper.snapGrid.length === 1;
- }
- swiper.allowSlideNext = ! swiper.isLocked;
- swiper.allowSlidePrev = ! swiper.isLocked; // events
- if ( wasLocked !== swiper.isLocked ) swiper.emit( swiper.isLocked ? 'lock' : 'unlock' );
- if ( wasLocked && wasLocked !== swiper.isLocked ) {
- swiper.isEnd = false;
- if ( swiper.navigation ) swiper.navigation.update();
- }
- }
- var checkOverflow$1 = {
- checkOverflow: checkOverflow,
- };
- var defaults = {
- init: true,
- direction: 'horizontal',
- touchEventsTarget: 'container',
- initialSlide: 0,
- speed: 300,
- cssMode: false,
- updateOnWindowResize: true,
- resizeObserver: false,
- nested: false,
- createElements: false,
- enabled: true,
- focusableElements: 'input, select, option, textarea, button, video, label',
- // Overrides
- width: null,
- height: null,
- //
- preventInteractionOnTransition: false,
- // ssr
- userAgent: null,
- url: null,
- // To support iOS's swipe-to-go-back gesture (when being used in-app).
- edgeSwipeDetection: false,
- edgeSwipeThreshold: 20,
- // Free mode
- freeMode: false,
- freeModeMomentum: true,
- freeModeMomentumRatio: 1,
- freeModeMomentumBounce: true,
- freeModeMomentumBounceRatio: 1,
- freeModeMomentumVelocityRatio: 1,
- freeModeSticky: false,
- freeModeMinimumVelocity: 0.02,
- // Autoheight
- autoHeight: false,
- // Set wrapper width
- setWrapperSize: false,
- // Virtual Translate
- virtualTranslate: false,
- // Effects
- effect: 'slide',
- // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
- // Breakpoints
- breakpoints: undefined,
- breakpointsBase: 'window',
- // Slides grid
- spaceBetween: 0,
- slidesPerView: 1,
- slidesPerColumn: 1,
- slidesPerColumnFill: 'column',
- slidesPerGroup: 1,
- slidesPerGroupSkip: 0,
- centeredSlides: false,
- centeredSlidesBounds: false,
- slidesOffsetBefore: 0,
- // in px
- slidesOffsetAfter: 0,
- // in px
- normalizeSlideIndex: true,
- centerInsufficientSlides: false,
- // Disable swiper and hide navigation when container not overflow
- watchOverflow: false,
- // Round length
- roundLengths: false,
- // Touches
- touchRatio: 1,
- touchAngle: 45,
- simulateTouch: true,
- shortSwipes: true,
- longSwipes: true,
- longSwipesRatio: 0.5,
- longSwipesMs: 300,
- followFinger: true,
- allowTouchMove: true,
- threshold: 0,
- touchMoveStopPropagation: false,
- touchStartPreventDefault: true,
- touchStartForcePreventDefault: false,
- touchReleaseOnEdges: false,
- // Unique Navigation Elements
- uniqueNavElements: true,
- // Resistance
- resistance: true,
- resistanceRatio: 0.85,
- // Progress
- watchSlidesProgress: false,
- watchSlidesVisibility: false,
- // Cursor
- grabCursor: false,
- // Clicks
- preventClicks: true,
- preventClicksPropagation: true,
- slideToClickedSlide: false,
- // Images
- preloadImages: true,
- updateOnImagesReady: true,
- // loop
- loop: false,
- loopAdditionalSlides: 0,
- loopedSlides: null,
- loopFillGroupWithBlank: false,
- loopPreventsSlide: true,
- // Swiping/no swiping
- allowSlidePrev: true,
- allowSlideNext: true,
- swipeHandler: null,
- // '.swipe-handler',
- noSwiping: true,
- noSwipingClass: 'swiper-no-swiping',
- noSwipingSelector: null,
- // Passive Listeners
- passiveListeners: true,
- // NS
- containerModifierClass: 'swiper-container-',
- // NEW
- slideClass: 'swiper-slide',
- slideBlankClass: 'swiper-slide-invisible-blank',
- slideActiveClass: 'swiper-slide-active',
- slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
- slideVisibleClass: 'swiper-slide-visible',
- slideDuplicateClass: 'swiper-slide-duplicate',
- slideNextClass: 'swiper-slide-next',
- slideDuplicateNextClass: 'swiper-slide-duplicate-next',
- slidePrevClass: 'swiper-slide-prev',
- slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
- wrapperClass: 'swiper-wrapper',
- // Callbacks
- runCallbacksOnInit: true,
- // Internals
- _emitClasses: false,
- };
- var prototypes = {
- modular: modular,
- eventsEmitter: eventsEmitter,
- update: update,
- translate: translate,
- transition: transition,
- slide: slide,
- loop: loop,
- grabCursor: grabCursor,
- manipulation: manipulation,
- events: events,
- breakpoints: breakpoints,
- checkOverflow: checkOverflow$1,
- classes: classes,
- images: images,
- };
- var extendedDefaults = {};
- var Swiper = /*#__PURE__*/ ( function () {
- function Swiper() {
- var el;
- var params;
- for ( var _len = arguments.length, args = new Array( _len ), _key = 0; _key < _len; _key++ ) {
- args[ _key ] = arguments[ _key ];
- }
- if (
- args.length === 1 &&
- args[ 0 ].constructor &&
- Object.prototype.toString.call( args[ 0 ] ).slice( 8, -1 ) === 'Object'
- ) {
- params = args[ 0 ];
- } else {
- el = args[ 0 ];
- params = args[ 1 ];
- }
- if ( ! params ) params = {};
- params = extend( {}, params );
- if ( el && ! params.el ) params.el = el;
- if ( params.el && $( params.el ).length > 1 ) {
- var swipers = [];
- $( params.el ).each( function ( containerEl ) {
- var newParams = extend( {}, params, {
- el: containerEl,
- } );
- swipers.push( new Swiper( newParams ) );
- } );
- return swipers;
- } // Swiper Instance
- var swiper = this;
- swiper.__swiper__ = true;
- swiper.support = getSupport();
- swiper.device = getDevice( {
- userAgent: params.userAgent,
- } );
- swiper.browser = getBrowser();
- swiper.eventsListeners = {};
- swiper.eventsAnyListeners = [];
- if ( typeof swiper.modules === 'undefined' ) {
- swiper.modules = {};
- }
- Object.keys( swiper.modules ).forEach( function ( moduleName ) {
- var module = swiper.modules[ moduleName ];
- if ( module.params ) {
- var moduleParamName = Object.keys( module.params )[ 0 ];
- var moduleParams = module.params[ moduleParamName ];
- if ( typeof moduleParams !== 'object' || moduleParams === null ) return;
- if (
- [ 'navigation', 'pagination', 'scrollbar' ].indexOf( moduleParamName ) >= 0 &&
- params[ moduleParamName ] === true
- ) {
- params[ moduleParamName ] = {
- auto: true,
- };
- }
- if ( ! ( moduleParamName in params && 'enabled' in moduleParams ) ) return;
- if ( params[ moduleParamName ] === true ) {
- params[ moduleParamName ] = {
- enabled: true,
- };
- }
- if (
- typeof params[ moduleParamName ] === 'object' &&
- ! ( 'enabled' in params[ moduleParamName ] )
- ) {
- params[ moduleParamName ].enabled = true;
- }
- if ( ! params[ moduleParamName ] )
- params[ moduleParamName ] = {
- enabled: false,
- };
- }
- } ); // Extend defaults with modules params
- var swiperParams = extend( {}, defaults );
- swiper.useParams( swiperParams ); // Extend defaults with passed params
- swiper.params = extend( {}, swiperParams, extendedDefaults, params );
- swiper.originalParams = extend( {}, swiper.params );
- swiper.passedParams = extend( {}, params ); // add event listeners
- if ( swiper.params && swiper.params.on ) {
- Object.keys( swiper.params.on ).forEach( function ( eventName ) {
- swiper.on( eventName, swiper.params.on[ eventName ] );
- } );
- }
- if ( swiper.params && swiper.params.onAny ) {
- swiper.onAny( swiper.params.onAny );
- } // Save Dom lib
- swiper.$ = $; // Extend Swiper
- extend( swiper, {
- enabled: swiper.params.enabled,
- el: el,
- // Classes
- classNames: [],
- // Slides
- slides: $(),
- slidesGrid: [],
- snapGrid: [],
- slidesSizesGrid: [],
- // isDirection
- isHorizontal: function isHorizontal() {
- return swiper.params.direction === 'horizontal';
- },
- isVertical: function isVertical() {
- return swiper.params.direction === 'vertical';
- },
- // Indexes
- activeIndex: 0,
- realIndex: 0,
- //
- isBeginning: true,
- isEnd: false,
- // Props
- translate: 0,
- previousTranslate: 0,
- progress: 0,
- velocity: 0,
- animating: false,
- // Locks
- allowSlideNext: swiper.params.allowSlideNext,
- allowSlidePrev: swiper.params.allowSlidePrev,
- // Touch Events
- touchEvents: ( function touchEvents() {
- var touch = [ 'touchstart', 'touchmove', 'touchend', 'touchcancel' ];
- var desktop = [ 'mousedown', 'mousemove', 'mouseup' ];
- if ( swiper.support.pointerEvents ) {
- desktop = [ 'pointerdown', 'pointermove', 'pointerup' ];
- }
- swiper.touchEventsTouch = {
- start: touch[ 0 ],
- move: touch[ 1 ],
- end: touch[ 2 ],
- cancel: touch[ 3 ],
- };
- swiper.touchEventsDesktop = {
- start: desktop[ 0 ],
- move: desktop[ 1 ],
- end: desktop[ 2 ],
- };
- return swiper.support.touch || ! swiper.params.simulateTouch
- ? swiper.touchEventsTouch
- : swiper.touchEventsDesktop;
- } )(),
- touchEventsData: {
- isTouched: undefined,
- isMoved: undefined,
- allowTouchCallbacks: undefined,
- touchStartTime: undefined,
- isScrolling: undefined,
- currentTranslate: undefined,
- startTranslate: undefined,
- allowThresholdMove: undefined,
- // Form elements to match
- focusableElements: swiper.params.focusableElements,
- // Last click time
- lastClickTime: now(),
- clickTimeout: undefined,
- // Velocities
- velocities: [],
- allowMomentumBounce: undefined,
- isTouchEvent: undefined,
- startMoving: undefined,
- },
- // Clicks
- allowClick: true,
- // Touches
- allowTouchMove: swiper.params.allowTouchMove,
- touches: {
- startX: 0,
- startY: 0,
- currentX: 0,
- currentY: 0,
- diff: 0,
- },
- // Images
- imagesToLoad: [],
- imagesLoaded: 0,
- } ); // Install Modules
- swiper.useModules();
- swiper.emit( '_swiper' ); // Init
- if ( swiper.params.init ) {
- swiper.init();
- } // Return app instance
- return swiper;
- }
- var _proto = Swiper.prototype;
- _proto.enable = function enable() {
- var swiper = this;
- if ( swiper.enabled ) return;
- swiper.enabled = true;
- if ( swiper.params.grabCursor ) {
- swiper.setGrabCursor();
- }
- swiper.emit( 'enable' );
- };
- _proto.disable = function disable() {
- var swiper = this;
- if ( ! swiper.enabled ) return;
- swiper.enabled = false;
- if ( swiper.params.grabCursor ) {
- swiper.unsetGrabCursor();
- }
- swiper.emit( 'disable' );
- };
- _proto.setProgress = function setProgress( progress, speed ) {
- var swiper = this;
- progress = Math.min( Math.max( progress, 0 ), 1 );
- var min = swiper.minTranslate();
- var max = swiper.maxTranslate();
- var current = ( max - min ) * progress + min;
- swiper.translateTo( current, typeof speed === 'undefined' ? 0 : speed );
- swiper.updateActiveIndex();
- swiper.updateSlidesClasses();
- };
- _proto.emitContainerClasses = function emitContainerClasses() {
- var swiper = this;
- if ( ! swiper.params._emitClasses || ! swiper.el ) return;
- var classes = swiper.el.className.split( ' ' ).filter( function ( className ) {
- return (
- className.indexOf( 'swiper-container' ) === 0 ||
- className.indexOf( swiper.params.containerModifierClass ) === 0
- );
- } );
- swiper.emit( '_containerClasses', classes.join( ' ' ) );
- };
- _proto.getSlideClasses = function getSlideClasses( slideEl ) {
- var swiper = this;
- return slideEl.className
- .split( ' ' )
- .filter( function ( className ) {
- return (
- className.indexOf( 'swiper-slide' ) === 0 ||
- className.indexOf( swiper.params.slideClass ) === 0
- );
- } )
- .join( ' ' );
- };
- _proto.emitSlidesClasses = function emitSlidesClasses() {
- var swiper = this;
- if ( ! swiper.params._emitClasses || ! swiper.el ) return;
- var updates = [];
- swiper.slides.each( function ( slideEl ) {
- var classNames = swiper.getSlideClasses( slideEl );
- updates.push( {
- slideEl: slideEl,
- classNames: classNames,
- } );
- swiper.emit( '_slideClass', slideEl, classNames );
- } );
- swiper.emit( '_slideClasses', updates );
- };
- _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
- var swiper = this;
- var params = swiper.params,
- slides = swiper.slides,
- slidesGrid = swiper.slidesGrid,
- swiperSize = swiper.size,
- activeIndex = swiper.activeIndex;
- var spv = 1;
- if ( params.centeredSlides ) {
- var slideSize = slides[ activeIndex ].swiperSlideSize;
- var breakLoop;
- for ( var i = activeIndex + 1; i < slides.length; i += 1 ) {
- if ( slides[ i ] && ! breakLoop ) {
- slideSize += slides[ i ].swiperSlideSize;
- spv += 1;
- if ( slideSize > swiperSize ) breakLoop = true;
- }
- }
- for ( var _i = activeIndex - 1; _i >= 0; _i -= 1 ) {
- if ( slides[ _i ] && ! breakLoop ) {
- slideSize += slides[ _i ].swiperSlideSize;
- spv += 1;
- if ( slideSize > swiperSize ) breakLoop = true;
- }
- }
- } else {
- for ( var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1 ) {
- if ( slidesGrid[ _i2 ] - slidesGrid[ activeIndex ] < swiperSize ) {
- spv += 1;
- }
- }
- }
- return spv;
- };
- _proto.update = function update() {
- var swiper = this;
- if ( ! swiper || swiper.destroyed ) return;
- var snapGrid = swiper.snapGrid,
- params = swiper.params; // Breakpoints
- if ( params.breakpoints ) {
- swiper.setBreakpoint();
- }
- swiper.updateSize();
- swiper.updateSlides();
- swiper.updateProgress();
- swiper.updateSlidesClasses();
- function setTranslate() {
- var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
- var newTranslate = Math.min(
- Math.max( translateValue, swiper.maxTranslate() ),
- swiper.minTranslate()
- );
- swiper.setTranslate( newTranslate );
- swiper.updateActiveIndex();
- swiper.updateSlidesClasses();
- }
- var translated;
- if ( swiper.params.freeMode ) {
- setTranslate();
- if ( swiper.params.autoHeight ) {
- swiper.updateAutoHeight();
- }
- } else {
- if (
- ( swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1 ) &&
- swiper.isEnd &&
- ! swiper.params.centeredSlides
- ) {
- translated = swiper.slideTo( swiper.slides.length - 1, 0, false, true );
- } else {
- translated = swiper.slideTo( swiper.activeIndex, 0, false, true );
- }
- if ( ! translated ) {
- setTranslate();
- }
- }
- if ( params.watchOverflow && snapGrid !== swiper.snapGrid ) {
- swiper.checkOverflow();
- }
- swiper.emit( 'update' );
- };
- _proto.changeDirection = function changeDirection( newDirection, needUpdate ) {
- if ( needUpdate === void 0 ) {
- needUpdate = true;
- }
- var swiper = this;
- var currentDirection = swiper.params.direction;
- if ( ! newDirection ) {
- // eslint-disable-next-line
- newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
- }
- if (
- newDirection === currentDirection ||
- ( newDirection !== 'horizontal' && newDirection !== 'vertical' )
- ) {
- return swiper;
- }
- swiper.$el
- .removeClass( '' + swiper.params.containerModifierClass + currentDirection )
- .addClass( '' + swiper.params.containerModifierClass + newDirection );
- swiper.emitContainerClasses();
- swiper.params.direction = newDirection;
- swiper.slides.each( function ( slideEl ) {
- if ( newDirection === 'vertical' ) {
- slideEl.style.width = '';
- } else {
- slideEl.style.height = '';
- }
- } );
- swiper.emit( 'changeDirection' );
- if ( needUpdate ) swiper.update();
- return swiper;
- };
- _proto.mount = function mount( el ) {
- var swiper = this;
- if ( swiper.mounted ) return true; // Find el
- var $el = $( el || swiper.params.el );
- el = $el[ 0 ];
- if ( ! el ) {
- return false;
- }
- el.swiper = swiper;
- var getWrapperSelector = function getWrapperSelector() {
- return '.' + ( swiper.params.wrapperClass || '' ).trim().split( ' ' ).join( '.' );
- };
- var getWrapper = function getWrapper() {
- if ( el && el.shadowRoot && el.shadowRoot.querySelector ) {
- var res = $( el.shadowRoot.querySelector( getWrapperSelector() ) ); // Children needs to return slot items
- res.children = function ( options ) {
- return $el.children( options );
- };
- return res;
- }
- return $el.children( getWrapperSelector() );
- }; // Find Wrapper
- var $wrapperEl = getWrapper();
- if ( $wrapperEl.length === 0 && swiper.params.createElements ) {
- var document = getDocument();
- var wrapper = document.createElement( 'div' );
- $wrapperEl = $( wrapper );
- wrapper.className = swiper.params.wrapperClass;
- $el.append( wrapper );
- $el.children( '.' + swiper.params.slideClass ).each( function ( slideEl ) {
- $wrapperEl.append( slideEl );
- } );
- }
- extend( swiper, {
- $el: $el,
- el: el,
- $wrapperEl: $wrapperEl,
- wrapperEl: $wrapperEl[ 0 ],
- mounted: true,
- // RTL
- rtl: el.dir.toLowerCase() === 'rtl' || $el.css( 'direction' ) === 'rtl',
- rtlTranslate:
- swiper.params.direction === 'horizontal' &&
- ( el.dir.toLowerCase() === 'rtl' || $el.css( 'direction' ) === 'rtl' ),
- wrongRTL: $wrapperEl.css( 'display' ) === '-webkit-box',
- } );
- return true;
- };
- _proto.init = function init( el ) {
- var swiper = this;
- if ( swiper.initialized ) return swiper;
- var mounted = swiper.mount( el );
- if ( mounted === false ) return swiper;
- swiper.emit( 'beforeInit' ); // Set breakpoint
- if ( swiper.params.breakpoints ) {
- swiper.setBreakpoint();
- } // Add Classes
- swiper.addClasses(); // Create loop
- if ( swiper.params.loop ) {
- swiper.loopCreate();
- } // Update size
- swiper.updateSize(); // Update slides
- swiper.updateSlides();
- if ( swiper.params.watchOverflow ) {
- swiper.checkOverflow();
- } // Set Grab Cursor
- if ( swiper.params.grabCursor && swiper.enabled ) {
- swiper.setGrabCursor();
- }
- if ( swiper.params.preloadImages ) {
- swiper.preloadImages();
- } // Slide To Initial Slide
- if ( swiper.params.loop ) {
- swiper.slideTo(
- swiper.params.initialSlide + swiper.loopedSlides,
- 0,
- swiper.params.runCallbacksOnInit,
- false,
- true
- );
- } else {
- swiper.slideTo(
- swiper.params.initialSlide,
- 0,
- swiper.params.runCallbacksOnInit,
- false,
- true
- );
- } // Attach events
- swiper.attachEvents(); // Init Flag
- swiper.initialized = true; // Emit
- swiper.emit( 'init' );
- swiper.emit( 'afterInit' );
- return swiper;
- };
- _proto.destroy = function destroy( deleteInstance, cleanStyles ) {
- if ( deleteInstance === void 0 ) {
- deleteInstance = true;
- }
- if ( cleanStyles === void 0 ) {
- cleanStyles = true;
- }
- var swiper = this;
- var params = swiper.params,
- $el = swiper.$el,
- $wrapperEl = swiper.$wrapperEl,
- slides = swiper.slides;
- if ( typeof swiper.params === 'undefined' || swiper.destroyed ) {
- return null;
- }
- swiper.emit( 'beforeDestroy' ); // Init Flag
- swiper.initialized = false; // Detach events
- swiper.detachEvents(); // Destroy loop
- if ( params.loop ) {
- swiper.loopDestroy();
- } // Cleanup styles
- if ( cleanStyles ) {
- swiper.removeClasses();
- $el.removeAttr( 'style' );
- $wrapperEl.removeAttr( 'style' );
- if ( slides && slides.length ) {
- slides
- .removeClass(
- [
- params.slideVisibleClass,
- params.slideActiveClass,
- params.slideNextClass,
- params.slidePrevClass,
- ].join( ' ' )
- )
- .removeAttr( 'style' )
- .removeAttr( 'data-swiper-slide-index' );
- }
- }
- swiper.emit( 'destroy' ); // Detach emitter events
- Object.keys( swiper.eventsListeners ).forEach( function ( eventName ) {
- swiper.off( eventName );
- } );
- if ( deleteInstance !== false ) {
- swiper.$el[ 0 ].swiper = null;
- deleteProps( swiper );
- }
- swiper.destroyed = true;
- return null;
- };
- Swiper.extendDefaults = function extendDefaults( newDefaults ) {
- extend( extendedDefaults, newDefaults );
- };
- Swiper.installModule = function installModule( module ) {
- if ( ! Swiper.prototype.modules ) Swiper.prototype.modules = {};
- var name = module.name || Object.keys( Swiper.prototype.modules ).length + '_' + now();
- Swiper.prototype.modules[ name ] = module;
- };
- Swiper.use = function use( module ) {
- if ( Array.isArray( module ) ) {
- module.forEach( function ( m ) {
- return Swiper.installModule( m );
- } );
- return Swiper;
- }
- Swiper.installModule( module );
- return Swiper;
- };
- _createClass( Swiper, null, [
- {
- key: 'extendedDefaults',
- get: function get() {
- return extendedDefaults;
- },
- },
- {
- key: 'defaults',
- get: function get() {
- return defaults;
- },
- },
- ] );
- return Swiper;
- } )();
- Object.keys( prototypes ).forEach( function ( prototypeGroup ) {
- Object.keys( prototypes[ prototypeGroup ] ).forEach( function ( protoMethod ) {
- Swiper.prototype[ protoMethod ] = prototypes[ prototypeGroup ][ protoMethod ];
- } );
- } );
- Swiper.use( [ Resize, Observer$1 ] );
- var Navigation = {
- toggleEl: function toggleEl( $el, disabled ) {
- $el[ disabled ? 'addClass' : 'removeClass' ]( this.params.navigation.disabledClass );
- if ( $el[ 0 ] && $el[ 0 ].tagName === 'BUTTON' ) $el[ 0 ].disabled = disabled;
- },
- update: function update() {
- // Update Navigation Buttons
- var swiper = this;
- var params = swiper.params.navigation;
- var toggleEl = swiper.navigation.toggleEl;
- if ( swiper.params.loop ) return;
- var _swiper$navigation = swiper.navigation,
- $nextEl = _swiper$navigation.$nextEl,
- $prevEl = _swiper$navigation.$prevEl;
- if ( $prevEl && $prevEl.length > 0 ) {
- if ( swiper.isBeginning ) {
- toggleEl( $prevEl, true );
- } else {
- toggleEl( $prevEl, false );
- }
- if ( swiper.params.watchOverflow && swiper.enabled ) {
- $prevEl[ swiper.isLocked ? 'addClass' : 'removeClass' ]( params.lockClass );
- }
- }
- if ( $nextEl && $nextEl.length > 0 ) {
- if ( swiper.isEnd ) {
- toggleEl( $nextEl, true );
- } else {
- toggleEl( $nextEl, false );
- }
- if ( swiper.params.watchOverflow && swiper.enabled ) {
- $nextEl[ swiper.isLocked ? 'addClass' : 'removeClass' ]( params.lockClass );
- }
- }
- },
- onPrevClick: function onPrevClick( e ) {
- var swiper = this;
- e.preventDefault();
- if ( swiper.isBeginning && ! swiper.params.loop ) return;
- swiper.slidePrev();
- },
- onNextClick: function onNextClick( e ) {
- var swiper = this;
- e.preventDefault();
- if ( swiper.isEnd && ! swiper.params.loop ) return;
- swiper.slideNext();
- },
- init: function init() {
- var swiper = this;
- var params = swiper.params.navigation;
- swiper.params.navigation = createElementIfNotDefined(
- swiper.$el,
- swiper.params.navigation,
- swiper.params.createElements,
- {
- nextEl: 'swiper-button-next',
- prevEl: 'swiper-button-prev',
- }
- );
- if ( ! ( params.nextEl || params.prevEl ) ) return;
- var $nextEl;
- var $prevEl;
- if ( params.nextEl ) {
- $nextEl = $( params.nextEl );
- if (
- swiper.params.uniqueNavElements &&
- typeof params.nextEl === 'string' &&
- $nextEl.length > 1 &&
- swiper.$el.find( params.nextEl ).length === 1
- ) {
- $nextEl = swiper.$el.find( params.nextEl );
- }
- }
- if ( params.prevEl ) {
- $prevEl = $( params.prevEl );
- if (
- swiper.params.uniqueNavElements &&
- typeof params.prevEl === 'string' &&
- $prevEl.length > 1 &&
- swiper.$el.find( params.prevEl ).length === 1
- ) {
- $prevEl = swiper.$el.find( params.prevEl );
- }
- }
- if ( $nextEl && $nextEl.length > 0 ) {
- $nextEl.on( 'click', swiper.navigation.onNextClick );
- }
- if ( $prevEl && $prevEl.length > 0 ) {
- $prevEl.on( 'click', swiper.navigation.onPrevClick );
- }
- extend( swiper.navigation, {
- $nextEl: $nextEl,
- nextEl: $nextEl && $nextEl[ 0 ],
- $prevEl: $prevEl,
- prevEl: $prevEl && $prevEl[ 0 ],
- } );
- if ( ! swiper.enabled ) {
- if ( $nextEl ) $nextEl.addClass( params.lockClass );
- if ( $prevEl ) $prevEl.addClass( params.lockClass );
- }
- },
- destroy: function destroy() {
- var swiper = this;
- var _swiper$navigation2 = swiper.navigation,
- $nextEl = _swiper$navigation2.$nextEl,
- $prevEl = _swiper$navigation2.$prevEl;
- if ( $nextEl && $nextEl.length ) {
- $nextEl.off( 'click', swiper.navigation.onNextClick );
- $nextEl.removeClass( swiper.params.navigation.disabledClass );
- }
- if ( $prevEl && $prevEl.length ) {
- $prevEl.off( 'click', swiper.navigation.onPrevClick );
- $prevEl.removeClass( swiper.params.navigation.disabledClass );
- }
- },
- };
- var Navigation$1 = {
- name: 'navigation',
- params: {
- navigation: {
- nextEl: null,
- prevEl: null,
- hideOnClick: false,
- disabledClass: 'swiper-button-disabled',
- hiddenClass: 'swiper-button-hidden',
- lockClass: 'swiper-button-lock',
- },
- },
- create: function create() {
- var swiper = this;
- bindModuleMethods( swiper, {
- navigation: _extends( {}, Navigation ),
- } );
- },
- on: {
- init: function init( swiper ) {
- swiper.navigation.init();
- swiper.navigation.update();
- },
- toEdge: function toEdge( swiper ) {
- swiper.navigation.update();
- },
- fromEdge: function fromEdge( swiper ) {
- swiper.navigation.update();
- },
- destroy: function destroy( swiper ) {
- swiper.navigation.destroy();
- },
- 'enable disable': function enableDisable( swiper ) {
- var _swiper$navigation3 = swiper.navigation,
- $nextEl = _swiper$navigation3.$nextEl,
- $prevEl = _swiper$navigation3.$prevEl;
- if ( $nextEl ) {
- $nextEl[ swiper.enabled ? 'removeClass' : 'addClass' ](
- swiper.params.navigation.lockClass
- );
- }
- if ( $prevEl ) {
- $prevEl[ swiper.enabled ? 'removeClass' : 'addClass' ](
- swiper.params.navigation.lockClass
- );
- }
- },
- click: function click( swiper, e ) {
- var _swiper$navigation4 = swiper.navigation,
- $nextEl = _swiper$navigation4.$nextEl,
- $prevEl = _swiper$navigation4.$prevEl;
- var targetEl = e.target;
- if (
- swiper.params.navigation.hideOnClick &&
- ! $( targetEl ).is( $prevEl ) &&
- ! $( targetEl ).is( $nextEl )
- ) {
- if (
- swiper.pagination &&
- swiper.params.pagination &&
- swiper.params.pagination.clickable &&
- ( swiper.pagination.el === targetEl || swiper.pagination.el.contains( targetEl ) )
- )
- return;
- var isHidden;
- if ( $nextEl ) {
- isHidden = $nextEl.hasClass( swiper.params.navigation.hiddenClass );
- } else if ( $prevEl ) {
- isHidden = $prevEl.hasClass( swiper.params.navigation.hiddenClass );
- }
- if ( isHidden === true ) {
- swiper.emit( 'navigationShow' );
- } else {
- swiper.emit( 'navigationHide' );
- }
- if ( $nextEl ) {
- $nextEl.toggleClass( swiper.params.navigation.hiddenClass );
- }
- if ( $prevEl ) {
- $prevEl.toggleClass( swiper.params.navigation.hiddenClass );
- }
- }
- },
- },
- };
- var Pagination = {
- update: function update() {
- // Render || Update Pagination bullets/items
- var swiper = this;
- var rtl = swiper.rtl;
- var params = swiper.params.pagination;
- if (
- ! params.el ||
- ! swiper.pagination.el ||
- ! swiper.pagination.$el ||
- swiper.pagination.$el.length === 0
- )
- return;
- var slidesLength =
- swiper.virtual && swiper.params.virtual.enabled
- ? swiper.virtual.slides.length
- : swiper.slides.length;
- var $el = swiper.pagination.$el; // Current/Total
- var current;
- var total = swiper.params.loop
- ? Math.ceil( ( slidesLength - swiper.loopedSlides * 2 ) / swiper.params.slidesPerGroup )
- : swiper.snapGrid.length;
- if ( swiper.params.loop ) {
- current = Math.ceil(
- ( swiper.activeIndex - swiper.loopedSlides ) / swiper.params.slidesPerGroup
- );
- if ( current > slidesLength - 1 - swiper.loopedSlides * 2 ) {
- current -= slidesLength - swiper.loopedSlides * 2;
- }
- if ( current > total - 1 ) current -= total;
- if ( current < 0 && swiper.params.paginationType !== 'bullets' ) current = total + current;
- } else if ( typeof swiper.snapIndex !== 'undefined' ) {
- current = swiper.snapIndex;
- } else {
- current = swiper.activeIndex || 0;
- } // Types
- if (
- params.type === 'bullets' &&
- swiper.pagination.bullets &&
- swiper.pagination.bullets.length > 0
- ) {
- var bullets = swiper.pagination.bullets;
- var firstIndex;
- var lastIndex;
- var midIndex;
- if ( params.dynamicBullets ) {
- swiper.pagination.bulletSize = bullets
- .eq( 0 )
- [ swiper.isHorizontal() ? 'outerWidth' : 'outerHeight' ]( true );
- $el.css(
- swiper.isHorizontal() ? 'width' : 'height',
- swiper.pagination.bulletSize * ( params.dynamicMainBullets + 4 ) + 'px'
- );
- if ( params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined ) {
- swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
- if ( swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1 ) {
- swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
- } else if ( swiper.pagination.dynamicBulletIndex < 0 ) {
- swiper.pagination.dynamicBulletIndex = 0;
- }
- }
- firstIndex = current - swiper.pagination.dynamicBulletIndex;
- lastIndex = firstIndex + ( Math.min( bullets.length, params.dynamicMainBullets ) - 1 );
- midIndex = ( lastIndex + firstIndex ) / 2;
- }
- bullets.removeClass(
- params.bulletActiveClass +
- ' ' +
- params.bulletActiveClass +
- '-next ' +
- params.bulletActiveClass +
- '-next-next ' +
- params.bulletActiveClass +
- '-prev ' +
- params.bulletActiveClass +
- '-prev-prev ' +
- params.bulletActiveClass +
- '-main'
- );
- if ( $el.length > 1 ) {
- bullets.each( function ( bullet ) {
- var $bullet = $( bullet );
- var bulletIndex = $bullet.index();
- if ( bulletIndex === current ) {
- $bullet.addClass( params.bulletActiveClass );
- }
- if ( params.dynamicBullets ) {
- if ( bulletIndex >= firstIndex && bulletIndex <= lastIndex ) {
- $bullet.addClass( params.bulletActiveClass + '-main' );
- }
- if ( bulletIndex === firstIndex ) {
- $bullet
- .prev()
- .addClass( params.bulletActiveClass + '-prev' )
- .prev()
- .addClass( params.bulletActiveClass + '-prev-prev' );
- }
- if ( bulletIndex === lastIndex ) {
- $bullet
- .next()
- .addClass( params.bulletActiveClass + '-next' )
- .next()
- .addClass( params.bulletActiveClass + '-next-next' );
- }
- }
- } );
- } else {
- var $bullet = bullets.eq( current );
- var bulletIndex = $bullet.index();
- $bullet.addClass( params.bulletActiveClass );
- if ( params.dynamicBullets ) {
- var $firstDisplayedBullet = bullets.eq( firstIndex );
- var $lastDisplayedBullet = bullets.eq( lastIndex );
- for ( var i = firstIndex; i <= lastIndex; i += 1 ) {
- bullets.eq( i ).addClass( params.bulletActiveClass + '-main' );
- }
- if ( swiper.params.loop ) {
- if ( bulletIndex >= bullets.length - params.dynamicMainBullets ) {
- for ( var _i = params.dynamicMainBullets; _i >= 0; _i -= 1 ) {
- bullets.eq( bullets.length - _i ).addClass( params.bulletActiveClass + '-main' );
- }
- bullets
- .eq( bullets.length - params.dynamicMainBullets - 1 )
- .addClass( params.bulletActiveClass + '-prev' );
- } else {
- $firstDisplayedBullet
- .prev()
- .addClass( params.bulletActiveClass + '-prev' )
- .prev()
- .addClass( params.bulletActiveClass + '-prev-prev' );
- $lastDisplayedBullet
- .next()
- .addClass( params.bulletActiveClass + '-next' )
- .next()
- .addClass( params.bulletActiveClass + '-next-next' );
- }
- } else {
- $firstDisplayedBullet
- .prev()
- .addClass( params.bulletActiveClass + '-prev' )
- .prev()
- .addClass( params.bulletActiveClass + '-prev-prev' );
- $lastDisplayedBullet
- .next()
- .addClass( params.bulletActiveClass + '-next' )
- .next()
- .addClass( params.bulletActiveClass + '-next-next' );
- }
- }
- }
- if ( params.dynamicBullets ) {
- var dynamicBulletsLength = Math.min( bullets.length, params.dynamicMainBullets + 4 );
- var bulletsOffset =
- ( swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize ) /
- 2 -
- midIndex * swiper.pagination.bulletSize;
- var offsetProp = rtl ? 'right' : 'left';
- bullets.css( swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + 'px' );
- }
- }
- if ( params.type === 'fraction' ) {
- $el
- .find( classesToSelector( params.currentClass ) )
- .text( params.formatFractionCurrent( current + 1 ) );
- $el
- .find( classesToSelector( params.totalClass ) )
- .text( params.formatFractionTotal( total ) );
- }
- if ( params.type === 'progressbar' ) {
- var progressbarDirection;
- if ( params.progressbarOpposite ) {
- progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
- } else {
- progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
- }
- var scale = ( current + 1 ) / total;
- var scaleX = 1;
- var scaleY = 1;
- if ( progressbarDirection === 'horizontal' ) {
- scaleX = scale;
- } else {
- scaleY = scale;
- }
- $el
- .find( classesToSelector( params.progressbarFillClass ) )
- .transform( 'translate3d(0,0,0) scaleX(' + scaleX + ') scaleY(' + scaleY + ')' )
- .transition( swiper.params.speed );
- }
- if ( params.type === 'custom' && params.renderCustom ) {
- $el.html( params.renderCustom( swiper, current + 1, total ) );
- swiper.emit( 'paginationRender', $el[ 0 ] );
- } else {
- swiper.emit( 'paginationUpdate', $el[ 0 ] );
- }
- if ( swiper.params.watchOverflow && swiper.enabled ) {
- $el[ swiper.isLocked ? 'addClass' : 'removeClass' ]( params.lockClass );
- }
- },
- render: function render() {
- // Render Container
- var swiper = this;
- var params = swiper.params.pagination;
- if (
- ! params.el ||
- ! swiper.pagination.el ||
- ! swiper.pagination.$el ||
- swiper.pagination.$el.length === 0
- )
- return;
- var slidesLength =
- swiper.virtual && swiper.params.virtual.enabled
- ? swiper.virtual.slides.length
- : swiper.slides.length;
- var $el = swiper.pagination.$el;
- var paginationHTML = '';
- if ( params.type === 'bullets' ) {
- var numberOfBullets = swiper.params.loop
- ? Math.ceil( ( slidesLength - swiper.loopedSlides * 2 ) / swiper.params.slidesPerGroup )
- : swiper.snapGrid.length;
- if ( swiper.params.freeMode && ! swiper.params.loop && numberOfBullets > slidesLength ) {
- numberOfBullets = slidesLength;
- }
- for ( var i = 0; i < numberOfBullets; i += 1 ) {
- if ( params.renderBullet ) {
- paginationHTML += params.renderBullet.call( swiper, i, params.bulletClass );
- } else {
- paginationHTML +=
- '<' +
- params.bulletElement +
- ' class="' +
- params.bulletClass +
- '"></' +
- params.bulletElement +
- '>';
- }
- }
- $el.html( paginationHTML );
- swiper.pagination.bullets = $el.find( classesToSelector( params.bulletClass ) );
- }
- if ( params.type === 'fraction' ) {
- if ( params.renderFraction ) {
- paginationHTML = params.renderFraction.call(
- swiper,
- params.currentClass,
- params.totalClass
- );
- } else {
- paginationHTML =
- '<span class="' +
- params.currentClass +
- '"></span>' +
- ' / ' +
- ( '<span class="' + params.totalClass + '"></span>' );
- }
- $el.html( paginationHTML );
- }
- if ( params.type === 'progressbar' ) {
- if ( params.renderProgressbar ) {
- paginationHTML = params.renderProgressbar.call( swiper, params.progressbarFillClass );
- } else {
- paginationHTML = '<span class="' + params.progressbarFillClass + '"></span>';
- }
- $el.html( paginationHTML );
- }
- if ( params.type !== 'custom' ) {
- swiper.emit( 'paginationRender', swiper.pagination.$el[ 0 ] );
- }
- },
- init: function init() {
- var swiper = this;
- swiper.params.pagination = createElementIfNotDefined(
- swiper.$el,
- swiper.params.pagination,
- swiper.params.createElements,
- {
- el: 'swiper-pagination',
- }
- );
- var params = swiper.params.pagination;
- if ( ! params.el ) return;
- var $el = $( params.el );
- if ( $el.length === 0 ) return;
- if ( swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 ) {
- $el = swiper.$el.find( params.el );
- }
- if ( params.type === 'bullets' && params.clickable ) {
- $el.addClass( params.clickableClass );
- }
- $el.addClass( params.modifierClass + params.type );
- if ( params.type === 'bullets' && params.dynamicBullets ) {
- $el.addClass( '' + params.modifierClass + params.type + '-dynamic' );
- swiper.pagination.dynamicBulletIndex = 0;
- if ( params.dynamicMainBullets < 1 ) {
- params.dynamicMainBullets = 1;
- }
- }
- if ( params.type === 'progressbar' && params.progressbarOpposite ) {
- $el.addClass( params.progressbarOppositeClass );
- }
- if ( params.clickable ) {
- $el.on( 'click', classesToSelector( params.bulletClass ), function onClick( e ) {
- e.preventDefault();
- var index = $( this ).index() * swiper.params.slidesPerGroup;
- if ( swiper.params.loop ) index += swiper.loopedSlides;
- swiper.slideTo( index );
- } );
- }
- extend( swiper.pagination, {
- $el: $el,
- el: $el[ 0 ],
- } );
- if ( ! swiper.enabled ) {
- $el.addClass( params.lockClass );
- }
- },
- destroy: function destroy() {
- var swiper = this;
- var params = swiper.params.pagination;
- if (
- ! params.el ||
- ! swiper.pagination.el ||
- ! swiper.pagination.$el ||
- swiper.pagination.$el.length === 0
- )
- return;
- var $el = swiper.pagination.$el;
- $el.removeClass( params.hiddenClass );
- $el.removeClass( params.modifierClass + params.type );
- if ( swiper.pagination.bullets )
- swiper.pagination.bullets.removeClass( params.bulletActiveClass );
- if ( params.clickable ) {
- $el.off( 'click', classesToSelector( params.bulletClass ) );
- }
- },
- };
- var Pagination$1 = {
- name: 'pagination',
- params: {
- pagination: {
- el: null,
- bulletElement: 'span',
- clickable: false,
- hideOnClick: false,
- renderBullet: null,
- renderProgressbar: null,
- renderFraction: null,
- renderCustom: null,
- progressbarOpposite: false,
- type: 'bullets',
- // 'bullets' or 'progressbar' or 'fraction' or 'custom'
- dynamicBullets: false,
- dynamicMainBullets: 1,
- formatFractionCurrent: function formatFractionCurrent( number ) {
- return number;
- },
- formatFractionTotal: function formatFractionTotal( number ) {
- return number;
- },
- bulletClass: 'swiper-pagination-bullet',
- bulletActiveClass: 'swiper-pagination-bullet-active',
- modifierClass: 'swiper-pagination-',
- // NEW
- currentClass: 'swiper-pagination-current',
- totalClass: 'swiper-pagination-total',
- hiddenClass: 'swiper-pagination-hidden',
- progressbarFillClass: 'swiper-pagination-progressbar-fill',
- progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
- clickableClass: 'swiper-pagination-clickable',
- // NEW
- lockClass: 'swiper-pagination-lock',
- },
- },
- create: function create() {
- var swiper = this;
- bindModuleMethods( swiper, {
- pagination: _extends(
- {
- dynamicBulletIndex: 0,
- },
- Pagination
- ),
- } );
- },
- on: {
- init: function init( swiper ) {
- swiper.pagination.init();
- swiper.pagination.render();
- swiper.pagination.update();
- },
- activeIndexChange: function activeIndexChange( swiper ) {
- if ( swiper.params.loop ) {
- swiper.pagination.update();
- } else if ( typeof swiper.snapIndex === 'undefined' ) {
- swiper.pagination.update();
- }
- },
- snapIndexChange: function snapIndexChange( swiper ) {
- if ( ! swiper.params.loop ) {
- swiper.pagination.update();
- }
- },
- slidesLengthChange: function slidesLengthChange( swiper ) {
- if ( swiper.params.loop ) {
- swiper.pagination.render();
- swiper.pagination.update();
- }
- },
- snapGridLengthChange: function snapGridLengthChange( swiper ) {
- if ( ! swiper.params.loop ) {
- swiper.pagination.render();
- swiper.pagination.update();
- }
- },
- destroy: function destroy( swiper ) {
- swiper.pagination.destroy();
- },
- 'enable disable': function enableDisable( swiper ) {
- var $el = swiper.pagination.$el;
- if ( $el ) {
- $el[ swiper.enabled ? 'removeClass' : 'addClass' ]( swiper.params.pagination.lockClass );
- }
- },
- click: function click( swiper, e ) {
- var targetEl = e.target;
- if (
- swiper.params.pagination.el &&
- swiper.params.pagination.hideOnClick &&
- swiper.pagination.$el.length > 0 &&
- ! $( targetEl ).hasClass( swiper.params.pagination.bulletClass )
- ) {
- if (
- swiper.navigation &&
- ( ( swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl ) ||
- ( swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl ) )
- )
- return;
- var isHidden = swiper.pagination.$el.hasClass( swiper.params.pagination.hiddenClass );
- if ( isHidden === true ) {
- swiper.emit( 'paginationShow' );
- } else {
- swiper.emit( 'paginationHide' );
- }
- swiper.pagination.$el.toggleClass( swiper.params.pagination.hiddenClass );
- }
- },
- },
- };
- var Zoom = {
- // Calc Scale From Multi-touches
- getDistanceBetweenTouches: function getDistanceBetweenTouches( e ) {
- if ( e.targetTouches.length < 2 ) return 1;
- var x1 = e.targetTouches[ 0 ].pageX;
- var y1 = e.targetTouches[ 0 ].pageY;
- var x2 = e.targetTouches[ 1 ].pageX;
- var y2 = e.targetTouches[ 1 ].pageY;
- var distance = Math.sqrt( Math.pow( x2 - x1, 2 ) + Math.pow( y2 - y1, 2 ) );
- return distance;
- },
- // Events
- onGestureStart: function onGestureStart( e ) {
- var swiper = this;
- var support = swiper.support;
- var params = swiper.params.zoom;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture;
- zoom.fakeGestureTouched = false;
- zoom.fakeGestureMoved = false;
- if ( ! support.gestures ) {
- if (
- e.type !== 'touchstart' ||
- ( e.type === 'touchstart' && e.targetTouches.length < 2 )
- ) {
- return;
- }
- zoom.fakeGestureTouched = true;
- gesture.scaleStart = Zoom.getDistanceBetweenTouches( e );
- }
- if ( ! gesture.$slideEl || ! gesture.$slideEl.length ) {
- gesture.$slideEl = $( e.target ).closest( '.' + swiper.params.slideClass );
- if ( gesture.$slideEl.length === 0 )
- gesture.$slideEl = swiper.slides.eq( swiper.activeIndex );
- gesture.$imageEl = gesture.$slideEl.find(
- 'img, svg, canvas, picture, .swiper-zoom-target'
- );
- gesture.$imageWrapEl = gesture.$imageEl.parent( '.' + params.containerClass );
- gesture.maxRatio = gesture.$imageWrapEl.attr( 'data-swiper-zoom' ) || params.maxRatio;
- if ( gesture.$imageWrapEl.length === 0 ) {
- gesture.$imageEl = undefined;
- return;
- }
- }
- if ( gesture.$imageEl ) {
- gesture.$imageEl.transition( 0 );
- }
- swiper.zoom.isScaling = true;
- },
- onGestureChange: function onGestureChange( e ) {
- var swiper = this;
- var support = swiper.support;
- var params = swiper.params.zoom;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture;
- if ( ! support.gestures ) {
- if ( e.type !== 'touchmove' || ( e.type === 'touchmove' && e.targetTouches.length < 2 ) ) {
- return;
- }
- zoom.fakeGestureMoved = true;
- gesture.scaleMove = Zoom.getDistanceBetweenTouches( e );
- }
- if ( ! gesture.$imageEl || gesture.$imageEl.length === 0 ) {
- if ( e.type === 'gesturechange' ) zoom.onGestureStart( e );
- return;
- }
- if ( support.gestures ) {
- zoom.scale = e.scale * zoom.currentScale;
- } else {
- zoom.scale = ( gesture.scaleMove / gesture.scaleStart ) * zoom.currentScale;
- }
- if ( zoom.scale > gesture.maxRatio ) {
- zoom.scale = gesture.maxRatio - 1 + Math.pow( zoom.scale - gesture.maxRatio + 1, 0.5 );
- }
- if ( zoom.scale < params.minRatio ) {
- zoom.scale = params.minRatio + 1 - Math.pow( params.minRatio - zoom.scale + 1, 0.5 );
- }
- gesture.$imageEl.transform( 'translate3d(0,0,0) scale(' + zoom.scale + ')' );
- },
- onGestureEnd: function onGestureEnd( e ) {
- var swiper = this;
- var device = swiper.device;
- var support = swiper.support;
- var params = swiper.params.zoom;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture;
- if ( ! support.gestures ) {
- if ( ! zoom.fakeGestureTouched || ! zoom.fakeGestureMoved ) {
- return;
- }
- if (
- e.type !== 'touchend' ||
- ( e.type === 'touchend' && e.changedTouches.length < 2 && ! device.android )
- ) {
- return;
- }
- zoom.fakeGestureTouched = false;
- zoom.fakeGestureMoved = false;
- }
- if ( ! gesture.$imageEl || gesture.$imageEl.length === 0 ) return;
- zoom.scale = Math.max( Math.min( zoom.scale, gesture.maxRatio ), params.minRatio );
- gesture.$imageEl
- .transition( swiper.params.speed )
- .transform( 'translate3d(0,0,0) scale(' + zoom.scale + ')' );
- zoom.currentScale = zoom.scale;
- zoom.isScaling = false;
- if ( zoom.scale === 1 ) gesture.$slideEl = undefined;
- },
- onTouchStart: function onTouchStart( e ) {
- var swiper = this;
- var device = swiper.device;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture,
- image = zoom.image;
- if ( ! gesture.$imageEl || gesture.$imageEl.length === 0 ) return;
- if ( image.isTouched ) return;
- if ( device.android && e.cancelable ) e.preventDefault();
- image.isTouched = true;
- image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[ 0 ].pageX : e.pageX;
- image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[ 0 ].pageY : e.pageY;
- },
- onTouchMove: function onTouchMove( e ) {
- var swiper = this;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture,
- image = zoom.image,
- velocity = zoom.velocity;
- if ( ! gesture.$imageEl || gesture.$imageEl.length === 0 ) return;
- swiper.allowClick = false;
- if ( ! image.isTouched || ! gesture.$slideEl ) return;
- if ( ! image.isMoved ) {
- image.width = gesture.$imageEl[ 0 ].offsetWidth;
- image.height = gesture.$imageEl[ 0 ].offsetHeight;
- image.startX = getTranslate( gesture.$imageWrapEl[ 0 ], 'x' ) || 0;
- image.startY = getTranslate( gesture.$imageWrapEl[ 0 ], 'y' ) || 0;
- gesture.slideWidth = gesture.$slideEl[ 0 ].offsetWidth;
- gesture.slideHeight = gesture.$slideEl[ 0 ].offsetHeight;
- gesture.$imageWrapEl.transition( 0 );
- if ( swiper.rtl ) {
- image.startX = -image.startX;
- image.startY = -image.startY;
- }
- } // Define if we need image drag
- var scaledWidth = image.width * zoom.scale;
- var scaledHeight = image.height * zoom.scale;
- if ( scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight ) return;
- image.minX = Math.min( gesture.slideWidth / 2 - scaledWidth / 2, 0 );
- image.maxX = -image.minX;
- image.minY = Math.min( gesture.slideHeight / 2 - scaledHeight / 2, 0 );
- image.maxY = -image.minY;
- image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[ 0 ].pageX : e.pageX;
- image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[ 0 ].pageY : e.pageY;
- if ( ! image.isMoved && ! zoom.isScaling ) {
- if (
- swiper.isHorizontal() &&
- ( ( Math.floor( image.minX ) === Math.floor( image.startX ) &&
- image.touchesCurrent.x < image.touchesStart.x ) ||
- ( Math.floor( image.maxX ) === Math.floor( image.startX ) &&
- image.touchesCurrent.x > image.touchesStart.x ) )
- ) {
- image.isTouched = false;
- return;
- }
- if (
- ! swiper.isHorizontal() &&
- ( ( Math.floor( image.minY ) === Math.floor( image.startY ) &&
- image.touchesCurrent.y < image.touchesStart.y ) ||
- ( Math.floor( image.maxY ) === Math.floor( image.startY ) &&
- image.touchesCurrent.y > image.touchesStart.y ) )
- ) {
- image.isTouched = false;
- return;
- }
- }
- if ( e.cancelable ) {
- e.preventDefault();
- }
- e.stopPropagation();
- image.isMoved = true;
- image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
- image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
- if ( image.currentX < image.minX ) {
- image.currentX = image.minX + 1 - Math.pow( image.minX - image.currentX + 1, 0.8 );
- }
- if ( image.currentX > image.maxX ) {
- image.currentX = image.maxX - 1 + Math.pow( image.currentX - image.maxX + 1, 0.8 );
- }
- if ( image.currentY < image.minY ) {
- image.currentY = image.minY + 1 - Math.pow( image.minY - image.currentY + 1, 0.8 );
- }
- if ( image.currentY > image.maxY ) {
- image.currentY = image.maxY - 1 + Math.pow( image.currentY - image.maxY + 1, 0.8 );
- } // Velocity
- if ( ! velocity.prevPositionX ) velocity.prevPositionX = image.touchesCurrent.x;
- if ( ! velocity.prevPositionY ) velocity.prevPositionY = image.touchesCurrent.y;
- if ( ! velocity.prevTime ) velocity.prevTime = Date.now();
- velocity.x =
- ( image.touchesCurrent.x - velocity.prevPositionX ) /
- ( Date.now() - velocity.prevTime ) /
- 2;
- velocity.y =
- ( image.touchesCurrent.y - velocity.prevPositionY ) /
- ( Date.now() - velocity.prevTime ) /
- 2;
- if ( Math.abs( image.touchesCurrent.x - velocity.prevPositionX ) < 2 ) velocity.x = 0;
- if ( Math.abs( image.touchesCurrent.y - velocity.prevPositionY ) < 2 ) velocity.y = 0;
- velocity.prevPositionX = image.touchesCurrent.x;
- velocity.prevPositionY = image.touchesCurrent.y;
- velocity.prevTime = Date.now();
- gesture.$imageWrapEl.transform(
- 'translate3d(' + image.currentX + 'px, ' + image.currentY + 'px,0)'
- );
- },
- onTouchEnd: function onTouchEnd() {
- var swiper = this;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture,
- image = zoom.image,
- velocity = zoom.velocity;
- if ( ! gesture.$imageEl || gesture.$imageEl.length === 0 ) return;
- if ( ! image.isTouched || ! image.isMoved ) {
- image.isTouched = false;
- image.isMoved = false;
- return;
- }
- image.isTouched = false;
- image.isMoved = false;
- var momentumDurationX = 300;
- var momentumDurationY = 300;
- var momentumDistanceX = velocity.x * momentumDurationX;
- var newPositionX = image.currentX + momentumDistanceX;
- var momentumDistanceY = velocity.y * momentumDurationY;
- var newPositionY = image.currentY + momentumDistanceY; // Fix duration
- if ( velocity.x !== 0 )
- momentumDurationX = Math.abs( ( newPositionX - image.currentX ) / velocity.x );
- if ( velocity.y !== 0 )
- momentumDurationY = Math.abs( ( newPositionY - image.currentY ) / velocity.y );
- var momentumDuration = Math.max( momentumDurationX, momentumDurationY );
- image.currentX = newPositionX;
- image.currentY = newPositionY; // Define if we need image drag
- var scaledWidth = image.width * zoom.scale;
- var scaledHeight = image.height * zoom.scale;
- image.minX = Math.min( gesture.slideWidth / 2 - scaledWidth / 2, 0 );
- image.maxX = -image.minX;
- image.minY = Math.min( gesture.slideHeight / 2 - scaledHeight / 2, 0 );
- image.maxY = -image.minY;
- image.currentX = Math.max( Math.min( image.currentX, image.maxX ), image.minX );
- image.currentY = Math.max( Math.min( image.currentY, image.maxY ), image.minY );
- gesture.$imageWrapEl
- .transition( momentumDuration )
- .transform( 'translate3d(' + image.currentX + 'px, ' + image.currentY + 'px,0)' );
- },
- onTransitionEnd: function onTransitionEnd() {
- var swiper = this;
- var zoom = swiper.zoom;
- var gesture = zoom.gesture;
- if ( gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex ) {
- if ( gesture.$imageEl ) {
- gesture.$imageEl.transform( 'translate3d(0,0,0) scale(1)' );
- }
- if ( gesture.$imageWrapEl ) {
- gesture.$imageWrapEl.transform( 'translate3d(0,0,0)' );
- }
- zoom.scale = 1;
- zoom.currentScale = 1;
- gesture.$slideEl = undefined;
- gesture.$imageEl = undefined;
- gesture.$imageWrapEl = undefined;
- }
- },
- // Toggle Zoom
- toggle: function toggle( e ) {
- var swiper = this;
- var zoom = swiper.zoom;
- if ( zoom.scale && zoom.scale !== 1 ) {
- // Zoom Out
- zoom.out();
- } else {
- // Zoom In
- zoom.in( e );
- }
- },
- in: function _in( e ) {
- var swiper = this;
- var window = getWindow();
- var zoom = swiper.zoom;
- var params = swiper.params.zoom;
- var gesture = zoom.gesture,
- image = zoom.image;
- if ( ! gesture.$slideEl ) {
- if ( swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ) {
- gesture.$slideEl = swiper.$wrapperEl.children( '.' + swiper.params.slideActiveClass );
- } else {
- gesture.$slideEl = swiper.slides.eq( swiper.activeIndex );
- }
- gesture.$imageEl = gesture.$slideEl.find(
- 'img, svg, canvas, picture, .swiper-zoom-target'
- );
- gesture.$imageWrapEl = gesture.$imageEl.parent( '.' + params.containerClass );
- }
- if (
- ! gesture.$imageEl ||
- gesture.$imageEl.length === 0 ||
- ! gesture.$imageWrapEl ||
- gesture.$imageWrapEl.length === 0
- )
- return;
- gesture.$slideEl.addClass( '' + params.zoomedSlideClass );
- var touchX;
- var touchY;
- var offsetX;
- var offsetY;
- var diffX;
- var diffY;
- var translateX;
- var translateY;
- var imageWidth;
- var imageHeight;
- var scaledWidth;
- var scaledHeight;
- var translateMinX;
- var translateMinY;
- var translateMaxX;
- var translateMaxY;
- var slideWidth;
- var slideHeight;
- if ( typeof image.touchesStart.x === 'undefined' && e ) {
- touchX = e.type === 'touchend' ? e.changedTouches[ 0 ].pageX : e.pageX;
- touchY = e.type === 'touchend' ? e.changedTouches[ 0 ].pageY : e.pageY;
- } else {
- touchX = image.touchesStart.x;
- touchY = image.touchesStart.y;
- }
- zoom.scale = gesture.$imageWrapEl.attr( 'data-swiper-zoom' ) || params.maxRatio;
- zoom.currentScale = gesture.$imageWrapEl.attr( 'data-swiper-zoom' ) || params.maxRatio;
- if ( e ) {
- slideWidth = gesture.$slideEl[ 0 ].offsetWidth;
- slideHeight = gesture.$slideEl[ 0 ].offsetHeight;
- offsetX = gesture.$slideEl.offset().left + window.scrollX;
- offsetY = gesture.$slideEl.offset().top + window.scrollY;
- diffX = offsetX + slideWidth / 2 - touchX;
- diffY = offsetY + slideHeight / 2 - touchY;
- imageWidth = gesture.$imageEl[ 0 ].offsetWidth;
- imageHeight = gesture.$imageEl[ 0 ].offsetHeight;
- scaledWidth = imageWidth * zoom.scale;
- scaledHeight = imageHeight * zoom.scale;
- translateMinX = Math.min( slideWidth / 2 - scaledWidth / 2, 0 );
- translateMinY = Math.min( slideHeight / 2 - scaledHeight / 2, 0 );
- translateMaxX = -translateMinX;
- translateMaxY = -translateMinY;
- translateX = diffX * zoom.scale;
- translateY = diffY * zoom.scale;
- if ( translateX < translateMinX ) {
- translateX = translateMinX;
- }
- if ( translateX > translateMaxX ) {
- translateX = translateMaxX;
- }
- if ( translateY < translateMinY ) {
- translateY = translateMinY;
- }
- if ( translateY > translateMaxY ) {
- translateY = translateMaxY;
- }
- } else {
- translateX = 0;
- translateY = 0;
- }
- gesture.$imageWrapEl
- .transition( 300 )
- .transform( 'translate3d(' + translateX + 'px, ' + translateY + 'px,0)' );
- gesture.$imageEl
- .transition( 300 )
- .transform( 'translate3d(0,0,0) scale(' + zoom.scale + ')' );
- },
- out: function out() {
- var swiper = this;
- var zoom = swiper.zoom;
- var params = swiper.params.zoom;
- var gesture = zoom.gesture;
- if ( ! gesture.$slideEl ) {
- if ( swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ) {
- gesture.$slideEl = swiper.$wrapperEl.children( '.' + swiper.params.slideActiveClass );
- } else {
- gesture.$slideEl = swiper.slides.eq( swiper.activeIndex );
- }
- gesture.$imageEl = gesture.$slideEl.find(
- 'img, svg, canvas, picture, .swiper-zoom-target'
- );
- gesture.$imageWrapEl = gesture.$imageEl.parent( '.' + params.containerClass );
- }
- if (
- ! gesture.$imageEl ||
- gesture.$imageEl.length === 0 ||
- ! gesture.$imageWrapEl ||
- gesture.$imageWrapEl.length === 0
- )
- return;
- zoom.scale = 1;
- zoom.currentScale = 1;
- gesture.$imageWrapEl.transition( 300 ).transform( 'translate3d(0,0,0)' );
- gesture.$imageEl.transition( 300 ).transform( 'translate3d(0,0,0) scale(1)' );
- gesture.$slideEl.removeClass( '' + params.zoomedSlideClass );
- gesture.$slideEl = undefined;
- },
- toggleGestures: function toggleGestures( method ) {
- var swiper = this;
- var zoom = swiper.zoom;
- var selector = zoom.slideSelector,
- passive = zoom.passiveListener;
- swiper.$wrapperEl[ method ]( 'gesturestart', selector, zoom.onGestureStart, passive );
- swiper.$wrapperEl[ method ]( 'gesturechange', selector, zoom.onGestureChange, passive );
- swiper.$wrapperEl[ method ]( 'gestureend', selector, zoom.onGestureEnd, passive );
- },
- enableGestures: function enableGestures() {
- if ( this.zoom.gesturesEnabled ) return;
- this.zoom.gesturesEnabled = true;
- this.zoom.toggleGestures( 'on' );
- },
- disableGestures: function disableGestures() {
- if ( ! this.zoom.gesturesEnabled ) return;
- this.zoom.gesturesEnabled = false;
- this.zoom.toggleGestures( 'off' );
- },
- // Attach/Detach Events
- enable: function enable() {
- var swiper = this;
- var support = swiper.support;
- var zoom = swiper.zoom;
- if ( zoom.enabled ) return;
- zoom.enabled = true;
- var passiveListener =
- swiper.touchEvents.start === 'touchstart' &&
- support.passiveListener &&
- swiper.params.passiveListeners
- ? {
- passive: true,
- capture: false,
- }
- : false;
- var activeListenerWithCapture = support.passiveListener
- ? {
- passive: false,
- capture: true,
- }
- : true;
- var slideSelector = '.' + swiper.params.slideClass;
- swiper.zoom.passiveListener = passiveListener;
- swiper.zoom.slideSelector = slideSelector; // Scale image
- if ( support.gestures ) {
- swiper.$wrapperEl.on(
- swiper.touchEvents.start,
- swiper.zoom.enableGestures,
- passiveListener
- );
- swiper.$wrapperEl.on(
- swiper.touchEvents.end,
- swiper.zoom.disableGestures,
- passiveListener
- );
- } else if ( swiper.touchEvents.start === 'touchstart' ) {
- swiper.$wrapperEl.on(
- swiper.touchEvents.start,
- slideSelector,
- zoom.onGestureStart,
- passiveListener
- );
- swiper.$wrapperEl.on(
- swiper.touchEvents.move,
- slideSelector,
- zoom.onGestureChange,
- activeListenerWithCapture
- );
- swiper.$wrapperEl.on(
- swiper.touchEvents.end,
- slideSelector,
- zoom.onGestureEnd,
- passiveListener
- );
- if ( swiper.touchEvents.cancel ) {
- swiper.$wrapperEl.on(
- swiper.touchEvents.cancel,
- slideSelector,
- zoom.onGestureEnd,
- passiveListener
- );
- }
- } // Move image
- swiper.$wrapperEl.on(
- swiper.touchEvents.move,
- '.' + swiper.params.zoom.containerClass,
- zoom.onTouchMove,
- activeListenerWithCapture
- );
- },
- disable: function disable() {
- var swiper = this;
- var zoom = swiper.zoom;
- if ( ! zoom.enabled ) return;
- var support = swiper.support;
- swiper.zoom.enabled = false;
- var passiveListener =
- swiper.touchEvents.start === 'touchstart' &&
- support.passiveListener &&
- swiper.params.passiveListeners
- ? {
- passive: true,
- capture: false,
- }
- : false;
- var activeListenerWithCapture = support.passiveListener
- ? {
- passive: false,
- capture: true,
- }
- : true;
- var slideSelector = '.' + swiper.params.slideClass; // Scale image
- if ( support.gestures ) {
- swiper.$wrapperEl.off(
- swiper.touchEvents.start,
- swiper.zoom.enableGestures,
- passiveListener
- );
- swiper.$wrapperEl.off(
- swiper.touchEvents.end,
- swiper.zoom.disableGestures,
- passiveListener
- );
- } else if ( swiper.touchEvents.start === 'touchstart' ) {
- swiper.$wrapperEl.off(
- swiper.touchEvents.start,
- slideSelector,
- zoom.onGestureStart,
- passiveListener
- );
- swiper.$wrapperEl.off(
- swiper.touchEvents.move,
- slideSelector,
- zoom.onGestureChange,
- activeListenerWithCapture
- );
- swiper.$wrapperEl.off(
- swiper.touchEvents.end,
- slideSelector,
- zoom.onGestureEnd,
- passiveListener
- );
- if ( swiper.touchEvents.cancel ) {
- swiper.$wrapperEl.off(
- swiper.touchEvents.cancel,
- slideSelector,
- zoom.onGestureEnd,
- passiveListener
- );
- }
- } // Move image
- swiper.$wrapperEl.off(
- swiper.touchEvents.move,
- '.' + swiper.params.zoom.containerClass,
- zoom.onTouchMove,
- activeListenerWithCapture
- );
- },
- };
- var Zoom$1 = {
- name: 'zoom',
- params: {
- zoom: {
- enabled: false,
- maxRatio: 3,
- minRatio: 1,
- toggle: true,
- containerClass: 'swiper-zoom-container',
- zoomedSlideClass: 'swiper-slide-zoomed',
- },
- },
- create: function create() {
- var swiper = this;
- bindModuleMethods( swiper, {
- zoom: _extends(
- {
- enabled: false,
- scale: 1,
- currentScale: 1,
- isScaling: false,
- gesture: {
- $slideEl: undefined,
- slideWidth: undefined,
- slideHeight: undefined,
- $imageEl: undefined,
- $imageWrapEl: undefined,
- maxRatio: 3,
- },
- image: {
- isTouched: undefined,
- isMoved: undefined,
- currentX: undefined,
- currentY: undefined,
- minX: undefined,
- minY: undefined,
- maxX: undefined,
- maxY: undefined,
- width: undefined,
- height: undefined,
- startX: undefined,
- startY: undefined,
- touchesStart: {},
- touchesCurrent: {},
- },
- velocity: {
- x: undefined,
- y: undefined,
- prevPositionX: undefined,
- prevPositionY: undefined,
- prevTime: undefined,
- },
- },
- Zoom
- ),
- } );
- var scale = 1;
- Object.defineProperty( swiper.zoom, 'scale', {
- get: function get() {
- return scale;
- },
- set: function set( value ) {
- if ( scale !== value ) {
- var imageEl = swiper.zoom.gesture.$imageEl
- ? swiper.zoom.gesture.$imageEl[ 0 ]
- : undefined;
- var slideEl = swiper.zoom.gesture.$slideEl
- ? swiper.zoom.gesture.$slideEl[ 0 ]
- : undefined;
- swiper.emit( 'zoomChange', value, imageEl, slideEl );
- }
- scale = value;
- },
- } );
- },
- on: {
- init: function init( swiper ) {
- if ( swiper.params.zoom.enabled ) {
- swiper.zoom.enable();
- }
- },
- destroy: function destroy( swiper ) {
- swiper.zoom.disable();
- },
- touchStart: function touchStart( swiper, e ) {
- if ( ! swiper.zoom.enabled ) return;
- swiper.zoom.onTouchStart( e );
- },
- touchEnd: function touchEnd( swiper, e ) {
- if ( ! swiper.zoom.enabled ) return;
- swiper.zoom.onTouchEnd( e );
- },
- doubleTap: function doubleTap( swiper, e ) {
- if (
- ! swiper.animating &&
- swiper.params.zoom.enabled &&
- swiper.zoom.enabled &&
- swiper.params.zoom.toggle
- ) {
- swiper.zoom.toggle( e );
- }
- },
- transitionEnd: function transitionEnd( swiper ) {
- if ( swiper.zoom.enabled && swiper.params.zoom.enabled ) {
- swiper.zoom.onTransitionEnd();
- }
- },
- slideChange: function slideChange( swiper ) {
- if ( swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode ) {
- swiper.zoom.onTransitionEnd();
- }
- },
- },
- };
- var A11y = {
- getRandomNumber: function getRandomNumber( size ) {
- if ( size === void 0 ) {
- size = 16;
- }
- var randomChar = function randomChar() {
- return Math.round( 16 * Math.random() ).toString( 16 );
- };
- return 'x'.repeat( size ).replace( /x/g, randomChar );
- },
- makeElFocusable: function makeElFocusable( $el ) {
- $el.attr( 'tabIndex', '0' );
- return $el;
- },
- makeElNotFocusable: function makeElNotFocusable( $el ) {
- $el.attr( 'tabIndex', '-1' );
- return $el;
- },
- addElRole: function addElRole( $el, role ) {
- $el.attr( 'role', role );
- return $el;
- },
- addElRoleDescription: function addElRoleDescription( $el, description ) {
- $el.attr( 'aria-roledescription', description );
- return $el;
- },
- addElControls: function addElControls( $el, controls ) {
- $el.attr( 'aria-controls', controls );
- return $el;
- },
- addElLabel: function addElLabel( $el, label ) {
- $el.attr( 'aria-label', label );
- return $el;
- },
- addElId: function addElId( $el, id ) {
- $el.attr( 'id', id );
- return $el;
- },
- addElLive: function addElLive( $el, live ) {
- $el.attr( 'aria-live', live );
- return $el;
- },
- disableEl: function disableEl( $el ) {
- $el.attr( 'aria-disabled', true );
- return $el;
- },
- enableEl: function enableEl( $el ) {
- $el.attr( 'aria-disabled', false );
- return $el;
- },
- onEnterOrSpaceKey: function onEnterOrSpaceKey( e ) {
- if ( e.keyCode !== 13 && e.keyCode !== 32 ) return;
- var swiper = this;
- var params = swiper.params.a11y;
- var $targetEl = $( e.target );
- if (
- swiper.navigation &&
- swiper.navigation.$nextEl &&
- $targetEl.is( swiper.navigation.$nextEl )
- ) {
- if ( ! ( swiper.isEnd && ! swiper.params.loop ) ) {
- swiper.slideNext();
- }
- if ( swiper.isEnd ) {
- swiper.a11y.notify( params.lastSlideMessage );
- } else {
- swiper.a11y.notify( params.nextSlideMessage );
- }
- }
- if (
- swiper.navigation &&
- swiper.navigation.$prevEl &&
- $targetEl.is( swiper.navigation.$prevEl )
- ) {
- if ( ! ( swiper.isBeginning && ! swiper.params.loop ) ) {
- swiper.slidePrev();
- }
- if ( swiper.isBeginning ) {
- swiper.a11y.notify( params.firstSlideMessage );
- } else {
- swiper.a11y.notify( params.prevSlideMessage );
- }
- }
- if (
- swiper.pagination &&
- $targetEl.is( classesToSelector( swiper.params.pagination.bulletClass ) )
- ) {
- $targetEl[ 0 ].click();
- }
- },
- notify: function notify( message ) {
- var swiper = this;
- var notification = swiper.a11y.liveRegion;
- if ( notification.length === 0 ) return;
- notification.html( '' );
- notification.html( message );
- },
- updateNavigation: function updateNavigation() {
- var swiper = this;
- if ( swiper.params.loop || ! swiper.navigation ) return;
- var _swiper$navigation = swiper.navigation,
- $nextEl = _swiper$navigation.$nextEl,
- $prevEl = _swiper$navigation.$prevEl;
- if ( $prevEl && $prevEl.length > 0 ) {
- if ( swiper.isBeginning ) {
- swiper.a11y.disableEl( $prevEl );
- swiper.a11y.makeElNotFocusable( $prevEl );
- } else {
- swiper.a11y.enableEl( $prevEl );
- swiper.a11y.makeElFocusable( $prevEl );
- }
- }
- if ( $nextEl && $nextEl.length > 0 ) {
- if ( swiper.isEnd ) {
- swiper.a11y.disableEl( $nextEl );
- swiper.a11y.makeElNotFocusable( $nextEl );
- } else {
- swiper.a11y.enableEl( $nextEl );
- swiper.a11y.makeElFocusable( $nextEl );
- }
- }
- },
- updatePagination: function updatePagination() {
- var swiper = this;
- var params = swiper.params.a11y;
- if (
- swiper.pagination &&
- swiper.params.pagination.clickable &&
- swiper.pagination.bullets &&
- swiper.pagination.bullets.length
- ) {
- swiper.pagination.bullets.each( function ( bulletEl ) {
- var $bulletEl = $( bulletEl );
- swiper.a11y.makeElFocusable( $bulletEl );
- if ( ! swiper.params.pagination.renderBullet ) {
- swiper.a11y.addElRole( $bulletEl, 'button' );
- swiper.a11y.addElLabel(
- $bulletEl,
- params.paginationBulletMessage.replace( /\{\{index\}\}/, $bulletEl.index() + 1 )
- );
- }
- } );
- }
- },
- init: function init() {
- var swiper = this;
- var params = swiper.params.a11y;
- swiper.$el.append( swiper.a11y.liveRegion ); // Container
- var $containerEl = swiper.$el;
- if ( params.containerRoleDescriptionMessage ) {
- swiper.a11y.addElRoleDescription( $containerEl, params.containerRoleDescriptionMessage );
- }
- if ( params.containerMessage ) {
- swiper.a11y.addElLabel( $containerEl, params.containerMessage );
- } // Wrapper
- var $wrapperEl = swiper.$wrapperEl;
- var wrapperId =
- $wrapperEl.attr( 'id' ) || 'swiper-wrapper-' + swiper.a11y.getRandomNumber( 16 );
- var live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
- swiper.a11y.addElId( $wrapperEl, wrapperId );
- swiper.a11y.addElLive( $wrapperEl, live ); // Slide
- if ( params.itemRoleDescriptionMessage ) {
- swiper.a11y.addElRoleDescription( $( swiper.slides ), params.itemRoleDescriptionMessage );
- }
- swiper.a11y.addElRole( $( swiper.slides ), params.slideRole );
- swiper.slides.each( function ( slideEl ) {
- var $slideEl = $( slideEl );
- var ariaLabelMessage = params.slideLabelMessage
- .replace( /\{\{index\}\}/, $slideEl.index() + 1 )
- .replace( /\{\{slidesLength\}\}/, swiper.slides.length );
- swiper.a11y.addElLabel( $slideEl, ariaLabelMessage );
- } ); // Navigation
- var $nextEl;
- var $prevEl;
- if ( swiper.navigation && swiper.navigation.$nextEl ) {
- $nextEl = swiper.navigation.$nextEl;
- }
- if ( swiper.navigation && swiper.navigation.$prevEl ) {
- $prevEl = swiper.navigation.$prevEl;
- }
- if ( $nextEl && $nextEl.length ) {
- swiper.a11y.makeElFocusable( $nextEl );
- if ( $nextEl[ 0 ].tagName !== 'BUTTON' ) {
- swiper.a11y.addElRole( $nextEl, 'button' );
- $nextEl.on( 'keydown', swiper.a11y.onEnterOrSpaceKey );
- }
- swiper.a11y.addElLabel( $nextEl, params.nextSlideMessage );
- swiper.a11y.addElControls( $nextEl, wrapperId );
- }
- if ( $prevEl && $prevEl.length ) {
- swiper.a11y.makeElFocusable( $prevEl );
- if ( $prevEl[ 0 ].tagName !== 'BUTTON' ) {
- swiper.a11y.addElRole( $prevEl, 'button' );
- $prevEl.on( 'keydown', swiper.a11y.onEnterOrSpaceKey );
- }
- swiper.a11y.addElLabel( $prevEl, params.prevSlideMessage );
- swiper.a11y.addElControls( $prevEl, wrapperId );
- } // Pagination
- if (
- swiper.pagination &&
- swiper.params.pagination.clickable &&
- swiper.pagination.bullets &&
- swiper.pagination.bullets.length
- ) {
- swiper.pagination.$el.on(
- 'keydown',
- classesToSelector( swiper.params.pagination.bulletClass ),
- swiper.a11y.onEnterOrSpaceKey
- );
- }
- },
- destroy: function destroy() {
- var swiper = this;
- if ( swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0 )
- swiper.a11y.liveRegion.remove();
- var $nextEl;
- var $prevEl;
- if ( swiper.navigation && swiper.navigation.$nextEl ) {
- $nextEl = swiper.navigation.$nextEl;
- }
- if ( swiper.navigation && swiper.navigation.$prevEl ) {
- $prevEl = swiper.navigation.$prevEl;
- }
- if ( $nextEl ) {
- $nextEl.off( 'keydown', swiper.a11y.onEnterOrSpaceKey );
- }
- if ( $prevEl ) {
- $prevEl.off( 'keydown', swiper.a11y.onEnterOrSpaceKey );
- } // Pagination
- if (
- swiper.pagination &&
- swiper.params.pagination.clickable &&
- swiper.pagination.bullets &&
- swiper.pagination.bullets.length
- ) {
- swiper.pagination.$el.off(
- 'keydown',
- classesToSelector( swiper.params.pagination.bulletClass ),
- swiper.a11y.onEnterOrSpaceKey
- );
- }
- },
- };
- var A11y$1 = {
- name: 'a11y',
- params: {
- a11y: {
- enabled: true,
- notificationClass: 'swiper-notification',
- prevSlideMessage: 'Previous slide',
- nextSlideMessage: 'Next slide',
- firstSlideMessage: 'This is the first slide',
- lastSlideMessage: 'This is the last slide',
- paginationBulletMessage: 'Go to slide {{index}}',
- slideLabelMessage: '{{index}} / {{slidesLength}}',
- containerMessage: null,
- containerRoleDescriptionMessage: null,
- itemRoleDescriptionMessage: null,
- slideRole: 'group',
- },
- },
- create: function create() {
- var swiper = this;
- bindModuleMethods( swiper, {
- a11y: _extends( {}, A11y, {
- liveRegion: $(
- '<span class="' +
- swiper.params.a11y.notificationClass +
- '" aria-live="assertive" aria-atomic="true"></span>'
- ),
- } ),
- } );
- },
- on: {
- afterInit: function afterInit( swiper ) {
- if ( ! swiper.params.a11y.enabled ) return;
- swiper.a11y.init();
- swiper.a11y.updateNavigation();
- },
- toEdge: function toEdge( swiper ) {
- if ( ! swiper.params.a11y.enabled ) return;
- swiper.a11y.updateNavigation();
- },
- fromEdge: function fromEdge( swiper ) {
- if ( ! swiper.params.a11y.enabled ) return;
- swiper.a11y.updateNavigation();
- },
- paginationUpdate: function paginationUpdate( swiper ) {
- if ( ! swiper.params.a11y.enabled ) return;
- swiper.a11y.updatePagination();
- },
- destroy: function destroy( swiper ) {
- if ( ! swiper.params.a11y.enabled ) return;
- swiper.a11y.destroy();
- },
- },
- };
- // Swiper Class
- var components = [ Navigation$1, Pagination$1, Zoom$1, A11y$1 ];
- Swiper.use( components );
- return Swiper;
- } );
- //# sourceMappingURL=swiper-bundle.js.map
|