UNPKG

formap

Version:

HTML forms to data, a better alternative to FormData()

3 lines (2 loc) 2.25 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("maps-diff")):"function"==typeof define&&define.amd?define(["exports","maps-diff"],t):t((e||self).formap={},e.mapsDiff)}(this,function(e,t){var n=function(e){return Object.fromEntries(Array.from(e.keys()).map(function(t){var n=e.getAll(t);return[t,n.length>1?n:e.get(t)]}))},r=function(e){return document.getElementById(e)},o=function(e){return JSON.stringify(n(e))},f=function(e){return o(new FormData(e))},a=Object.fromEntries,i=function(e,t){return a(u(e,t))};function u(e,t){var n=void 0===t?{}:t,r=n.mutator,o=n.append,f=n.prepend;if(!(e&&e instanceof HTMLFormElement))throw new Error("The form element must be an HTMLFormElement.");var a=new Map;f&&(f instanceof Map?f.forEach(function(e,t){a.set(t,e)}):"object"==typeof f&&Object.entries(f).forEach(function(e){a.set(e[0],e[1])}));for(var i=[].concat(e.querySelectorAll(":is(input, select, textarea)[name]:enabled")),u=i.length,s=0;s<u;s++){var l=i[s];if(l&&!["submit","button","reset","file"].includes(l.type.toLowerCase())){var m=l.name,p=c(l),d=a.get(m);null!=d?null!=p&&(Array.isArray(d)?(Array.isArray(p)?d.push.apply(d,p):d.push(p),a.set(m,d)):Array.isArray(p)?a.set(m,[d].concat(p)):a.set(m,[d,p])):a.set(m,p)}}return o&&(o instanceof Map?o.forEach(function(e,t){a.set(t,e)}):"object"==typeof o&&Object.entries(o).forEach(function(e){a.set(e[0],e[1])})),r&&a.forEach(function(e,t){var n=r(t,e);void 0===n?a.delete(t):n!==e&&a.set(t,n)}),a}function c(e){if("getValue"in e&&"function"==typeof e.getValue)return e.getValue();var t=e.value;return e instanceof HTMLSelectElement&&e.multiple&&(t=Array.from(e.selectedOptions).map(function(e){return e.value})),e instanceof HTMLInputElement&&["checkbox","radio"].includes(e.type.toLowerCase())&&(t=e.checked?t:null),t}e.formById=r,e.formDataToJson=o,e.formDataToObject=n,e.formToJson=f,e.formToJsonById=function(e){return f(r(e))},e.formToMap=u,e.formToMapById=function(e,t){return u(r(e),t)},e.formToObject=i,e.formToObjectById=function(e,t){return i(r(e),t)},e.mapToObject=a,Object.keys(t).forEach(function(n){"default"===n||e.hasOwnProperty(n)||Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})}); //# sourceMappingURL=index.umd.js.map