{"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","CHANGING","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","_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","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 CHANGING = \"changing\",\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(\"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 },\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 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(\".\" + SELECTABLE)) || 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 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 (!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(\".\" + 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 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);\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"]}