{"version":3,"file":"kendo.mobile.switch.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","ui","mobile","outerWidth","_outerWidth","Widget","support","CHANGE","SWITCHON","SWITCHOFF","MARGINLEFT","ACTIVE_STATE","DISABLED","TRANSFORMSTYLE","transitions","css","className","name","SWITCH_MARKUP","Switch","extend","init","element","options","checked","that","this","fn","call","wrapper","format","onLabel","offLabel","handle","find","background","insertBefore","prepend","_drag","origin","parseInt","constrain","snapPoint","type","_animateBackground","check","enable","attr","refresh","notify","handleWidth","width","data","events","_position","toggleClass","value","apply","arguments","destroy","userEvents","toggle","prop","_resize","_move","e","minLimit","maxLimit","preventDefault","position","x","delta","Math","max","min","_start","capture","addClass","cancel","_stop","removeClass","_toggle","distance","duration","application","os","wp","kendoStop","kendoAnimate","effects","offset","reset","reverse","axis","complete","trigger","UserEvents","fastTap","tap","start","bind","move","end","plugin","jQuery"],"sources":["kendo.mobile.switch.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.fx', 'kendo.userevents'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"mobile.switch\",\n name: \"Switch\",\n category: \"mobile\",\n description: \"The mobile Switch widget is used to display two exclusive choices.\",\n depends: [ \"fx\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.mobile.ui,\n outerWidth = kendo._outerWidth,\n Widget = ui.Widget,\n support = kendo.support,\n CHANGE = \"change\",\n SWITCHON = \"switch-on\",\n SWITCHOFF = \"switch-off\",\n MARGINLEFT = \"margin-left\",\n ACTIVE_STATE = \"state-active\",\n DISABLED_STATE = \"state-disabled\",\n DISABLED = \"disabled\",\n RESOLVEDPREFIX = support.transitions.css === undefined$1 ? \"\" : support.transitions.css,\n TRANSFORMSTYLE = RESOLVEDPREFIX + \"transform\";\n\n function className(name) {\n return \"km-\" + name;\n }\n\n function limitValue(value, minLimit, maxLimit) {\n return Math.max(minLimit, Math.min(maxLimit, value));\n }\n\n var SWITCH_MARKUP = '\\\n \\\n \\\n \\\n \\\n \\\n {0} \\\n {1} \\\n \\\n \\\n ';\n\n var Switch = Widget.extend({\n init: function(element, options) {\n var that = this, checked;\n\n Widget.fn.init.call(that, element, options);\n\n options = that.options;\n\n that.wrapper = $(kendo.format(SWITCH_MARKUP, options.onLabel, options.offLabel));\n that.handle = that.wrapper.find(\".km-switch-handle\");\n that.background = that.wrapper.find(\".km-switch-background\");\n that.wrapper.insertBefore(that.element).prepend(that.element);\n\n that._drag();\n\n that.origin = parseInt(that.background.css(MARGINLEFT), 10);\n\n that.constrain = 0;\n that.snapPoint = 0;\n\n element = that.element[0];\n element.type = \"checkbox\";\n that._animateBackground = true;\n\n checked = that.options.checked;\n\n if (checked === null) {\n checked = element.checked;\n }\n\n that.check(checked);\n\n that.options.enable = that.options.enable && !that.element.attr(DISABLED);\n that.enable(that.options.enable);\n\n that.refresh();\n kendo.notify(that, kendo.mobile.ui);\n },\n\n refresh: function() {\n var that = this,\n handleWidth = outerWidth(that.handle, true);\n\n that.width = that.wrapper.width();\n\n that.constrain = that.width - handleWidth;\n that.snapPoint = that.constrain / 2;\n\n if (typeof that.origin != \"number\") {\n that.origin = parseInt(that.background.css(MARGINLEFT), 10);\n }\n\n that.background.data(\"origin\", that.origin);\n\n that.check(that.element[0].checked);\n },\n\n events: [\n CHANGE\n ],\n\n options: {\n name: \"Switch\",\n onLabel: \"on\",\n offLabel: \"off\",\n checked: null,\n enable: true\n },\n\n check: function(check) {\n var that = this,\n element = that.element[0];\n\n if (check === undefined$1) {\n return element.checked;\n }\n\n that._position(check ? that.constrain : 0);\n element.checked = check;\n that.wrapper\n .toggleClass(className(SWITCHON), check)\n .toggleClass(className(SWITCHOFF), !check);\n },\n\n // alias for check, NG support\n value: function() {\n return this.check.apply(this, arguments);\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.userEvents.destroy();\n },\n\n toggle: function() {\n var that = this;\n\n that.check(!that.element[0].checked);\n },\n\n enable: function(enable) {\n var element = this.element,\n wrapper = this.wrapper;\n\n if (typeof enable == \"undefined\") {\n enable = true;\n }\n\n this.options.enable = enable;\n\n if (enable) {\n element.prop(DISABLED, false);\n } else {\n element.attr(DISABLED, DISABLED);\n }\n\n wrapper.toggleClass(className(DISABLED_STATE), !enable);\n },\n\n _resize: function() {\n this.refresh();\n },\n\n _move: function(e) {\n var that = this;\n e.preventDefault();\n that._position(limitValue(that.position + e.x.delta, 0, that.width - outerWidth(that.handle, true)));\n },\n\n _position: function(position) {\n var that = this;\n\n that.position = position;\n that.handle.css(TRANSFORMSTYLE, \"translatex(\" + position + \"px)\");\n\n if (that._animateBackground) {\n that.background.css(MARGINLEFT, that.origin + position);\n }\n },\n\n _start: function() {\n if (!this.options.enable) {\n this.userEvents.cancel();\n } else {\n this.userEvents.capture();\n this.handle.addClass(className(ACTIVE_STATE));\n }\n },\n\n _stop: function() {\n var that = this;\n\n that.handle.removeClass(className(ACTIVE_STATE));\n that._toggle(that.position > that.snapPoint);\n },\n\n _toggle: function(checked) {\n var that = this,\n handle = that.handle,\n element = that.element[0],\n value = element.checked,\n duration = kendo.mobile.application && kendo.mobile.application.os.wp ? 100 : 200,\n distance;\n\n that.wrapper\n .toggleClass(className(SWITCHON), checked)\n .toggleClass(className(SWITCHOFF), !checked);\n\n that.position = distance = checked * that.constrain;\n\n if (that._animateBackground) {\n that.background\n .kendoStop(true, true)\n .kendoAnimate({ effects: \"slideMargin\", offset: distance, reset: true, reverse: !checked, axis: \"left\", duration: duration });\n }\n\n handle\n .kendoStop(true, true)\n .kendoAnimate({\n effects: \"slideTo\",\n duration: duration,\n offset: distance + \"px,0\",\n reset: true,\n complete: function() {\n if (value !== checked) {\n element.checked = checked;\n that.trigger(CHANGE, { checked: checked });\n }\n }\n });\n },\n\n _drag: function() {\n var that = this;\n\n that.userEvents = new kendo.UserEvents(that.wrapper, {\n fastTap: true,\n tap: function() {\n if (that.options.enable) {\n that._toggle(!that.element[0].checked);\n }\n },\n start: that._start.bind(that),\n move: that._move.bind(that),\n end: that._stop.bind(that)\n });\n }\n });\n\n ui.plugin(Switch);\n })(window.kendo.jQuery);\n\n}));\n"]}