{-# LANGUAGE TypeFamilies #-} module Cursor.Simple.Forest ( ForestCursor , makeForestCursor , rebuildForestCursor , FC.drawForestCursor , mapForestCursor , FC.forestCursorListCursorL , FC.forestCursorSelectedTreeL , forestCursorSelectPrevTreeCursor , forestCursorSelectNextTreeCursor , forestCursorSelectFirstTreeCursor , forestCursorSelectLastTreeCursor , forestCursorSelectPrev , forestCursorSelectNext , forestCursorSelectPrevOnSameLevel , forestCursorSelectNextOnSameLevel , forestCursorSelectFirst , forestCursorSelectLast , forestCursorSelectAbove , forestCursorSelectBelowAtPos , forestCursorSelectBelowAtStart , forestCursorSelectBelowAtEnd , FC.forestCursorOpenCurrentForest , FC.forestCursorCloseCurrentForest , FC.forestCursorToggleCurrentForest , FC.forestCursorOpenCurrentForestRecursively , FC.forestCursorToggleCurrentForestRecursively , FC.forestCursorSelection , forestCursorSelectIndex , FC.forestCursorInsertEntireTree , forestCursorInsertAndSelectTreeCursor , FC.forestCursorAppendEntireTree , forestCursorAppendAndSelectTreeCursor , FC.forestCursorInsertTree , FC.forestCursorAppendTree , forestCursorInsertAndSelectTree , forestCursorAppendAndSelectTree , FC.forestCursorInsert , FC.forestCursorAppend , forestCursorInsertAndSelect , forestCursorAppendAndSelect , FC.forestCursorAddChildTreeToNodeAtPos , FC.forestCursorAddChildTreeToNodeAtStart , FC.forestCursorAddChildTreeToNodeAtEnd , FC.forestCursorAddChildToNodeAtPos , FC.forestCursorAddChildToNodeAtStart , FC.forestCursorAddChildToNodeAtEnd , forestCursorRemoveElemAndSelectPrev , forestCursorDeleteElemAndSelectNext , forestCursorRemoveElem , forestCursorDeleteElem , forestCursorRemoveSubTreeAndSelectPrev , forestCursorDeleteSubTreeAndSelectNext , forestCursorRemoveSubTree , forestCursorDeleteSubTree , forestCursorAddRoot , FC.forestCursorSwapPrev , FC.forestCursorSwapNext , forestCursorPromoteElem , forestCursorPromoteSubTree , forestCursorDemoteElem , forestCursorDemoteSubTree , FC.forestCursorDemoteElemUnder , FC.forestCursorDemoteSubTreeUnder , FC.CTree(..) , FC.makeCTree , FC.cTree , FC.rebuildCTree , FC.CForest(..) , FC.makeCForest , FC.cForest , FC.rebuildCForest ) where import Data.Validity.Tree () import Data.List.NonEmpty (NonEmpty) import Data.Tree import qualified Cursor.Forest as FC import Cursor.Simple.Tree import Cursor.Types type ForestCursor a = FC.ForestCursor a a makeForestCursor :: NonEmpty (CTree a) -> ForestCursor a makeForestCursor = FC.makeForestCursor id rebuildForestCursor :: ForestCursor a -> NonEmpty (CTree a) rebuildForestCursor = FC.rebuildForestCursor id mapForestCursor :: (a -> b) -> ForestCursor a -> ForestCursor b mapForestCursor f = FC.mapForestCursor f f forestCursorSelectPrevTreeCursor :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrevTreeCursor = FC.forestCursorSelectPrevTreeCursor id id forestCursorSelectNextTreeCursor :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNextTreeCursor = FC.forestCursorSelectNextTreeCursor id id forestCursorSelectFirstTreeCursor :: ForestCursor a -> ForestCursor a forestCursorSelectFirstTreeCursor = FC.forestCursorSelectFirstTreeCursor id id forestCursorSelectLastTreeCursor :: ForestCursor a -> ForestCursor a forestCursorSelectLastTreeCursor = FC.forestCursorSelectLastTreeCursor id id forestCursorSelectNext :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNext = FC.forestCursorSelectNext id id forestCursorSelectPrev :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrev = FC.forestCursorSelectPrev id id forestCursorSelectNextOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectNextOnSameLevel = FC.forestCursorSelectNextOnSameLevel id id forestCursorSelectPrevOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectPrevOnSameLevel = FC.forestCursorSelectPrevOnSameLevel id id forestCursorSelectFirst :: ForestCursor a -> ForestCursor a forestCursorSelectFirst = FC.forestCursorSelectFirst id id forestCursorSelectLast :: ForestCursor a -> ForestCursor a forestCursorSelectLast = FC.forestCursorSelectLast id id forestCursorSelectAbove :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectAbove = FC.forestCursorSelectAbove id id forestCursorSelectBelowAtPos :: Int -> ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtPos = FC.forestCursorSelectBelowAtPos id id forestCursorSelectBelowAtStart :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtStart = FC.forestCursorSelectBelowAtStart id id forestCursorSelectBelowAtEnd :: ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectBelowAtEnd = FC.forestCursorSelectBelowAtEnd id id forestCursorSelectIndex :: Int -> ForestCursor a -> Maybe (ForestCursor a) forestCursorSelectIndex = FC.forestCursorSelectIndex id id forestCursorInsertAndSelectTreeCursor :: TreeCursor a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelectTreeCursor = FC.forestCursorInsertAndSelectTreeCursor id forestCursorAppendAndSelectTreeCursor :: TreeCursor a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelectTreeCursor = FC.forestCursorAppendAndSelectTreeCursor id forestCursorInsertAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelectTree = FC.forestCursorInsertAndSelectTree id id forestCursorAppendAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelectTree = FC.forestCursorAppendAndSelectTree id id forestCursorInsertAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorInsertAndSelect = FC.forestCursorInsertAndSelect id id forestCursorAppendAndSelect :: a -> ForestCursor a -> ForestCursor a forestCursorAppendAndSelect = FC.forestCursorAppendAndSelect id id forestCursorRemoveElemAndSelectPrev :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorRemoveElemAndSelectPrev = FC.forestCursorRemoveElemAndSelectPrev id forestCursorDeleteElemAndSelectNext :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorDeleteElemAndSelectNext = FC.forestCursorDeleteElemAndSelectNext id forestCursorRemoveElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorRemoveElem = FC.forestCursorRemoveElem id forestCursorDeleteElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorDeleteElem = FC.forestCursorDeleteElem id forestCursorRemoveSubTreeAndSelectPrev :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorRemoveSubTreeAndSelectPrev = FC.forestCursorRemoveSubTreeAndSelectPrev id forestCursorDeleteSubTreeAndSelectNext :: ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a)) forestCursorDeleteSubTreeAndSelectNext = FC.forestCursorDeleteSubTreeAndSelectNext id forestCursorRemoveSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorRemoveSubTree = FC.forestCursorRemoveSubTree id forestCursorDeleteSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a) forestCursorDeleteSubTree = FC.forestCursorDeleteSubTree id forestCursorAddRoot :: ForestCursor a -> a -> TreeCursor a forestCursorAddRoot = FC.forestCursorAddRoot id id forestCursorPromoteElem :: ForestCursor a -> Maybe (ForestCursor a) forestCursorPromoteElem = FC.forestCursorPromoteElem id id forestCursorPromoteSubTree :: ForestCursor a -> Maybe (ForestCursor a) forestCursorPromoteSubTree = FC.forestCursorPromoteSubTree id id forestCursorDemoteElem :: ForestCursor a -> Maybe (ForestCursor a) forestCursorDemoteElem = FC.forestCursorDemoteElem id id forestCursorDemoteSubTree :: ForestCursor a -> Maybe (ForestCursor a) forestCursorDemoteSubTree = FC.forestCursorDemoteSubTree id id