From 9dd3a9b0d2ed2aaf46b89ba90ab514be3ffabc6f Mon Sep 17 00:00:00 2001 From: gkottr <90678291+gkottr@users.noreply.github.com> Date: Wed, 9 Jul 2025 20:32:05 +0300 Subject: [PATCH] Fix #434 Fix wrong tab press handling in demo site converter --- docs/assets/js/converter.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/docs/assets/js/converter.js b/docs/assets/js/converter.js index f5cb09e..2f31998 100644 --- a/docs/assets/js/converter.js +++ b/docs/assets/js/converter.js @@ -1,15 +1,34 @@ -document.getElementById('jstoyopta').addEventListener('keyup', function(){converter(true);}, false); -document.getElementById('yopta').addEventListener('keyup', function(){converter(false);}, false); +const jstoyopta = document.getElementById('jstoyopta'); +const yopta = document.getElementById('yopta'); +jstoyopta.addEventListener('keyup', function(){converter(true);}, false); +yopta.addEventListener('keyup', function(){converter(false);}, false); + +jstoyopta.addEventListener('keydown', onKeyDown); +yopta.addEventListener('keydown', onKeyDown); + + +function onKeyDown(event) { + if (event.key !== 'Tab') return; + + event.preventDefault(); + + const textarea = event.target; + + const start = textarea.selectionStart; + const end = textarea.selectionEnd; + + textarea.value = textarea.value.substring(0, start) + ' ' + textarea.value.substring(end); + + textarea.selectionStart = textarea.selectionEnd = start + 4; +} function converter(lang) { if(lang) { //переводим в йопту - const jstoyopta = document.getElementById('jstoyopta').value; - document.getElementById('yopta').value = window.yopta(jstoyopta, 'js'); + yopta.value = window.yopta(jstoyopta.value, 'js'); } else { //переводим из йопты - const ystojs = document.getElementById('yopta').value; - document.getElementById('jstoyopta').value = window.yopta(ystojs, 'ys'); + jstoyopta.value = window.yopta(yopta.value, 'ys'); } }