{"version":3,"sources":["kendo.editable.js"],"names":["f","define","$","undefined","fieldType","field","type","convertToValueBinding","container","find","kendo","attr","each","bindAttr","binding","this","getAttribute","bindingName","fieldName","name","indexOf","length","createAttributes","options","ruleName","rule","culture","numberFormat","stringRule","model","fields","validation","DATATYPE","BINDING","title","inArray","specialRules","isFunction","getCulture","replace","POINT","isPlainObject","value","message","autocomplete","AUTOCOMPLETEVALUE","addIdAttribute","id","removeAttr","convertItems","items","idx","item","text","result","addValidationRules","modelField","rules","descriptor","window","ui","Widget","extend","oldIE","support","browser","msie","version","chrome","nameSpecialCharRegExp","ERRORTEMPLATE","CHANGE","EQUAL_SET","editors","number","appendTo","kendoNumericTextBox","format","hide","date","_extractFormat","kendoDatePicker","string","boolean","values","stringify","mobileEditors","index","select","Editable","init","element","that","target","$angular","pane","_isMobile","fn","call","_validateProxy","proxy","_validate","refresh","events","clearContainer","errorTemplate","skipFocus","editor","isObject","isValuesEditor","isCustomEditor","append","e","input","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","RegExp","filter","test","is","val","validatable","validateInput","trigger","preventDefault","end","validate","destroy","angular","elements","unbind","removeData","modelFields","focusable","empty","isArray","data","map","dataItem","bind","Validator","validateOnBlur","eq","focus","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.editable.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.editable', [\n 'kendo.datepicker',\n 'kendo.numerictextbox',\n 'kendo.validator',\n 'kendo.binder'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'editable',\n name: 'Editable',\n category: 'framework',\n depends: [\n 'datepicker',\n 'numerictextbox',\n 'validator',\n 'binder'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, extend = $.extend, oldIE = kendo.support.browser.msie && kendo.support.browser.version < 9, isFunction = kendo.isFunction, isPlainObject = $.isPlainObject, inArray = $.inArray, POINT = '.', support = kendo.support, AUTOCOMPLETEVALUE = support.browser.chrome ? 'disabled' : 'off', nameSpecialCharRegExp = /(\"|\\%|'|\\[|\\]|\\$|\\.|\\,|\\:|\\;|\\+|\\*|\\&|\\!|\\#|\\(|\\)|<|>|\\=|\\?|\\@|\\^|\\{|\\}|\\~|\\/|\\||`)/g, ERRORTEMPLATE = '
', CHANGE = 'change';\n var EQUAL_SET = 'equalSet';\n var specialRules = [\n 'url',\n 'email',\n 'number',\n 'date',\n 'boolean'\n ];\n function fieldType(field) {\n field = field != null ? field : '';\n return field.type || $.type(field) || 'string';\n }\n function convertToValueBinding(container) {\n container.find(':input:not(:button, .k-combobox .k-input, [' + kendo.attr('role') + '=listbox], [' + kendo.attr('role') + '=upload], [' + kendo.attr('skip') + '], [type=file])').each(function () {\n var bindAttr = kendo.attr('bind'), binding = this.getAttribute(bindAttr) || '', bindingName = this.type === 'checkbox' || this.type === 'radio' ? 'checked:' : 'value:', fieldName = this.name;\n if (binding.indexOf(bindingName) === -1 && fieldName) {\n binding += (binding.length ? ',' : '') + bindingName + fieldName;\n $(this).attr(bindAttr, binding);\n }\n });\n }\n function createAttributes(options) {\n var field = (options.model.fields || options.model)[options.field], type = fieldType(field), validation = field ? field.validation : {}, ruleName, DATATYPE = kendo.attr('type'), BINDING = kendo.attr('bind'), rule, attr = {\n name: options.field,\n title: options.title ? options.title : options.field\n };\n for (ruleName in validation) {\n rule = validation[ruleName];\n if (inArray(ruleName, specialRules) >= 0) {\n attr[DATATYPE] = ruleName;\n } else if (!isFunction(rule)) {\n var culture = kendo.getCulture();\n if (typeof rule === 'number' && culture.name.length) {\n var numberFormat = culture.numberFormat;\n var stringRule = rule.toString().replace(POINT, numberFormat[POINT]);\n attr[ruleName] = stringRule;\n } else {\n attr[ruleName] = isPlainObject(rule) ? rule.value || ruleName : rule;\n }\n }\n attr[kendo.attr(ruleName + '-msg')] = rule.message;\n attr.autocomplete = AUTOCOMPLETEVALUE;\n }\n if (inArray(type, specialRules) >= 0) {\n attr[DATATYPE] = type;\n }\n attr[BINDING] = (type === 'boolean' ? 'checked:' : 'value:') + options.field;\n return attr;\n }\n function addIdAttribute(container, attr) {\n var id = container.attr('id');\n if (id) {\n attr.id = id;\n container.removeAttr('id');\n }\n return attr;\n }\n function convertItems(items) {\n var idx, length, item, value, text, result;\n if (items && items.length) {\n result = [];\n for (idx = 0, length = items.length; idx < length; idx++) {\n item = items[idx];\n text = item.text || item.value || item;\n value = item.value == null ? item.text || item : item.value;\n result[idx] = {\n text: text,\n value: value\n };\n }\n }\n return result;\n }\n var editors = {\n 'number': function (container, options) {\n var attr = createAttributes(options);\n $('').attr(attr).appendTo(container).kendoNumericTextBox({ format: options.format });\n $('').hide().appendTo(container);\n },\n 'date': function (container, options) {\n var attr = createAttributes(options), format = options.format;\n if (format) {\n format = kendo._extractFormat(format);\n }\n attr[kendo.attr('format')] = format;\n $('').attr(attr).appendTo(container).kendoDatePicker({ format: options.format });\n $('').hide().appendTo(container);\n },\n 'string': function (container, options) {\n var attr = createAttributes(options);\n $('').attr(attr).appendTo(container);\n },\n 'boolean': function (container, options) {\n var attr = createAttributes(options);\n $('').attr(attr).appendTo(container);\n },\n 'values': function (container, options) {\n var attr = createAttributes(options);\n var items = kendo.stringify(convertItems(options.values));\n $('').attr(attr).appendTo(container);\n $('').hide().appendTo(container);\n }\n };\n var mobileEditors = {\n 'number': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('').attr(attr).appendTo(container);\n },\n 'date': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('').attr(attr).appendTo(container);\n },\n 'string': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('').attr(attr).appendTo(container);\n },\n 'boolean': function (container, options) {\n var attr = createAttributes(options);\n attr = addIdAttribute(container, attr);\n $('').attr(attr).appendTo(container);\n },\n 'values': function (container, options) {\n var attr = createAttributes(options);\n var items = options.values;\n var select = $('');\n attr = addIdAttribute(container, attr);\n for (var index in items) {\n $('').appendTo(select);\n }\n select.attr(attr).appendTo(container);\n }\n };\n function addValidationRules(modelField, rules) {\n var validation = modelField ? modelField.validation || {} : {}, rule, descriptor;\n for (rule in validation) {\n descriptor = validation[rule];\n if (isPlainObject(descriptor) && descriptor.value) {\n descriptor = descriptor.value;\n }\n if (isFunction(descriptor)) {\n rules[rule] = descriptor;\n }\n }\n }\n var Editable = Widget.extend({\n init: function (element, options) {\n var that = this;\n if (options.target) {\n options.$angular = options.target.options.$angular;\n if (options.target.pane) {\n that._isMobile = true;\n }\n }\n Widget.fn.init.call(that, element, options);\n that._validateProxy = $.proxy(that._validate, that);\n that.refresh();\n },\n events: [CHANGE],\n options: {\n name: 'Editable',\n editors: editors,\n mobileEditors: mobileEditors,\n clearContainer: true,\n errorTemplate: ERRORTEMPLATE,\n skipFocus: false\n },\n editor: function (field, modelField) {\n var that = this, editors = that._isMobile ? mobileEditors : that.options.editors, isObject = isPlainObject(field), fieldName = isObject ? field.field : field, model = that.options.model || {}, isValuesEditor = isObject && field.values, type = isValuesEditor ? 'values' : fieldType(modelField), isCustomEditor = isObject && field.editor, editor = isCustomEditor ? field.editor : editors[type], container = that.element.find('[' + kendo.attr('container-for') + '=' + fieldName.replace(nameSpecialCharRegExp, '\\\\$1') + ']');\n editor = editor ? editor : editors.string;\n if (isCustomEditor && typeof field.editor === 'string') {\n editor = function (container) {\n container.append(field.editor);\n };\n }\n container = container.length ? container : that.element;\n editor(container, extend(true, {}, isObject ? field : { field: fieldName }, { model: model }));\n },\n _validate: function (e) {\n var that = this, input, value = e.value, preventChangeTrigger = that._validationEventInProgress, values = {}, bindAttribute = kendo.attr('bind'), fieldName = e.field.replace(nameSpecialCharRegExp, '\\\\$1'), bindingRegex = new RegExp('(value|checked)\\\\s*:\\\\s*' + fieldName + '\\\\s*(,|$)');\n values[e.field] = e.value;\n input = $(':input[' + bindAttribute + '*=\"' + fieldName + '\"]', that.element).filter('[' + kendo.attr('validate') + '!=\\'false\\']').filter(function () {\n return bindingRegex.test($(this).attr(bindAttribute));\n });\n if (input.length > 1) {\n input = input.filter(function () {\n var element = $(this);\n return !element.is(':radio') || element.val() == value;\n });\n }\n try {\n that._validationEventInProgress = true;\n if (!that.validatable.validateInput(input) || !preventChangeTrigger && that.trigger(CHANGE, { values: values })) {\n e.preventDefault();\n }\n } finally {\n that._validationEventInProgress = false;\n }\n },\n end: function () {\n return this.validatable.validate();\n },\n destroy: function () {\n var that = this;\n that.angular('cleanup', function () {\n return { elements: that.element };\n });\n Widget.fn.destroy.call(that);\n that.options.model.unbind('set', that._validateProxy);\n that.options.model.unbind(EQUAL_SET, that._validateProxy);\n kendo.unbind(that.element);\n if (that.validatable) {\n that.validatable.destroy();\n }\n kendo.destroy(that.element);\n that.element.removeData('kendoValidator');\n if (that.element.is('[' + kendo.attr('role') + '=editable]')) {\n that.element.removeAttr(kendo.attr('role'));\n }\n },\n refresh: function () {\n var that = this, idx, length, fields = that.options.fields || [], container = that.options.clearContainer ? that.element.empty() : that.element, model = that.options.model || {}, rules = {}, field, isObject, fieldName, modelField, modelFields;\n if (!$.isArray(fields)) {\n fields = [fields];\n }\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n isObject = isPlainObject(field);\n fieldName = isObject ? field.field : field;\n modelField = (model.fields || model)[fieldName];\n addValidationRules(modelField, rules);\n that.editor(field, modelField);\n }\n if (that.options.target) {\n that.angular('compile', function () {\n return {\n elements: container,\n data: container.map(function () {\n return { dataItem: model };\n })\n };\n });\n }\n if (!length) {\n modelFields = model.fields || model;\n for (fieldName in modelFields) {\n addValidationRules(modelFields[fieldName], rules);\n }\n }\n convertToValueBinding(container);\n if (that.validatable) {\n that.validatable.destroy();\n }\n kendo.bind(container, that.options.model);\n that.options.model.unbind('set', that._validateProxy);\n that.options.model.bind('set', that._validateProxy);\n that.options.model.unbind(EQUAL_SET, that._validateProxy);\n that.options.model.bind(EQUAL_SET, that._validateProxy);\n that.validatable = new kendo.ui.Validator(container, {\n validateOnBlur: false,\n errorTemplate: that.options.errorTemplate || undefined,\n rules: rules\n });\n if (!that.options.skipFocus) {\n var focusable = container.find(':kendoFocusable').eq(0).focus();\n if (oldIE) {\n focusable.focus();\n }\n }\n }\n });\n ui.plugin(Editable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}