31 lines
920 B
JavaScript
31 lines
920 B
JavaScript
const codeEditor = document.getElementById('content');
|
|
const lineCounter = document.getElementById('lines');
|
|
|
|
let lineCountCache = 0;
|
|
|
|
// Update line counter
|
|
function updateLineCounter() {
|
|
const lineCount = codeEditor.value.split('\n').length;
|
|
|
|
if (lineCountCache !== lineCount) {
|
|
const outarr = Array.from({length: lineCount}, (_, index) => index + 1);
|
|
lineCounter.value = outarr.join('\n');
|
|
}
|
|
|
|
lineCountCache = lineCount;
|
|
}
|
|
|
|
codeEditor.addEventListener('input', updateLineCounter);
|
|
|
|
codeEditor.addEventListener('keydown', (e) => {
|
|
if (e.key === 'Tab') {
|
|
e.preventDefault();
|
|
|
|
const {value, selectionStart, selectionEnd} = codeEditor;
|
|
codeEditor.value = `${value.slice(0, selectionStart)}\t${value.slice(selectionEnd)}`;
|
|
codeEditor.setSelectionRange(selectionStart + 1, selectionStart + 1);
|
|
updateLineCounter();
|
|
}
|
|
});
|
|
|
|
updateLineCounter();
|