{"version":3,"sources":["kendo.ripple.js"],"names":["f","define","closest","createRipple","once","activate","finishAnimation","release","deactivate","register","window","kendo","util","ripple","element","selector","matches","node","Element","prototype","el","sel","msMatchesSelector","parentElement","doc","blob","createElement","className","appendChild","eventName","fn","listener","removeEventListener","remove","addEventListener","containerSelector","options","e","container","doubleFocus","_a","state_1","eventType","rect","left","top","xMax","yMax","dx","dy","size","duration","target","document","ownerDocument","test","type","classList","contains","add","animated","released","focusin","keydown","mousedown","pointerdown","touchdown","animationstart","currentTarget","getComputedStyle","getPropertyValue","getBoundingClientRect","clientX","clientY","width","height","Math","sqrt","style","offsetWidth","Error","cssText","setTimeout","state","parentNode","removeChild","transition","opacity","root","elements","flatten","arr","concat","apply","handlers","map","item","defaultOptions","events","global","activator","body","forEach","evt","removeListener","deepExtend","amd","a1","a2","a3","$","undefined","ui","Widget","extend","RippleContainer","init","that","this","call","wrapper","registerListeners","name","nextElementSibling","removeListeners","callback","destroy","plugin","jQuery"],"mappings":"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","file":"kendo.ripple.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('util/ripple', ['kendo.core'], f);\n}(function () {\n (function () {\n window.kendo.util = window.kendo.util || {};\n window.kendo.util.ripple = window.kendo.util.ripple || {};\n var closest = function (element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n var matches = Element.prototype.matches ? function (el, sel) {\n return el.matches(sel);\n } : function (el, sel) {\n return el.msMatchesSelector(sel);\n };\n var node = element;\n while (node) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentElement;\n }\n };\n var createRipple = function (doc) {\n var ripple = doc.createElement('div');\n ripple.className = 'k-ripple';\n var blob = doc.createElement('div');\n blob.className = 'k-ripple-blob';\n ripple.appendChild(blob);\n return [\n ripple,\n blob\n ];\n };\n var once = function (element, eventName, fn) {\n var listener = function () {\n fn();\n element.removeEventListener(eventName, listener, false);\n };\n var remove = function () {\n return element.addEventListener(eventName, listener, false);\n };\n remove();\n return { remove: remove };\n };\n var activate = function (containerSelector, options) {\n return function (e) {\n var target = e.target;\n var doc = target.document || target.ownerDocument;\n var container;\n if (options.container) {\n container = options.container(target);\n } else {\n container = closest(target, containerSelector);\n }\n if (!container) {\n return;\n }\n var doubleFocus = /focus/i.test(e.type) && container.classList.contains('k-ripple-target');\n if (doubleFocus) {\n return;\n }\n if (!target.classList.contains('k-checkbox') && !target.classList.contains('k-radio')) {\n container.classList.add('k-ripple-target');\n var _a = createRipple(doc), ripple = _a[0], blob = _a[1];\n var state_1 = {\n animated: false,\n released: false,\n blob: blob,\n container: container,\n ripple: ripple\n };\n var eventType = {\n 'focusin': 'focusout',\n 'keydown': 'keyup',\n 'mousedown': 'mouseup',\n 'pointerdown': 'pointerup',\n 'touchdown': 'touchup',\n 'animationstart': 'animationend'\n }[e.type];\n once(e.currentTarget, eventType, function () {\n return release(state_1);\n });\n container.appendChild(ripple);\n window.getComputedStyle(ripple).getPropertyValue('opacity');\n var rect = container.getBoundingClientRect();\n var left = 0;\n var top = 0;\n if (/mouse|pointer|touch/.test(e.type)) {\n left = e.clientX - rect.left;\n top = e.clientY - rect.top;\n } else {\n left = rect.width / 2;\n top = rect.height / 2;\n }\n var xMax = left < rect.width / 2 ? rect.width : 0;\n var yMax = top < rect.height / 2 ? rect.height : 0;\n var dx = left - xMax;\n var dy = top - yMax;\n var size = 2 * Math.sqrt(dx * dx + dy * dy);\n var duration = 500;\n blob.style.width = blob.style.height = size + 'px';\n if (blob.offsetWidth < 0) {\n throw new Error('Inconceivable!');\n }\n blob.style.cssText = '\\n width: ' + size + 'px;\\n height: ' + size + 'px;\\n transform: translate(-50%, -50%) scale(1);\\n left: ' + left + 'px;\\n top: ' + top + 'px;\\n ';\n setTimeout(function () {\n return finishAnimation(state_1);\n }, duration);\n } else {\n e.target.classList.remove('k-ripple-focus');\n if (e.type !== 'animationend') {\n e.target.classList.add('k-ripple-focus');\n }\n }\n };\n };\n var finishAnimation = function (state) {\n state.animated = true;\n deactivate(state);\n };\n var release = function (state) {\n state.released = true;\n deactivate(state);\n };\n var deactivate = function (state) {\n if (!state.released || !state.animated) {\n return;\n }\n var blob = state.blob, ripple = state.ripple, container = state.container;\n if (container) {\n once(container, 'blur', function () {\n return container.classList.remove('k-ripple-target');\n });\n }\n if (blob) {\n once(blob, 'transitionend', function () {\n if (ripple && ripple.parentNode) {\n ripple.parentNode.removeChild(ripple);\n }\n });\n blob.style.transition = 'opacity 200ms linear';\n blob.style.opacity = '0';\n }\n };\n var register = function (root, elements) {\n var flatten = function (arr) {\n return [].concat.apply([], arr);\n };\n var handlers = flatten(elements.map(function (item) {\n var defaultOptions = {\n events: [\n 'mousedown',\n 'touchdown'\n ],\n global: false\n };\n var selector = item.selector, _a = item.options, options = _a === void 0 ? defaultOptions : _a;\n var activator = activate(selector, options);\n var events = options.events || defaultOptions.events;\n var container = options.global ? document.body : root;\n events.forEach(function (evt) {\n return container.addEventListener(evt, activator, false);\n });\n return {\n events: events,\n options: options,\n activator: activator\n };\n }));\n return function () {\n if (!root) {\n return;\n }\n var removeListener = function (_a) {\n var events = _a.events, options = _a.options, activator = _a.activator;\n var container = options.global ? document.body : root;\n events.forEach(function (evt) {\n return container.removeEventListener(evt, activator, false);\n });\n };\n handlers.forEach(removeListener);\n root = null;\n };\n };\n kendo.deepExtend(kendo.util.ripple, { register: register });\n }());\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.ripple', ['util/ripple'], f);\n}(function () {\n var __meta__ = {\n id: 'ripplecontainer',\n name: 'RippleContainer',\n category: 'web',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, extend = $.extend, ripple = kendo.util.ripple;\n var RippleContainer = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element);\n element = that.wrapper = that.element;\n that.options = extend({}, that.options, options);\n that.registerListeners();\n },\n options: {\n name: 'RippleContainer',\n elements: [\n { selector: '.k-button:not(li)' },\n {\n selector: '.k-list > .k-item',\n options: { global: true }\n },\n { selector: '.k-checkbox-label, .k-radio-label' },\n {\n selector: '.k-checkbox, .k-radio',\n options: {\n events: ['focusin'],\n container: function (el) {\n if (/\\b(k-checkbox|k-radio)\\b/.test(el.className)) {\n return el.nextElementSibling;\n }\n }\n }\n }\n ]\n },\n removeListeners: function () {\n },\n registerListeners: function () {\n var that = this;\n var root = that.element[0];\n var elements = that.options.elements;\n that.removeListeners();\n var callback = ripple.register(root, elements);\n that.removeListeners = callback;\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.removeListeners();\n }\n });\n ui.plugin(RippleContainer);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}