InputDebugEvent.fromTuiEvent constructor

InputDebugEvent.fromTuiEvent(
  1. TuiEvent event
)

Implementation

factory InputDebugEvent.fromTuiEvent(TuiEvent event) {
  return switch (event) {
    TerminalFocusEvent(:final focused) => InputDebugEvent(
      kind: 'focus',
      summary: focused ? 'window focus in' : 'window focus out',
    ),
    KeyEvent() => InputDebugEvent(kind: 'key', summary: _describeKey(event)),
    TextInputEvent(:final text) => InputDebugEvent(
      kind: 'text',
      summary: '${text.length} chars',
    ),
    InputBatch(:final key, :final committedText) => InputDebugEvent(
      kind: 'batch',
      summary: [
        if (key != null) _describeKey(key),
        if (committedText != null) '"$committedText"',
      ].join(' '),
    ),
    TextCompositionEvent(:final kind, :final text) => InputDebugEvent(
      kind: 'composition',
      summary: text == null ? kind.name : '${kind.name}:${text.length} chars',
    ),
    PasteEvent(:final text) => InputDebugEvent(
      kind: 'paste',
      summary: '${text.length} chars',
    ),
    ResizeEvent(:final size) => InputDebugEvent(
      kind: 'resize',
      summary: '${size.cols}x${size.rows}',
      resizeSize: size,
    ),
    MouseEvent(:final kind, :final button, :final col, :final row) =>
      InputDebugEvent(
        kind: 'mouse',
        summary: '${kind.name}:${button.name}@$col,$row',
      ),
    SignalEvent(:final signal) => InputDebugEvent(
      kind: 'signal',
      summary: signal.name,
    ),
  };
}