{"version":3,"sources":["kendo.selectable.js"],"names":["f","define","$","undefined","collision","element","position","is","elementPosition","kendo","getOffset","right","left","width","bottom","top","height","_outerWidth","_outerHeight","overlaps","firstRect","secondRect","Selectable","window","Widget","ui","proxy","abs","Math","ARIASELECTED","SELECTED","ACTIVE","SELECTABLE","CHANGE","NS","UNSELECT","UNSELECTING","INPUTSELECTOR","msie","support","browser","supportEventDelegation","extend","on","find","trigger","end","off","init","options","multiple","that","this","fn","call","_marquee","_lastActive","addClass","relatedTarget","aria","attr","userEvents","UserEvents","global","allowSelection","filter","tap","_tap","touchAction","bind","_start","_move","_end","_select","events","name","inputSelectors","noop","ignoreOverlapped","_isElement","target","idx","elements","length","result","e","selected","ctrlKey","event","metaKey","shiftKey","whichCode","which","buttonCode","button","closest","_allowSelection","hasClass","clear","add","selectRange","_firstSelectee","_unselect","_notify","value","_downTarget","currentElement","cancel","useAllItems","_items","sender","capture","appendTo","document","body","css","x","client","y","_selectElement","startLocation","location","initialDelta","_invalidateSelectables","preventDefault","remove","removeClass","related","toSelect","items","_currentlyActive","eq","_collidesWithActiveElement","push","marqueeRect","activeElements","elemRect","activeElementRect","isRtl","leftRight","tempRect","i","getBoundingClientRect","val","selectElement","each","preventNotify","isPrevented","args","_activeElement","resetTouchEvents","start","tmp","continuousItems","inArray","destroy","parseOptions","selectable","selectableMode","mode","asLowerString","toLowerCase","indexOf","cell","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.selectable.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.selectable', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'selectable',\n name: 'Selectable',\n category: 'framework',\n depends: [\n 'core',\n 'userevents'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, abs = Math.abs, ARIASELECTED = 'aria-selected', SELECTED = 'k-state-selected', ACTIVE = 'k-state-selecting', SELECTABLE = 'k-selectable', CHANGE = 'change', NS = '.kendoSelectable', UNSELECT = 'unselect', UNSELECTING = 'k-state-unselecting', INPUTSELECTOR = 'input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-arrow-60-down,span.k-icon.k-i-arrow-60-up,label.k-checkbox-label.k-no-text,.k-icon.k-i-collapse,.k-icon.k-i-expand,span.k-numeric-wrap,.k-focusable', msie = kendo.support.browser.msie, supportEventDelegation = false, extend = $.extend;\n (function ($) {\n (function () {\n $('
').on('click', '>*', function () {\n supportEventDelegation = true;\n }).find('span').trigger('click').end().off();\n }());\n }($));\n var Selectable = Widget.extend({\n init: function (element, options) {\n var that = this, multiple;\n Widget.fn.init.call(that, element, options);\n that._marquee = $('
');\n that._lastActive = null;\n that.element.addClass(SELECTABLE);\n that.relatedTarget = that.options.relatedTarget;\n multiple = that.options.multiple;\n if (this.options.aria && multiple) {\n that.element.attr('aria-multiselectable', true);\n }\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: (!supportEventDelegation ? '.' + SELECTABLE + ' ' : '') + that.options.filter,\n tap: proxy(that._tap, that),\n touchAction: multiple ? 'none' : 'pan-x pan-y'\n });\n if (multiple) {\n that.userEvents.bind('start', proxy(that._start, that)).bind('move', proxy(that._move, that)).bind('end', proxy(that._end, that)).bind('select', proxy(that._select, that));\n }\n },\n events: [\n CHANGE,\n UNSELECT\n ],\n options: {\n name: 'Selectable',\n filter: '>*',\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n relatedTarget: $.noop,\n ignoreOverlapped: false\n },\n _isElement: function (target) {\n var elements = this.element;\n var idx, length = elements.length, result = false;\n target = target[0];\n for (idx = 0; idx < length; idx++) {\n if (elements[idx] === target) {\n result = true;\n break;\n }\n }\n return result;\n },\n _tap: function (e) {\n var target = $(e.target), that = this, ctrlKey = e.event.ctrlKey || e.event.metaKey, multiple = that.options.multiple, shiftKey = multiple && e.event.shiftKey, selected, whichCode = e.event.which, buttonCode = e.event.button;\n if (!that._isElement(target.closest('.' + SELECTABLE)) || whichCode && whichCode == 3 || buttonCode && buttonCode == 2) {\n return;\n }\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n selected = target.hasClass(SELECTED);\n if (!multiple || !ctrlKey) {\n that.clear();\n }\n target = target.add(that.relatedTarget(target));\n if (shiftKey) {\n that.selectRange(that._firstSelectee(), target, e);\n } else {\n if (selected && ctrlKey) {\n that._unselect(target);\n that._notify(CHANGE, e);\n } else {\n that.value(target, e);\n }\n that._lastActive = that._downTarget = target;\n }\n },\n _start: function (e) {\n var that = this, target = $(e.target), selected = target.hasClass(SELECTED), currentElement, ctrlKey = e.event.ctrlKey || e.event.metaKey;\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n that._downTarget = target;\n if (!that._isElement(target.closest('.' + SELECTABLE))) {\n that.userEvents.cancel();\n return;\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 e.sender.capture();\n that._marquee.appendTo(document.body).css({\n left: e.x.client + 1,\n top: e.y.client + 1,\n width: 0,\n height: 0\n });\n if (!ctrlKey) {\n that.clear();\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 _move: function (e) {\n var that = this, 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 that._marquee.css(position);\n that._invalidateSelectables(position, e.event.ctrlKey || e.event.metaKey);\n e.preventDefault();\n },\n _end: function (e) {\n var that = this;\n that._marquee.remove();\n that._unselect(that.element.find(that.options.filter + '.' + UNSELECTING)).removeClass(UNSELECTING);\n var target = that.element.find(that.options.filter + '.' + ACTIVE);\n target = target.add(that.relatedTarget(target));\n that.value(target, e);\n that._lastActive = that._downTarget;\n that._items = null;\n },\n _invalidateSelectables: function (position, ctrlKey) {\n var idx, length, target = this._downTarget[0], items = this._items, related, toSelect;\n this._currentlyActive = [];\n for (idx = 0, length = items.length; idx < length; idx++) {\n toSelect = items.eq(idx);\n related = toSelect.add(this.relatedTarget(toSelect));\n if (collision(toSelect, position)) {\n if (toSelect.hasClass(SELECTED)) {\n if (ctrlKey && target !== toSelect[0]) {\n related.removeClass(SELECTED).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(SELECTED);\n }\n }\n }\n },\n _collidesWithActiveElement: function (element, marqueeRect) {\n if (!this.options.ignoreOverlapped) {\n return false;\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 marqueeRect.right = marqueeRect.left + marqueeRect.width;\n marqueeRect.bottom = marqueeRect.top + marqueeRect.height;\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 value: function (val, e) {\n var that = this, selectElement = proxy(that._selectElement, that);\n if (val) {\n val.each(function () {\n selectElement(this);\n });\n that._notify(CHANGE, e);\n return;\n }\n return that.element.find(that.options.filter + '.' + SELECTED);\n },\n _firstSelectee: function () {\n var that = this, selected;\n if (that._lastActive !== null) {\n return that._lastActive;\n }\n selected = that.value();\n return selected.length > 0 ? selected[0] : that.element.find(that.options.filter)[0];\n },\n _selectElement: function (element, preventNotify) {\n var toSelect = $(element), isPrevented = !preventNotify && this._notify('select', { element: element });\n toSelect.removeClass(ACTIVE);\n if (!isPrevented) {\n toSelect.addClass(SELECTED);\n if (this.options.aria) {\n toSelect.attr(ARIASELECTED, true);\n }\n }\n },\n _notify: function (name, args) {\n args = args || {};\n return this.trigger(name, args);\n },\n _unselect: function (element) {\n if (this.trigger(UNSELECT, { element: element })) {\n return;\n }\n element.removeClass(SELECTED);\n if (this.options.aria) {\n element.attr(ARIASELECTED, false);\n }\n return element;\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 _allowSelection: function (target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n this._downTarget = null;\n return false;\n }\n return true;\n },\n resetTouchEvents: function () {\n this.userEvents.cancel();\n },\n clear: function () {\n var items = this.element.find(this.options.filter + '.' + SELECTED);\n this._unselect(items);\n },\n selectRange: function (start, end, e) {\n var that = this, idx, tmp, items;\n that.clear();\n if (that.element.length > 1) {\n items = that.options.continuousItems();\n }\n if (!items || !items.length) {\n items = that.element.find(that.options.filter);\n }\n start = $.inArray($(start)[0], items);\n end = $.inArray($(end)[0], items);\n if (start > end) {\n tmp = start;\n start = end;\n end = tmp;\n }\n if (!that.options.useAllItems) {\n end += that.element.length - 1;\n }\n for (idx = start; idx <= end; idx++) {\n that._selectElement(items[idx]);\n }\n that._notify(CHANGE, e);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.off(NS);\n that.userEvents.destroy();\n that._marquee = that._lastActive = that.element = that.userEvents = null;\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 function collision(element, position) {\n if (!element.is(':visible')) {\n return false;\n }\n var elementPosition = kendo.getOffset(element), right = position.left + position.width, bottom = position.top + position.height;\n elementPosition.right = elementPosition.left + kendo._outerWidth(element);\n elementPosition.bottom = elementPosition.top + kendo._outerHeight(element);\n return !(elementPosition.left > right || elementPosition.right < position.left || elementPosition.top > bottom || elementPosition.bottom < position.top);\n }\n function overlaps(firstRect, secondRect) {\n return !(firstRect.right <= secondRect.left || firstRect.left >= secondRect.right || firstRect.bottom <= secondRect.top || firstRect.top >= secondRect.bottom);\n }\n kendo.ui.plugin(Selectable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}