{"version":3,"sources":["jquery.data-remote.js"],"names":["$","fn","dataRemote","successCallback","$target","options","response","source","undefined","template","html","$template","find","hide","debug","handlebars","Handlebars","length","compile","validPlacements","placementIsValid","indexOf","placement","errorCallback","error","debounce","func","wait","immediate","timeout","_len","arguments","args","Array","_key","context","this","later","apply","callNow","clearTimeout","setTimeout","fetch","url","settings","$element","element","target","loaderImg","prepend","ajax","data","type","dataType","cache","success","call","complete","status","_error","opts","defaults","eventType","oneAndDone","debounceEvents","before","each","idx","extend","hasAttribute","callback","evt","preventDefault","name","value","method","output","window","console","log"],"mappings":"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","file":"jquery.data-remote.min.js","sourcesContent":["/**\n * jquery-data-remote\n *\n * @see {@link https://github.com/codfish/jquery-data-remote}\n *\n * jQuery plugin that simplifies the common task of making api/remote requests\n * and injecting the response to the page. Optionally leverages js templating\n * engines. Inpired by ruby on rails' [unobtrusive scripting adapter for\n * jQuery](https://github.com/rails/jquery-ujs).\n */\n$.fn.dataRemote = function dataRemote() {\n var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n /**\n * Default success callback for ajax requests.\n *\n * Handles hiding of loader image, debugging (if option is set),\n * and handling the ajax requests' response (levering handlebars if option\n * is set or handlebars template is found inside the target element).\n *\n * @param {jQuery} $target - jquery object containing the target element for the ajax response\n * @param {object} options - plugin options set during instantiation\n * @param {object} response - data response from the ajax request\n */\n function successCallback($target, options, response) {\n var source = undefined;\n var template = undefined;\n var html = undefined;\n var $template = undefined;\n\n $target.find('.loader-image').hide();\n\n if (options.debug) {\n $.fn.dataRemote.debug($target, response);\n }\n\n // Use handlebars if the option is set to true *or* if a handlebars template is found\n if (options.handlebars !== false && typeof Handlebars !== 'undefined' || $target.find('[type=\"text/x-handlebars-template\"]').length) {\n $template = options.template ? $(options.template) : $target.find('[type=\"text/x-handlebars-template\"]');\n source = $template.html();\n template = Handlebars.compile(source);\n html = template(response);\n } else {\n html = response;\n }\n\n // use proper jQuery method based on append option\n // if append == true, append results to target element,\n // or else replace inner html with results\n var validPlacements = ['html', 'append', 'prepend', 'after', 'before'];\n var placementIsValid = validPlacements.indexOf(options.placement) !== -1;\n if (!placementIsValid) {\n return;\n }\n $target[options.placement](html);\n }\n\n /**\n * Default error callback for ajax requests.\n *\n * Hides the loader image, triggers debugging if it's turned on.\n *\n * @param {jQuery} $target - Target element for the ajax response.\n * @param {object} options - Plugin options set during instantiation.\n * @param {object} response - Data response from the ajax request.\n * @param {string} error - Textual portion of the HTTP status, i.e. \"Not Found\"\n * @return {undefined}\n */\n function errorCallback($target, options, response, error) {\n $target.find('.loader-image').hide();\n\n if (options.debug) {\n $.fn.dataRemote.debug($target, response, error);\n }\n }\n\n /**\n * Private helper method for debounce\n *\n * @param {function} func - Function to debounce.\n * @param {integer} wait - Amount of time to wait between events.\n * @param {boolean} [immediate] - Cancels the debounce if True.\n * @return {function} Function with debounce wrapper.\n */\n function debounce(func, wait, immediate) {\n var timeout = undefined;\n return function debounced() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var context = this;\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n\n /**\n * Private helper method for making the ajax request.\n *\n * @param {object} url - request url.\n * @param {object} settings - additional settings for the request.\n * @param {jQuery} settings.element - jQuery object containing the current data remote element.\n * @param {object} settings.options - data remote plugin options for current data remote element.\n * @param {jQuery} settings.$target - jQuery object where response will be injected.\n * @return {undefined}\n */\n function fetch(url, settings) {\n var $element = settings.element;\n var $target = settings.target;\n var options = settings.options;\n\n // display loader image while retrieving content\n if (options.loaderImg) {\n $target.prepend('\\n