{"version":3,"file":"kendo.popup.min.js","sources":["kendo.popup.js"],"sourcesContent":["(function(f, define) {\n define('kendo.popup',[ \"kendo.core\" ], f);\n})(function() {\n\nvar __meta__ = {\n id: \"popup\",\n name: \"Pop-up\",\n category: \"framework\",\n depends: [ \"core\" ],\n advanced: true\n};\n\n(function($, undefined) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Class = kendo.Class,\n support = kendo.support,\n getOffset = kendo.getOffset,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n OPEN = \"open\",\n CLOSE = \"close\",\n DEACTIVATE = \"deactivate\",\n ACTIVATE = \"activate\",\n CENTER = \"center\",\n LEFT = \"left\",\n RIGHT = \"right\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n ABSOLUTE = \"absolute\",\n HIDDEN = \"hidden\",\n BODY = \"body\",\n LOCATION = \"location\",\n POSITION = \"position\",\n VISIBLE = \"visible\",\n EFFECTS = \"effects\",\n ACTIVE = \"k-active\",\n ACTIVEBORDER = \"k-state-border\",\n ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/,\n ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n MOUSEDOWN = \"down\",\n DOCUMENT_ELEMENT = $(document.documentElement),\n WINDOW = $(window),\n SCROLL = \"scroll\",\n cssPrefix = support.transitions.css,\n TRANSFORM = cssPrefix + \"transform\",\n extend = $.extend,\n NS = \".kendoPopup\",\n styles = [\"font-size\",\n \"font-family\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"line-height\"];\n\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n\n var Popup = Widget.extend({\n init: function(element, options) {\n var that = this, parentPopup;\n\n options = options || {};\n\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n options.position = options.position || TOP + \" \" + RIGHT;\n }\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that.collisions = options.collision ? options.collision.split(\" \") : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n\n parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n that.element.hide()\n .addClass(\"k-popup k-group k-reset\")\n .toggleClass(\"k-rtl\", !!options.isRtl)\n .css({ position: ABSOLUTE })\n .appendTo(options.appendTo)\n .attr(\"aria-hidden\", true)\n .on(\"mouseenter\" + NS, function() {\n that._hovered = true;\n })\n .on(\"wheel\" + NS, function(e) {\n var list = $(e.target).find(\".k-list\");\n var scrollArea = list.parent();\n if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n e.preventDefault();\n }\n })\n .on(\"mouseleave\" + NS, function() {\n that._hovered = false;\n });\n\n that.wrapper = $();\n\n if (options.animation === false) {\n options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n }\n\n extend(options.animation.open, {\n complete: function() {\n that.wrapper.css({ overflow: VISIBLE }); // Forcing refresh causes flickering in mobile.\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n\n extend(options.animation.close, {\n complete: function() {\n that._animationClose();\n }\n });\n\n that._mousedownProxy = function(e) {\n that._mousedown(e);\n };\n\n if (support.mobileOS.android) {\n that._resizeProxy = function(e) {\n setTimeout(function() {\n that._resize(e);\n }, 600); //Logic from kendo.onResize\n };\n } else {\n that._resizeProxy = function(e) {\n that._resize(e);\n };\n }\n\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, that.toggle.bind(that));\n }\n },\n\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n\n options: {\n name: \"Popup\",\n toggleEvent: \"click\",\n origin: BOTTOM + \" \" + LEFT,\n position: TOP + \" \" + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: \"flip fit\",\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: \"slideIn:down\",\n transition: true,\n duration: 200\n },\n close: { // if close animation effects are defined, they will be used instead of open.reverse\n duration: 100,\n hide: true\n }\n },\n omitOriginOffsets: false\n },\n\n _animationClose: function() {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n\n that.wrapper.hide();\n\n if (location) {\n that.wrapper.css(location);\n }\n\n if (that.options.anchor != BODY) {\n that._hideDirClass();\n }\n\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n\n destroy: function() {\n var that = this,\n options = that.options,\n element = that.element.off(NS),\n parent;\n\n Widget.fn.destroy.call(that);\n\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n\n kendo.destroy(that.element.children());\n element.removeData();\n\n if (options.appendTo[0] === document.body) {\n parent = element.parent(\".k-animation-container\");\n\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n\n open: function(x, y) {\n var that = this,\n fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n element = that.element,\n options = that.options,\n animation, wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\"),\n listbox = element.find(\"[role='listbox']\");\n\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n if (element.data(\"animating\") || that._trigger(OPEN)) {\n return;\n }\n\n that._activated = false;\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n .on(that.downEvent, that._mousedownProxy);\n\n // this binding hangs iOS in editor\n // all elements in IE7/8 fire resize event, causing mayhem\n that._toggleResize(false);\n that._toggleResize(true);\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n })\n .attr(\"aria-hidden\", false);\n\n if (listbox.attr(\"aria-label\")) {\n wrapper.attr(\"aria-label\", listbox.attr(\"aria-label\"));\n } else if (listbox.attr(\"aria-labelledby\")) {\n wrapper.attr(\"aria-labelledby\", listbox.attr(\"aria-labelledby\"));\n }\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n\n if (options.anchor != BODY) {\n that._showDirClass(animation);\n }\n\n if (!element.is(\":visible\") && element.data(\"olddisplay\") === undefined) {\n element.show();\n element.data(\"olddisplay\", element.css(\"display\"));\n element.hide();\n }\n\n element.data(EFFECTS, animation.effects)\n .kendoStop(true)\n .kendoAnimate(animation)\n .attr(\"aria-hidden\", false);\n }\n },\n\n _location: function(isFixed) {\n var that = this,\n element = that.element,\n options = that.options,\n wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\");\n\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n });\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that._position(isFixed || {});\n\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n\n _openAnimation: function() {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n return animation;\n },\n\n _hideDirClass: function() {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr(\"class\") || \"\").match(ACTIVEBORDERREGEXP) || [\"\", \"down\"])[1];\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n anchor\n .removeClass(dirClass)\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE)\n .removeClass(dirClass);\n\n this.element.removeClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n _showDirClass: function(animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : \"down\";\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n $(this.options.anchor)\n .addClass(dirClass)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE)\n .addClass(dirClass);\n\n this.element.addClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n //this._hideDirClass();\n //this._showDirClass(this._openAnimation());\n }\n },\n\n toggle: function() {\n var that = this;\n\n that[that.visible() ? CLOSE : OPEN]();\n },\n\n visible: function() {\n return this.element.is(\":\" + VISIBLE);\n },\n\n close: function(skipEffects) {\n var that = this,\n options = that.options, wrap,\n animation, openEffects, closeEffects;\n\n if (that.visible()) {\n wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n\n // Close all inclusive popups.\n that.element.find(\".k-popup\").each(function() {\n var that = $(this),\n popup = that.data(\"kendoPopup\");\n\n if (popup) {\n popup.close(skipEffects);\n }\n });\n\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n if (skipEffects) {\n animation = { hide: true, effects: {} };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = that.element.data(EFFECTS);\n closeEffects = animation.effects;\n\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n\n that._closing = true;\n }\n\n that.element\n .kendoStop(true)\n .attr(\"aria-hidden\", true);\n wrap\n .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n .attr(\"aria-hidden\", true);\n that.element.kendoAnimate(animation);\n\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n\n _trigger: function(ev) {\n return this.trigger(ev, { type: ev });\n },\n\n _resize: function(e) {\n var that = this;\n\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function() {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || (that._activated && that.element.find(\".k-list\").length > 0)) {\n that.close();\n }\n }\n },\n\n _toggleResize: function(toggle) {\n var method = toggle ? \"on\" : \"off\";\n var eventNames = support.resize;\n\n if (!(support.mobileOS.ios || support.mobileOS.android || support.browser.safari)) {\n eventNames += \" \" + SCROLL;\n }\n\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n\n WINDOW[method](eventNames, this._resizeProxy);\n },\n\n _mousedown: function(e) {\n var that = this,\n container = that.element[0],\n options = that.options,\n anchor = $(options.anchor)[0],\n toggleTarget = options.toggleTarget,\n target = kendo.eventTarget(e),\n popup = $(target).closest(\".k-popup\"),\n mobile = popup.parent().parent(\".km-shim\").length;\n\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n\n // This MAY result in popup not closing in certain cases.\n if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n return;\n }\n\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n\n _fit: function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n },\n\n _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n\n _scrollableParents: function() {\n return $(this.options.anchor)\n .parentsUntil(\"body\")\n .filter(function(index, element) {\n return kendo.isScrollable(element);\n });\n },\n\n _position: function(fixed) {\n var that = this,\n //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n element = that.element,\n wrapper = that.wrapper,\n options = that.options,\n viewport = $(options.viewport),\n zoomLevel = support.zoomLevel(),\n isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n anchor = $(options.anchor),\n origins = options.origin.toLowerCase().split(\" \"),\n positions = options.position.toLowerCase().split(\" \"),\n collisions = that.collisions,\n siblingContainer, parents,\n parentZIndex, zIndex = 10002,\n idx = 0,\n docEl = document.documentElement,\n length, viewportOffset, viewportWidth, viewportHeight;\n\n if (options.viewport === window) {\n viewportOffset = {\n top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n };\n } else {\n viewportOffset = viewport.offset();\n }\n\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n // set z-index to be more than that of the container/sibling\n // compensate with more units for window z-stack\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n\n wrapper.css(\"zIndex\", zIndex);\n\n if (fixed && fixed.isFixed) {\n wrapper.css({ left: fixed.x, top: fixed.y });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n offset = getOffset(wrapper),\n anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n\n if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n wrapper.data(LOCATION, extend({}, pos));\n }\n\n var offsets = extend({}, offset),\n location = extend({}, pos),\n adjustSize = options.adjustSize;\n\n if (collisions[0] === \"fit\") {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n\n if (collisions[1] === \"fit\") {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n\n if (collisions[0] === \"flip\") {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n\n if (collisions[1] === \"flip\") {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n\n element.css(POSITION, ABSOLUTE);\n wrapper.css(location);\n\n return (location.left != flipPos.left || location.top != flipPos.top);\n },\n\n _align: function(origin, position) {\n var that = this,\n element = that.wrapper,\n anchor = $(that.options.anchor),\n verticalOrigin = origin[0],\n horizontalOrigin = origin[1],\n verticalPosition = position[0],\n horizontalPosition = position[1],\n anchorOffset = getOffset(anchor),\n appendTo = $(that.options.appendTo),\n appendToOffset,\n width = outerWidth(element),\n height = outerHeight(element) || outerHeight(element.children().first()),\n anchorWidth = outerWidth(anchor),\n anchorHeight = outerHeight(anchor),\n top = that.options.omitOriginOffsets ? 0 : anchorOffset.top,\n left = that.options.omitOriginOffsets ? 0 : anchorOffset.left,\n round = Math.round;\n\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n\n\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n\n return {\n top: top,\n left: left\n };\n }\n });\n\n ui.plugin(Popup);\n\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = \"kendoTabKeyTrap\";\n var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n var TabKeyTrap = Class.extend({\n init: function(element) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n\n trap: function() {\n this.element.on(\"keydown\", this._keepInTrap.bind(this));\n },\n\n removeTrap: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n\n destroy: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined;\n },\n\n shouldTrap: function() {\n return true;\n },\n\n _keepInTrap: function(e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n\n this._focus(next);\n\n e.preventDefault();\n },\n _focusableElements: function() {\n var elements = this.element.find(focusableNodesSelector).filter(function(i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n\n if (this.element.is(\"[tabindex]\")) {\n elements.push(this.element[0]);\n }\n\n return elements;\n },\n _sortFocusableElements: function(elements) {\n var sortedElements;\n\n if (stableSort) {\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = \"__k_index\";\n elements.each(function(i, item) {\n item.setAttribute(attrName, i);\n });\n\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex === next.tabIndex ?\n parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n prev.tabIndex - next.tabIndex;\n });\n\n elements.removeAttr(attrName);\n }\n\n return sortedElements;\n },\n _nextFocusable: function(e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function(element) {\n if (element.nodeName == \"IFRAME\") {\n element.contentWindow.document.body.focus();\n return;\n }\n\n element.focus();\n\n if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function(element) {\n var elementType = element.type.toLowerCase();\n\n return elementType === \"text\" || elementType === \"search\" ||\n elementType === \"url\" || elementType === \"tel\" ||\n elementType === \"password\";\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n})(window.kendo.jQuery);\n\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n"],"names":["define","__meta__","id","name","category","depends","advanced","$","window","kendo","jQuery","undefined","ui","Widget","Class","support","getOffset","outerWidth","_outerWidth","outerHeight","_outerHeight","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","LEFT","RIGHT","TOP","BOTTOM","ABSOLUTE","HIDDEN","BODY","LOCATION","POSITION","VISIBLE","EFFECTS","ACTIVE","ACTIVEBORDER","ACTIVEBORDERREGEXP","ACTIVECHILDREN","MOUSEDOWN","DOCUMENT_ELEMENT","document","documentElement","WINDOW","SCROLL","cssPrefix","TRANSFORM","transitions","css","extend","NS","styles","contains","container","target","Popup","init","element","options","that","this","parentPopup","isRtl","origin","position","fn","call","collisions","collision","split","downEvent","applyEventMap","guid","length","push","anchor","closest","filter","appendTo","body","hide","addClass","toggleClass","attr","on","_hovered","e","list","find","scrollArea","parent","is","scrollTop","originalEvent","deltaY","prop","preventDefault","wrapper","animation","open","effects","close","complete","overflow","_activated","_trigger","_animationClose","_mousedownProxy","_mousedown","mobileOS","android","_resizeProxy","setTimeout","_resize","toggleTarget","toggleEvent","toggle","bind","events","viewport","copyAnchorStyles","autosize","modal","adjustSize","width","height","transition","duration","omitOriginOffsets","location","data","_hideDirClass","_closing","destroy","off","_toggleResize","children","removeData","remove","x","y","fixed","isFixed","isNaN","parseInt","mobile","hasClass","listbox","visible","shift","getComputedStyles","wrap","display","flipped","_position","_openAnimation","_showDirClass","show","kendoStop","kendoAnimate","_location","offset","left","top","parseEffects","direction","match","dirClass","removeClass","directions","reverse","slideIn","skipEffects","openEffects","closeEffects","each","popup","size","ev","trigger","type","resize","indexOf","clearTimeout","_resizeTimeout","method","eventNames","ios","browser","safari","scrollableParents","_scrollableParents","eventTarget","_fit","viewPortSize","output","_flip","anchorSize","boxSize","parentsUntil","index","isScrollable","zoomLevel","isWindow","innerWidth","origins","toLowerCase","positions","siblingContainer","parents","parentZIndex","zIndex","idx","docEl","viewportOffset","viewportWidth","viewportHeight","pageYOffset","pageXOffset","scrollLeft","innerHeight","scrollHeight","clientHeight","sign","scrollbar","siblings","Math","max","Number","_align","pos","offsetParent","anchorParent","offsets","flipPos","elementHeight","wrapperHeight","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","appendToOffset","first","anchorWidth","anchorHeight","round","stableSort","plugin","tabKeyTrapNS","focusableNodesSelector","TabKeyTrap","autoApplyNS","trap","_keepInTrap","removeTrap","kendoDestroy","shouldTrap","which","isDefaultPrevented","elements","_focusableElements","sortedElements","_sortFocusableElements","next","_nextFocusable","_focus","i","item","tabIndex","sort","prev","attrName","setAttribute","getAttribute","removeAttr","count","current","get","shiftKey","nodeName","contentWindow","focus","setSelectionRange","_haveSelectionRange","value","elementType","amd","a1","a2","a3"],"mappings":"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"}