Path: blob/master/javascript/edit-order.js
3055 views
/* alt+left/right moves text in prompt */12function keyupEditOrder(event) {3if (!opts.keyedit_move) return;45let target = event.originalTarget || event.composedPath()[0];6if (!target.matches("*:is([id*='_toprow'] [id*='_prompt'], .prompt) textarea")) return;7if (!event.altKey) return;89let isLeft = event.key == "ArrowLeft";10let isRight = event.key == "ArrowRight";11if (!isLeft && !isRight) return;12event.preventDefault();1314let selectionStart = target.selectionStart;15let selectionEnd = target.selectionEnd;16let text = target.value;17let items = text.split(",");18let indexStart = (text.slice(0, selectionStart).match(/,/g) || []).length;19let indexEnd = (text.slice(0, selectionEnd).match(/,/g) || []).length;20let range = indexEnd - indexStart + 1;2122if (isLeft && indexStart > 0) {23items.splice(indexStart - 1, 0, ...items.splice(indexStart, range));24target.value = items.join();25target.selectionStart = items.slice(0, indexStart - 1).join().length + (indexStart == 1 ? 0 : 1);26target.selectionEnd = items.slice(0, indexEnd).join().length;27} else if (isRight && indexEnd < items.length - 1) {28items.splice(indexStart + 1, 0, ...items.splice(indexStart, range));29target.value = items.join();30target.selectionStart = items.slice(0, indexStart + 1).join().length + 1;31target.selectionEnd = items.slice(0, indexEnd + 2).join().length;32}3334event.preventDefault();35updateInput(target);36}3738addEventListener('keydown', (event) => {39keyupEditOrder(event);40});414243