Gy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None.Using a React Element (first arg) give React rendering control over a DOM element (second arg). This should only be called for the topmost component.None .59:;<=?DRA record of Design and Frame. QFrame is a Mvar of Design. React rendering callback uses this MVar for rendering. A record of Model and Plan/Lens to the pure model for state and rendering.1Lens to the callbacks and interactions with ReactLAll designs should be disposable to make it easier for cleanup of callbacks.        None !.9;<=DR_!Keyboard events !( must only be used in the first part of *.  Ahttps://facebook.github.io/react/docs/events.html#keyboard-eventsT Event names (eventType) onKeyDown (keydown) onKeyPress (keypress) onKeyUp (keyyp)#Mouse and Drag/Drop events #( must only be used in the first part of *.  >https://facebook.github.io/react/docs/events.html#mouse-events  3https://developer.mozilla.org/en-US/docs/Web/Events Event names (eventType) onClick (click) onContextMenu (contextmenu) onDoubleClick (dblclick) onDrag (drag) onDragEnd (dragend) onDragEnter (dragenter) onDragExit (dragexit) onDragLeave (dragleave) onDragOver (dragover) onDragStart (dragstart) onDrop (drop) onMouseDown (mousedown) onMouseEnter (mouseenter) onMouseLeave (mouseleave) onMouseMove (mousemove) onMouseOut (mouseout) onMouseOver (mouseover) onMouseUp (mouseup)%Every ' can be parsed to an %. %( must only be used in the first part of *.']Every event in React is a synthetic event, a cross-browser wrapper around the native event. '( must only be used in the first part of *.(The native event 6https://developer.mozilla.org/en-US/docs/Web/API/Event)'The object that dispatched the event. =https://developer.mozilla.org/en-US/docs/Web/API/Event/target* Using the NFData idea from ReactFlux/PropertiesAndEvents.hs React re-uses SyntheticEvent from a pool, which means it may no longer be valid if we lazily parse it. However, we still want lazy parsing so we don't parse unnecessary fields. Additionally, we don't want to block during the event handling.The reason this is a problem is because Javascript is single threaded, but Haskell is lazy. Therefore GHCJS threads are a strange mixture of synchronous and asynchronous threads, where a synchronous thread might be converted to an asynchronous thread if a "black hole" is encountered. See  Chttps://github.com/ghcjs/ghcjs-base/blob/master/GHCJS/Concurrent.hs This safe interface requires two input functions: 1. a function to reduce SyntheticEvent to a NFData. The mkEventCallback will ensure that the NFData is forced which will ensure all the required fields from Synthetic event has been parsed. This function must not block. 2. a second function that uses the NFData. This function is allowed to block. mkEventHandler results in a function that you can safely pass into   with .+Fa monadic version of eventHandler The monad's effects must not block!IWe can lie about this not being in IO because within the strict part of +[ the SyntheticEvent is effectively immutable. In reality SyntheticEvent is reused from a pool. We want to maintain this lie so that we can lazily parse only the properties the event handler is interested in. This will throw if J.JSVal is null, or not convertible to the desired type so we are assuming that SyntheticEvent will behave nicely.See  ;https://www.w3.org/TR/DOM-Level-3-Events-key/#keys-modifierp This will throw if J.JSVal is null, but shouldn't happen since we've already check for a valid SyntheticEvent1IWe can lie about this not being in IO because within the strict part of +. the SyntheticEvent is effectively immutable.2IWe can lie about this not being in IO because within the strict part of +. the SyntheticEvent is effectively immutable.<unsafe and non-IO to enable lazy parsing. See mkEventHandler1unsafe to enable lazy parsing. See mkEventHandlerR!"#$%&'()*+,-./0123456789:;<=>!"#$%&'()*+,-./012)('*+%&,-./0#$1!"2(! "#$% &'()*+,-./0123456789:;<=>None.@Unfortunately, ReactJS did not export an easy way to check if something is a ReactElement, although they do so in the internal code with REACT_ELEMENT_TYPE. This function allow coercing a ReactElement from a JSVal and is marked unsafe as a reminder that the coersion is unchecked. This function is required when receiving ReactElement from javascript (eg in a callback) or to interface with foreign React Elements.ACCreate a react element (with children) from a HashMap of propertiesBFCreate a react element (with no children) from a HashMap of propertiesC.Not an IO action because JSString is immutableDqReact only allows a single top most element. Provide a handly function to wrap a list of ReactElements inside a Q if required. If there is only one element in the list, then nothing is changed.This is an IO action because even if the same args was used a different ReactElement may be created, because JSVal and JSArray are mutable.?@ABCDEFG?@ABCD?@ABCD ?@ABCDEFGNone .9;<=DIR IMonadic generator of ReactActom. It is a CPS-style WriterT (ie a StateT) to build up a function build up a computations to generate a '[AtomMarkup]'. You can use  with an initial state of .QCThe parameters required to create a leaf ReactElement (no children)SEThe parameters required to create a branch ReactElement with childrenUCreate  ReactElement s from a  AtomMarkupVTo use an exisitng ReactElementW(Convert the ReactMlt to [R.ReactElement]X*Render the ReactMlt under a Glazier windowY1Fully render the ReactMlt into a [R.ReactElement]Z/Fully render the ReactMlt into a R.ReactElement[For text content\!For the contentless elements: eg br_] For the contentful elements: eg div_HIJKLMNOPQRSTUVWXYZ[\]^_HIJKLMNOPQRSTUVWXYZ[\]LMNOPSTQRUIJKHVWXYZ[\]HIJKLMNOPQRSTUVWXYZ[\]^_None.jyA newtype wrapper to give a noop disposable instance to React components This allows generic deriving of model Adaptors.jklmnojkjkjklmnoNone %&.2:DOTpGDSL for IO effects required during making widget models and callbacks p$ remembers the action type to allow | for changing the action type by parent widgets. The model type does not need to be changed, so it is hidden in the GADT existential.|(Allows changing the action type of Maker pqrstuvwxyz{| pqrstuwxyz{| pqrstuv{zyxw|pqrstuvwxyz{|None .5:<=?DR}VContains everything you need to make the model, render, and run the event processing.&The pure model for state and rendering}~}~}~}~ None.NThis is called synchronously by React to render the DOM. This must not block! None.OT None.OTJust change the state to something different so the React pureComponent will call render() renderCmd :: Monad m => (sm -> [JE.Property] -> J.JSVal -> cmd) -> G.GadgetT act sm m cmd The resulting command should be interpreted using componentSetState !"#$%&'()*+,-.//001123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 234Jr ,glazier-react-0.3.0.2-JYuA72CDoS7KWfMsq38YpAGlazier.React.ReactDOMGlazier.React.ModelGlazier.React.EventGlazier.React.ElementGlazier.React.MarkupGlazier.React.ComponentGlazier.React.MakerGlazier.React.WidgetGlazier.React.Maker.RunGlazier.React.Command.RunGlazier.React.CommandGHC.Foreign.Callback syncCallback1GHCJS.Foreign.Callback ContinueAsyncrender HasSuperModel superModel SuperModel_design_frameHasFrameframeFrame HasDesigndesignDesign_model_planHasModelmodelHasPlanplan$fHasModelSuperModelmdl$fHasPlanSuperModelpln$fHasDesignSuperModelmdlpln$fHasFrameSuperModelmdlpln$fHasSuperModelSuperModelmdlpln$fDisposingSuperModel$fHasFrameMVarmdlpln$fHasDesignDesignmdlpln$fHasModelDesignmdl$fHasPlanDesignpln$fDisposingDesign$fGenericDesign$fGenericSuperModel KeyboardEvent MouseEventEventSyntheticEventDOMEventDOMEventTarget eventHandler eventHandlerMpreventDefaultisDefaultPreventedstopPropagationisPropagationStopped parseEventparseMouseEventparseKeyboardEvent$fFromJSSyntheticEvent$fToJSSyntheticEvent$fPToJSValSyntheticEvent$fIsJSValSyntheticEvent$fFromJSDOMEvent$fToJSDOMEvent$fPToJSValDOMEvent$fIsJSValDOMEvent$fFromJSDOMEventTarget$fToJSDOMEventTarget$fPToJSValDOMEventTarget$fIsJSValDOMEventTarget ReactElementunsafeCoerceElementmkBranchElement mkLeafElement textElementmkCombinedElements$fToJSReactElement$fPToJSValReactElement$fIsJSValReactElementReactMlReactMlT runReactMlT ReactMarkup ElementMarkup TextMarkup BranchMarkup LeafMarkup LeafParam BranchParam fromMarkup fromElement toElements markedWindowmarkedElements markedElementtxtlfbh$fMonoidReactMlT$fSemigroupReactMlT$fMonadStateReactMlT$fMonadReactMlT$fApplicativeReactMlT$fFunctorReactMlT$fMonadFailReactMlT$fAlternativeReactMlT$fMonadPlusReactMlT$fMonadFixReactMlT$fMonadIOReactMlT$fMFunctorReactMlTReactComponent mkComponent$fToJSReactComponent$fPToJSValReactComponent$fIsJSValReactComponent$fDisposingReactComponentMaker MkHandler MkEmptyFrame MkRendererPutFrame GetComponent$fFunctorMaker mkHandler mkEmptyFrame mkRendererputFrame getComponent mapActionWidget SuperModelOfFrameOfDesignOfIsWidget CommandOfActionOfModelOfPlanOfmkPlanwindowgadget mkSuperModel$fIsWidgetWidgetonRendermkActionCallbackruncomponentSetStatebasicRenderCmd js_renderunsafePropertyunsafeGetModifierStatejs_unsafePropertyjs_unsafeGetModifierState$sel:altKey:KeyboardEvent$sel:charCode:KeyboardEvent$sel:ctrlKey:KeyboardEvent#$sel:getModifierState:KeyboardEvent$sel:key:KeyboardEvent$sel:keyCode:KeyboardEvent$sel:locale:KeyboardEvent$sel:location:KeyboardEvent$sel:metaKey:KeyboardEvent$sel:repeat:KeyboardEvent$sel:shiftkey:KeyboardEvent$sel:which:KeyboardEvent$sel:altKey:MouseEvent$sel:button:MouseEvent$sel:buttons:MouseEvent$sel:clientX:MouseEvent$sel:clientY:MouseEvent$sel:ctrlKey:MouseEvent $sel:getModifierState:MouseEvent$sel:metaKey:MouseEvent$sel:pageX:MouseEvent$sel:pageY:MouseEvent$sel:relatedTarget:MouseEvent$sel:screenX:MouseEvent$sel:screenY:MouseEvent$sel:shiftKey:MouseEvent$sel:bubbles:Event$sel:cancelable:Event$sel:currentTarget:Event$sel:defaultPrevented:Event$sel:eventPhase:Event$sel:isTrusted:Event$sel:nativeEvent:Event$sel:target:Event$sel:timeStamp:Event$sel:eventType:Eventjs_isDOMEventTarget js_isDOMEventjs_isSyntheticEventjs_preventDefaultjs_isDefaultPreventedjs_stopPropagationjs_isPropagationStoppedjs_isMouseEventjs_isKeyboardEventbaseGHC.Realdivjs_mkBranchElementjs_mkLeafElementjs_textElementjs_mkCombinedElementstransformers-0.5.2.0 Control.Monad.Trans.State.Strict runStateTGHC.Basememptyjs_mkComponentjs_componentSetState