├── .gitignore ├── LICENSE ├── README.md ├── package.json ├── packages.dhall ├── spago.dhall ├── src ├── Proact.purs └── Proact │ ├── DOM.js │ ├── DOM.purs │ ├── DOM │ └── Props.purs │ ├── Event.purs │ └── Event │ ├── Feed.js │ ├── Feed.purs │ ├── Series.purs │ ├── Signal.purs │ └── Single.purs └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /bower_components/ 2 | /node_modules/ 3 | /.pulp-cache/ 4 | /output/ 5 | /generated-docs/ 6 | /.psc-package/ 7 | /.psc* 8 | /.purs* 9 | /.psa* 10 | /.spago 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Jon Alvart 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Proact 2 | 3 | ## Table of Contents 4 | 5 | 6 | 7 | * [Introduction](#introduction) 8 | * [Installation](#installation) 9 | * [Building](#building) 10 | * [Examples](#examples) 11 | 12 | 13 | 14 | ## Introduction 15 | 16 | Proact is a reactive framework that communicates with Facebook's [React](https://reactjs.org) library through commands expressed as Free programs and extensible effects. These interactions provide access to a global single state that is composable via profunctor lenses. 17 | 18 | Proact enables the development of robust real-world Web Applications by achieving the following goals: 19 | 20 | - **Integration with React**. Purescript's community is relatively small and while very dedicated and creative, chances are it won't be able to offer the same repertoire of GUI components that the React community showcases. Furthermore, the ability of React to enhance the semantic value of HTML code certainly gives elegance to GUI development. For example, React components encapsulate a lot of imperative low-level JavaScript code and provide a clean declarative interface with expressive tags and properties. An application written in Proact may include any React component, provided an appropriate Purescript wrapper exists or is written for it. 21 | - **Aspect Oriented Programming**. Proact represents [cross-cutting concerns](https://en.wikipedia.org/wiki/Cross-cutting_concern) as extensible effects that a Web Application defines for all of its components. Thus, logging, error handling or ajax communication can be developed independently of the application code and provide different functionality based on the environment they are running (e.g. test vs production). 22 | - **Functional Reactive Programming**. Proact provides functional operations to manipulate asynchronous data flows and introduces data types to represent events and signals (behaviors). FRP decouples application code from the logic that handles user interactions which makes for more readable and simpler code. 23 | - **Consistent state**. Having a single state prompts an application to behave more consistently, unfortunately, it also makes it harder for the state to be modularized. Proact uses the concept of [lenses](https://github.com/purescript-contrib/purescript-profunctor-lenses) to represent the state of individual components so they can be encapsulated but at the same time can also be composed into a larger overarching state. 24 | 25 | ## Installation 26 | ```sh 27 | git clone https://github.com/alvart/purescript-proact.git proact 28 | cd purescript-proact 29 | spago install 30 | ``` 31 | 32 | ## Building 33 | 34 | ```sh 35 | spago build 36 | ``` 37 | 38 | ## Examples 39 | 40 | - [To-do Application](https://github.com/alvart/proact-todo). The "Hello World!" of Web Applications. 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "purescript-proact", 3 | "version": "0.1.0", 4 | "author": "Jon Alvart", 5 | "license": "MIT", 6 | "scripts": { 7 | "build": "spago build" 8 | }, 9 | "dependencies": { 10 | "react": "^16.13.1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages.dhall: -------------------------------------------------------------------------------- 1 | let upstream = https://github.com/purescript/package-sets/releases/download/psc-0.13.6-20200507/packages.dhall sha256:9c1e8951e721b79de1de551f31ecb5a339e82bbd43300eb5ccfb1bf8cf7bbd62 2 | let additions = {=} 3 | let overrides = {=} 4 | in upstream // overrides // additions 5 | -------------------------------------------------------------------------------- /spago.dhall: -------------------------------------------------------------------------------- 1 | { name = "purescript-proact" 2 | , dependencies = 3 | [ "effect" 4 | , "now" 5 | , "options" 6 | , "profunctor-lenses" 7 | , "react" 8 | , "react-dom" 9 | , "run" 10 | ] 11 | , packages = ./packages.dhall 12 | , sources = [ "src/**/*.purs" ] 13 | } 14 | -------------------------------------------------------------------------------- /src/Proact.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license MIT 3 | Proact.purs 4 | -} 5 | 6 | -- | Proact is a reactive framework that communicates with React through 7 | -- | commands expressed as Free programs and extensible effects. These 8 | -- | interactions provide access to a global single state that is composable via 9 | -- | profunctor lenses. 10 | 11 | module Proact 12 | ( (@=) 13 | , Component 14 | , EventHandler 15 | , IndexedComponent 16 | , PComponent 17 | , addListener 18 | , dispatch 19 | , focus 20 | , focus' 21 | , focusHandler 22 | , iFocus 23 | , proact 24 | , translate 25 | ) 26 | where 27 | 28 | import Control.Apply (lift2) 29 | import Data.Either (Either(..)) 30 | import Data.Lens 31 | ( IndexedTraversal' 32 | , Traversal' 33 | , Forget(..) 34 | , Indexed(..) 35 | , Lens' 36 | , element 37 | , preview 38 | , set 39 | , view 40 | ) 41 | import Data.Lens.Index (class Index, ix) 42 | import Data.Lens.Indexed (positions) 43 | import Data.Maybe (Maybe, maybe) 44 | import Data.Newtype (class Newtype, unwrap) 45 | import Data.Tuple (Tuple(..), fst, snd) 46 | import Effect (Effect) 47 | import Prelude 48 | import Proact.Event (subscribe) 49 | import Proact.Event.Signal (SIGNAL, Signal, _signal) 50 | import React (ReactThis, getState, writeStateWithCallback) 51 | import Run (EFFECT, Run, lift, liftEffect, on, peel, run, runBaseEffect, send) 52 | import Run.Reader (READER, Reader(..), _reader, runReader) 53 | import Run.State (STATE, State(..), _state) 54 | import Run.Writer (WRITER, Writer(..), _writer, runWriter, tell) 55 | import Unsafe.Coerce (unsafeCoerce) 56 | 57 | -- | A type synonym for a Proact Component. 58 | type Component s e1 e2 = PComponent s s e1 e2 59 | 60 | -- | A type synonym for Free programs that manipulate their component state 61 | -- | through the `State` effect. 62 | type EventHandler s e = Run (state :: STATE s | e) 63 | 64 | -- | A type synonym for an Indexed Proact Component. 65 | type IndexedComponent i s e1 e2 = PComponent (Tuple i s) s e1 e2 66 | 67 | -- | A type synonym for Free programs with access to their component state that 68 | -- | produce a continuous signal of Event Handlers. 69 | type PComponent s t e1 e2 = 70 | Run 71 | ( reader :: READER s 72 | , writer :: WRITER (Signal (EventHandler t e2 Unit)) 73 | | e1 74 | ) 75 | 76 | -- Represents applicatives as monoids and semigroups. 77 | newtype Ap m a = Ap (m a) 78 | 79 | -- Ap :: Newtype, Functor, Apply, Applicative, Semigroup, Monoid 80 | 81 | derive instance newtypeAp :: Newtype (Ap m a) _ 82 | derive newtype instance functorAp :: (Functor m) => Functor (Ap m) 83 | derive newtype instance applyAp :: (Apply m) => Apply (Ap m) 84 | derive newtype instance applicativeAp :: (Applicative m) => Applicative (Ap m) 85 | 86 | instance semigroupAp :: (Applicative m, Semigroup a) => Semigroup (Ap m a) 87 | where 88 | append = lift2 append 89 | 90 | instance monoidAp :: (Apply m, Applicative m, Monoid a) => Monoid (Ap m a) 91 | where 92 | mempty = pure mempty 93 | 94 | -- | An alias for `addListener`. 95 | infixr 2 addListener as @= 96 | 97 | -- | Adds an event listener in the context of a component. 98 | addListener 99 | :: forall a s t e1 e2 100 | . Signal a -> (a -> EventHandler t e2 Unit) -> PComponent s t e1 e2 Unit 101 | addListener signal = tell <<< flip map signal 102 | 103 | -- | Runs the actions of an Event Handler asynchronously and returns the fiber. 104 | dispatch 105 | :: forall s 106 | . ReactThis { } { | s } 107 | -> EventHandler { | s } (effect :: EFFECT, signal :: SIGNAL) Unit 108 | -> Effect Unit 109 | dispatch this = runState this <<< runSignal 110 | where 111 | runSignal program = 112 | case peel program 113 | of 114 | Left command -> 115 | case on _signal Left Right command 116 | of 117 | Left signal -> liftEffect $ subscribe (dispatch this) signal 118 | Right resume -> send resume >>= runSignal 119 | Right a -> pure a 120 | 121 | -- | Changes a `Component`'s state type through the lens of a `Traversal`. 122 | -- | For a less restrictive albeit less general version, consider `focus'`. 123 | focus 124 | :: forall s1 s2 e1 e2 a 125 | . Monoid a 126 | => Traversal' s1 s2 -> Component s2 e1 e2 a -> Component s1 e1 e2 a 127 | focus _traversal component = 128 | join 129 | <<< lift _reader 130 | <<< Reader 131 | <<< map unwrap 132 | <<< unwrap 133 | <<< positions _traversal 134 | <<< Indexed 135 | <<< Forget 136 | $ map Ap \s -> 137 | do 138 | let index = fst s 139 | let _get = preview $ element index _traversal 140 | let _set = set $ element index _traversal 141 | component 142 | # focusSignal (focusState _get _set) 143 | # withReader snd 144 | # runReader s 145 | # unsafeCoerce 146 | 147 | -- | Changes a `Component`'s state type through the focus of a `Lens`. 148 | -- | For a more general albeit more restrictive version, consider `focus`. 149 | focus' 150 | :: forall s1 s2 e1 e2 151 | . Lens' s1 s2 -> (Component s2 e1 e2 ~> Component s1 e1 e2) 152 | focus' _lens component = 153 | join 154 | <<< lift _reader 155 | <<< Reader 156 | <<< unwrap 157 | <<< _lens 158 | $ Forget \s -> 159 | component 160 | # focusSignal (focusHandler _lens) 161 | # runReader s 162 | # unsafeCoerce 163 | 164 | -- | Changes an Event Handler's state type through the focus of a `Lens`. 165 | focusHandler 166 | :: forall s1 s2 e . Lens' s1 s2 -> (EventHandler s2 e ~> EventHandler s1 e) 167 | focusHandler _lens = run (on _state handleState (unsafeCoerce <<< send)) 168 | where 169 | _get = view _lens 170 | 171 | _set = set _lens 172 | 173 | handleState (State f2 next) = lift _state $ State f1 \s1 -> next $ _get s1 174 | where 175 | f1 s1 = flip _set s1 $ f2 $ _get s1 176 | 177 | -- | Changes a `Component`'s state type through the lens of an indexed 178 | -- | traversal. 179 | iFocus 180 | :: forall s1 s2 i e1 e2 a 181 | . Monoid a 182 | => Index s1 i s2 183 | => IndexedTraversal' i s1 s2 184 | -> IndexedComponent i s2 e1 e2 a 185 | -> Component s1 e1 e2 a 186 | iFocus _iTraversal component = 187 | join 188 | <<< lift _reader 189 | <<< Reader 190 | <<< map unwrap 191 | <<< unwrap 192 | <<< _iTraversal 193 | <<< Indexed 194 | <<< Forget 195 | $ map Ap \s -> 196 | do 197 | let index = fst s 198 | let _get = preview $ ix index :: s1 -> Maybe s2 199 | let _set = set $ ix index 200 | component 201 | # focusSignal (focusState _get _set) 202 | # runReader s 203 | # unsafeCoerce 204 | 205 | -- | Extracts the value inside a Proact component. 206 | proact 207 | :: forall s 208 | . ReactThis { } { | s } 209 | -> Component 210 | { | s } (effect :: EFFECT) (effect :: EFFECT, signal :: SIGNAL) 211 | ~> Effect 212 | proact this component = 213 | do 214 | s <- getState this 215 | Tuple handlerSignal a <- 216 | component 217 | # runReader s 218 | # runWriter 219 | # runBaseEffect 220 | subscribe (dispatch this) handlerSignal 221 | pure a 222 | 223 | -- | Translates the extensible effects of the Signal of Event Handlers of a 224 | -- | Proact component. 225 | translate 226 | :: forall s t e e1 e2 227 | . (EventHandler t e1 Unit -> EventHandler t e2 Unit) 228 | -> PComponent s t e e1 229 | ~> PComponent s t e e2 230 | translate translator = withWriter (map translator) 231 | 232 | -- Changes the type of the state through getter and setter functions. 233 | focusState 234 | :: forall s1 s2 e a 235 | . Monoid a 236 | => (s1 -> Maybe s2) 237 | -> (s2 -> s1 -> s1) 238 | -> Run (state :: STATE s2 | e) a 239 | -> Run (state :: STATE s1 | e) a 240 | focusState _get _set = run (on _state handleState (unsafeCoerce <<< send)) 241 | where 242 | handleState (State f2 next) = 243 | lift _state $ State f1 \s1 -> 244 | maybe (pure mempty) identity $ map next $ _get s1 245 | where 246 | f1 s1 = maybe s1 identity $ map (flip _set s1 <<< f2) $ _get s1 247 | 248 | -- Changes the type of a signal of Event Handlers through getter and setter 249 | -- functions. 250 | focusSignal 251 | :: forall s1 s2 e1 e2 252 | . (forall a . Monoid a => EventHandler s2 e2 a -> EventHandler s1 e2 a) 253 | -> Run (writer :: WRITER (Signal (EventHandler s2 e2 Unit)) | e1) 254 | ~> Run (writer :: WRITER (Signal (EventHandler s1 e2 Unit)) | e1) 255 | focusSignal eventHandlerFocus = withWriter (map eventHandlerFocus) 256 | 257 | -- Runs a stateful program inside a React context. 258 | runState 259 | :: forall s 260 | . ReactThis { } { | s } 261 | -> Run (effect :: EFFECT, state :: STATE { | s }) Unit 262 | -> Effect Unit 263 | runState this program = 264 | case peel program 265 | of 266 | Left command -> 267 | case on _state Left Right command 268 | of 269 | Left state -> handleState state 270 | Right resume -> runBaseEffect (send resume) >>= runState this 271 | Right a -> pure a 272 | where 273 | handleState (State f next) = 274 | do 275 | s <- getState this 276 | let s' = f s 277 | writeStateWithCallback this s' (runState this $ next s') 278 | 279 | -- Changes the type of the context in a Reader effect. 280 | withReader 281 | :: forall e s1 s2 282 | . (s1 -> s2) 283 | -> Run (reader :: READER s2 | e) 284 | ~> Run (reader :: READER s1 | e) 285 | withReader f = run (on _reader handleReader (unsafeCoerce <<< send)) 286 | where 287 | handleReader (Reader next) = lift _reader <<< Reader $ next <<< f 288 | 289 | -- Changes the type of the context in a Writer effect. 290 | withWriter 291 | :: forall e w1 w2 292 | . (w1 -> w2) 293 | -> Run (writer :: WRITER w1 | e) 294 | ~> Run (writer :: WRITER w2 | e) 295 | withWriter f = run (on _writer handleWriter (unsafeCoerce <<< send)) 296 | where 297 | handleWriter (Writer w1 next) = lift _writer $ Writer (f w1) next 298 | -------------------------------------------------------------------------------- /src/Proact/DOM.js: -------------------------------------------------------------------------------- 1 | /* 2 | @license MIT 3 | DOM.js 4 | */ 5 | 6 | "use strict"; 7 | 8 | var React = require("react"); 9 | 10 | var Feed = function () { 11 | this.subscribers = []; 12 | 13 | this.subscribe = function (observer) { 14 | this.subscribers.push(observer); 15 | }.bind(this); 16 | 17 | this.notify = function (a) { 18 | for (var observer of this.subscribers) { 19 | observer(a)(); 20 | } 21 | }.bind(this); 22 | }; 23 | 24 | exports._createElement = function (class_) { 25 | return function (props_) { 26 | return function (children) { 27 | var props = {}; 28 | var feedList = []; 29 | for (var key of Object.keys(props_)) { 30 | if (key.startsWith("_on")) { 31 | var feed = new Feed(); 32 | 33 | props[key.substr(1)] = function (key_) { 34 | return function () { 35 | feed.notify(props_[key_].apply(null, arguments)); 36 | }; 37 | }(key); 38 | 39 | feedList.push(feed); 40 | } else { 41 | props[key] = props_[key]; 42 | } 43 | } 44 | 45 | return { 46 | element: React.createElement.apply( 47 | React, 48 | [class_, props].concat(children) 49 | ), 50 | feedList, 51 | }; 52 | }; 53 | }; 54 | }; 55 | 56 | exports._fragment = React.Fragment; 57 | -------------------------------------------------------------------------------- /src/Proact/DOM.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license MIT 3 | DOM.purs 4 | -} 5 | 6 | -- | This module provides utilities that create React virtual DOM elements, 7 | -- | specifically, basic HTML components. These elements are compatible with 8 | -- | 9 | 10 | module Proact.DOM 11 | ( createElement 12 | , fragment 13 | , text 14 | , a 15 | , a' 16 | , abbr 17 | , abbr' 18 | , address 19 | , address' 20 | , area 21 | , area' 22 | , article 23 | , article' 24 | , aside 25 | , aside' 26 | , audio 27 | , audio' 28 | , b 29 | , b' 30 | , base 31 | , base' 32 | , bdi 33 | , bdi' 34 | , bdo 35 | , bdo' 36 | , big 37 | , big' 38 | , blockquote 39 | , blockquote' 40 | , body 41 | , body' 42 | , br 43 | , br' 44 | , button 45 | , button' 46 | , canvas 47 | , canvas' 48 | , caption 49 | , caption' 50 | , cite 51 | , cite' 52 | , code 53 | , code' 54 | , col 55 | , col' 56 | , colgroup 57 | , colgroup' 58 | , _data 59 | , _data' 60 | , datalist 61 | , datalist' 62 | , dd 63 | , dd' 64 | , del 65 | , del' 66 | , details 67 | , details' 68 | , dfn 69 | , dfn' 70 | , dialog 71 | , dialog' 72 | , div 73 | , div' 74 | , dl 75 | , dl' 76 | , dt 77 | , dt' 78 | , em 79 | , em' 80 | , embed 81 | , embed' 82 | , fieldset 83 | , fieldset' 84 | , figcaption 85 | , figcaption' 86 | , figure 87 | , figure' 88 | , footer 89 | , footer' 90 | , form 91 | , form' 92 | , h1 93 | , h1' 94 | , h2 95 | , h2' 96 | , h3 97 | , h3' 98 | , h4 99 | , h4' 100 | , h5 101 | , h5' 102 | , h6 103 | , h6' 104 | , head 105 | , head' 106 | , header 107 | , header' 108 | , hr 109 | , hr' 110 | , html 111 | , html' 112 | , i 113 | , i' 114 | , iframe 115 | , iframe' 116 | , img 117 | , img' 118 | , input 119 | , input' 120 | , ins 121 | , ins' 122 | , kbd 123 | , kbd' 124 | , keygen 125 | , keygen' 126 | , label 127 | , label' 128 | , legend 129 | , legend' 130 | , li 131 | , li' 132 | , link 133 | , link' 134 | , main 135 | , main' 136 | , map 137 | , map' 138 | , mark 139 | , mark' 140 | , menu 141 | , menu' 142 | , menuitem 143 | , menuitem' 144 | , meta 145 | , meta' 146 | , meter 147 | , meter' 148 | , nav 149 | , nav' 150 | , noscript 151 | , noscript' 152 | , object 153 | , object' 154 | , ol 155 | , ol' 156 | , optgroup 157 | , optgroup' 158 | , option 159 | , option' 160 | , output 161 | , output' 162 | , p 163 | , p' 164 | , param 165 | , param' 166 | , picture 167 | , picture' 168 | , pre 169 | , pre' 170 | , progress 171 | , progress' 172 | , q 173 | , q' 174 | , rp 175 | , rp' 176 | , rt 177 | , rt' 178 | , ruby 179 | , ruby' 180 | , s 181 | , s' 182 | , samp 183 | , samp' 184 | , script 185 | , script' 186 | , section 187 | , section' 188 | , select 189 | , select' 190 | , small 191 | , small' 192 | , source 193 | , source' 194 | , span 195 | , span' 196 | , strong 197 | , strong' 198 | , style 199 | , style' 200 | , sub 201 | , sub' 202 | , summary 203 | , summary' 204 | , sup 205 | , sup' 206 | , table 207 | , table' 208 | , tbody 209 | , tbody' 210 | , td 211 | , td' 212 | , textarea 213 | , textarea' 214 | , tfoot 215 | , tfoot' 216 | , th 217 | , th' 218 | , thead 219 | , thead' 220 | , time 221 | , time' 222 | , title 223 | , title' 224 | , tr 225 | , tr' 226 | , track 227 | , track' 228 | , u 229 | , u' 230 | , ul 231 | , ul' 232 | , var 233 | , var' 234 | , video 235 | , video' 236 | , wbr 237 | , wbr' 238 | ) 239 | where 240 | 241 | import Data.Options (Options, options) 242 | import Data.Traversable (fold, sequence) 243 | import Foreign (Foreign) 244 | import Prelude (($), (>>=), (<<<), Unit, discard, mempty, pure) 245 | import Prelude (map) as P 246 | import Proact (EventHandler, PComponent) as P 247 | import Proact.DOM.Props (Properties) 248 | import Proact.Event.Feed (Feed) 249 | import Proact.Event.Signal (replicate) 250 | import React (ReactClass, ReactElement) 251 | import React.DOM (text) as R 252 | import Run.Writer (tell) 253 | import Unsafe.Coerce (unsafeCoerce) 254 | 255 | -- | Creates a Proact component from a React class, an array of Options and an 256 | -- | array of React children. 257 | createElement 258 | :: forall s t o p e1 e2 259 | . ReactClass p 260 | -> Array (Options o) 261 | -> Array ReactElement 262 | -> P.PComponent s t e1 e2 ReactElement 263 | createElement class_ props children = 264 | do 265 | let reactiveElement = _createElement class_ (options $ fold props) children 266 | tell <<< fold $ P.map replicate reactiveElement.feedList 267 | pure reactiveElement.element 268 | 269 | -- | Creates a React fragment from an array of elements. 270 | -- | It is normally used together with `focus` and `iFocus`. 271 | fragment 272 | :: forall s t e1 e2 273 | . P.PComponent s t e1 e2 (Array ReactElement) 274 | -> P.PComponent s t e1 e2 ReactElement 275 | fragment children = children >>= createElement _fragment mempty 276 | 277 | -- | Creates a Proact component representing React text. 278 | text :: forall s t e1 e2 . String -> P.PComponent s t e1 e2 ReactElement 279 | text = pure <<< R.text 280 | 281 | -- | Creates a Proact component for the `a` React element. 282 | a 283 | :: forall s t e1 e2 284 | . Array (Options (Properties t e2)) 285 | -> Array (P.PComponent s t e1 e2 ReactElement) 286 | -> P.PComponent s t e1 e2 ReactElement 287 | a = createElement' "a" 288 | 289 | -- | A property-less constructor for `a`. 290 | a' 291 | :: forall s t e1 e2 292 | . Array (P.PComponent s t e1 e2 ReactElement) 293 | -> P.PComponent s t e1 e2 ReactElement 294 | a' = a mempty 295 | 296 | -- | Creates a Proact component for the `abbr` React element. 297 | abbr 298 | :: forall s t e1 e2 299 | . Array (Options (Properties t e2)) 300 | -> Array (P.PComponent s t e1 e2 ReactElement) 301 | -> P.PComponent s t e1 e2 ReactElement 302 | abbr = createElement' "abbr" 303 | 304 | -- | A property-less constructor for `abbr`. 305 | abbr' 306 | :: forall s t e1 e2 307 | . Array (P.PComponent s t e1 e2 ReactElement) 308 | -> P.PComponent s t e1 e2 ReactElement 309 | abbr' = abbr mempty 310 | 311 | -- | Creates a Proact component for the `address` React element. 312 | address 313 | :: forall s t e1 e2 314 | . Array (Options (Properties t e2)) 315 | -> Array (P.PComponent s t e1 e2 ReactElement) 316 | -> P.PComponent s t e1 e2 ReactElement 317 | address = createElement' "address" 318 | 319 | -- | A property-less constructor for `address`. 320 | address' 321 | :: forall s t e1 e2 322 | . Array (P.PComponent s t e1 e2 ReactElement) 323 | -> P.PComponent s t e1 e2 ReactElement 324 | address' = address mempty 325 | 326 | -- | Creates a Proact component for the `area` React element. 327 | area 328 | :: forall s t e1 e2 329 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 330 | area props = createElement' "area" props [ ] 331 | 332 | -- | A property-less constructor for `area`. 333 | area' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 334 | area' = area mempty 335 | 336 | -- | Creates a Proact component for the `article` React element. 337 | article 338 | :: forall s t e1 e2 339 | . Array (Options (Properties t e2)) 340 | -> Array (P.PComponent s t e1 e2 ReactElement) 341 | -> P.PComponent s t e1 e2 ReactElement 342 | article = createElement' "article" 343 | 344 | -- | A property-less constructor for `article`. 345 | article' 346 | :: forall s t e1 e2 347 | . Array (P.PComponent s t e1 e2 ReactElement) 348 | -> P.PComponent s t e1 e2 ReactElement 349 | article' = article mempty 350 | 351 | -- | Creates a Proact component for the `aside` React element. 352 | aside 353 | :: forall s t e1 e2 354 | . Array (Options (Properties t e2)) 355 | -> Array (P.PComponent s t e1 e2 ReactElement) 356 | -> P.PComponent s t e1 e2 ReactElement 357 | aside = createElement' "aside" 358 | 359 | -- | A property-less constructor for `aside`. 360 | aside' 361 | :: forall s t e1 e2 362 | . Array (P.PComponent s t e1 e2 ReactElement) 363 | -> P.PComponent s t e1 e2 ReactElement 364 | aside' = aside mempty 365 | 366 | -- | Creates a Proact component for the `audio` React element. 367 | audio 368 | :: forall s t e1 e2 369 | . Array (Options (Properties t e2)) 370 | -> Array (P.PComponent s t e1 e2 ReactElement) 371 | -> P.PComponent s t e1 e2 ReactElement 372 | audio = createElement' "audio" 373 | 374 | -- | A property-less constructor for `audio`. 375 | audio' 376 | :: forall s t e1 e2 377 | . Array (P.PComponent s t e1 e2 ReactElement) 378 | -> P.PComponent s t e1 e2 ReactElement 379 | audio' = audio mempty 380 | 381 | -- | Creates a Proact component for the `b` React element. 382 | b 383 | :: forall s t e1 e2 384 | . Array (Options (Properties t e2)) 385 | -> Array (P.PComponent s t e1 e2 ReactElement) 386 | -> P.PComponent s t e1 e2 ReactElement 387 | b = createElement' "b" 388 | 389 | -- | A property-less constructor for `b`. 390 | b' 391 | :: forall s t e1 e2 392 | . Array (P.PComponent s t e1 e2 ReactElement) 393 | -> P.PComponent s t e1 e2 ReactElement 394 | b' = b mempty 395 | 396 | -- | Creates a Proact component for the `base` React element. 397 | base 398 | :: forall s t e1 e2 399 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 400 | base props = createElement' "base" props [ ] 401 | 402 | -- | A property-less constructor for `base`. 403 | base' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 404 | base' = base mempty 405 | 406 | -- | Creates a Proact component for the `bdi` React element. 407 | bdi 408 | :: forall s t e1 e2 409 | . Array (Options (Properties t e2)) 410 | -> Array (P.PComponent s t e1 e2 ReactElement) 411 | -> P.PComponent s t e1 e2 ReactElement 412 | bdi = createElement' "bdi" 413 | 414 | -- | A property-less constructor for `bdi`. 415 | bdi' 416 | :: forall s t e1 e2 417 | . Array (P.PComponent s t e1 e2 ReactElement) 418 | -> P.PComponent s t e1 e2 ReactElement 419 | bdi' = bdi mempty 420 | 421 | -- | Creates a Proact component for the `bdo` React element. 422 | bdo 423 | :: forall s t e1 e2 424 | . Array (Options (Properties t e2)) 425 | -> Array (P.PComponent s t e1 e2 ReactElement) 426 | -> P.PComponent s t e1 e2 ReactElement 427 | bdo = createElement' "bdo" 428 | 429 | -- | A property-less constructor for `bdo`. 430 | bdo' 431 | :: forall s t e1 e2 432 | . Array (P.PComponent s t e1 e2 ReactElement) 433 | -> P.PComponent s t e1 e2 ReactElement 434 | bdo' = bdo mempty 435 | 436 | -- | Creates a Proact component for the `big` React element. 437 | big 438 | :: forall s t e1 e2 439 | . Array (Options (Properties t e2)) 440 | -> Array (P.PComponent s t e1 e2 ReactElement) 441 | -> P.PComponent s t e1 e2 ReactElement 442 | big = createElement' "big" 443 | 444 | -- | A property-less constructor for `big`. 445 | big' 446 | :: forall s t e1 e2 447 | . Array (P.PComponent s t e1 e2 ReactElement) 448 | -> P.PComponent s t e1 e2 ReactElement 449 | big' = big mempty 450 | 451 | -- | Creates a Proact component for the `blockquote` React element. 452 | blockquote 453 | :: forall s t e1 e2 454 | . Array (Options (Properties t e2)) 455 | -> Array (P.PComponent s t e1 e2 ReactElement) 456 | -> P.PComponent s t e1 e2 ReactElement 457 | blockquote = createElement' "blockquote" 458 | 459 | -- | A property-less constructor for `blockquote`. 460 | blockquote' 461 | :: forall s t e1 e2 462 | . Array (P.PComponent s t e1 e2 ReactElement) 463 | -> P.PComponent s t e1 e2 ReactElement 464 | blockquote' = blockquote mempty 465 | 466 | -- | Creates a Proact component for the `body` React element. 467 | body 468 | :: forall s t e1 e2 469 | . Array (Options (Properties t e2)) 470 | -> Array (P.PComponent s t e1 e2 ReactElement) 471 | -> P.PComponent s t e1 e2 ReactElement 472 | body = createElement' "body" 473 | 474 | -- | A property-less constructor for `body`. 475 | body' 476 | :: forall s t e1 e2 477 | . Array (P.PComponent s t e1 e2 ReactElement) 478 | -> P.PComponent s t e1 e2 ReactElement 479 | body' = body mempty 480 | 481 | -- | Creates a Proact component for the `br` React element. 482 | br 483 | :: forall s t e1 e2 484 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 485 | br props = createElement' "br" props [ ] 486 | 487 | -- | A property-less constructor for `br`. 488 | br' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 489 | br' = br mempty 490 | 491 | -- | Creates a Proact component for the `button` React element. 492 | button 493 | :: forall s t e1 e2 494 | . Array (Options (Properties t e2)) 495 | -> Array (P.PComponent s t e1 e2 ReactElement) 496 | -> P.PComponent s t e1 e2 ReactElement 497 | button = createElement' "button" 498 | 499 | -- | A property-less constructor for `button`. 500 | button' 501 | :: forall s t e1 e2 502 | . Array (P.PComponent s t e1 e2 ReactElement) 503 | -> P.PComponent s t e1 e2 ReactElement 504 | button' = button mempty 505 | 506 | -- | Creates a Proact component for the `canvas` React element. 507 | canvas 508 | :: forall s t e1 e2 509 | . Array (Options (Properties t e2)) 510 | -> Array (P.PComponent s t e1 e2 ReactElement) 511 | -> P.PComponent s t e1 e2 ReactElement 512 | canvas = createElement' "canvas" 513 | 514 | -- | A property-less constructor for `canvas`. 515 | canvas' 516 | :: forall s t e1 e2 517 | . Array (P.PComponent s t e1 e2 ReactElement) 518 | -> P.PComponent s t e1 e2 ReactElement 519 | canvas' = canvas mempty 520 | 521 | -- | Creates a Proact component for the `caption` React element. 522 | caption 523 | :: forall s t e1 e2 524 | . Array (Options (Properties t e2)) 525 | -> Array (P.PComponent s t e1 e2 ReactElement) 526 | -> P.PComponent s t e1 e2 ReactElement 527 | caption = createElement' "caption" 528 | 529 | -- | A property-less constructor for `caption`. 530 | caption' 531 | :: forall s t e1 e2 532 | . Array (P.PComponent s t e1 e2 ReactElement) 533 | -> P.PComponent s t e1 e2 ReactElement 534 | caption' = caption mempty 535 | 536 | -- | Creates a Proact component for the `cite` React element. 537 | cite 538 | :: forall s t e1 e2 539 | . Array (Options (Properties t e2)) 540 | -> Array (P.PComponent s t e1 e2 ReactElement) 541 | -> P.PComponent s t e1 e2 ReactElement 542 | cite = createElement' "cite" 543 | 544 | -- | A property-less constructor for `cite`. 545 | cite' 546 | :: forall s t e1 e2 547 | . Array (P.PComponent s t e1 e2 ReactElement) 548 | -> P.PComponent s t e1 e2 ReactElement 549 | cite' = cite mempty 550 | 551 | -- | Creates a Proact component for the `code` React element. 552 | code 553 | :: forall s t e1 e2 554 | . Array (Options (Properties t e2)) 555 | -> Array (P.PComponent s t e1 e2 ReactElement) 556 | -> P.PComponent s t e1 e2 ReactElement 557 | code = createElement' "code" 558 | 559 | -- | A property-less constructor for `code`. 560 | code' 561 | :: forall s t e1 e2 562 | . Array (P.PComponent s t e1 e2 ReactElement) 563 | -> P.PComponent s t e1 e2 ReactElement 564 | code' = code mempty 565 | 566 | -- | Creates a Proact component for the `col` React element. 567 | col 568 | :: forall s t e1 e2 569 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 570 | col props = createElement' "col" props [ ] 571 | 572 | -- | A property-less constructor for `col`. 573 | col' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 574 | col' = col mempty 575 | 576 | -- | Creates a Proact component for the `colgroup` React element. 577 | colgroup 578 | :: forall s t e1 e2 579 | . Array (Options (Properties t e2)) 580 | -> Array (P.PComponent s t e1 e2 ReactElement) 581 | -> P.PComponent s t e1 e2 ReactElement 582 | colgroup = createElement' "colgroup" 583 | 584 | -- | A property-less constructor for `colgroup`. 585 | colgroup' 586 | :: forall s t e1 e2 587 | . Array (P.PComponent s t e1 e2 ReactElement) 588 | -> P.PComponent s t e1 e2 ReactElement 589 | colgroup' = colgroup mempty 590 | 591 | -- | Creates a Proact component for the `_data` React element. 592 | _data 593 | :: forall s t e1 e2 594 | . Array (Options (Properties t e2)) 595 | -> Array (P.PComponent s t e1 e2 ReactElement) 596 | -> P.PComponent s t e1 e2 ReactElement 597 | _data = createElement' "_data" 598 | 599 | -- | A property-less constructor for `_data`. 600 | _data' 601 | :: forall s t e1 e2 602 | . Array (P.PComponent s t e1 e2 ReactElement) 603 | -> P.PComponent s t e1 e2 ReactElement 604 | _data' = _data mempty 605 | 606 | -- | Creates a Proact component for the `datalist` React element. 607 | datalist 608 | :: forall s t e1 e2 609 | . Array (Options (Properties t e2)) 610 | -> Array (P.PComponent s t e1 e2 ReactElement) 611 | -> P.PComponent s t e1 e2 ReactElement 612 | datalist = createElement' "datalist" 613 | 614 | -- | A property-less constructor for `datalist`. 615 | datalist' 616 | :: forall s t e1 e2 617 | . Array (P.PComponent s t e1 e2 ReactElement) 618 | -> P.PComponent s t e1 e2 ReactElement 619 | datalist' = datalist mempty 620 | 621 | -- | Creates a Proact component for the `dd` React element. 622 | dd 623 | :: forall s t e1 e2 624 | . Array (Options (Properties t e2)) 625 | -> Array (P.PComponent s t e1 e2 ReactElement) 626 | -> P.PComponent s t e1 e2 ReactElement 627 | dd = createElement' "dd" 628 | 629 | -- | A property-less constructor for `dd`. 630 | dd' 631 | :: forall s t e1 e2 632 | . Array (P.PComponent s t e1 e2 ReactElement) 633 | -> P.PComponent s t e1 e2 ReactElement 634 | dd' = dd mempty 635 | 636 | -- | Creates a Proact component for the `del` React element. 637 | del 638 | :: forall s t e1 e2 639 | . Array (Options (Properties t e2)) 640 | -> Array (P.PComponent s t e1 e2 ReactElement) 641 | -> P.PComponent s t e1 e2 ReactElement 642 | del = createElement' "del" 643 | 644 | -- | A property-less constructor for `del`. 645 | del' 646 | :: forall s t e1 e2 647 | . Array (P.PComponent s t e1 e2 ReactElement) 648 | -> P.PComponent s t e1 e2 ReactElement 649 | del' = del mempty 650 | 651 | -- | Creates a Proact component for the `details` React element. 652 | details 653 | :: forall s t e1 e2 654 | . Array (Options (Properties t e2)) 655 | -> Array (P.PComponent s t e1 e2 ReactElement) 656 | -> P.PComponent s t e1 e2 ReactElement 657 | details = createElement' "details" 658 | 659 | -- | A property-less constructor for `details`. 660 | details' 661 | :: forall s t e1 e2 662 | . Array (P.PComponent s t e1 e2 ReactElement) 663 | -> P.PComponent s t e1 e2 ReactElement 664 | details' = details mempty 665 | 666 | -- | Creates a Proact component for the `dfn` React element. 667 | dfn 668 | :: forall s t e1 e2 669 | . Array (Options (Properties t e2)) 670 | -> Array (P.PComponent s t e1 e2 ReactElement) 671 | -> P.PComponent s t e1 e2 ReactElement 672 | dfn = createElement' "dfn" 673 | 674 | -- | A property-less constructor for `dfn`. 675 | dfn' 676 | :: forall s t e1 e2 677 | . Array (P.PComponent s t e1 e2 ReactElement) 678 | -> P.PComponent s t e1 e2 ReactElement 679 | dfn' = dfn mempty 680 | 681 | -- | Creates a Proact component for the `dialog` React element. 682 | dialog 683 | :: forall s t e1 e2 684 | . Array (Options (Properties t e2)) 685 | -> Array (P.PComponent s t e1 e2 ReactElement) 686 | -> P.PComponent s t e1 e2 ReactElement 687 | dialog = createElement' "dialog" 688 | 689 | -- | A property-less constructor for `dialog`. 690 | dialog' 691 | :: forall s t e1 e2 692 | . Array (P.PComponent s t e1 e2 ReactElement) 693 | -> P.PComponent s t e1 e2 ReactElement 694 | dialog' = dialog mempty 695 | 696 | -- | Creates a Proact component for the `div` React element. 697 | div 698 | :: forall s t e1 e2 699 | . Array (Options (Properties t e2)) 700 | -> Array (P.PComponent s t e1 e2 ReactElement) 701 | -> P.PComponent s t e1 e2 ReactElement 702 | div = createElement' "div" 703 | 704 | -- | A property-less constructor for `div`. 705 | div' 706 | :: forall s t e1 e2 707 | . Array (P.PComponent s t e1 e2 ReactElement) 708 | -> P.PComponent s t e1 e2 ReactElement 709 | div' = div mempty 710 | 711 | -- | Creates a Proact component for the `dl` React element. 712 | dl 713 | :: forall s t e1 e2 714 | . Array (Options (Properties t e2)) 715 | -> Array (P.PComponent s t e1 e2 ReactElement) 716 | -> P.PComponent s t e1 e2 ReactElement 717 | dl = createElement' "dl" 718 | 719 | -- | A property-less constructor for `dl`. 720 | dl' 721 | :: forall s t e1 e2 722 | . Array (P.PComponent s t e1 e2 ReactElement) 723 | -> P.PComponent s t e1 e2 ReactElement 724 | dl' = dl mempty 725 | 726 | -- | Creates a Proact component for the `dt` React element. 727 | dt 728 | :: forall s t e1 e2 729 | . Array (Options (Properties t e2)) 730 | -> Array (P.PComponent s t e1 e2 ReactElement) 731 | -> P.PComponent s t e1 e2 ReactElement 732 | dt = createElement' "dt" 733 | 734 | -- | A property-less constructor for `dt`. 735 | dt' 736 | :: forall s t e1 e2 737 | . Array (P.PComponent s t e1 e2 ReactElement) 738 | -> P.PComponent s t e1 e2 ReactElement 739 | dt' = dt mempty 740 | 741 | -- | Creates a Proact component for the `em` React element. 742 | em 743 | :: forall s t e1 e2 744 | . Array (Options (Properties t e2)) 745 | -> Array (P.PComponent s t e1 e2 ReactElement) 746 | -> P.PComponent s t e1 e2 ReactElement 747 | em = createElement' "em" 748 | 749 | -- | A property-less constructor for `em`. 750 | em' 751 | :: forall s t e1 e2 752 | . Array (P.PComponent s t e1 e2 ReactElement) 753 | -> P.PComponent s t e1 e2 ReactElement 754 | em' = em mempty 755 | 756 | -- | Creates a Proact component for the `embed` React element. 757 | embed 758 | :: forall s t e1 e2 759 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 760 | embed props = createElement' "embed" props [ ] 761 | 762 | -- | A property-less constructor for `embed`. 763 | embed' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 764 | embed' = embed mempty 765 | 766 | -- | Creates a Proact component for the `fieldset` React element. 767 | fieldset 768 | :: forall s t e1 e2 769 | . Array (Options (Properties t e2)) 770 | -> Array (P.PComponent s t e1 e2 ReactElement) 771 | -> P.PComponent s t e1 e2 ReactElement 772 | fieldset = createElement' "fieldset" 773 | 774 | -- | A property-less constructor for `fieldset`. 775 | fieldset' 776 | :: forall s t e1 e2 777 | . Array (P.PComponent s t e1 e2 ReactElement) 778 | -> P.PComponent s t e1 e2 ReactElement 779 | fieldset' = fieldset mempty 780 | 781 | -- | Creates a Proact component for the `figcaption` React element. 782 | figcaption 783 | :: forall s t e1 e2 784 | . Array (Options (Properties t e2)) 785 | -> Array (P.PComponent s t e1 e2 ReactElement) 786 | -> P.PComponent s t e1 e2 ReactElement 787 | figcaption = createElement' "figcaption" 788 | 789 | -- | A property-less constructor for `figcaption`. 790 | figcaption' 791 | :: forall s t e1 e2 792 | . Array (P.PComponent s t e1 e2 ReactElement) 793 | -> P.PComponent s t e1 e2 ReactElement 794 | figcaption' = figcaption mempty 795 | 796 | -- | Creates a Proact component for the `figure` React element. 797 | figure 798 | :: forall s t e1 e2 799 | . Array (Options (Properties t e2)) 800 | -> Array (P.PComponent s t e1 e2 ReactElement) 801 | -> P.PComponent s t e1 e2 ReactElement 802 | figure = createElement' "figure" 803 | 804 | -- | A property-less constructor for `figure`. 805 | figure' 806 | :: forall s t e1 e2 807 | . Array (P.PComponent s t e1 e2 ReactElement) 808 | -> P.PComponent s t e1 e2 ReactElement 809 | figure' = figure mempty 810 | 811 | -- | Creates a Proact component for the `footer` React element. 812 | footer 813 | :: forall s t e1 e2 814 | . Array (Options (Properties t e2)) 815 | -> Array (P.PComponent s t e1 e2 ReactElement) 816 | -> P.PComponent s t e1 e2 ReactElement 817 | footer = createElement' "footer" 818 | 819 | -- | A property-less constructor for `footer`. 820 | footer' 821 | :: forall s t e1 e2 822 | . Array (P.PComponent s t e1 e2 ReactElement) 823 | -> P.PComponent s t e1 e2 ReactElement 824 | footer' = footer mempty 825 | 826 | -- | Creates a Proact component for the `form` React element. 827 | form 828 | :: forall s t e1 e2 829 | . Array (Options (Properties t e2)) 830 | -> Array (P.PComponent s t e1 e2 ReactElement) 831 | -> P.PComponent s t e1 e2 ReactElement 832 | form = createElement' "form" 833 | 834 | -- | A property-less constructor for `form`. 835 | form' 836 | :: forall s t e1 e2 837 | . Array (P.PComponent s t e1 e2 ReactElement) 838 | -> P.PComponent s t e1 e2 ReactElement 839 | form' = form mempty 840 | 841 | -- | Creates a Proact component for the `h1` React element. 842 | h1 843 | :: forall s t e1 e2 844 | . Array (Options (Properties t e2)) 845 | -> Array (P.PComponent s t e1 e2 ReactElement) 846 | -> P.PComponent s t e1 e2 ReactElement 847 | h1 = createElement' "h1" 848 | 849 | -- | A property-less constructor for `h1`. 850 | h1' 851 | :: forall s t e1 e2 852 | . Array (P.PComponent s t e1 e2 ReactElement) 853 | -> P.PComponent s t e1 e2 ReactElement 854 | h1' = h1 mempty 855 | 856 | -- | Creates a Proact component for the `h2` React element. 857 | h2 858 | :: forall s t e1 e2 859 | . Array (Options (Properties t e2)) 860 | -> Array (P.PComponent s t e1 e2 ReactElement) 861 | -> P.PComponent s t e1 e2 ReactElement 862 | h2 = createElement' "h2" 863 | 864 | -- | A property-less constructor for `h2`. 865 | h2' 866 | :: forall s t e1 e2 867 | . Array (P.PComponent s t e1 e2 ReactElement) 868 | -> P.PComponent s t e1 e2 ReactElement 869 | h2' = h2 mempty 870 | 871 | -- | Creates a Proact component for the `h3` React element. 872 | h3 873 | :: forall s t e1 e2 874 | . Array (Options (Properties t e2)) 875 | -> Array (P.PComponent s t e1 e2 ReactElement) 876 | -> P.PComponent s t e1 e2 ReactElement 877 | h3 = createElement' "h3" 878 | 879 | -- | A property-less constructor for `h3`. 880 | h3' 881 | :: forall s t e1 e2 882 | . Array (P.PComponent s t e1 e2 ReactElement) 883 | -> P.PComponent s t e1 e2 ReactElement 884 | h3' = h3 mempty 885 | 886 | -- | Creates a Proact component for the `h4` React element. 887 | h4 888 | :: forall s t e1 e2 889 | . Array (Options (Properties t e2)) 890 | -> Array (P.PComponent s t e1 e2 ReactElement) 891 | -> P.PComponent s t e1 e2 ReactElement 892 | h4 = createElement' "h4" 893 | 894 | -- | A property-less constructor for `h4`. 895 | h4' 896 | :: forall s t e1 e2 897 | . Array (P.PComponent s t e1 e2 ReactElement) 898 | -> P.PComponent s t e1 e2 ReactElement 899 | h4' = h4 mempty 900 | 901 | -- | Creates a Proact component for the `h5` React element. 902 | h5 903 | :: forall s t e1 e2 904 | . Array (Options (Properties t e2)) 905 | -> Array (P.PComponent s t e1 e2 ReactElement) 906 | -> P.PComponent s t e1 e2 ReactElement 907 | h5 = createElement' "h5" 908 | 909 | -- | A property-less constructor for `h5`. 910 | h5' 911 | :: forall s t e1 e2 912 | . Array (P.PComponent s t e1 e2 ReactElement) 913 | -> P.PComponent s t e1 e2 ReactElement 914 | h5' = h5 mempty 915 | 916 | -- | Creates a Proact component for the `h6` React element. 917 | h6 918 | :: forall s t e1 e2 919 | . Array (Options (Properties t e2)) 920 | -> Array (P.PComponent s t e1 e2 ReactElement) 921 | -> P.PComponent s t e1 e2 ReactElement 922 | h6 = createElement' "h6" 923 | 924 | -- | A property-less constructor for `h6`. 925 | h6' 926 | :: forall s t e1 e2 927 | . Array (P.PComponent s t e1 e2 ReactElement) 928 | -> P.PComponent s t e1 e2 ReactElement 929 | h6' = h6 mempty 930 | 931 | -- | Creates a Proact component for the `head` React element. 932 | head 933 | :: forall s t e1 e2 934 | . Array (Options (Properties t e2)) 935 | -> Array (P.PComponent s t e1 e2 ReactElement) 936 | -> P.PComponent s t e1 e2 ReactElement 937 | head = createElement' "head" 938 | 939 | -- | A property-less constructor for `head`. 940 | head' 941 | :: forall s t e1 e2 942 | . Array (P.PComponent s t e1 e2 ReactElement) 943 | -> P.PComponent s t e1 e2 ReactElement 944 | head' = head mempty 945 | 946 | -- | Creates a Proact component for the `header` React element. 947 | header 948 | :: forall s t e1 e2 949 | . Array (Options (Properties t e2)) 950 | -> Array (P.PComponent s t e1 e2 ReactElement) 951 | -> P.PComponent s t e1 e2 ReactElement 952 | header = createElement' "header" 953 | 954 | -- | A property-less constructor for `header`. 955 | header' 956 | :: forall s t e1 e2 957 | . Array (P.PComponent s t e1 e2 ReactElement) 958 | -> P.PComponent s t e1 e2 ReactElement 959 | header' = header mempty 960 | 961 | -- | Creates a Proact component for the `hr` React element. 962 | hr 963 | :: forall s t e1 e2 964 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 965 | hr props = createElement' "hr" props [ ] 966 | 967 | -- | A property-less constructor for `hr`. 968 | hr' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 969 | hr' = hr mempty 970 | 971 | -- | Creates a Proact component for the `html` React element. 972 | html 973 | :: forall s t e1 e2 974 | . Array (Options (Properties t e2)) 975 | -> Array (P.PComponent s t e1 e2 ReactElement) 976 | -> P.PComponent s t e1 e2 ReactElement 977 | html = createElement' "html" 978 | 979 | -- | A property-less constructor for `html`. 980 | html' 981 | :: forall s t e1 e2 982 | . Array (P.PComponent s t e1 e2 ReactElement) 983 | -> P.PComponent s t e1 e2 ReactElement 984 | html' = html mempty 985 | 986 | -- | Creates a Proact component for the `i` React element. 987 | i 988 | :: forall s t e1 e2 989 | . Array (Options (Properties t e2)) 990 | -> Array (P.PComponent s t e1 e2 ReactElement) 991 | -> P.PComponent s t e1 e2 ReactElement 992 | i = createElement' "i" 993 | 994 | -- | A property-less constructor for `i`. 995 | i' 996 | :: forall s t e1 e2 997 | . Array (P.PComponent s t e1 e2 ReactElement) 998 | -> P.PComponent s t e1 e2 ReactElement 999 | i' = i mempty 1000 | 1001 | -- | Creates a Proact component for the `iframe` React element. 1002 | iframe 1003 | :: forall s t e1 e2 1004 | . Array (Options (Properties t e2)) 1005 | -> Array (P.PComponent s t e1 e2 ReactElement) 1006 | -> P.PComponent s t e1 e2 ReactElement 1007 | iframe = createElement' "iframe" 1008 | 1009 | -- | A property-less constructor for `iframe`. 1010 | iframe' 1011 | :: forall s t e1 e2 1012 | . Array (P.PComponent s t e1 e2 ReactElement) 1013 | -> P.PComponent s t e1 e2 ReactElement 1014 | iframe' = iframe mempty 1015 | 1016 | -- | Creates a Proact component for the `img` React element. 1017 | img 1018 | :: forall s t e1 e2 1019 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1020 | img props = createElement' "img" props [ ] 1021 | 1022 | -- | A property-less constructor for `img`. 1023 | img' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1024 | img' = img mempty 1025 | 1026 | -- | Creates a Proact component for the `input` React element. 1027 | input 1028 | :: forall s t e1 e2 1029 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1030 | input props = createElement' "input" props [ ] 1031 | 1032 | -- | A property-less constructor for `input`. 1033 | input' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1034 | input' = input mempty 1035 | 1036 | -- | Creates a Proact component for the `ins` React element. 1037 | ins 1038 | :: forall s t e1 e2 1039 | . Array (Options (Properties t e2)) 1040 | -> Array (P.PComponent s t e1 e2 ReactElement) 1041 | -> P.PComponent s t e1 e2 ReactElement 1042 | ins = createElement' "ins" 1043 | 1044 | -- | A property-less constructor for `ins`. 1045 | ins' 1046 | :: forall s t e1 e2 1047 | . Array (P.PComponent s t e1 e2 ReactElement) 1048 | -> P.PComponent s t e1 e2 ReactElement 1049 | ins' = ins mempty 1050 | 1051 | -- | Creates a Proact component for the `kbd` React element. 1052 | kbd 1053 | :: forall s t e1 e2 1054 | . Array (Options (Properties t e2)) 1055 | -> Array (P.PComponent s t e1 e2 ReactElement) 1056 | -> P.PComponent s t e1 e2 ReactElement 1057 | kbd = createElement' "kbd" 1058 | 1059 | -- | A property-less constructor for `kbd`. 1060 | kbd' 1061 | :: forall s t e1 e2 1062 | . Array (P.PComponent s t e1 e2 ReactElement) 1063 | -> P.PComponent s t e1 e2 ReactElement 1064 | kbd' = kbd mempty 1065 | 1066 | -- | Creates a Proact component for the `keygen` React element. 1067 | keygen 1068 | :: forall s t e1 e2 1069 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1070 | keygen props = createElement' "keygen" props [ ] 1071 | 1072 | -- | A property-less constructor for `keygen`. 1073 | keygen' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1074 | keygen' = keygen mempty 1075 | 1076 | -- | Creates a Proact component for the `label` React element. 1077 | label 1078 | :: forall s t e1 e2 1079 | . Array (Options (Properties t e2)) 1080 | -> Array (P.PComponent s t e1 e2 ReactElement) 1081 | -> P.PComponent s t e1 e2 ReactElement 1082 | label = createElement' "label" 1083 | 1084 | -- | A property-less constructor for `label`. 1085 | label' 1086 | :: forall s t e1 e2 1087 | . Array (P.PComponent s t e1 e2 ReactElement) 1088 | -> P.PComponent s t e1 e2 ReactElement 1089 | label' = label mempty 1090 | 1091 | -- | Creates a Proact component for the `legend` React element. 1092 | legend 1093 | :: forall s t e1 e2 1094 | . Array (Options (Properties t e2)) 1095 | -> Array (P.PComponent s t e1 e2 ReactElement) 1096 | -> P.PComponent s t e1 e2 ReactElement 1097 | legend = createElement' "legend" 1098 | 1099 | -- | A property-less constructor for `legend`. 1100 | legend' 1101 | :: forall s t e1 e2 1102 | . Array (P.PComponent s t e1 e2 ReactElement) 1103 | -> P.PComponent s t e1 e2 ReactElement 1104 | legend' = legend mempty 1105 | 1106 | -- | Creates a Proact component for the `li` React element. 1107 | li 1108 | :: forall s t e1 e2 1109 | . Array (Options (Properties t e2)) 1110 | -> Array (P.PComponent s t e1 e2 ReactElement) 1111 | -> P.PComponent s t e1 e2 ReactElement 1112 | li = createElement' "li" 1113 | 1114 | -- | A property-less constructor for `li`. 1115 | li' 1116 | :: forall s t e1 e2 1117 | . Array (P.PComponent s t e1 e2 ReactElement) 1118 | -> P.PComponent s t e1 e2 ReactElement 1119 | li' = li mempty 1120 | 1121 | -- | Creates a Proact component for the `link` React element. 1122 | link 1123 | :: forall s t e1 e2 1124 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1125 | link props = createElement' "link" props [ ] 1126 | 1127 | -- | A property-less constructor for `link`. 1128 | link' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1129 | link' = link mempty 1130 | 1131 | -- | Creates a Proact component for the `main` React element. 1132 | main 1133 | :: forall s t e1 e2 1134 | . Array (Options (Properties t e2)) 1135 | -> Array (P.PComponent s t e1 e2 ReactElement) 1136 | -> P.PComponent s t e1 e2 ReactElement 1137 | main = createElement' "main" 1138 | 1139 | -- | A property-less constructor for `main`. 1140 | main' 1141 | :: forall s t e1 e2 1142 | . Array (P.PComponent s t e1 e2 ReactElement) 1143 | -> P.PComponent s t e1 e2 ReactElement 1144 | main' = main mempty 1145 | 1146 | -- | Creates a Proact component for the `map` React element. 1147 | map 1148 | :: forall s t e1 e2 1149 | . Array (Options (Properties t e2)) 1150 | -> Array (P.PComponent s t e1 e2 ReactElement) 1151 | -> P.PComponent s t e1 e2 ReactElement 1152 | map = createElement' "map" 1153 | 1154 | -- | A property-less constructor for `map`. 1155 | map' 1156 | :: forall s t e1 e2 1157 | . Array (P.PComponent s t e1 e2 ReactElement) 1158 | -> P.PComponent s t e1 e2 ReactElement 1159 | map' = map mempty 1160 | 1161 | -- | Creates a Proact component for the `mark` React element. 1162 | mark 1163 | :: forall s t e1 e2 1164 | . Array (Options (Properties t e2)) 1165 | -> Array (P.PComponent s t e1 e2 ReactElement) 1166 | -> P.PComponent s t e1 e2 ReactElement 1167 | mark = createElement' "mark" 1168 | 1169 | -- | A property-less constructor for `mark`. 1170 | mark' 1171 | :: forall s t e1 e2 1172 | . Array (P.PComponent s t e1 e2 ReactElement) 1173 | -> P.PComponent s t e1 e2 ReactElement 1174 | mark' = mark mempty 1175 | 1176 | -- | Creates a Proact component for the `menu` React element. 1177 | menu 1178 | :: forall s t e1 e2 1179 | . Array (Options (Properties t e2)) 1180 | -> Array (P.PComponent s t e1 e2 ReactElement) 1181 | -> P.PComponent s t e1 e2 ReactElement 1182 | menu = createElement' "menu" 1183 | 1184 | -- | A property-less constructor for `menu`. 1185 | menu' 1186 | :: forall s t e1 e2 1187 | . Array (P.PComponent s t e1 e2 ReactElement) 1188 | -> P.PComponent s t e1 e2 ReactElement 1189 | menu' = menu mempty 1190 | 1191 | -- | Creates a Proact component for the `menuitem` React element. 1192 | menuitem 1193 | :: forall s t e1 e2 1194 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1195 | menuitem props = createElement' "menuitem" props [ ] 1196 | 1197 | -- | A property-less constructor for `menuitem`. 1198 | menuitem' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1199 | menuitem' = menuitem mempty 1200 | 1201 | -- | Creates a Proact component for the `meta` React element. 1202 | meta 1203 | :: forall s t e1 e2 1204 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1205 | meta props = createElement' "meta" props [ ] 1206 | 1207 | -- | A property-less constructor for `meta`. 1208 | meta' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1209 | meta' = meta mempty 1210 | 1211 | -- | Creates a Proact component for the `meter` React element. 1212 | meter 1213 | :: forall s t e1 e2 1214 | . Array (Options (Properties t e2)) 1215 | -> Array (P.PComponent s t e1 e2 ReactElement) 1216 | -> P.PComponent s t e1 e2 ReactElement 1217 | meter = createElement' "meter" 1218 | 1219 | -- | A property-less constructor for `meter`. 1220 | meter' 1221 | :: forall s t e1 e2 1222 | . Array (P.PComponent s t e1 e2 ReactElement) 1223 | -> P.PComponent s t e1 e2 ReactElement 1224 | meter' = meter mempty 1225 | 1226 | -- | Creates a Proact component for the `nav` React element. 1227 | nav 1228 | :: forall s t e1 e2 1229 | . Array (Options (Properties t e2)) 1230 | -> Array (P.PComponent s t e1 e2 ReactElement) 1231 | -> P.PComponent s t e1 e2 ReactElement 1232 | nav = createElement' "nav" 1233 | 1234 | -- | A property-less constructor for `nav`. 1235 | nav' 1236 | :: forall s t e1 e2 1237 | . Array (P.PComponent s t e1 e2 ReactElement) 1238 | -> P.PComponent s t e1 e2 ReactElement 1239 | nav' = nav mempty 1240 | 1241 | -- | Creates a Proact component for the `noscript` React element. 1242 | noscript 1243 | :: forall s t e1 e2 1244 | . Array (Options (Properties t e2)) 1245 | -> Array (P.PComponent s t e1 e2 ReactElement) 1246 | -> P.PComponent s t e1 e2 ReactElement 1247 | noscript = createElement' "noscript" 1248 | 1249 | -- | A property-less constructor for `noscript`. 1250 | noscript' 1251 | :: forall s t e1 e2 1252 | . Array (P.PComponent s t e1 e2 ReactElement) 1253 | -> P.PComponent s t e1 e2 ReactElement 1254 | noscript' = noscript mempty 1255 | 1256 | -- | Creates a Proact component for the `object` React element. 1257 | object 1258 | :: forall s t e1 e2 1259 | . Array (Options (Properties t e2)) 1260 | -> Array (P.PComponent s t e1 e2 ReactElement) 1261 | -> P.PComponent s t e1 e2 ReactElement 1262 | object = createElement' "object" 1263 | 1264 | -- | A property-less constructor for `object`. 1265 | object' 1266 | :: forall s t e1 e2 1267 | . Array (P.PComponent s t e1 e2 ReactElement) 1268 | -> P.PComponent s t e1 e2 ReactElement 1269 | object' = object mempty 1270 | 1271 | -- | Creates a Proact component for the `ol` React element. 1272 | ol 1273 | :: forall s t e1 e2 1274 | . Array (Options (Properties t e2)) 1275 | -> Array (P.PComponent s t e1 e2 ReactElement) 1276 | -> P.PComponent s t e1 e2 ReactElement 1277 | ol = createElement' "ol" 1278 | 1279 | -- | A property-less constructor for `ol`. 1280 | ol' 1281 | :: forall s t e1 e2 1282 | . Array (P.PComponent s t e1 e2 ReactElement) 1283 | -> P.PComponent s t e1 e2 ReactElement 1284 | ol' = ol mempty 1285 | 1286 | -- | Creates a Proact component for the `optgroup` React element. 1287 | optgroup 1288 | :: forall s t e1 e2 1289 | . Array (Options (Properties t e2)) 1290 | -> Array (P.PComponent s t e1 e2 ReactElement) 1291 | -> P.PComponent s t e1 e2 ReactElement 1292 | optgroup = createElement' "optgroup" 1293 | 1294 | -- | A property-less constructor for `optgroup`. 1295 | optgroup' 1296 | :: forall s t e1 e2 1297 | . Array (P.PComponent s t e1 e2 ReactElement) 1298 | -> P.PComponent s t e1 e2 ReactElement 1299 | optgroup' = optgroup mempty 1300 | 1301 | -- | Creates a Proact component for the `option` React element. 1302 | option 1303 | :: forall s t e1 e2 1304 | . Array (Options (Properties t e2)) 1305 | -> Array (P.PComponent s t e1 e2 ReactElement) 1306 | -> P.PComponent s t e1 e2 ReactElement 1307 | option = createElement' "option" 1308 | 1309 | -- | A property-less constructor for `option`. 1310 | option' 1311 | :: forall s t e1 e2 1312 | . Array (P.PComponent s t e1 e2 ReactElement) 1313 | -> P.PComponent s t e1 e2 ReactElement 1314 | option' = option mempty 1315 | 1316 | -- | Creates a Proact component for the `output` React element. 1317 | output 1318 | :: forall s t e1 e2 1319 | . Array (Options (Properties t e2)) 1320 | -> Array (P.PComponent s t e1 e2 ReactElement) 1321 | -> P.PComponent s t e1 e2 ReactElement 1322 | output = createElement' "output" 1323 | 1324 | -- | A property-less constructor for `output`. 1325 | output' 1326 | :: forall s t e1 e2 1327 | . Array (P.PComponent s t e1 e2 ReactElement) 1328 | -> P.PComponent s t e1 e2 ReactElement 1329 | output' = output mempty 1330 | 1331 | -- | Creates a Proact component for the `p` React element. 1332 | p 1333 | :: forall s t e1 e2 1334 | . Array (Options (Properties t e2)) 1335 | -> Array (P.PComponent s t e1 e2 ReactElement) 1336 | -> P.PComponent s t e1 e2 ReactElement 1337 | p = createElement' "p" 1338 | 1339 | -- | A property-less constructor for `p`. 1340 | p' 1341 | :: forall s t e1 e2 1342 | . Array (P.PComponent s t e1 e2 ReactElement) 1343 | -> P.PComponent s t e1 e2 ReactElement 1344 | p' = p mempty 1345 | 1346 | -- | Creates a Proact component for the `param` React element. 1347 | param 1348 | :: forall s t e1 e2 1349 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1350 | param props = createElement' "param" props [ ] 1351 | 1352 | -- | A property-less constructor for `param`. 1353 | param' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1354 | param' = param mempty 1355 | 1356 | -- | Creates a Proact component for the `picture` React element. 1357 | picture 1358 | :: forall s t e1 e2 1359 | . Array (Options (Properties t e2)) 1360 | -> Array (P.PComponent s t e1 e2 ReactElement) 1361 | -> P.PComponent s t e1 e2 ReactElement 1362 | picture = createElement' "picture" 1363 | 1364 | -- | A property-less constructor for `picture`. 1365 | picture' 1366 | :: forall s t e1 e2 1367 | . Array (P.PComponent s t e1 e2 ReactElement) 1368 | -> P.PComponent s t e1 e2 ReactElement 1369 | picture' = picture mempty 1370 | 1371 | -- | Creates a Proact component for the `pre` React element. 1372 | pre 1373 | :: forall s t e1 e2 1374 | . Array (Options (Properties t e2)) 1375 | -> Array (P.PComponent s t e1 e2 ReactElement) 1376 | -> P.PComponent s t e1 e2 ReactElement 1377 | pre = createElement' "pre" 1378 | 1379 | -- | A property-less constructor for `pre`. 1380 | pre' 1381 | :: forall s t e1 e2 1382 | . Array (P.PComponent s t e1 e2 ReactElement) 1383 | -> P.PComponent s t e1 e2 ReactElement 1384 | pre' = pre mempty 1385 | 1386 | -- | Creates a Proact component for the `progress` React element. 1387 | progress 1388 | :: forall s t e1 e2 1389 | . Array (Options (Properties t e2)) 1390 | -> Array (P.PComponent s t e1 e2 ReactElement) 1391 | -> P.PComponent s t e1 e2 ReactElement 1392 | progress = createElement' "progress" 1393 | 1394 | -- | A property-less constructor for `progress`. 1395 | progress' 1396 | :: forall s t e1 e2 1397 | . Array (P.PComponent s t e1 e2 ReactElement) 1398 | -> P.PComponent s t e1 e2 ReactElement 1399 | progress' = progress mempty 1400 | 1401 | -- | Creates a Proact component for the `q` React element. 1402 | q 1403 | :: forall s t e1 e2 1404 | . Array (Options (Properties t e2)) 1405 | -> Array (P.PComponent s t e1 e2 ReactElement) 1406 | -> P.PComponent s t e1 e2 ReactElement 1407 | q = createElement' "q" 1408 | 1409 | -- | A property-less constructor for `q`. 1410 | q' 1411 | :: forall s t e1 e2 1412 | . Array (P.PComponent s t e1 e2 ReactElement) 1413 | -> P.PComponent s t e1 e2 ReactElement 1414 | q' = q mempty 1415 | 1416 | -- | Creates a Proact component for the `rp` React element. 1417 | rp 1418 | :: forall s t e1 e2 1419 | . Array (Options (Properties t e2)) 1420 | -> Array (P.PComponent s t e1 e2 ReactElement) 1421 | -> P.PComponent s t e1 e2 ReactElement 1422 | rp = createElement' "rp" 1423 | 1424 | -- | A property-less constructor for `rp`. 1425 | rp' 1426 | :: forall s t e1 e2 1427 | . Array (P.PComponent s t e1 e2 ReactElement) 1428 | -> P.PComponent s t e1 e2 ReactElement 1429 | rp' = rp mempty 1430 | 1431 | -- | Creates a Proact component for the `rt` React element. 1432 | rt 1433 | :: forall s t e1 e2 1434 | . Array (Options (Properties t e2)) 1435 | -> Array (P.PComponent s t e1 e2 ReactElement) 1436 | -> P.PComponent s t e1 e2 ReactElement 1437 | rt = createElement' "rt" 1438 | 1439 | -- | A property-less constructor for `rt`. 1440 | rt' 1441 | :: forall s t e1 e2 1442 | . Array (P.PComponent s t e1 e2 ReactElement) 1443 | -> P.PComponent s t e1 e2 ReactElement 1444 | rt' = rt mempty 1445 | 1446 | -- | Creates a Proact component for the `ruby` React element. 1447 | ruby 1448 | :: forall s t e1 e2 1449 | . Array (Options (Properties t e2)) 1450 | -> Array (P.PComponent s t e1 e2 ReactElement) 1451 | -> P.PComponent s t e1 e2 ReactElement 1452 | ruby = createElement' "ruby" 1453 | 1454 | -- | A property-less constructor for `ruby`. 1455 | ruby' 1456 | :: forall s t e1 e2 1457 | . Array (P.PComponent s t e1 e2 ReactElement) 1458 | -> P.PComponent s t e1 e2 ReactElement 1459 | ruby' = ruby mempty 1460 | 1461 | -- | Creates a Proact component for the `s` React element. 1462 | s 1463 | :: forall s t e1 e2 1464 | . Array (Options (Properties t e2)) 1465 | -> Array (P.PComponent s t e1 e2 ReactElement) 1466 | -> P.PComponent s t e1 e2 ReactElement 1467 | s = createElement' "s" 1468 | 1469 | -- | A property-less constructor for `s`. 1470 | s' 1471 | :: forall s t e1 e2 1472 | . Array (P.PComponent s t e1 e2 ReactElement) 1473 | -> P.PComponent s t e1 e2 ReactElement 1474 | s' = s mempty 1475 | 1476 | -- | Creates a Proact component for the `samp` React element. 1477 | samp 1478 | :: forall s t e1 e2 1479 | . Array (Options (Properties t e2)) 1480 | -> Array (P.PComponent s t e1 e2 ReactElement) 1481 | -> P.PComponent s t e1 e2 ReactElement 1482 | samp = createElement' "samp" 1483 | 1484 | -- | A property-less constructor for `samp`. 1485 | samp' 1486 | :: forall s t e1 e2 1487 | . Array (P.PComponent s t e1 e2 ReactElement) 1488 | -> P.PComponent s t e1 e2 ReactElement 1489 | samp' = samp mempty 1490 | 1491 | -- | Creates a Proact component for the `script` React element. 1492 | script 1493 | :: forall s t e1 e2 1494 | . Array (Options (Properties t e2)) 1495 | -> Array (P.PComponent s t e1 e2 ReactElement) 1496 | -> P.PComponent s t e1 e2 ReactElement 1497 | script = createElement' "script" 1498 | 1499 | -- | A property-less constructor for `script`. 1500 | script' 1501 | :: forall s t e1 e2 1502 | . Array (P.PComponent s t e1 e2 ReactElement) 1503 | -> P.PComponent s t e1 e2 ReactElement 1504 | script' = script mempty 1505 | 1506 | -- | Creates a Proact component for the `section` React element. 1507 | section 1508 | :: forall s t e1 e2 1509 | . Array (Options (Properties t e2)) 1510 | -> Array (P.PComponent s t e1 e2 ReactElement) 1511 | -> P.PComponent s t e1 e2 ReactElement 1512 | section = createElement' "section" 1513 | 1514 | -- | A property-less constructor for `section`. 1515 | section' 1516 | :: forall s t e1 e2 1517 | . Array (P.PComponent s t e1 e2 ReactElement) 1518 | -> P.PComponent s t e1 e2 ReactElement 1519 | section' = section mempty 1520 | 1521 | -- | Creates a Proact component for the `select` React element. 1522 | select 1523 | :: forall s t e1 e2 1524 | . Array (Options (Properties t e2)) 1525 | -> Array (P.PComponent s t e1 e2 ReactElement) 1526 | -> P.PComponent s t e1 e2 ReactElement 1527 | select = createElement' "select" 1528 | 1529 | -- | A property-less constructor for `select`. 1530 | select' 1531 | :: forall s t e1 e2 1532 | . Array (P.PComponent s t e1 e2 ReactElement) 1533 | -> P.PComponent s t e1 e2 ReactElement 1534 | select' = select mempty 1535 | 1536 | -- | Creates a Proact component for the `small` React element. 1537 | small 1538 | :: forall s t e1 e2 1539 | . Array (Options (Properties t e2)) 1540 | -> Array (P.PComponent s t e1 e2 ReactElement) 1541 | -> P.PComponent s t e1 e2 ReactElement 1542 | small = createElement' "small" 1543 | 1544 | -- | A property-less constructor for `small`. 1545 | small' 1546 | :: forall s t e1 e2 1547 | . Array (P.PComponent s t e1 e2 ReactElement) 1548 | -> P.PComponent s t e1 e2 ReactElement 1549 | small' = small mempty 1550 | 1551 | -- | Creates a Proact component for the `source` React element. 1552 | source 1553 | :: forall s t e1 e2 1554 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1555 | source props = createElement' "source" props [ ] 1556 | 1557 | -- | A property-less constructor for `source`. 1558 | source' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1559 | source' = source mempty 1560 | 1561 | -- | Creates a Proact component for the `span` React element. 1562 | span 1563 | :: forall s t e1 e2 1564 | . Array (Options (Properties t e2)) 1565 | -> Array (P.PComponent s t e1 e2 ReactElement) 1566 | -> P.PComponent s t e1 e2 ReactElement 1567 | span = createElement' "span" 1568 | 1569 | -- | A property-less constructor for `span`. 1570 | span' 1571 | :: forall s t e1 e2 1572 | . Array (P.PComponent s t e1 e2 ReactElement) 1573 | -> P.PComponent s t e1 e2 ReactElement 1574 | span' = span mempty 1575 | 1576 | -- | Creates a Proact component for the `strong` React element. 1577 | strong 1578 | :: forall s t e1 e2 1579 | . Array (Options (Properties t e2)) 1580 | -> Array (P.PComponent s t e1 e2 ReactElement) 1581 | -> P.PComponent s t e1 e2 ReactElement 1582 | strong = createElement' "strong" 1583 | 1584 | -- | A property-less constructor for `strong`. 1585 | strong' 1586 | :: forall s t e1 e2 1587 | . Array (P.PComponent s t e1 e2 ReactElement) 1588 | -> P.PComponent s t e1 e2 ReactElement 1589 | strong' = strong mempty 1590 | 1591 | -- | Creates a Proact component for the `style` React element. 1592 | style 1593 | :: forall s t e1 e2 1594 | . Array (Options (Properties t e2)) 1595 | -> Array (P.PComponent s t e1 e2 ReactElement) 1596 | -> P.PComponent s t e1 e2 ReactElement 1597 | style = createElement' "style" 1598 | 1599 | -- | A property-less constructor for `style`. 1600 | style' 1601 | :: forall s t e1 e2 1602 | . Array (P.PComponent s t e1 e2 ReactElement) 1603 | -> P.PComponent s t e1 e2 ReactElement 1604 | style' = style mempty 1605 | 1606 | -- | Creates a Proact component for the `sub` React element. 1607 | sub 1608 | :: forall s t e1 e2 1609 | . Array (Options (Properties t e2)) 1610 | -> Array (P.PComponent s t e1 e2 ReactElement) 1611 | -> P.PComponent s t e1 e2 ReactElement 1612 | sub = createElement' "sub" 1613 | 1614 | -- | A property-less constructor for `sub`. 1615 | sub' 1616 | :: forall s t e1 e2 1617 | . Array (P.PComponent s t e1 e2 ReactElement) 1618 | -> P.PComponent s t e1 e2 ReactElement 1619 | sub' = sub mempty 1620 | 1621 | -- | Creates a Proact component for the `summary` React element. 1622 | summary 1623 | :: forall s t e1 e2 1624 | . Array (Options (Properties t e2)) 1625 | -> Array (P.PComponent s t e1 e2 ReactElement) 1626 | -> P.PComponent s t e1 e2 ReactElement 1627 | summary = createElement' "summary" 1628 | 1629 | -- | A property-less constructor for `summary`. 1630 | summary' 1631 | :: forall s t e1 e2 1632 | . Array (P.PComponent s t e1 e2 ReactElement) 1633 | -> P.PComponent s t e1 e2 ReactElement 1634 | summary' = summary mempty 1635 | 1636 | -- | Creates a Proact component for the `sup` React element. 1637 | sup 1638 | :: forall s t e1 e2 1639 | . Array (Options (Properties t e2)) 1640 | -> Array (P.PComponent s t e1 e2 ReactElement) 1641 | -> P.PComponent s t e1 e2 ReactElement 1642 | sup = createElement' "sup" 1643 | 1644 | -- | A property-less constructor for `sup`. 1645 | sup' 1646 | :: forall s t e1 e2 1647 | . Array (P.PComponent s t e1 e2 ReactElement) 1648 | -> P.PComponent s t e1 e2 ReactElement 1649 | sup' = sup mempty 1650 | 1651 | -- | Creates a Proact component for the `table` React element. 1652 | table 1653 | :: forall s t e1 e2 1654 | . Array (Options (Properties t e2)) 1655 | -> Array (P.PComponent s t e1 e2 ReactElement) 1656 | -> P.PComponent s t e1 e2 ReactElement 1657 | table = createElement' "table" 1658 | 1659 | -- | A property-less constructor for `table`. 1660 | table' 1661 | :: forall s t e1 e2 1662 | . Array (P.PComponent s t e1 e2 ReactElement) 1663 | -> P.PComponent s t e1 e2 ReactElement 1664 | table' = table mempty 1665 | 1666 | -- | Creates a Proact component for the `tbody` React element. 1667 | tbody 1668 | :: forall s t e1 e2 1669 | . Array (Options (Properties t e2)) 1670 | -> Array (P.PComponent s t e1 e2 ReactElement) 1671 | -> P.PComponent s t e1 e2 ReactElement 1672 | tbody = createElement' "tbody" 1673 | 1674 | -- | A property-less constructor for `tbody`. 1675 | tbody' 1676 | :: forall s t e1 e2 1677 | . Array (P.PComponent s t e1 e2 ReactElement) 1678 | -> P.PComponent s t e1 e2 ReactElement 1679 | tbody' = tbody mempty 1680 | 1681 | -- | Creates a Proact component for the `td` React element. 1682 | td 1683 | :: forall s t e1 e2 1684 | . Array (Options (Properties t e2)) 1685 | -> Array (P.PComponent s t e1 e2 ReactElement) 1686 | -> P.PComponent s t e1 e2 ReactElement 1687 | td = createElement' "td" 1688 | 1689 | -- | A property-less constructor for `td`. 1690 | td' 1691 | :: forall s t e1 e2 1692 | . Array (P.PComponent s t e1 e2 ReactElement) 1693 | -> P.PComponent s t e1 e2 ReactElement 1694 | td' = td mempty 1695 | 1696 | -- | Creates a Proact component for the `textarea` React element. 1697 | textarea 1698 | :: forall s t e1 e2 1699 | . Array (Options (Properties t e2)) 1700 | -> Array (P.PComponent s t e1 e2 ReactElement) 1701 | -> P.PComponent s t e1 e2 ReactElement 1702 | textarea = createElement' "textarea" 1703 | 1704 | -- | A property-less constructor for `textarea`. 1705 | textarea' 1706 | :: forall s t e1 e2 1707 | . Array (P.PComponent s t e1 e2 ReactElement) 1708 | -> P.PComponent s t e1 e2 ReactElement 1709 | textarea' = textarea mempty 1710 | 1711 | -- | Creates a Proact component for the `tfoot` React element. 1712 | tfoot 1713 | :: forall s t e1 e2 1714 | . Array (Options (Properties t e2)) 1715 | -> Array (P.PComponent s t e1 e2 ReactElement) 1716 | -> P.PComponent s t e1 e2 ReactElement 1717 | tfoot = createElement' "tfoot" 1718 | 1719 | -- | A property-less constructor for `tfoot`. 1720 | tfoot' 1721 | :: forall s t e1 e2 1722 | . Array (P.PComponent s t e1 e2 ReactElement) 1723 | -> P.PComponent s t e1 e2 ReactElement 1724 | tfoot' = tfoot mempty 1725 | 1726 | -- | Creates a Proact component for the `th` React element. 1727 | th 1728 | :: forall s t e1 e2 1729 | . Array (Options (Properties t e2)) 1730 | -> Array (P.PComponent s t e1 e2 ReactElement) 1731 | -> P.PComponent s t e1 e2 ReactElement 1732 | th = createElement' "th" 1733 | 1734 | -- | A property-less constructor for `th`. 1735 | th' 1736 | :: forall s t e1 e2 1737 | . Array (P.PComponent s t e1 e2 ReactElement) 1738 | -> P.PComponent s t e1 e2 ReactElement 1739 | th' = th mempty 1740 | 1741 | -- | Creates a Proact component for the `thead` React element. 1742 | thead 1743 | :: forall s t e1 e2 1744 | . Array (Options (Properties t e2)) 1745 | -> Array (P.PComponent s t e1 e2 ReactElement) 1746 | -> P.PComponent s t e1 e2 ReactElement 1747 | thead = createElement' "thead" 1748 | 1749 | -- | A property-less constructor for `thead`. 1750 | thead' 1751 | :: forall s t e1 e2 1752 | . Array (P.PComponent s t e1 e2 ReactElement) 1753 | -> P.PComponent s t e1 e2 ReactElement 1754 | thead' = thead mempty 1755 | 1756 | -- | Creates a Proact component for the `time` React element. 1757 | time 1758 | :: forall s t e1 e2 1759 | . Array (Options (Properties t e2)) 1760 | -> Array (P.PComponent s t e1 e2 ReactElement) 1761 | -> P.PComponent s t e1 e2 ReactElement 1762 | time = createElement' "time" 1763 | 1764 | -- | A property-less constructor for `time`. 1765 | time' 1766 | :: forall s t e1 e2 1767 | . Array (P.PComponent s t e1 e2 ReactElement) 1768 | -> P.PComponent s t e1 e2 ReactElement 1769 | time' = time mempty 1770 | 1771 | -- | Creates a Proact component for the `title` React element. 1772 | title 1773 | :: forall s t e1 e2 1774 | . Array (Options (Properties t e2)) 1775 | -> Array (P.PComponent s t e1 e2 ReactElement) 1776 | -> P.PComponent s t e1 e2 ReactElement 1777 | title = createElement' "title" 1778 | 1779 | -- | A property-less constructor for `title`. 1780 | title' 1781 | :: forall s t e1 e2 1782 | . Array (P.PComponent s t e1 e2 ReactElement) 1783 | -> P.PComponent s t e1 e2 ReactElement 1784 | title' = title mempty 1785 | 1786 | -- | Creates a Proact component for the `tr` React element. 1787 | tr 1788 | :: forall s t e1 e2 1789 | . Array (Options (Properties t e2)) 1790 | -> Array (P.PComponent s t e1 e2 ReactElement) 1791 | -> P.PComponent s t e1 e2 ReactElement 1792 | tr = createElement' "tr" 1793 | 1794 | -- | A property-less constructor for `tr`. 1795 | tr' 1796 | :: forall s t e1 e2 1797 | . Array (P.PComponent s t e1 e2 ReactElement) 1798 | -> P.PComponent s t e1 e2 ReactElement 1799 | tr' = tr mempty 1800 | 1801 | -- | Creates a Proact component for the `track` React element. 1802 | track 1803 | :: forall s t e1 e2 1804 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1805 | track props = createElement' "track" props [ ] 1806 | 1807 | -- | A property-less constructor for `track`. 1808 | track' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1809 | track' = track mempty 1810 | 1811 | -- | Creates a Proact component for the `u` React element. 1812 | u 1813 | :: forall s t e1 e2 1814 | . Array (Options (Properties t e2)) 1815 | -> Array (P.PComponent s t e1 e2 ReactElement) 1816 | -> P.PComponent s t e1 e2 ReactElement 1817 | u = createElement' "u" 1818 | 1819 | -- | A property-less constructor for `u`. 1820 | u' 1821 | :: forall s t e1 e2 1822 | . Array (P.PComponent s t e1 e2 ReactElement) 1823 | -> P.PComponent s t e1 e2 ReactElement 1824 | u' = u mempty 1825 | 1826 | -- | Creates a Proact component for the `ul` React element. 1827 | ul 1828 | :: forall s t e1 e2 1829 | . Array (Options (Properties t e2)) 1830 | -> Array (P.PComponent s t e1 e2 ReactElement) 1831 | -> P.PComponent s t e1 e2 ReactElement 1832 | ul = createElement' "ul" 1833 | 1834 | -- | A property-less constructor for `ul`. 1835 | ul' 1836 | :: forall s t e1 e2 1837 | . Array (P.PComponent s t e1 e2 ReactElement) 1838 | -> P.PComponent s t e1 e2 ReactElement 1839 | ul' = ul mempty 1840 | 1841 | -- | Creates a Proact component for the `var` React element. 1842 | var 1843 | :: forall s t e1 e2 1844 | . Array (Options (Properties t e2)) 1845 | -> Array (P.PComponent s t e1 e2 ReactElement) 1846 | -> P.PComponent s t e1 e2 ReactElement 1847 | var = createElement' "var" 1848 | 1849 | -- | A property-less constructor for `var`. 1850 | var' 1851 | :: forall s t e1 e2 1852 | . Array (P.PComponent s t e1 e2 ReactElement) 1853 | -> P.PComponent s t e1 e2 ReactElement 1854 | var' = var mempty 1855 | 1856 | -- | Creates a Proact component for the `video` React element. 1857 | video 1858 | :: forall s t e1 e2 1859 | . Array (Options (Properties t e2)) 1860 | -> Array (P.PComponent s t e1 e2 ReactElement) 1861 | -> P.PComponent s t e1 e2 ReactElement 1862 | video = createElement' "video" 1863 | 1864 | -- | A property-less constructor for `video`. 1865 | video' 1866 | :: forall s t e1 e2 1867 | . Array (P.PComponent s t e1 e2 ReactElement) 1868 | -> P.PComponent s t e1 e2 ReactElement 1869 | video' = video mempty 1870 | 1871 | -- | Creates a Proact component for the `wbr` React element. 1872 | wbr 1873 | :: forall s t e1 e2 1874 | . Array (Options (Properties t e2)) -> P.PComponent s t e1 e2 ReactElement 1875 | wbr props = createElement' "wbr" props [ ] 1876 | 1877 | -- | A property-less constructor for `wbr`. 1878 | wbr' :: forall s t e1 e2 . P.PComponent s t e1 e2 ReactElement 1879 | wbr' = wbr mempty 1880 | 1881 | -- Creates a React element from a class, dispatcher, list of options and an 1882 | -- array of React children. 1883 | foreign import _createElement 1884 | :: forall p s e 1885 | . ReactClass p 1886 | -> Foreign 1887 | -> Array ReactElement 1888 | -> { element :: ReactElement 1889 | , feedList :: Array (Feed (P.EventHandler s e Unit)) 1890 | } 1891 | 1892 | -- The Fragment React class. 1893 | foreign import _fragment :: forall p . ReactClass p 1894 | 1895 | -- Creates a Proact component from a tagged React class. 1896 | createElement' 1897 | :: forall s t e1 e2 1898 | . String 1899 | -> Array (Options (Properties t e2)) 1900 | -> Array (P.PComponent s t e1 e2 ReactElement) 1901 | -> P.PComponent s t e1 e2 ReactElement 1902 | createElement' class_ props children = 1903 | sequence children >>= createElement (tag class_) props 1904 | 1905 | -- Constructs a React class from a label. 1906 | tag :: forall p . String -> ReactClass p 1907 | tag = unsafeCoerce 1908 | -------------------------------------------------------------------------------- /src/Proact/DOM/Props.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license MIT 3 | Props.purs 4 | -} 5 | 6 | -- | This module provides utilities that create properties for React components. 7 | -- | 8 | -- | Event properties are special in that they integrate with Proact's Reactive 9 | -- | engine behind the scenes. Custom components with custom events can make use 10 | -- | of this integration by prefixing the event's property name with `_`, e.g. 11 | -- | `_onEvent`. Keep in mind, however, that the original property name, e.g. 12 | -- | `onEvent`, from the source component doesn't change, only its `Option` 13 | -- | name. 14 | 15 | module Proact.DOM.Props 16 | where 17 | 18 | import Data.Function.Uncurried 19 | ( mkFn1 20 | , mkFn2 21 | , mkFn3 22 | , mkFn4 23 | , mkFn5 24 | , mkFn6 25 | , mkFn7 26 | , mkFn8 27 | , mkFn9 28 | , mkFn10 29 | ) 30 | import Data.Functor.Contravariant (cmap) 31 | import Data.Options (Option, opt) 32 | import Prelude ((<<<), Unit) 33 | import Proact (EventHandler) 34 | import React.SyntheticEvent 35 | ( SyntheticEvent 36 | , SyntheticAnimationEvent 37 | , SyntheticClipboardEvent 38 | , SyntheticCompositionEvent 39 | , SyntheticInputEvent 40 | , SyntheticKeyboardEvent 41 | , SyntheticFocusEvent 42 | , SyntheticMouseEvent 43 | , SyntheticTouchEvent 44 | , SyntheticTransitionEvent 45 | , SyntheticUIEvent 46 | , SyntheticWheelEvent 47 | ) 48 | 49 | -- | Represents the properties of a React Element. 50 | data Properties s (e :: # Type) 51 | 52 | -- | Builds an option from an Event Handler that requires one argument. 53 | mkEventOpt 54 | :: forall arg s e 55 | . String -> Option (Properties s e) (arg -> EventHandler s e Unit) 56 | mkEventOpt = cmap mkFn1 <<< opt 57 | 58 | -- | Builds an option from an Event Handler that requires two arguments. 59 | mkEventOpt2 60 | :: forall arg1 arg2 s e 61 | . String -> Option (Properties s e) (arg1 -> arg2 -> EventHandler s e Unit) 62 | mkEventOpt2 = cmap mkFn2 <<< opt 63 | 64 | -- | Builds an option from an Event Handler that requires three arguments. 65 | mkEventOpt3 66 | :: forall arg1 arg2 arg3 s e 67 | . String 68 | -> Option (Properties s e) (arg1 -> arg2 -> arg3 -> EventHandler s e Unit) 69 | mkEventOpt3 = cmap mkFn3 <<< opt 70 | 71 | -- | Builds an option from an Event Handler that requires four arguments. 72 | mkEventOpt4 73 | :: forall arg1 arg2 arg3 arg4 s e 74 | . String 75 | -> Option 76 | (Properties s e) 77 | (arg1 -> arg2 -> arg3 -> arg4 -> EventHandler s e Unit) 78 | mkEventOpt4 = cmap mkFn4 <<< opt 79 | 80 | -- | Builds an option from an Event Handler that requires five arguments. 81 | mkEventOpt5 82 | :: forall arg1 arg2 arg3 arg4 arg5 s e 83 | . String 84 | -> Option 85 | (Properties s e) 86 | (arg1 -> arg2 -> arg3 -> arg4 -> arg5 -> EventHandler s e Unit) 87 | mkEventOpt5 = cmap mkFn5 <<< opt 88 | 89 | -- | Builds an option from an Event Handler that requires six arguments. 90 | mkEventOpt6 91 | :: forall arg1 arg2 arg3 arg4 arg5 arg6 s e 92 | . String 93 | -> Option 94 | (Properties s e) 95 | (arg1 -> arg2 -> arg3 -> arg4 -> arg5 -> arg6 -> EventHandler s e Unit) 96 | mkEventOpt6 = cmap mkFn6 <<< opt 97 | 98 | -- | Builds an option from an Event Handler that requires seven arguments. 99 | mkEventOpt7 100 | :: forall arg1 arg2 arg3 arg4 arg5 arg6 arg7 s e 101 | . String 102 | -> Option 103 | (Properties s e) 104 | ( arg1 105 | -> arg2 106 | -> arg3 107 | -> arg4 108 | -> arg5 109 | -> arg6 110 | -> arg7 111 | -> EventHandler s e Unit 112 | ) 113 | mkEventOpt7 = cmap mkFn7 <<< opt 114 | 115 | -- | Builds an option from an Event Handler that requires eight arguments. 116 | mkEventOpt8 117 | :: forall arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 s e 118 | . String 119 | -> Option 120 | (Properties s e) 121 | ( arg1 122 | -> arg2 123 | -> arg3 124 | -> arg4 125 | -> arg5 126 | -> arg6 127 | -> arg7 128 | -> arg8 129 | -> EventHandler s e Unit 130 | ) 131 | mkEventOpt8 = cmap mkFn8 <<< opt 132 | 133 | -- | Builds an option from an Event Handler that requires nine arguments. 134 | mkEventOpt9 135 | :: forall arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 s e 136 | . String 137 | -> Option 138 | (Properties s e) 139 | ( arg1 140 | -> arg2 141 | -> arg3 142 | -> arg4 143 | -> arg5 144 | -> arg6 145 | -> arg7 146 | -> arg8 147 | -> arg9 148 | -> EventHandler s e Unit 149 | ) 150 | mkEventOpt9 = cmap mkFn9 <<< opt 151 | 152 | -- | Builds an option from an Event Handler that requires ten arguments. 153 | mkEventOpt10 154 | :: forall arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 s e 155 | . String 156 | -> Option 157 | (Properties s e) 158 | ( arg1 159 | -> arg2 160 | -> arg3 161 | -> arg4 162 | -> arg5 163 | -> arg6 164 | -> arg7 165 | -> arg8 166 | -> arg9 167 | -> arg10 168 | -> EventHandler s e Unit 169 | ) 170 | mkEventOpt10 = cmap mkFn10 <<< opt 171 | 172 | -- | Creates an option for the `accept` property. 173 | accept :: forall s e . Option (Properties s e) String 174 | accept = opt "accept" 175 | 176 | -- | Creates an option for the `acceptCharset` property. 177 | acceptCharset :: forall s e . Option (Properties s e) String 178 | acceptCharset = opt "acceptCharset" 179 | 180 | -- | Creates an option for the `accessKey` property. 181 | accessKey :: forall s e . Option (Properties s e) String 182 | accessKey = opt "accessKey" 183 | 184 | -- | Creates an option for the `action` property. 185 | action :: forall s e . Option (Properties s e) String 186 | action = opt "action" 187 | 188 | -- | Creates an option for the `allowFullScreen` property. 189 | allowFullScreen :: forall s e . Option (Properties s e) Boolean 190 | allowFullScreen = opt "allowFullScreen" 191 | 192 | -- | Creates an option for the `allowTransparency` property. 193 | allowTransparency :: forall s e . Option (Properties s e) Boolean 194 | allowTransparency = opt "allowTransparency" 195 | 196 | -- | Creates an option for the `alt` property. 197 | alt :: forall s e . Option (Properties s e) String 198 | alt = opt "alt" 199 | 200 | -- | Creates an option for the `async` property. 201 | async :: forall s e . Option (Properties s e) Boolean 202 | async = opt "async" 203 | 204 | -- | Creates an option for the `autoComplete` property. 205 | autoComplete :: forall s e . Option (Properties s e) String 206 | autoComplete = opt "autoComplete" 207 | 208 | -- | Creates an option for the `autoFocus` property. 209 | autoFocus :: forall s e . Option (Properties s e) Boolean 210 | autoFocus = opt "autoFocus" 211 | 212 | -- | Creates an option for the `autoPlay` property. 213 | autoPlay :: forall s e . Option (Properties s e) Boolean 214 | autoPlay = opt "autoPlay" 215 | 216 | -- | Creates an option for the `capture` property. 217 | capture :: forall s e . Option (Properties s e) Boolean 218 | capture = opt "capture" 219 | 220 | -- | Creates an option for the `cellPadding` property. 221 | cellPadding :: forall s e . Option (Properties s e) String 222 | cellPadding = opt "cellPadding" 223 | 224 | -- | Creates an option for the `cellSpacing` property. 225 | cellSpacing :: forall s e . Option (Properties s e) String 226 | cellSpacing = opt "cellSpacing" 227 | 228 | -- | Creates an option for the `charSet` property. 229 | charSet :: forall s e . Option (Properties s e) String 230 | charSet = opt "charSet" 231 | 232 | -- | Creates an option for the `challenge` property. 233 | challenge :: forall s e . Option (Properties s e) String 234 | challenge = opt "checked" 235 | 236 | -- | Creates an option for the `checked` property. 237 | checked :: forall s e . Option (Properties s e) Boolean 238 | checked = opt "checked" 239 | 240 | -- | Creates an option for the `cite` property. 241 | cite :: forall s e . Option (Properties s e) String 242 | cite = opt "cite" 243 | 244 | -- | Creates an option for the `classID` property. 245 | classID :: forall s e . Option (Properties s e) String 246 | classID = opt "classID" 247 | 248 | -- | Creates an option for the `className` property. 249 | className :: forall s e . Option (Properties s e) String 250 | className = opt "className" 251 | 252 | -- | Creates an option for the `cols` property. 253 | cols :: forall s e . Option (Properties s e) Int 254 | cols = opt "cols" 255 | 256 | -- | Creates an option for the `colSpan` property. 257 | colSpan :: forall s e . Option (Properties s e) Int 258 | colSpan = opt "colSpan" 259 | 260 | -- | Creates an option for the `content` property. 261 | content :: forall s e . Option (Properties s e) String 262 | content = opt "content" 263 | 264 | -- | Creates an option for the `contentEditable` property. 265 | contentEditable :: forall s e . Option (Properties s e) Boolean 266 | contentEditable = opt "contentEditable" 267 | 268 | -- | Creates an option for the `contextMenu` property. 269 | contextMenu :: forall s e . Option (Properties s e) String 270 | contextMenu = opt "contextMenu" 271 | 272 | -- | Creates an option for the `controls` property. 273 | controls :: forall s e . Option (Properties s e) Boolean 274 | controls = opt "controls" 275 | 276 | -- | Creates an option for the `coords` property. 277 | coords :: forall s e . Option (Properties s e) String 278 | coords = opt "coords" 279 | 280 | -- | Creates an option for the `crossOrigin` property. 281 | crossOrigin :: forall s e . Option (Properties s e) String 282 | crossOrigin = opt "crossOrigin" 283 | 284 | -- | Creates an option for the `dateTime` property. 285 | dateTime :: forall s e . Option (Properties s e) String 286 | dateTime = opt "dateTime" 287 | 288 | -- | Creates an option for the `default` property. 289 | default :: forall s e . Option (Properties s e) Boolean 290 | default = opt "default" 291 | 292 | -- | Creates an option for the `defaultChecked` property. 293 | defaultChecked :: forall s e . Option (Properties s e) Boolean 294 | defaultChecked = opt "defaultChecked" 295 | 296 | -- | Creates an option for the `defaultValue` property. 297 | defaultValue :: forall s e . Option (Properties s e) String 298 | defaultValue = opt "defaultValue" 299 | 300 | -- | Creates an option for the `defer` property. 301 | defer :: forall s e . Option (Properties s e) Boolean 302 | defer = opt "defer" 303 | 304 | -- | Creates an option for the `dir` property. 305 | dir :: forall s e . Option (Properties s e) String 306 | dir = opt "dir" 307 | 308 | -- | Creates an option for the `disabled` property. 309 | disabled :: forall s e . Option (Properties s e) Boolean 310 | disabled = opt "disabled" 311 | 312 | -- | Creates an option for the `download` property. 313 | download :: forall s e . Option (Properties s e) String 314 | download = opt "download" 315 | 316 | -- | Creates an option for the `draggable` property. 317 | draggable :: forall s e . Option (Properties s e) Boolean 318 | draggable = opt "draggable" 319 | 320 | -- | Creates an option for the `encType` property. 321 | encType :: forall s e . Option (Properties s e) String 322 | encType = opt "encType" 323 | 324 | -- | Creates an option for the `form` property. 325 | form :: forall s e . Option (Properties s e) String 326 | form = opt "form" 327 | 328 | -- | Creates an option for the `formAction` property. 329 | formAction :: forall s e . Option (Properties s e) String 330 | formAction = opt "formAction" 331 | 332 | -- | Creates an option for the `formEncType` property. 333 | formEncType :: forall s e . Option (Properties s e) String 334 | formEncType = opt "formEncType" 335 | 336 | -- | Creates an option for the `formMethod` property. 337 | formMethod :: forall s e . Option (Properties s e) String 338 | formMethod = opt "formMethod" 339 | 340 | -- | Creates an option for the `formNoValidate` property. 341 | formNoValidate :: forall s e . Option (Properties s e) Boolean 342 | formNoValidate = opt "formNoValidate" 343 | 344 | -- | Creates an option for the `formTarget` property. 345 | formTarget :: forall s e . Option (Properties s e) String 346 | formTarget = opt "formTarget" 347 | 348 | -- | Creates an option for the `frameBorder` property. 349 | frameBorder :: forall s e . Option (Properties s e) String 350 | frameBorder = opt "frameBorder" 351 | 352 | -- | Creates an option for the `headers` property. 353 | headers :: forall s e . Option (Properties s e) String 354 | headers = opt "headers" 355 | 356 | -- | Creates an option for the `height` property. 357 | height :: forall s e . Option (Properties s e) String 358 | height = opt "height" 359 | 360 | -- | Creates an option for the `hidden` property. 361 | hidden :: forall s e . Option (Properties s e) Boolean 362 | hidden = opt "hidden" 363 | 364 | -- | Creates an option for the `high` property. 365 | high :: forall s e . Option (Properties s e) String 366 | high = opt "high" 367 | 368 | -- | Creates an option for the `href` property. 369 | href :: forall s e . Option (Properties s e) String 370 | href = opt "href" 371 | 372 | -- | Creates an option for the `hrefLang` property. 373 | hrefLang :: forall s e . Option (Properties s e) String 374 | hrefLang = opt "hrefLang" 375 | 376 | -- | Creates an option for the `htmlFor` property. 377 | htmlFor :: forall s e . Option (Properties s e) String 378 | htmlFor = opt "htmlFor" 379 | 380 | -- | Creates an option for the `httpEquiv` property. 381 | httpEquiv :: forall s e . Option (Properties s e) String 382 | httpEquiv = opt "httpEquiv" 383 | 384 | -- | Creates an option for the `icon` property. 385 | icon :: forall s e . Option (Properties s e) String 386 | icon = opt "icon" 387 | 388 | -- | Creates an option for the `_id` property. 389 | _id :: forall s e . Option (Properties s e) String 390 | _id = opt "id" 391 | 392 | -- | Creates an option for the `inputMode` property. 393 | inputMode :: forall s e . Option (Properties s e) String 394 | inputMode = opt "inputMode" 395 | 396 | -- | Creates an option for the `integrity` property. 397 | integrity :: forall s e . Option (Properties s e) String 398 | integrity = opt "integrity" 399 | 400 | -- | Creates an option for the `is` property. 401 | is :: forall s e . Option (Properties s e) String 402 | is = opt "is" 403 | 404 | -- | Creates an option for the `key` property. 405 | key :: forall s e . Option (Properties s e) String 406 | key = opt "key" 407 | 408 | -- | Creates an option for the `keyParams` property. 409 | keyParams :: forall s e . Option (Properties s e) String 410 | keyParams = opt "keyParams" 411 | 412 | -- | Creates an option for the `keyType` property. 413 | keyType :: forall s e . Option (Properties s e) String 414 | keyType = opt "keyType" 415 | 416 | -- | Creates an option for the `kind` property. 417 | kind :: forall s e . Option (Properties s e) String 418 | kind = opt "kind" 419 | 420 | -- | Creates an option for the `label` property. 421 | label :: forall s e . Option (Properties s e) String 422 | label = opt "label" 423 | 424 | -- | Creates an option for the `lang` property. 425 | lang :: forall s e . Option (Properties s e) String 426 | lang = opt "lang" 427 | 428 | -- | Creates an option for the `list` property. 429 | list :: forall s e . Option (Properties s e) String 430 | list = opt "list" 431 | 432 | -- | Creates an option for the `loop` property. 433 | loop :: forall s e . Option (Properties s e) Boolean 434 | loop = opt "loop" 435 | 436 | -- | Creates an option for the `low` property. 437 | low :: forall s e . Option (Properties s e) String 438 | low = opt "low" 439 | 440 | -- | Creates an option for the `manifest` property. 441 | manifest :: forall s e . Option (Properties s e) String 442 | manifest = opt "manifest" 443 | 444 | -- | Creates an option for the `marginHeight` property. 445 | marginHeight :: forall s e . Option (Properties s e) String 446 | marginHeight = opt "marginHeight" 447 | 448 | -- | Creates an option for the `marginWidth` property. 449 | marginWidth :: forall s e . Option (Properties s e) String 450 | marginWidth = opt "marginWidth" 451 | 452 | -- | Creates an option for the `max` property. 453 | max :: forall s e . Option (Properties s e) String 454 | max = opt "max" 455 | 456 | -- | Creates an option for the `maxLength` property. 457 | maxLength :: forall s e . Option (Properties s e) String 458 | maxLength = opt "maxLength" 459 | 460 | -- | Creates an option for the `media` property. 461 | media :: forall s e . Option (Properties s e) String 462 | media = opt "media" 463 | 464 | -- | Creates an option for the `mediaGroup` property. 465 | mediaGroup :: forall s e . Option (Properties s e) String 466 | mediaGroup = opt "mediaGroup" 467 | 468 | -- | Creates an option for the `method` property. 469 | method :: forall s e . Option (Properties s e) String 470 | method = opt "method" 471 | 472 | -- | Creates an option for the `min` property. 473 | min :: forall s e . Option (Properties s e) String 474 | min = opt "min" 475 | 476 | -- | Creates an option for the `minLength` property. 477 | minLength :: forall s e . Option (Properties s e) String 478 | minLength = opt "minLength" 479 | 480 | -- | Creates an option for the `multiple` property. 481 | multiple :: forall s e . Option (Properties s e) Boolean 482 | multiple = opt "multiple" 483 | 484 | -- | Creates an option for the `muted` property. 485 | muted :: forall s e . Option (Properties s e) Boolean 486 | muted = opt "muted" 487 | 488 | -- | Creates an option for the `name` property. 489 | name :: forall s e . Option (Properties s e) String 490 | name = opt "name" 491 | 492 | -- | Creates an option for the `nonce` property. 493 | nonce :: forall s e . Option (Properties s e) String 494 | nonce = opt "nonce" 495 | 496 | -- | Creates an option for the `noValidate` property. 497 | noValidate :: forall s e . Option (Properties s e) Boolean 498 | noValidate = opt "noValidate" 499 | 500 | -- | Creates an option for the `open` property. 501 | open :: forall s e . Option (Properties s e) Boolean 502 | open = opt "open" 503 | 504 | -- | Creates an option for the `optimum` property. 505 | optimum :: forall s e . Option (Properties s e) String 506 | optimum = opt "optimum" 507 | 508 | -- | Creates an option for the `pattern` property. 509 | pattern :: forall s e . Option (Properties s e) String 510 | pattern = opt "pattern" 511 | 512 | -- | Creates an option for the `placeholder` property. 513 | placeholder :: forall s e . Option (Properties s e) String 514 | placeholder = opt "placeholder" 515 | 516 | -- | Creates an option for the `poster` property. 517 | poster :: forall s e . Option (Properties s e) String 518 | poster = opt "poster" 519 | 520 | -- | Creates an option for the `preload` property. 521 | preload :: forall s e . Option (Properties s e) String 522 | preload = opt "preload" 523 | 524 | -- | Creates an option for the `profile` property. 525 | profile :: forall s e . Option (Properties s e) String 526 | profile = opt "profile" 527 | 528 | -- | Creates an option for the `radioGroup` property. 529 | radioGroup :: forall s e . Option (Properties s e) String 530 | radioGroup = opt "radioGroup" 531 | 532 | -- | Creates an option for the `readOnly` property. 533 | readOnly :: forall s e . Option (Properties s e) Boolean 534 | readOnly = opt "readOnly" 535 | 536 | -- | Creates an option for the `rel` property. 537 | rel :: forall s e . Option (Properties s e) String 538 | rel = opt "rel" 539 | 540 | -- | Creates an option for the `required` property. 541 | required :: forall s e . Option (Properties s e) Boolean 542 | required = opt "required" 543 | 544 | -- | Creates an option for the `reversed` property. 545 | reversed :: forall s e . Option (Properties s e) Boolean 546 | reversed = opt "reversed" 547 | 548 | -- | Creates an option for the `role` property. 549 | role :: forall s e . Option (Properties s e) String 550 | role = opt "role" 551 | 552 | -- | Creates an option for the `rows` property. 553 | rows :: forall s e . Option (Properties s e) Int 554 | rows = opt "rows" 555 | 556 | -- | Creates an option for the `rowSpan` property. 557 | rowSpan :: forall s e . Option (Properties s e) Int 558 | rowSpan = opt "rowSpan" 559 | 560 | -- | Creates an option for the `sandbox` property. 561 | sandbox :: forall s e . Option (Properties s e) String 562 | sandbox = opt "sandbox" 563 | 564 | -- | Creates an option for the `scope` property. 565 | scope :: forall s e . Option (Properties s e) String 566 | scope = opt "scope" 567 | 568 | -- | Creates an option for the `scoped` property. 569 | scoped :: forall s e . Option (Properties s e) Boolean 570 | scoped = opt "scoped" 571 | 572 | -- | Creates an option for the `scrolling` property. 573 | scrolling :: forall s e . Option (Properties s e) String 574 | scrolling = opt "scrolling" 575 | 576 | -- | Creates an option for the `seamless` property. 577 | seamless :: forall s e . Option (Properties s e) Boolean 578 | seamless = opt "seamless" 579 | 580 | -- | Creates an option for the `selected` property. 581 | selected :: forall s e . Option (Properties s e) Boolean 582 | selected = opt "selected" 583 | 584 | -- | Creates an option for the `shape` property. 585 | shape :: forall s e . Option (Properties s e) String 586 | shape = opt "shape" 587 | 588 | -- | Creates an option for the `size` property. 589 | size :: forall s e . Option (Properties s e) Int 590 | size = opt "size" 591 | 592 | -- | Creates an option for the `sizes` property. 593 | sizes :: forall s e . Option (Properties s e) String 594 | sizes = opt "sizes" 595 | 596 | -- | Creates an option for the `span` property. 597 | span :: forall s e . Option (Properties s e) Int 598 | span = opt "span" 599 | 600 | -- | Creates an option for the `spellCheck` property. 601 | spellCheck :: forall s e . Option (Properties s e) Boolean 602 | spellCheck = opt "spellCheck" 603 | 604 | -- | Creates an option for the `src` property. 605 | src :: forall s e . Option (Properties s e) String 606 | src = opt "src" 607 | 608 | -- | Creates an option for the `srcDoc` property. 609 | srcDoc :: forall s e . Option (Properties s e) String 610 | srcDoc = opt "srcDoc" 611 | 612 | -- | Creates an option for the `srcLang` property. 613 | srcLang :: forall s e . Option (Properties s e) String 614 | srcLang = opt "srcLang" 615 | 616 | -- | Creates an option for the `srcSet` property. 617 | srcSet :: forall s e . Option (Properties s e) String 618 | srcSet = opt "srcSet" 619 | 620 | -- | Creates an option for the `start` property. 621 | start :: forall s e . Option (Properties s e) Int 622 | start = opt "start" 623 | 624 | -- | Creates an option for the `step` property. 625 | step :: forall s e . Option (Properties s e) String 626 | step = opt "step" 627 | 628 | -- | Creates an option for the `summary` property. 629 | summary :: forall s e . Option (Properties s e) String 630 | summary = opt "summary" 631 | 632 | -- | Creates an option for the `tabIndex` property. 633 | tabIndex :: forall s e . Option (Properties s e) Int 634 | tabIndex = opt "tabIndex" 635 | 636 | -- | Creates an option for the `target` property. 637 | target :: forall s e . Option (Properties s e) String 638 | target = opt "target" 639 | 640 | -- | Creates an option for the `title` property. 641 | title :: forall s e . Option (Properties s e) String 642 | title = opt "title" 643 | 644 | -- | Creates an option for the `_type` property. 645 | _type :: forall s e . Option (Properties s e) String 646 | _type = opt "type" 647 | 648 | -- | Creates an option for the `useMap` property. 649 | useMap :: forall s e . Option (Properties s e) String 650 | useMap = opt "useMap" 651 | 652 | -- | Creates an option for the `value` property. 653 | value :: forall s e . Option (Properties s e) String 654 | value = opt "value" 655 | 656 | -- | Creates an option for the `valueArray` property. 657 | valueArray :: forall s e . Option (Properties s e) (Array String) 658 | valueArray = opt "value" 659 | 660 | -- | Creates an option for the `width` property. 661 | width :: forall s e . Option (Properties s e) String 662 | width = opt "width" 663 | 664 | -- | Creates an option for the `wmode` property. 665 | wmode :: forall s e . Option (Properties s e) String 666 | wmode = opt "wmode" 667 | 668 | -- | Creates an option for the `wrap` property. 669 | wrap :: forall s e . Option (Properties s e) String 670 | wrap = opt "wrap" 671 | 672 | -- RDFa Attributes 673 | 674 | -- | Creates an option for the `about` property. 675 | about :: forall s e . Option (Properties s e) String 676 | about = opt "about" 677 | 678 | -- | Creates an option for the `datatype` property. 679 | datatype :: forall s e . Option (Properties s e) String 680 | datatype = opt "datatype" 681 | 682 | -- | Creates an option for the `inlist` property. 683 | inlist :: forall s e . Option (Properties s e) String 684 | inlist = opt "inlist" 685 | 686 | -- | Creates an option for the `prefix` property. 687 | prefix :: forall s e . Option (Properties s e) String 688 | prefix = opt "prefix" 689 | 690 | -- | Creates an option for the `property` property. 691 | property :: forall s e . Option (Properties s e) String 692 | property = opt "property" 693 | 694 | -- | Creates an option for the `resource` property. 695 | resource :: forall s e . Option (Properties s e) String 696 | resource = opt "resource" 697 | 698 | -- | Creates an option for the `typeof` property. 699 | typeof :: forall s e . Option (Properties s e) String 700 | typeof = opt "typeof" 701 | 702 | -- | Creates an option for the `vocab` property. 703 | vocab :: forall s e . Option (Properties s e) String 704 | vocab = opt "vocab" 705 | 706 | -- Non-standard Attributes 707 | 708 | -- | Creates an option for the `autoCapitalize` property. 709 | autoCapitalize :: forall s e . Option (Properties s e) String 710 | autoCapitalize = opt "autoCapitalize" 711 | 712 | -- | Creates an option for the `autoCorrect` property. 713 | autoCorrect :: forall s e . Option (Properties s e) String 714 | autoCorrect = opt "autoCorrect" 715 | 716 | -- | Creates an option for the `autoSave` property. 717 | autoSave :: forall s e . Option (Properties s e) String 718 | autoSave = opt "autoSave" 719 | 720 | -- | Creates an option for the `color` property. 721 | color :: forall s e . Option (Properties s e) String 722 | color = opt "color" 723 | 724 | -- | Creates an option for the `itemProp` property. 725 | itemProp :: forall s e . Option (Properties s e) String 726 | itemProp = opt "itemProp" 727 | 728 | -- | Creates an option for the `itemScope` property. 729 | itemScope :: forall s e . Option (Properties s e) Boolean 730 | itemScope = opt "itemScope" 731 | 732 | -- | Creates an option for the `itemType` property. 733 | itemType :: forall s e . Option (Properties s e) String 734 | itemType = opt "itemType" 735 | 736 | -- | Creates an option for the `itemID` property. 737 | itemID :: forall s e . Option (Properties s e) String 738 | itemID = opt "itemID" 739 | 740 | -- | Creates an option for the `itemRef` property. 741 | itemRef :: forall s e . Option (Properties s e) String 742 | itemRef = opt "itemRef" 743 | 744 | -- | Creates an option for the `results` property. 745 | results :: forall s e . Option (Properties s e) Int 746 | results = opt "results" 747 | 748 | -- | Creates an option for the `security` property. 749 | security :: forall s e . Option (Properties s e) String 750 | security = opt "security" 751 | 752 | -- | Creates an option for the `unselectable` property. 753 | unselectable :: forall s e . Option (Properties s e) Boolean 754 | unselectable = opt "unselectable" 755 | 756 | -- Events 757 | 758 | -- | Creates an option for the `onAnimationStart` event. 759 | onAnimationStart 760 | :: forall s e 761 | . Option (Properties s e) (SyntheticAnimationEvent -> EventHandler s e Unit) 762 | onAnimationStart = mkEventOpt "_onAnimationStart" 763 | 764 | -- | Creates an option for the `onAnimationEnd` event. 765 | onAnimationEnd 766 | :: forall s e 767 | . Option (Properties s e) (SyntheticAnimationEvent -> EventHandler s e Unit) 768 | onAnimationEnd = mkEventOpt "_onAnimationEnd" 769 | 770 | -- | Creates an option for the `onAnimationIteration` event. 771 | onAnimationIteration 772 | :: forall s e 773 | . Option (Properties s e) (SyntheticAnimationEvent -> EventHandler s e Unit) 774 | onAnimationIteration = mkEventOpt "_onAnimationIteration" 775 | 776 | -- | Creates an option for the `onTransitionEnd` event. 777 | onTransitionEnd 778 | :: forall s e 779 | . Option 780 | (Properties s e) 781 | (SyntheticTransitionEvent -> EventHandler s e Unit) 782 | onTransitionEnd = mkEventOpt "_onTransitionEnd" 783 | 784 | -- | Creates an option for the `onToggle` event. 785 | onToggle 786 | :: forall s e 787 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 788 | onToggle = mkEventOpt "_onToggle" 789 | 790 | -- | Creates an option for the `onError` event. 791 | onError 792 | :: forall s e 793 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 794 | onError = mkEventOpt "_onError" 795 | 796 | -- | Creates an option for the `onLoad` event. 797 | onLoad 798 | :: forall s e 799 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 800 | onLoad = mkEventOpt "_onLoad" 801 | 802 | -- | Creates an option for the `onAbort` event. 803 | onAbort 804 | :: forall s e 805 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 806 | onAbort = mkEventOpt "_onAbort" 807 | 808 | -- | Creates an option for the `onCanPlay` event. 809 | onCanPlay 810 | :: forall s e 811 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 812 | onCanPlay = mkEventOpt "_onCanPlay" 813 | 814 | -- | Creates an option for the `onCanPlayThrough` event. 815 | onCanPlayThrough 816 | :: forall s e 817 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 818 | onCanPlayThrough = mkEventOpt "_onCanPlayThrough" 819 | 820 | -- | Creates an option for the `onDurationChange` event. 821 | onDurationChange 822 | :: forall s e 823 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 824 | onDurationChange = mkEventOpt "_onDurationChange" 825 | 826 | -- | Creates an option for the `onEmptied` event. 827 | onEmptied 828 | :: forall s e 829 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 830 | onEmptied = mkEventOpt "_onEmptied" 831 | 832 | -- | Creates an option for the `onEncrypted` event. 833 | onEncrypted 834 | :: forall s e 835 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 836 | onEncrypted = mkEventOpt "_onEncrypted" 837 | 838 | -- | Creates an option for the `onEnded` event. 839 | onEnded 840 | :: forall s e 841 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 842 | onEnded = mkEventOpt "_onEnded" 843 | 844 | -- | Creates an option for the `onLoadedData` event. 845 | onLoadedData 846 | :: forall s e 847 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 848 | onLoadedData = mkEventOpt "_onLoadedData" 849 | 850 | -- | Creates an option for the `onLoadedMetadata` event. 851 | onLoadedMetadata 852 | :: forall s e 853 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 854 | onLoadedMetadata = mkEventOpt "_onLoadedMetadata" 855 | 856 | -- | Creates an option for the `onLoadStart` event. 857 | onLoadStart 858 | :: forall s e 859 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 860 | onLoadStart = mkEventOpt "_onLoadStart" 861 | 862 | -- | Creates an option for the `onPause` event. 863 | onPause 864 | :: forall s e 865 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 866 | onPause = mkEventOpt "_onPause" 867 | 868 | -- | Creates an option for the `onPlay` event. 869 | onPlay 870 | :: forall s e 871 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 872 | onPlay = mkEventOpt "_onPlay" 873 | 874 | -- | Creates an option for the `onPlaying` event. 875 | onPlaying 876 | :: forall s e 877 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 878 | onPlaying = mkEventOpt "_onPlaying" 879 | 880 | -- | Creates an option for the `onProgress` event. 881 | onProgress 882 | :: forall s e 883 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 884 | onProgress = mkEventOpt "_onProgress" 885 | 886 | -- | Creates an option for the `onRateChange` event. 887 | onRateChange 888 | :: forall s e 889 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 890 | onRateChange = mkEventOpt "_onRateChange" 891 | 892 | -- | Creates an option for the `onSeeked` event. 893 | onSeeked 894 | :: forall s e 895 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 896 | onSeeked = mkEventOpt "_onSeeked" 897 | 898 | -- | Creates an option for the `onSeeking` event. 899 | onSeeking 900 | :: forall s e 901 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 902 | onSeeking = mkEventOpt "_onSeeking" 903 | 904 | -- | Creates an option for the `onStalled` event. 905 | onStalled 906 | :: forall s e 907 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 908 | onStalled = mkEventOpt "_onStalled" 909 | 910 | -- | Creates an option for the `onSuspend` event. 911 | onSuspend 912 | :: forall s e 913 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 914 | onSuspend = mkEventOpt "_onSuspend" 915 | 916 | -- | Creates an option for the `onTimeUpdate` event. 917 | onTimeUpdate 918 | :: forall s e 919 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 920 | onTimeUpdate = mkEventOpt "_onTimeUpdate" 921 | 922 | -- | Creates an option for the `onVolumeChange` event. 923 | onVolumeChange 924 | :: forall s e 925 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 926 | onVolumeChange = mkEventOpt "_onVolumeChange" 927 | 928 | -- | Creates an option for the `onWaiting` event. 929 | onWaiting 930 | :: forall s e 931 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 932 | onWaiting = mkEventOpt "_onWaiting" 933 | 934 | -- | Creates an option for the `onCopy` event. 935 | onCopy 936 | :: forall s e 937 | . Option (Properties s e) (SyntheticClipboardEvent -> EventHandler s e Unit) 938 | onCopy = mkEventOpt "_onCopy" 939 | 940 | -- | Creates an option for the `onCut` event. 941 | onCut 942 | :: forall s e 943 | . Option (Properties s e) (SyntheticClipboardEvent -> EventHandler s e Unit) 944 | onCut = mkEventOpt "_onCut" 945 | 946 | -- | Creates an option for the `onPaste` event. 947 | onPaste 948 | :: forall s e 949 | . Option (Properties s e) (SyntheticClipboardEvent -> EventHandler s e Unit) 950 | onPaste = mkEventOpt "_onPaste" 951 | 952 | -- | Creates an option for the `onCompositionEnd` event. 953 | onCompositionEnd 954 | :: forall s e 955 | . Option 956 | (Properties s e) 957 | (SyntheticCompositionEvent -> EventHandler s e Unit) 958 | onCompositionEnd = mkEventOpt "_onCompositionEnd" 959 | 960 | -- | Creates an option for the `onCompositionStart` event. 961 | onCompositionStart 962 | :: forall s e 963 | . Option 964 | (Properties s e) 965 | (SyntheticCompositionEvent -> EventHandler s e Unit) 966 | onCompositionStart = mkEventOpt "_onCompositionStart" 967 | 968 | -- | Creates an option for the `onCompositionUpdate` event. 969 | onCompositionUpdate 970 | :: forall s e 971 | . Option 972 | (Properties s e) 973 | (SyntheticCompositionEvent -> EventHandler s e Unit) 974 | onCompositionUpdate = mkEventOpt "_onCompositionUpdate" 975 | 976 | -- | Creates an option for the `onKeyDown` event. 977 | onKeyDown 978 | :: forall s e 979 | . Option (Properties s e) (SyntheticKeyboardEvent -> EventHandler s e Unit) 980 | onKeyDown = mkEventOpt "_onKeyDown" 981 | 982 | -- | Creates an option for the `onKeyPress` event. 983 | onKeyPress 984 | :: forall s e 985 | . Option (Properties s e) (SyntheticKeyboardEvent -> EventHandler s e Unit) 986 | onKeyPress = mkEventOpt "_onKeyPress" 987 | 988 | -- | Creates an option for the `onKeyUp` event. 989 | onKeyUp 990 | :: forall s e 991 | . Option (Properties s e) (SyntheticKeyboardEvent -> EventHandler s e Unit) 992 | onKeyUp = mkEventOpt "_onKeyUp" 993 | 994 | -- | Creates an option for the `onFocus` event. 995 | onFocus 996 | :: forall s e 997 | . Option (Properties s e) (SyntheticFocusEvent -> EventHandler s e Unit) 998 | onFocus = mkEventOpt "_onFocus" 999 | 1000 | -- | Creates an option for the `onBlur` event. 1001 | onBlur 1002 | :: forall s e 1003 | . Option (Properties s e) (SyntheticFocusEvent -> EventHandler s e Unit) 1004 | onBlur = mkEventOpt "_onBlur" 1005 | 1006 | -- | Creates an option for the `onChange` event. 1007 | onChange 1008 | :: forall s e 1009 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1010 | onChange = mkEventOpt "_onChange" 1011 | 1012 | -- | Creates an option for the `onInput` event. 1013 | onInput 1014 | :: forall s e 1015 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1016 | onInput = mkEventOpt "_onInput" 1017 | 1018 | -- | Creates an option for the `onInvalid` event. 1019 | onInvalid 1020 | :: forall s e 1021 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1022 | onInvalid = mkEventOpt "_onInvalid" 1023 | 1024 | -- | Creates an option for the `onSubmit` event. 1025 | onSubmit 1026 | :: forall s e 1027 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1028 | onSubmit = mkEventOpt "_onSubmit" 1029 | 1030 | -- | Creates an option for the `onClick` event. 1031 | onClick 1032 | :: forall s e 1033 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1034 | onClick = mkEventOpt "_onClick" 1035 | 1036 | -- | Creates an option for the `onContextMenu` event. 1037 | onContextMenu 1038 | :: forall s e 1039 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1040 | onContextMenu = mkEventOpt "_onContextMenu" 1041 | 1042 | -- | Creates an option for the `onDoubleClick` event. 1043 | onDoubleClick 1044 | :: forall s e 1045 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1046 | onDoubleClick = mkEventOpt "_onDoubleClick" 1047 | 1048 | -- | Creates an option for the `onDrag` event. 1049 | onDrag 1050 | :: forall s e 1051 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1052 | onDrag = mkEventOpt "_onDrag" 1053 | 1054 | -- | Creates an option for the `onDragEnd` event. 1055 | onDragEnd 1056 | :: forall s e 1057 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1058 | onDragEnd = mkEventOpt "_onDragEnd" 1059 | 1060 | -- | Creates an option for the `onDragEnter` event. 1061 | onDragEnter 1062 | :: forall s e 1063 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1064 | onDragEnter = mkEventOpt "_onDragEnter" 1065 | 1066 | -- | Creates an option for the `onDragExit` event. 1067 | onDragExit 1068 | :: forall s e 1069 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1070 | onDragExit = mkEventOpt "_onDragExit" 1071 | 1072 | -- | Creates an option for the `onDragLeave` event. 1073 | onDragLeave 1074 | :: forall s e 1075 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1076 | onDragLeave = mkEventOpt "_onDragLeave" 1077 | 1078 | -- | Creates an option for the `onDragOver` event. 1079 | onDragOver 1080 | :: forall s e 1081 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1082 | onDragOver = mkEventOpt "_onDragOver" 1083 | 1084 | -- | Creates an option for the `onDragStart` event. 1085 | onDragStart 1086 | :: forall s e 1087 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1088 | onDragStart = mkEventOpt "_onDragStart" 1089 | 1090 | -- | Creates an option for the `onDrop` event. 1091 | onDrop 1092 | :: forall s e 1093 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1094 | onDrop = mkEventOpt "_onDrop" 1095 | 1096 | -- | Creates an option for the `onMouseDown` event. 1097 | onMouseDown 1098 | :: forall s e 1099 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1100 | onMouseDown = mkEventOpt "_onMouseDown" 1101 | 1102 | -- | Creates an option for the `onMouseEnter` event. 1103 | onMouseEnter 1104 | :: forall s e 1105 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1106 | onMouseEnter = mkEventOpt "_onMouseEnter" 1107 | 1108 | -- | Creates an option for the `onMouseLeave` event. 1109 | onMouseLeave 1110 | :: forall s e 1111 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1112 | onMouseLeave = mkEventOpt "_onMouseLeave" 1113 | 1114 | -- | Creates an option for the `onMouseMove` event. 1115 | onMouseMove 1116 | :: forall s e 1117 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1118 | onMouseMove = mkEventOpt "_onMouseMove" 1119 | 1120 | -- | Creates an option for the `onMouseOut` event. 1121 | onMouseOut 1122 | :: forall s e 1123 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1124 | onMouseOut = mkEventOpt "_onMouseOut" 1125 | 1126 | -- | Creates an option for the `onMouseOver` event. 1127 | onMouseOver 1128 | :: forall s e 1129 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1130 | onMouseOver = mkEventOpt "_onMouseOver" 1131 | 1132 | -- | Creates an option for the `onMouseUp` event. 1133 | onMouseUp 1134 | :: forall s e 1135 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1136 | onMouseUp = mkEventOpt "_onMouseUp" 1137 | 1138 | -- | Creates an option for the `onSelect` event. 1139 | onSelect 1140 | :: forall s e 1141 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1142 | onSelect = mkEventOpt "_onSelect" 1143 | 1144 | -- | Creates an option for the `onTouchCancel` event. 1145 | onTouchCancel 1146 | :: forall s e 1147 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1148 | onTouchCancel = mkEventOpt "_onTouchCancel" 1149 | 1150 | -- | Creates an option for the `onTouchEnd` event. 1151 | onTouchEnd 1152 | :: forall s e 1153 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1154 | onTouchEnd = mkEventOpt "_onTouchEnd" 1155 | 1156 | -- | Creates an option for the `onTouchMove` event. 1157 | onTouchMove 1158 | :: forall s e 1159 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1160 | onTouchMove = mkEventOpt "_onTouchMove" 1161 | 1162 | -- | Creates an option for the `onTouchStart` event. 1163 | onTouchStart 1164 | :: forall s e 1165 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1166 | onTouchStart = mkEventOpt "_onTouchStart" 1167 | 1168 | -- | Creates an option for the `onScroll` event. 1169 | onScroll 1170 | :: forall s e 1171 | . Option (Properties s e) (SyntheticUIEvent -> EventHandler s e Unit) 1172 | onScroll = mkEventOpt "_onScroll" 1173 | 1174 | -- | Creates an option for the `onWheel` event. 1175 | onWheel 1176 | :: forall s e 1177 | . Option (Properties s e) (SyntheticWheelEvent -> EventHandler s e Unit) 1178 | onWheel = mkEventOpt "_onWheel" 1179 | 1180 | -- | Creates an option for the `onAnimationStartCapture` event. 1181 | onAnimationStartCapture 1182 | :: forall s e 1183 | . Option (Properties s e) (SyntheticAnimationEvent -> EventHandler s e Unit) 1184 | onAnimationStartCapture = mkEventOpt "_onAnimationStartCapture" 1185 | 1186 | -- | Creates an option for the `onAnimationEndCapture` event. 1187 | onAnimationEndCapture 1188 | :: forall s e 1189 | . Option (Properties s e) (SyntheticAnimationEvent -> EventHandler s e Unit) 1190 | onAnimationEndCapture = mkEventOpt "_onAnimationEndCapture" 1191 | 1192 | -- | Creates an option for the `onAnimationIterationCapture` event. 1193 | onAnimationIterationCapture 1194 | :: forall s e 1195 | . Option (Properties s e) (SyntheticAnimationEvent -> EventHandler s e Unit) 1196 | onAnimationIterationCapture = mkEventOpt "_onAnimationIterationCapture" 1197 | 1198 | -- | Creates an option for the `onTransitionEndCapture` event. 1199 | onTransitionEndCapture 1200 | :: forall s e 1201 | . Option (Properties s e) (SyntheticTransitionEvent -> EventHandler s e Unit) 1202 | onTransitionEndCapture = mkEventOpt "_onTransitionEndCapture" 1203 | 1204 | -- | Creates an option for the `onToggleCapture` event. 1205 | onToggleCapture 1206 | :: forall s e 1207 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1208 | onToggleCapture = mkEventOpt "_onToggleCapture" 1209 | 1210 | -- | Creates an option for the `onErrorCapture` event. 1211 | onErrorCapture 1212 | :: forall s e 1213 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1214 | onErrorCapture = mkEventOpt "_onErrorCapture" 1215 | 1216 | -- | Creates an option for the `onLoadCapture` event. 1217 | onLoadCapture 1218 | :: forall s e 1219 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1220 | onLoadCapture = mkEventOpt "_onLoadCapture" 1221 | 1222 | -- | Creates an option for the `onAbortCapture` event. 1223 | onAbortCapture 1224 | :: forall s e 1225 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1226 | onAbortCapture = mkEventOpt "_onAbortCapture" 1227 | 1228 | -- | Creates an option for the `onCanPlayCapture` event. 1229 | onCanPlayCapture 1230 | :: forall s e 1231 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1232 | onCanPlayCapture = mkEventOpt "_onCanPlayCapture" 1233 | 1234 | -- | Creates an option for the `onCanPlayThroughCapture` event. 1235 | onCanPlayThroughCapture 1236 | :: forall s e 1237 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1238 | onCanPlayThroughCapture = mkEventOpt "_onCanPlayThroughCapture" 1239 | 1240 | -- | Creates an option for the `onDurationChangeCapture` event. 1241 | onDurationChangeCapture 1242 | :: forall s e 1243 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1244 | onDurationChangeCapture = mkEventOpt "_onDurationChangeCapture" 1245 | 1246 | -- | Creates an option for the `onEmptiedCapture` event. 1247 | onEmptiedCapture 1248 | :: forall s e 1249 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1250 | onEmptiedCapture = mkEventOpt "_onEmptiedCapture" 1251 | 1252 | -- | Creates an option for the `onEncryptedCapture` event. 1253 | onEncryptedCapture 1254 | :: forall s e 1255 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1256 | onEncryptedCapture = mkEventOpt "_onEncryptedCapture" 1257 | 1258 | -- | Creates an option for the `onEndedCapture` event. 1259 | onEndedCapture 1260 | :: forall s e 1261 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1262 | onEndedCapture = mkEventOpt "_onEndedCapture" 1263 | 1264 | -- | Creates an option for the `onLoadedDataCapture` event. 1265 | onLoadedDataCapture 1266 | :: forall s e 1267 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1268 | onLoadedDataCapture = mkEventOpt "_onLoadedDataCapture" 1269 | 1270 | -- | Creates an option for the `onLoadedMetadataCapture` event. 1271 | onLoadedMetadataCapture 1272 | :: forall s e 1273 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1274 | onLoadedMetadataCapture = mkEventOpt "_onLoadedMetadataCapture" 1275 | 1276 | -- | Creates an option for the `onLoadStartCapture` event. 1277 | onLoadStartCapture 1278 | :: forall s e 1279 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1280 | onLoadStartCapture = mkEventOpt "_onLoadStartCapture" 1281 | 1282 | -- | Creates an option for the `onPauseCapture` event. 1283 | onPauseCapture 1284 | :: forall s e 1285 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1286 | onPauseCapture = mkEventOpt "_onPauseCapture" 1287 | 1288 | -- | Creates an option for the `onPlayCapture` event. 1289 | onPlayCapture 1290 | :: forall s e 1291 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1292 | onPlayCapture = mkEventOpt "_onPlayCapture" 1293 | 1294 | -- | Creates an option for the `onPlayingCapture` event. 1295 | onPlayingCapture 1296 | :: forall s e 1297 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1298 | onPlayingCapture = mkEventOpt "_onPlayingCapture" 1299 | 1300 | -- | Creates an option for the `onProgressCapture` event. 1301 | onProgressCapture 1302 | :: forall s e 1303 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1304 | onProgressCapture = mkEventOpt "_onProgressCapture" 1305 | 1306 | -- | Creates an option for the `onRateChangeCapture` event. 1307 | onRateChangeCapture 1308 | :: forall s e 1309 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1310 | onRateChangeCapture = mkEventOpt "_onRateChangeCapture" 1311 | 1312 | -- | Creates an option for the `onSeekedCapture` event. 1313 | onSeekedCapture 1314 | :: forall s e 1315 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1316 | onSeekedCapture = mkEventOpt "_onSeekedCapture" 1317 | 1318 | -- | Creates an option for the `onSeekingCapture` event. 1319 | onSeekingCapture 1320 | :: forall s e 1321 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1322 | onSeekingCapture = mkEventOpt "_onSeekingCapture" 1323 | 1324 | -- | Creates an option for the `onStalledCapture` event. 1325 | onStalledCapture 1326 | :: forall s e 1327 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1328 | onStalledCapture = mkEventOpt "_onStalledCapture" 1329 | 1330 | -- | Creates an option for the `onSuspendCapture` event. 1331 | onSuspendCapture 1332 | :: forall s e 1333 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1334 | onSuspendCapture = mkEventOpt "_onSuspendCapture" 1335 | 1336 | -- | Creates an option for the `onTimeUpdateCapture` event. 1337 | onTimeUpdateCapture 1338 | :: forall s e 1339 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1340 | onTimeUpdateCapture = mkEventOpt "_onTimeUpdateCapture" 1341 | 1342 | -- | Creates an option for the `onVolumeChangeCapture` event. 1343 | onVolumeChangeCapture 1344 | :: forall s e 1345 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1346 | onVolumeChangeCapture = mkEventOpt "_onVolumeChangeCapture" 1347 | 1348 | -- | Creates an option for the `onWaitingCapture` event. 1349 | onWaitingCapture 1350 | :: forall s e 1351 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1352 | onWaitingCapture = mkEventOpt "_onWaitingCapture" 1353 | 1354 | -- | Creates an option for the `onCopyCapture` event. 1355 | onCopyCapture 1356 | :: forall s e 1357 | . Option (Properties s e) (SyntheticClipboardEvent -> EventHandler s e Unit) 1358 | onCopyCapture = mkEventOpt "_onCopyCapture" 1359 | 1360 | -- | Creates an option for the `onCutCapture` event. 1361 | onCutCapture 1362 | :: forall s e 1363 | . Option (Properties s e) (SyntheticClipboardEvent -> EventHandler s e Unit) 1364 | onCutCapture = mkEventOpt "_onCutCapture" 1365 | 1366 | -- | Creates an option for the `onPasteCapture` event. 1367 | onPasteCapture 1368 | :: forall s e 1369 | . Option (Properties s e) (SyntheticClipboardEvent -> EventHandler s e Unit) 1370 | onPasteCapture = mkEventOpt "_onPasteCapture" 1371 | 1372 | -- | Creates an option for the `onCompositionEndCapture` event. 1373 | onCompositionEndCapture 1374 | :: forall s e 1375 | . Option 1376 | (Properties s e) 1377 | (SyntheticCompositionEvent -> EventHandler s e Unit) 1378 | onCompositionEndCapture = mkEventOpt "_onCompositionEndCapture" 1379 | 1380 | -- | Creates an option for the `onCompositionStartCapture` event. 1381 | onCompositionStartCapture 1382 | :: forall s e 1383 | . Option 1384 | (Properties s e) 1385 | (SyntheticCompositionEvent -> EventHandler s e Unit) 1386 | onCompositionStartCapture = mkEventOpt "_onCompositionStartCapture" 1387 | 1388 | -- | Creates an option for the `onCompositionUpdateCapture` event. 1389 | onCompositionUpdateCapture 1390 | :: forall s e 1391 | . Option 1392 | (Properties s e) 1393 | (SyntheticCompositionEvent -> EventHandler s e Unit) 1394 | onCompositionUpdateCapture = mkEventOpt "_onCompositionUpdateCapture" 1395 | 1396 | -- | Creates an option for the `onKeyDownCapture` event. 1397 | onKeyDownCapture 1398 | :: forall s e 1399 | . Option (Properties s e) (SyntheticKeyboardEvent -> EventHandler s e Unit) 1400 | onKeyDownCapture = mkEventOpt "_onKeyDownCapture" 1401 | 1402 | -- | Creates an option for the `onKeyPressCapture` event. 1403 | onKeyPressCapture 1404 | :: forall s e 1405 | . Option (Properties s e) (SyntheticKeyboardEvent -> EventHandler s e Unit) 1406 | onKeyPressCapture = mkEventOpt "_onKeyPressCapture" 1407 | 1408 | -- | Creates an option for the `onKeyUpCapture` event. 1409 | onKeyUpCapture 1410 | :: forall s e 1411 | . Option (Properties s e) (SyntheticKeyboardEvent -> EventHandler s e Unit) 1412 | onKeyUpCapture = mkEventOpt "_onKeyUpCapture" 1413 | 1414 | -- | Creates an option for the `onFocusCapture` event. 1415 | onFocusCapture 1416 | :: forall s e 1417 | . Option (Properties s e) (SyntheticFocusEvent -> EventHandler s e Unit) 1418 | onFocusCapture = mkEventOpt "_onFocusCapture" 1419 | 1420 | -- | Creates an option for the `onBlurCapture` event. 1421 | onBlurCapture 1422 | :: forall s e 1423 | . Option (Properties s e) (SyntheticFocusEvent -> EventHandler s e Unit) 1424 | onBlurCapture = mkEventOpt "_onBlurCapture" 1425 | 1426 | -- | Creates an option for the `onChangeCapture` event. 1427 | onChangeCapture 1428 | :: forall s e 1429 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1430 | onChangeCapture = mkEventOpt "_onChangeCapture" 1431 | 1432 | -- | Creates an option for the `onInputCapture` event. 1433 | onInputCapture 1434 | :: forall s e 1435 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1436 | onInputCapture = mkEventOpt "_onInputCapture" 1437 | 1438 | -- | Creates an option for the `onInvalidCapture` event. 1439 | onInvalidCapture 1440 | :: forall s e 1441 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1442 | onInvalidCapture = mkEventOpt "_onInvalidCapture" 1443 | 1444 | -- | Creates an option for the `onSubmitCapture` event. 1445 | onSubmitCapture 1446 | :: forall s e 1447 | . Option (Properties s e) (SyntheticInputEvent -> EventHandler s e Unit) 1448 | onSubmitCapture = mkEventOpt "_onSubmitCapture" 1449 | 1450 | -- | Creates an option for the `onClickCapture` event. 1451 | onClickCapture 1452 | :: forall s e 1453 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1454 | onClickCapture = mkEventOpt "_onClickCapture" 1455 | 1456 | -- | Creates an option for the `onContextMenuCapture` event. 1457 | onContextMenuCapture 1458 | :: forall s e 1459 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1460 | onContextMenuCapture = mkEventOpt "_onContextMenuCapture" 1461 | 1462 | -- | Creates an option for the `onDoubleClickCapture` event. 1463 | onDoubleClickCapture 1464 | :: forall s e 1465 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1466 | onDoubleClickCapture = mkEventOpt "_onDoubleClickCapture" 1467 | 1468 | -- | Creates an option for the `onDragCapture` event. 1469 | onDragCapture 1470 | :: forall s e 1471 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1472 | onDragCapture = mkEventOpt "_onDragCapture" 1473 | 1474 | -- | Creates an option for the `onDragEndCapture` event. 1475 | onDragEndCapture 1476 | :: forall s e 1477 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1478 | onDragEndCapture = mkEventOpt "_onDragEndCapture" 1479 | 1480 | -- | Creates an option for the `onDragEnterCapture` event. 1481 | onDragEnterCapture 1482 | :: forall s e 1483 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1484 | onDragEnterCapture = mkEventOpt "_onDragEnterCapture" 1485 | 1486 | -- | Creates an option for the `onDragExitCapture` event. 1487 | onDragExitCapture 1488 | :: forall s e 1489 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1490 | onDragExitCapture = mkEventOpt "_onDragExitCapture" 1491 | 1492 | -- | Creates an option for the `onDragLeaveCapture` event. 1493 | onDragLeaveCapture 1494 | :: forall s e 1495 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1496 | onDragLeaveCapture = mkEventOpt "_onDragLeaveCapture" 1497 | 1498 | -- | Creates an option for the `onDragOverCapture` event. 1499 | onDragOverCapture 1500 | :: forall s e 1501 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1502 | onDragOverCapture = mkEventOpt "_onDragOverCapture" 1503 | 1504 | -- | Creates an option for the `onDragStartCapture` event. 1505 | onDragStartCapture 1506 | :: forall s e 1507 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1508 | onDragStartCapture = mkEventOpt "_onDragStartCapture" 1509 | 1510 | -- | Creates an option for the `onDropCapture` event. 1511 | onDropCapture 1512 | :: forall s e 1513 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1514 | onDropCapture = mkEventOpt "_onDropCapture" 1515 | 1516 | -- | Creates an option for the `onMouseDownCapture` event. 1517 | onMouseDownCapture 1518 | :: forall s e 1519 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1520 | onMouseDownCapture = mkEventOpt "_onMouseDownCapture" 1521 | 1522 | -- | Creates an option for the `onMouseEnterCapture` event. 1523 | onMouseEnterCapture 1524 | :: forall s e 1525 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1526 | onMouseEnterCapture = mkEventOpt "_onMouseEnterCapture" 1527 | 1528 | -- | Creates an option for the `onMouseLeaveCapture` event. 1529 | onMouseLeaveCapture 1530 | :: forall s e 1531 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1532 | onMouseLeaveCapture = mkEventOpt "_onMouseLeaveCapture" 1533 | 1534 | -- | Creates an option for the `onMouseMoveCapture` event. 1535 | onMouseMoveCapture 1536 | :: forall s e 1537 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1538 | onMouseMoveCapture = mkEventOpt "_onMouseMoveCapture" 1539 | 1540 | -- | Creates an option for the `onMouseOutCapture` event. 1541 | onMouseOutCapture 1542 | :: forall s e 1543 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1544 | onMouseOutCapture = mkEventOpt "_onMouseOutCapture" 1545 | 1546 | -- | Creates an option for the `onMouseOverCapture` event. 1547 | onMouseOverCapture 1548 | :: forall s e 1549 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1550 | onMouseOverCapture = mkEventOpt "_onMouseOverCapture" 1551 | 1552 | -- | Creates an option for the `onMouseUpCapture` event. 1553 | onMouseUpCapture 1554 | :: forall s e 1555 | . Option (Properties s e) (SyntheticMouseEvent -> EventHandler s e Unit) 1556 | onMouseUpCapture = mkEventOpt "_onMouseUpCapture" 1557 | 1558 | -- | Creates an option for the `onSelectCapture` event. 1559 | onSelectCapture 1560 | :: forall s e 1561 | . Option (Properties s e) (SyntheticEvent -> EventHandler s e Unit) 1562 | onSelectCapture = mkEventOpt "_onSelectCapture" 1563 | 1564 | -- | Creates an option for the `onTouchCancelCapture` event. 1565 | onTouchCancelCapture 1566 | :: forall s e 1567 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1568 | onTouchCancelCapture = mkEventOpt "_onTouchCancelCapture" 1569 | 1570 | -- | Creates an option for the `onTouchEndCapture` event. 1571 | onTouchEndCapture 1572 | :: forall s e 1573 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1574 | onTouchEndCapture = mkEventOpt "_onTouchEndCapture" 1575 | 1576 | -- | Creates an option for the `onTouchMoveCapture` event. 1577 | onTouchMoveCapture 1578 | :: forall s e 1579 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1580 | onTouchMoveCapture = mkEventOpt "_onTouchMoveCapture" 1581 | 1582 | -- | Creates an option for the `onTouchStartCapture` event. 1583 | onTouchStartCapture 1584 | :: forall s e 1585 | . Option (Properties s e) (SyntheticTouchEvent -> EventHandler s e Unit) 1586 | onTouchStartCapture = mkEventOpt "_onTouchStartCapture" 1587 | 1588 | -- | Creates an option for the `onScrollCapture` event. 1589 | onScrollCapture 1590 | :: forall s e 1591 | . Option (Properties s e) (SyntheticUIEvent -> EventHandler s e Unit) 1592 | onScrollCapture = mkEventOpt "_onScrollCapture" 1593 | 1594 | -- | Creates an option for the `onWheelCapture` event. 1595 | onWheelCapture 1596 | :: forall s e 1597 | . Option (Properties s e) (SyntheticWheelEvent -> EventHandler s e Unit) 1598 | onWheelCapture = mkEventOpt "_onWheelCapture" 1599 | 1600 | -- | Creates an option for the `style` property. 1601 | style :: forall r s e . Option (Properties s e) { | r } 1602 | style = opt "style" 1603 | -------------------------------------------------------------------------------- /src/Proact/Event.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license LITHE 3 | Event.purs 4 | -} 5 | 6 | module Proact.Event 7 | ( class Event 8 | , subscribe 9 | ) 10 | where 11 | 12 | import Effect (Effect) 13 | import Prelude (Unit) 14 | 15 | -- | The `Event` type class notifies subscribers whenever a new event is 16 | -- | triggered. 17 | class Event e 18 | where 19 | -- | Registers a new subscriber. 20 | subscribe :: forall a . (a -> Effect Unit) -> e a -> Effect Unit 21 | -------------------------------------------------------------------------------- /src/Proact/Event/Feed.js: -------------------------------------------------------------------------------- 1 | /* 2 | @license MIT 3 | Feed.js 4 | */ 5 | 6 | "use strict"; 7 | 8 | var Feed = function () { 9 | this.subscribers = []; 10 | 11 | this.subscribe = function (observer) { 12 | this.subscribers.push(observer); 13 | }.bind(this); 14 | 15 | this.notify = function (a) { 16 | for (var observer of this.subscribers) { 17 | observer(a)(); 18 | } 19 | }.bind(this); 20 | }; 21 | 22 | exports._feed = function () { 23 | return new Feed(); 24 | }; 25 | 26 | exports._notify = function (a, feed) { 27 | feed.notify(a) 28 | }; 29 | 30 | exports._subscribe = function (observer, feed) { 31 | feed.subscribe(observer) 32 | }; 33 | -------------------------------------------------------------------------------- /src/Proact/Event/Feed.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license LITHE 3 | Feed.purs 4 | -} 5 | 6 | -- | This module introduces the `Feed` data type which is useful as a 7 | -- | communication channel between two components in which one sends messages to 8 | -- | the other that acts as a subscriber. 9 | 10 | module Proact.Event.Feed 11 | ( Feed 12 | , feed 13 | , notify 14 | ) 15 | where 16 | 17 | import Effect (Effect) 18 | import Effect.Uncurried (EffectFn2, runEffectFn2) 19 | import Prelude (Unit) 20 | import Proact.Event (class Event) 21 | 22 | -- | Represents a classic implementation of the Observer pattern that notifies 23 | -- | new events to a list of subscribers. 24 | foreign import data Feed :: Type -> Type 25 | 26 | -- Feed :: Event 27 | 28 | instance eventFeed :: Event Feed 29 | where 30 | subscribe = runEffectFn2 _subscribe 31 | 32 | -- | Constructs a new `Feed` with no subscribers. 33 | feed :: forall a . Effect (Feed a) 34 | feed = _feed 35 | 36 | -- | Notifies all subscribers about a new event. 37 | notify :: forall a . a -> Feed a -> Effect Unit 38 | notify = runEffectFn2 _notify 39 | 40 | -- Constructs a new `Feed` with no subscribers. 41 | foreign import _feed :: forall a . Effect (Feed a) 42 | 43 | -- Notifies all subscribers about a new event. 44 | foreign import _notify :: forall a . EffectFn2 a (Feed a) Unit 45 | 46 | -- Adds a new subscriber to the `Feed`. 47 | foreign import _subscribe 48 | :: forall a . EffectFn2 (a -> Effect Unit) (Feed a) Unit 49 | -------------------------------------------------------------------------------- /src/Proact/Event/Series.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license LITHE 3 | Series.purs 4 | -} 5 | 6 | -- | This module introduces the `Series` data type which generalizes a series of 7 | -- | asynchronous `Aff` operations as a stream of events that may happen in the 8 | -- | future. Series can be composed together as monoids. 9 | -- | 10 | -- | Series always emit the latest event available which depends on the time the 11 | -- | asynchronous operation was started. For example, given the three requests 12 | -- | A, B and C, assume they are dispatched in that same order but arrive A, C 13 | -- | and B. In that scenario, the results of A and C would be notified to the 14 | -- | subscribers of the series but the one from B would be discarded. 15 | 16 | module Proact.Event.Series 17 | ( Series 18 | , empty 19 | , kill 20 | , mute 21 | , serialize 22 | ) 23 | where 24 | 25 | import Data.DateTime.Instant (unInstant) 26 | import Data.Either (Either, hush) 27 | import Data.Time.Duration (Milliseconds(..)) 28 | import Effect (Effect) 29 | import Effect.Aff (Aff, Error, Fiber, attempt, joinFiber, killFiber, launchAff) 30 | import Effect.Aff (error) as Aff 31 | import Effect.Now (now) 32 | import Prelude 33 | import Proact.Event (class Event, subscribe) 34 | import Proact.Event.Signal (Signal(..), await, filterMap) 35 | 36 | -- | Represents a series of asynchronous operations, ordered by the time they 37 | -- | were dispatched. 38 | data Series a = Nothing | Series Number (Fiber a) (Signal (Either Error a)) 39 | 40 | -- Series :: Functor, Semigroup, Monoid, Event 41 | 42 | instance functorSeries :: Functor Series 43 | where 44 | map _ Nothing = Nothing 45 | map fn (Series timestamp fiber signal) = 46 | Series timestamp (map fn fiber) (map (map fn) signal) 47 | 48 | instance semigroupSeries :: Semigroup (Series a) 49 | where 50 | append Nothing series = series 51 | append series Nothing = series 52 | append 53 | (Series timestampA fiberA signalA) 54 | (Series timestampB fiberB signalB) = 55 | if timestampB > timestampA 56 | then append_ timestampB fiberA signalA fiberB signalB 57 | else append_ timestampA fiberB signalB fiberA signalA 58 | where 59 | append_ timestamp fiber1 signal1 fiber2 signal2 = 60 | Series timestamp fiber2 $ Signal \observer -> 61 | do 62 | subscribe (overwrite observer) signal2 63 | subscribe observer signal1 64 | where 65 | overwrite observer response = 66 | subscribe (const $ observer response) 67 | <<< await 68 | $ killFiber (Aff.error "Dismissing older request") fiber1 69 | 70 | instance monoidSeries :: Monoid (Series a) 71 | where 72 | mempty = Nothing 73 | 74 | instance eventSeries :: Event Series 75 | where 76 | subscribe _ Nothing = pure unit 77 | subscribe observer (Series _ _ signal) = 78 | subscribe observer $ filterMap hush signal 79 | 80 | -- | Checks whether there is at least one running request. 81 | empty :: forall a . Series a -> Boolean 82 | empty Nothing = true 83 | empty _ = false 84 | 85 | -- | Kills all the running requests of a `Series`. 86 | kill :: forall a . Error -> Series a -> Aff Unit 87 | kill _ Nothing = pure unit 88 | kill error (Series _ fiber _) = killFiber error fiber 89 | 90 | -- | Blocks signals to subscribers of the new `Series` without cancelling the 91 | -- | previous asynchronous request. Useful when composing new events from 92 | -- | existing series that may have already been subscribed to. 93 | mute :: Series ~> Series 94 | mute Nothing = Nothing 95 | mute (Series timestamp fiber _) = Series timestamp fiber mempty 96 | 97 | -- | Launches an asynchronous operation in a `Series`. 98 | serialize :: forall a . Aff a -> Effect (Series a) 99 | serialize aff = 100 | do 101 | Milliseconds timestamp <- map unInstant now 102 | fiber <- launchAff aff 103 | let signal = await <<< attempt $ joinFiber fiber 104 | pure $ Series timestamp fiber signal 105 | -------------------------------------------------------------------------------- /src/Proact/Event/Signal.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license LITHE 3 | Signal.purs 4 | -} 5 | 6 | -- | This module introduces the `Signal` data type which serves as the building 7 | -- | block of Functional Reactive Programs. 8 | -- | 9 | -- | Every `Event` can be transformed into a `Signal` via the `replicate` 10 | -- | function and once this is done, the stream of signals can be manipulated 11 | -- | through primitive functions such as mapping, filtering and folding or 12 | -- | through more complex operations derived from these. 13 | -- | 14 | -- | Signals can be composed together as monoids or monads, in both cases they 15 | -- | are analogous to lists, where `append` would serve as concatenation and 16 | -- | `join` as flattening. 17 | 18 | module Proact.Event.Signal 19 | ( SIGNAL 20 | , Signal(..) 21 | , _signal 22 | , await 23 | , debounce 24 | , filter 25 | , filterMap 26 | , foldp 27 | , receive 28 | , replicate 29 | , trigger 30 | ) 31 | where 32 | 33 | import Control.MonadZero (guard) 34 | import Data.DateTime.Instant (unInstant) 35 | import Data.Either (either) 36 | import Data.Maybe (Maybe(..), maybe) 37 | import Data.Time.Duration (Milliseconds(..)) 38 | import Effect (Effect) 39 | import Effect.Aff (Aff, runAff_) 40 | import Effect.Now (now) 41 | import Effect.Ref (modify, new) 42 | import Prelude 43 | import Proact.Event (class Event, subscribe) 44 | import Run (FProxy, Run, SProxy(..), lift) 45 | 46 | -- | A type synonym for Free programs that emit observable signals. 47 | type SIGNAL = FProxy Signal 48 | 49 | -- | Represents asynchronous events that emit observable signals. 50 | newtype Signal a = Signal ((a -> Effect Unit) -> Effect Unit) 51 | 52 | -- Signal :: Semigroup, Monoid, Functor, Apply, Applicative, Bind, Monad, Event 53 | 54 | derive newtype instance semigroupSignal :: Semigroup (Signal a) 55 | derive newtype instance monoidSignal :: Monoid (Signal a) 56 | 57 | instance functorSignal :: Functor Signal 58 | where 59 | map fn signal = Signal \observer -> subscribe (observer <<< fn) signal 60 | 61 | instance applySignal :: Apply Signal 62 | where 63 | apply = ap 64 | 65 | instance applicativeSignal :: Applicative Signal 66 | where 67 | pure a = Signal (_ $ a) 68 | 69 | instance bindSignal :: Bind Signal 70 | where 71 | bind signal fn = 72 | Signal \observer -> subscribe (subscribe observer <<< fn) signal 73 | 74 | instance monadSignal :: Monad Signal 75 | 76 | instance eventSignal :: Event Signal 77 | where 78 | subscribe observer (Signal signal) = signal observer 79 | 80 | -- | Gets the proxy symbol of the Signal effect. 81 | _signal :: SProxy "signal" 82 | _signal = SProxy 83 | 84 | -- | Emits a signal when an asynchronous operation completes. An error won't 85 | -- | fire the signal. 86 | await :: Aff ~> Signal 87 | await aff = Signal $ flip runAff_ aff <<< either (const $ pure unit) 88 | 89 | -- | Limits the rate at which a signal is fired. 90 | debounce :: Milliseconds -> Signal ~> Signal 91 | debounce (Milliseconds interval) = 92 | filterMap (_ >>= debounce_) 93 | <<< foldp (map <<< annotate) Nothing 94 | <<< trigger 95 | <<< map stamp 96 | where 97 | annotate signal last = signal { interval = signal.timestamp - last.timestamp } 98 | 99 | stamp signal = 100 | do 101 | Milliseconds timestamp <- map unInstant now 102 | pure { value : signal, timestamp, interval } 103 | 104 | debounce_ signal = 105 | do 106 | guard $ signal.interval >= interval 107 | pure signal.value 108 | 109 | -- | Filters out signals that don't match the given predicate. 110 | filter :: forall a . (a -> Boolean) -> Signal a -> Signal a 111 | filter predicate = filterMap maybeBool 112 | where 113 | maybeBool a = 114 | if predicate a 115 | then Just a 116 | else Nothing 117 | 118 | -- | Filters out signals that return `Nothing` when a predicate function is 119 | -- | applied to them. 120 | filterMap :: forall a b . (a -> Maybe b) -> Signal a -> Signal b 121 | filterMap predicate signal = 122 | Signal \observer -> 123 | subscribe (maybe (pure unit) observer) $ map predicate signal 124 | 125 | -- | Fires a past dependent signal whenever another signal is fired. 126 | foldp :: forall a b . (a -> b -> b) -> b -> Signal a -> Signal b 127 | foldp fn seed signal = 128 | Signal \observer -> 129 | do 130 | bRef <- new seed 131 | flip subscribe signal \a -> 132 | do 133 | b <- modify (fn a) bRef 134 | observer b 135 | 136 | -- | Subscribes to a given signal. 137 | receive :: forall e . Signal ~> Run (signal :: SIGNAL | e) 138 | receive = lift _signal 139 | 140 | -- | Replicates the signals fired from an `Event`. 141 | replicate :: forall e . Event e => e ~> Signal 142 | replicate event = Signal $ flip subscribe event 143 | 144 | -- | Triggers the `Effect` of each fired signal. 145 | trigger :: forall a . Signal (Effect a) -> Signal a 146 | trigger (Signal signal) = Signal $ signal <<< (=<<) 147 | -------------------------------------------------------------------------------- /src/Proact/Event/Single.purs: -------------------------------------------------------------------------------- 1 | {- 2 | @license LITHE 3 | Single.purs 4 | -} 5 | 6 | -- | This module introduces the `Single` data type which generalizes a series of 7 | -- | asynchronous `Aff` operations as a stream of events that may happen in the 8 | -- | future. Singles can be composed together as monoids. 9 | -- | 10 | -- | As the name implies, single requests only allow one asynchronous operation 11 | -- | to be running at once. Whenever a new request is introduced the previous 12 | -- | operation is killed off if it hadn't completed yet. 13 | 14 | module Proact.Event.Single 15 | ( Single 16 | , empty 17 | , kill 18 | , push 19 | ) 20 | where 21 | 22 | import Effect (Effect) 23 | import Effect.Aff (Aff, Error, Fiber, joinFiber, killFiber, launchAff) 24 | import Effect.Aff (error) as Aff 25 | import Prelude 26 | import Proact.Event (class Event, subscribe) 27 | import Proact.Event.Signal (Signal(..), await) 28 | 29 | -- | Represents an asynchronous operation that replaces previous requests on new 30 | -- | subscriptions. 31 | data Single a = Nothing | Single (Fiber a) (Signal a) 32 | 33 | -- Single :: Functor, Semigroup, Monoid, Event 34 | 35 | instance functorSingle :: Functor Single 36 | where 37 | map _ Nothing = Nothing 38 | map fn (Single fiber signal) = Single (map fn fiber) (map fn signal) 39 | 40 | instance semigroupSingle :: Semigroup (Single a) 41 | where 42 | append Nothing single = single 43 | append single Nothing = single 44 | append singleA (Single fiberB signalB) = 45 | Single fiberB $ Signal \observer -> 46 | subscribe (const $ subscribe observer signalB) 47 | <<< await 48 | $ kill (Aff.error "Dismissing older request") singleA 49 | 50 | instance monoidSingle :: Monoid (Single a) 51 | where 52 | mempty = Nothing 53 | 54 | instance eventSingle :: Event Single 55 | where 56 | subscribe _ Nothing = pure unit 57 | subscribe observer (Single _ signal) = subscribe observer signal 58 | 59 | -- | Checks whether there is a running request. 60 | empty :: forall a . Single a -> Boolean 61 | empty Nothing = true 62 | empty _ = false 63 | 64 | -- | Kills the current request of a `Single`. 65 | kill :: forall a . Error -> Single a -> Aff Unit 66 | kill _ Nothing = pure unit 67 | kill error (Single fiber _) = killFiber error fiber 68 | 69 | -- | Launches a `Single` asynchronous operation. 70 | push :: forall a . Aff a -> Effect (Single a) 71 | push aff = 72 | do 73 | fiber <- launchAff aff 74 | let signal = await $ joinFiber fiber 75 | pure $ Single fiber signal 76 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "js-tokens@^3.0.0 || ^4.0.0": 6 | version "4.0.0" 7 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 8 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 9 | 10 | loose-envify@^1.1.0, loose-envify@^1.4.0: 11 | version "1.4.0" 12 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 13 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 14 | dependencies: 15 | js-tokens "^3.0.0 || ^4.0.0" 16 | 17 | object-assign@^4.1.1: 18 | version "4.1.1" 19 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 20 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 21 | 22 | prop-types@^15.6.2: 23 | version "15.7.2" 24 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 25 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 26 | dependencies: 27 | loose-envify "^1.4.0" 28 | object-assign "^4.1.1" 29 | react-is "^16.8.1" 30 | 31 | react-is@^16.8.1: 32 | version "16.13.1" 33 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 34 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 35 | 36 | react@^16.13.1: 37 | version "16.13.1" 38 | resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" 39 | integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== 40 | dependencies: 41 | loose-envify "^1.1.0" 42 | object-assign "^4.1.1" 43 | prop-types "^15.6.2" 44 | --------------------------------------------------------------------------------