/**
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Copyright (c) KALEIDOS INC
 */

/**
 * Insert typed plain text
 *
 * @see https://w3c.github.io/input-events/#interface-InputEvent
 * @param {InputEvent} event
 * @param {TextEditor} editor
 * @param {SelectionController} selectionController
 */
export function insertText(event, editor, selectionController) {
  event.preventDefault();
  if (selectionController.isCollapsed) {
    if (selectionController.isTextFocus) {
      return selectionController.insertText(event.data);
    } else if (selectionController.isLineBreakFocus) {
      return selectionController.replaceLineBreak(event.data);
    }
  } else {
    if (selectionController.isMultiParagraph) {
      return selectionController.replaceParagraphs(event.data);
    } else if (selectionController.isMultiInline) {
      return selectionController.replaceInlines(event.data);
    } else if (selectionController.isTextSame) {
      return selectionController.replaceText(event.data);
    }
  }
}