{"version":3,"file":"kendo.tilelayout.min.js","names":["factory","define","amd","$","kendo","window","ui","Widget","Draggable","keys","selector","selectorFromClasses","RESIZE","REORDER","NS","GRABCURSOR","TileLayout","extend","init","element","options","that","this","fn","call","cssNumber","gridColumnStart","gridColumnEnd","gridRowStart","gridRowEnd","addClass","styles","wrapper","_setWrapperStyles","_initContainers","_resizable","_navigatable","_reorderable","events","name","columns","gap","rows","containers","resizable","reorderable","navigatable","columnsWidth","rowsHeight","height","width","destroy","_draggableInstance","find","each","item","data","resizeHandle","off","remove","setOptions","deepExtend","empty","getOptions","result","items","id","container","header","headerSettings","body","containerSettings","headerContent","containerElements","children","hasElements","length","itemsMap","i","guid","current","attr","_addContainer","template","text","itemHeader","itemHeaderTitle","append","appendTo","itemBody","bodyTemplate","Error","index","order","_setContainerCoordinates","push","css","format","padding","settings","colSpan","rowSpan","_updateContainers","_createResizeHandle","side","down","_isresizing","_positionResizeHandle","cursorClass","leftBorderWidth","parseFloat","bottomBorderWidth","containerHeight","containerWidth","top","left","support","isRtl","removeClass","show","_createResizeHint","hint","resizeHint","insertAfter","_removeResizeHint","_positionHint","_removeAbsoluteStyles","_positionAbsolutely","position","outerWidth","outerHeight","on","_keyDown","bind","e","target","canHandle","is","ctrlKey","keyCode","LEFT","_resizeItem","RIGHT","UP","DOWN","shiftKey","_reorderItem","preventDefault","dir","delta","newSpan","parseInt","replace","split","trigger","newOrder","oldOrder","maxOrder","_updateDOM","newIndex","oldIndex","_sortContainers","indexAttr","sort","a","b","indexA","indexB","undefined","fractionWidth","fractionHeight","currentContainer","rowsCount","lastXLocation","lastYLocation","initialWidth","initialHeight","startColSpan","startRowSpan","itemsMaxSpace","rightPosition","downPosition","rectPosition","getBoundingClientRect","Math","abs","right","clientX","bottom","clientY","Resizable","handle","start","currentTarget","_calculateFractionWidth","_calculateRightEndSide","x","location","scrollHeight","y","resize","overflowsLayout","isBeyondMinimum","hintColumns","hintRows","mouseDeltaX","mouseDeltaY","deltaFromStart","resizeRowsCount","resizeColumnsCount","clientRect","style","scrollX","floor","max","scrollY","resizeend","first","columnGap","_createDropHint","dropHint","reorderHint","columnEnd","rowEnd","direction","_insertDropHint","insertBefore","_removeDropHint","originalElement","itemSelector","headerSelector","group","filter","autoScroll","ignore","closest","clone","dragstart","drag","dropContainer","containerBoundaries","elementUnderCursor","sender","draggedItem","containsOrEqualTo","hide","hasClass","next","prev","dragend","end","itemId","min","kendoDropTarget","dragenter","dropContainerBoundaries","dropTarget","parent","child","contains","plugin","jQuery"],"sources":["kendo.tilelayout.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.draganddrop', 'kendo.resizable'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"tilelayout\",\n name: \"TileLayout\",\n category: \"web\",\n depends: [\"core\"],\n features: [\n {\n id: \"tilelayout-resizable\",\n name: \"Resizable\",\n description: \"Support for resizing\",\n depends: [\"resizable\"]\n },\n {\n id: \"tilelayout-reorderable\",\n name: \"Reorderable\",\n description: \"Support for reordering\",\n depends: [\"draganddrop\"]\n }\n ]\n };\n\n (function($) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Draggable = ui.Draggable,\n keys = kendo.keys,\n selector = kendo.selectorFromClasses,\n RESIZE = \"resize\",\n REORDER = \"reorder\",\n NS = \".kendoTileLayout\",\n DOWNCURSOR = \"k-cursor-ns-resize\",\n RIGHTCURSOR = \"k-cursor-ew-resize\",\n DIAGONALCURSOR = \"k-cursor-nwse-resize\",\n RTLDIAGONALCURSOR = \"k-cursor-nesw-resize\",\n GRABCURSOR = \"k-cursor-grab\",\n GRABBINGCURSOR = \"k-cursor-grabbing\",\n MINIMALSPAN = 1,\n CURSORCLASSES = \"k-cursor-nesw-resize k-cursor-nwse-resize k-cursor-ew-resize k-cursor-ns-resize\";\n\n var tileLayoutStyles = {\n wrapper: \"k-widget k-tilelayout\",\n item: \"k-tilelayout-item k-card\",\n itemHeader: \"k-tilelayout-item-header k-card-header\",\n itemHeaderTitle: \"k-card-title\",\n itemBody: \"k-tilelayout-item-body k-card-body\",\n reorderHint: \"k-layout-item-hint k-layout-item-hint-reorder\",\n resizeHint: \"k-layout-item-hint k-layout-item-hint-resize\"\n };\n\n var TileLayout = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n $.cssNumber.gridColumnStart = true;\n $.cssNumber.gridColumnEnd = true;\n $.cssNumber.gridRowStart = true;\n $.cssNumber.gridRowEnd = true;\n\n that.element = $(element).addClass(TileLayout.styles.wrapper);\n\n that._setWrapperStyles();\n that._initContainers();\n that._resizable();\n that._navigatable();\n that._reorderable();\n },\n\n events: [\n RESIZE,\n REORDER\n ],\n\n options: {\n name: \"TileLayout\",\n columns: null,\n gap: {\n columns: 16,\n rows: 16\n },\n containers: [],\n resizable: false,\n reorderable: false,\n navigatable: false,\n columnsWidth: \"1fr\",\n rowsHeight: \"1fr\",\n height: \"\",\n width: \"\"\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (this._draggableInstance) {\n\n this.element.find(\".k-tilelayout-item\").each(function() {\n var item = $(this);\n if (item.data(\"kendoDropTarget\")) {\n item.data(\"kendoDropTarget\").destroy();\n }\n });\n\n this._draggableInstance.destroy();\n this._draggableInstance = null;\n }\n\n if (this.resizable) {\n this.resizable.destroy();\n this.resizable = null;\n }\n\n if (this.resizeHandle) {\n this.resizeHandle.off(NS).remove();\n this.resizeHandle = null;\n }\n\n this.element.off(NS);\n },\n\n setOptions: function(options) {\n this.destroy();\n kendo.deepExtend(this.options, options);\n this.element.empty();\n this.init(this.element, this.options);\n },\n\n getOptions: function() {\n var result = $.extend(true, {}, this.options);\n result.containers = kendo.deepExtend([], this.items);\n\n return result;\n },\n\n _initContainers: function() {\n var that = this;\n var containers = that.options.containers;\n var containerElements = that.element.children();\n var hasElements = !!containerElements.length;\n var id;\n var container;\n var header;\n var headerSettings;\n var body;\n var containerSettings;\n var headerContent;\n\n that.items = [];\n that.itemsMap = {};\n\n if (hasElements) {\n containerElements.each(function(i, element) {\n id = kendo.guid();\n var current = $(element)\n .addClass(TileLayout.styles.item)\n .attr(\"id\", id);\n\n that._addContainer(current, containers[i], i, id);\n });\n } else {\n for (var i = 0; i < containers.length; i++) {\n id = kendo.guid();\n containerSettings = containers[i];\n container = $(\"
\")\n .addClass(TileLayout.styles.item)\n .attr(\"id\", id);\n\n headerSettings = containerSettings.header;\n if (headerSettings && (headerSettings.template || headerSettings.text)) {\n header = $(\"
\").addClass(TileLayout.styles.itemHeader);\n if (that.options.reorderable) {\n header.addClass(GRABCURSOR);\n }\n\n headerContent = headerSettings.text ? \"
\" + headerSettings.text + \"
\" : null;\n header.append(headerContent || kendo.template(headerSettings.template)({}));\n header.appendTo(container);\n }\n body = $(\"
\").addClass(TileLayout.styles.itemBody);\n if (!containerSettings.bodyTemplate) {\n throw new Error(\"Having a bodyTemplate for the container is mandatory\");\n }\n body.append(kendo.template(containerSettings.bodyTemplate)({}));\n body.appendTo(container);\n container.appendTo(that.element);\n\n that._addContainer(container, containerSettings, i, id);\n }\n }\n },\n\n _addContainer: function(element, item, index, id) {\n var that = this;\n item.order = typeof item.order == 'number' ? item.order : index;\n element.attr(kendo.attr(\"index\"), item.order);\n item.id = id;\n that._setContainerCoordinates(element, item);\n that.itemsMap[id] = item;\n that.items.push(that.itemsMap[id]);\n },\n\n _setWrapperStyles: function() {\n var that = this;\n var options = that.options;\n that.element.css({\n \"grid-template-columns\": kendo.format(\"repeat({0}, minmax(0, {1}))\", options.columns, typeof options.columnsWidth === \"string\" ? options.columnsWidth : options.columnsWidth + \"px\"),\n \"grid-auto-rows\": kendo.format(\"minmax(0, {0})\", typeof options.rowsHeight === \"string\" ? options.rowsHeight : options.rowsHeight + \"px\"),\n \"column-gap\": options.gap.columns,\n \"width\": typeof options.width === \"string\" ? options.width : options.width + \"px\",\n \"height\": typeof options.height === \"string\" ? options.height : options.height + \"px\",\n \"padding\": options.gap.rows + \"px \" + options.gap.columns + \"px \",\n \"row-gap\": options.gap.rows\n });\n },\n\n _setContainerCoordinates: function(element, settings) {\n if (!settings) {\n return;\n }\n element.css({\n \"order\": settings.order,\n \"grid-column-end\": kendo.format(\"span {0}\", settings.colSpan),\n \"grid-row-end\": kendo.format(\"span {0}\", settings.rowSpan)\n })\n .attr(kendo.attr(\"index\"), settings.order);\n },\n\n _updateContainers: function() {\n var that = this;\n\n for (var i = 0; i < that.items.length; i++) {\n that._setContainerCoordinates(that.element.find(\"#\" + that.items[i].id), that.items[i]);\n }\n },\n\n _createResizeHandle: function(container, side, down) {\n var that = this;\n\n if (that._isresizing) {\n return;\n }\n\n if (that.resizeHandle && that.resizeHandle.data(\"div\")[0] !== container[0]) {\n that.resizeHandle.off(NS).remove();\n that.resizeHandle = null;\n }\n\n if (!that.resizeHandle) {\n that.resizeHandle = $(\n '
'\n );\n that.resizeHandle.appendTo(container);\n }\n\n that._positionResizeHandle(container, side, down);\n },\n\n _positionResizeHandle: function(container, side, down) {\n var that = this;\n var leftBorderWidth = parseFloat(container.css(\"borderRightWidth\"));\n var bottomBorderWidth = parseFloat(container.css(\"borderBottomWidth\"));\n var containerHeight = container.height();\n var containerWidth = container.width();\n var top = down ? containerHeight - 6.5 - bottomBorderWidth : 0;\n var left = side ? containerWidth - 4.5 - leftBorderWidth : 0;\n var width = 9;\n var height = 9;\n var cursorClass;\n\n if (side && down) {\n height = width = 25;\n top -= 12.5;\n left -= 12.5;\n cursorClass = kendo.support.isRtl(that.element) ? RTLDIAGONALCURSOR : DIAGONALCURSOR;\n } else if (side && !down) {\n height = containerHeight;\n cursorClass = RIGHTCURSOR;\n } else if (!side && down) {\n width = containerWidth;\n cursorClass = DOWNCURSOR;\n }\n\n that.resizeHandle\n .css({\n top: top,\n left: left,\n height: height,\n width: width\n })\n .attr(\"side\", side)\n .attr(\"down\", down)\n .removeClass(CURSORCLASSES)\n .addClass(cursorClass)\n .data(\"div\", container)\n .show();\n },\n\n _createResizeHint: function(container) {\n var that = this;\n\n if (that.hint) {\n return;\n }\n\n var colSpan = container.css(\"grid-column-end\");\n var rowSpan = container.css(\"grid-row-end\");\n var order = container.css(\"order\");\n\n that.hint = $(\"
\")\n .css({\n \"order\": order,\n \"grid-column-end\": colSpan,\n \"grid-row-end\": rowSpan\n })\n .insertAfter(container);\n },\n\n _removeResizeHint: function() {\n if (this._isresizing) {\n return;\n }\n\n if (this.hint) {\n this.hint.remove();\n this.hint = null;\n }\n },\n\n _positionHint: function(colSpan, rowSpan) {\n var that = this;\n\n if (colSpan) {\n that.hint.css(\"grid-column-end\", kendo.format(\"span {0}\", colSpan));\n }\n\n if (rowSpan) {\n that.hint.css(\"grid-row-end\", kendo.format(\"span {0}\", rowSpan));\n }\n },\n\n _removeAbsoluteStyles: function(container) {\n container.css(\"position\", \"\");\n container.css(\"left\", \"\");\n container.css(\"top\", \"\");\n container.css(\"width\", \"\");\n container.css(\"height\", \"\");\n container.css(\"z-index\", \"\");\n },\n\n _positionAbsolutely: function(container) {\n if (container.css(\"position\") == \"absolute\") {\n return;\n }\n var position = container.position();\n var width = container.outerWidth();\n var height = container.outerHeight();\n\n container.css(\"position\", \"absolute\");\n container.css(\"left\", position.left);\n container.css(\"top\", position.top);\n container.css(\"width\", width);\n container.css(\"height\", height);\n container.css(\"z-index\", 2);\n },\n\n _navigatable: function() {\n\n if (!this.options.navigatable) {\n return;\n }\n\n var that = this;\n\n that.element.children().attr(\"tabindex\", 0);\n that.element.on(\"keydown\" + NS, that, that._keyDown.bind(that));\n },\n\n _keyDown: function(e) {\n var target = $(e.target);\n var canHandle = false;\n\n if (!target.is(\".k-tilelayout-item.k-card\")) {\n return;\n }\n\n\n if (e.ctrlKey && e.keyCode == keys.LEFT) {\n canHandle = true;\n this._resizeItem(target, \"horizontal\", -1);\n }\n\n if (e.ctrlKey && e.keyCode == keys.RIGHT) {\n canHandle = true;\n this._resizeItem(target, \"horizontal\", 1);\n }\n\n if (e.ctrlKey && e.keyCode == keys.UP) {\n canHandle = true;\n this._resizeItem(target, \"vertical\", -1);\n }\n\n if (e.ctrlKey && e.keyCode == keys.DOWN) {\n canHandle = true;\n this._resizeItem(target, \"vertical\", 1);\n }\n\n if (e.shiftKey && e.keyCode == keys.LEFT) {\n canHandle = true;\n this._reorderItem(target, -1);\n }\n\n if (e.shiftKey && e.keyCode == keys.RIGHT) {\n canHandle = true;\n this._reorderItem(target, 1);\n }\n\n if (canHandle) {\n e.preventDefault();\n }\n },\n\n _resizeItem: function(item, dir, delta) {\n var that = this;\n var id = item.attr(\"id\");\n var newSpan;\n var maxSpan;\n\n if (!that.options.resizable) {\n return;\n }\n\n if (dir === \"horizontal\") {\n newSpan = parseInt(item.css(\"grid-column-end\").replace('span', ''), 10) + delta;\n maxSpan = that.element.css(\"grid-template-columns\").split(\" \").length;\n\n if (maxSpan >= newSpan && newSpan > 0) {\n that.itemsMap[id].colSpan = newSpan;\n item.css({\n \"grid-column-end\": kendo.format(\"span {0}\", newSpan)\n });\n that.trigger(RESIZE, {\n container: item\n });\n }\n } else {\n newSpan = parseInt(item.css(\"grid-row-end\").replace('span', ''), 10) + delta;\n maxSpan = that.element.css(\"grid-template-rows\").split(\" \").length;\n\n if (maxSpan >= newSpan && newSpan > 0) {\n that.itemsMap[id].rowSpan = newSpan;\n item.css({\n \"grid-row-end\": kendo.format(\"span {0}\", newSpan)\n });\n that.trigger(RESIZE, {\n container: item\n });\n }\n }\n },\n\n _reorderItem: function(item, newOrder) {\n if (!this.options.reorderable) {\n return;\n }\n\n var oldOrder = parseInt(item.css(\"order\"), 10);\n var maxOrder = this.element.children().length;\n newOrder = oldOrder + newOrder;\n\n if (newOrder >= 0 && newOrder < maxOrder) {\n var target = this.element.find(\"> [\" + kendo.attr(\"index\") + \"='\" + newOrder + \"']\");\n\n this.itemsMap[item.attr(\"id\")].order = newOrder;\n this.itemsMap[target.attr(\"id\")].order = oldOrder;\n\n this._updateContainers();\n this._updateDOM();\n item.trigger(\"focus\");// need to restore focus after DOM gets reordered\n\n this.trigger(REORDER, {\n newIndex: newOrder,\n oldIndex: oldOrder,\n container: item\n });\n }\n },\n\n _sortContainers: function(containers) {\n var indexAttr = kendo.attr(\"index\");\n\n return containers.sort(function(a, b) {\n a = $(a);\n b = $(b);\n\n var indexA = a.attr(indexAttr);\n var indexB = b.attr(indexAttr);\n\n if (indexA === undefined) {\n indexA = $(a).index();\n }\n if (indexB === undefined) {\n indexB = $(b).index();\n }\n\n indexA = parseInt(indexA, 10);\n indexB = parseInt(indexB, 10);\n return indexA > indexB ? 1 : (indexA < indexB ? -1 : 0);\n });\n },\n _updateDOM: function() {\n var that = this;\n var containers = that.element.children(\":visible\");\n\n containers = that._sortContainers(containers);\n\n containers.each(function() {\n $(this).appendTo(that.element);\n });\n },\n\n _resizable: function() {\n var that = this;\n var side;\n var down;\n var id;\n var fractionWidth;\n var fractionHeight;\n var currentContainer;\n var lastXLocation = 0;\n var lastYLocation = 0;\n var initialWidth = 0;\n var initialHeight = 0;\n var startColSpan = 0;\n var startRowSpan = 0;\n var itemsMaxSpace = 0;\n var rowsCount;\n\n if (that.options.resizable) {\n that.element.on(\"mousemove\" + NS, selector(TileLayout.styles.item), function(e) {\n var rightPosition;\n var downPosition;\n var container = $(this);\n var rectPosition = container[0].getBoundingClientRect();\n\n rightPosition = Math.abs(rectPosition.right - e.clientX) < 16;\n downPosition = Math.abs(rectPosition.bottom - e.clientY) < 16;\n\n if (rightPosition && downPosition) {\n that._createResizeHandle(container, true, true);\n } else if (rightPosition) {\n that._createResizeHandle(container, true, false);\n } else if (downPosition) {\n that._createResizeHandle(container, false, true);\n }\n });\n\n that.resizable = new ui.Resizable(that.element, {\n handle: \"div.k-tilelayout-item > .k-resize-handle\",\n start: function(e) {\n var resizeHandle = $(e.currentTarget);\n currentContainer = resizeHandle.data(\"div\");\n id = currentContainer.attr(\"id\");\n side = resizeHandle.attr(\"side\");\n down = resizeHandle.attr(\"down\");\n rowsCount = that.element.css(\"grid-template-rows\").split(\" \").length;\n\n if (side) {\n fractionWidth = that._calculateFractionWidth();\n itemsMaxSpace = that._calculateRightEndSide(fractionWidth);\n lastXLocation = e.x.location;\n initialWidth = currentContainer.width();\n startColSpan = parseInt(currentContainer.css(\"grid-column-end\").replace('span', ''), 10);\n }\n\n if (down) {\n fractionHeight = (that.element[0].scrollHeight - (rowsCount + 1) * that.options.gap.rows) / rowsCount;\n lastYLocation = e.y.location;\n initialHeight = currentContainer.height();\n startRowSpan = parseInt(currentContainer.css(\"grid-row-end\").replace('span', ''), 10);\n }\n\n that._isresizing = true;\n },\n resize: function(e) {\n var hintColumns = 0;\n var hintRows = 0;\n var mouseDeltaX = 0;\n var mouseDeltaY = 0;\n var overflowsLayout;\n var isBeyondMinimum;\n var deltaFromStart = 0;\n var resizeRowsCount = 0;\n var resizeColumnsCount = 0;\n var clientRect = that.element[0].getBoundingClientRect();\n var height = that.element[0].style.height ? true : false;\n\n that._positionAbsolutely(currentContainer);\n that._createResizeHint(currentContainer);\n\n if (side == \"true\") {\n mouseDeltaX = e.x.location - lastXLocation;\n overflowsLayout = (clientRect.left + itemsMaxSpace - window.scrollX - e.x.location) < that.options.gap.columns;\n isBeyondMinimum = (initialWidth + mouseDeltaX) < fractionWidth;\n\n if (!overflowsLayout && !isBeyondMinimum) {\n resizeColumnsCount = (mouseDeltaX) / (fractionWidth + that.options.gap.columns);\n deltaFromStart = mouseDeltaX - (Math.floor(resizeColumnsCount) * (fractionWidth + that.options.gap.columns));\n hintColumns = startColSpan + Math.floor(resizeColumnsCount) + ((deltaFromStart >= (fractionWidth / 2)) ? 1 : 0);\n that.itemsMap[id].colSpan = Math.max(hintColumns, MINIMALSPAN);\n } else {\n mouseDeltaX = 0;\n }\n }\n\n if (down == \"true\") {\n mouseDeltaY = e.y.location - lastYLocation;\n overflowsLayout = (clientRect.bottom + window.scrollY - e.y.location) < that.options.gap.rows;\n isBeyondMinimum = (initialHeight + mouseDeltaY) <= fractionHeight;\n\n if (!isBeyondMinimum && (!overflowsLayout || !height)) {\n resizeRowsCount = (mouseDeltaY) / (fractionHeight + that.options.gap.rows);\n deltaFromStart = mouseDeltaY - (Math.floor(resizeRowsCount) * (fractionHeight + that.options.gap.rows));\n hintRows = startRowSpan + Math.floor(resizeRowsCount) + ((deltaFromStart >= (fractionHeight / 2)) ? 1 : 0);\n that.itemsMap[id].rowSpan = Math.max(hintRows, MINIMALSPAN);\n } else {\n mouseDeltaY = 0;\n }\n }\n\n that._positionHint(hintColumns, hintRows);\n that._positionResizeHandle(currentContainer, side == \"true\", down == \"true\");\n if (mouseDeltaY) {\n currentContainer.css(\"height\", initialHeight + mouseDeltaY);\n }\n if (mouseDeltaX) {\n currentContainer.css(\"width\", initialWidth + mouseDeltaX);\n }\n },\n resizeend: function() {\n that._isresizing = false;\n that._setContainerCoordinates(currentContainer, that.itemsMap[id]);\n that._removeAbsoluteStyles(currentContainer);\n that._removeResizeHint();\n that.trigger(RESIZE, {\n container: currentContainer\n });\n }\n });\n }\n },\n\n _calculateFractionWidth: function() {\n var that = this;\n var container = that.element.children().first();\n var colSpan = that.itemsMap[container.attr(\"id\")].colSpan;\n var totalWidth = container.outerWidth();\n\n return (totalWidth - (colSpan - 1) * (that.options.gap.columns)) / colSpan;\n },\n\n _calculateRightEndSide: function(fractionWidth) {\n var that = this;\n var columns = that.options.columns;\n var columnGap = that.options.gap.columns;\n\n return columns * (fractionWidth + columnGap) + columnGap;\n },\n\n _createDropHint: function(settings) {\n this.dropHint = $(\"
\")\n .css({\n \"order\": settings.order,\n \"grid-column-end\": settings.columnEnd,\n \"grid-row-end\": settings.rowEnd\n })\n .attr(kendo.attr(\"index\"), settings.order)\n .attr(\"direction\", settings.direction);\n },\n\n _insertDropHint: function(container, direction) {\n if (direction == \"right\") {\n this.dropHint.insertAfter(container);\n } else {\n this.dropHint.insertBefore(container);\n }\n },\n\n _removeDropHint: function() {\n if (this.dropHint) {\n this.dropHint.remove();\n this.dropHint = null;\n }\n },\n\n _reorderable: function() {\n if (!this.options.reorderable) {\n return;\n }\n\n var that = this;\n var element = that.element;\n var originalElement;\n var itemSelector = selector(TileLayout.styles.item);\n var headerSelector = selector(TileLayout.styles.itemHeader);\n var group = kendo.guid();\n\n this._draggableInstance = new Draggable(this.element, {\n filter: headerSelector,\n autoScroll: true,\n ignore: \":input\",\n group: group,\n hint: function(target) {\n var item = target.closest(itemSelector);\n var width = item.width();\n var height = item.height();\n var clone = item.clone();\n clone.find(headerSelector)\n .removeClass(GRABCURSOR)\n .addClass(GRABBINGCURSOR);\n return clone.width(width).height(height);\n },\n dragstart: function(e) {\n originalElement = $(e.currentTarget).closest(itemSelector);\n },\n drag: function(e) {\n var elementUnderCursor = kendo.elementUnderCursor(e);\n var hint = e.sender.hint;\n var dropContainer;\n var containerBoundaries;\n var pixelsToLeftBorder;\n var pixelsToRightBorder;\n var direction;\n\n var draggedItem = that._draggableInstance.currentTarget.closest(itemSelector);\n var newOrder;\n\n if (containsOrEqualTo(hint[0], elementUnderCursor)) {\n hint.hide();\n\n elementUnderCursor = kendo.elementUnderCursor(e);\n\n if (!containsOrEqualTo(originalElement[0], elementUnderCursor)) {\n\n if (that.dropHint && that.dropHint[0] == elementUnderCursor[0]) {\n hint.show();\n return;\n }\n\n dropContainer = $(elementUnderCursor);\n dropContainer = dropContainer.hasClass(TileLayout.styles.item) ? dropContainer : dropContainer.closest(itemSelector);\n\n if (dropContainer.hasClass(TileLayout.styles.item)) {\n containerBoundaries = dropContainer[0].getBoundingClientRect();\n pixelsToLeftBorder = e.clientX - containerBoundaries.left;\n pixelsToRightBorder = containerBoundaries.right - e.clientX;\n direction = pixelsToLeftBorder > pixelsToRightBorder ? \"right\" : \"left\";\n newOrder = dropContainer.css(\"order\");\n\n if (that.dropHint && that.dropHint.attr(\"direction\") !== direction) {\n var clone = that.dropHint.clone();\n clone.css(\"order\", newOrder);\n that.dropHint.remove();\n that.dropHint = clone;\n\n that._insertDropHint(dropContainer, direction);\n\n that.dropHint\n .attr(\"direction\", direction)\n .attr(kendo.attr(\"index\"), newOrder);\n } else if (!that.dropHint) {\n\n var futureContainer = direction == \"right\" ? dropContainer.next() : dropContainer.prev();\n\n if (futureContainer[0] != originalElement[0]) {\n that._createDropHint({ order: newOrder, columnEnd: draggedItem.css(\"grid-column-end\"), rowEnd: draggedItem.css(\"grid-row-end\"), direction: direction });\n originalElement.hide();\n that._insertDropHint(dropContainer, direction);\n }\n }\n }\n }\n hint.show();\n }\n },\n dragend: function(e) {\n if (!that.dropHint) {\n e.sender.hint.remove();\n that._removeDropHint();\n return;\n }\n var newOrder = parseInt(that.dropHint.css(\"order\"), 10);\n var container = e.currentTarget.closest(itemSelector);\n var items = that.element.find(itemSelector);\n var oldOrder = parseInt(container.css(\"order\"), 10);\n var itemId = container.attr(\"id\");\n var containers = that.element.children(\":visible\");\n var start;\n var end;\n var item;\n var direction;\n\n containers = that._sortContainers(containers);\n\n newOrder = containers.index(that.dropHint[0]);\n end = Math.max(newOrder, oldOrder);\n start = Math.min(newOrder, oldOrder);\n\n that.itemsMap[itemId].order = newOrder;\n\n direction = newOrder > oldOrder ? \"right\" : \"left\"; //this is direction of movement\n\n if (direction == \"left\") {\n end--;\n } else {\n start++;\n }\n\n for (var i = start; i <= end; i++) {\n item = items.filter(\"[\" + kendo.attr(\"index\") + \"='\" + i + \"']\");\n that.itemsMap[item.attr(\"id\")].order += direction == \"left\" ? 1 : -1;\n }\n\n container.show();\n\n that._updateContainers();\n\n e.sender.hint.remove();\n that._removeDropHint();\n\n if (that.options.navigatable) {\n that._updateDOM();\n }\n\n that.trigger(REORDER, {\n newIndex: newOrder,\n oldIndex: oldOrder,\n container: container\n });\n }\n });\n\n element.find(itemSelector).kendoDropTarget({\n group: group,\n dragenter: function(e) {\n if (that._isresizing) {\n return;\n }\n var dropContainer = $(e.dropTarget);\n var target = that._draggableInstance.currentTarget.closest(itemSelector);\n var dropContainerBoundaries;\n var pixelsToLeftBorder;\n var pixelsToRightBorder;\n var futureContainer;\n var direction;\n\n if (originalElement[0] != dropContainer[0]) {\n\n dropContainerBoundaries = dropContainer[0].getBoundingClientRect();\n pixelsToLeftBorder = e.clientX - dropContainerBoundaries.left;\n pixelsToRightBorder = dropContainerBoundaries.right - e.clientX;\n direction = pixelsToLeftBorder > pixelsToRightBorder ? \"right\" : \"left\";\n\n futureContainer = direction == \"right\" ? dropContainer.next() : dropContainer.prev();\n\n //handle the case when the container will be shown over the original one\n if (futureContainer[0] == originalElement[0]) {\n return;\n }\n\n that._removeDropHint();\n\n originalElement.hide();\n\n that._createDropHint({ order: dropContainer.css(\"order\"), columnEnd: target.css(\"grid-column-end\"), rowEnd: target.css(\"grid-row-end\"), direction: direction });\n\n originalElement.hide();\n that._insertDropHint(dropContainer, direction);\n }\n }\n });\n }\n });\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 ui.plugin(TileLayout);\n\n $.extend(true, TileLayout, { styles: tileLayoutStyles });\n })(window.kendo.jQuery);\n\n}));\n"]}