{"version":3,"file":"kendo.sortable.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendosortable","js","this","$","undefined$1","kendo","window","Widget","ui","outerWidth","_outerWidth","outerHeight","_outerHeight","START","BEFORE_MOVE","MOVE","END","CHANGE","CANCEL","ACTION_SORT","ACTION_REMOVE","ACTION_RECEIVE","defaultHint","element","clone","defaultPlaceholder","removeAttr","css","Sortable","extend","init","options","that","fn","call","placeholder","hint","draggable","_createDraggable","events","name","filter","holdToDrag","disabled","container","connectWith","handler","cursorOffset","axis","ignore","autoScroll","cursor","moveOnDragEnter","destroy","Draggable","isFunction","dragstart","_dragstart","bind","dragcancel","_dragcancel","drag","_drag","dragend","_dragend","e","draggedElement","currentTarget","_placeholder","is","initialTarget","trigger","item","draggableEvent","preventDefault","before","_setCursor","_cancel","_resetCursor","targetCenter","offsetDelta","direction","sibling","getSibling","target","_findTarget","left","x","location","top","y","axisDelta","delta","eventData","list","_getElementCenter","Math","round","appendToBottom","_movePlaceholder","appendAfterHidden","_isFloating","jQuery","prev","next","length","_movementByAxis","connectedList","isDefaultPrevented","connectedListEventData","draggedIndex","indexOf","placeholderIndex","action","oldIndex","newIndex","parents","getKendoSortable","replaceWith","show","dropped","items","node","_findElementUnderCursor","contains","has","sortable","_isEmpty","_isLastHidden","eq","_searchConnectedTargets","elementUnderCursor","sender","parent","child","containsOrEqualTo","hide","sortableInstance","connected","i","_isCursorAfterLast","last","lastItemOffset","lastItem","getOffset","cursorPosition","after","append","body","document","_originalCursorType","_cursorStylesheet","appendTo","remove","center","isFloating","test","isTable","isHorizontalFlex","_items","find","children","not","index","plugin"],"sources":["kendo.sortable.js"],"mappings":"CAAA,SAAWA,EAAQC,GACI,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,EAAQG,QAAQ,yBAC9E,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,yBAA0BJ,KAC9ED,EAA+B,oBAAfO,WAA6BA,WAAaP,GAAUQ,MAAcC,cAAgBT,EAAOS,eAAiB,GAAIT,EAAOS,cAAcC,GAAKT,KAH7J,CAIGU,MAAM,WAwgBL,OAhgBA,SAAUC,EAAGC,GACT,IAAIC,EAAQC,OAAOD,MACfE,EAASF,EAAMG,GAAGD,OAClBE,EAAaJ,EAAMK,YACnBC,EAAcN,EAAMO,aAEpBC,EAAQ,QACRC,EAAc,aACdC,EAAO,OACPC,EAAM,MACNC,EAAS,SACTC,EAAS,SAETC,EAAc,OACdC,EAAgB,SAChBC,EAAiB,UAarB,SAASC,EAAYC,GACjB,OAAOA,EAAQC,QAGnB,SAASC,EAAmBF,GACxB,OAAOA,EAAQC,QAAQE,WAAW,MAAMC,IAAI,aAAc,UAG9D,IAAIC,EAAWrB,EAAOsB,OAAO,CACzBC,KAAM,SAASP,EAASQ,GACpB,IAAIC,EAAO9B,KAEXK,EAAO0B,GAAGH,KAAKI,KAAKF,EAAMT,EAASQ,GAE9BC,EAAKD,QAAQI,cACdH,EAAKD,QAAQI,YAAcV,GAG1BO,EAAKD,QAAQK,OACdJ,EAAKD,QAAQK,KAAOd,GAGxBU,EAAKK,UAAYL,EAAKM,oBAG1BC,OAAQ,CACJ1B,EACAC,EACAC,EACAC,EACAC,EACAC,GAGJa,QAAS,CACLS,KAAM,WACNJ,KAAM,KACND,YAAa,KACbM,OAjDa,KAkDbC,YAAY,EACZC,SAAU,KACVC,UAAW,KACXC,YAAa,KACbC,QAAS,KACTC,aAAc,KACdC,KAAM,KACNC,OAAQ,KACRC,YAAY,EACZC,OAAQ,OACRC,iBAAiB,GAGrBC,QAAS,WACLnD,KAAKmC,UAAUgB,UACf9C,EAAO0B,GAAGoB,QAAQnB,KAAKhC,OAG3BoC,iBAAkB,WACd,IAAIN,EAAO9B,KACPqB,EAAUS,EAAKT,QACfQ,EAAUC,EAAKD,QAEnB,OAAO,IAAI1B,EAAMG,GAAG8C,UAAU/B,EAAS,CACnCkB,OAAQV,EAAQU,OAChBL,KAAM/B,EAAMkD,WAAWxB,EAAQK,MAAQL,EAAQK,KAAOjC,EAAE4B,EAAQK,MAChEM,WAAYX,EAAQW,WACpBE,UAAWb,EAAQa,UAAYzC,EAAE4B,EAAQa,WAAa,KACtDG,aAAchB,EAAQgB,aACtBC,KAAMjB,EAAQiB,KACdC,OAAQlB,EAAQkB,OAChBC,WAAYnB,EAAQmB,WACpBM,UAAWxB,EAAKyB,WAAWC,KAAK1B,GAChC2B,WAAY3B,EAAK4B,YAAYF,KAAK1B,GAClC6B,KAAM7B,EAAK8B,MAAMJ,KAAK1B,GACtB+B,QAAS/B,EAAKgC,SAASN,KAAK1B,MAIpCyB,WAAY,SAASQ,GACjB,IAAIC,EAAiBhE,KAAKgE,eAAiBD,EAAEE,cACzCxB,EAAWzC,KAAK6B,QAAQY,SACxBG,EAAU5C,KAAK6B,QAAQe,QACvBsB,EAAelE,KAAK6B,QAAQI,YAC5BA,EAAcjC,KAAKiC,YAAc9B,EAAMkD,WAAWa,GAAgBjE,EAAEiE,EAAalC,KAAKhC,KAAMgE,IAAmB/D,EAAEiE,GAEjHzB,GAAYuB,EAAeG,GAAG1B,IAEvBG,IAAY3C,EAAE8D,EAAEK,eAAeD,GAAGvB,IAIrC5C,KAAKqE,QAAQ1D,EAAO,CAAE2D,KAAMN,EAAgBO,eAAgBR,IALhEA,EAAES,kBAQER,EAAevC,IAAI,UAAW,QAC9BuC,EAAeS,OAAOxC,GAEtBjC,KAAK0E,eAMjBhB,YAAa,WACT1D,KAAK2E,UACL3E,KAAKqE,QAAQrD,EAAQ,CAAEsD,KAAMtE,KAAKgE,iBAElChE,KAAK4E,gBAGThB,MAAO,SAASG,GACZ,IAEIc,EAEAC,EAEAC,EACAC,EACAC,EARAjB,EAAiBhE,KAAKgE,eACtBkB,EAASlF,KAAKmF,YAAYpB,GAE1BlB,EAAe,CAAEuC,KAAMrB,EAAEsB,EAAEC,SAAUC,IAAKxB,EAAEyB,EAAEF,UAE9CG,EAAY,CAAEJ,EAAGtB,EAAEsB,EAAEK,MAAOF,EAAGzB,EAAEyB,EAAEE,OAInC5C,EAAO9C,KAAK6B,QAAQiB,KACpBI,EAAkBlD,KAAK6B,QAAQqB,gBAC/ByC,EAAY,CAAErB,KAAMN,EAAgB4B,KAAM5F,KAAMuE,eAAgBR,GAEpE,GAAa,MAATjB,GAAyB,MAATA,GAKpB,GAAIoC,EAAQ,CAUR,GATAL,EAAe7E,KAAK6F,kBAAkBX,EAAO7D,SAE7CyD,EAAc,CACVM,KAAMU,KAAKC,MAAMlD,EAAauC,KAAOP,EAAaO,MAClDG,IAAKO,KAAKC,MAAMlD,EAAa0C,IAAMV,EAAaU,MAGpDtF,EAAE0B,OAAOgE,EAAW,CAAET,OAAQA,EAAO7D,UAEjC6D,EAAOc,eAEP,YADAhG,KAAKiG,iBAAiBf,EAAQ,KAAMS,GAsBxC,GAlBIT,EAAOgB,mBACPlG,KAAKiG,iBAAiBf,EAAQ,OAAQS,GAGtC3F,KAAKmG,YAAYjB,EAAO7D,SACnBoE,EAAUJ,EAAI,GAAKnC,IAAsBA,GAAmB4B,EAAYM,KAAO,EAChFL,EAAY,QACJU,EAAUJ,EAAI,GAAKnC,IAAsBA,GAAmB4B,EAAYM,KAAO,KACvFL,EAAY,QAGXU,EAAUD,EAAI,GAAKtC,IAAsBA,GAAmB4B,EAAYS,IAAM,EAC/ER,EAAY,QACJU,EAAUD,EAAI,GAAKtC,IAAsBA,GAAmB4B,EAAYS,IAAM,KACtFR,EAAY,QAIhBA,EAAW,CAMX,IAHAC,GAFAC,EAA4B,SAAdF,EAAwBqB,OAAOrE,GAAGsE,KAAOD,OAAOrE,GAAGuE,MAE5CtE,KAAKkD,EAAO7D,SAG1B2D,EAAQuB,SAAWvB,EAAQb,GAAG,aACjCa,EAAUC,EAAWjD,KAAKgD,GAG1BA,EAAQ,IAAMhF,KAAKiC,YAAY,IAC/BjC,KAAKiG,iBAAiBf,EAAQH,EAAWY,UAhDjD3F,KAAKwG,gBAAgB1D,EAAMD,EAAc4C,EAAU3C,GAAO6C,IAsDlE7B,SAAU,SAASC,GACf,IAKI0C,EACAC,EACAf,EACAgB,EARA1E,EAAcjC,KAAKiC,YACnB+B,EAAiBhE,KAAKgE,eACtB4C,EAAe5G,KAAK6G,QAAQ7C,GAC5B8C,EAAmB9G,KAAK6G,QAAQ5E,GAChCU,EAAc3C,KAAK6B,QAAQc,YAM/B3C,KAAK4E,eAELe,EAAY,CACRoB,OAAQ9F,EACRqD,KAAMN,EACNgD,SAAUJ,EACVK,SAAUH,EACVvC,eAAgBR,GAGhB+C,GAAoB,EACpBJ,EAAqB1G,KAAKqE,QAAQvD,EAAK6E,IAEvCc,EAAgBxE,EAAYiF,QAAQvE,GAAawE,mBAEjDxB,EAAUoB,OAAS7F,EACnByF,EAAyB1G,EAAE0B,OAAO,GAAIgE,EAAW,CAC7CoB,OAAQ5F,EACR6F,UA1NI,EA2NJC,SAAUR,EAAcI,QAAQ5E,KAGpCyE,KAAwB1G,KAAKqE,QAAQvD,EAAK6E,KAAec,EAAcpC,QAAQvD,EAAK6F,KAGpFD,GAAsBI,IAAqBF,EAC3C5G,KAAK2E,WAIT1C,EAAYmF,YAAYpD,GAExBA,EAAeqD,OACfrH,KAAKmC,UAAUmF,SAAU,EAEzB3B,EAAY,CACRoB,QA5OQ,GA4OA/G,KAAK6G,QAAQ7C,GAAmC/C,EAAcC,EACtEoD,KAAMN,EACNgD,SAAUJ,EACVK,SAAUjH,KAAK6G,QAAQ7C,GACvBO,eAAgBR,GAGpB/D,KAAKqE,QAAQtD,EAAQ4E,GAEjBc,IACAE,EAAyB1G,EAAE0B,OAAO,GAAIgE,EAAW,CAC7CoB,OAAQ5F,EACR6F,UAxPI,EAyPJC,SAAUR,EAAcI,QAAQ7C,KAGpCyC,EAAcpC,QAAQtD,EAAQ4F,MAKtCxB,YAAa,SAASpB,GAClB,IACIwD,EAEAC,EAHAnG,EAAUrB,KAAKyH,wBAAwB1D,GAEvCpB,EAAc3C,KAAK6B,QAAQc,YAG/B,OAAI1C,EAAEyH,SAAS1H,KAAKqB,QAAQ,GAAIA,IAE5BmG,GADAD,EAAQvH,KAAKuH,SACAhF,OAAOlB,GAAS,IAAMkG,EAAMI,IAAItG,GAAS,IAExC,CAAEA,QAASpB,EAAEuH,GAAOI,SAAU5H,MAAS,KAC9CA,KAAKqB,QAAQ,IAAMA,GAAWrB,KAAK6H,WACnC,CAAExG,QAASrB,KAAKqB,QAASuG,SAAU5H,KAAMgG,gBAAgB,GACzDhG,KAAKqB,QAAQ,IAAMA,GAAWrB,KAAK8H,gBAEnC,CAAEzG,QADTmG,EAAOxH,KAAKuH,QAAQQ,GAAG,GACEH,SAAU5H,KAAMkG,mBAAmB,GACrDvD,EACA3C,KAAKgI,wBAAwB3G,EAAS0C,QAD1C,GAKX0D,wBAAyB,SAAS1D,GAC9B,IAAIkE,EAAqB9H,EAAM8H,mBAAmBlE,GAC9C5B,EAAY4B,EAAEmE,OAYlB,OAlSR,SAA2BC,EAAQC,GAC/B,IACI,OAAOnI,EAAEyH,SAASS,EAAQC,IAAUD,GAAUC,EAChD,MAAOrE,GACL,OAAO,GAoRHsE,CAAkBlG,EAAUD,KAAK,GAAI+F,KACrC9F,EAAUD,KAAKoG,QACfL,EAAqB9H,EAAM8H,mBAAmBlE,MAG1CkE,EAAqB9H,EAAM8H,mBAAmBlE,IAElD5B,EAAUD,KAAKmF,QAGZY,GAGXD,wBAAyB,SAAS3G,EAAS0C,GAMvC,IALA,IACIwE,EACAhB,EACAC,EAHAgB,EAAYvI,EAAED,KAAK6B,QAAQc,aAKtB8F,EAAI,EAAGA,EAAID,EAAUjC,OAAQkC,IAGlC,GAFAF,EAAmBC,EAAUT,GAAGU,GAAGtB,mBAE/BlH,EAAEyH,SAASc,EAAUC,GAAIpH,IACzB,GAAIkH,EAIA,OAFAf,GADAD,EAAQgB,EAAiBhB,SACZhF,OAAOlB,GAAS,IAAMkG,EAAMI,IAAItG,GAAS,KAGlDkH,EAAiBtG,YAAcjC,KAAKiC,YAC7B,CAAEZ,QAASpB,EAAEuH,GAAOI,SAAUW,IAE9B,UAGZ,GAAIC,EAAUC,IAAMpH,EAAS,CAChC,GAAIkH,GAAoBA,EAAiBV,WACrC,MAAO,CAAExG,QAASmH,EAAUT,GAAGU,GAAIb,SAAUW,EAAkBvC,gBAAgB,GAC5E,GAAIhG,KAAK0I,mBAAmBH,EAAkBxE,GAEjD,MAAO,CAAE1C,QADTmG,EAAOe,EAAiBhB,QAAQoB,OACRf,SAAUW,KAOlDG,mBAAoB,SAASd,EAAU7D,GACnC,IAEI6E,EAFAC,EAAWjB,EAASL,QAAQoB,OAC5B9F,EAAuBkB,EAAEsB,EAAEC,SAA3BzC,EAA0CkB,EAAEyB,EAAEF,SAclD,OAVAsD,EAAiBzI,EAAM2I,UAAUD,IAClBtD,KAAO9E,EAAYoI,GAClCD,EAAexD,MAAQ7E,EAAWsI,IAE9B7I,KAAKmG,YAAY0C,GACTD,EAAexD,KAAOvC,EAEtB+F,EAAerD,IAAM1C,GAGlB,GAGnB2D,gBAAiB,SAAS1D,EAAMD,EAAc6C,EAAOC,GACjD,IAGId,EAHAkE,EAA2B,MAATjG,EAAgBD,EAAauC,KAAOvC,EAAa0C,IACnEL,EAAUQ,EAAQ,EAAK1F,KAAKiC,YAAYoE,OAASrG,KAAKiC,YAAYqE,OAClEiB,EAAQvH,KAAKuH,QAGbrC,EAAOqB,SAAWrB,EAAOf,GAAG,cAC5Be,EAAUQ,EAAQ,EAAKR,EAAOmB,OAASnB,EAAOoB,QAG7CiB,EAAMhF,OAAO2C,GAAQqB,SAI1BtG,EAAE0B,OAAOgE,EAAW,CAAET,OAAQA,KAC9BL,EAAe7E,KAAK6F,kBAAkBX,MAGlCL,EAAyB,MAAT/B,EAAgB+B,EAAaO,KAAOP,EAAaU,KAGjEL,EAAOqB,QAAUb,EAAQ,GAAKqD,EAAiBlE,EAAe,EAC9D7E,KAAKiG,iBAAiB,CAAE5E,QAAS6D,EAAQ0C,SAAU5H,MAAQ,OAAQ2F,GAC5DT,EAAOqB,QAAUb,EAAQ,GAAKqD,EAAiBlE,EAAe,GACrE7E,KAAKiG,iBAAiB,CAAE5E,QAAS6D,EAAQ0C,SAAU5H,MAAQ,OAAQ2F,KAI3EM,iBAAkB,SAASf,EAAQH,EAAWY,GAC1C,IAAI1D,EAAcjC,KAAKiC,YAElBiD,EAAO0C,SAASvD,QAAQzD,EAAa+E,KAEjCZ,EAEoB,SAAdA,EACPG,EAAO7D,QAAQoD,OAAOxC,GACD,SAAd8C,GACPG,EAAO7D,QAAQ2H,MAAM/G,GAJrBiD,EAAO7D,QAAQ4H,OAAOhH,GAO1BiD,EAAO0C,SAASvD,QAAQxD,EAAM8E,KAItCjB,WAAY,WACR,IACIwE,EADAjG,EAASjD,KAAK6B,QAAQoB,OAGtBA,GAAqB,SAAXA,IACViG,EAAOjJ,EAAEkJ,SAASD,MAElBlJ,KAAKoJ,oBAAsBF,EAAKzH,IAAI,UACpCyH,EAAKzH,IAAI,CAAEwB,OAAUA,IAEhBjD,KAAKqJ,oBACNrJ,KAAKqJ,kBAAoBpJ,EAAE,sBAAwBgD,EAAS,2BAGhEjD,KAAKqJ,kBAAkBC,SAASJ,KAIxCtE,aAAc,WACN5E,KAAKoJ,sBACLnJ,EAAEkJ,SAASD,MAAMzH,IAAI,SAAUzB,KAAKoJ,qBACpCpJ,KAAKoJ,oBAAsB,KAE3BpJ,KAAKqJ,kBAAkBE,WAI/B1D,kBAAmB,SAASxE,GACxB,IAAImI,EAASnI,EAAQkF,OAASpG,EAAM2I,UAAUzH,GAAW,KAMzD,OALImI,IACAA,EAAOjE,KAAO9E,EAAYY,GAAW,EACrCmI,EAAOpE,MAAQ7E,EAAWc,GAAW,GAGlCmI,GAGXrD,YAAa,SAAS7B,GAClB,IAAImF,EAAa,aAAaC,KAAKpF,EAAK7C,IAAI,UACxCkI,EAAU,oBAAoBD,KAAKpF,EAAK7C,IAAI,YAC5CmI,EAAmB,OAAOF,KAAKpF,EAAK6D,SAAS1G,IAAI,cAAgB,kBAAkBiI,KAAKpF,EAAK6D,SAAS1G,IAAI,qBAAuB6C,EAAK6D,SAAS1G,IAAI,mBACvJ,OAAOgI,GAAcE,GAAWC,GAGpCjF,QAAS,WACD3E,KAAKgE,iBACLhE,KAAKgE,eAAeqD,OACpBrH,KAAKiC,YAAYsH,SACjBvJ,KAAKmC,UAAUmF,SAAU,IAIjCuC,OAAQ,WACJ,IAAItH,EAASvC,KAAK6B,QAAQU,OAS1B,OANIA,EACQvC,KAAKqB,QAAQyI,KAAKvH,GAElBvC,KAAKqB,QAAQ0I,YAM7BlD,QAAS,SAASxF,GACd,IAAIkG,EAAQvH,KAAK6J,SACb5H,EAAcjC,KAAKiC,YACnB+B,EAAiBhE,KAAKgE,eAE1B,OAAI/B,GAAeZ,EAAQ,IAAMY,EAAY,GAClCsF,EAAMyC,IAAIhG,GAAgBiG,MAAM5I,GAEhCkG,EAAMyC,IAAI/H,GAAagI,MAAM5I,IAI5CkG,MAAO,WACH,IAAItF,EAAcjC,KAAKiC,YACnBsF,EAAQvH,KAAK6J,SAMjB,OAJI5H,IACAsF,EAAQA,EAAMyC,IAAI/H,IAGfsF,GAGXM,SAAU,WACN,OAAQ7H,KAAKuH,QAAQhB,QAGzBuB,cAAe,WACX,OAA+B,IAAxB9H,KAAKuH,QAAQhB,QAAgBvG,KAAKuH,QAAQpD,GAAG,cAK5DhE,EAAMG,GAAG4J,OAAOxI,GA5fpB,CA6fGtB,OAAOD,MAAMiG,QACFjG","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.draganddrop.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.draganddrop'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendosortable = global.kendosortable || {}, global.kendosortable.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"sortable\",\n name: \"Sortable\",\n category: \"framework\",\n depends: [ \"draganddrop\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n\n START = \"start\",\n BEFORE_MOVE = \"beforeMove\",\n MOVE = \"move\",\n END = \"end\",\n CHANGE = \"change\",\n CANCEL = \"cancel\",\n\n ACTION_SORT = \"sort\",\n ACTION_REMOVE = \"remove\",\n ACTION_RECEIVE = \"receive\",\n\n DEFAULT_FILTER = \">*\",\n MISSING_INDEX = -1;\n\n function containsOrEqualTo(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n\n function defaultHint(element) {\n return element.clone();\n }\n\n function defaultPlaceholder(element) {\n return element.clone().removeAttr(\"id\").css(\"visibility\", \"hidden\");\n }\n\n var Sortable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n if (!that.options.placeholder) {\n that.options.placeholder = defaultPlaceholder;\n }\n\n if (!that.options.hint) {\n that.options.hint = defaultHint;\n }\n\n that.draggable = that._createDraggable();\n },\n\n events: [\n START,\n BEFORE_MOVE,\n MOVE,\n END,\n CHANGE,\n CANCEL\n ],\n\n options: {\n name: \"Sortable\",\n hint: null,\n placeholder: null,\n filter: DEFAULT_FILTER,\n holdToDrag: false,\n disabled: null,\n container: null,\n connectWith: null,\n handler: null,\n cursorOffset: null,\n axis: null,\n ignore: null,\n autoScroll: false,\n cursor: \"auto\",\n moveOnDragEnter: false\n },\n\n destroy: function() {\n this.draggable.destroy();\n Widget.fn.destroy.call(this);\n },\n\n _createDraggable: function() {\n var that = this,\n element = that.element,\n options = that.options;\n\n return new kendo.ui.Draggable(element, {\n filter: options.filter,\n hint: kendo.isFunction(options.hint) ? options.hint : $(options.hint),\n holdToDrag: options.holdToDrag,\n container: options.container ? $(options.container) : null,\n cursorOffset: options.cursorOffset,\n axis: options.axis,\n ignore: options.ignore,\n autoScroll: options.autoScroll,\n dragstart: that._dragstart.bind(that),\n dragcancel: that._dragcancel.bind(that),\n drag: that._drag.bind(that),\n dragend: that._dragend.bind(that)\n });\n },\n\n _dragstart: function(e) {\n var draggedElement = this.draggedElement = e.currentTarget,\n disabled = this.options.disabled,\n handler = this.options.handler,\n _placeholder = this.options.placeholder,\n placeholder = this.placeholder = kendo.isFunction(_placeholder) ? $(_placeholder.call(this, draggedElement)) : $(_placeholder);\n\n if (disabled && draggedElement.is(disabled)) {\n e.preventDefault();\n } else if (handler && !$(e.initialTarget).is(handler)) {\n e.preventDefault();\n } else {\n\n if (this.trigger(START, { item: draggedElement, draggableEvent: e })) {\n e.preventDefault();\n } else {\n draggedElement.css(\"display\", \"none\");\n draggedElement.before(placeholder);\n\n this._setCursor();\n }\n\n }\n },\n\n _dragcancel: function() {\n this._cancel();\n this.trigger(CANCEL, { item: this.draggedElement });\n\n this._resetCursor();\n },\n\n _drag: function(e) {\n var draggedElement = this.draggedElement,\n target = this._findTarget(e),\n targetCenter,\n cursorOffset = { left: e.x.location, top: e.y.location },\n offsetDelta,\n axisDelta = { x: e.x.delta, y: e.y.delta },\n direction,\n sibling,\n getSibling,\n axis = this.options.axis,\n moveOnDragEnter = this.options.moveOnDragEnter,\n eventData = { item: draggedElement, list: this, draggableEvent: e };\n\n if (axis === \"x\" || axis === \"y\") {\n this._movementByAxis(axis, cursorOffset, axisDelta[axis], eventData);\n return;\n }\n\n if (target) {\n targetCenter = this._getElementCenter(target.element);\n\n offsetDelta = {\n left: Math.round(cursorOffset.left - targetCenter.left),\n top: Math.round(cursorOffset.top - targetCenter.top)\n };\n\n $.extend(eventData, { target: target.element });\n\n if (target.appendToBottom) {\n this._movePlaceholder(target, null, eventData);\n return;\n }\n\n if (target.appendAfterHidden) {\n this._movePlaceholder(target, \"next\", eventData);\n }\n\n if (this._isFloating(target.element)) { //horizontal\n if ((axisDelta.x < 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.left < 0)) {\n direction = \"prev\";\n } else if ((axisDelta.x > 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.left > 0)) {\n direction = \"next\";\n }\n } else { //vertical\n if ((axisDelta.y < 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.top < 0)) {\n direction = \"prev\";\n } else if ((axisDelta.y > 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.top > 0)) {\n direction = \"next\";\n }\n }\n\n if (direction) {\n getSibling = (direction === \"prev\") ? jQuery.fn.prev : jQuery.fn.next;\n\n sibling = getSibling.call(target.element);\n\n //find the prev/next visible sibling\n while (sibling.length && !sibling.is(\":visible\")) {\n sibling = getSibling.call(sibling);\n }\n\n if (sibling[0] != this.placeholder[0]) {\n this._movePlaceholder(target, direction, eventData);\n }\n }\n }\n },\n\n _dragend: function(e) {\n var placeholder = this.placeholder,\n draggedElement = this.draggedElement,\n draggedIndex = this.indexOf(draggedElement),\n placeholderIndex = this.indexOf(placeholder),\n connectWith = this.options.connectWith,\n connectedList,\n isDefaultPrevented,\n eventData,\n connectedListEventData;\n\n this._resetCursor();\n\n eventData = {\n action: ACTION_SORT,\n item: draggedElement,\n oldIndex: draggedIndex,\n newIndex: placeholderIndex,\n draggableEvent: e\n };\n\n if (placeholderIndex >= 0) {\n isDefaultPrevented = this.trigger(END, eventData);\n } else {\n connectedList = placeholder.parents(connectWith).getKendoSortable();\n\n eventData.action = ACTION_REMOVE;\n connectedListEventData = $.extend({}, eventData, {\n action: ACTION_RECEIVE,\n oldIndex: MISSING_INDEX,\n newIndex: connectedList.indexOf(placeholder)\n });\n\n isDefaultPrevented = !(!this.trigger(END, eventData) && !connectedList.trigger(END, connectedListEventData));\n }\n\n if (isDefaultPrevented || placeholderIndex === draggedIndex) {\n this._cancel();\n return;\n }\n\n placeholder.replaceWith(draggedElement);\n\n draggedElement.show();\n this.draggable.dropped = true;\n\n eventData = {\n action: this.indexOf(draggedElement) != MISSING_INDEX ? ACTION_SORT : ACTION_REMOVE,\n item: draggedElement,\n oldIndex: draggedIndex,\n newIndex: this.indexOf(draggedElement),\n draggableEvent: e\n };\n\n this.trigger(CHANGE, eventData);\n\n if (connectedList) {\n connectedListEventData = $.extend({}, eventData, {\n action: ACTION_RECEIVE,\n oldIndex: MISSING_INDEX,\n newIndex: connectedList.indexOf(draggedElement)\n });\n\n connectedList.trigger(CHANGE, connectedListEventData);\n }\n\n },\n\n _findTarget: function(e) {\n var element = this._findElementUnderCursor(e),\n items,\n connectWith = this.options.connectWith,\n node;\n\n if ($.contains(this.element[0], element)) { //the element is part of the sortable container\n items = this.items();\n node = items.filter(element)[0] || items.has(element)[0];\n\n return node ? { element: $(node), sortable: this } : null;\n } else if (this.element[0] == element && this._isEmpty()) {\n return { element: this.element, sortable: this, appendToBottom: true };\n } else if (this.element[0] == element && this._isLastHidden()) {\n node = this.items().eq(0);\n return { element: node , sortable: this, appendAfterHidden: true };\n } else if (connectWith) { //connected lists are present\n return this._searchConnectedTargets(element, e);\n }\n },\n\n _findElementUnderCursor: function(e) {\n var elementUnderCursor = kendo.elementUnderCursor(e),\n draggable = e.sender;\n\n if (containsOrEqualTo(draggable.hint[0], elementUnderCursor)) {\n draggable.hint.hide();\n elementUnderCursor = kendo.elementUnderCursor(e);\n // IE8 does not return the element in iframe from first attempt\n if (!elementUnderCursor) {\n elementUnderCursor = kendo.elementUnderCursor(e);\n }\n draggable.hint.show();\n }\n\n return elementUnderCursor;\n },\n\n _searchConnectedTargets: function(element, e) {\n var connected = $(this.options.connectWith),\n sortableInstance,\n items,\n node;\n\n for (var i = 0; i < connected.length; i++) {\n sortableInstance = connected.eq(i).getKendoSortable();\n\n if ($.contains(connected[i], element)) {\n if (sortableInstance) {\n items = sortableInstance.items();\n node = items.filter(element)[0] || items.has(element)[0];\n\n if (node) {\n sortableInstance.placeholder = this.placeholder;\n return { element: $(node), sortable: sortableInstance };\n } else {\n return null;\n }\n }\n } else if (connected[i] == element) {\n if (sortableInstance && sortableInstance._isEmpty()) {\n return { element: connected.eq(i), sortable: sortableInstance, appendToBottom: true };\n } else if (this._isCursorAfterLast(sortableInstance, e)) {\n node = sortableInstance.items().last();\n return { element: node, sortable: sortableInstance };\n }\n }\n }\n\n },\n\n _isCursorAfterLast: function(sortable, e) {\n var lastItem = sortable.items().last(),\n cursorOffset = { left: e.x.location, top: e.y.location },\n lastItemOffset,\n delta;\n\n lastItemOffset = kendo.getOffset(lastItem);\n lastItemOffset.top += outerHeight(lastItem);\n lastItemOffset.left += outerWidth(lastItem);\n\n if (this._isFloating(lastItem)) { //horizontal\n delta = lastItemOffset.left - cursorOffset.left;\n } else { //vertical\n delta = lastItemOffset.top - cursorOffset.top;\n }\n\n return delta < 0 ? true : false;\n },\n\n _movementByAxis: function(axis, cursorOffset, delta, eventData) {\n var cursorPosition = (axis === \"x\") ? cursorOffset.left : cursorOffset.top,\n target = (delta < 0) ? this.placeholder.prev() : this.placeholder.next(),\n items = this.items(),\n targetCenter;\n\n if (target.length && !target.is(\":visible\")) {\n target = (delta < 0) ? target.prev() : target.next();\n }\n\n if (!items.filter(target).length) {\n return;\n }\n\n $.extend(eventData, { target: target });\n targetCenter = this._getElementCenter(target);\n\n if (targetCenter) {\n targetCenter = (axis === \"x\") ? targetCenter.left : targetCenter.top;\n }\n\n if (target.length && delta < 0 && cursorPosition - targetCenter < 0) { //prev\n this._movePlaceholder({ element: target, sortable: this }, \"prev\", eventData);\n } else if (target.length && delta > 0 && cursorPosition - targetCenter > 0) { //next\n this._movePlaceholder({ element: target, sortable: this }, \"next\", eventData);\n }\n },\n\n _movePlaceholder: function(target, direction, eventData) {\n var placeholder = this.placeholder;\n\n if (!target.sortable.trigger(BEFORE_MOVE, eventData)) {\n\n if (!direction) {\n target.element.append(placeholder);\n } else if (direction === \"prev\") {\n target.element.before(placeholder);\n } else if (direction === \"next\") {\n target.element.after(placeholder);\n }\n\n target.sortable.trigger(MOVE, eventData);\n }\n },\n\n _setCursor: function() {\n var cursor = this.options.cursor,\n body;\n\n if (cursor && cursor !== \"auto\") {\n body = $(document.body);\n\n this._originalCursorType = body.css(\"cursor\");\n body.css({ \"cursor\": cursor });\n\n if (!this._cursorStylesheet) {\n this._cursorStylesheet = $(\"\");\n }\n\n this._cursorStylesheet.appendTo(body);\n }\n },\n\n _resetCursor: function() {\n if (this._originalCursorType) {\n $(document.body).css(\"cursor\", this._originalCursorType);\n this._originalCursorType = null;\n\n this._cursorStylesheet.remove();\n }\n },\n\n _getElementCenter: function(element) {\n var center = element.length ? kendo.getOffset(element) : null;\n if (center) {\n center.top += outerHeight(element) / 2;\n center.left += outerWidth(element) / 2;\n }\n\n return center;\n },\n\n _isFloating: function(item) {\n var isFloating = /left|right/.test(item.css('float'));\n var isTable = /inline|table-cell/.test(item.css('display'));\n var isHorizontalFlex = /flex/.test(item.parent().css('display')) && (/row|row-reverse/.test(item.parent().css('flex-direction')) || !item.parent().css('flex-direction'));\n return isFloating || isTable || isHorizontalFlex;\n },\n\n _cancel: function() {\n if (this.draggedElement) {\n this.draggedElement.show();\n this.placeholder.remove();\n this.draggable.dropped = true;\n }\n },\n\n _items: function() {\n var filter = this.options.filter,\n items;\n\n if (filter) {\n items = this.element.find(filter);\n } else {\n items = this.element.children();\n }\n\n return items;\n },\n\n indexOf: function(element) {\n var items = this._items(),\n placeholder = this.placeholder,\n draggedElement = this.draggedElement;\n\n if (placeholder && element[0] == placeholder[0]) {\n return items.not(draggedElement).index(element);\n } else {\n return items.not(placeholder).index(element);\n }\n },\n\n items: function() {\n var placeholder = this.placeholder,\n items = this._items();\n\n if (placeholder) {\n items = items.not(placeholder);\n }\n\n return items;\n },\n\n _isEmpty: function() {\n return !this.items().length;\n },\n\n _isLastHidden: function() {\n return this.items().length === 1 && this.items().is(\":hidden\");\n }\n\n });\n\n kendo.ui.plugin(Sortable);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}