From dbc5cd1f71a469f7719a0c96b6cc591145ce70d8 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 16 Mar 2026 10:27:49 +0000
Subject: [PATCH 1/2] Initial plan
From 6dc0d0df591f1d462224eb323e0c4b293dd80ced Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 16 Mar 2026 10:30:59 +0000
Subject: [PATCH 2/2] Add drag and drop file support to the input textarea
Co-authored-by: c6-dev <31777460+c6-dev@users.noreply.github.com>
---
wasm/index.html | 39 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
diff --git a/wasm/index.html b/wasm/index.html
index 69cd927..540751a 100644
--- a/wasm/index.html
+++ b/wasm/index.html
@@ -103,6 +103,12 @@
textarea:focus { outline: none; border-color: #4a90e2; }
+ #input-area.drag-over {
+ border-color: #4a90e2;
+ background: #eef4fd;
+ outline: 2px dashed #4a90e2;
+ }
+
.btn-row {
display: flex;
flex-wrap: wrap;
@@ -165,7 +171,7 @@
OpenAPI 3.0 → Swagger 2.0 Converter
-
+
@@ -232,6 +238,37 @@ OpenAPI 3.0 → Swagger 2.0 Converter
fileInput.value = '';
});
+ // Drag and drop onto the input textarea
+ inputArea.addEventListener('dragover', function(e) {
+ e.preventDefault();
+ inputArea.classList.add('drag-over');
+ });
+
+ inputArea.addEventListener('dragleave', function(e) {
+ if (e.relatedTarget === null || !inputArea.contains(e.relatedTarget)) {
+ inputArea.classList.remove('drag-over');
+ }
+ });
+
+ inputArea.addEventListener('drop', function(e) {
+ e.preventDefault();
+ inputArea.classList.remove('drag-over');
+ const file = e.dataTransfer.files[0];
+ if (!file) return;
+ const name = file.name.toLowerCase();
+ if (!name.endsWith('.yaml') && !name.endsWith('.yml') && !name.endsWith('.json')) {
+ showError('Unsupported file type. Please drop a .yaml, .yml, or .json file.');
+ return;
+ }
+ const reader = new FileReader();
+ reader.onload = function(ev) {
+ inputArea.value = ev.target.result;
+ clearError();
+ };
+ reader.onerror = function() { showError('Failed to read file.'); };
+ reader.readAsText(file);
+ });
+
// Convert
convertBtn.addEventListener('click', function() {
clearError();