úÎ!¾P­pá      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à None>Ø web-rep-FIXME: A horrible hack to separate class id'sweb-repConvert html to textweb-repname supply for html elementsweb-rep^sometimes a number doesn't work properly in html (or js???), and an alpha prefix seems to helpweb-rep2Convert a link to a css library from text to html.QlibCss "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"g<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">web-rep1Convert a link to a js library from text to html.8libJs "https://code.jquery.com/jquery-3.3.1.slim.min.js"H<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>web-repconvert from #xxxxxx to web-rep convert from  to #xxxxxx$web-repÍFIXME: `ToHtml a` is used throughout, mostly because `Show a` gives ""text"" for show "text", and hilarity ensues when rendering this to a web page, and I couldn't work out how to properly get around this.Hence, these orphans.  None7e 5%web-repWVarious types of web page inputs, encapsulating practical bootstrap class functionality1web-repRsomething that might exist on a web page and be a front-end input to computations.3web-repunderlying value4web-replabel suggestion5web-repname/key/id of the Input6web-reptype of html input%&'()*+,-./0123456123456%&'()*+,-./0 None4567PeQ)!>web-repUnifies javascript as á and script as .Aweb-rep wrapper for âDweb-repUnifies css as either a  or as Text.Gweb-rep'Configuration options when rendering a l.Nweb-rep Post-processing of page concernsRweb-rep0Various ways that a Html file can be structured.Wweb-rep Is the rendering to include all Zi (typically in a html file) or be separated (tyypically into separate files and linked in the html file)?Zweb-repBA web page typically is composed of some css, javascript and html.Z1 abstracts this structural feature of a web page._web-repdefault representation type of  ()`web-repÃDriven by the architecture of the DOM, web page components are compositional, and tree-like, where components are often composed of other components, and values are thus shared across components.;This is sometimes referred to as "observable sharing". See  -http://hackage.haskell.org/package/data-reify data-reifys as another library that reifies this (pun intended), and provided the initial inspiration for this implementation.cweb-rep9the common usage, where the representation domain is Htmldweb-replInformation contained in a web page can usually be considered to be isomorphic to a map of named values - a À. This is especially true when considering a differential of information contained in a web page. Looking at a page from the outside, it often looks like a streaming differential of a hashmap.äRepF consists of an underlying value being represented, and, given a hashmap state, a way to produce a representation of the underlying value (or error), in another domain, together with the potential to alter the hashmap state.hweb-repjA key-value Text pair as the realistic datatype that zips across the interface between a page and haskell.lweb-repComponents of a web page.ÿHA web page can take many forms but still have the same underlying representation. For example, CSS can be linked to in a separate file, or can be inline within html, but still be the same css and have the same expected external effect. A Page represents the practical components of what makes up a static snapshot of a web page.nweb-repcss library linksoweb-repjavascript library linkspweb-repcssqweb-repjavascript with global scoperweb-rep.javascript included within the onLoad functionsweb-rephtml within the headertweb-rep body htmluweb-rep%stateful result of one step, given a dH, and a monadic action. Useful for testing and for initialising a page.vweb-rep2compute the initial state of a SharedRep (testing)wweb-repQCompute the initial state of a SharedRep and then run an action once (see tests).xweb-rep/The common file suffixes of the three concerns.yweb-rep*Create filenames for each Concern element.zweb-repDefault configuration is inline ecma and css, separate html header and body, minified code, with the suggested filename prefix.{web-repRender D as text.|web-repRender  as text.}web-rep&Wrap js in standard DOM window loader.~web-repConvert  to A%, throwing an error on incorrectness.web-repRender A as .€web-repRender > as .D>?@ABCDEFGHIJKLMNOPQRVSTUWXYZ[\]^_`abcdefghikjlmnopqrstuvwxyz{|}~€NoneeV±web-rep7Render a Page with the default configuration into Html.‚web-repRender a Page into Html.ƒweb-rep.Render a Page into css text, js text and html.„web-repRender Page concerns to files.…web-rep"Render a page to just a Html file.†web-repRender a Page as Text.‚ƒ„…†ƒ‚†„…None=?eW½‡web-repserve a Page via a ScottyM‡‡None>eboˆweb-repA l that loads mathjax‰web-repA l& that loads the mathjax 2.7 js libraryŠweb-repA l; that tries to enable mathjax inside svg (which is tricky).‹web-repA l- that tries to enable mathjax 2.7 inside svg.ãweb-rep—Mathjax applies within an svg element as normal, but results in an svg element inside a text element which is not allowed, hence the extra scripting. =http://bl.ocks.org/larsenmtl/86077bddc91c3de8d3db6a53216b2f47äweb-rep—Mathjax applies within an svg element as normal, but results in an svg element inside a text element which is not allowed, hence the extra scripting. =http://bl.ocks.org/larsenmtl/86077bddc91c3de8d3db6a53216b2f47ˆ‰Š‹ˆ‰Š‹Noneep¿ åweb-rep.prevent the Enter key from triggering an eventæweb-rep"create a web socket for event dataçweb-repscript injection js.See  'https://ghinda.net/article/script-tags/ for why this is needed.Œweb-rep8componentry to kick off a javascript-bridge enabled pageweb-rep0replace a container and run any embedded scriptsŽweb-rep2append to a container and run any embedded scriptsweb-rep%send css, js and html over the bridgeweb-rep#The javascript bridge continuation.‘web-rep=consume an Element using a Committer and a Value continuation’web-rep`consume shared values using a step function, a continuation committer, and a Value continuation.“web-repprun a SharedRep using an initial state, a step function that consumes the shared model, and a value continuation”web-repcreate Wai Middleware for a `. providing an initialiser and action on events•web-repprocess a list of Values ŒŽ‘’“”• ŒŽ‘’•“”None>e}<–web-repA page containing all the  https://getbootstrap.com/ bootstrap needs for a web page.—web-rep"wrap some Html with the bootstrap  2https://getbootstrap.com/docs/4.3/components/card/card class˜web-rep!wrap some html with a classed div™web-rep<A Html object based on the bootstrap accordion card concept.šweb-rep2A bootstrap accordion card attached to a checkbox.›web-rep%create a bootstrapped accordian classœweb-rep%create a bootstrapped accordian classweb-repqThis version of accordion runs a local state for naming, and will cause name clashes if the prefix is not unique.›web-repLname prefix. This is needed because an Int doesn't seem to be a valid name.web-rep card titleweb-rep1title, html tuple for each item in the accordion.–—˜™š›œ–—˜›œ™š None0Pe âžweb-rep!Create a sharedRep from an Input.Ÿweb-repLike ž—, but does not put a value into the HashMap on instantiation, consumes the value when found in the HashMap, and substitutes a default on lookup failure web-rep double sliderXFor Example, a slider between 0 and 1 with a step of 0.01 and a default value of 0.3 is:%:t slider (Just "label") 0 1 0.01 0.3Cslider (Just "label") 0 1 0.01 0.3 :: Monad m => SharedRep m Double¡web-repintegral sliderYFor Example, a slider between 0 and 1000 with a step of 10 and a default value of 300 is:':t sliderI (Just "label") 0 1000 10 300$sliderI (Just "label") 0 1000 10 300= :: (Monad m, ToHtml a, Integral a, Show a) => SharedRep m a¢web-reptextbox classique%:t textbox (Just "label") "some text"Atextbox (Just "label") "some text" :: Monad m => SharedRep m Text£web-rep2textarea input element, specifying number of rows.¤web-rep color input¥web-rep dropdown box¦web-repa datalist input§web-rep=A dropdown box designed to help represent a haskell sum type.¨web-repA checkbox input.©web-repa toggle buttonªweb-repa button«web-repfilename input¬web-rep#Represent a Maybe using a checkbox.'Hides the underlying content on Nothing­web-repkA (fixed-size) list represented in html as an accordion card A major restriction of the library is that a `~ does not have a Monad instance. In practice, this means that the external representation of lists cannot have a dynamic size.èweb-rep)A (fixed-sized) list of (Bool, a) tuples.®web-repA fixed-sized list of Maybe a's¯web-rep¾A SharedRep of [a]. Due to the applicative nature of the bridge, the size of lists has to be fixed on construction. listRep is a workaround for this, to enable some form of dynamic sizing.±web-rep0Representation of web concerns (css, js & html).²web-repturns a SharedRep into a fiddleéweb-reptoggle show/hidežweb-repParserweb-repPrinterweb-rep1 typeweb-rep initial value¥web-repparse an a from Textweb-repprint an a to Textweb-replabel suggestionweb-rep"list of dropbox elements (as text)web-rep initial value¯web-repname prefix (should be unique)web-repBool Repweb-repa Repweb-repmaximum length of listweb-repdefault value for new rowsweb-repinitial valuesžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²žŸ¡ ¥¦§¤¢£¨©ª«¬±²­®¯°None¡Àñêëìíîïðñ  òóôõö÷øùúûüýþÿ        !"#$%&'()*+,-./0123%&'()*+,-./0123456>?@ABCDEFGHIJKLMNOPQRVSTUWXYZ[\]^_`abcdefghikjlmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²Vdefgcu`ab_hikjwvlmnopqrstGHIJKLMzZ[\]^xyWXYRVSTUNOPQDEF|{ABC>?@}€~     None07>e¬\ ºweb-repFor a typed dropdown example.½web-rep&One of each sharedrep input instances.Èweb-repsimple page exampleÉweb-reppage with localised librariesÊweb-repsimple mathjax formulaeËweb-rep2simple mathjax formulae inside an svg text elementÍweb-rep shape parserÎweb-rep shape printerÏweb-repone of each input SharedReps"³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔ"ÈÉÊË̽¾¿ÀÁÂÃÄÅÆÇϺ»¼ÎͶ·¸¹Ó³´µÔÐÑÒ4  !" #$ %& '()*+,-.,-/012345678978:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_ ` ` a b b c d d e f f g h i j k l m n o p q r s t u v w x x y z { | } | ~  €  ‚ ƒ ƒ „ … † † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ øùúûùúüýþÿ          '                    ! "# "# "$ % &'()'(*'(+'(,'(-'(.'(/'(0'(1'(2'(3'(456756856956:56;<=><=?<=@<=A<=A<=B<=C<=D<=E<=F<=G<=H<=I<=J<=K<=L<=M<=N<=O<=P<=Q<=R<=S<=TU$web-rep-0.3.0-Lao95ocXqltIEkUDXLxzRTWeb.PageWeb.Page.Bridge Web.Page.HtmlWeb.Page.Html.InputWeb.Page.RenderWeb.Page.ServerWeb.Page.MathjaxWeb.Page.BootstrapWeb.Page.SharedRepsWeb.Page.ExamplesWeb.Page.TypesbaseGHC.ExtsfromList(JuicyPixels-3.3.4-6cctk12PwEsCy9GKOVGlwyCodec.Picture.Types PixelRGB8 text-1.2.3.1Data.Text.InternalText3unordered-containers-0.2.10.0-b9YJCQLkMeLUf311RZkQDData.HashMap.BaseHashMap$aeson-1.4.6.0-3bvE16WI98qKH3xOCpyiqWData.Aeson.Types.InternalNullBoolNumberStringArrayObjectValueControl.Exception.Basefinally Data.Foldable sequenceA_ Data.Boolbool Data.Functorvoid"clay-0.13.3-2FhTow2LajGHC81gWWH68PClay.StylesheetCss.javascript-bridge-0.2.0-4qswdtV0GjXHajKlF4xOoONetwork.JavaScript.ServicesstartEngine"wai-3.2.2.1-2UuI4DP8eqk7Tp0qWgG8iM Network.Wai ApplicationData.Text.Showunpack Data.Textpack"lucid-2.9.12-IzreJHUzDHAB8UUEOUMfi Lucid.BaseHtmlHtmlTclass__toTextgenName genNamePrelibCsslibJsfromHextoHex $fToHtml()$fToHtmlPixelRGB8 $fToHtmlInt $fToHtmlBool$fToHtmlDouble InputTypeSliderTextBoxTextArea ColorPicker ChooseFileDropdown DropdownSumDatalistCheckboxToggleButtonInputinputVal inputLabelinputId inputType $fToHtmlInput $fEqInputType$fShowInputType$fGenericInputType $fEqInput $fShowInput$fGenericInputPageJs PageJsTextJSunJSPageCss PageCssText PageConfigconcerns structure pageRender filenames localdirs PageRenderPrettyMinifiedNoPost PageStructure HeaderBodyHeadlessSnippetSvg PageConcernsInline SeparatedConcerns cssConcern jsConcern htmlConcern SharedRep SharedRepFunrepRepRepFrepmakeElementelementvaluePagelibsCsslibsJscssBodyjsGlobaljsOnLoad htmlHeaderhtmlBodyoneRep zeroStaterunOncesuffixes concernNamesdefaultPageConfig renderPageCss renderCssonLoadparseJsrenderJs renderPageJs renderPagerenderPageHtmlWithrenderPageWithrenderPageToFilerenderPageHtmlToFilerenderPageAsText servePageWith mathjaxPage mathjax27PagemathjaxSvgPagemathjax27SvgPage bridgePagereplaceappend sendConcernsbridge valueConsume sharedConsume runOnEvent midSharedrunList bootstrapPagecardify divClass_ accordionCardaccordionCardChecked accordionaccordionChecked accordion_repInput repMessageslidersliderItextboxtextarea colorPickerdropdowndatalist dropdownSumcheckboxtogglebutton chooseFilemaybeRep accordionList listMaybeReplistRepdefaultListLabelsfiddle viaFiddleSumType2Example SumOutside SumInsideSumTypeExampleSumIntSumOnlySumTextShape SquareShape CircleShape RepExamples repTextbox repTextarea repSliderI repSlider repCheckbox repToggle repDropdownrepShaperepColorpage1page2pagemj pagemjsvgcfg2toShape fromShape repExamples listExamplelistRepExample fiddleExamplerepSumTypeExamplerepSumType2Example $fEqShape $fShowShape$fGenericShape$fShowRepExamples$fEqRepExamples$fGenericRepExamples$fEqSumTypeExample$fShowSumTypeExample$fGenericSumTypeExample$fEqSumType2Example$fShowSumType2Example$fGenericSumType2Example2language-javascript-0.7.0.0-CBxI8JfhVrsGuDaidMMTskLanguage.JavaScript.Parser.AST JSStatementJSASTscriptMathjax27ConfigSvgscriptMathjaxConfigSvg preventEnter webSocket runScriptJsaccordionBoolListscriptToggleShowGHC.Base<$ Applicativepure<*>*><*liftA2<$><**> Alternativeempty<|>manysomeData.Bifunctor BifunctorfirstsecondbimapControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConstliftA3liftA'bifunctors-5.5.6-HBtxCKZmSiZ5eb1tkiYjOiData.BiapplicativetraverseBiaWith sequenceBia traverseBiabiliftA3<<**>><<$>> Biapplicativebipure<<*>>biliftA2*>><<*5interpolatedstring-perl6-1.0.2-I4tCPlKiQxZ10ba2oQP3DRText.InterpolatedString.Perl6qqcqqShowQshowQ+transformers-0.5.6.2-I9SzqoyagSNIbUNkJkeRZ3Control.Monad.Trans.State.LazystaterunStateStateStateT runStateT evalState execStatemapState withState evalStateT execStateT mapStateT withStateTliftPass liftListen liftCatch liftCallCC' liftCallCCgetsmodify'modifyputget