public ElementType GetElementAtCarretPosition()
    {
        var isLastElement = GetCarretIndex() == _elementsPool.Count;

        return(ElementsService.GetPreviousElementType(
                   _elementsPool, Elements,
                   _editableIndex, isLastElement
                   ));
    }
    public bool AddNewElement(ElementType elementType, bool autoCreate = false)
    {
        var currentIndex  = GetCarretIndex();
        var isLastElement = currentIndex == _elementsPool.Count;

        if (autoCreate && isLastElement == false)
        {
            TextEditorHotkeyController.Instance.MainEdit();
            return(false);
        }

        if ((Elements == null || Elements.Count == 0) && elementType != ElementType.SceneHeading)
        {
            return(false);
        }

        ElementType previousElementType = ElementsService.GetPreviousElementType(
            _elementsPool, Elements,
            _editableIndex, isLastElement
            );

        if (ElementsService.FilterNewElements(elementType, previousElementType) == false)
        {
            return(false);
        }

        if (TextEditorHotkeyController.Instance.ShowOptions)
        {
            TextEditorHotkeyController.Instance.FileMainButtons.SetActive(true);
            TextEditorHotkeyController.Instance.InLineSelection.gameObject.SetActive(false);
        }

        var element = new Element()
        {
            Text        = ElementsService.GetDefaultText(elementType),
            ElementType = elementType,
            Index       = currentIndex,
            IsNew       = true
        };

        Elements.Add(element);
        var el = AddElementInPool(element);

        if (isLastElement == false)
        {
            var newIndex = (_editableIndex + 1);
            el.GameObject.transform.SetSiblingIndex(newIndex);
        }
        else
        {
            MoveCarret(true);
        }
        ElementsService.RecalculateIndexes(_elementsPool, Elements);

        GameService.Instance.InternalWait(() =>
        {
            if (element.ElementType == ElementType.Picture)
            {
                (el as IPictureComponent).AutoSelect();
            }
            else
            {
                (el as ITextComponent).AutoSelect();
            }
            TextEditorHotkeyController.Instance.AppState = AppState.Editing;

            if (isLastElement)
            {
                ScrollController.Instance.ScrollToBottom();
            }
            else
            {
                ScrollController.Instance.KeepElementInView(el.GameObject.GetComponent <RectTransform>());
            }
        });
        return(true);
    }