{"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]}