{"version":3,"sources":["kendo.mobile.scroller.js"],"names":["f","define","$","undefined","kendo","window","mobile","fx","effects","ui","proxy","extend","Widget","Class","Movable","Pane","PaneDimensions","Transition","Animation","abs","Math","SNAPBACK_DURATION","SCROLLBAR_OPACITY","FRICTION","VELOCITY_MULTIPLIER","MAX_VELOCITY","OUT_OF_BOUNDS_FRICTION","ANIMATED_SCROLLER_PRECISION","RELEASECLASS","REFRESHCLASS","PULL","CHANGE","RESIZE","SCROLL","MOUSE_WHEEL_ID","ZoomSnapBack","init","options","that","this","fn","call","userEvents","bind","start","tapCapture","cancel","enabled","movable","scale","dimensions","minScale","done","tick","scaleWith","rescale","onEnd","scaleTo","DragInertia","transition","axis","_end","onCancel","freeze","location","_moveTo","paneAxis","outOfBounds","_snapBack","velocity","e","dimension","_started","min","touch","velocityMultiplier","id","max","captureNext","friction","delta","elastic","moveAxis","cancelCapture","end","snapBack","moveTo","duration","ease","easeOutExpo","AnimatedScroller","origin","destination","offset","_updateCoordinates","y","x","callback","setCoordinates","from","to","setCallback","isFunction","ScrollBar","horizontal","element","elementSize","scrollMovable","alwaysVisible","size","refresh","container","append","show","paneSize","sizeRatio","total","position","round","css","opacity","visibility","hide","Scroller","inner","avoidScrolling","pane","zoomSnapBack","animatedScroller","_native","useNative","support","hasNativeScrolling","addClass","prepend","scrollElement","fixedContainer","children","first","wrapInner","eq","TapCapture","forcedEnabled","zoom","UserEvents","touchAction","fastTap","allowSelection","preventDragEvent","captureUpIfMoved","multiTouch","supportDoubleTap","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","contains","event","target","verticalSwipe","capture","coordinates","scrollTo","scrollTop","scrollLeft","trigger","mousewheelScrolling","on","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelScroll","ctrlKey","press","clearTimeout","_wheelTimeout","setTimeout","wheelDeltaY","move","preventDefault","makeVirtual","virtualSize","height","scrollHeight","scrollWidth","name","pullOffset","visibleScrollHints","messages","pullTemplate","releaseTemplate","refreshTemplate","events","_resize","contentResized","setOptions","reset","_scale","zoomOut","fitScale","centerCoordinates","enable","disable","animatedScrollTo","pullHandled","refreshHint","removeClass","hintContainer","html","yinertia","xinertia","destroy","forceEnabled","template","_paneChange","_dragEnd","scrollBar","plugin","jQuery","amd","a1","a2","a3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,yBACH,WACA,qBACDD,IACL,WA6gBE,MAlgBC,UAAUE,EAAGC,GAAb,GACOC,GAAQC,OAAOD,MAAOE,EAASF,EAAME,OAAQC,EAAKH,EAAMI,QAASC,EAAKH,EAAOG,GAAIC,EAAQR,EAAEQ,MAAOC,EAAST,EAAES,OAAQC,EAASH,EAAGG,OAAQC,EAAQT,EAAMS,MAAOC,EAAUV,EAAMK,GAAGK,QAASC,EAAOX,EAAMK,GAAGM,KAAMC,EAAiBZ,EAAMK,GAAGO,eAAgBC,EAAaV,EAAGU,WAAYC,EAAYX,EAAGW,UAAWC,EAAMC,KAAKD,IAAKE,EAAoB,IAAKC,EAAoB,GAAKC,EAAW,IAAMC,EAAsB,GAAIC,EAAe,GAAIC,EAAyB,GAAKC,EAA8B,EAAGC,EAAe,sBAAuBC,EAAe,sBAAuBC,EAAO,OAAQC,EAAS,SAAUC,EAAS,SAAUC,EAAS,SAAUC,EAAiB,EACppBC,EAAejB,EAAUP,QACzByB,KAAM,SAAUC,GACZ,GAAIC,GAAOC,IACXrB,GAAUsB,GAAGJ,KAAKK,KAAKH,GACvB3B,EAAO2B,EAAMD,GACbC,EAAKI,WAAWC,KAAK,aAAcjC,EAAM4B,EAAKM,MAAON,IACrDA,EAAKO,WAAWF,KAAK,QAASjC,EAAM4B,EAAKQ,OAAQR,KAErDS,QAAS,WACL,MAAOR,MAAKS,QAAQC,MAAQV,KAAKW,WAAWC,UAEhDC,KAAM,WACF,MAAOb,MAAKW,WAAWC,SAAWZ,KAAKS,QAAQC,MAAQ,KAE3DI,KAAM,WACF,GAAIL,GAAUT,KAAKS,OACnBA,GAAQM,UAAU,KAClBf,KAAKW,WAAWK,QAAQP,EAAQC,QAEpCO,MAAO,WACH,GAAIR,GAAUT,KAAKS,OACnBA,GAAQS,QAAQlB,KAAKW,WAAWC,UAChCZ,KAAKW,WAAWK,QAAQP,EAAQC,UAGpCS,EAAcxC,EAAUP,QACxByB,KAAM,SAAUC,GACZ,GAAIC,GAAOC,IACXrB,GAAUsB,GAAGJ,KAAKK,KAAKH,GACvB3B,EAAO2B,EAAMD,GACTsB,WAAY,GAAI1C,IACZ2C,KAAMvB,EAAQuB,KACdZ,QAASX,EAAQW,QACjBQ,MAAO,WACHlB,EAAKuB,YAIjBvB,EAAKO,WAAWF,KAAK,QAAS,WAC1BL,EAAKQ,WAETR,EAAKI,WAAWC,KAAK,MAAOjC,EAAM4B,EAAKM,MAAON,IAC9CA,EAAKI,WAAWC,KAAK,aAAcjC,EAAM4B,EAAKM,MAAON,IACrDA,EAAKI,WAAWC,KAAK,MAAOjC,EAAM4B,EAAKkB,MAAOlB,KAElDwB,SAAU,WACNvB,KAAKoB,WAAWb,UAEpBiB,OAAQ,SAAUC,GACd,GAAI1B,GAAOC,IACXD,GAAKQ,SACLR,EAAK2B,QAAQD,IAEjBR,MAAO,WACH,GAAIlB,GAAOC,IACPD,GAAK4B,SAASC,cACd7B,EAAK8B,YAEL9B,EAAKuB,QAGbT,KAAM,WACF,MAAOjC,GAAIoB,KAAK8B,UAAY,GAEhCzB,MAAO,SAAU0B,GACb,GAAiBD,GAAb/B,EAAOC,IACND,GAAKiC,UAAUxB,UAGhBT,EAAK4B,SAASC,cACV7B,EAAKqB,WAAWa,UAChBlC,EAAKqB,WAAWb,SAChBR,EAAK+B,SAAWjD,KAAKqD,IAAIH,EAAEI,MAAMpC,EAAKsB,MAAMS,SAAW/B,EAAKqC,mBAAoBlD,GAChFP,EAAUsB,GAAGI,MAAMH,KAAKH,IAExBA,EAAK8B,aAGTC,EAAWC,EAAEI,MAAME,KAAO1C,EAAiB,EAAIoC,EAAEI,MAAMpC,EAAKsB,MAAMS,SAClE/B,EAAK+B,SAAWjD,KAAKyD,IAAIzD,KAAKqD,IAAIJ,EAAW/B,EAAKqC,mBAAoBlD,IAAgBA,GACtFa,EAAKO,WAAWiC,cAChB5D,EAAUsB,GAAGI,MAAMH,KAAKH,MAGhCe,KAAM,WACF,GAAIf,GAAOC,KAAMgC,EAAYjC,EAAKiC,UAAWQ,EAAWzC,EAAK4B,SAASC,cAAgBzC,EAAyBY,EAAKyC,SAAUC,EAAQ1C,EAAK+B,UAAYU,EAAUf,EAAW1B,EAAKU,QAAQV,EAAKsB,MAAQoB,GACjM1C,EAAK2C,SAAWV,EAAUJ,YAAYH,KACvCA,EAAW5C,KAAKyD,IAAIzD,KAAKqD,IAAIT,EAAUO,EAAUM,KAAMN,EAAUE,KACjEnC,EAAK+B,SAAW,GAEpB/B,EAAKU,QAAQkC,SAAS5C,EAAKsB,KAAMI,IAErCH,KAAM,WACFtB,KAAKM,WAAWsC,gBAChB5C,KAAK6C,OAEThB,UAAW,WACP,GAAI9B,GAAOC,KAAMgC,EAAYjC,EAAKiC,UAAWc,EAAW/C,EAAKU,QAAQV,EAAKsB,MAAQW,EAAUM,IAAMN,EAAUM,IAAMN,EAAUE,GAC5HnC,GAAK2B,QAAQoB,IAEjBpB,QAAS,SAAUD,GACfzB,KAAKoB,WAAW2B,QACZtB,SAAUA,EACVuB,SAAUlE,EACVmE,KAAMvE,EAAWwE,iBAIzBC,EAAmBxE,EAAUP,QAC7ByB,KAAM,SAAUC,GACZ,GAAIC,GAAOC,IACXnC,GAAMI,QAAQU,UAAUsB,GAAGJ,KAAKK,KAAKF,MACrC5B,EAAO2B,EAAMD,GACTsD,UACAC,eACAC,aAGRxC,KAAM,WACFd,KAAKuD,qBACLvD,KAAK+C,OAAO/C,KAAKoD,SAErBvC,KAAM,WACF,MAAOjC,GAAIoB,KAAKsD,OAAOE,GAAKpE,GAA+BR,EAAIoB,KAAKsD,OAAOG,GAAKrE,GAEpF6B,MAAO,WACHjB,KAAK+C,OAAO/C,KAAKqD,aACbrD,KAAK0D,UACL1D,KAAK0D,SAASxD,QAGtByD,eAAgB,SAAUC,EAAMC,GAC5B7D,KAAKsD,UACLtD,KAAKoD,OAASQ,EACd5D,KAAKqD,YAAcQ,GAEvBC,YAAa,SAAUJ,GACfA,GAAY7F,EAAMkG,WAAWL,GAC7B1D,KAAK0D,SAAWA,EAEhBA,EAAW9F,GAGnB2F,mBAAoB,WAChBvD,KAAKsD,QACDG,GAAIzD,KAAKqD,YAAYI,EAAIzD,KAAKoD,OAAOK,GAAK,EAC1CD,GAAIxD,KAAKqD,YAAYG,EAAIxD,KAAKoD,OAAOI,GAAK,GAE9CxD,KAAKoD,QACDI,EAAGxD,KAAKoD,OAAOI,EAAIxD,KAAKsD,OAAOE,EAC/BC,EAAGzD,KAAKoD,OAAOK,EAAIzD,KAAKsD,OAAOG,MAIvCO,EAAY1F,EAAMF,QAClByB,KAAM,SAAUC,GACZ,GAAIC,GAAOC,KAAMiE,EAA8B,MAAjBnE,EAAQuB,KAAc6C,EAAUvG,EAAE,sCAAwCsG,EAAa,aAAe,YAAc,iBAClJ7F,GAAO2B,EAAMD,GACToE,QAASA,EACTC,YAAa,EACb1D,QAAS,GAAIlC,GAAQ2F,GACrBE,cAAetE,EAAQW,QACvB4D,cAAevE,EAAQuE,cACvBC,KAAML,EAAa,QAAU,WAEjClE,EAAKqE,cAAchE,KAAKZ,EAAQrB,EAAM4B,EAAKwE,QAASxE,IACpDA,EAAKyE,UAAUC,OAAOP,GAClBpE,EAAQuE,eACRtE,EAAK2E,QAGbH,QAAS,WACL,GAAIxE,GAAOC,KAAMqB,EAAOtB,EAAKsB,KAAMW,EAAYjC,EAAKiC,UAAW2C,EAAW3C,EAAUsC,KAAMF,EAAgBrE,EAAKqE,cAAeQ,EAAYD,EAAW3C,EAAU6C,MAAOC,EAAWjG,KAAKkG,OAAOX,EAAc/C,GAAQuD,GAAYN,EAAOzF,KAAKkG,MAAMJ,EAAWC,EACxPA,IAAa,EACb5E,KAAKkE,QAAQc,IAAI,UAAW,QAE5BhF,KAAKkE,QAAQc,IAAI,UAAW,IAE5BF,EAAWR,EAAOK,EAClBL,EAAOK,EAAWG,EACXA,EAAW,IAClBR,GAAQQ,EACRA,EAAW,GAEX/E,EAAKoE,aAAeG,IACpBvE,EAAKmE,QAAQc,IAAIjF,EAAKuE,KAAMA,EAAO,MACnCvE,EAAKoE,YAAcG,GAEvBvE,EAAKU,QAAQkC,SAAStB,EAAMyD,IAEhCJ,KAAM,WACF1E,KAAKkE,QAAQc,KACTC,QAASlG,EACTmG,WAAY,aAGpBC,KAAM,WACGnF,KAAKqE,eACNrE,KAAKkE,QAAQc,KAAMC,QAAS,OAIpCG,EAAW/G,EAAOD,QAClByB,KAAM,SAAUqE,EAASpE,GAAnB,GAcEuF,GAAkC/E,EAA4CG,EAA8BE,EAIxG2E,EAA8CnF,EAiB9CoF,EAKAC,EAKAC,EA5CJ1F,EAAOC,IAIX,OAHA3B,GAAO4B,GAAGJ,KAAKK,KAAKH,EAAMmE,EAASpE,GACnCoE,EAAUnE,EAAKmE,SACfnE,EAAK2F,QAAU3F,EAAKD,QAAQ6F,WAAa9H,EAAM+H,QAAQC,qBAEnD3B,EAAQ4B,SAAS,sBAAsBC,QAAQ,mCAC/C3H,EAAO2B,GACHiG,cAAe9B,EACf+B,eAAgB/B,EAAQgC,WAAWC,UAEvC,IAEJjC,EAAQc,IAAI,WAAY,UAAUc,SAAS,qBAAqBM,UAAU,sCAAsCL,QAAQ,mCACpHV,EAAQnB,EAAQgC,WAAWG,GAAG,GAAI/F,EAAa,GAAIzC,GAAMyI,WAAWpC,GAAUzD,EAAU,GAAIlC,GAAQ8G,GAAQ1E,EAAa,GAAIlC,IACzHyF,QAASmB,EACTb,UAAWN,EACXqC,cAAexG,EAAKD,QAAQ0G,OAC5BlB,EAAiBtF,KAAKF,QAAQwF,eAAgBnF,EAAa,GAAItC,GAAM4I,WAAWvC,GAChFwC,YAAa,QACbC,SAAS,EACTC,gBAAgB,EAChBC,kBAAkB,EAClBC,kBAAkB,EAClBC,WAAYhH,EAAKD,QAAQ0G,KACzBQ,iBAAkBjH,EAAKD,QAAQkH,iBAC/B3G,MAAO,SAAU0B,GACbpB,EAAW4D,SACX,IAAI0C,GAAYrI,EAAImD,EAAE0B,EAAE3B,UAAWoF,EAAYtI,EAAImD,EAAEyB,EAAE1B,UAAWqF,EAA8B,EAAZF,GAAiBC,EAAWE,EAA+BzJ,EAAE0J,SAAStH,EAAKkG,eAAe,GAAIlE,EAAEuF,MAAMC,QAASC,EAA4B,EAAZN,GAAiBD,GAC/NG,IAAiC9B,EAAevD,IAAMhC,EAAKS,UAAYG,EAAW8C,EAAEjD,SAAW2G,GAAmBxG,EAAW6C,EAAEhD,SAAWgH,GAC3IrH,EAAWsH,UAEXtH,EAAWI,YAGnBgF,EAAO,GAAI/G,IACXiC,QAASA,EACTE,WAAYA,EACZR,WAAYA,EACZuC,QAAS3C,EAAKD,QAAQ4C,UACtB8C,EAAe,GAAI5F,IACnBa,QAASA,EACTE,WAAYA,EACZR,WAAYA,EACZG,WAAYA,IACZmF,EAAmB,GAAItC,IACvBJ,OAAQ,SAAU2E,GACd3H,EAAK4H,SAASD,EAAYjE,EAAGiE,EAAYlE,MAGrD/C,EAAQL,KAAKZ,EAAQ,WACjBO,EAAK6H,WAAanH,EAAQ+C,EAC1BzD,EAAK8H,YAAcpH,EAAQgD,EAC3B1D,EAAK+H,QAAQpI,GACTkI,UAAW7H,EAAK6H,UAChBC,WAAY9H,EAAK8H,eAGrB9H,EAAKD,QAAQiI,qBACb7D,EAAQ8D,GAAG,4BAA6B7J,EAAM6B,KAAM,iBAExD5B,EAAO2B,GACHU,QAASA,EACTE,WAAYA,EACZ6E,aAAcA,EACdC,iBAAkBA,EAClBtF,WAAYA,EACZoF,KAAMA,EACNjF,WAAYA,EACZ2H,QAAQ,EACRzH,SAAS,EACTwF,cAAeX,EACfuC,UAAW,EACXC,WAAY,EACZ5B,eAAgB/B,EAAQgC,WAAWC,UAEvCpG,EAAKmI,UAAU,KACfnI,EAAKmI,UAAU,KACfnI,EAAKoI,UAAY,WACbpI,EAAKqI,QAAS,EACdrI,EAAKI,WAAW0C,IAAI,EAAG9C,EAAKsI,UAEhC1H,EAAW4D,UACPxE,EAAKD,QAAQwI,eACbvI,EAAKwI,qBAvETrE,IA0EJsE,aAAc,SAAUzG,GACpB,IAAIA,EAAE0G,QAAN,CAGKzI,KAAKoI,SACNpI,KAAKoI,QAAS,EACdpI,KAAKqI,QAAU,EACfrI,KAAKG,WAAWuI,MAAM,EAAG1I,KAAKqI,UAElCM,aAAa3I,KAAK4I,eAClB5I,KAAK4I,cAAgBC,WAAW7I,KAAKmI,UAAW,GAChD,IAAI1F,GAAQ5E,EAAMiL,YAAY/G,EAC1BU,KACAzC,KAAKqI,SAAW5F,EAChBzC,KAAKG,WAAW4I,KAAK,EAAG/I,KAAKqI,UAEjCtG,EAAEiH,mBAENC,YAAa,WACTjJ,KAAKW,WAAW6C,EAAEyF,eAEtBC,YAAa,SAAUhH,EAAKI,GACxBtC,KAAKW,WAAW6C,EAAE0F,YAAYhH,EAAKI,IAEvC6G,OAAQ,WACJ,MAAOnJ,MAAKW,WAAW6C,EAAEc,MAE7B8E,aAAc,WACV,MAAOpJ,MAAKgG,cAAc,GAAGoD,cAEjCC,YAAa,WACT,MAAOrJ,MAAKgG,cAAc,GAAGqD,aAEjCvJ,SACIwJ,KAAM,WACN9C,MAAM,EACN+C,WAAY,IACZC,oBAAoB,EACpB9G,SAAS,EACTiD,WAAW,EACXoC,qBAAqB,EACrBzC,eAAgB,WACZ,OAAO,GAEXgD,eAAe,EACfmB,UACIC,aAAc,kBACdC,gBAAiB,qBACjBC,gBAAiB,eAGzBC,QACItK,EACAG,EACAD,GAEJqK,QAAS,WACA9J,KAAK0F,SACN1F,KAAK+J,kBAGbC,WAAY,SAAUlK,GAClB,GAAIC,GAAOC,IACX3B,GAAO4B,GAAG+J,WAAW9J,KAAKH,EAAMD,GAC5BA,EAAQwI,eACRvI,EAAKwI,sBAGb0B,MAAO,WACCjK,KAAK0F,QACL1F,KAAKgG,cAAc4B,UAAU,IAE7B5H,KAAKS,QAAQsC,QACTU,EAAG,EACHD,EAAG,IAEPxD,KAAKkK,OAAO,KAGpBH,eAAgB,WACZ/J,KAAKW,WAAW4D,UACZvE,KAAKuF,KAAK9B,EAAE7B,eACZ5B,KAAKS,QAAQkC,SAAS,IAAK3C,KAAKW,WAAW8C,EAAEvB,KAE7ClC,KAAKuF,KAAK/B,EAAE5B,eACZ5B,KAAKS,QAAQkC,SAAS,IAAK3C,KAAKW,WAAW6C,EAAEtB,MAGrDiI,QAAS,WACL,GAAIxJ,GAAaX,KAAKW,UACtBA,GAAW4D,UACXvE,KAAKkK,OAAOvJ,EAAWyJ,UACvBpK,KAAKS,QAAQsC,OAAOpC,EAAW0J,sBAEnCC,OAAQ,WACJtK,KAAKQ,SAAU,GAEnB+J,QAAS,WACLvK,KAAKQ,SAAU,GAEnBmH,SAAU,SAAUlE,EAAGD,GACfxD,KAAK0F,SACL7H,EAAMgK,WAAW7H,KAAKgG,cAAepH,EAAI6E,IACzCzD,KAAKgG,cAAc4B,UAAUhJ,EAAI4E,MAEjCxD,KAAKW,WAAW4D,UAChBvE,KAAKS,QAAQsC,QACTU,EAAGA,EACHD,EAAGA,MAIfgH,iBAAkB,SAAU/G,EAAGD,EAAGE,GAC9B,GAAIE,GAAMC,CACN7D,MAAK0F,QACL1F,KAAK2H,SAASlE,EAAGD,IAEjBI,GACIH,EAAGzD,KAAKS,QAAQgD,EAChBD,EAAGxD,KAAKS,QAAQ+C,GAEpBK,GACIJ,EAAGA,EACHD,EAAGA,GAEPxD,KAAKyF,iBAAiB9B,eAAeC,EAAMC,GAC3C7D,KAAKyF,iBAAiB3B,YAAYJ,GAClC1D,KAAKyF,iBAAiBpF,UAG9BoK,YAAa,WACT,GAAI1K,GAAOC,IACXD,GAAK2K,YAAYC,YAAYrL,GAC7BS,EAAK6K,cAAcC,KAAK9K,EAAK2J,kBAC7B3J,EAAK+K,SAAS7J,QACdlB,EAAKgL,SAAS9J,QACdlB,EAAKI,WAAWI,UAEpByK,QAAS,WACL3M,EAAO4B,GAAG+K,QAAQ9K,KAAKF,MACnBA,KAAKG,YACLH,KAAKG,WAAW6K,WAGxBd,OAAQ,SAAUxJ,GACdV,KAAKW,WAAWK,QAAQN,GACxBV,KAAKS,QAAQS,QAAQR,IAEzB6H,mBAAoB,WAChB,GAAIxI,GAAOC,IACXD,GAAKY,WAAW6C,EAAEyH,eAClBlL,EAAK2J,aAAe7L,EAAMqN,SAASnL,EAAKD,QAAQ2J,SAASC,cACzD3J,EAAK4J,gBAAkB9L,EAAMqN,SAASnL,EAAKD,QAAQ2J,SAASE,iBAC5D5J,EAAK6J,gBAAkB/L,EAAMqN,SAASnL,EAAKD,QAAQ2J,SAASG,iBAC5D7J,EAAKiG,cAAcD,QAAQ,oKAAsKhG,EAAK2J,iBAAmB,kBACzN3J,EAAK2K,YAAc3K,EAAKiG,cAAcE,WAAWC,QACjDpG,EAAK6K,cAAgB7K,EAAK2K,YAAYxE,SAAS,gBAC/CnG,EAAKwF,KAAK/B,EAAEpD,KAAK,SAAUjC,EAAM4B,EAAKoL,YAAapL,IACnDA,EAAKI,WAAWC,KAAK,MAAOjC,EAAM4B,EAAKqL,SAAUrL,KAErDqL,SAAU,WACN,GAAIrL,GAAOC,IACND,GAAKkI,SAGVlI,EAAKkI,QAAS,EACdlI,EAAK2K,YAAYC,YAAYtL,GAAcyG,SAASxG,GACpDS,EAAK6K,cAAcC,KAAK9K,EAAK6J,qBAC7B7J,EAAK+K,SAAStJ,OAAOzB,EAAKD,QAAQyJ,WAAa,GAC/CxJ,EAAK+H,QAAQ,UAEjBqD,YAAa,WACT,GAAIpL,GAAOC,IACPD,GAAKU,QAAQ+C,EAAIrE,EAAyBY,EAAKD,QAAQyJ,WAClDxJ,EAAKkI,SACNlI,EAAKkI,QAAS,EACdlI,EAAK2K,YAAYC,YAAYrL,GAAcwG,SAASzG,GACpDU,EAAK6K,cAAcC,KAAK9K,EAAK4J,sBAE1B5J,EAAKkI,SACZlI,EAAKkI,QAAS,EACdlI,EAAK2K,YAAYC,YAAYtL,GAC7BU,EAAK6K,cAAcC,KAAK9K,EAAK2J,oBAGrCxB,UAAW,SAAU7G,GACjB,GAAItB,GAAOC,KAAMS,EAAUV,EAAKU,QAASuB,EAAYjC,EAAKY,WAAWU,GAAOf,EAAaP,EAAKO,WAAYqB,EAAW5B,EAAKwF,KAAKlE,GAAOgK,EAAY,GAAIrH,IAC9I3C,KAAMA,EACNZ,QAASA,EACTuB,UAAWA,EACXwC,UAAWzE,EAAKmE,QAChBG,cAAetE,EAAKD,QAAQ0J,oBAEpCxH,GAAU5B,KAAKZ,EAAQ,WACnB6L,EAAU9G,YAEd5C,EAASvB,KAAKZ,EAAQ,WAClB6L,EAAU3G,SAEd3E,EAAKsB,EAAO,WAAa,GAAIF,IACzBE,KAAMA,EACNM,SAAUA,EACVlB,QAASA,EACTH,WAAYA,EACZH,WAAYJ,EAAKI,WACjB6B,UAAWA,EACXU,QAAS3C,EAAKD,QAAQ4C,QACtBF,SAAUzC,EAAKD,QAAQ0C,UAAYxD,EACnCoD,mBAAoBrC,EAAKD,QAAQsC,oBAAsBnD,EACvD4D,IAAK,WACDwI,EAAUlG,OACVpF,EAAK+H,QAAQ,aACTzG,KAAMA,EACNuG,UAAW7H,EAAK6H,UAChBC,WAAY9H,EAAK8H,kBAMrC3J,GAAGoN,OAAOlG,IACZtH,OAAOD,MAAM0N,QACRzN,OAAOD,OACE,kBAAVH,SAAwBA,OAAO8N,IAAM9N,OAAS,SAAU+N,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.mobile.scroller.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.mobile.scroller', [\n 'kendo.fx',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.scroller',\n name: 'Scroller',\n category: 'mobile',\n description: 'The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.',\n depends: [\n 'fx',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, mobile = kendo.mobile, fx = kendo.effects, ui = mobile.ui, proxy = $.proxy, extend = $.extend, Widget = ui.Widget, Class = kendo.Class, Movable = kendo.ui.Movable, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Transition = fx.Transition, Animation = fx.Animation, abs = Math.abs, SNAPBACK_DURATION = 500, SCROLLBAR_OPACITY = 0.7, FRICTION = 0.96, VELOCITY_MULTIPLIER = 10, MAX_VELOCITY = 55, OUT_OF_BOUNDS_FRICTION = 0.5, ANIMATED_SCROLLER_PRECISION = 5, RELEASECLASS = 'km-scroller-release', REFRESHCLASS = 'km-scroller-refresh', PULL = 'pull', CHANGE = 'change', RESIZE = 'resize', SCROLL = 'scroll', MOUSE_WHEEL_ID = 2;\n var ZoomSnapBack = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.tapCapture.bind('press', proxy(that.cancel, that));\n },\n enabled: function () {\n return this.movable.scale < this.dimensions.minScale;\n },\n done: function () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n tick: function () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n onEnd: function () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n var DragInertia = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function () {\n that._end();\n }\n })\n });\n that.tapCapture.bind('press', function () {\n that.cancel();\n });\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n },\n onCancel: function () {\n this.transition.cancel();\n },\n freeze: function (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n onEnd: function () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n done: function () {\n return abs(this.velocity) < 1;\n },\n start: function (e) {\n var that = this, velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n Animation.fn.start.call(that);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n tick: function () {\n var that = this, dimension = that.dimension, friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction, delta = that.velocity *= friction, location = that.movable[that.axis] + delta;\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n that.movable.moveAxis(that.axis, location);\n },\n _end: function () {\n this.tapCapture.cancelCapture();\n this.end();\n },\n _snapBack: function () {\n var that = this, dimension = that.dimension, snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n _moveTo: function (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n });\n var AnimatedScroller = Animation.extend({\n init: function (options) {\n var that = this;\n kendo.effects.Animation.fn.init.call(this);\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n tick: function () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n done: function () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n onEnd: function () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n setCoordinates: function (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n setCallback: function (callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n },\n _updateCoordinates: function () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n var ScrollBar = Class.extend({\n init: function (options) {\n var that = this, horizontal = options.axis === 'x', element = $('
');\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n that.scrollMovable.bind(CHANGE, proxy(that.refresh, that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n refresh: function () {\n var that = this, axis = that.axis, dimension = that.dimension, paneSize = dimension.size, scrollMovable = that.scrollMovable, sizeRatio = paneSize / dimension.total, position = Math.round(-scrollMovable[axis] * sizeRatio), size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.css('display', 'none');\n } else {\n this.element.css('display', '');\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize != size) {\n that.element.css(that.size, size + 'px');\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n },\n show: function () {\n this.element.css({\n opacity: SCROLLBAR_OPACITY,\n visibility: 'visible'\n });\n },\n hide: function () {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n }\n });\n var Scroller = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass('km-native-scroller').prepend('
');\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n return;\n }\n element.css('overflow', 'hidden').addClass('km-scroll-wrapper').wrapInner('
').prepend('
');\n var inner = element.children().eq(1), tapCapture = new kendo.TapCapture(element), movable = new Movable(inner), dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }), avoidScrolling = this.options.avoidScrolling, userEvents = new kendo.UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function (e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity), velocityY = abs(e.y.velocity), horizontalSwipe = velocityX * 2 >= velocityY, originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target), verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }), pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }), zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }), animatedScroller = new AnimatedScroller({\n moveTo: function (coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n movable.bind(CHANGE, function () {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n if (that.options.mousewheelScrolling) {\n element.on('DOMMouseScroll mousewheel', proxy(this, '_wheelScroll'));\n }\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n that._initAxis('x');\n that._initAxis('y');\n that._wheelEnd = function () {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n dimensions.refresh();\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = kendo.wheelDeltaY(e);\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n e.preventDefault();\n },\n makeVirtual: function () {\n this.dimensions.y.makeVirtual();\n },\n virtualSize: function (min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n height: function () {\n return this.dimensions.y.size;\n },\n scrollHeight: function () {\n return this.scrollElement[0].scrollHeight;\n },\n scrollWidth: function () {\n return this.scrollElement[0].scrollWidth;\n },\n options: {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function () {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n },\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n _resize: function () {\n if (!this._native) {\n this.contentResized();\n }\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n reset: function () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n },\n contentResized: function () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n },\n zoomOut: function () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n enable: function () {\n this.enabled = true;\n },\n disable: function () {\n this.enabled = false;\n },\n scrollTo: function (x, y) {\n if (this._native) {\n kendo.scrollLeft(this.scrollElement, abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n },\n animatedScrollTo: function (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n pullHandled: function () {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n _scale: function (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n _initPullToRefresh: function () {\n var that = this;\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children('.km-template');\n that.pane.y.bind('change', proxy(that._paneChange, that));\n that.userEvents.bind('end', proxy(that._dragEnd, that));\n },\n _dragEnd: function () {\n var that = this;\n if (!that.pulled) {\n return;\n }\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger('pull');\n },\n _paneChange: function () {\n var that = this;\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n _initAxis: function (axis) {\n var that = this, movable = that.movable, dimension = that.dimensions[axis], tapCapture = that.tapCapture, paneAxis = that.pane[axis], scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n dimension.bind(CHANGE, function () {\n scrollBar.refresh();\n });\n paneAxis.bind(CHANGE, function () {\n scrollBar.show();\n });\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function () {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n ui.plugin(Scroller);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}