{"version":3,"file":"kendo.data.signalr.min.js","names":["factory","define","amd","$","kendo","window","isFunction","isJQueryPromise","promise","done","fail","isNativePromise","then","catch","transport","data","RemoteTransport","extend","init","options","signalr","Error","this","hub","on","invoke","fn","call","push","callbacks","client","create","pushCreate","update","pushUpdate","destroy","pushDestroy","_crud","type","server","format","args","parameterMap","isEmptyObject","apply","success","error","read","transports","jQuery"],"sources":["kendo.data.signalr.js"],"mappings":"CAAA,SAAWA,GACW,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,kBAAmBD,GACxEA,IAFJ,EAGG,YASC,SAAUG,GACN,IAAIC,EAAQC,OAAOD,MACfE,EAAaF,EAAME,WAEvB,SAASC,EAAgBC,GACrB,OAAOA,GAAWF,EAAWE,EAAQC,OAASH,EAAWE,EAAQE,MAGrE,SAASC,EAAgBH,GACrB,OAAOA,GAAWF,EAAWE,EAAQI,OAASN,EAAWE,EAAQK,OAGrE,IAAIC,EAAYV,EAAMW,KAAKC,gBAAgBC,OAAO,CAC9CC,KAAM,SAASC,GACX,IAAIC,EAAUD,GAAWA,EAAQC,QAAUD,EAAQC,QAAU,GAEzDZ,EAAUY,EAAQZ,QAEtB,IAAKA,EACD,MAAM,IAAIa,MAAM,qCAGpB,IAAKd,EAAgBC,KAAaG,EAAgBH,GAC9C,MAAM,IAAIa,MAAM,2CAGpBC,KAAKd,QAAUA,EAEf,IAAIe,EAAMH,EAAQG,IAElB,IAAKA,EACD,MAAM,IAAIF,MAAM,iCAGpB,GAAqB,mBAAVE,EAAIC,IAAyC,mBAAdD,EAAIE,OAC1C,MAAM,IAAIJ,MAAM,sDAGpBC,KAAKC,IAAMA,EAEXnB,EAAMW,KAAKC,gBAAgBU,GAAGR,KAAKS,KAAKL,KAAMH,IAGlDS,KAAM,SAASC,GACX,IAAIC,EAASR,KAAKH,QAAQC,QAAQU,QAAU,GAExCA,EAAOC,QACPT,KAAKC,IAAIC,GAAGM,EAAOC,OAAQF,EAAUG,YAGrCF,EAAOG,QACPX,KAAKC,IAAIC,GAAGM,EAAOG,OAAQJ,EAAUK,YAGrCJ,EAAOK,SACPb,KAAKC,IAAIC,GAAGM,EAAOK,QAASN,EAAUO,cAI9CC,MAAO,SAASlB,EAASmB,GACrB,IAAIf,EAAMD,KAAKC,IACXf,EAAUc,KAAKd,QACf+B,EAASjB,KAAKH,QAAQC,QAAQmB,OAElC,IAAKA,IAAWA,EAAOD,GACnB,MAAM,IAAIjB,MAAMjB,EAAMoC,OAAO,uCAAwCF,IAGzE,IAAIG,EAAO,CAACF,EAAOD,IAEfvB,EAAOO,KAAKoB,aAAavB,EAAQJ,KAAMuB,GAEtCnC,EAAEwC,cAAc5B,IACjB0B,EAAKb,KAAKb,GAGVR,EAAgBC,GAChBA,EAAQC,MAAK,WACTc,EAAIE,OAAOmB,MAAMrB,EAAKkB,GACXhC,KAAKU,EAAQ0B,SACbnC,KAAKS,EAAQ2B,UAErBnC,EAAgBH,IACvBA,EAAQI,MAAK,WACTW,EAAIE,OAAOmB,MAAMrB,EAAKkB,GACX7B,KAAKO,EAAQ0B,SACbhC,MAAMM,EAAQ2B,WAKrCC,KAAM,SAAS5B,GACXG,KAAKe,MAAMlB,EAAS,SAGxBY,OAAQ,SAASZ,GACbG,KAAKe,MAAMlB,EAAS,WAGxBc,OAAQ,SAASd,GACbG,KAAKe,MAAMlB,EAAS,WAGxBgB,QAAS,SAAShB,GACdG,KAAKe,MAAMlB,EAAS,cAI5BhB,EAAEc,QAAO,EAAMb,EAAMW,KAAM,CACvBiC,WAAY,CACR5B,QAASN,KA9GrB,CAkHGT,OAAOD,MAAM6C","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.data'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"data.signalr\",\n name: \"SignalR\",\n category: \"framework\",\n depends: [ \"data\" ],\n hidden: true\n };\n\n (function($) {\n var kendo = window.kendo;\n var isFunction = kendo.isFunction;\n\n function isJQueryPromise(promise) {\n return promise && isFunction(promise.done) && isFunction(promise.fail);\n }\n\n function isNativePromise(promise) {\n return promise && isFunction(promise.then) && isFunction(promise.catch);\n }\n\n var transport = kendo.data.RemoteTransport.extend({\n init: function(options) {\n var signalr = options && options.signalr ? options.signalr : {};\n\n var promise = signalr.promise;\n\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n\n if (!isJQueryPromise(promise) && !isNativePromise(promise)) {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n\n this.promise = promise;\n\n var hub = signalr.hub;\n\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n\n if (typeof hub.on != \"function\" || typeof hub.invoke != \"function\") {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n\n this.hub = hub;\n\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n\n push: function(callbacks) {\n var client = this.options.signalr.client || {};\n\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n\n _crud: function(options, type) {\n var hub = this.hub;\n var promise = this.promise;\n var server = this.options.signalr.server;\n\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n\n var args = [server[type]];\n\n var data = this.parameterMap(options.data, type);\n\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n\n if (isJQueryPromise(promise)) {\n promise.done(function() {\n hub.invoke.apply(hub, args)\n .done(options.success)\n .fail(options.error);\n });\n } else if (isNativePromise(promise)) {\n promise.then(function() {\n hub.invoke.apply(hub, args)\n .then(options.success)\n .catch(options.error);\n });\n }\n },\n\n read: function(options) {\n this._crud(options, \"read\");\n },\n\n create: function(options) {\n this._crud(options, \"create\");\n },\n\n update: function(options) {\n this._crud(options, \"update\");\n },\n\n destroy: function(options) {\n this._crud(options, \"destroy\");\n }\n });\n\n $.extend(true, kendo.data, {\n transports: {\n signalr: transport\n }\n });\n\n })(window.kendo.jQuery);\n\n}));\n"]}