{-# LANGUAGE PatternSynonyms #-}

module Cursor.Simple.Map.KeyValue
  ( KeyValueCursor
  , pattern KVC.KeyValueCursorKey
  , pattern KVC.KeyValueCursorValue
  , KVC.makeKeyValueCursorKey
  , KVC.makeKeyValueCursorValue
  , rebuildKeyValueCursor
  , KVC.keyValueCursorSelection
  , mapKeyValueCursor
  , keyValueCursorSelectKey
  , keyValueCursorSelectValue
  , keyValueCursorToggleSelected
  , KVC.KeyValueToggle(..)
  ) where

import qualified Cursor.Map.KeyValue as KVC

type KeyValueCursor k v = KVC.KeyValueCursor k v k v

rebuildKeyValueCursor :: KeyValueCursor k v -> (k, v)
rebuildKeyValueCursor = KVC.rebuildKeyValueCursor id id

mapKeyValueCursor ::
     (k -> l) -> (v -> w) -> KeyValueCursor k v -> KeyValueCursor l w
mapKeyValueCursor f g = KVC.mapKeyValueCursor f g f g

keyValueCursorSelectKey :: KeyValueCursor k v -> KeyValueCursor k v
keyValueCursorSelectKey = KVC.keyValueCursorSelectKey id id

keyValueCursorSelectValue :: KeyValueCursor k v -> KeyValueCursor k v
keyValueCursorSelectValue = KVC.keyValueCursorSelectValue id id

keyValueCursorToggleSelected :: KeyValueCursor k v -> KeyValueCursor k v
keyValueCursorToggleSelected = KVC.keyValueCursorToggleSelected id id id id