name:                threepenny-gui
version:             0.9.4.2
synopsis:            GUI framework that uses the web browser as a display.
description:
    Threepenny-GUI is a GUI framework that uses the web browser as a display.
    .
    It's very easy to install because everyone has a web browser installed.
    .
    A program written with Threepenny is essentially a small web server that
    displays the user interface as a web page to any browser that connects to it.
    You can freely manipulate the HTML DOM and handle JavaScript events
    from your Haskell code.
    .
    Stability forecast: This is an experimental release! Send me your feedback!
    Significant API changes are likely in future versions.
    .
    NOTE: This library contains examples, but they are not built by default.
    To build and install the example, use the @buildExamples@ flag like this
    .
    @cabal install threepenny-gui -fbuildExamples@

license:             BSD3
license-file:        LICENSE
author:              Heinrich Apfelmus
maintainer:          Heinrich Apfelmus <apfelmus at quantentunnel dot de>
homepage:            http://wiki.haskell.org/Threepenny-gui
bug-reports:         https://github.com/HeinrichApfelmus/threepenny-gui/issues
category:            Web, GUI
build-type:          Simple
cabal-version:       >=1.10
tested-with:
      GHC == 8.0.2
    , GHC == 8.2.2
    , GHC == 8.4.4
    , GHC == 8.6.5
    , GHC == 8.8.4
    , GHC == 8.10.7
    , GHC == 9.2.8
    , GHC == 9.4.7
    , GHC == 9.6.6
    , GHC == 9.8.4
    , GHC == 9.10.1
    , GHC == 9.12.1

extra-source-Files:
      CHANGELOG.md
    , README.md
    , samples/README.md
    , js/*.html
    , js/*.css
    , js/*.js
    , js/lib/*.js

data-dir:           .
data-files:
      samples/static/css/*.css
    , samples/static/css/*.png
    , samples/static/*.html
    , samples/static/*.png
    , samples/static/*.wav


flag buildExamples
    description: Build example executables.
    default:     False
    manual:      True

flag rebug
    description: The library uses some techniques that are highly
                 non-deterministic, for example garbage collection
                 and concurrency.
                 Bugs in these subsystems are harder to find.
                 Activating this flag will expose more of them.
    default:     False
    manual:      True

source-repository head
    type:               git
    location:           git://github.com/HeinrichApfelmus/threepenny-gui.git

library
  hs-source-dirs:    src
  exposed-modules:
    Foreign.JavaScript
    Foreign.RemotePtr
    Graphics.UI.Threepenny
    Graphics.UI.Threepenny.Attributes
    Graphics.UI.Threepenny.Canvas
    Graphics.UI.Threepenny.Core
    Graphics.UI.Threepenny.DragNDrop
    Graphics.UI.Threepenny.Elements
    Graphics.UI.Threepenny.Events
    Graphics.UI.Threepenny.JQuery
    Graphics.UI.Threepenny.SVG
    Graphics.UI.Threepenny.SVG.Attributes
    Graphics.UI.Threepenny.SVG.Elements
    Graphics.UI.Threepenny.Timer
    Graphics.UI.Threepenny.Widgets
    Reactive.Threepenny
  other-modules:
    Foreign.JavaScript.CallBuffer
    Foreign.JavaScript.EventLoop
    Foreign.JavaScript.Include
    Foreign.JavaScript.Marshal
    Foreign.JavaScript.Resources
    Foreign.JavaScript.Server
    Foreign.JavaScript.Types
    Graphics.UI.Threepenny.Internal
    Reactive.Threepenny.Memo
    Reactive.Threepenny.Monads
    Reactive.Threepenny.PulseLatch
    Reactive.Threepenny.Types
    Paths_threepenny_gui
  other-extensions: CPP
  cpp-options:      -DCABAL
  if flag(rebug)
      cpp-options:  -DREBUG
      ghc-options:  -O2
  build-depends:
      base                   >= 4.8   && < 4.22
    , aeson                  (>= 0.7 && < 0.10) || == 0.11.* || (>= 1.0 && < 2.3)
    , async                  >= 2.0    && < 2.3
    , bytestring             >= 0.9.2  && < 0.13
    , containers             >= 0.4.2  && < 0.8
    , data-default           >= 0.5.0  && < 0.8
    , deepseq                >= 1.3.0  && < 1.6
    , exceptions             >= 0.6    && < 0.11
    , filepath               >= 1.3.0  && < 1.6.0
    , file-embed             >= 0.0.10 && < 0.1
    , hashable               >= 1.2.0  && < 1.6
    , safe                   == 0.3.*
    , snap-server            >= 0.9.0  && < 1.2
    , snap-core              >= 0.9.0  && < 1.1
    , stm                    >= 2.2    && < 2.6
    , template-haskell       >= 2.7.0  && < 2.24
    , text                   >= 0.11   && < 2.2
    , transformers           >= 0.3.0  && < 0.7
    , unordered-containers   == 0.2.*
    , websockets             (>= 0.8    && < 0.12.5) || (> 0.12.5.0 && < 0.14)
    , websockets-snap        >= 0.8    && < 0.11
    , vault                  >= 0.3    && < 0.4
    , vector                 >= 0.10   && < 0.14
  if impl(ghc >= 8.0)
      ghc-options: -Wcompat -Wnoncanonical-monad-instances
  default-language: Haskell2010

Executable threepenny-examples-bartab
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
    else
        buildable: False
    main-is:           BarTab.hs
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-buttons
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
                          ,filepath
    else
        buildable: False
    main-is:           Buttons.hs
    other-modules:     Paths_threepenny_gui, Paths
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-canvas
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,filepath
                          ,threepenny-gui
    else
        buildable: False
    main-is:           Canvas.hs
    other-modules:     Paths_threepenny_gui, Paths
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-chat
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
                          ,filepath
                          ,time
    else
        buildable: False
    main-is:           Chat.hs
    other-modules:     Paths_threepenny_gui, Paths, Data.List.Extra
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-crud
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,containers
                          ,threepenny-gui
    else
        buildable: False
    main-is:           CRUD.hs
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-currencyconverter
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
                          ,safe
    else
        buildable: False
    main-is:           CurrencyConverter.hs
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-dragndropexample
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
                          ,filepath
    else
        buildable: False
    main-is:           DragNDropExample.hs
    other-modules:     Paths_threepenny_gui, Paths
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-drummachine
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
                          ,filepath
    else
        buildable: False
    main-is:           DrumMachine.hs
    other-modules:     Paths_threepenny_gui, Paths
    hs-source-dirs:    samples
    default-language: Haskell2010

Executable threepenny-examples-svg
    if flag(buildExamples)
        cpp-options:       -DCABAL
        build-depends:     base                      >= 4     && < 5
                          ,threepenny-gui
    else
        buildable: False
    main-is:           Svg.hs
    hs-source-dirs:    samples
    default-language: Haskell2010