{"version":3,"sources":["../../bower_components/jquery-ajax-unobtrusive/src/jquery.unobtrusive-ajax.js"],"names":["$","getFunction","code","argNames","fn","window","parts","split","length","shift","push","Function","constructor","apply","isMethodProxySafe","method","asyncOnBeforeSend","xhr","setRequestHeader","asyncOnSuccess","element","data","contentType","mode","indexOf","getAttribute","toUpperCase","each","i","update","prepend","append","replaceWith","html","asyncRequest","options","confirm","loading","duration","parseInt","extend","type","undefined","url","cache","toLowerCase","beforeSend","result","arguments","show","complete","hide","success","status","getResponseHeader","error","name","value","$element","is","attr","formdata","FormData","v","file","this","files","n","processData","ajax","validate","form","validationInfo","data_validation","data_click","data_target","document","on","evt","preventDefault","href","target","parents","offset","Math","round","pageX","left","pageY","top","setTimeout","removeData","currentTarget","clickInfo","clickTarget","isCancel","hasClass","action","concat","serializeArray","jQuery"],"mappings":"CAmBC,SAASA,GAKN,QAASC,GAAYC,EAAMC,GAEvB,IADA,GAAIC,GAAKC,OAAQC,GAASJ,GAAQ,IAAIK,MAAK,KACpCH,GAAME,EAAME,QACfJ,EAAKA,EAAGE,EAAMG,QAElB,OAAoB,kBAAT,GACAL,GAEXD,EAASO,KAAKR,GACPS,SAASC,YAAYC,MAAM,KAAMV,IAG5C,QAASW,GAAkBC,GACvB,MAAkB,QAAXA,GAA+B,SAAXA,EAG/B,QAASC,GAAkBC,EAAKF,GACvBD,EAAkBC,IACnBE,EAAIC,iBAAgB,yBAA2BH,GAIvD,QAASI,GAAeC,EAASC,EAAMC,GACnC,GAAIC,IAEqD,IAArDD,EAAYE,QAAO,8BAIvBD,GAAQH,EAAQK,aAAY,mBAAsB,IAAIC,cACtD1B,EAAEoB,EAAQK,aAAY,qBAAsBE,KAAK,SAAUC,EAAGC,GAG1D,OAAQN,GACJ,IAAK,SACDvB,EAAE6B,GAAQC,QAAQT,EAClB,MACJ,KAAK,QACDrB,EAAE6B,GAAQE,OAAOV,EACjB,MACJ,KAAK,eACDrB,EAAE6B,GAAQG,YAAYX,EACtB,MACJ,SACIrB,EAAE6B,GAAQI,KAAKZ,OAM/B,QAASa,GAAad,EAASe,GAC3B,GAAIC,GAASC,EAAStB,EAAQuB,CAG9B,MADAF,EAAUhB,EAAQK,aAAY,uBACdpB,OAAO+B,QAAQA,GAA/B,CAIAC,EAAUrC,EAAEoB,EAAQK,aAAY,sBAChCa,EAAWC,SAASnB,EAAQK,aAAY,8BAAgC,KAAO,EAE/EzB,EAAEwC,OAAOL,GACLM,KAAMrB,EAAQK,aAAY,yBAAwBiB,GAClDC,IAAKvB,EAAQK,aAAY,sBAAqBiB,GAC9CE,MAAyE,UAAjExB,EAAQK,aAAY,oBAAuB,IAAIoB,cACvDC,WAAY,SAAU7B,GAClB,GAAI8B,EAMJ,OALA/B,GAAkBC,EAAKF,GACvBgC,EAAS9C,EAAYmB,EAAQK,aAAY,oBAAqB,QAASZ,MAAMO,EAAS4B,YACvE,IAAXD,GACAV,EAAQY,KAAKX,GAEVS,GAEXG,SAAU,WACNb,EAAQc,KAAKb,GACbrC,EAAYmB,EAAQK,aAAY,uBAAwB,MAAQ,WAAWZ,MAAMO,EAAS4B,YAE9FI,QAAS,SAAU/B,EAAMgC,EAAQpC,GAC7BE,EAAeC,EAASC,EAAMJ,EAAIqC,kBAAiB,iBAAoB,aACvErD,EAAYmB,EAAQK,aAAY,sBAAuB,OAAS,SAAU,QAAQZ,MAAMO,EAAS4B,YAErGO,MAAO,WACHtD,EAAYmB,EAAQK,aAAY,sBAAuB,MAAQ,SAAU,UAAUZ,MAAMO,EAAS4B,cAI1Gb,EAAQd,KAAKX,MAAO8C,KAAM,mBAAoBC,MAAO,mBAErD1C,EAASoB,EAAQM,KAAKf,cACjBZ,EAAkBC,KACnBoB,EAAQM,KAAO,OACfN,EAAQd,KAAKX,MAAO8C,KAAM,yBAA0BC,MAAO1C,IAO/D,IAAI2C,GAAW1D,EAAEoB,EACjB,IAAGsC,EAAUC,GAAE,SAAwC,uBAA5BD,EAASE,KAAI,WAAsC,CAC1E,GAAIC,GAAW,GAAIC,SACnB9D,GAAE2B,KAAKQ,EAAQd,KAAM,SAAUO,EAAGmC,GAC9BF,EAAS9B,OAAOgC,EAAEP,KAAMO,EAAEN,SAE9BzD,EAAA,mBAAsB0D,GAAU/B,KAAK,WACjC,GAAIqC,GAAOC,IACXjE,GAAE2B,KAAKqC,EAAKE,MAAO,SAAUC,EAAGJ,GAC5BF,EAAS9B,OAAOiC,EAAKR,KAAMO,OAGnC/D,EAAEwC,OAAOL,GACLiC,aAAa,EACb9C,aAAa,EACbD,KAAMwC,IAKd7D,EAAEqE,KAAKlC,IAGX,QAASmC,GAASC,GACd,GAAIC,GAAiBxE,EAAEuE,GAAMlD,KAAKoD,EAClC,QAAQD,IAAmBA,EAAeF,UAAYE,EAAeF,WAhIzE,GAAII,GAAa,uBACbC,EAAc,6BACdF,EAAkB,uBAiItBzE,GAAE4E,UAAUC,GAAE,QAAU,oBAAqB,SAAUC,GACnDA,EAAIC,iBACJ7C,EAAa+B,MACTtB,IAAKsB,KAAKe,KACVvC,KAAM,MACNpB,YAIRrB,EAAE4E,UAAUC,GAAE,QAAU,yCAA0C,SAAUC,GACxE,GAAItB,GAAOsB,EAAIG,OAAOzB,KAClByB,EAASjF,EAAE8E,EAAIG,QACfV,EAAOvE,EAAEiF,EAAOC,QAAO,QAAS,IAChCC,EAASF,EAAOE,QAEpBZ,GAAKlD,KAAKqD,IACJlB,KAAMA,EAAO,KAAMC,MAAO2B,KAAKC,MAAMP,EAAIQ,MAAQH,EAAOI,QACxD/B,KAAMA,EAAO,KAAMC,MAAO2B,KAAKC,MAAMP,EAAIU,MAAQL,EAAOM,QAG9DC,WAAW,WACPnB,EAAKoB,WAAWjB,IACjB,KAGP1E,EAAE4E,UAAUC,GAAE,QAAU,+BAAgC,SAAUC,GAC9D,GAAItB,GAAOsB,EAAIc,cAAcpC,KACzByB,EAASjF,EAAE8E,EAAIG,QACfV,EAAOvE,EAAEiF,EAAOC,QAAO,QAAS,GAEpCX,GAAKlD,KAAKqD,EAAYlB,IAAUA,KAAMA,EAAMC,MAAOqB,EAAIc,cAAcnC,YACrEc,EAAKlD,KAAKsD,EAAaM,GAEvBS,WAAW,WACPnB,EAAKoB,WAAWjB,GAChBH,EAAKoB,WAAWhB,IACjB,KAGP3E,EAAE4E,UAAUC,GAAE,SAAW,uBAAwB,SAAUC,GACvD,GAAIe,GAAY7F,EAAEiE,MAAM5C,KAAKqD,OACzBoB,EAAc9F,EAAEiE,MAAM5C,KAAKsD,GAC3BoB,EAAWD,IAAgBA,EAAYE,SAAQ,eAAqDtD,KAAvCoD,EAAYlC,KAAI,kBACjFkB,GAAIC,kBACCgB,GAAazB,EAASL,QAG3B/B,EAAa+B,MACTtB,IAAKsB,KAAKgC,OACVxD,KAAMwB,KAAKlD,QAAU,MACrBM,KAAMwE,EAAUK,OAAMlG,EAAGiE,MAAMkC,uBAGzCC","file":"jquery-ajax.js","sourcesContent":["// Unobtrusive Ajax support library for jQuery\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// @version \r\n// \r\n// Microsoft grants you the right to use these script files for the sole\r\n// purpose of either: (i) interacting through your browser with the Microsoft\r\n// website or online service, subject to the applicable licensing or use\r\n// terms; or (ii) using the files as included with a Microsoft product subject\r\n// to that product's license terms. Microsoft reserves all other rights to the\r\n// files not expressly granted by Microsoft, whether by implication, estoppel\r\n// or otherwise. Insofar as a script file is dual licensed under GPL,\r\n// Microsoft neither took the code under GPL nor distributes it thereunder but\r\n// under the terms set out in this paragraph. All notices and licenses\r\n// below are for informational purposes only.\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global window: false, jQuery: false */\r\n\r\n(function ($) {\r\n var data_click = \"unobtrusiveAjaxClick\",\r\n data_target = \"unobtrusiveAjaxClickTarget\",\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function getFunction(code, argNames) {\r\n var fn = window, parts = (code || \"\").split(\".\");\r\n while (fn && parts.length) {\r\n fn = fn[parts.shift()];\r\n }\r\n if (typeof (fn) === \"function\") {\r\n return fn;\r\n }\r\n argNames.push(code);\r\n return Function.constructor.apply(null, argNames);\r\n }\r\n\r\n function isMethodProxySafe(method) {\r\n return method === \"GET\" || method === \"POST\";\r\n }\r\n\r\n function asyncOnBeforeSend(xhr, method) {\r\n if (!isMethodProxySafe(method)) {\r\n xhr.setRequestHeader(\"X-HTTP-Method-Override\", method);\r\n }\r\n }\r\n\r\n function asyncOnSuccess(element, data, contentType) {\r\n var mode;\r\n\r\n if (contentType.indexOf(\"application/x-javascript\") !== -1) { // jQuery already executes JavaScript for us\r\n return;\r\n }\r\n\r\n mode = (element.getAttribute(\"data-ajax-mode\") || \"\").toUpperCase();\r\n $(element.getAttribute(\"data-ajax-update\")).each(function (i, update) {\r\n var top;\r\n\r\n switch (mode) {\r\n case \"BEFORE\":\r\n $(update).prepend(data);\r\n break;\r\n case \"AFTER\":\r\n $(update).append(data);\r\n break;\r\n case \"REPLACE-WITH\":\r\n $(update).replaceWith(data);\r\n break;\r\n default:\r\n $(update).html(data);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function asyncRequest(element, options) {\r\n var confirm, loading, method, duration;\r\n\r\n confirm = element.getAttribute(\"data-ajax-confirm\");\r\n if (confirm && !window.confirm(confirm)) {\r\n return;\r\n }\r\n\r\n loading = $(element.getAttribute(\"data-ajax-loading\"));\r\n duration = parseInt(element.getAttribute(\"data-ajax-loading-duration\"), 10) || 0;\r\n\r\n $.extend(options, {\r\n type: element.getAttribute(\"data-ajax-method\") || undefined,\r\n url: element.getAttribute(\"data-ajax-url\") || undefined,\r\n cache: (element.getAttribute(\"data-ajax-cache\") || \"\").toLowerCase() === \"true\",\r\n beforeSend: function (xhr) {\r\n var result;\r\n asyncOnBeforeSend(xhr, method);\r\n result = getFunction(element.getAttribute(\"data-ajax-begin\"), [\"xhr\"]).apply(element, arguments);\r\n if (result !== false) {\r\n loading.show(duration);\r\n }\r\n return result;\r\n },\r\n complete: function () {\r\n loading.hide(duration);\r\n getFunction(element.getAttribute(\"data-ajax-complete\"), [\"xhr\", \"status\"]).apply(element, arguments);\r\n },\r\n success: function (data, status, xhr) {\r\n asyncOnSuccess(element, data, xhr.getResponseHeader(\"Content-Type\") || \"text/html\");\r\n getFunction(element.getAttribute(\"data-ajax-success\"), [\"data\", \"status\", \"xhr\"]).apply(element, arguments);\r\n },\r\n error: function () {\r\n getFunction(element.getAttribute(\"data-ajax-failure\"), [\"xhr\", \"status\", \"error\"]).apply(element, arguments);\r\n }\r\n });\r\n\r\n options.data.push({ name: \"X-Requested-With\", value: \"XMLHttpRequest\" });\r\n\r\n method = options.type.toUpperCase();\r\n if (!isMethodProxySafe(method)) {\r\n options.type = \"POST\";\r\n options.data.push({ name: \"X-HTTP-Method-Override\", value: method });\r\n }\r\n\r\n // change here:\r\n // Check for a Form POST with enctype=multipart/form-data\r\n // add the input file that were not previously included in the serializeArray()\r\n // set processData and contentType to false\r\n var $element = $(element);\r\n if ($element.is(\"form\") && $element.attr(\"enctype\") == \"multipart/form-data\") {\r\n var formdata = new FormData();\r\n $.each(options.data, function (i, v) {\r\n formdata.append(v.name, v.value);\r\n });\r\n $(\"input[type=file]\", $element).each(function () {\r\n var file = this;\r\n $.each(file.files, function (n, v) {\r\n formdata.append(file.name, v);\r\n });\r\n });\r\n $.extend(options, {\r\n processData: false,\r\n contentType: false,\r\n data: formdata\r\n });\r\n }\r\n // end change\r\n\r\n $.ajax(options);\r\n }\r\n\r\n function validate(form) {\r\n var validationInfo = $(form).data(data_validation);\r\n return !validationInfo || !validationInfo.validate || validationInfo.validate();\r\n }\r\n\r\n $(document).on(\"click\", \"a[data-ajax=true]\", function (evt) {\r\n evt.preventDefault();\r\n asyncRequest(this, {\r\n url: this.href,\r\n type: \"GET\",\r\n data: []\r\n });\r\n });\r\n\r\n $(document).on(\"click\", \"form[data-ajax=true] input[type=image]\", function (evt) {\r\n var name = evt.target.name,\r\n target = $(evt.target),\r\n form = $(target.parents(\"form\")[0]),\r\n offset = target.offset();\r\n\r\n form.data(data_click, [\r\n { name: name + \".x\", value: Math.round(evt.pageX - offset.left) },\r\n { name: name + \".y\", value: Math.round(evt.pageY - offset.top) }\r\n ]);\r\n\r\n setTimeout(function () {\r\n form.removeData(data_click);\r\n }, 0);\r\n });\r\n\r\n $(document).on(\"click\", \"form[data-ajax=true] :submit\", function (evt) {\r\n var name = evt.currentTarget.name,\r\n target = $(evt.target),\r\n form = $(target.parents(\"form\")[0]);\r\n\r\n form.data(data_click, name ? [{ name: name, value: evt.currentTarget.value }] : []);\r\n form.data(data_target, target);\r\n\r\n setTimeout(function () {\r\n form.removeData(data_click);\r\n form.removeData(data_target);\r\n }, 0);\r\n });\r\n\r\n $(document).on(\"submit\", \"form[data-ajax=true]\", function (evt) {\r\n var clickInfo = $(this).data(data_click) || [],\r\n clickTarget = $(this).data(data_target),\r\n isCancel = clickTarget && (clickTarget.hasClass(\"cancel\") || clickTarget.attr('formnovalidate') !== undefined);\r\n evt.preventDefault();\r\n if (!isCancel && !validate(this)) {\r\n return;\r\n }\r\n asyncRequest(this, {\r\n url: this.action,\r\n type: this.method || \"GET\",\r\n data: clickInfo.concat($(this).serializeArray())\r\n });\r\n });\r\n}(jQuery));\r\n"]}