// Backbone.Syphon, v0.8.0 // ---------------------------------- // // Copyright (c) 2018 Derick Bailey, Muted Solutions, LLC. // Distributed under MIT license // // http://github.com/marionettejs/backbone.syphon !function(a,b){if("function"==typeof define&&define.amd)define(["underscore","backbone","jquery"],function(a,c,d){return b(a,c,d)});else if("undefined"!=typeof exports){var c=require("underscore"),d=require("backbone"),e=require("jquery");module.exports=b(c,d,e)}else b(a._,a.Backbone,a.jQuery)}(this,function(a,b,c){"use strict";var d=b.Syphon,e=b.Syphon={};e.VERSION="0.8.0",e.noConflict=function(){return b.Syphon=d,this},e.ignoredTypes=["button","submit","reset","fieldset"],e.serialize=function(b,d){var e={},h=i(d),k=f(b,h);return a.each(k,function(a){var b=c(a),d=g(b),f=h.keyExtractors.get(d),i=f(b),k=h.inputReaders.get(d),l=k(b);if(h.keyAssignmentValidators.get(d)(b,i,l)){var m=h.keySplitter(i);e=j(e,m,l)}}),e},e.deserialize=function(b,d,e){var h=i(e),j=f(b,h),l=k(h,d);a.each(j,function(a){var b=c(a),d=g(b),e=h.keyExtractors.get(d),f=e(b);h.inputWriters.get(d)(b,l[f])})};var f=function(b,d){var e=h(b);return e=a.reject(e,function(b){var e=g(b),f=d.keyExtractors.get(e),h=f(c(b)),i=a.find(d.ignoredTypes,function(a){return a===e||c(b).is(a)}),j=a.includes(d.include,h),k=a.includes(d.exclude,h);return!j&&(!!d.include||(k||i))})},g=function(a){var b,d=c(a),e=d[0].tagName,f=e;return"input"===e.toLowerCase()&&(b=d.attr("type"),f=b||"text"),"true"===(""+d.attr("contenteditable")).toLowerCase()&&(f="contenteditable"),f.toLowerCase()},h=function(b){return a.isUndefined(b.$el)?c(b).find(":input, [contenteditable]"):b.$(":input, [contenteditable]")},i=function(b){var c=a.clone(b)||{};return c.ignoredTypes=a.clone(e.ignoredTypes),c.inputReaders=c.inputReaders||e.InputReaders,c.inputWriters=c.inputWriters||e.InputWriters,c.keyExtractors=c.keyExtractors||e.KeyExtractors,c.keySplitter=c.keySplitter||e.KeySplitter,c.keyJoiner=c.keyJoiner||e.KeyJoiner,c.keyAssignmentValidators=c.keyAssignmentValidators||e.KeyAssignmentValidators,c},j=function(b,c,d){if(!c)return b;var e=c.shift();return b[e]||(b[e]=a.isArray(e)?[]:{}),0===c.length&&(a.isArray(b[e])?b[e].push(d):b[e]=d),c.length>0&&j(b[e],c,d),b},k=function(b,c,d){var e={};return a.each(c,function(c,f){var g={};d&&(f=b.keyJoiner(d,f)),a.isArray(c)?(f+="[]",g[f]=c):a.isObject(c)?g=k(b,c,f):g[f]=c,a.extend(e,g)}),e},l=e.TypeRegistry=function(){this.registeredTypes={}};l.extend=b.Model.extend,a.extend(l.prototype,{get:function(b){return a.has(this.registeredTypes,b)?this.registeredTypes[b]:this.registeredTypes.default},register:function(a,b){this.registeredTypes[a]=b},registerDefault:function(a){this.registeredTypes.default=a},unregister:function(b){a.has(this.registeredTypes,b)&&delete this.registeredTypes[b]}});var m=e.KeyExtractorSet=l.extend();(e.KeyExtractors=new m).registerDefault(function(a){return a.prop("name")||a.data("name")||""});var n=e.InputReaderSet=l.extend(),o=e.InputReaders=new n;o.registerDefault(function(a){return a.val()}),o.register("contenteditable",function(a){return a.html()}),o.register("checkbox",function(a){return a.prop("indeterminate")?null:a.prop("checked")});var p=e.InputWriterSet=l.extend(),q=e.InputWriters=new p;q.registerDefault(function(a,b){a.val(b)}),q.register("contenteditable",function(a,b){a.html(b)}),q.register("checkbox",function(a,b){null===b?a.prop("indeterminate",!0):a.prop("checked",b)}),q.register("radio",function(b,c){var d=!a.isUndefined(c)&&b.val()===c.toString();b.prop("checked",d)});var r=e.KeyAssignmentValidatorSet=l.extend(),s=e.KeyAssignmentValidators=new r;return s.registerDefault(function(){return!0}),s.register("radio",function(a,b,c){return a.prop("checked")}),e.KeySplitter=function(a){var b,c=a.match(/[^\[\]]+/g);return a.length>1&&a.indexOf("[]")===a.length-2&&(b=c.pop(),c.push([b])),c},e.KeyJoiner=function(a,b){return a+"["+b+"]"},b.Syphon}); //# sourceMappingURL=backbone.syphon.min.map