{"version":3,"file":"Form.js","mappings":"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","sources":["webpack://formla/webpack/universalModuleDefinition","webpack://formla/./node_modules/extract-files/lib/extractFiles.js","webpack://formla/./node_modules/extract-files/lib/index.js","webpack://formla/./node_modules/extract-files/lib/ReactNativeFile.js","webpack://formla/webpack/bootstrap","webpack://formla/webpack/runtime/define property getters","webpack://formla/webpack/runtime/hasOwnProperty shorthand","webpack://formla/webpack/runtime/make namespace object","webpack://formla/./src/utils.js","webpack://formla/./src/Errors.js","webpack://formla/./src/http.js","webpack://formla/./src/Form.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"formla\"] = factory();\n\telse\n\t\troot[\"formla\"] = factory();\n})(self, () => {\nreturn ","'use strict'\n\nexports.__esModule = true\nexports.extractFiles = extractFiles\n\nvar _ReactNativeFile = require('./ReactNativeFile')\n\nfunction extractFiles(value, path) {\n  if (path === void 0) {\n    path = ''\n  }\n\n  var clone\n  var files = new Map()\n\n  function addFile(paths, file) {\n    var storedPaths = files.get(file)\n    if (storedPaths) storedPaths.push.apply(storedPaths, paths)\n    else files.set(file, paths)\n  }\n\n  if (\n    (typeof File !== 'undefined' && value instanceof File) ||\n    (typeof Blob !== 'undefined' && value instanceof Blob) ||\n    value instanceof _ReactNativeFile.ReactNativeFile\n  ) {\n    clone = null\n    addFile([path], value)\n  } else {\n    var prefix = path ? path + '.' : ''\n    if (typeof FileList !== 'undefined' && value instanceof FileList)\n      clone = Array.prototype.map.call(value, function(file, i) {\n        addFile(['' + prefix + i], file)\n        return null\n      })\n    else if (Array.isArray(value))\n      clone = value.map(function(child, i) {\n        var result = extractFiles(child, '' + prefix + i)\n        result.files.forEach(addFile)\n        return result.clone\n      })\n    else if (value && value.constructor === Object) {\n      clone = {}\n\n      for (var i in value) {\n        var result = extractFiles(value[i], '' + prefix + i)\n        result.files.forEach(addFile)\n        clone[i] = result.clone\n      }\n    } else clone = value\n  }\n\n  return {\n    clone: clone,\n    files: files\n  }\n}\n","'use strict'\n\nexports.__esModule = true\nexports.ReactNativeFile = exports.extractFiles = void 0\n\nvar _extractFiles = require('./extractFiles')\n\nexports.extractFiles = _extractFiles.extractFiles\n\nvar _ReactNativeFile = require('./ReactNativeFile')\n\nexports.ReactNativeFile = _ReactNativeFile.ReactNativeFile\n","'use strict'\n\nexports.__esModule = true\nexports.ReactNativeFile = void 0\n\nvar ReactNativeFile = function ReactNativeFile(_ref) {\n  var uri = _ref.uri,\n    name = _ref.name,\n    type = _ref.type\n  this.uri = uri\n  this.name = name\n  this.type = type\n}\n\nexports.ReactNativeFile = ReactNativeFile\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// @flow\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport function hasOwn (obj: Object, key: string): boolean %checks {\n    return hasOwnProperty.call(obj, key)\n}\n\nexport function isFile(val: mixed): boolean %checks {\n    return !!val && (val instanceof Blob);\n}\n\nexport function clone(obj: any): any {\n    if (isArr(obj)) {\n        return obj.map(clone);\n    }\n    if (obj === null || obj === undefined) {\n        return null;\n    }\n    if (isFile(obj) || ['number', 'string', 'boolean'].includes(typeof obj)) {\n        return obj;\n    }\n    if (isObj(obj)) {\n        let target = {};\n\n        Object.keys(obj).forEach((key) => target[key] = clone(obj[key]));\n\n        return target;\n    }\n}\n\nexport function emptyValue(original: mixed): Array<any> | {} | '' | null {\n    if (original instanceof Array) {\n        return [];\n    }\n    if (typeof original === 'object') {\n        return {};\n    }\n    if (typeof original === 'string') {\n        return '';\n    }\n    return null;\n}\n\nexport function isObj(value: mixed): boolean %checks {\n    return value !== null && typeof value === 'object';\n}\n\nexport function isArr(value: mixed): %checks {\n    return value instanceof Array;\n}\n\nexport function isNil(value: mixed): %checks {\n    return value == null;\n}\n\nexport function isFunc(value: mixed): %checks {\n    return value instanceof Function;\n}\n\nexport function isStr(value: mixed): %checks {\n    return typeof value === 'string';\n}\n\nexport function escapeRegExp(string: string) {\n    return string.replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&');\n}\n\nexport function containsFile(obj: any): boolean {\n    if (isArr(obj)) {\n        for (let i = 0; i < obj.length; i++) {\n            if (obj[i] instanceof File) {\n                return true;\n            }\n            if (isObj(obj[i])) {\n                return containsFile(obj[i]);\n            }\n        }\n    } else {\n        for (let key in obj) {\n            if (obj[key] instanceof File) {\n                return true;\n            }\n            if (isObj(obj[key]) && containsFile(obj[key])) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\n\nexport function arrayToObject(array: any[]): { [string]: any } {\n    let target = {};\n\n    array.forEach((item, index) => {\n        target[index] = item;\n    });\n\n    return target;\n}\n\nexport function isInViewport(el: Element) {\n    const boundingBox = el.getBoundingClientRect();\n    // $FlowFixMe\n    return boundingBox.top >= 0 && boundingBox.bottom <= (window.innerHeight || window.document.documentElement.clientHeight);\n}\n","// @flow\nimport { escapeRegExp, isArr, isInViewport, isNil } from \"./utils\";\n\ntype ErrorValue = string | Array<string>;\nexport type ErrorValues = { [string]: ErrorValue };\n\nclass Errors {\n\n    errors: ErrorValues;\n    elements: Array<{ key: string | RegExp, el: Element }>;\n\n    /**\n     * Create a new Errors instance.\n     */\n    constructor() {\n        this.errors = {};\n        this.elements = [];\n    }\n\n    /**\n     * Determine if an errors exists for the given field.\n     *\n     * @param {string|RegExp} field\n     */\n    has(field: string | RegExp): boolean {\n        if (field instanceof RegExp) {\n            return Object.keys(this.errors).some(key => field.test(key));\n        }\n        return this.errors.hasOwnProperty(field);\n    }\n\n    /**\n     * Determine if we have any errors.\n     */\n    any(): boolean {\n        return Object.keys(this.errors).length > 0;\n    }\n\n    /**\n     * Retrieve the error message for a field.\n     *\n     * @param {string} field\n     */\n    getFirst(field: string, matchWildCards: boolean = true): ?string {\n        let error = this.get(field, matchWildCards);\n        if (error) {\n            if (isArr(error)) {\n                return error.length ? error[0] : null;\n            } else {\n                return error || null;\n            }\n        }\n    }\n\n    get(field: string, matchWildCards: boolean = true) {\n        if (field.includes('*') && matchWildCards) {\n            const regExpStr = field.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n                .replace('*', '(.*)');\n            const regExp = new RegExp(regExpStr);\n            let errors = [];\n            Object.keys(this.errors).forEach((key) => {\n                if (regExp.test(key)) {\n                    const keyErrors = this.errors[key];\n                    if (isArr(keyErrors)) {\n                        errors = errors.concat(keyErrors);\n                    } else {\n                        errors.push(keyErrors);\n                    }\n                }\n            });\n            return errors;\n        }\n        return this.errors[field];\n    }\n\n    /**\n     * Add a new error message if one doesn't already exist.\n     *\n     * @param {string} field\n     * @param error\n     * @param force\n     */\n    add(field: string, error: ErrorValue, force: boolean = false) {\n        if (!this.has(field) || force) {\n            this.errors[field] = error;\n        }\n    }\n\n    /**\n     * Record the new errors.\n     *\n     * @param {object} errors\n     * @param timeout\n     */\n    record(errors: ErrorValues, timeout: ?(false | number) = 3000) {\n        this.errors = errors;\n        if (timeout) {\n            window.setTimeout(() => {\n                this.clear();\n            }, timeout);\n        }\n    }\n\n    /**\n     * Clear one or all error fields.\n     *\n     * @param {string|null} field\n     */\n    clear(field: ?string) {\n        if (field) {\n            const { [field]: _, ...rest } = this.errors;\n            this.errors = rest;\n\n            return;\n        }\n\n        this.errors = {};\n    }\n\n    addElement(key: string | RegExp | string[], el: Element) {\n        if (isArr(key)) {\n            key.forEach(field => this.addElement(field, el));\n        } else {\n            this.elements.push({ key, el });\n        }\n    }\n\n    removeElement(element: Element) {\n        this.elements = this.elements.filter(({ el }) => el !== element);\n    }\n\n    removeElementKey(field: string | RegExp | string[]) {\n        if (isArr(field)) {\n            field.forEach(key => this.removeElementKey(key));\n        } else {\n            this.elements = this.elements.filter(({ key }) => key !== field);\n        }\n    }\n\n    hasElements(): boolean {\n        return !!this.elements.length;\n    }\n\n    scrollToFirst(options: ?boolean | {\n        behavior?: ('auto' | 'instant' | 'smooth'),\n        block?: ('start' | 'center' | 'end' | 'nearest'),\n        inline?: ('start' | 'center' | 'end' | 'nearest'),\n    } = null) {\n        options = isNil(options) ? { behavior: 'smooth', inline: 'center' } : options;\n\n        const element = this.elements.find(({ key, el }) => {\n            let rx: RegExp;\n            if (key instanceof RegExp) {\n                rx = key;\n            } else {\n                let expression = escapeRegExp(key);\n                rx = new RegExp(expression.replace('*', '.*'));\n            }\n\n            if (Object.keys(this.errors).some(key => rx.test(key))) {\n                return true;\n            }\n        });\n\n        if (element && !isInViewport(element.el)) {\n            element.el.scrollIntoView(options);\n        }\n    }\n}\n\nexport default Errors;\n","// @flow\nimport type { Method } from './flow';\nimport type { Data } from \"./Form\";\n\ntype Options = {\n    method: Method,\n    url: string,\n}\n\nexport default function http(method: Method, url: string, data: FormData | Data, options: Options) {\n    let xhr = new XMLHttpRequest();\n\n    let response = new Promise<XMLHttpRequest>((resolve, reject) => {\n        xhr.onload = () => {\n            if (xhr.status >= 200 && xhr.status < 300) {\n                resolve(xhr);\n            } else {\n                reject(xhr);\n            }\n        };\n        xhr.onerror = () => reject(xhr);\n    });\n\n    xhr.open(method, url);\n    if (data instanceof FormData) {\n        xhr.setRequestHeader('Content-Type', 'multipart/form-data');\n        xhr.send(data);\n    } else {\n        xhr.setRequestHeader('Content-Type', 'application/json');\n        xhr.send(JSON.stringify(data));\n    }\n\n    return response;\n}","// @flow\nimport { extractFiles } from 'extract-files';\nimport type { ErrorValues } from './Errors';\nimport Errors from './Errors';\nimport type { Method } from './flow';\nimport http from './http';\nimport { arrayToObject, clone, containsFile, emptyValue, hasOwn, isArr, isFile, isNil, isObj, isStr, isFunc } from './utils';\n\ntype PrimitiveFormValue = string | number | boolean | null | typeof undefined;\n\ntype ScalarFormValue = PrimitiveFormValue | Blob | File;\n\ntype FormValue = ScalarFormValue | Array<?FormValue> | { [string]: ?FormValue };\n\nexport type Data = { [string]: FormValue };\n\ntype DataCb = () => Data;\n\ntype Options = {\n    method: Method,\n    baseUrl: string,\n    url: string,\n    query: string,\n    graphql: string,\n    sendWith: (method: Method, url: string, data: FormData | Data, options: Options) => Promise<any>,\n    useJson: boolean,\n    strictMode: boolean,\n    isValidationError: ({ status: number }) => boolean,\n    formatData: (Data) => Data,\n    formatErrorResponse: (any) => ErrorValues,\n    timeout: false | number,\n    autoRemoveError: boolean,\n    clear: boolean,\n    quiet: boolean,\n    clone: boolean,\n    addAppendToDataCallback: boolean,\n}\n\ntype PartialOptions = $Shape<Options>;\n\nfunction set(obj: FormValue, keys: number|string|string[], value: FormValue) {\n    if (isStr(keys) || (typeof keys === 'number')) {\n        keys = (''+keys).split('.');\n    }\n\n    let key = keys.shift();\n\n    if (!isObj(obj) || isFile(obj)) {\n        return;\n    }\n\n    if (!keys.length) {\n        if (isArr(obj)) {\n            obj[+key] = value;\n        } else {\n            obj[key] = value;\n        }\n    } else {\n        if (!hasOwn(obj, key)) {\n            if (isArr(obj)) {\n                obj[+key] = key === '0' ? [] : {};\n            } else {\n                obj[key] = key === '0' ? [] : {};\n            }\n        }\n        if (isArr(obj)) {\n            set(obj[+key], keys, value);\n        } else {\n            set(obj[key], keys, value);\n        }\n    }\n}\n\nfunction get(obj: FormValue, keys: string|string[]): FormValue {\n    if (isStr(keys)) {\n        keys = keys.split('.');\n    }\n\n    let key = keys.shift();\n\n    if (!isObj(obj) || isFile(obj) || !hasOwn(obj, key)) {\n        return undefined;\n    }\n\n    let result: FormValue;\n\n    if (isArr(obj)) {\n        result = obj[+key];\n    } else if (isObj(obj) && !isFile(obj)) {\n        result = obj[key];\n    } else {\n        result = undefined;\n    }\n\n    if (!keys.length) {\n        return result;\n    }\n    get(result, keys);\n}\n\nfunction parseOptions(method: ?(Method | PartialOptions), url: ?(string | PartialOptions), options: ?PartialOptions): PartialOptions {\n    method = method ? (isObj(method) ? method : { method }) : {};\n    url = url ? (isObj(url) ? url : { url }) : {};\n    options = options || {};\n\n    return {\n        ...options,\n        ...url,\n        ...method,\n    }\n}\n\nfunction flattenToQueryParams(data: Data | Array<FormValue>, prefix: string = ''): Array<[ string, string | Blob | File ]> {\n    let params = [];\n\n    if (isArr(data)) {\n        data.forEach((item, index) => {\n            let paramKey = `${prefix}[${index}]`;\n\n            if (isObj(item) && !isFile(item)) {\n                params = params.concat(flattenToQueryParams(item, paramKey));\n                return;\n            }\n\n            params.push([paramKey, isFile(item) ? item : formValueToString(item)]);\n        })\n    } else {\n        Object.keys(data).forEach(key => {\n            let item = data[key];\n\n            let paramKey = prefix ? `${prefix}[${key}]` : '' + key;\n\n            if (isObj(item) && !isFile(item)) {\n                params = params.concat(flattenToQueryParams(item, paramKey));\n                return;\n            }\n\n            params.push([paramKey, isFile(item) ? item : formValueToString(item)]);\n        });\n    }\n\n    return params;\n}\n\nfunction formValueToString(value: PrimitiveFormValue): string {\n    if (typeof value === 'boolean') {\n        return ''+(+value);\n    }\n    if (typeof value === 'number') {\n        return value.toString();\n    }\n    return value || '';\n}\n\nfunction bubbleError(error: Error | Object): Promise<Object> {\n    if (error instanceof Error) {\n        throw error;\n    }\n    return Promise.reject(error);\n}\n\nfunction isValidErrorObject(errors) {\n    return !errors ||\n        typeof errors !== 'object' ||\n        !Object.keys(errors).length ||\n        Object.values(errors).some(error => {\n            if (isArr(error)) {\n                return error.some(message => !isStr(message));\n            }\n            return !isStr(error);\n        });\n}\n\nclass Form {\n\n    _errors: Errors;\n\n    _data: Data;\n    _dataCb: ?DataCb;\n    _originalData: Data;\n    _originalConstantData: Data;\n    _options: Options;\n\n    static defaultOptions: Options = {\n        // The default method type used by the submit method\n        method: 'post',\n\n        // If set any relative urls will be appended to the baseUrl\n        baseUrl: '',\n\n        // The url to submit the form\n        url: '',\n\n        // The endpoint to use for all graphql queries\n        graphql: 'graphql',\n\n        query: '',\n\n        // A callback to implement custom HTTP logic.\n        // It is recommended to use this option so the form can utilise your HTTP library.\n        // The callback should return a promise that the form can use to handle the response.\n        sendWith: http,\n\n        // Set to true if you want the form to submit the data as a json object.\n        // This will pass the data as a JavaScript object to the sendWith callback so it is up to you to stringify it for your HTTP library.\n        // If the data contains a File or Blob object the data will be a FormData object regardless of this option (unless strictMode is true).\n        useJson: false,\n\n        // If set to true the form will use follow the `useJson` option even if the data contains non JSONable values (including files).\n        strictMode: false,\n\n        // The status code for which the form should handle validation errors.\n        isValidationError: ({ status }) => status === 422,\n\n        // A callback to format the data before sending it.\n        formatData: (data) => data,\n\n        // A callback that should turn the error response into an object of field names and their validation errors.\n        formatErrorResponse: (response) => {\n            let data = response.data || response.response;\n            if (typeof data === 'string') {\n                try {\n                    data = JSON.parse(data);\n                } catch (e) {\n                    throw new Error('Unable to find errors in the response');\n                }\n            }\n            let errors: ErrorValues = data.errors;\n            if (isValidErrorObject(errors)) {\n                throw new Error('Unable to find errors in the response');\n            }\n            return errors;\n        },\n\n        // The number of milliseconds to wait before clearing the error messages.\n        // When timeout is false the error messages will stay indefinitely.\n        timeout: false,\n\n        // When set to true the errors for a field will be cleared when that field's value is updated.\n        autoRemoveError: true,\n\n        // When set to true, the data will be reverted to it's original values after a successful request.\n        clear: true,\n\n        // When set to true, no errors will be recorded.\n        quiet: false,\n\n        // If clone is set to false any nested objects and arrays will be stored in the form by reference.\n        clone: true,\n\n        // If the form is called with a callback constructor then any data added\n        // later will be included when the form is reset. Set this to false to\n        // have the form reset using just the callback.\n        addAppendToDataCallback: true,\n    };\n\n    static setOptions = function (options: Options) {\n        Form.defaultOptions = {\n            ...Form.defaultOptions,\n            ...options\n        };\n    };\n\n    constructor(data: Data|DataCb, options: ?Options) {\n        this.setOptions(options);\n\n        if (isFunc(data)) {\n            this._dataCb = data;\n            data = data();\n        }\n\n        this._originalData = {};\n        this._originalConstantData = {};\n        this._data = {};\n\n        // $FlowFixMe\n        this.append(data, undefined, false, false);\n\n        this._errors = new Errors();\n    }\n\n    setOptions(options: ?Options) {\n        this._options = this._options || Form.defaultOptions;\n        if (options) {\n            this._options = {\n                ...this._options,\n                ...options,\n            }\n        }\n    }\n\n    append(key: string | Data, value: FormValue, constant: ?boolean = false, addToDataCallback: ?boolean = true): Form {\n        if (this._dataCb && !constant && this._options.addAppendToDataCallback && addToDataCallback) {\n            const originalCb = this._dataCb;\n            this._dataCb = () => {\n                const data = originalCb();\n                if (isObj(key)) {\n                    return {\n                        ...data,\n                        ...key\n                    };\n                }\n                return {\n                    ...data,\n                    [key]: value,\n                };\n            }\n        }\n\n        if (isObj(key)) {\n            Object.keys(key).forEach(field => {\n                this.append(field, key[field], constant, false);\n            });\n            return this;\n        }\n\n        value = this.parseData(value);\n        if (constant) {\n            set(this._originalConstantData, key, value);\n        } else {\n            set(this._originalData, key, this.parseData(value));\n        }\n        if (!constant) {\n            set(this._data, key, value);\n            this.defineProperty(key);\n        } else {\n            Object.defineProperty(\n                this,\n                key,\n                {\n                    get: () => undefined,\n                    set: () => {\n                        throw new Error(`The \"${key}\" value has been set as constant and cannot be modified`);\n                    }\n                }\n            );\n        }\n\n        return this;\n    }\n\n    defineProperty(key: string) {\n        Object.defineProperty(\n            this,\n            key,\n            {\n                configurable: true,\n                enumerable: true,\n                get: () => get(this._data, key),\n                set: (newValue: FormValue) => {\n                    this.setData(key, newValue);\n                }\n            }\n        );\n    }\n\n    constantData(key: string | Data, value: FormValue): Form {\n        return this.append(key, value, true, false);\n    }\n\n    getData(): Data {\n        return {\n            ...this._data,\n            ...this._originalConstantData,\n        }\n    }\n\n    setData(key: string, value: FormValue) {\n        set(this._data, key, value);\n        if (this._options.autoRemoveError) {\n            this._errors.clear(key);\n        }\n    }\n\n    errors(): Errors {\n        return this._errors;\n    }\n\n    reset(): Form {\n        const originalData = this._dataCb ? this._dataCb() : this._originalData;\n\n        for (let field in this._data) {\n            // $FlowFixMe\n            delete this[field];\n        }\n\n        this._originalData = {};\n        this._data = {};\n\n        this.append(originalData, undefined, false, false);\n\n        this._errors.clear();\n\n        return this;\n    }\n\n    clear(field: string): Form {\n        if (hasOwn(this, field)) {\n            set(this._data, field, emptyValue(get(this._data, field)));\n        }\n        return this;\n    }\n\n    parseData(data: FormValue): FormValue {\n        return this._options.clone ? clone(data) : data;\n    }\n\n    addFileFromEvent(event: Event | DragEvent, key: ?string): Form {\n        let node = event.target;\n        if (!(node instanceof HTMLInputElement)) {\n            throw new Error('Incompatible event target, must be of type HTMLInputElement');\n        }\n        if (!key) {\n            key = node.name;\n        }\n        if (key in this && (node.value !== '')) {\n            if (event instanceof DragEvent) {\n                this.setData(key, event.dataTransfer && event.dataTransfer.files.length && event.dataTransfer.files[0]);\n            } else {\n                this.setData(key, node.files && node.files.length && node.files[0]);\n            }\n            node.value = '';\n        }\n        return this;\n    }\n\n    post(url: string | Options, options: ?Options): Promise<any> {\n        return this.submit('post', url, options);\n    }\n\n    put(url: string | Options, options: ?Options): Promise<any> {\n        return this.submit('put', url, options);\n    }\n\n    patch(url: string | Options, options: ?Options): Promise<any> {\n        return this.submit('patch', url, options);\n    }\n\n    delete(url: string | Options, options: ?Options): Promise<any> {\n        return this.submit('delete', url, options);\n    }\n\n    get(url: string | Options, options: ?Options): Promise<any> {\n        return this.submit('get', url, options);\n    }\n\n    graphql(query: string, options: ?Options): Promise<any> {\n        options = options || {};\n        const originalFormatDataCallback = options.formatData || this._options.formatData;\n\n        options.url = options.graphql || this._options.graphql;\n        options.query = query;\n        if (typeof options.useJson === 'undefined') {\n            options.useJson = !this.hasFile();\n        }\n\n        options.formatData = (data) => {\n            data = originalFormatDataCallback ? originalFormatDataCallback(data) : data;\n            const operations = {\n                query,\n                variables: data,\n            };\n\n            if (!this.hasFile()) {\n                return operations;\n            }\n            const { clone, files } = extractFiles(data);\n            operations.variables = clone;\n            return {\n                operations: JSON.stringify(operations),\n                map: JSON.stringify(arrayToObject(Array.from(files.values()))),\n                ...arrayToObject(Array.from(files.keys())),\n            };\n        };\n        return this.post(options);\n    }\n\n    submit(method: Method | Options, url: ?string | Options, options: ?Options): Promise<any> {\n        options = parseOptions(method, url, options);\n        const requestOptions = {\n            ...this._options,\n            ...options,\n        };\n\n        let formData, data = requestOptions.formatData(this.getData());\n        if (this.shouldConvertToFormData(requestOptions)) {\n            formData = new FormData();\n\n            let params = flattenToQueryParams(data);\n\n            params.forEach(([key, param]) => {\n                formData.append(key, param);\n            });\n\n            data = formData;\n        }\n\n        let httpAdapter = requestOptions.sendWith;\n\n        const finalUrl = this.buildBaseUrl(requestOptions);\n        delete requestOptions.baseUrl; // This is a reserved key by axios so it complains if we pass it\n\n        return httpAdapter(requestOptions.method, finalUrl, data, requestOptions).then(response => {\n            if (requestOptions.isValidationError(response)) {\n                this.onFail(response, requestOptions);\n            } else {\n                this.onSuccess(requestOptions);\n            }\n            return response;\n        }).catch(error => {\n            if (requestOptions.isValidationError(error)) {\n                this.onFail(error, requestOptions);\n            }\n            return bubbleError(error);\n        });\n    }\n\n    shouldConvertToFormData(options: ?Options) {\n        options = options || this._options;\n        if (options.strictMode) {\n            return !options.useJson;\n        }\n        return !options.useJson || this.hasFile();\n    }\n\n    hasFile(): boolean {\n        return containsFile(this.getData());\n    }\n\n    onSuccess(options: ?Options) {\n        options = options || this._options;\n        if (options.clear) {\n            this.reset();\n        }\n    }\n\n    onFail(error: XMLHttpRequest, options: ?Options) {\n        options = options || this._options;\n        if (!options.quiet) {\n            let errors = options.formatErrorResponse(error);\n            this._errors.record(errors, options.timeout);\n            if (this._errors.hasElements()) {\n                this._errors.scrollToFirst();\n            }\n        }\n    }\n\n    buildBaseUrl(options: ?Options) {\n        options = options || this._options;\n        if (options.url.includes('://')) {\n            return options.url;\n        }\n        let baseUrl = options.baseUrl;\n        let relativeUrl = options.url;\n\n        baseUrl = baseUrl.replace(/\\/+$/g, '');\n        relativeUrl = relativeUrl.replace(/^\\/+/g, '');\n\n        return `${baseUrl}/${relativeUrl}`;\n    }\n\n    makeUrl(options: ?Options): string {\n        let url = this.buildBaseUrl(options);\n        let queryStart = url.includes('?') ? '&' : '?';\n        let fullUrl = url + queryStart;\n        let properties = [];\n        let data = this.getData();\n\n        let params = flattenToQueryParams(data);\n\n        params.forEach(([key, item]) => {\n            if (isFile(item)) {\n                throw new Error('Cannot convert file to a string');\n            }\n\n            properties.push(key + (isNil(item) ? '' : `=${item}`));\n        });\n        return fullUrl + properties.join('&');\n    }\n\n    addElement(key: string, el: HTMLElement) {\n        this._errors.addElement(key, el);\n    }\n\n    removeElement(el: HTMLElement) {\n        this._errors.removeElement(el);\n    }\n\n    removeElementKey(key: string) {\n        this._errors.removeElementKey(key);\n    }\n}\n\n\nexport default Form;\n"],"names":["hasOwnProperty","Object","prototype","hasOwn","obj","key","call","isFile","val","Blob","clone","isArr","map","undefined","includes","isObj","target","keys","forEach","emptyValue","original","Array","value","isNil","isFunc","Function","isStr","escapeRegExp","string","replace","containsFile","i","length","File","arrayToObject","array","item","index","isInViewport","el","boundingBox","getBoundingClientRect","top","bottom","window","innerHeight","document","documentElement","clientHeight","Errors","constructor","_defineProperty","errors","elements","has","field","RegExp","some","test","any","getFirst","matchWildCards","error","get","regExpStr","regExp","keyErrors","concat","push","add","force","record","timeout","setTimeout","clear","_","rest","addElement","removeElement","element","filter","removeElementKey","hasElements","scrollToFirst","options","behavior","inline","find","rx","expression","scrollIntoView","http","method","url","data","xhr","XMLHttpRequest","response","Promise","resolve","reject","onload","status","onerror","open","FormData","setRequestHeader","send","JSON","stringify","extractFiles","set","split","shift","result","parseOptions","flattenToQueryParams","prefix","params","paramKey","formValueToString","toString","bubbleError","Error","isValidErrorObject","values","message","Form","setOptions","_dataCb","_originalData","_originalConstantData","_data","append","_errors","_options","defaultOptions","constant","addToDataCallback","addAppendToDataCallback","originalCb","parseData","defineProperty","configurable","enumerable","newValue","setData","constantData","getData","autoRemoveError","reset","originalData","addFileFromEvent","event","node","HTMLInputElement","name","DragEvent","dataTransfer","files","post","submit","put","patch","delete","graphql","query","originalFormatDataCallback","formatData","useJson","hasFile","operations","variables","from","requestOptions","formData","shouldConvertToFormData","param","httpAdapter","sendWith","finalUrl","buildBaseUrl","baseUrl","then","isValidationError","onFail","onSuccess","catch","strictMode","quiet","formatErrorResponse","relativeUrl","makeUrl","queryStart","fullUrl","properties","join","_Form","parse","e"],"sourceRoot":""}