{"version":3,"file":"Form.C6T6XSom.js","sources":["../../../../../../src/lib/form/FormButton.svelte","../../../../../../node_modules/@sveltejs/kit/src/runtime/app/forms.js","../../../../../../src/lib/form/Form.svelte"],"sourcesContent":["\n\n\n\t{#if $loading}\n\t\t\"Načítání\"\n\t{:else}\n\t\t{#if icon}\n\t\t\t\"Šipka\"\n\t\t{/if}\n\t\t\n\t{/if}\n\n","import * as devalue from 'devalue';\nimport { DEV } from 'esm-env';\nimport { invalidateAll } from './navigation.js';\nimport { applyAction } from '../client/client.js';\n\nexport { applyAction };\n\n/**\n * Use this function to deserialize the response from a form submission.\n * Usage:\n *\n * ```js\n * import { deserialize } from '$app/forms';\n *\n * async function handleSubmit(event) {\n * const response = await fetch('/form?/action', {\n * method: 'POST',\n * body: new FormData(event.target)\n * });\n *\n * const result = deserialize(await response.text());\n * // ...\n * }\n * ```\n * @template {Record | undefined} Success\n * @template {Record | undefined} Failure\n * @param {string} result\n * @returns {import('@sveltejs/kit').ActionResult}\n */\nexport function deserialize(result) {\n\tconst parsed = JSON.parse(result);\n\tif (parsed.data) {\n\t\tparsed.data = devalue.parse(parsed.data);\n\t}\n\treturn parsed;\n}\n\n/**\n * Shallow clone an element, so that we can access e.g. `form.action` without worrying\n * that someone has added an `` (https://github.com/sveltejs/kit/issues/7593)\n * @template {HTMLElement} T\n * @param {T} element\n * @returns {T}\n */\nfunction clone(element) {\n\treturn /** @type {T} */ (HTMLElement.prototype.cloneNode.call(element));\n}\n\n/**\n * This action enhances a `
` element that otherwise would work without JavaScript.\n *\n * The `submit` function is called upon submission with the given FormData and the `action` that should be triggered.\n * If `cancel` is called, the form will not be submitted.\n * You can use the abort `controller` to cancel the submission in case another one starts.\n * If a function is returned, that function is called with the response from the server.\n * If nothing is returned, the fallback will be used.\n *\n * If this function or its return value isn't set, it\n * - falls back to updating the `form` prop with the returned data if the action is one same page as the form\n * - updates `$page.status`\n * - resets the `` element and invalidates all data in case of successful submission with no redirect response\n * - redirects in case of a redirect response\n * - redirects to the nearest error page in case of an unexpected error\n *\n * If you provide a custom function with a callback and want to use the default behavior, invoke `update` in your callback.\n * @template {Record | undefined} Success\n * @template {Record | undefined} Failure\n * @param {HTMLFormElement} form_element The form element\n * @param {import('@sveltejs/kit').SubmitFunction} submit Submit callback\n */\nexport function enhance(form_element, submit = () => {}) {\n\tif (DEV && clone(form_element).method !== 'post') {\n\t\tthrow new Error('use:enhance can only be used on fields with method=\"POST\"');\n\t}\n\n\t/**\n\t * @param {{\n\t * action: URL;\n\t * invalidateAll?: boolean;\n\t * result: import('@sveltejs/kit').ActionResult;\n\t * reset?: boolean\n\t * }} opts\n\t */\n\tconst fallback_callback = async ({\n\t\taction,\n\t\tresult,\n\t\treset = true,\n\t\tinvalidateAll: shouldInvalidateAll = true\n\t}) => {\n\t\tif (result.type === 'success') {\n\t\t\tif (reset) {\n\t\t\t\t// We call reset from the prototype to avoid DOM clobbering\n\t\t\t\tHTMLFormElement.prototype.reset.call(form_element);\n\t\t\t}\n\t\t\tif (shouldInvalidateAll) {\n\t\t\t\tawait invalidateAll();\n\t\t\t}\n\t\t}\n\n\t\t// For success/failure results, only apply action if it belongs to the\n\t\t// current page, otherwise `form` will be updated erroneously\n\t\tif (\n\t\t\tlocation.origin + location.pathname === action.origin + action.pathname ||\n\t\t\tresult.type === 'redirect' ||\n\t\t\tresult.type === 'error'\n\t\t) {\n\t\t\tapplyAction(result);\n\t\t}\n\t};\n\n\t/** @param {SubmitEvent} event */\n\tasync function handle_submit(event) {\n\t\tconst method = event.submitter?.hasAttribute('formmethod')\n\t\t\t? /** @type {HTMLButtonElement | HTMLInputElement} */ (event.submitter).formMethod\n\t\t\t: clone(form_element).method;\n\t\tif (method !== 'post') return;\n\n\t\tevent.preventDefault();\n\n\t\tconst action = new URL(\n\t\t\t// We can't do submitter.formAction directly because that property is always set\n\t\t\tevent.submitter?.hasAttribute('formaction')\n\t\t\t\t? /** @type {HTMLButtonElement | HTMLInputElement} */ (event.submitter).formAction\n\t\t\t\t: clone(form_element).action\n\t\t);\n\n\t\tconst form_data = new FormData(form_element);\n\n\t\tif (DEV && clone(form_element).enctype !== 'multipart/form-data') {\n\t\t\tfor (const value of form_data.values()) {\n\t\t\t\tif (value instanceof File) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Your form contains fields, but is missing the necessary `enctype=\"multipart/form-data\"` attribute. This will lead to inconsistent behavior between enhanced and native forms. For more details, see https://github.com/sveltejs/kit/issues/9819.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst submitter_name = event.submitter?.getAttribute('name');\n\t\tif (submitter_name) {\n\t\t\tform_data.append(submitter_name, event.submitter?.getAttribute('value') ?? '');\n\t\t}\n\n\t\tconst controller = new AbortController();\n\n\t\tlet cancelled = false;\n\t\tconst cancel = () => (cancelled = true);\n\n\t\tconst callback =\n\t\t\t(await submit({\n\t\t\t\taction,\n\t\t\t\tcancel,\n\t\t\t\tcontroller,\n\t\t\t\tformData: form_data,\n\t\t\t\tformElement: form_element,\n\t\t\t\tsubmitter: event.submitter\n\t\t\t})) ?? fallback_callback;\n\t\tif (cancelled) return;\n\n\t\t/** @type {import('@sveltejs/kit').ActionResult} */\n\t\tlet result;\n\n\t\ttry {\n\t\t\tconst response = await fetch(action, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\taccept: 'application/json',\n\t\t\t\t\t'x-sveltekit-action': 'true'\n\t\t\t\t},\n\t\t\t\tcache: 'no-store',\n\t\t\t\tbody: form_data,\n\t\t\t\tsignal: controller.signal\n\t\t\t});\n\n\t\t\tresult = deserialize(await response.text());\n\t\t\tif (result.type === 'error') result.status = response.status;\n\t\t} catch (error) {\n\t\t\tif (/** @type {any} */ (error)?.name === 'AbortError') return;\n\t\t\tresult = { type: 'error', error };\n\t\t}\n\n\t\tcallback({\n\t\t\taction,\n\t\t\tformData: form_data,\n\t\t\tformElement: form_element,\n\t\t\tupdate: (opts) =>\n\t\t\t\tfallback_callback({\n\t\t\t\t\taction,\n\t\t\t\t\tresult,\n\t\t\t\t\treset: opts?.reset,\n\t\t\t\t\tinvalidateAll: opts?.invalidateAll\n\t\t\t\t}),\n\t\t\t// @ts-expect-error generic constraints stuff we don't care about\n\t\t\tresult\n\t\t});\n\t}\n\n\t// @ts-expect-error\n\tHTMLFormElement.prototype.addEventListener.call(form_element, 'submit', handle_submit);\n\n\treturn {\n\t\tdestroy() {\n\t\t\t// @ts-expect-error\n\t\t\tHTMLFormElement.prototype.removeEventListener.call(form_element, 'submit', handle_submit);\n\t\t}\n\t};\n}\n","\n\n {\n\t\tlet loaded = false\n\t\tsetTimeout(() => {\n\t\t\tif (!loaded) $loading = true\n\t\t}, 50)\n\n\t\treturn async ({ result, update }) => {\n\t\t\t$loading = false\n\t\t\tloaded = true\n\n\t\t\tif (noScrollReset) goto($page.url.href, { noScroll: true })\n\t\t\tif (updatePage) update({ reset })\n\t\t\tif (['success', 'redirect'].includes(result.type)) dispatch('success', result)\n\t\t\tif (result.type === 'failure') $fail = result\n\t\t}\n\t}}\n>\n\t\n\n"],"names":["ctx","create_if_block_1","attr","img","img_src_value","insert_hydration","target","anchor","button","button_class_value","current","dirty","cls","$$props","submit","disabled","formaction","icon","wrapText","loading","getContext","type","shape","animation","deserialize","result","parsed","devalue.parse","clone","element","enhance","form_element","fallback_callback","action","reset","shouldInvalidateAll","invalidateAll","applyAction","handle_submit","event","_a","_b","form_data","submitter_name","_c","_d","controller","cancelled","callback","response","error","opts","form","autocomplete","updatePage","noScrollReset","formData","writable","dispatch","createEventDispatcher","fail","handleSubmit","$formData","setContext","loaded","set_store_value","$loading","update","goto","$page","$fail"],"mappings":"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","x_google_ignoreList":[1]}