packages feed

glazier-react-widget 0.3.0.1 → 0.4.0.0

raw patch · 5 files changed

+64/−63 lines, 5 filesdep ~disposabledep ~glazier-reactdep ~javascript-extrasPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: disposable, glazier-react, javascript-extras

API changes (from Hackage documentation)

- Glazier.React.Widgets.Input: [_uid] :: Model -> JSString
- Glazier.React.Widgets.Input: uid :: HasModel c_aqdO => Lens' c_aqdO JSString
- Glazier.React.Widgets.List: [_deferredCommands] :: Model key itemWidget -> DList (Command key itemWidget)
- Glazier.React.Widgets.List: [_uid] :: Model key itemWidget -> JSString
- 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: instance Control.Disposable.Disposing (Glazier.React.Widget.SuperModelOf itemWidget) => Control.Disposable.Disposing (Glazier.React.Widgets.List.Model key itemWidget)
- Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.AsAction (Glazier.React.Widgets.List.Action key0 itemWidget0) key0 itemWidget0
- Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasModel (Glazier.React.Model.Design (Glazier.React.Widgets.List.Model key itemWidget) Glazier.React.Widgets.List.Plan) key itemWidget
- Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasModel (Glazier.React.Model.SuperModel (Glazier.React.Widgets.List.Model key itemWidget) Glazier.React.Widgets.List.Plan) key itemWidget
- Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasModel (Glazier.React.Widgets.List.Model key0 itemWidget0) key0 itemWidget0
- Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasPlan (Glazier.React.Model.Design (Glazier.React.Widgets.List.Model key itemWidget) Glazier.React.Widgets.List.Plan)
- Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasPlan (Glazier.React.Model.SuperModel (Glazier.React.Widgets.List.Model key itemWidget) Glazier.React.Widgets.List.Plan)
- Glazier.React.Widgets.List: uid :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv JSString
+ Glazier.React.Widgets.Input: [_key] :: Model -> JSString
+ Glazier.React.Widgets.Input: key :: HasModel c_aqht => Lens' c_aqht JSString
+ Glazier.React.Widgets.List: [_deferredDisposables] :: Model k itemWidget -> DList SomeDisposable
+ Glazier.React.Widgets.List: [_key] :: Model k itemWidget -> JSString
+ Glazier.React.Widgets.List: deferredDisposables :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY (DList SomeDisposable)
+ Glazier.React.Widgets.List: instance Control.Disposable.Disposing (Glazier.React.Widget.SuperModelOf itemWidget) => Control.Disposable.Disposing (Glazier.React.Widgets.List.Model k itemWidget)
+ Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.AsAction (Glazier.React.Widgets.List.Action k0 itemWidget0) k0 itemWidget0
+ Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasModel (Glazier.React.Model.Design (Glazier.React.Widgets.List.Model k itemWidget) Glazier.React.Widgets.List.Plan) k itemWidget
+ Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasModel (Glazier.React.Model.SuperModel (Glazier.React.Widgets.List.Model k itemWidget) Glazier.React.Widgets.List.Plan) k itemWidget
+ Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasModel (Glazier.React.Widgets.List.Model k0 itemWidget0) k0 itemWidget0
+ Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasPlan (Glazier.React.Model.Design (Glazier.React.Widgets.List.Model k itemWidget) Glazier.React.Widgets.List.Plan)
+ Glazier.React.Widgets.List: instance Glazier.React.Widgets.List.HasPlan (Glazier.React.Model.SuperModel (Glazier.React.Widgets.List.Model k itemWidget) Glazier.React.Widgets.List.Plan)
+ Glazier.React.Widgets.List: key :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY JSString
- Glazier.React.Widgets.Input: _Action :: AsAction r_aq5A => Prism' r_aq5A Action
+ Glazier.React.Widgets.Input: _Action :: AsAction r_aq9f => Prism' r_aq9f Action
- Glazier.React.Widgets.Input: _InputRefAction :: AsAction r_aq5A => Prism' r_aq5A JSVal
+ Glazier.React.Widgets.Input: _InputRefAction :: AsAction r_aq9f => Prism' r_aq9f JSVal
- Glazier.React.Widgets.Input: _SendCommandsAction :: AsAction r_aq5A => Prism' r_aq5A [Command]
+ Glazier.React.Widgets.Input: _SendCommandsAction :: AsAction r_aq9f => Prism' r_aq9f [Command]
- Glazier.React.Widgets.Input: _SubmitAction :: AsAction r_aq5A => Prism' r_aq5A JSString
+ Glazier.React.Widgets.Input: _SubmitAction :: AsAction r_aq9f => Prism' r_aq9f JSString
- Glazier.React.Widgets.Input: class AsAction r_aq5A where _SendCommandsAction = (.) _Action _SendCommandsAction _SubmitAction = (.) _Action _SubmitAction _InputRefAction = (.) _Action _InputRefAction
+ Glazier.React.Widgets.Input: class AsAction r_aq9f where _SendCommandsAction = (.) _Action _SendCommandsAction _SubmitAction = (.) _Action _SubmitAction _InputRefAction = (.) _Action _InputRefAction
- 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 HasModel c_aqht where className = (.) model className inputRef = (.) model inputRef key = (.) model key placeholder = (.) model placeholder
- 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: class HasPlan c_aqdr where component = (.) plan component onInputRef = (.) plan onInputRef onKeyDown = (.) plan onKeyDown onRender = (.) plan onRender
- Glazier.React.Widgets.Input: className :: HasModel c_aqdO => Lens' c_aqdO JSString
+ Glazier.React.Widgets.Input: className :: HasModel c_aqht => Lens' c_aqht JSString
- Glazier.React.Widgets.Input: component :: HasPlan c_aq9M => Lens' c_aq9M ReactComponent
+ Glazier.React.Widgets.Input: component :: HasPlan c_aqdr => Lens' c_aqdr ReactComponent
- Glazier.React.Widgets.Input: inputRef :: HasModel c_aqdO => Lens' c_aqdO JSVal
+ Glazier.React.Widgets.Input: inputRef :: HasModel c_aqht => Lens' c_aqht JSVal
- Glazier.React.Widgets.Input: model :: HasModel c_aqdO => Lens' c_aqdO Model
+ Glazier.React.Widgets.Input: model :: HasModel c_aqht => Lens' c_aqht Model
- Glazier.React.Widgets.Input: onInputRef :: HasPlan c_aq9M => Lens' c_aq9M (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.Input: onInputRef :: HasPlan c_aqdr => Lens' c_aqdr (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.Input: onKeyDown :: HasPlan c_aq9M => Lens' c_aq9M (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.Input: onKeyDown :: HasPlan c_aqdr => Lens' c_aqdr (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.Input: onRender :: HasPlan c_aq9M => Lens' c_aq9M (Callback (JSVal -> IO JSVal))
+ Glazier.React.Widgets.Input: onRender :: HasPlan c_aqdr => Lens' c_aqdr (Callback (JSVal -> IO JSVal))
- Glazier.React.Widgets.Input: placeholder :: HasModel c_aqdO => Lens' c_aqdO JSString
+ Glazier.React.Widgets.Input: placeholder :: HasModel c_aqht => Lens' c_aqht JSString
- Glazier.React.Widgets.Input: plan :: HasPlan c_aq9M => Lens' c_aq9M Plan
+ Glazier.React.Widgets.Input: plan :: HasPlan c_aqdr => Lens' c_aqdr Plan
- Glazier.React.Widgets.List: AddItemAction :: key -> (SuperModelOf itemWidget) -> Action key itemWidget
+ Glazier.React.Widgets.List: AddItemAction :: k -> (SuperModelOf itemWidget) -> Action k itemWidget
- Glazier.React.Widgets.List: ComponentDidUpdateAction :: Action key itemWidget
+ Glazier.React.Widgets.List: ComponentDidUpdateAction :: Action k itemWidget
- Glazier.React.Widgets.List: ComponentRefAction :: JSVal -> Action key itemWidget
+ Glazier.React.Widgets.List: ComponentRefAction :: JSVal -> Action k itemWidget
- Glazier.React.Widgets.List: DestroyItemAction :: key -> Action key itemWidget
+ Glazier.React.Widgets.List: DestroyItemAction :: k -> Action k itemWidget
- Glazier.React.Widgets.List: DisposeCommand :: SomeDisposable -> Command key itemWidget
+ Glazier.React.Widgets.List: DisposeCommand :: SomeDisposable -> Command k itemWidget
- Glazier.React.Widgets.List: ItemAction :: key -> (ActionOf itemWidget) -> Action key itemWidget
+ Glazier.React.Widgets.List: ItemAction :: k -> (ActionOf itemWidget) -> Action k itemWidget
- Glazier.React.Widgets.List: ItemCommand :: key -> (CommandOf itemWidget) -> Command key itemWidget
+ Glazier.React.Widgets.List: ItemCommand :: k -> (CommandOf itemWidget) -> Command k itemWidget
- Glazier.React.Widgets.List: MakeItemAction :: (key -> key) -> (key -> F (Maker (ActionOf itemWidget)) (ModelOf itemWidget)) -> Action key itemWidget
+ Glazier.React.Widgets.List: MakeItemAction :: (k -> k) -> (k -> F (Maker (ActionOf itemWidget)) (ModelOf itemWidget)) -> Action k itemWidget
- Glazier.React.Widgets.List: MakerCommand :: (F (Maker (Action key itemWidget)) (Action key itemWidget)) -> Command key itemWidget
+ Glazier.React.Widgets.List: MakerCommand :: (F (Maker (Action k itemWidget)) (Action k itemWidget)) -> Command k itemWidget
- Glazier.React.Widgets.List: Model :: JSString -> JSVal -> Int -> DList (Command key itemWidget) -> JSString -> key -> Map key (SuperModelOf itemWidget) -> (SuperModelOf itemWidget -> Bool) -> Model key itemWidget
+ Glazier.React.Widgets.List: Model :: JSString -> JSVal -> Int -> DList SomeDisposable -> JSString -> k -> Map k (SuperModelOf itemWidget) -> (SuperModelOf itemWidget -> Bool) -> Model k itemWidget
- Glazier.React.Widgets.List: RenderAction :: Action key itemWidget
+ Glazier.React.Widgets.List: RenderAction :: Action k itemWidget
- Glazier.React.Widgets.List: RenderCommand :: (SuperModel (Model key itemWidget) Plan) -> [Property] -> JSVal -> Command key itemWidget
+ Glazier.React.Widgets.List: RenderCommand :: (SuperModel (Model k itemWidget) Plan) -> [Property] -> JSVal -> Command k itemWidget
- Glazier.React.Widgets.List: SetFilterAction :: (SuperModelOf itemWidget -> Bool) -> Action key itemWidget
+ Glazier.React.Widgets.List: SetFilterAction :: (SuperModelOf itemWidget -> Bool) -> Action k itemWidget
- Glazier.React.Widgets.List: [_className] :: Model key itemWidget -> JSString
+ Glazier.React.Widgets.List: [_className] :: Model k itemWidget -> JSString
- Glazier.React.Widgets.List: [_componentRef] :: Model key itemWidget -> JSVal
+ Glazier.React.Widgets.List: [_componentRef] :: Model k itemWidget -> JSVal
- Glazier.React.Widgets.List: [_frameNum] :: Model key itemWidget -> Int
+ Glazier.React.Widgets.List: [_frameNum] :: Model k itemWidget -> Int
- Glazier.React.Widgets.List: [_itemKey] :: Model key itemWidget -> key
+ Glazier.React.Widgets.List: [_itemKey] :: Model k itemWidget -> k
- Glazier.React.Widgets.List: [_itemsFilter] :: Model key itemWidget -> SuperModelOf itemWidget -> Bool
+ Glazier.React.Widgets.List: [_itemsFilter] :: Model k itemWidget -> SuperModelOf itemWidget -> Bool
- Glazier.React.Widgets.List: [_itemsModel] :: Model key itemWidget -> Map key (SuperModelOf itemWidget)
+ Glazier.React.Widgets.List: [_itemsModel] :: Model k itemWidget -> Map k (SuperModelOf itemWidget)
- Glazier.React.Widgets.List: _Action :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (Action key_agYQ itemWidget_agYR)
+ Glazier.React.Widgets.List: _Action :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst (Action k_a9Fz itemWidget_a9FA)
- Glazier.React.Widgets.List: _AddItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (key_agYQ, SuperModelOf itemWidget_agYR)
+ Glazier.React.Widgets.List: _AddItemAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst (k_a9Fz, SuperModelOf itemWidget_a9FA)
- Glazier.React.Widgets.List: _ComponentDidUpdateAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 ()
+ Glazier.React.Widgets.List: _ComponentDidUpdateAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst ()
- Glazier.React.Widgets.List: _ComponentRefAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 JSVal
+ Glazier.React.Widgets.List: _ComponentRefAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst JSVal
- Glazier.React.Widgets.List: _DestroyItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 key_agYQ
+ Glazier.React.Widgets.List: _DestroyItemAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst k_a9Fz
- Glazier.React.Widgets.List: _ItemAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (key_agYQ, ActionOf itemWidget_agYR)
+ Glazier.React.Widgets.List: _ItemAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst (k_a9Fz, ActionOf itemWidget_a9FA)
- 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: _MakeItemAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst (k_a9Fz -> k_a9Fz, k_a9Fz -> F (Maker (ActionOf itemWidget_a9FA)) (ModelOf itemWidget_a9FA))
- Glazier.React.Widgets.List: _RenderAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 ()
+ Glazier.React.Widgets.List: _RenderAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst ()
- Glazier.React.Widgets.List: _SetFilterAction :: AsAction r_ahq6 key_agYQ itemWidget_agYR => Prism' r_ahq6 (SuperModelOf itemWidget_agYR -> Bool)
+ Glazier.React.Widgets.List: _SetFilterAction :: AsAction r_acst k_a9Fz itemWidget_a9FA => Prism' r_acst (SuperModelOf itemWidget_a9FA -> Bool)
- 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 AsAction r_acst k_a9Fz itemWidget_a9FA | r_acst -> k_a9Fz itemWidget_a9FA 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_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 HasModel c_acRY k_a9xs itemWidget_a9xt | c_acRY -> k_a9xs itemWidget_a9xt where className = (.) model className componentRef = (.) model componentRef deferredDisposables = (.) model deferredDisposables frameNum = (.) model frameNum itemKey = (.) model itemKey itemsFilter = (.) model itemsFilter itemsModel = (.) model itemsModel key = (.) model key
- 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: class HasPlan c_acNJ where component = (.) plan component onComponentDidUpdate = (.) plan onComponentDidUpdate onComponentRef = (.) plan onComponentRef onRender = (.) plan onRender
- Glazier.React.Widgets.List: className :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv JSString
+ Glazier.React.Widgets.List: className :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY JSString
- Glazier.React.Widgets.List: component :: HasPlan c_ahJg => Lens' c_ahJg ReactComponent
+ Glazier.React.Widgets.List: component :: HasPlan c_acNJ => Lens' c_acNJ ReactComponent
- Glazier.React.Widgets.List: componentRef :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv JSVal
+ Glazier.React.Widgets.List: componentRef :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY JSVal
- Glazier.React.Widgets.List: data Action key itemWidget
+ Glazier.React.Widgets.List: data Action k itemWidget
- Glazier.React.Widgets.List: data Command key itemWidget
+ Glazier.React.Widgets.List: data Command k itemWidget
- Glazier.React.Widgets.List: data Model key itemWidget
+ Glazier.React.Widgets.List: data Model k itemWidget
- Glazier.React.Widgets.List: frameNum :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv Int
+ Glazier.React.Widgets.List: frameNum :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY Int
- Glazier.React.Widgets.List: gadget :: (Ord key, Disposing (ModelOf itemWidget), Disposing (PlanOf itemWidget)) => (ModelOf itemWidget -> F (Maker (ActionOf itemWidget)) (SuperModelOf itemWidget)) -> GadgetT (ActionOf itemWidget) (SuperModelOf itemWidget) Identity (DList (CommandOf itemWidget)) -> GadgetT (Action key itemWidget) (SuperModel (Model key itemWidget) Plan) Identity (DList (Command key itemWidget))
+ Glazier.React.Widgets.List: gadget :: (Ord k, IsWidget itemWidget) => (ModelOf itemWidget -> F (Maker (ActionOf itemWidget)) (SuperModelOf itemWidget)) -> GadgetT (ActionOf itemWidget) (SuperModelOf itemWidget) Identity (DList (CommandOf itemWidget)) -> GadgetT (Action k itemWidget) (SuperModel (Model k itemWidget) Plan) Identity (DList (Command k itemWidget))
- Glazier.React.Widgets.List: itemKey :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv key_agYg
+ Glazier.React.Widgets.List: itemKey :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY k_a9xs
- Glazier.React.Widgets.List: itemsFilter :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv (SuperModelOf itemWidget_agYh -> Bool)
+ Glazier.React.Widgets.List: itemsFilter :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY (SuperModelOf itemWidget_a9xt -> Bool)
- 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: itemsModel :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY (Map k_a9xs (SuperModelOf itemWidget_a9xt))
- Glazier.React.Widgets.List: mkPlan :: ReactMlT Identity () -> WindowT (DesignOf itemWidget) (ReactMlT Identity) () -> Frame (Model key itemWidget) Plan -> F (Maker (Action key itemWidget)) Plan
+ Glazier.React.Widgets.List: mkPlan :: ReactMlT Identity () -> WindowT (DesignOf itemWidget) (ReactMlT Identity) () -> Frame (Model k itemWidget) Plan -> F (Maker (Action k itemWidget)) Plan
- Glazier.React.Widgets.List: model :: HasModel c_ahNv key_agYg itemWidget_agYh => Lens' c_ahNv (Model key_agYg itemWidget_agYh)
+ Glazier.React.Widgets.List: model :: HasModel c_acRY k_a9xs itemWidget_a9xt => Lens' c_acRY (Model k_a9xs itemWidget_a9xt)
- Glazier.React.Widgets.List: onComponentDidUpdate :: HasPlan c_ahJg => Lens' c_ahJg (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.List: onComponentDidUpdate :: HasPlan c_acNJ => Lens' c_acNJ (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.List: onComponentRef :: HasPlan c_ahJg => Lens' c_ahJg (Callback (JSVal -> IO ()))
+ Glazier.React.Widgets.List: onComponentRef :: HasPlan c_acNJ => Lens' c_acNJ (Callback (JSVal -> IO ()))
- Glazier.React.Widgets.List: onRender :: HasPlan c_ahJg => Lens' c_ahJg (Callback (JSVal -> IO JSVal))
+ Glazier.React.Widgets.List: onRender :: HasPlan c_acNJ => Lens' c_acNJ (Callback (JSVal -> IO JSVal))
- Glazier.React.Widgets.List: plan :: HasPlan c_ahJg => Lens' c_ahJg Plan
+ Glazier.React.Widgets.List: plan :: HasPlan c_acNJ => Lens' c_acNJ Plan
- Glazier.React.Widgets.List: type Design key itemWidget = Design (Model key itemWidget) Plan
+ Glazier.React.Widgets.List: type Design k itemWidget = Design (Model k itemWidget) Plan
- Glazier.React.Widgets.List: type Frame key itemWidget = Frame (Model key itemWidget) Plan
+ Glazier.React.Widgets.List: type Frame k itemWidget = Frame (Model k itemWidget) Plan
- Glazier.React.Widgets.List: type SuperModel key itemWidget = SuperModel (Model key itemWidget) Plan
+ Glazier.React.Widgets.List: type SuperModel k itemWidget = SuperModel (Model k itemWidget) Plan
- Glazier.React.Widgets.List: type Widget key itemWidget = Widget (Command key itemWidget) (Action key itemWidget) (Model key itemWidget) Plan
+ Glazier.React.Widgets.List: type Widget k itemWidget = Widget (Command k itemWidget) (Action k itemWidget) (Model k itemWidget) Plan
- Glazier.React.Widgets.List: widget :: (IsWidget itemWidget, Ord key) => ReactMlT Identity () -> itemWidget -> Widget (Command key itemWidget) (Action key itemWidget) (Model key itemWidget) Plan
+ Glazier.React.Widgets.List: widget :: (IsWidget itemWidget, Ord k) => ReactMlT Identity () -> itemWidget -> Widget (Command k itemWidget) (Action k itemWidget) (Model k itemWidget) Plan
- Glazier.React.Widgets.List: window :: WindowT (Design (Model key itemWidget) Plan) (ReactMlT Identity) ()
+ Glazier.React.Widgets.List: window :: WindowT (Design (Model k itemWidget) Plan) (ReactMlT Identity) ()
- Glazier.React.Widgets.List.Run: run :: (key -> CommandOf itemWidget -> IO ()) -> ReactComponent -> Output (Action key itemWidget) -> Command key itemWidget -> IO ()
+ Glazier.React.Widgets.List.Run: run :: (k -> CommandOf itemWidget -> IO ()) -> MVar Int -> ReactComponent -> Output (Action k itemWidget) -> Command k itemWidget -> IO ()

Files

README.md view
@@ -103,7 +103,7 @@ This contains the pure data for state processing logic and rendering (the nouns). ```haskell data Model = Model-    { _uid :: J.JSString+    { _key :: J.JSString     , _componentRef :: J.JSVal     , _frameNum :: Int     , _deferredCommands :: D.DList (Command key itemWidget)@@ -113,11 +113,11 @@ `Model`s should have [`makeClassy`](https://hackage.haskell.org/package/lens-4.15.1/docs/Control-Lens-TH.html#v:makeClassy) generated to facilitate embedding it in larger widget with [`magnify`](https://hackage.haskell.org/package/lens-4.15.1/docs/Control-Lens-Zoom.html#v:magnify) and [`zoom`](https://hackage.haskell.org/package/lens-4.15.1/docs/Control-Lens-Zoom.html#v:zoom).  Some common Model fields are-### uid+### key ```haskell-_uid :: JSString+_key :: 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.+`key` 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@@ -131,11 +131,11 @@ ``` `frameNum` is the sequence number used in `RenderCommand`. -### _deferredCommands+### _deferredDisposables ```haskell-_deferredCommands :: DList Command+_deferredDisposables :: DList SomeDisposable ```-`deferredCommands` keep the list of commands to run at the next `ComponentDidUpdateAction`. It usually contains `DisposeCommand`.+`deferredDisposables` keep the list of disposables to dispose at the next `ComponentDidUpdateAction`.  ## 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).@@ -243,7 +243,7 @@ window = do     s <- ask     lift $ lf (s ^. component . to toJS)-        [ ("key",  s ^. uid . to toJS)+        [ ("key",  s ^. key . to toJS)         , ("render", s ^. onRender . to toJS)         , ("ref", s ^. onComponentRef . to toJS)         , ("componentDidUpdate", s ^. onComponentDidUpdate . to toJS)
glazier-react-widget.cabal view
@@ -1,5 +1,5 @@ name:                glazier-react-widget-version:             0.3.0.1+version:             0.4.0.0 synopsis:            Generic widget library using glazier-react description:         Generic widget library using glazier-react homepage:            https://github.com/louispan/glazier-react-widget#readme@@ -21,12 +21,12 @@                        Glazier.React.Widgets.List.Run   build-depends:       base >= 4.7 && < 5                      , containers >= 0.5 && < 0.6-                     , disposable >= 0.2.0.2 && < 1+                     , disposable >= 0.2.0.3 && < 1                      , dlist >= 0.8 && < 0.9                      , free >= 4.12 && < 5                      , glazier >= 0.10 && < 1-                     , glazier-react >= 0.3 && < 1-                     , javascript-extras >= 0.2 && < 1+                     , glazier-react >= 0.4 && < 1+                     , javascript-extras >= 0.2.0.2 && < 1                      , lens >= 4 && < 5                      , mmorph >= 1 && < 2                      , mtl >= 2 && < 3
src/Glazier/React/Widgets/Input.hs view
@@ -56,7 +56,7 @@     | InputRefAction J.JSVal  data Model = Model-    { _uid :: J.JSString+    { _key :: J.JSString     , _inputRef :: J.JSVal     , _placeholder :: J.JSString     , _className :: J.JSString@@ -110,7 +110,7 @@ window = do     s <- ask     lift $ R.lf (s ^. component . to JE.toJS)-        [ ("key",  s ^. uid . to JE.toJS)+        [ ("key",  s ^. key . to JE.toJS)         , ("render", s ^. onRender . to JE.toJS)         ] @@ -119,7 +119,7 @@ render = do     s <- ask     lift $ R.lf (JE.strJS "input")-                    [ ("key", s ^. uid . to JE.toJS)+                    [ ("key", s ^. key . to JE.toJS)                     , ("className", s ^. className . to JE.toJS)                     , ("placeholder", s ^. placeholder . to JE.toJS)                     , ("autoFocus", JE.toJS True)
src/Glazier/React/Widgets/List.hs view
@@ -51,30 +51,30 @@ import qualified Glazier.React.Widget as R import qualified JavaScript.Extras as JE -data Command key itemWidget-    = RenderCommand (R.SuperModel (Model key itemWidget) Plan) [JE.Property] J.JSVal+data Command k itemWidget+    = RenderCommand (R.SuperModel (Model k itemWidget) Plan) [JE.Property] J.JSVal     | DisposeCommand CD.SomeDisposable-    | MakerCommand (F (R.Maker (Action key itemWidget)) (Action key itemWidget))-    | ItemCommand key (R.CommandOf itemWidget)+    | MakerCommand (F (R.Maker (Action k itemWidget)) (Action k itemWidget))+    | ItemCommand k (R.CommandOf itemWidget) -data Action key itemWidget+data Action k itemWidget     = ComponentRefAction J.JSVal     | RenderAction     | ComponentDidUpdateAction-    | DestroyItemAction key-    | MakeItemAction (key -> key) (key -> F (R.Maker (R.ActionOf itemWidget)) (R.ModelOf itemWidget))-    | AddItemAction key (R.SuperModelOf itemWidget)-    | ItemAction key (R.ActionOf itemWidget)+    | DestroyItemAction k+    | MakeItemAction (k -> k) (k -> F (R.Maker (R.ActionOf itemWidget)) (R.ModelOf itemWidget))+    | AddItemAction k (R.SuperModelOf itemWidget)+    | ItemAction k (R.ActionOf itemWidget)     | SetFilterAction (R.SuperModelOf itemWidget -> Bool) -data Model key itemWidget = Model-    { _uid :: J.JSString+data Model k itemWidget = Model+    { _key :: J.JSString     , _componentRef :: J.JSVal     , _frameNum :: Int-    , _deferredCommands :: D.DList (Command key itemWidget)+    , _deferredDisposables :: D.DList CD.SomeDisposable     , _className ::J.JSString-    , _itemKey :: key-    , _itemsModel :: M.Map key (R.SuperModelOf itemWidget)+    , _itemKey :: k+    , _itemsModel :: M.Map k (R.SuperModelOf itemWidget)     , _itemsFilter :: R.SuperModelOf itemWidget -> Bool     } @@ -92,8 +92,8 @@ mkPlan     :: R.ReactMlT Identity ()     -> G.WindowT (R.DesignOf itemWidget) (R.ReactMlT Identity) ()-    -> R.Frame (Model key itemWidget) Plan-    -> F (R.Maker (Action key itemWidget)) Plan+    -> R.Frame (Model k itemWidget) Plan+    -> F (R.Maker (Action k itemWidget)) Plan mkPlan separator itemWindow frm = Plan     <$> R.getComponent     <*> (R.mkRenderer frm $ const (render separator itemWindow))@@ -102,40 +102,40 @@  instance CD.Disposing Plan instance (CD.Disposing (R.SuperModelOf itemWidget)) =>-         CD.Disposing (Model key itemWidget) where+         CD.Disposing (Model k itemWidget) where     disposing s = CD.DisposeList $ foldr ((:) . CD.disposing) [] (_itemsModel s)  -- Link Glazier.React.Model's HasPlan/HasModel with this widget's HasPlan/HasModel from makeClassy-instance HasPlan (R.Design (Model key itemWidget) Plan) where+instance HasPlan (R.Design (Model k itemWidget) Plan) where     plan = R.plan-instance HasModel (R.Design (Model key itemWidget) Plan) key itemWidget where+instance HasModel (R.Design (Model k itemWidget) Plan) k itemWidget where     model = R.model-instance HasPlan (R.SuperModel (Model key itemWidget) Plan) where+instance HasPlan (R.SuperModel (Model k itemWidget) Plan) where     plan = R.design . plan-instance HasModel (R.SuperModel (Model key itemWidget) Plan) key itemWidget where+instance HasModel (R.SuperModel (Model k itemWidget) Plan) k itemWidget where     model = R.design . model -type Design key itemWidget = R.Design (Model key itemWidget) Plan-type Frame key itemWidget = R.Frame (Model key itemWidget) Plan-type SuperModel key itemWidget = R.SuperModel (Model key itemWidget) Plan+type Design k itemWidget = R.Design (Model k itemWidget) Plan+type Frame k itemWidget = R.Frame (Model k itemWidget) Plan+type SuperModel k itemWidget = R.SuperModel (Model k itemWidget) Plan -type Widget key itemWidget = R.Widget (Command key itemWidget) (Action key itemWidget) (Model key itemWidget) Plan+type Widget k itemWidget = R.Widget (Command k itemWidget) (Action k itemWidget) (Model k itemWidget) Plan widget-    :: (R.IsWidget itemWidget, Ord key)+    :: (R.IsWidget itemWidget, Ord k)     => R.ReactMlT Identity ()     -> itemWidget-    -> R.Widget (Command key itemWidget) (Action key itemWidget) (Model key itemWidget) Plan+    -> R.Widget (Command k itemWidget) (Action k itemWidget) (Model k itemWidget) Plan widget separator itemWidget = R.Widget     (mkPlan separator (R.window itemWidget))     window     (gadget (R.mkSuperModel itemWidget) (R.gadget itemWidget))  -- | Exposed to parent components to render this component-window :: G.WindowT (R.Design (Model key itemWidget) Plan) (R.ReactMlT Identity) ()+window :: G.WindowT (R.Design (Model k itemWidget) Plan) (R.ReactMlT Identity) () window = do     s <- ask     lift $ R.lf (s ^. component . to JE.toJS)-        [ ("key",  s ^. uid . to JE.toJS)+        [ ("key",  s ^. key . to JE.toJS)         , ("render", s ^. onRender . to JE.toJS)         , ("ref", s ^. onComponentRef . to JE.toJS)         , ("componentDidUpdate", s ^. onComponentDidUpdate . to JE.toJS)@@ -145,11 +145,11 @@ render     :: R.ReactMlT Identity ()     -> G.WindowT (R.DesignOf itemWidget) (R.ReactMlT Identity) ()-    -> G.WindowT (R.Design (Model key itemWidget) Plan) (R.ReactMlT Identity) ()+    -> G.WindowT (R.Design (Model k itemWidget) Plan) (R.ReactMlT Identity) () render separator itemWindow = do     s <- ask     items <- fmap (view R.design) . filter (s ^. itemsFilter) . fmap snd .  M.toList <$> view itemsModel-    lift $ R.bh (JE.strJS "ul") [ ("key", s ^. uid . to JE.toJS)+    lift $ R.bh (JE.strJS "ul") [ ("key", s ^. key . to JE.toJS)                                  , ("className", s ^. className . to JE.toJS)                                  ] $ do         let itemsWindows = (view G._WindowT itemWindow) <$> items@@ -157,10 +157,10 @@         sequenceA_ separatedWindows  gadget-    :: (Ord key, CD.Disposing (R.ModelOf itemWidget), CD.Disposing (R.PlanOf itemWidget))+    :: (Ord k, R.IsWidget itemWidget)     => (R.ModelOf itemWidget -> F (R.Maker (R.ActionOf itemWidget)) (R.SuperModelOf itemWidget))     -> G.GadgetT (R.ActionOf itemWidget) (R.SuperModelOf itemWidget) Identity (D.DList (R.CommandOf itemWidget))-    -> G.GadgetT (Action key itemWidget) (R.SuperModel (Model key itemWidget) Plan) Identity (D.DList (Command key itemWidget))+    -> G.GadgetT (Action k itemWidget) (R.SuperModel (Model k itemWidget) Plan) Identity (D.DList (Command k itemWidget)) gadget mkItemSuperModel itemGadget = do     a <- ask     case a of@@ -174,16 +174,15 @@         ComponentDidUpdateAction -> do             -- Run delayed commands that need to wait until frame is re-rendered             -- Eg focusing after other rendering changes-            cmds <- use deferredCommands-            deferredCommands .= mempty-            pure cmds+            ds <- use deferredDisposables+            deferredDisposables .= mempty+            pure . D.singleton . DisposeCommand . CD.DisposeList $ D.toList ds          DestroyItemAction k -> do             -- queue up callbacks to be released after rerendering             ret <- runMaybeT $ do                 itemSuperModel <- MaybeT $ use (itemsModel . at k)-                let junk = CD.disposing itemSuperModel-                deferredCommands %= (`D.snoc` DisposeCommand junk)+                deferredDisposables %= (`D.snoc` CD.disposing itemSuperModel)                 -- Remove the todo from the model                 itemsModel %= M.delete k                 -- on re-render the todo Shim will not get rendered and will be removed by react@@ -202,9 +201,9 @@             itemsModel %= M.insert n v             D.singleton <$> (R.basicRenderCmd frameNum componentRef RenderCommand) -        ItemAction key _ -> fmap (ItemCommand key) <$>+        ItemAction k _ -> fmap (ItemCommand k) <$>             (magnify (_ItemAction . to snd)-            (zoom (itemsModel . at key . _Just) itemGadget))+            (zoom (itemsModel . at k . _Just) itemGadget))          SetFilterAction ftr -> do             itemsFilter .= ftr
src/Glazier/React/Widgets/List/Run.hs view
@@ -8,6 +8,7 @@     ( run     ) where +import Control.Concurrent.MVar import Control.Concurrent.STM import qualified Control.Disposable as CD import Control.Monad@@ -20,18 +21,19 @@ import qualified Pipes.Concurrent as PC  run-    :: (key -> R.CommandOf itemWidget -> IO ()) -- command runner for the items+    :: (k -> R.CommandOf itemWidget -> IO ()) -- command runner for the items+    -> MVar Int     -> R.ReactComponent -- for Maker-    -> PC.Output (Action key itemWidget)-    -> Command key itemWidget+    -> PC.Output (Action k itemWidget)+    -> Command k itemWidget     -> IO () -run _ _ _ (RenderCommand sm props j) = R.componentSetState sm props j+run _ _ _ _ (RenderCommand sm props j) = R.componentSetState sm props j -run _ _ _ (DisposeCommand x) = CD.dispose x+run _ _ _ _ (DisposeCommand x) = CD.dispose x -run _ comp output (MakerCommand mks) = do-    act <- iterM (R.Maker.run comp output) mks+run _ muid comp output (MakerCommand mks) = do+    act <- iterM (R.Maker.run muid comp output) mks     void $ atomically $ PC.send output act -run itemCmdRun _ _ (ItemCommand key itemCmd) = itemCmdRun key itemCmd+run itemCmdRun _ _ _ (ItemCommand k itemCmd) = itemCmdRun k itemCmd