{"version":3,"file":"kendo.data.xml.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodata","xml","js","this","$","undefined$1","kendo","window","isArray","Array","isPlainObject","map","each","extend","getter","XmlDataReader","Class","init","options","that","total","model","parse","errors","serialize","data","base","modelBase","Model","fields","field","value","isFunction","id","idField","xpathToMember","parseInt","modelInstance","result","evaluate","record","_parse","xmlParse","call","length","parseDOM","element","parsedNode","node","nodeType","nodeName","member","attribute","idx","attributes","attributeCount","nodeValue","firstChild","nextSibling","push","expression","intermediateResult","members","split","shift","join","apply","documentElement","tree","parseXML","raw","replace","indexOf","readers","jQuery"],"sources":["kendo.data.xml.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodata = global.kendodata || {}, global.kendodata.xml = global.kendodata.xml || {}, global.kendodata.xml.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"data.xml\",\n name: \"XML\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n map = $.map,\n each = $.each,\n extend = $.extend,\n getter = kendo.getter,\n Class = kendo.Class;\n\n var XmlDataReader = Class.extend({\n init: function(options) {\n var that = this,\n total = options.total,\n model = options.model,\n parse = options.parse,\n errors = options.errors,\n serialize = options.serialize,\n data = options.data;\n\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n if (isPlainObject(value) && value.field) {\n if (!kendo.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n\n var id = model.id;\n if (id) {\n var idField = {};\n\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n\n that.model = model;\n }\n\n if (total) {\n if (typeof total == \"string\") {\n total = that.getter(total);\n that.total = function(data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == \"function\") {\n that.total = total;\n }\n }\n\n if (errors) {\n if (typeof errors == \"string\") {\n errors = that.getter(errors);\n that.errors = function(data) {\n return errors(data) || null;\n };\n } else if (typeof errors == \"function\") {\n that.errors = errors;\n }\n }\n\n if (data) {\n if (typeof data == \"string\") {\n data = that.xpathToMember(data);\n that.data = function(value) {\n var result = that.evaluate(value, data),\n modelInstance;\n\n result = isArray(result) ? result : [result];\n\n if (that.model && model.fields) {\n modelInstance = new that.model();\n\n return map(result, function(value) {\n if (value) {\n var record = {}, field;\n\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n\n return record;\n }\n });\n }\n\n return result;\n };\n } else if (typeof data == \"function\") {\n that.data = data;\n }\n }\n\n if (typeof parse == \"function\") {\n var xmlParse = that.parse;\n\n that.parse = function(data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n\n if (typeof serialize == \"function\") {\n that.serialize = serialize;\n }\n },\n total: function(result) {\n return this.data(result).length;\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n serialize: function(data) {\n return data;\n },\n parseDOM: function(element) {\n var result = {},\n parsedNode,\n node,\n nodeType,\n nodeName,\n member,\n attribute,\n attributes = element.attributes,\n attributeCount = attributes.length,\n idx;\n\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result[\"@\" + attribute.nodeName] = attribute.nodeValue;\n }\n\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n\n if (nodeType === 3 || nodeType === 4) {\n // text nodes or CDATA are stored as #text field\n result[\"#text\"] = node.nodeValue;\n } else if (nodeType === 1) {\n // elements are stored as fields\n parsedNode = this.parseDOM(node);\n\n nodeName = node.nodeName;\n\n member = result[nodeName];\n\n if (isArray(member)) {\n // elements of same nodeName are stored as array\n member.push(parsedNode);\n } else if (member !== undefined$1) {\n member = [member, parsedNode];\n } else {\n member = parsedNode;\n }\n\n result[nodeName] = member;\n }\n }\n return result;\n },\n\n evaluate: function(value, expression) {\n var members = expression.split(\".\"),\n member,\n result,\n length,\n intermediateResult,\n idx;\n\n while (member = members.shift()) {\n value = value[member];\n\n if (isArray(value)) {\n result = [];\n expression = members.join(\".\");\n\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n\n result.push.apply(result, intermediateResult);\n }\n\n return result;\n }\n }\n\n return value;\n },\n\n parse: function(xml) {\n var documentElement,\n tree,\n result = {};\n\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n\n tree = this.parseDOM(documentElement);\n\n result[documentElement.nodeName] = tree;\n\n return result;\n },\n\n xpathToMember: function(member, raw) {\n if (!member) {\n return \"\";\n }\n\n member = member.replace(/^\\//, \"\") // remove the first \"/\"\n .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\n\n if (member.indexOf(\"@\") >= 0) {\n // replace @attribute with '[\"@attribute\"]'\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n\n if (member.indexOf(\"text()\") >= 0) {\n // replace \".text()\" with '[\"#text\"]'\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n\n return member;\n },\n getter: function(member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: {\n xml: XmlDataReader\n }\n });\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}