UNPKG

formap

Version:

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

3 lines (2 loc) 1.94 kB
export*from"maps-diff";var e=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)]}))},t=function(e){return document.getElementById(e)},n=function(t){return JSON.stringify(e(t))},r=function(e){return n(new FormData(e))},o=function(e){return r(t(e))},a=Object.fromEntries,u=function(e,t){return a(f(e,t))},c=function(e,n){return u(t(e),n)},i=function(e,n){return f(t(e),n)};function f(e,t){var n=void 0===t?{}:t,r=n.mutator,o=n.append,a=n.prepend;if(!(e&&e instanceof HTMLFormElement))throw new Error("The form element must be an HTMLFormElement.");var u=new Map;a&&(a instanceof Map?a.forEach(function(e,t){u.set(t,e)}):"object"==typeof a&&Object.entries(a).forEach(function(e){u.set(e[0],e[1])}));for(var c=[].concat(e.querySelectorAll(":is(input, select, textarea)[name]:enabled")),i=c.length,f=0;f<i;f++){var l=c[f];if(l&&!["submit","button","reset","file"].includes(l.type.toLowerCase())){var m=l.name,p=s(l),y=u.get(m);null!=y?null!=p&&(Array.isArray(y)?(Array.isArray(p)?y.push.apply(y,p):y.push(p),u.set(m,y)):Array.isArray(p)?u.set(m,[y].concat(p)):u.set(m,[y,p])):u.set(m,p)}}return o&&(o instanceof Map?o.forEach(function(e,t){u.set(t,e)}):"object"==typeof o&&Object.entries(o).forEach(function(e){u.set(e[0],e[1])})),r&&u.forEach(function(e,t){var n=r(t,e);void 0===n?u.delete(t):n!==e&&u.set(t,n)}),u}function s(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}export{t as formById,n as formDataToJson,e as formDataToObject,r as formToJson,o as formToJsonById,f as formToMap,i as formToMapById,u as formToObject,c as formToObjectById,a as mapToObject}; //# sourceMappingURL=index.module.js.map