protected override void InputTemplate(OffscreenBuffer screenBuffer) { screenBuffer.WritePrompt(_message); if (_defaultValue.HasValue) { screenBuffer.Write($"({_defaultValue.Value}) "); } var(left, top) = screenBuffer.GetCursorPosition(); var input = _inputBuffer.ToString(); screenBuffer.Write(input); var width = EastAsianWidth.GetWidth(input.Take(_startIndex)) + left; screenBuffer.SetCursorPosition(width % screenBuffer.BufferWidth, top + (width / screenBuffer.BufferWidth)); }