úÎ!À²øÞ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ žŸ ¡¢£¤¥¦§¨©ª«¬­®¯° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý None>Dbv web-rep-FIXME: A horrible hack to separate class id's web-repConvert html to text web-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-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.  None7Dbe»web-repWVarious types of web page inputs, encapsulating practical bootstrap class functionality!web-repRsomething that might exist on a web page and be a front-end input to computations.#web-repunderlying value$web-replabel suggestion%web-repname/key/id of the Input&web-reptype of html input !"#$%&!"#$%& None 4567>DPbe6È.web-repUnifies javascript as Þ and script as ß.1web-rep wrapper for à4web-repUnifies css as either a  or as Text.7web-rep'Configuration options when rendering a O.>web-rep Post-processing of page concernsBweb-rep0Various ways that a Html file can be structured.Gweb-rep Is the rendering to include all Ji (typically in a html file) or be separated (tyypically into separate files and linked in the html file)?Jweb-repBA web page typically is composed of some css, javascript and html.J1 abstracts this structural feature of a web page.Oweb-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.Qweb-repcss library linksRweb-repjavascript library linksSweb-repcssTweb-repjavascript with global scopeUweb-rep.javascript included within the onLoad functionVweb-rephtml within the headerWweb-rep body htmlXweb-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 4 as text.\web-repRender  as text.]web-rep&Wrap js in standard DOM window loader.^web-repConvert ß to 1%, throwing an error on incorrectness._web-repRender 1 as ß.`web-repRender . as ß.4./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`None>DbeBTaweb-repA O that loads mathjaxbweb-repA O& that loads the mathjax 2.7 js librarycweb-repA O; that tries to enable mathjax inside svg (which is tricky).dweb-repA O- 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/86077bddc91c3de8d3db6a53216b2f47abcdabcdNoneDbeFúeweb-rep7Render a Page with the default configuration into Html.fweb-repRender a Page into Html.gweb-rep.Render a Page into css text, js text and html.hweb-repRender Page concerns to files.iweb-rep"Render a page to just a Html file.jweb-repRender a Page as Text.efghijegfjhiNone=?DbeHkweb-repserve a Page via a ScottyMkk None 4567>DPbehŠ lweb-repdefault representation type of  ()mweb-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.^unshare should only be run once, which is a terrible flaw that might be fixed by linear types.pweb-rep9the common usage, where the representation domain is Htmlqweb-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.uweb-rep%stateful result of one step, given a qH, and a monadic action. Useful for testing and for initialising a page.vweb-repname supply for elements of a mwweb-rep^sometimes a number doesn't work properly in html (or js???), and an alpha prefix seems to helpxweb-repCreate a sharedRepãweb-repLike x—, 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 failureyweb-rep2compute the initial state of a SharedRep (testing)zweb-repQCompute the initial state of a SharedRep and then run an action once (see tests).xweb-repParserweb-repPrinterweb-rep1create initial object from name and initial valueweb-rep initial valueãweb-repParserweb-rep1create initial object from name and initial valueweb-rep initial valueweb-rep default valuelmnopqrstuvwxãyzNone>Dbetñ{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 classweb-rep%create a bootstrapped accordian class‚web-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.{|}~€‚{|}€~‚ None0DPbeŸƒ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, P.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-rep%textbox that only updates on focusoutˆweb-rep2textarea input element, specifying number of rows.‰web-repNon-typed hex color inputŠweb-rep dropdown box‹web-rep%dropdown box with multiple selectionsŒweb-repa datalist inputweb-rep=A dropdown box designed to help represent a haskell sum type.Žweb-repA checkbox input.web-repa toggle buttonweb-repa button‘web-repfilename input’web-rep#Represent a Maybe using a checkbox.'Hides the underlying content on Nothingåweb-reptoggle show/hide“web-repkA (fixed-size) list represented in html as an accordion card A major restriction of the library is that a m~ 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-repParse from a textbox+Uses focusout so as not to spam the reader.˜web-rep0Representation of web concerns (css, js & html).™web-repturns a SharedRep into a fiddle›web-repselect test keys from a Mapœweb-reprep of multiple items listƒweb-repParserweb-repPrinterweb-rep! 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-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ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œƒ„†…Š‹Œ‰‡ˆŽ‘’˜™“”•—–š›œNone7>Dbe¨Äçweb-rep0{"event":{"element":"textid","value":"abcdees"}}èweb-rep0replace a container and run any embedded scriptséweb-rep2append to a container and run any embedded scriptsêweb-rep"create a web socket for event dataëweb-repJEvent hooks that may need to be reattached given dynamic content creation.ìweb-rep.prevent the Enter key from triggering an eventíweb-repscript injection js.See  'https://ghinda.net/article/script-tags/ for why this might be needed.îweb-rep+initial code to place html of the SharedRepweb-rep output codež£¢ Ÿ¡¤¥¦§¨©ª«¤¥¦§¨©ªž£¢ Ÿ¡«NoneDb©²   !"#$%&./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž£¢ Ÿ¡¤¥¦§¨©ª«DqrstpumnolzyxvwOPQRSTUVW789:;<=ZJKLMNXYGHIBCDEF>?@A456\[123./0]`^_ None07>Dbe±ä·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-rep shape parserËweb-rep shape printerÌweb-repone of each input SharedReps"°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑ"ÆÇÈɺ»¼½¾¿ÀÁÂÃÄÅÌ·¸¹Ëʳ´µ¶Ð°±²ÑÍÎÏï  !"#$%&'()*+,-./01234556789:;<=>?@ A A B C C D E E F G G H I J K L M N O P Q R S T U V W X Y Y Z [ \ ] ] ^ _ ` a b c d e f g h i j k l mnopqrstuvwx y z y { | } | ~  € ‚ ƒ „ …†‡ˆ‰Š‹Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨©ª«¬­®¯°±²³´µ¶·¸¹º » ¼ ½ ¾ ¿ À Á  à Ä Å Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ çèéêëìíèéîïð ñ ò ó ôõö÷øùúûüý$web-rep-0.6.0-5BHqaxXD5PHLh5mV7R7V0PWeb.RepWeb.Rep.Socket Web.Rep.HtmlWeb.Rep.Html.InputWeb.Rep.MathjaxWeb.Rep.RenderWeb.Rep.ServerWeb.Rep.BootstrapWeb.Rep.SharedRepsWeb.Rep.Examples Web.Rep.PageWeb.Rep.Shared4unordered-containers-0.2.11.0-1MOVU81zMqZ99QGh31OSN0Data.HashMap.BaseHashMap'box-socket-0.0.1-ASs8DSMTZ3uGqxWccMkTmZ Box.SocketdefaultSocketConfigpathporthost SocketConfig"clay-0.13.3-2FhTow2LajGHC81gWWH68PClay.StylesheetCss#lucid-2.9.12-7kkUc52yELEKD3LPyhBL1L Lucid.BaseHtmlHtmlTclass__toTextlibCsslibJs $fToHtml[] $fToHtml() $fToHtmlInt $fToHtmlBool$fToHtmlDouble InputTypeSliderTextBoxTextBox'TextArea ColorPicker ChooseFileDropdownDropdownMultiple DropdownSumDatalistCheckboxToggleButtonInputinputVal inputLabelinputId inputType $fToHtmlInput $fEqInputType$fShowInputType$fGenericInputType $fEqInput $fShowInput$fGenericInputRepJs RepJsTextJSunJSRepCss RepCssText PageConfigconcerns structure pageRender filenames localdirs PageRenderPrettyMinifiedNoPost PageStructure HeaderBodyHeadlessSnippetSvg PageConcernsInline SeparatedConcerns cssConcern jsConcern htmlConcernPagelibsCsslibsJscssBodyjsGlobaljsOnLoad htmlHeaderhtmlBodysuffixes concernNamesdefaultPageConfig renderRepCss renderCssonLoadparseJsrenderJs renderRepJs mathjaxPage mathjax27PagemathjaxSvgPagemathjax27SvgPage renderPagerenderPageHtmlWithrenderPageWithrenderPageToFilerenderPageHtmlToFilerenderPageAsText servePageWith SharedRep SharedRepFunshareRepRepFrepmakeoneRepgenName genNamePreregister zeroStaterunOnce bootstrapPagecardify divClass_ accordionCardaccordionCardChecked accordionaccordionChecked accordion_repInput repMessageslidersliderItextboxtextarea colorPickerdropdowndropdownMultipledatalist dropdownSumcheckboxtogglebutton chooseFilemaybeRep accordionList listMaybeReplistRepdefaultListLabels readTextboxfiddle viaFiddle repChoice selectItemsrepItemsSelectsubtypeCodeReplaceAppendConsoleEvalVal socketPageserveSocketBox sharedServerdefaultSharedServerdefaultSocketPagedefaultInputCodedefaultOutputCodecode$fEqCode $fShowCode $fGenericCode $fReadCodeSumType2Example SumOutside SumInsideSumTypeExampleSumIntSumOnlySumTextShape SquareShape CircleShape RepExamples repTextbox repTextarea repSliderI repSlider repCheckbox repToggle repDropdownrepDropdownMultiplerepShaperepColorpage1page2pagemjcfg2toShape fromShape repExamples listExamplelistRepExample fiddleExamplerepSumTypeExamplerepSumType2Example $fEqShape $fShowShape$fGenericShape$fShowRepExamples$fEqRepExamples$fGenericRepExamples$fEqSumTypeExample$fShowSumTypeExample$fGenericSumTypeExample$fEqSumType2Example$fShowSumType2Example$fGenericSumType2Example2language-javascript-0.7.1.0-6T8thxTSiRnJoYg2pXl98oLanguage.JavaScript.Parser.AST JSStatement text-1.2.3.1Data.Text.InternalTextJSASTscriptMathjax27ConfigSvgscriptMathjaxConfigSvgmessagetextbox'scriptToggleShowaccordionBoolListparserJreplaceappend webSocket refreshJsbJs preventEnter runScriptJs backendLoop