{"version":3,"file":"kendo.reorderable.min.js","sources":["kendo.reorderable.js"],"sourcesContent":["(function(f, define) {\n define('kendo.reorderable',[ \"kendo.core\", \"kendo.draganddrop\" ], f);\n})(function() {\n\nvar __meta__ = {\n id: \"reorderable\",\n name: \"Reorderable\",\n category: \"framework\",\n depends: [ \"core\", \"draganddrop\" ],\n advanced: true\n};\n\n(function($, undefined) {\n var kendo = window.kendo,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n getOffset = kendo.getOffset,\n Widget = kendo.ui.Widget,\n CHANGE = \"change\",\n KREORDERABLE = \"k-reorderable\";\n\n var Reorderable = Widget.extend({\n init: function(element, options) {\n var that = this,\n draggable,\n group = kendo.guid() + \"-reorderable\";\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element.addClass(KREORDERABLE);\n options = that.options;\n\n that.draggable = draggable = options.draggable || new kendo.ui.Draggable(element, {\n group: group,\n autoScroll: true,\n filter: options.filter,\n hint: options.hint\n });\n\n if (!that.options.dropFilter) {\n that.options.dropFilter = draggable.options.filter;\n }\n\n that.reorderDropCue = that.options.reorderDropCue;\n\n element.find(options.dropFilter).kendoDropTarget({\n group: draggable.options.group,\n dragenter: function(e) {\n var externalDraggableInstance = that._externalDraggable(e);\n\n if (!that._draggable && !externalDraggableInstance) {\n return;\n }\n\n if (externalDraggableInstance) {\n that._handleExternalDraggable(externalDraggableInstance);\n }\n\n var dropTarget = this.element, offset;\n\n var denied = that._isPartOfSortable(that._draggable) ? (!that._dropTargetAllowed(dropTarget) || that._isLastDraggable()) : false;\n\n that.toggleHintClass(e.draggable.hint, denied);\n\n if (!denied) {\n offset = getOffset(dropTarget);\n var cueOffset = { top: offset.top, left: offset.left };\n var isHorizontal = options.orientation === \"horizontal\";\n\n if (!options.smartPosition || (options.inSameContainer && !options.inSameContainer({\n source: dropTarget,\n target: that._draggable,\n sourceIndex: that._index(dropTarget),\n targetIndex: that._index(that._draggable)\n }))) {\n that._dropTarget = dropTarget;\n } else {\n if (that._index(dropTarget) > that._index(that._draggable) && options.smartPosition) {\n cueOffset[isHorizontal ? \"left\" : \"top\"] += isHorizontal ? outerWidth(dropTarget) : outerHeight(dropTarget);\n }\n }\n\n that.reorderDropCue.css({\n height: outerHeight(dropTarget),\n top: cueOffset.top,\n left: cueOffset.left,\n zIndex: 19000\n })\n .appendTo(document.body);\n\n if (options.positionDropCue) {\n options.positionDropCue(that.reorderDropCue, dropTarget);\n }\n }\n },\n dragleave: function(e) {\n that.toggleHintClass(e.draggable.hint, true);\n that.reorderDropCue.remove();\n that._dropTarget = null;\n },\n drop: function() {\n that._dropTarget = null;\n\n if (!that._draggable) {\n return;\n }\n var dropTarget = this.element;\n var draggable = that._draggable;\n var dropIndex = that._index(dropTarget);\n\n var isAfter = that.options.orientation === \"horizontal\" ?\n getOffset(that.reorderDropCue).left > getOffset(dropTarget).left :\n getOffset(that.reorderDropCue).top > getOffset(dropTarget).top;\n\n dropIndex = isAfter ? dropIndex + 1 : dropIndex;\n\n if (that._dropTargetAllowed(dropTarget) && !that._isLastDraggable() && that._index(draggable) !== dropIndex) {\n that.trigger(CHANGE, {\n element: that._draggable,\n target: dropTarget,\n oldIndex: that._index(draggable),\n newIndex: that._index(dropTarget),\n position: isAfter ? \"after\" : \"before\"\n });\n }\n\n if (that.reorderDropCue) {\n that.reorderDropCue.remove();\n }\n }\n });\n\n draggable.bind([ \"dragcancel\", \"dragend\", \"dragstart\", \"drag\" ], {\n dragcancel: that._dragcancel.bind(that),\n dragend: that._dragend.bind(that),\n dragstart: that._dragstart.bind(that),\n drag: that._drag.bind(that)\n });\n },\n\n options: {\n name: \"Reorderable\",\n filter: \"*\",\n orientation: \"horizontal\",\n deniedIcon: \"k-i-cancel\",\n allowIcon: \"k-i-plus\",\n reorderDropCue: $('
'),\n smartPosition: true\n },\n\n events: [\n CHANGE\n ],\n\n toggleHintClass: function(hint, denied) {\n var that = this,\n options = that.options;\n\n hint = $(hint);\n\n if (denied) {\n hint.find(\".k-drag-status\").removeClass(options.allowIcon).addClass(options.deniedIcon);\n } else {\n hint.find(\".k-drag-status\").removeClass(options.deniedIcon).addClass(options.allowIcon);\n }\n },\n\n _handleExternalDraggable: function(draggable) {\n var that = this;\n var draggableFilter = that.options.dropFilter.trimStart();\n\n // make direct child selectors compatible with .closest()\n if (draggableFilter && draggableFilter[0] == \">\") {\n draggableFilter = draggableFilter.substring(1);\n }\n\n that._dragcancelHandler = that._dragcancel.bind(that);\n that._dragendHandler = that._dragend.bind(that);\n that._dragstartHandler = that._dragstart.bind(that);\n that._dragHandler = that._drag.bind(that);\n\n that._draggable = draggable.currentTarget.closest(draggableFilter);\n that._draggableInstance = draggable;\n that._elements = that.element.find(that.options.dropFilter);\n\n draggable.bind([ \"dragcancel\", \"dragend\", \"dragstart\", \"drag\" ], {\n dragcancel: that._dragcancelHandler,\n dragend: that._dragendHandler,\n dragstart: that._dragstartHandler,\n drag: that._dragHandler\n });\n },\n\n _dragcancel: function() {\n var that = this;\n\n if (that._draggableInstance && (that._dragcancelHandler || that._dragendHandler ||\n that._dragstartHandler || that._dragHandler)) {\n\n that._draggableInstance.unbind({\n dragcancel: that._dragcancelHandler,\n dragend: that._dragendHandler,\n dragstart: that._dragstartHandler,\n drag: that._dragHandler\n });\n }\n\n if (that.reorderDropCue) {\n that.reorderDropCue.remove();\n }\n\n that._draggable = null;\n that._elements = null;\n\n },\n _dragend: function() {\n var that = this;\n\n if (that._draggableInstance && (that._dragcancelHandler || that._dragendHandler ||\n that._dragstartHandler || that._dragHandler)) {\n\n that._draggableInstance.unbind({\n dragcancel: that._dragcancelHandler,\n dragend: that._dragendHandler,\n dragstart: that._dragstartHandler,\n drag: that._dragHandler\n });\n }\n\n if (that.reorderDropCue) {\n that.reorderDropCue.remove();\n }\n\n that._draggable = null;\n that._elements = null;\n },\n _dragstart: function(e) {\n var that = this;\n var target = $(e.currentTarget);\n var draggableFilter = that.options.dropFilter.trimStart();\n\n // make direct child selectors compatible with .closest()\n if (draggableFilter && draggableFilter[0] == \">\") {\n draggableFilter = draggableFilter.substring(1);\n }\n\n that._draggable = target.is(draggableFilter) ? target : target.closest(draggableFilter);\n that._elements = that.element.find(that.options.dropFilter);\n },\n _drag: function(e) {\n var that = this,\n dropIndex, sourceIndex, denied,\n offset = {},\n target,\n draggableFilter = that.options.dropFilter.trimStart();\n\n // make direct child selectors compatible with .closest()\n if (draggableFilter && draggableFilter[0] == \">\") {\n draggableFilter = draggableFilter.substring(1);\n }\n\n target = $(e.currentTarget).closest(draggableFilter);\n\n if (!that._dropTarget || (that.options.smartPosition && e.sender.hint.find(\".k-drag-status\").hasClass(\"k-i-cancel\"))) {\n return;\n }\n\n dropIndex = that._index(that._dropTarget);\n sourceIndex = that._index(target);\n sourceIndex = dropIndex > sourceIndex ? sourceIndex + 1 : sourceIndex;\n\n if (that.options.orientation === \"horizontal\") {\n var dropStartOffset = getOffset(that._dropTarget).left;\n var width = outerWidth(that._dropTarget);\n\n if (e.pageX > dropStartOffset + width / 2) {\n offset.left = dropStartOffset + width;\n dropIndex += 1;\n } else {\n offset.left = dropStartOffset;\n }\n } else {\n var dropStartTop = getOffset(that._dropTarget).top;\n var height = outerHeight(that._dropTarget);\n\n if (e.pageY > dropStartTop + height / 2) {\n offset.top = dropStartTop + height;\n dropIndex += 1;\n } else {\n offset.top = dropStartTop;\n }\n }\n\n that.reorderDropCue.css(offset);\n\n if (that.options.positionDropCue) {\n that.options.positionDropCue(that.reorderDropCue, that._dropTarget);\n }\n\n if (that._isPartOfSortable(target)) {\n\n denied = sourceIndex === dropIndex || (that.options.dragOverContainers && !that.options.dragOverContainers(sourceIndex, dropIndex));\n\n that.toggleHintClass(e.sender.hint, denied);\n }\n },\n\n _isPartOfSortable: function(draggable) {\n var that = this;\n\n return that._elements.index(draggable) >= 0;\n },\n\n _externalDraggable: function(e) {\n var that = this,\n options = that.options;\n\n if (!that._draggable && options.externalDraggable) {\n return options.externalDraggable(e);\n }\n\n return null;\n },\n\n _isLastDraggable: function() {\n var inSameContainer = this.options.inSameContainer,\n draggable = this._draggable[0],\n elements = this._elements.get(),\n found = false,\n item;\n\n if (!inSameContainer) {\n return false;\n }\n\n while (!found && elements.length > 0) {\n item = elements.pop();\n found = draggable !== item && inSameContainer({\n source: draggable,\n target: item,\n sourceIndex: this._index(draggable),\n targetIndex: this._index(item)\n });\n }\n\n return !found;\n },\n\n _dropTargetAllowed: function(dropTarget) {\n var inSameContainer = this.options.inSameContainer,\n dragOverContainers = this.options.dragOverContainers,\n draggable = this._draggable;\n\n if (draggable[0] === dropTarget[0]) {\n return false;\n }\n\n if (!inSameContainer || !dragOverContainers) {\n return true;\n }\n\n if (inSameContainer({ source: draggable,\n target: dropTarget,\n sourceIndex: this._index(draggable),\n targetIndex: this._index(dropTarget)\n })) {\n return true;\n }\n\n return dragOverContainers(this._index(draggable), this._index(dropTarget));\n },\n\n _index: function(element) {\n return this._elements.index(element);\n },\n\n destroy: function() {\n var that = this;\n\n\n Widget.fn.destroy.call(that);\n\n that.element.find(that.options.dropFilter).each(function() {\n var item = $(this);\n if (item.data(\"kendoDropTarget\")) {\n item.data(\"kendoDropTarget\").destroy();\n }\n });\n\n if (that.draggable) {\n that.draggable.destroy();\n\n that.draggable.element = that.draggable = null;\n }\n\n that.reorderDropCue.remove();\n that.elements = that.reorderDropCue = that._elements = that._draggable = null;\n }\n });\n\n kendo.ui.plugin(Reorderable);\n\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n\n"],"names":["define","__meta__","id","name","category","depends","advanced","$","window","kendo","jQuery","undefined","outerWidth","_outerWidth","outerHeight","_outerHeight","getOffset","Widget","ui","CHANGE","KREORDERABLE","Reorderable","extend","init","element","options","that","this","draggable","group","guid","fn","call","addClass","Draggable","autoScroll","filter","hint","dropFilter","reorderDropCue","find","kendoDropTarget","dragenter","e","externalDraggableInstance","_externalDraggable","_draggable","_handleExternalDraggable","dropTarget","offset","denied","_isPartOfSortable","_dropTargetAllowed","_isLastDraggable","toggleHintClass","cueOffset","top","left","isHorizontal","orientation","smartPosition","inSameContainer","source","target","sourceIndex","_index","targetIndex","_dropTarget","css","height","zIndex","appendTo","document","body","positionDropCue","dragleave","remove","drop","dropIndex","isAfter","trigger","oldIndex","newIndex","position","bind","dragcancel","_dragcancel","dragend","_dragend","dragstart","_dragstart","drag","_drag","deniedIcon","allowIcon","events","removeClass","draggableFilter","trimStart","substring","_dragcancelHandler","_dragendHandler","_dragstartHandler","_dragHandler","currentTarget","closest","_draggableInstance","_elements","unbind","is","sender","hasClass","dropStartOffset","width","pageX","dropStartTop","pageY","dragOverContainers","index","externalDraggable","elements","get","found","item","length","pop","destroy","each","data","plugin","amd","a1","a2","a3"],"mappings":"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"}