{"version":3,"file":"index-Br4rT49E.js","sources":["../../../node_modules/form-serialize/index.js"],"sourcesContent":["// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i<elements.length ; ++i) {\n var element = elements[i];\n\n // ingore disabled fields\n if ((!options.disabled && element.disabled) || !element.name) {\n continue;\n }\n // ignore anyhting that is not considered a success field\n if (!k_r_success_contrls.test(element.nodeName) ||\n k_r_submitter.test(element.type)) {\n continue;\n }\n\n var key = element.name;\n var val = element.value;\n\n // we can't just use element.value for checkboxes cause some browsers lie to us\n // they say \"on\" for value when the box isn't checked\n if ((element.type === 'checkbox' || element.type === 'radio') && !element.checked) {\n val = undefined;\n }\n\n // If we want empty elements\n if (options.empty) {\n // for checkbox\n if (element.type === 'checkbox' && !element.checked) {\n val = '';\n }\n\n // for radio\n if (element.type === 'radio') {\n if (!radio_store[element.name] && !element.checked) {\n radio_store[element.name] = false;\n }\n else if (element.checked) {\n radio_store[element.name] = true;\n }\n }\n\n // if options empty is true, continue only if its radio\n if (val == undefined && element.type == 'radio') {\n continue;\n }\n }\n else {\n // value-less fields are ignored unless options.empty is true\n if (!val) {\n continue;\n }\n }\n\n // multi select boxes\n if (element.type === 'select-multiple') {\n val = [];\n\n var selectOptions = element.options;\n var isSelectedOptions = false;\n for (var j=0 ; j<selectOptions.length ; ++j) {\n var option = selectOptions[j];\n var allowedEmpty = options.empty && !option.value;\n var hasValue = (option.value || allowedEmpty);\n if (option.selected && hasValue) {\n isSelectedOptions = true;\n\n // If using a hash serializer be sure to add the\n // correct notation for an array in the multi-select\n // context. Here the name attribute on the select element\n // might be missing the trailing bracket pair. Both names\n // \"foo\" and \"foo[]\" should be arrays.\n if (options.hash && key.slice(key.length - 2) !== '[]') {\n result = serializer(result, key + '[]', option.value);\n }\n else {\n result = serializer(result, key, option.value);\n }\n }\n }\n\n // Serialize if no selected options and options.empty is true\n if (!isSelectedOptions && options.empty) {\n result = serializer(result, key, '');\n }\n\n continue;\n }\n\n result = serializer(result, key, val);\n }\n\n // Check for all empty radio buttons and serialize them with key=\"\"\n if (options.empty) {\n for (var key in radio_store) {\n if (!radio_store[key]) {\n result = serializer(result, key, '');\n }\n }\n }\n\n return result;\n}\n\nfunction parse_keys(string) {\n var keys = [];\n var prefix = /^([^\\[\\]]*)/;\n var children = new RegExp(brackets);\n var match = prefix.exec(string);\n\n if (match[1]) {\n keys.push(match[1]);\n }\n\n while ((match = children.exec(string)) !== null) {\n keys.push(match[1]);\n }\n\n return keys;\n}\n\nfunction hash_assign(result, keys, value) {\n if (keys.length === 0) {\n result = value;\n return result;\n }\n\n var key = keys.shift();\n var between = key.match(/^\\[(.+?)\\]$/);\n\n if (key === '[]') {\n result = result || [];\n\n if (Array.isArray(result)) {\n result.push(hash_assign(null, keys, value));\n }\n else {\n // This might be the result of bad name attributes like \"[][foo]\",\n // in this case the original `result` object will already be\n // assigned to an object literal. Rather than coerce the object to\n // an array, or cause an exception the attribute \"_values\" is\n // assigned as an array.\n result._values = result._values || [];\n result._values.push(hash_assign(null, keys, value));\n }\n\n return result;\n }\n\n // Key is an attribute name and can be assigned directly.\n if (!between) {\n result[key] = hash_assign(result[key], keys, value);\n }\n else {\n var string = between[1];\n // +var converts the variable into a number\n // better than parseInt because it doesn't truncate away trailing\n // letters and actually fails if whole thing is not a number\n var index = +string;\n\n // If the characters between the brackets is not a number it is an\n // attribute name and can be assigned directly.\n if (isNaN(index)) {\n result = result || {};\n result[string] = hash_assign(result[string], keys, value);\n }\n else {\n result = result || [];\n result[index] = hash_assign(result[index], keys, value);\n }\n }\n\n return result;\n}\n\n// Object/hash encoding serializer.\nfunction hash_serializer(result, key, value) {\n var matches = key.match(brackets);\n\n // Has brackets? Use the recursive assignment function to walk the keys,\n // construct any missing objects in the result tree and make the assignment\n // at the end of the chain.\n if (matches) {\n var keys = parse_keys(key);\n hash_assign(result, keys, value);\n }\n else {\n // Non bracket notation can make assignments directly.\n var existing = result[key];\n\n // If the value has been assigned already (for instance when a radio and\n // a checkbox have the same name attribute) convert the previous value\n // into an array before pushing into it.\n //\n // NOTE: If this requirement were removed all hash creation and\n // assignment could go through `hash_assign`.\n if (existing) {\n if (!Array.isArray(existing)) {\n result[key] = [ existing ];\n }\n\n result[key].push(value);\n }\n else {\n result[key] = value;\n }\n }\n\n return result;\n}\n\n// urlform encoding serializer\nfunction str_serialize(result, key, value) {\n // encode newlines as \\r\\n cause the html spec says so\n value = value.replace(/(\\r)?\\n/g, '\\r\\n');\n value = encodeURIComponent(value);\n\n // spaces should be '+' rather than '%20'.\n value = value.replace(/%20/g, '+');\n return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + value;\n}\n\nmodule.exports = serialize;\n"],"names":["k_r_submitter","k_r_success_contrls","brackets","serialize","form","options","result","serializer","hash_serializer","str_serialize","elements","radio_store","i","element","key","val","selectOptions","isSelectedOptions","j","option","allowedEmpty","hasValue","parse_keys","string","keys","prefix","children","match","hash_assign","value","between","index","matches","existing","formSerialize"],"mappings":"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","x_google_ignoreList":[0]}