packages feed

haskell-halogen-core-0.9.0: haskell-halogen-core.cabal

cabal-version:      3.0
name:               haskell-halogen-core
version:            0.9.0
synopsis:           Haskell port of purescript-halogen library
homepage:           https://github.com/Swordlash/haskell-halogen
license:            Apache-2.0
license-file:       LICENSE
author:             Mateusz Goślinowski
maintainer:         mateusz.goslinowski@gmail.com
category:           Web
extra-source-files: CHANGELOG.md, NOTICE

flag trace-dom
  description: Enable tracing of DOM operations
  default: False
  manual: True

common commons
  build-depends:    
      base >= 4.20 && < 5, 
      free, 
      transformers, 
      mtl, 
      text, 
      protolude, 
      random, 
      time, 
      bytestring, 
      stm, 
      deepseq, 
      unordered-containers, 
      async,
      row-types, 
      hashable, 
      containers, 
      kan-extensions, 
      uuid-types, 
      unliftio, 
      safe-exceptions, 
      clay >= 0.16.0, 
      data-default
  
  default-language: GHC2021
  ghc-options: -Wall -Wextra -Wcompat -Wno-partial-type-signatures -Wterm-variable-capture

  default-extensions:
      RankNTypes
      GeneralizedNewtypeDeriving
      MultiParamTypeClasses
      FunctionalDependencies
      FlexibleContexts
      FlexibleInstances
      UndecidableInstances
      GADTs
      DeriveFunctor
      DerivingStrategies
      NoImplicitPrelude
      KindSignatures
      DataKinds
      OverloadedStrings
      TypeOperators
      LambdaCase
      TypeFamilies
      OverloadedRecordDot
      RecordWildCards
      NamedFieldPuns
      DuplicateRecordFields
      PartialTypeSignatures
      DefaultSignatures
      StandaloneKindSignatures
      NoFieldSelectors
      DerivingVia
      CPP
      StrictData
      RequiredTypeArguments
      ExplicitNamespaces

library
    import: commons

    exposed-modules:
      Clay.Extra.Grid

      Control.Monad.Fork
      Control.Monad.Parallel
      Control.Monad.State.Delayed.Class
      Control.Monad.State.Delayed.Delayer
      Control.Monad.State.Delayed.Trans
      Control.Monad.State.Prim
      Control.Monad.UUID
      Data.Foreign
      Data.MediaType
      Data.NT

      DOM.HTML.Indexed

      Halogen

      Halogen.VDom
      Halogen.Data.Slot

      Halogen.IO.Driver
      Halogen.IO.Driver.Eval
      Halogen.IO.Driver.State
      Halogen.IO.Util

      Halogen.HTML
      Halogen.HTML.Core
      Halogen.HTML.Elements
      Halogen.HTML.Events
      Halogen.HTML.Layout
      Halogen.HTML.Layout.BorderLayout
      Halogen.HTML.Layout.BoxLayout
      Halogen.HTML.Layout.GridLayout
      Halogen.HTML.Layout.GridBagLayout
      Halogen.HTML.Layout.NoLayout
      Halogen.HTML.Properties
      Halogen.HTML.Properties.ARIA

      Halogen.Query
      Halogen.Query.ChildQuery
      Halogen.Query.Event
      Halogen.Query.Input
      Halogen.Query.HalogenM
      Halogen.Query.HalogenQ

      Halogen.VDom.DOM
      Halogen.VDom.DOM.Monad
      Halogen.VDom.DOM.Prop
      Halogen.VDom.Driver
      Halogen.VDom.Machine
      Halogen.VDom.Utils
      Halogen.VDom.Thunk
      Halogen.VDom.Types

      Halogen.Component
      Halogen.Component.Debounced
      Halogen.Subscription

      Halogen.Portal

      Halogen.Svg.Attributes
      Halogen.Svg.Elements
      Halogen.Svg.Indexed

      Web.Clipboard
      Web.Clipboard.ClipboardEvent
      Web.Clipboard.ClipboardEvent.EventTypes

      Web.DOM.Internal.Types
      Web.DOM.Element
      Web.DOM.ParentNode
      Web.Event.Internal.Types
      Web.Event.Event
      Web.HTML.Common
      Web.HTML.Event.DragEvent
      Web.HTML.Event.DragEvent.EventTypes
      Web.HTML.Event.EventTypes
      Web.HTML.HTMLDocument
      Web.HTML.HTMLDocument.ReadyState
      Web.UIEvent.FocusEvent
      Web.UIEvent.FocusEvent.EventTypes
      Web.UIEvent.KeyboardEvent
      Web.UIEvent.KeyboardEvent.EventTypes
      Web.UIEvent.MouseEvent
      Web.UIEvent.MouseEvent.EventTypes
      Web.UIEvent.PointerEvent
      Web.UIEvent.TouchEvent
      Web.UIEvent.WheelEvent
      Web.UIEvent.WheelEvent.EventTypes
      
    other-modules:
      HPrelude
    
    hs-source-dirs:   src

    if arch(javascript)
      js-sources:
        jsbits/monad_dom.js

      ghc-options: -fexpose-all-unfoldings
      
--      if flag(trace-dom)
--        jspp-options: -DHALOGEN_TRACE_DOM

executable halogen-core-prototype
  import: commons
  main-is:          Main.hs
  build-depends:    haskell-halogen-core
  hs-source-dirs:   app

test-suite Halogen-core-test
    import: commons
    type:             exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          Test.hs
    build-depends:    protolude, haskell-halogen-core, hspec