packages feed

glazier-react-widget 0.3.0.0 → 0.3.0.1

raw patch · 2 files changed

+30/−30 lines, 2 filesdep ~disposablePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: disposable

API changes (from Hackage documentation)

- Glazier.React.Widgets.Input: _Action :: AsAction r_aq5M => Prism' r_aq5M Action
+ Glazier.React.Widgets.Input: _Action :: AsAction r_aq5A => Prism' r_aq5A Action
- Glazier.React.Widgets.Input: _InputRefAction :: AsAction r_aq5M => Prism' r_aq5M JSVal
+ Glazier.React.Widgets.Input: _InputRefAction :: AsAction r_aq5A => Prism' r_aq5A JSVal
- Glazier.React.Widgets.Input: _SendCommandsAction :: AsAction r_aq5M => Prism' r_aq5M [Command]
+ Glazier.React.Widgets.Input: _SendCommandsAction :: AsAction r_aq5A => Prism' r_aq5A [Command]
- Glazier.React.Widgets.Input: _SubmitAction :: AsAction r_aq5M => Prism' r_aq5M JSString
+ Glazier.React.Widgets.Input: _SubmitAction :: AsAction r_aq5A => Prism' r_aq5A JSString
- Glazier.React.Widgets.Input: class AsAction r_aq5M where _SendCommandsAction = (.) _Action _SendCommandsAction _SubmitAction = (.) _Action _SubmitAction _InputRefAction = (.) _Action _InputRefAction
+ Glazier.React.Widgets.Input: class AsAction r_aq5A where _SendCommandsAction = (.) _Action _SendCommandsAction _SubmitAction = (.) _Action _SubmitAction _InputRefAction = (.) _Action _InputRefAction
- Glazier.React.Widgets.Input: class HasModel c_aqe0 where className = (.) model className inputRef = (.) model inputRef placeholder = (.) model placeholder uid = (.) model uid
+ Glazier.React.Widgets.Input: class HasModel c_aqdO where className = (.) model className inputRef = (.) model inputRef placeholder = (.) model placeholder uid = (.) model uid
- Glazier.React.Widgets.Input: class HasPlan c_aq9Y where component = (.) plan component onInputRef = (.) plan onInputRef onKeyDown = (.) plan onKeyDown onRender = (.) plan onRender
+ Glazier.React.Widgets.Input: class HasPlan c_aq9M where component = (.) plan component onInputRef = (.) plan onInputRef onKeyDown = (.) plan onKeyDown onRender = (.) plan onRender
- Glazier.React.Widgets.Input: className :: HasModel c_aqe0 => Lens' c_aqe0 JSString
+ Glazier.React.Widgets.Input: className :: HasModel c_aqdO => Lens' c_aqdO JSString
- Glazier.React.Widgets.Input: component :: HasPlan c_aq9Y => Lens' c_aq9Y ReactComponent
+ Glazier.React.Widgets.Input: component :: HasPlan c_aq9M => Lens' c_aq9M ReactComponent
- Glazier.React.Widgets.Input: inputRef :: HasModel c_aqe0 => Lens' c_aqe0 JSVal
+ Glazier.React.Widgets.Input: inputRef :: HasModel c_aqdO => Lens' c_aqdO JSVal
- Glazier.React.Widgets.Input: model :: HasModel c_aqe0 => Lens' c_aqe0 Model
+ Glazier.React.Widgets.Input: model :: HasModel c_aqdO => Lens' c_aqdO Model
- Glazier.React.Widgets.Input: onInputRef :: HasPlan c_aq9Y => Lens' c_aq9Y (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.Input: onInputRef :: HasPlan c_aq9M => Lens' c_aq9M (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.Input: onKeyDown :: HasPlan c_aq9Y => Lens' c_aq9Y (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.Input: onKeyDown :: HasPlan c_aq9M => Lens' c_aq9M (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.Input: onRender :: HasPlan c_aq9Y => Lens' c_aq9Y (Callback (JSVal -> IO JSVal))
+ Glazier.React.Widgets.Input: onRender :: HasPlan c_aq9M => Lens' c_aq9M (Callback (JSVal -> IO JSVal))
- Glazier.React.Widgets.Input: placeholder :: HasModel c_aqe0 => Lens' c_aqe0 JSString
+ Glazier.React.Widgets.Input: placeholder :: HasModel c_aqdO => Lens' c_aqdO JSString
- Glazier.React.Widgets.Input: plan :: HasPlan c_aq9Y => Lens' c_aq9Y Plan
+ Glazier.React.Widgets.Input: plan :: HasPlan c_aq9M => Lens' c_aq9M Plan
- Glazier.React.Widgets.Input: uid :: HasModel c_aqe0 => Lens' c_aqe0 JSString
+ Glazier.React.Widgets.Input: uid :: HasModel c_aqdO => Lens' c_aqdO JSString
- Glazier.React.Widgets.List: _Action :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 (Action key_agXR itemWidget_agXS)
+ Glazier.React.Widgets.List: _Action :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (Action key_agYQ itemWidget_agYR)
- Glazier.React.Widgets.List: _AddItemAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 (key_agXR, SuperModelOf itemWidget_agXS)
+ Glazier.React.Widgets.List: _AddItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (key_agYQ, SuperModelOf itemWidget_agYR)
- Glazier.React.Widgets.List: _ComponentDidUpdateAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 ()
+ Glazier.React.Widgets.List: _ComponentDidUpdateAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 ()
- Glazier.React.Widgets.List: _ComponentRefAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 JSVal
+ Glazier.React.Widgets.List: _ComponentRefAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 JSVal
- Glazier.React.Widgets.List: _DestroyItemAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 key_agXR
+ Glazier.React.Widgets.List: _DestroyItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 key_agYQ
- Glazier.React.Widgets.List: _ItemAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 (key_agXR, ActionOf itemWidget_agXS)
+ Glazier.React.Widgets.List: _ItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (key_agYQ, ActionOf itemWidget_agYR)
- Glazier.React.Widgets.List: _MakeItemAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 (key_agXR -> key_agXR, key_agXR -> F (Maker (ActionOf itemWidget_agXS)) (ModelOf itemWidget_agXS))
+ Glazier.React.Widgets.List: _MakeItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (key_agYQ -> key_agYQ, key_agYQ -> F (Maker (ActionOf itemWidget_agYR)) (ModelOf itemWidget_agYR))
- Glazier.React.Widgets.List: _RenderAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 ()
+ Glazier.React.Widgets.List: _RenderAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 ()
- Glazier.React.Widgets.List: _SetFilterAction :: AsAction r_ahp7 key_agXR itemWidget_agXS => Prism' r_ahp7 (SuperModelOf itemWidget_agXS -> Bool)
+ Glazier.React.Widgets.List: _SetFilterAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (SuperModelOf itemWidget_agYR -> Bool)
- Glazier.React.Widgets.List: class AsAction r_ahp7 key_agXR itemWidget_agXS | r_ahp7 -> key_agXR itemWidget_agXS where _ComponentRefAction = (.) _Action _ComponentRefAction _RenderAction = (.) _Action _RenderAction _ComponentDidUpdateAction = (.) _Action _ComponentDidUpdateAction _DestroyItemAction = (.) _Action _DestroyItemAction _MakeItemAction = (.) _Action _MakeItemAction _AddItemAction = (.) _Action _AddItemAction _ItemAction = (.) _Action _ItemAction _SetFilterAction = (.) _Action _SetFilterAction
+ Glazier.React.Widgets.List: class AsAction r_ahq6 key_agYQ itemWidget_agYR | r_ahq6 -> key_agYQ itemWidget_agYR where _ComponentRefAction = (.) _Action _ComponentRefAction _RenderAction = (.) _Action _RenderAction _ComponentDidUpdateAction = (.) _Action _ComponentDidUpdateAction _DestroyItemAction = (.) _Action _DestroyItemAction _MakeItemAction = (.) _Action _MakeItemAction _AddItemAction = (.) _Action _AddItemAction _ItemAction = (.) _Action _ItemAction _SetFilterAction = (.) _Action _SetFilterAction
- Glazier.React.Widgets.List: class HasModel c_ahMw key_agXh itemWidget_agXi | c_ahMw -> key_agXh itemWidget_agXi where className = (.) model className componentRef = (.) model componentRef deferredCommands = (.) model deferredCommands frameNum = (.) model frameNum itemKey = (.) model itemKey itemsFilter = (.) model itemsFilter itemsModel = (.) model itemsModel uid = (.) model uid
+ Glazier.React.Widgets.List: class HasModel c_ahNv key_agYg itemWidget_agYh | c_ahNv -> key_agYg itemWidget_agYh where className = (.) model className componentRef = (.) model componentRef deferredCommands = (.) model deferredCommands frameNum = (.) model frameNum itemKey = (.) model itemKey itemsFilter = (.) model itemsFilter itemsModel = (.) model itemsModel uid = (.) model uid
- Glazier.React.Widgets.List: class HasPlan c_ahIh where component = (.) plan component onComponentDidUpdate = (.) plan onComponentDidUpdate onComponentRef = (.) plan onComponentRef onRender = (.) plan onRender
+ Glazier.React.Widgets.List: class HasPlan c_ahJg where component = (.) plan component onComponentDidUpdate = (.) plan onComponentDidUpdate onComponentRef = (.) plan onComponentRef onRender = (.) plan onRender
- Glazier.React.Widgets.List: className :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw JSString
+ Glazier.React.Widgets.List: className :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv JSString
- Glazier.React.Widgets.List: component :: HasPlan c_ahIh => Lens' c_ahIh ReactComponent
+ Glazier.React.Widgets.List: component :: HasPlan c_ahJg => Lens' c_ahJg ReactComponent
- Glazier.React.Widgets.List: componentRef :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw JSVal
+ Glazier.React.Widgets.List: componentRef :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv JSVal
- Glazier.React.Widgets.List: deferredCommands :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw (DList (Command key_agXh itemWidget_agXi))
+ Glazier.React.Widgets.List: deferredCommands :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv (DList (Command key_agYg itemWidget_agYh))
- Glazier.React.Widgets.List: frameNum :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw Int
+ Glazier.React.Widgets.List: frameNum :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv Int
- Glazier.React.Widgets.List: itemKey :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw key_agXh
+ Glazier.React.Widgets.List: itemKey :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv key_agYg
- Glazier.React.Widgets.List: itemsFilter :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw (SuperModelOf itemWidget_agXi -> Bool)
+ Glazier.React.Widgets.List: itemsFilter :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv (SuperModelOf itemWidget_agYh -> Bool)
- Glazier.React.Widgets.List: itemsModel :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw (Map key_agXh (SuperModelOf itemWidget_agXi))
+ Glazier.React.Widgets.List: itemsModel :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv (Map key_agYg (SuperModelOf itemWidget_agYh))
- Glazier.React.Widgets.List: model :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw (Model key_agXh itemWidget_agXi)
+ Glazier.React.Widgets.List: model :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv (Model key_agYg itemWidget_agYh)
- Glazier.React.Widgets.List: onComponentDidUpdate :: HasPlan c_ahIh => Lens' c_ahIh (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.List: onComponentDidUpdate :: HasPlan c_ahJg => Lens' c_ahJg (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.List: onComponentRef :: HasPlan c_ahIh => Lens' c_ahIh (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.List: onComponentRef :: HasPlan c_ahJg => Lens' c_ahJg (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.List: onRender :: HasPlan c_ahIh => Lens' c_ahIh (Callback (JSVal -> IO JSVal))
+ Glazier.React.Widgets.List: onRender :: HasPlan c_ahJg => Lens' c_ahJg (Callback (JSVal -> IO JSVal))
- Glazier.React.Widgets.List: plan :: HasPlan c_ahIh => Lens' c_ahIh Plan
+ Glazier.React.Widgets.List: plan :: HasPlan c_ahJg => Lens' c_ahJg Plan
- Glazier.React.Widgets.List: uid :: HasModel c_ahMw key_agXh itemWidget_agXi => Lens' c_ahMw JSString
+ Glazier.React.Widgets.List: uid :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv JSString

Files

README.md view
@@ -17,7 +17,7 @@  ## Exports All widgets should export at the minimum the following:-```+```haskell module Glazier.React.Widgets.Input     ( Command(..)     , Action(..)@@ -42,7 +42,7 @@  ## Command `Command`s are the result of the `Gadget` stateful processing of `Action`. It is a pure value that is interpreted effectfully.-```+```haskell data Command     = RenderCommand (SuperModel Model Plan) [Property] JSVal     | DisposeCommand SomeDisposable@@ -51,26 +51,26 @@ Some common commands are:  ### RenderCommand-```+```haskell RenderCommand (SuperModel Model Plan) [Property] JSVal ``` This is send by `Gadget` when the re-rendering is required. It contains the`SuperModel` of the widget (to swap the latest `Design` into the `Frame`), the new React component state as a list of properties (usually just a sequence number), and the javascript reference to the javascript component.  ### DisposeCommand-```+```haskell DisposeCommand SomeDisposable ``` This contains the list of callbacks to dispose after the next render frame (after [`componentDidUpdate`](https://facebook.github.io/react/docs/react-component.html#componentdidupdate) is called.  ### MakerCommand-```+```haskell MakerCommand (F (Maker Action) Action) ``` This is the command to run the `Maker` instruction in the `Maker` interpreter which results in an `Action` to dispatch back tot he gadget.  ## Action This contains the events that the widget `Gadget` processes.-```+```haskell data Action     = ComponentRefAction JSVal     | RenderAction@@ -81,19 +81,19 @@  Some common `Action`s are: ###  ComponentRefAction-```+```haskell ComponentRefAction JSVal ``` This action is generated by the [`ref`](https://facebook.github.io/react/docs/refs-and-the-dom.html) event listener and contains a javascript reference to the react component. This ref is used in the `RenderCommand`.  ###  RenderAction-```+```haskell RenderAction ``` You can generate this action to force a widget to return the `RenderCommand` to force a re-render.  ###  ComponentDidUpdateAction-```+```haskell ComponentDidUpdateAction JSVal ``` @@ -101,7 +101,7 @@  ## Model This contains the pure data for state processing logic and rendering (the nouns).-```+```haskell data Model = Model     { _uid :: J.JSString     , _componentRef :: J.JSVal@@ -114,25 +114,25 @@  Some common Model fields are ### uid-```+```haskell _uid :: JSString ``` `uid` is used to ensure a unique [key](https://facebook.github.io/react/docs/lists-and-keys.html) for React's efficient rendering of a list.  ### componentRef-```+```haskell _componentRef :: JSVal ``` `componentRef` is used to store the reference to the instance of the React shim component from the `ComponentRefAction` and used in the `RenderCommand`  ### frameNum-```+```haskell _frameNum :: Int ``` `frameNum` is the sequence number used in `RenderCommand`.  ### _deferredCommands-```+```haskell _deferredCommands :: DList Command ``` `deferredCommands` keep the list of commands to run at the next `ComponentDidUpdateAction`. It usually contains `DisposeCommand`.@@ -140,7 +140,7 @@ ## Plan The `Plan` contains the callbacks for integrating with React (the verbs). It also contains a javascript reference to the instance of shim component used for the widget. This reference is used to trigger rendering with  [`setState`](https://facebook.github.io/react/docs/react-component.html#setstate). -```+```haskell data Plan = Plan     { _component :: R.ReactComponent     , _onRender :: J.Callback (J.JSVal -> IO J.JSVal)@@ -152,25 +152,25 @@ Some common `Plan` fields are  ### _component-```+```haskell _component :: ReactComponent ``` This contains the reference to the shim `React.PureComponent` class that is used to start the rendering.  ### _onRender-```+```haskell _onRender :: Callback (JSVal -> IO JSVal) ``` The is the callback from the shim component's [`render`](https://facebook.github.io/react/docs/react-component.html#render) handler. It contains a javascript reference to the shim component's state, which is currently not used, but might be in the future.  ### _onComponentRef-```+```haskell _onComponentRef :: Callback (JSVal -> IO ()) ``` The is the callback from the shim component's [`ref`](https://facebook.github.io/react/docs/refs-and-the-dom.html) event listener. The callback is expected to generate the `ComponentRefAction`.  ### _onComponentDidUpdate-```+```haskell _onComponentDidUpdate :: Callback (JSVal -> IO ()) ``` The is the callback from the shim component's  [`componentDidUpdate`](https://facebook.github.io/react/docs/react-component.html#componentdidupdate) event listener.  The callback is expected to generate the `ComponentDidUpdateAction`.@@ -180,7 +180,7 @@ It contains the code to create a widget's `Plan` using the `Maker` DSL.  The `Applicative` typeclass makes this easy to define.-```+```haskell mkPlan :: Frame Model Plan -> F (Maker Action) Plan mkPlan frm = Plan     <$> getComponent@@ -194,7 +194,7 @@ All widgets should have implementation of the following  ### Disposing Model and Plan-```+```haskell instance Disposing Plan instance Disposing Model where     disposing _ = DisposeNone@@ -203,7 +203,7 @@ ### Link HasPlan and HasModel Link `Glazier.React.Model`'s genericHasPlan/HasModel with this widget's specific `HasPlan`/`HasModel` from generated from `makeClassy` -```+```haskell instance HasPlan (R.Design Model Plan) where     plan = R.plan instance HasModel (R.Design Model Plan) where@@ -215,7 +215,7 @@ ```  ### Synonums to Design, Frame, and SuperModel-```+```haskell type Design = R.Design Model Plan type Frame = R.Frame Model Plan type SuperModel = R.SuperModel Model Plan@@ -223,7 +223,7 @@  ### Widget definitions `widget` is a record of functions of the essential functions required to make, render and interact with the widget. By convention, `mkPlan`, `window`, and `gadget` is exported, but sometimes it's convenient to have all three grouped together in a record.-```+```haskell type Widget = Widget Command Action Model Plan widget :: Widget Command Action Model Plan widget = Widget@@ -238,7 +238,7 @@ ## window This is the starting rendering function to start the rendering. It always only renders the shim React component with the specific callbacks: -```+```haskell window :: WindowT (Design Model Plan) (ReactMlT Identity) () window = do     s <- ask@@ -255,14 +255,14 @@ This is the inner rendering function. React will render the shim component from `window` above, and then call the `Plan`'s `onRender` callback of the shim component, which triggers this rendering function.  This contains the widget specific rendering instructions.-```+```haskell render :: WindowT (Design Model Plan) (ReactMlT Identity) () ``` This a a monad transformer stack over `Identity`. This ensures only pure effects are allowed.  ## gadget This contains the state update logic:-```+```haskell gadget :: G.GadgetT Action (R.SuperModel Model Plan) Identity (DList Command) ``` This a a monad transformer stack over `Identity`. This ensures only pure effects are allowed.
glazier-react-widget.cabal view
@@ -1,5 +1,5 @@ name:                glazier-react-widget-version:             0.3.0.0+version:             0.3.0.1 synopsis:            Generic widget library using glazier-react description:         Generic widget library using glazier-react homepage:            https://github.com/louispan/glazier-react-widget#readme@@ -8,7 +8,7 @@ author:              Louis Pan maintainer:          louis@pan.me copyright:           2017 Louis Pan-category:            Web+category:            Web, GUI build-type:          Simple extra-source-files:  README.md cabal-version:       >=1.10@@ -21,7 +21,7 @@                        Glazier.React.Widgets.List.Run   build-depends:       base >= 4.7 && < 5                      , containers >= 0.5 && < 0.6-                     , disposable >= 0.2 && < 1+                     , disposable >= 0.2.0.2 && < 1                      , dlist >= 0.8 && < 0.9                      , free >= 4.12 && < 5                      , glazier >= 0.10 && < 1