{"version":3,"file":"kendo.tilelayout.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendotilelayout","js","this","$","kendo","window","ui","Widget","Draggable","keys","selector","selectorFromClasses","RESIZE","REORDER","NS","GRABCURSOR","TileLayout","extend","init","element","options","that","fn","call","cssNumber","gridColumnStart","gridColumnEnd","gridRowStart","gridRowEnd","addClass","styles","wrapper","attr","role","_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","_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","clickMoveClick","closest","clone","dragstart","document","cursor","drag","dropContainer","containerBoundaries","elementUnderCursor","sender","draggedItem","containsOrEqualTo","hide","hasClass","next","prev","dragend","end","itemId","min","dragcancel","kendoDropTarget","dragenter","dropContainerBoundaries","dropTarget","parent","child","contains","plugin","jQuery"],"sources":["kendo.tilelayout.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.draganddrop.js'), require('kendo.resizable.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.draganddrop', 'kendo.resizable'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendotilelayout = global.kendotilelayout || {}, global.kendotilelayout.js = factory()));\n})(this, (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-move\",\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-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)\n .addClass(TileLayout.styles.wrapper)\n .attr({\n role: \"list\"\n });\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({\n id: id,\n role: \"listitem\",\n \"aria-keyshortcuts\": \"Enter\"\n });\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({\n id: id,\n role: \"listitem\",\n \"aria-keyshortcuts\": \"Enter\"\n });\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 + \",.k-layout-item-hint-reorder\",\n autoScroll: true,\n ignore: \":input\",\n group: group,\n clickMoveClick: this.options.reorderable.clickMoveClick === false ? false : true,\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 document.body.style.cursor = \"move\";\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 document.body.style.cursor = \"auto\";\n\n if (!that.dropHint) {\n e.sender.hint.remove();\n that._removeDropHint();\n return;\n }\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 dragcancel: function() {\n document.body.style.cursor = \"auto\";\n\n that._removeDropHint();\n\n if (originalElement) {\n originalElement.show();\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 var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}