{"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","abs","Math","ARIASELECTED","SELECTED","ACTIVE","SELECTABLE","CHANGE","UNSELECT","UNSELECTING","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","replaceAll","INPUTSELECTOR_SVG_PARTS","split","map","selector","join","INPUTSELECTOR","msie","support","browser","supportEventDelegation","extend","on","find","trigger","end","off","Selectable","init","element","options","multiple","dragToSelect","that","fn","call","_marquee","_lastActive","addClass","relatedTarget","userEvents","UserEvents","allowSelection","filter","tap","_tap","bind","touchAction","_start","_move","_end","_select","events","name","inputSelectors","noop","ignoreOverlapped","addIdToRanges","_isElement","target","idx","elements","length","result","e","selected","ctrlKey","event","metaKey","shiftKey","selectedClass","whichCode","which","buttonCode","button","closest","_allowSelection","hasClass","add","_lastRange","compareElements","selectRange","_firstSelectee","_notify","_unselect","value","clear","_downTarget","currentElement","useAllItems","_items","sender","capture","appendTo","document","body","css","left","x","client","top","y","width","height","_selectElement","cancel","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","resetTouchEvents","start","tmp","continuousItems","inArray","destroy","toCompare","elementPosition","getOffset","_outerWidth","_outerHeight","firstRect","secondRect","parseOptions","selectable","selectableMode","mode","asLowerString","toLowerCase","indexOf","cell","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 var __meta__ = {\n id: \"selectable\",\n name: \"Selectable\",\n category: \"framework\",\n depends: [ \"core\", \"userevents\" ],\n advanced: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n abs = Math.abs,\n ARIASELECTED = \"aria-selected\",\n SELECTED = \"k-selected\",\n ACTIVE = \"k-selecting\",\n SELECTABLE = \"k-selectable\",\n CHANGE = \"change\",\n NS = \".kendoSelectable\",\n UNSELECT = \"unselect\",\n UNSELECTING = \"k-unselecting\",\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(function (selector) { return 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 var Selectable = Widget.extend({\n init: function(element, options) {\n var that = this,\n multiple,\n dragToSelect;\n\n Widget.fn.init.call(that, element, options);\n\n that._marquee = $(\"
\");\n that._lastActive = null;\n that.element.addClass(SELECTABLE);\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 ? \".\" + SELECTABLE + \" \" : \"\") + 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(\"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, UNSELECT],\n\n options: {\n name: \"Selectable\",\n filter: \">*\",\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n dragToSelect: true,\n relatedTarget: $.noop,\n ignoreOverlapped: false,\n addIdToRanges: false\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 var target = $(e.target),\n that = this,\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(\".\" + SELECTABLE)) || whichCode && whichCode == 3 || buttonCode && buttonCode == 2) {\n return;\n }\n\n if (!this._allowSelection(e.event.target)) {\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) {\n that._unselect(target);\n that._notify(CHANGE, e);\n } else if (ctrlKey) {\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 _start: function(e) {\n var 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 (!this._allowSelection(e.event.target)) {\n return;\n }\n\n that._downTarget = target;\n\n //in case of hierarchy\n if (!that._isElement(target.closest(\".\" + SELECTABLE))) {\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 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 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 e.preventDefault();\n }\n }\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 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 };\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\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}