{ dispatch("delete", model); show = false; }} />
{#if edit} {$i18n.t("Edit Arena Model")} {:else} {$i18n.t("Add Arena Model")} {/if}
{ submitHandler(); }} >
{ const files = e.target.files ?? []; let reader = new FileReader(); reader.onload = (event) => { let originalImageUrl = `${event.target.result}`; const img = new Image(); img.src = originalImageUrl; img.onload = function () { const canvas = document.createElement( "canvas", ); const ctx = canvas.getContext("2d"); // Calculate the aspect ratio of the image const aspectRatio = img.width / img.height; // Calculate the new width and height to fit within 250x250 let newWidth, newHeight; if (aspectRatio > 1) { newWidth = 250 * aspectRatio; newHeight = 250; } else { newWidth = 250; newHeight = 250 / aspectRatio; } // Set the canvas size canvas.width = 250; canvas.height = 250; // Calculate the position to center the image const offsetX = (250 - newWidth) / 2; const offsetY = (250 - newHeight) / 2; // Draw the image on the canvas ctx.drawImage( img, offsetX, offsetY, newWidth, newHeight, ); // Get the base64 representation of the compressed image const compressedSrc = canvas.toDataURL( "image/webp", 0.8, ); // Display the compressed image profileImageUrl = compressedSrc; e.target.files = null; }; }; if ( files.length > 0 && [ "image/gif", "image/webp", "image/jpeg", "image/png", ].includes(files[0]["type"]) ) { reader.readAsDataURL(files[0]); } }} />
{$i18n.t("Name")}
{$i18n.t("ID")}
{$i18n.t("Description")}


{$i18n.t("Models")}
{#if modelIds.length > 0}
{#each modelIds as modelId, modelIdx}
{$models.find( (model) => model.id === modelId, )?.name}
{/each}
{:else}
{$i18n.t( "Leave empty to include all models or select specific models", )}
{/if}

{#if edit} {/if}