Events.purs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. module PureTabs.Model.Events (
  2. BackgroundEvent(..)
  3. , SidebarEvent(..)
  4. , TabWithGroup(..)
  5. ) where
  6. import Browser.Tabs (Tab, TabId, WindowId)
  7. import Browser.Tabs.OnUpdated (ChangeInfo)
  8. import Data.Generic.Rep (class Generic)
  9. import Data.Generic.Rep.Show (genericShow)
  10. import Data.Maybe (Maybe)
  11. import Data.Show (class Show)
  12. import PureTabs.Model.Group (GroupId)
  13. import Foreign.Class (class Decode, class Encode)
  14. import Foreign.Generic (defaultOptions, genericDecode, genericEncode)
  15. data TabWithGroup
  16. = TabWithGroup Tab (Maybe GroupId)
  17. derive instance genTabWithGroup :: Generic TabWithGroup _
  18. instance showTabWithGroup :: Show TabWithGroup where
  19. show = genericShow
  20. instance encodeTabWithGroup :: Encode TabWithGroup where
  21. encode x = genericEncode (defaultOptions { unwrapSingleConstructors = true }) x
  22. instance decodeTabWithGroup :: Decode TabWithGroup where
  23. decode x = genericDecode (defaultOptions { unwrapSingleConstructors = true }) x
  24. data BackgroundEvent
  25. = BgInitialTabList (Array TabWithGroup)
  26. | BgTabCreated Tab
  27. | BgTabDeleted TabId
  28. | BgTabUpdated TabId ChangeInfo Tab
  29. | BgTabMoved TabId Int Int
  30. | BgTabActivated (Maybe TabId) TabId
  31. | BgTabAttached Tab
  32. | BgTabDetached TabId
  33. | BgGroupDeleted GroupId (Maybe TabId)
  34. derive instance genBackgroundEvent :: Generic BackgroundEvent _
  35. instance showBackgroundEvent :: Show BackgroundEvent where
  36. show = genericShow
  37. data SidebarEvent
  38. = SbDeleteTab TabId
  39. | SbActivateTab TabId
  40. | SbCreateTab (Maybe TabId)
  41. | SbMoveTab TabId Int
  42. | SbDetacheTab
  43. | SbHasWindowId WindowId
  44. | SbSelectedGroup (Array TabId)
  45. | SbDeletedGroup GroupId (Array TabId)
  46. | SbChangeTabGroup TabId (Maybe GroupId)
  47. derive instance genSidebarEvent :: Generic SidebarEvent _
  48. instance showSidebarEvent :: Show SidebarEvent where
  49. show = genericShow