{"version":3,"file":"kendo.selectable.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendoselectable","js","this","$","undefined$1","kendo","window","Widget","ui","support","abs","Math","ARIASELECTED","SELECTED","ACTIVE","CHANGE","CHANGING","UNSELECT","UNSELECTING","HOVER","MID","SPLITEND","SPLITSTART","RANGESTART","RANGEEND","START","END","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","replaceAll","INPUTSELECTOR_SVG_PARTS","split","map","selector","join","INPUTSELECTOR","msie","browser","supportEventDelegation","extend","on","find","trigger","end","off","Selectable","init","element","options","multiple","dragToSelect","selectableClass","that","fn","call","_marquee","_lastActive","addClass","relatedTarget","userEvents","UserEvents","allowSelection","filter","tap","_tap","bind","touchAction","_hold","_start","_move","_end","_select","events","name","inputSelectors","holdToDrag","noop","ignoreOverlapped","addIdToRanges","toggleable","_isElement","target","idx","elements","length","result","e","selected","ctrlKey","event","metaKey","shiftKey","selectedClass","whichCode","which","buttonCode","button","closest","_allowSelection","originalEvent","hasClass","add","_lastRange","compareElements","selectRange","_firstSelectee","_notify","_unselect","value","clear","_downTarget","_activated","_isActivated","currentElement","cancel","useAllItems","_items","sender","capture","appendTo","document","body","css","left","x","client","top","y","width","height","_selectElement","position","startLocation","location","initialDelta","_invalidateSelectables","preventDefault","rangeSelectedAttr","attr","uid","guid","remove","removeClass","i","_currentlyActive","related","toSelect","items","eq","collision","_collidesWithActiveElement","push","marqueeRect","activeElementRect","activeElements","elemRect","getBoundingClientRect","leftRight","isRtl","tempRect","right","bottom","overlaps","val","selectElement","each","selectedRanges","_","elem","rangeId","mapLocation","selectedSingleItems","toArray","preventNotify","isPrevented","aria","args","removeAttr","_activeElement","is","_allowPreventDefault","allowPaste","resetTouchEvents","start","tmp","continuousItems","inArray","destroy","RangeSelectable","ns","cellSelectorValid","widget","touch","_mouseEnter","TOUCHEND","_mouseLeave","resetOnStart","cellSelector","reverse","range","cell","currentTarget","preventFlagUpdate","mid","tables","lastCell","last","firstCell","first","clearVariables","clearStartEnd","selectFrom","startIdx","index","selectTo","endIdx","invert","_useStart","_useEnd","change","_clearFlags","currentDate","calendar","toDateObject","toCompare","elementPosition","getOffset","_outerWidth","_outerHeight","firstRect","secondRect","parseOptions","selectable","selectableMode","mode","asLowerString","toLowerCase","indexOf","single","plugin","jQuery"],"sources":["kendo.selectable.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.userevents.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.userevents'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendoselectable = global.kendoselectable || {}, global.kendoselectable.js = factory()));\n})(this, (function () {\n let __meta__ = {\n id: \"selectable\",\n name: \"Selectable\",\n category: \"framework\",\n depends: [ \"core\", \"userevents\" ],\n advanced: true\n };\n\n (function($, undefined$1) {\n let kendo = window.kendo,\n Widget = kendo.ui.Widget,\n support = kendo.support,\n abs = Math.abs,\n ARIASELECTED = \"aria-selected\",\n SELECTED = \"k-selected\",\n ACTIVE = \"k-selecting\",\n SELECTABLE = \"k-selectable\",\n CHANGE = \"change\",\n CHANGING = \"changing\",\n NS = \".kendoSelectable\",\n UNSELECT = \"unselect\",\n UNSELECTING = \"k-unselecting\",\n HOVER = \"k-hover\",\n MID = \"k-range-mid\",\n SPLITEND = \"k-range-split-end\",\n SPLITSTART = \"k-range-split-start\",\n RANGESTART = \"k-range-start\",\n RANGEEND = \"k-range-end\",\n START = \"start\",\n END = \"end\",\n NONE = \"none\",\n MOUSEENTER = \"mouseenter\",\n MOUSELEAVE = \"mouseleave\",\n TOUCHSTART = \"touchstart\",\n TOUCHMOVE = \"touchmove\",\n TOUCHEND = \"touchend\",\n INPUTSELECTOR_ICONSSELECTOR_FONT = \"span.k-icon.k-i-caret-alt-down,span.k-icon.k-i-caret-alt-up,.k-icon.k-i-caret-alt-down,.k-icon.k-i-caret-alt-right,.k-icon.k-i-caret-alt-left\",\n INPUTSELECTOR_ICONSSELECTOR_SVG = INPUTSELECTOR_ICONSSELECTOR_FONT.replaceAll('k-i', 'k-svg-i'),\n INPUTSELECTOR_SVG_PARTS = INPUTSELECTOR_ICONSSELECTOR_SVG.split(\",\").map((selector) => selector + \" *\").join(\",\"),\n INPUTSELECTOR = `input,a,textarea,.k-multiselect-wrap,select,button,${INPUTSELECTOR_ICONSSELECTOR_FONT},${INPUTSELECTOR_ICONSSELECTOR_SVG},${INPUTSELECTOR_SVG_PARTS},.k-button>span,.k-button>span *,.k-button>img,label.k-checkbox-label.k-no-text,span.k-numeric-wrap,.k-focusable`,\n msie = kendo.support.browser.msie,\n supportEventDelegation = false,\n extend = $.extend;\n\n (function($) {\n (function() {\n $('
')\n .on(\"click\", \">*\", function() {\n supportEventDelegation = true;\n })\n .find(\"span\")\n .trigger(\"click\")\n .end()\n .off();\n })();\n })($);\n\n const Selectable = Widget.extend({\n init: function(element, options) {\n let that = this,\n multiple,\n dragToSelect,\n selectableClass;\n\n Widget.fn.init.call(that, element, options);\n\n selectableClass = that.selectableClass = that.options.selectableClass || SELECTABLE;\n\n that._marquee = $(\"
\");\n that._lastActive = null;\n that.element.addClass(selectableClass);\n\n that.relatedTarget = that.options.relatedTarget;\n\n multiple = that.options.multiple;\n dragToSelect = that.options.dragToSelect;\n\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: (!supportEventDelegation ? \".\" + selectableClass + \" \" : \"\") + that.options.filter,\n tap: that._tap.bind(that),\n touchAction: multiple ? \"none\" : \"pan-x pan-y\"\n });\n\n if (multiple) {\n if (dragToSelect) {\n that.userEvents\n .bind(\"hold\", that._hold.bind(that))\n .bind(\"start\", that._start.bind(that))\n .bind(\"move\", that._move.bind(that))\n .bind(\"end\", that._end.bind(that));\n }\n that.userEvents\n .bind(\"select\", that._select.bind(that));\n }\n },\n\n events: [CHANGE, CHANGING, UNSELECT],\n\n options: {\n name: \"Selectable\",\n filter: \">*\",\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n holdToDrag: false,\n dragToSelect: true,\n relatedTarget: $.noop,\n ignoreOverlapped: false,\n addIdToRanges: false,\n toggleable: false,\n selectableClass: \"\"\n },\n\n _isElement: function(target) {\n var elements = this.element;\n var idx, length = elements.length, result = false;\n\n target = target[0];\n\n for (idx = 0; idx < length; idx ++) {\n if (elements[idx] === target) {\n result = true;\n break;\n }\n }\n\n return result;\n },\n\n _tap: function(e) {\n let target = $(e.target),\n that = this,\n options = that.options,\n ctrlKey = e.event.ctrlKey || e.event.metaKey,\n multiple = that.options.multiple,\n shiftKey = multiple && e.event.shiftKey,\n selectedClass = that.options.selectedClass || SELECTED,\n selected,\n whichCode = e.event.which,\n buttonCode = e.event.button;\n\n //in case of hierarchy or right-click\n if (!that._isElement(target.closest(\".\" + that.selectableClass)) || whichCode && whichCode == 3 || buttonCode && buttonCode == 2) {\n return;\n }\n\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n\n if (that.trigger(CHANGING, { target: target, originalEvent: e.event })) {\n return;\n }\n\n selected = target.hasClass(selectedClass);\n\n target = target.add(that.relatedTarget(target));\n\n if (!multiple) {\n if (selected && ctrlKey) {\n that._unselect(target);\n that._notify(CHANGE, e);\n } else if (!selected) {\n that.clear();\n that.value(target, e);\n that._notify(CHANGE, e);\n }\n } else {\n if (shiftKey) {\n if (!that._lastRange || !compareElements(that._lastRange, target)) {\n that.selectRange(that._firstSelectee(), target, e);\n that._notify(CHANGE, e);\n }\n that._lastRange = target;\n } else {\n that._lastRange = null;\n if (selected && (ctrlKey || options.toggleable)) {\n that._unselect(target);\n that._notify(CHANGE, e);\n } else if (ctrlKey || options.toggleable) {\n that.value(target, e);\n that._notify(CHANGE, e);\n } else if (!selected || that.value().length > 1) {\n that.clear();\n that.value(target, e);\n that._notify(CHANGE, e);\n }\n\n that._lastActive = that._downTarget = target;\n }\n }\n },\n\n _hold: function(e) {\n if (this.options.holdToDrag) {\n // serves as a drag hint to indicate start of selection\n this._tap(e);\n }\n\n this._activated = true;\n },\n\n _isActivated: function() {\n return this.options.holdToDrag ? this._activated : true;\n },\n\n _start: function(e) {\n let that = this,\n target = $(e.target),\n selectedClass = that.options.selectedClass || SELECTED,\n selected = target.hasClass(selectedClass),\n currentElement,\n ctrlKey = e.event.ctrlKey || e.event.metaKey;\n\n if (!that._isActivated() || !this._allowSelection(e.event.target)) {\n return;\n }\n\n if (that.trigger(CHANGING, { target: target, originalEvent: e.event })) {\n that.userEvents.cancel();\n return;\n }\n\n that._downTarget = target;\n\n //in case of hierarchy\n if (!that._isElement(target.closest(\".\" + that.selectableClass))) {\n that.userEvents.cancel();\n return;\n }\n\n if (that.options.useAllItems) {\n that._items = that.element.find(that.options.filter);\n } else {\n currentElement = target.closest(that.element);\n that._items = currentElement.find(that.options.filter);\n }\n\n e.sender.capture();\n\n that._marquee\n .appendTo(document.body)\n .css({\n left: e.x.client + 1,\n top: e.y.client + 1,\n width: 0,\n height: 0\n });\n\n if (!ctrlKey) {\n that.clear();\n }\n\n target = target.add(that.relatedTarget(target));\n if (selected) {\n that._selectElement(target, true);\n if (ctrlKey) {\n target.addClass(UNSELECTING);\n }\n }\n },\n\n _move: function(e) {\n var that = this,\n position = {\n left: e.x.startLocation > e.x.location ? e.x.location : e.x.startLocation,\n top: e.y.startLocation > e.y.location ? e.y.location : e.y.startLocation,\n width: abs(e.x.initialDelta),\n height: abs(e.y.initialDelta)\n };\n\n if (!that._isActivated()) {\n return;\n }\n\n that._marquee.css(position);\n\n that._invalidateSelectables(position, (e.event.ctrlKey || e.event.metaKey));\n\n e.preventDefault();\n },\n\n _end: function(e) {\n var that = this,\n rangeSelectedAttr = kendo.attr(\"range-selected\"),\n uid = kendo.guid();\n\n if (!that._isActivated()) {\n return;\n }\n\n that._activated = false;\n\n that._marquee.remove();\n\n that._unselect(that.element\n .find(that.options.filter + \".\" + UNSELECTING))\n .removeClass(UNSELECTING);\n\n\n var target = that.element.find(that.options.filter + \".\" + ACTIVE);\n target = target.add(that.relatedTarget(target));\n\n if (that.options.addIdToRanges) {\n for (var i = 0; i < that._currentlyActive.length; i++) {\n $(that._currentlyActive[i]).attr(rangeSelectedAttr, uid);\n }\n }\n\n if (!that._lastRange || !compareElements(that._lastRange, target)) {\n that.value(target, e);\n that._notify(CHANGE, e);\n }\n that._lastRange = target;\n that._lastActive = that._downTarget;\n that._items = null;\n },\n\n _invalidateSelectables: function(position, ctrlKey) {\n var idx,\n length,\n target = this._downTarget[0],\n items = this._items,\n selectedClass = this.options.selectedClass || SELECTED,\n related,\n toSelect;\n\n this._currentlyActive = [];\n\n for (idx = 0, length = items.length; idx < length; idx ++) {\n toSelect = items.eq(idx);\n related = toSelect.add(this.relatedTarget(toSelect));\n\n if (collision(toSelect, position)) {\n if (toSelect.hasClass(selectedClass)) {\n if (ctrlKey && target !== toSelect[0]) {\n related.removeClass(selectedClass).addClass(UNSELECTING);\n }\n } else if (!toSelect.hasClass(ACTIVE) && !toSelect.hasClass(UNSELECTING) && !this._collidesWithActiveElement(related, position)) {\n related.addClass(ACTIVE);\n }\n this._currentlyActive.push(related[0]);\n } else {\n if (toSelect.hasClass(ACTIVE)) {\n related.removeClass(ACTIVE);\n } else if (ctrlKey && toSelect.hasClass(UNSELECTING)) {\n related.removeClass(UNSELECTING).addClass(selectedClass);\n }\n }\n }\n },\n\n _collidesWithActiveElement: function(element, marqueeRect) {\n if (!this.options.ignoreOverlapped) {\n return false;\n }\n\n var activeElements = this._currentlyActive;\n var elemRect = element[0].getBoundingClientRect();\n var activeElementRect;\n var collision = false;\n var isRtl = kendo.support.isRtl(element);\n var leftRight = isRtl ? \"right\" : \"left\";\n var tempRect = {};\n\n marqueeRect.right = marqueeRect.left + marqueeRect.width;\n marqueeRect.bottom = marqueeRect.top + marqueeRect.height;\n\n for (var i = 0; i < activeElements.length; i++) {\n activeElementRect = activeElements[i].getBoundingClientRect();\n if (overlaps(elemRect, activeElementRect)) {\n tempRect[leftRight] = leftRight === \"left\" ? activeElementRect.right : activeElementRect.left;\n elemRect = extend({}, elemRect, tempRect);\n if (elemRect.left > elemRect.right) {\n return true;\n }\n collision = !overlaps(elemRect, marqueeRect);\n }\n }\n return collision;\n },\n\n value: function(val) {\n var that = this,\n selectElement = that._selectElement.bind(that);\n\n if (val) {\n val.each(function() {\n selectElement(this);\n });\n\n return;\n }\n\n return that.element.find(that.options.filter + \".\" + (that.options.selectedClass || SELECTED));\n },\n\n selectedRanges: function() {\n var that = this;\n var rangeSelectedAttr = kendo.attr(\"range-selected\");\n var map = {};\n\n that.element.find(\"[\" + rangeSelectedAttr + \"]\").each(function(_, elem) {\n var rangeId = $(elem).attr(rangeSelectedAttr);\n var mapLocation = map[rangeId];\n\n if (!mapLocation) {\n mapLocation = map[rangeId] = [];\n }\n\n mapLocation.push($(elem));\n });\n\n return map;\n },\n\n selectedSingleItems: function() {\n var that = this;\n var rangeSelectedAttr = kendo.attr(\"range-selected\");\n\n return that.element.find(that.options.filter + \".\" + (that.options.selectedClass || SELECTED) + \":not([\" + rangeSelectedAttr + \"])\").toArray().map(function(elem) {\n return $(elem);\n });\n },\n\n _firstSelectee: function() {\n var that = this,\n selected;\n\n if (that._lastActive !== null) {\n return that._lastActive;\n }\n\n selected = that.value();\n return selected.length > 0 ?\n selected[0] :\n that.element.find(that.options.filter)[0];\n },\n\n _selectElement: function(element, preventNotify) {\n var toSelect = $(element),\n selectedClass = this.options.selectedClass || SELECTED,\n isPrevented = !preventNotify && this._notify(\"select\", { element: element });\n\n toSelect.removeClass(ACTIVE);\n if (!isPrevented) {\n toSelect.addClass(selectedClass);\n\n if (this.options.aria) {\n toSelect.attr(ARIASELECTED, true);\n }\n }\n },\n\n _notify: function(name, args) {\n args = args || { };\n return this.trigger(name, args);\n },\n\n _unselect: function(element) {\n if (this.trigger(UNSELECT, { element: element })) {\n return;\n }\n\n var rangeSelectedAttr = kendo.attr(\"range-selected\");\n\n element.removeClass(this.options.selectedClass || SELECTED).removeAttr(rangeSelectedAttr);\n\n if (this.options.aria) {\n element.attr(ARIASELECTED, false);\n }\n\n return element;\n },\n\n _select: function(e) {\n if (this._allowSelection(e.event.target)) {\n if (!msie || (msie && !$(kendo._activeElement()).is(this.options.inputSelectors))) {\n if (this._allowPreventDefault(e.event.target)) {\n e.preventDefault();\n }\n }\n }\n },\n\n _allowPreventDefault: function(target) {\n var disallowedSelectors = \".k-table-td\";\n // Required for the paste event in the Grid to work in Chrome.\n return !$(target).is(disallowedSelectors) || !this.options.allowPaste;\n },\n\n _allowSelection: function(target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n this._downTarget = null;\n return false;\n }\n\n return true;\n },\n\n resetTouchEvents: function() {\n this.userEvents.cancel();\n },\n\n clear: function() {\n var items = this.element.find(this.options.filter + \".\" + (this.options.selectedClass || SELECTED));\n this._unselect(items);\n },\n\n selectRange: function(start, end) {\n var that = this,\n idx,\n tmp,\n items;\n\n that.clear();\n\n if (that.element.length > 1) {\n items = that.options.continuousItems();\n }\n\n if (!items || !items.length) {\n items = that.element.find(that.options.filter);\n }\n\n start = $.inArray($(start)[0], items);\n end = $.inArray($(end)[0], items);\n\n if (start > end) {\n tmp = start;\n start = end;\n end = tmp;\n }\n\n if (!that.options.useAllItems) {\n end += that.element.length - 1;\n }\n\n for (idx = start; idx <= end; idx ++ ) {\n that._selectElement(items[idx], true);\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.element.off(NS);\n\n that.userEvents.destroy();\n\n that._marquee = that._lastActive = that.element = that.userEvents = null;\n }\n });\n\n const RangeSelectable = Widget.extend({\n init: function(element, options) {\n let that = this,\n ns,\n cellSelectorValid;\n\n Widget.fn.init.call(that, element, options);\n\n that.widget = options.widget;\n ns = options.ns;\n cellSelectorValid = options.filter;\n\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n tap: that._tap.bind(that),\n touchAction: NONE\n });\n\n if (support.touch) {\n element.on(TOUCHSTART + ns, cellSelectorValid, that._mouseEnter.bind(that))\n .on(TOUCHEND + ns + \" \" + TOUCHMOVE + ns, cellSelectorValid, that._mouseLeave.bind(that));\n } else {\n element.on(MOUSEENTER + ns, cellSelectorValid, that._mouseEnter.bind(that))\n .on(MOUSELEAVE + ns, cellSelectorValid, that._mouseLeave.bind(that));\n }\n },\n\n events: [CHANGE],\n\n options: {\n name: \"RangeSelectable\",\n filter: \">*\",\n inputSelectors: INPUTSELECTOR,\n resetOnStart: false,\n multiple: false,\n dragToSelect: true,\n cellSelector: \"*\",\n ns: \"\",\n reverse: false,\n relatedTarget: $.noop\n },\n\n destroy: function() {\n let that = this;\n\n Widget.fn.destroy.call(that);\n\n that.userEvents.destroy();\n that.widget = null;\n\n that._lastActive = that.element = that.userEvents = that._start = that._end = null;\n },\n\n _allowSelection: function(target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n return false;\n }\n\n return true;\n },\n\n _mouseEnter: function(e) {\n let that = this,\n cell = $(e.currentTarget),\n range;\n\n cell.addClass(HOVER);\n\n range = that.widget.selectRange();\n\n if (that.options.resetOnStart && range.end) {\n return;\n }\n\n if (range.target === START && that._end) {\n that.range(cell, that._end, true, that.options.reverse);\n }\n\n if (range.target === END) {\n that.range(that._start, cell, true, that.options.reverse);\n }\n },\n\n _mouseLeave: function(e) {\n $(e.currentTarget).removeClass(HOVER);\n },\n\n start: function(element, preventFlagUpdate) {\n if (element === undefined$1 || element === null) {\n return this._start;\n }\n\n element.addClass(SELECTED + \" \" + RANGESTART).attr(ARIASELECTED, true);\n\n if (!preventFlagUpdate) {\n this._start = element;\n }\n },\n\n end: function(element, preventFlagUpdate) {\n if (element === undefined$1 || element === null) {\n return this._start;\n }\n\n element.addClass(SELECTED + \" \" + RANGEEND).attr(ARIASELECTED, true);\n\n if (!preventFlagUpdate) {\n this._end = element;\n }\n },\n\n mid: function(elements) {\n let tables = this.element.find(\"table\"),\n options = this.options;\n\n elements.addClass(MID).attr(ARIASELECTED, true);\n tables.each(function() {\n let that = $(this);\n let lastCell = that.find(options.cellSelectorValid).last();\n let firstCell = that.find(options.cellSelectorValid).first();\n\n if (lastCell.hasClass(MID)) {\n lastCell.addClass(SPLITEND);\n }\n\n if (firstCell.hasClass(MID)) {\n firstCell.addClass(SPLITSTART);\n }\n });\n },\n\n clear: function(clearVariables) {\n let options = this.options;\n this.element.find(options.cellSelector)\n .removeClass(MID + \" \" + SPLITEND + \" \" + SPLITSTART);\n\n this.clearStartEnd();\n\n if (clearVariables) {\n this._start = this._end = null;\n }\n },\n\n clearStartEnd: function() {\n let that = this, options = that.options;\n that.element.find(options.cellSelector).removeClass(RANGESTART + \" \" + SELECTED + \" \" + RANGEEND).removeAttr(ARIASELECTED);\n },\n\n selectFrom: function(start) {\n let that = this,\n options = this.options,\n items,\n startIdx;\n\n items = that.element.find(options.cellSelector);\n\n startIdx = $.inArray($(start)[0], items);\n\n that.clear();\n that.start(start);\n\n items = items.filter(function(index) {\n return index > startIdx;\n });\n that.mid(items);\n },\n\n selectTo: function(end) {\n let that = this,\n options = this.options,\n items,\n endIdx;\n\n items = that.element.find(options.cellSelector);\n\n endIdx = $.inArray($(end)[0], items);\n\n that.clear();\n\n items = items.filter(function(index) {\n return index < endIdx;\n });\n that.mid(items);\n that.end($(end));\n },\n\n range: function(start, end, preventFlagUpdate, invert) {\n let that = this,\n options = this.options,\n items,\n startIdx,\n endIdx;\n\n if (start === undefined$1) {\n return { start: that._start, end: that._end };\n }\n\n items = that.element.find(options.cellSelector);\n\n startIdx = $.inArray($(start)[0], items);\n endIdx = $.inArray($(end)[0], items);\n\n if (!start || (start && !start.length)) {\n that._useStart = true;\n }\n\n that.clear();\n\n if (start) {\n that.start($(start), preventFlagUpdate);\n }\n\n items = items.filter(function(index) {\n if (endIdx < 0 || (!start && startIdx < 0)) {\n return;\n }\n\n return (index > startIdx && index < endIdx) || options.reverse && (index < startIdx && index > endIdx);\n });\n\n that.mid(items);\n\n if (end) {\n that.end($(end), preventFlagUpdate);\n } else {\n that._useEnd = true;\n }\n\n if (startIdx > endIdx && invert) {\n that.clearStartEnd();\n that.start($(end), true);\n that.end($(start), true);\n }\n },\n\n change: function() {\n this.trigger(CHANGE);\n },\n\n _clearFlags: function() {\n this._useStart = this._useEnd = false;\n },\n\n _tap: function(e) {\n let target = $(e.target),\n that = this,\n range = that.widget.selectRange() || {},\n start = range.start,\n end = range.end,\n currentDate = kendo.calendar.toDateObject($(target).find(\"span\")),\n options = that.options,\n resetOnStart = options.resetOnStart;\n\n that._lastActive = target;\n\n if (!start && !end) {\n that.clear(true);\n if (range.target === START) {\n that.start(target);\n }\n\n if (range.target === END) {\n that.end(target);\n }\n\n that._clearFlags();\n that.trigger(CHANGE);\n return;\n }\n\n if (!start && end) {\n if (range.target === END) {\n that.end(target);\n } else {\n if (+currentDate > +range.end && !options.reverse) {\n that.clear(true);\n that.start(target);\n } else {\n that.range(target, that._end, false, true);\n }\n }\n that.trigger(CHANGE);\n that._clearFlags();\n return;\n }\n\n if (start && !end) {\n if (range.target === END && !options.reverse && +start > +currentDate) {\n that.clear(true);\n\n if (resetOnStart) {\n that.start(target);\n } else {\n that.end(target);\n }\n } else if (range.target === START) {\n that.start(target);\n } else {\n that.range(that._start, target, false, true);\n }\n that.trigger(CHANGE);\n that._clearFlags();\n return;\n }\n\n if (start && end) {\n if (!options.reverse) {\n if (+start > +currentDate && range.target === END) {\n that.clear(true);\n if (resetOnStart) {\n that.start(target);\n that.end(null);\n range.target = START;\n } else {\n that.start(null);\n that.end(target);\n }\n that.trigger(CHANGE);\n return;\n }\n\n if (+start < +currentDate && range.target === START) {\n if (+currentDate > +range.end) {\n that.clear(true);\n that.start(target);\n that.end(null);\n } else {\n that.range(target, that._end);\n }\n that.trigger(CHANGE);\n return;\n }\n\n if (range.target === START) {\n that.range(target, that._end);\n }\n\n if (range.target === END) {\n that.range(that._start, target);\n }\n\n that.trigger(CHANGE);\n return;\n }\n\n if (resetOnStart) {\n if (range.target === START) {\n that.range(target, that._end, false, true);\n } else {\n that.range(that._start, target, false, true);\n }\n } else {\n if (range.target === START) {\n that.start(target);\n } else {\n that.end(target);\n }\n }\n\n that.trigger(CHANGE);\n }\n }\n });\n\n Selectable.parseOptions = function(selectable) {\n var selectableMode = selectable.mode || selectable;\n var asLowerString = typeof selectableMode === \"string\" && selectableMode.toLowerCase();\n return {\n multiple: asLowerString && asLowerString.indexOf(\"multiple\") > -1,\n cell: asLowerString && asLowerString.indexOf(\"cell\") > -1,\n range: asLowerString && asLowerString.indexOf(\"range\") > -1,\n single: asLowerString && asLowerString.indexOf(\"single\") > -1\n };\n };\n\n function compareElements(element, toCompare) {\n\n if (element.length !== toCompare.length) {\n return false;\n }\n\n for (var i = 0; i < element.length; i++) {\n if (element[i] !== toCompare[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function collision(element, position) {\n if (!element.is(\":visible\")) {\n return false;\n }\n\n var elementPosition = kendo.getOffset(element),\n right = position.left + position.width,\n bottom = position.top + position.height;\n\n elementPosition.right = elementPosition.left + kendo._outerWidth(element);\n elementPosition.bottom = elementPosition.top + kendo._outerHeight(element);\n\n return !(elementPosition.left > right ||\n elementPosition.right < position.left ||\n elementPosition.top > bottom ||\n elementPosition.bottom < position.top);\n }\n\n function overlaps(firstRect, secondRect) {\n return !(firstRect.right <= secondRect.left ||\n firstRect.left >= secondRect.right ||\n firstRect.bottom <= secondRect.top ||\n firstRect.top >= secondRect.bottom);\n }\n\n kendo.ui.plugin(Selectable);\n kendo.ui.plugin(RangeSelectable);\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}