aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralexbiehl <alex.biehl@gmail.com>2017-10-31 21:48:55 +0100
committeralexbiehl <alex.biehl@gmail.com>2017-10-31 21:48:55 +0100
commit08c9e19236770811caf571321f5ece271d1fccff (patch)
treebeb3f6407d14abcab32f9d54811cabd319c356a4
parent3896bff411596ef50b5ca2f2be425e89878410aa (diff)
parente5fe98530d9c70f5197494da9de07f42dd7fe334 (diff)
Merge remote-tracking branch 'origin/master' into ghc-head
-rw-r--r--CHANGES.md3
-rw-r--r--doc/invoking.rst2
-rw-r--r--haddock-api/haddock-api.cabal2
-rw-r--r--haddock-api/resources/html/Ocean.std-theme/ocean.css30
-rw-r--r--haddock-api/resources/html/haddock-bundle.min.js2
-rw-r--r--haddock-api/resources/html/js-src/cookies.ts20
-rw-r--r--haddock-api/resources/html/js-src/details-helper.ts106
-rw-r--r--haddock-api/resources/html/js-src/init.ts9
-rw-r--r--haddock-api/resources/html/js-src/quick-jump.tsx29
-rw-r--r--haddock-api/resources/html/js-src/style-menu.ts (renamed from haddock-api/resources/html/js-src/haddock-util.ts)75
-rw-r--r--haddock-api/resources/html/package.json3
-rw-r--r--haddock-api/resources/html/quick-jump.css17
-rw-r--r--haddock-api/resources/html/quick-jump.min.js2
-rw-r--r--haddock-api/src/Haddock.hs37
-rw-r--r--haddock-api/src/Haddock/Backends/Meta.hs22
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml.hs60
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs6
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml/Layout.hs14
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml/Meta.hs28
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml/Utils.hs35
-rw-r--r--haddock-api/src/Haddock/InterfaceFile.hs2
-rw-r--r--haddock-api/src/Haddock/ModuleTree.hs30
-rw-r--r--haddock-api/src/Haddock/Options.hs10
-rw-r--r--haddock.cabal2
-rw-r--r--html-test/ref/A.html76
-rw-r--r--html-test/ref/B.html56
-rw-r--r--html-test/ref/Bold.html18
-rw-r--r--html-test/ref/Bug1.html26
-rw-r--r--html-test/ref/Bug201.html24
-rw-r--r--html-test/ref/Bug253.html18
-rw-r--r--html-test/ref/Bug26.html62
-rw-r--r--html-test/ref/Bug294.html50
-rw-r--r--html-test/ref/Bug298.html48
-rw-r--r--html-test/ref/Bug3.html22
-rw-r--r--html-test/ref/Bug308.html24
-rw-r--r--html-test/ref/Bug308CrossModule.html18
-rw-r--r--html-test/ref/Bug310.html38
-rw-r--r--html-test/ref/Bug313.html24
-rw-r--r--html-test/ref/Bug335.html44
-rw-r--r--html-test/ref/Bug387.html32
-rw-r--r--html-test/ref/Bug4.html22
-rw-r--r--html-test/ref/Bug6.html146
-rw-r--r--html-test/ref/Bug613.html94
-rw-r--r--html-test/ref/Bug7.html72
-rw-r--r--html-test/ref/BugDeprecated.html80
-rw-r--r--html-test/ref/BugExportHeadings.html80
-rw-r--r--html-test/ref/BundledPatterns.html150
-rw-r--r--html-test/ref/BundledPatterns2.html154
-rw-r--r--html-test/ref/DeprecatedClass.html46
-rw-r--r--html-test/ref/DeprecatedData.html70
-rw-r--r--html-test/ref/DeprecatedFunction.html32
-rw-r--r--html-test/ref/DeprecatedFunction2.html22
-rw-r--r--html-test/ref/DeprecatedFunction3.html22
-rw-r--r--html-test/ref/DeprecatedNewtype.html48
-rw-r--r--html-test/ref/DeprecatedReExport.html22
-rw-r--r--html-test/ref/DeprecatedRecord.html52
-rw-r--r--html-test/ref/DeprecatedTypeFamily.html48
-rw-r--r--html-test/ref/DeprecatedTypeSynonym.html40
-rw-r--r--html-test/ref/Examples.html26
-rw-r--r--html-test/ref/Extensions.html18
-rw-r--r--html-test/ref/GADTRecords.html92
-rw-r--r--html-test/ref/Hash.html146
-rw-r--r--html-test/ref/HiddenInstances.html86
-rw-r--r--html-test/ref/HiddenInstancesB.html68
-rw-r--r--html-test/ref/Hyperlinks.html22
-rw-r--r--html-test/ref/IgnoreExports.html32
-rw-r--r--html-test/ref/Instances.html320
-rw-r--r--html-test/ref/Math.html22
-rw-r--r--html-test/ref/NamedDoc.html10
-rw-r--r--html-test/ref/Nesting.html72
-rw-r--r--html-test/ref/NoLayout.html22
-rw-r--r--html-test/ref/NonGreedy.html18
-rw-r--r--html-test/ref/Operators.html212
-rw-r--r--html-test/ref/OrphanInstances.html22
-rw-r--r--html-test/ref/PR643.html18
-rw-r--r--html-test/ref/PR643_1.html18
-rw-r--r--html-test/ref/PatternSyns.html200
-rw-r--r--html-test/ref/Properties.html26
-rw-r--r--html-test/ref/QuasiExpr.html40
-rw-r--r--html-test/ref/SpuriousSuperclassConstraints.html30
-rw-r--r--html-test/ref/Test.html952
-rw-r--r--html-test/ref/Threaded.html22
-rw-r--r--html-test/ref/Threaded_TH.html18
-rw-r--r--html-test/ref/Ticket112.html18
-rw-r--r--html-test/ref/Ticket75.html36
-rw-r--r--html-test/ref/TitledPicture.html32
-rw-r--r--html-test/ref/TypeFamilies.html618
-rw-r--r--html-test/ref/TypeFamilies2.html134
-rw-r--r--html-test/ref/Unicode.html22
89 files changed, 3079 insertions, 2619 deletions
diff --git a/CHANGES.md b/CHANGES.md
index cfebf736..19417d12 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,6 +2,9 @@
* to be released
+ * A --reexport flag, which can be used to add extra modules to the
+ top-level module tree
+
* Haddock no longer reports coverage statistics for hidden modules. By default
cabal-install marks all package internal modules as hidden.
diff --git a/doc/invoking.rst b/doc/invoking.rst
index fc1e4410..acdba9bd 100644
--- a/doc/invoking.rst
+++ b/doc/invoking.rst
@@ -39,7 +39,7 @@ The following options are available:
.. option:: -B <dir>
- Tell GHC that that its lib directory is dir. Can be used to override
+ Tell GHC that its lib directory is dir. Can be used to override
the default path.
.. option:: -o <dir>
diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddock-api.cabal
index 749225be..660108ac 100644
--- a/haddock-api/haddock-api.cabal
+++ b/haddock-api/haddock-api.cabal
@@ -86,12 +86,12 @@ library
Haddock.Backends.Xhtml.Decl
Haddock.Backends.Xhtml.DocMarkup
Haddock.Backends.Xhtml.Layout
+ Haddock.Backends.Xhtml.Meta
Haddock.Backends.Xhtml.Names
Haddock.Backends.Xhtml.Themes
Haddock.Backends.Xhtml.Types
Haddock.Backends.Xhtml.Utils
Haddock.Backends.LaTeX
- Haddock.Backends.Meta
Haddock.Backends.HaddockDB
Haddock.Backends.Hoogle
Haddock.Backends.Hyperlinker
diff --git a/haddock-api/resources/html/Ocean.std-theme/ocean.css b/haddock-api/resources/html/Ocean.std-theme/ocean.css
index 20e37ca8..0852dea5 100644
--- a/haddock-api/resources/html/Ocean.std-theme/ocean.css
+++ b/haddock-api/resources/html/Ocean.std-theme/ocean.css
@@ -46,6 +46,14 @@ a[href].def:hover { color: rgb(78, 98, 114); }
/* @end */
+/* @group Show and hide with JS */
+
+body.js-enabled .hide-when-js-enabled {
+ display: none;
+}
+
+/* @end */
+
/* @group Fonts & Sizes */
/* Basic technique & IE workarounds from YUI 3
@@ -106,7 +114,7 @@ pre, code, kbd, samp, tt, .src {
/* @group Common */
-.caption, h1, h2, h3, h4, h5, h6 {
+.caption, h1, h2, h3, h4, h5, h6, summary {
font-weight: bold;
color: rgb(78,98,114);
margin: 0.8em 0 0.4em;
@@ -168,6 +176,16 @@ p.caption.expander {
min-height: 9px;
}
+summary {
+ cursor: pointer;
+ outline: none;
+ list-style-image: url(plus.gif);
+ list-style-position: outside;
+}
+
+details[open] > summary {
+ list-style-image: url(minus.gif);
+}
pre {
padding: 0.25em;
@@ -338,7 +356,8 @@ div#style-menu-holder {
z-index: 1;
}
-#synopsis .caption {
+#synopsis summary {
+ display: block;
float: left;
width: 29px;
color: rgba(255,255,255,0);
@@ -346,16 +365,13 @@ div#style-menu-holder {
margin: 0;
font-size: 1px;
padding: 0;
+ background: url(synopsis.png) no-repeat 0px -8px;
}
-#synopsis p.caption.collapser {
+#synopsis details[open] > summary {
background: url(synopsis.png) no-repeat -64px -8px;
}
-#synopsis p.caption.expander {
- background: url(synopsis.png) no-repeat 0px -8px;
-}
-
#synopsis ul {
height: 100%;
overflow: auto;
diff --git a/haddock-api/resources/html/haddock-bundle.min.js b/haddock-api/resources/html/haddock-bundle.min.js
index 64357c4a..82a34ddb 100644
--- a/haddock-api/resources/html/haddock-bundle.min.js
+++ b/haddock-api/resources/html/haddock-bundle.min.js
@@ -1,2 +1,2 @@
-!function e(t,n,o){function r(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return r(n||e)},u,u.exports,e,t,n,o)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<o.length;s++)r(o[s]);return r}({1:[function(e,t,n){"use strict";function o(e){return(" "+e+" ").replace(_," ")}function r(e){return e.replace(k,"")}function i(e,t){return o(e.className||"").indexOf(" "+t+" ")>=0}function s(e,t){var n=o(e.className||"");n.indexOf(" "+t+" ")<0&&(e.className=r(n+" "+t))}function a(e,t){var n=o(e.className||"");n=n.replace(" "+t+" "," "),e.className=r(n)}function l(e,t,n,o){return null==o&&(o=!i(e,t)),o?(a(e,n),s(e,t)):(a(e,t),s(e,n)),o}function c(e,t){return function(n,o){return l(n,e,t,o)}}function u(e){var t=b(document.getElementById("section."+e));return x(document.getElementById("control."+e),t),h(e),t}function h(e){S[e]?delete S[e]:S[e]=!0;var t=[];for(var n in S)S.hasOwnProperty(n)&&t.push(n);document.cookie="collapsed="+encodeURIComponent(t.join("+"))}function d(e,t){document.cookie=e+"="+encodeURIComponent(t)+";path=/;"}function p(e){document.cookie=e+"=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;"}function f(e){for(var t=e+"=",n=document.cookie.split(";"),o=0;o<n.length;o++){for(var r=n[o];" "==r.charAt(0);)r=r.substring(1,r.length);if(0==r.indexOf(t))return decodeURIComponent(r.substring(t.length,r.length))}return null}function v(e){var t=document.getElementById("page-menu");if(t&&t.firstChild){var n=t.firstChild.cloneNode(!1);n.innerHTML=e,t.appendChild(n)}}function m(){return Array.prototype.slice.call(document.getElementsByTagName("link")).filter(function(e){return-1!=e.rel.indexOf("style")&&e.title})}function g(e){for(var t=m(),n=null,o=0;o<t.length;o++){var r=t[o];r.disabled=!0,r.title==e&&(n=r)}n?(n.disabled=!1,d("haddock-style",e)):(t[0].disabled=!1,p("haddock-style")),y(!1)}function y(e){var t=document.getElementById("style-menu");t&&b(t,e)}Object.defineProperty(n,"__esModule",{value:!0});var _=/\s\s+/g,k=/^\s+|\s+$/g,b=c("show","hide"),x=c("collapser","expander");"undefined"!=typeof window&&(window.toggleSection=u);var S={};n.restoreCollapsed=function(){var e=f("collapsed");if(e){var t=e.split("+");for(var n in t)document.getElementById("section."+t[n])&&u(t[n])}},n.addStyleMenu=function(){var e=m(),t="";e.forEach(function(e){t+="<li><a href='#' onclick=\"setActiveStyleSheet('"+e.title+"'); return false;\">"+e.title+"</a></li>"}),e.length>1&&v("<div id='style-menu-holder'><a href='#' onclick='styleMenu(); return false;'>Style &#9662;</a><ul id='style-menu' class='hide'>"+t+"</ul></div>")},n.resetStyle=function(){var e=f("haddock-style");e&&g(e)}},{}],2:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=e("./haddock-util"),r=e("./quick-jump");!function(e){"interactive"===document.readyState?e():document.addEventListener("readystatechange",function(){"interactive"===document.readyState&&e()})}(function(){o.addStyleMenu(),o.resetStyle(),o.restoreCollapsed(),r.init()})},{"./haddock-util":1,"./quick-jump":3}],3:[function(e,t,n){"use strict";function o(e,t,n){var o=new XMLHttpRequest;o.onreadystatechange=function(){o.readyState===XMLHttpRequest.DONE&&(200===o.status?t&&t(JSON.parse(o.responseText)):n&&n(o))},o.open("GET",e,!0),o.send()}function r(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),d.render(p(v,{onClick:e,title:"Quick Jump"}),t,n)}function i(e,t){return t.length<=e?t:t.slice(0,e)}function s(){return p("table",{class:"keyboard-shortcuts"},p("tr",null,p("th",null,"Key"),p("th",null,"Shortcut")),p("tr",null,p("td",null,p("span",{class:"key"},"s")),p("td",null,"Open this search box")),p("tr",null,p("td",null,p("span",{class:"key"},"esc")),p("td",null,"Close this search box")),p("tr",null,p("td",null,p("span",{class:"key"},"↓"),",",p("span",{class:"key"},"ctrl")," + ",p("span",{class:"key"},"j")),p("td",null,"Move down in search results")),p("tr",null,p("td",null,p("span",{class:"key"},"↑"),",",p("span",{class:"key"},"ctrl")," + ",p("span",{class:"key"},"k")),p("td",null,"Move up in search results")),p("tr",null,p("td",null,p("span",{class:"key"},"↵")),p("td",null,"Go to active search result")))}function a(){return p("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function l(e){var t=[p("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",p("code",null,"[]"),"."),p("p",null,p("code",null,"Nothing")," matches your query for '",e.searchString,"'."),p("p",null,p("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function c(e,t){d.render(p(m,{baseUrl:e||".",showHideTrigger:t||r}),document.body)}var u=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();Object.defineProperty(n,"__esModule",{value:!0});var h=e("fuse.js"),d=e("preact"),p=d.h,f=d.Component,v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.render=function(e){return p("li",null,p("a",{href:"#",onClick:function(t){t.preventDefault(),e.onClick()}},e.title))},t}(f),m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.linkIndex=0,t.focusPlease=!1,t.navigatedByKeyboard=!1,t}return u(t,e),t.prototype.componentWillMount=function(){var e=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),o(this.props.baseUrl+"/doc-index.json",function(t){e.setState({fuse:new h(t,{threshold:.4,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:["name","module"]}),moduleResults:[]})},function(t){console&&console.error("could not load 'doc-index.json' for searching",t),e.setState({failedLoading:!0})}),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(t){e.state.isVisible&&("Escape"===t.key?e.hide():"ArrowUp"===t.key||"k"===t.key&&t.ctrlKey?(t.preventDefault(),e.navigateLinks(-1)):"ArrowDown"===t.key||"j"===t.key&&t.ctrlKey?(t.preventDefault(),e.navigateLinks(1)):"Enter"===t.key&&e.state.activeLinkIndex>=0&&e.followActiveLink()),"s"===t.key&&"input"!==t.target.tagName.toLowerCase()&&(t.preventDefault(),e.show())})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},t.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},t.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t={};this.state.fuse.search(e).forEach(function(e){var n=e.item.module;(t[n]||(t[n]=[])).push(e)});var n=[];for(var o in t)!function(e){var o=t[e],r=0;o.forEach(function(e){r+=1/e.score}),n.push({module:e,totalScore:1/r,items:o})}(o);n.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:n})},t.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){var n=this;if(t.failedLoading)return null;this.linkIndex=0;var o=function(e){e.stopPropagation()},r=i(10,t.moduleResults).map(function(e){return n.renderResultsInModule(e)});return p("div",{id:"search",class:t.isVisible?"":"hidden"},p("div",{id:"search-form",onMouseDown:o},p("input",{placeholder:"Search in package by name",ref:function(e){n.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),p("div",{id:"search-results",ref:function(e){n.searchResults=e},onMouseDown:o,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var o=t.getAttribute("data-link-index");if("string"==typeof o){var r=parseInt(o,10);n.setState({activeLinkIndex:r});break}t=t.parentNode}}},""===t.searchString?[p(a,null),p(s,null)]:0==r.length?p(l,{searchString:t.searchString}):p("ul",null,r)))},t.prototype.renderResultsInModule=function(e){var t=this,n=e.items,o=e.module,r=this.state.expanded[o]||n.length<=10,s=r?n:i(8,n),a=function(e){return p("li",{class:"search-result"},t.navigationLink(t.props.baseUrl+"/"+e.link,{},p(g,{html:e.display_html})))};return p("li",{class:"search-module"},p("h4",null,o),p("ul",null,s.map(function(e){return a(e.item)}),r?[]:p("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},t.state.expanded);e[o]=!0,t.setState({expanded:e})},{},"show "+(n.length-s.length)+" more results from this module"))))},t.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t);return this.menuLink.apply(this,[i,function(){window.location.href=e,n.hide()}].concat(o))},t.prototype.actionLink=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(t){t.preventDefault(),e()}},t);return this.menuLink.apply(this,[r,e].concat(n))},t.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,p.apply(void 0,["a",s].concat(o))},t}(f),g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return p("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(f);n.init=c,window.quickNav={init:c}},{"fuse.js":4,preact:5}],4:[function(e,t,n){!function(e,o){"object"==typeof n&&"object"==typeof t?t.exports=o():"function"==typeof define&&define.amd?define("Fuse",[],o):"object"==typeof n?n.Fuse=o():e.Fuse=o()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=n(5),s=n(7),a=n(4),l=function(){function e(t,n){var r=n.location,i=void 0===r?0:r,s=n.distance,l=void 0===s?100:s,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,d=void 0===h?32:h,p=n.isCaseSensitive,f=void 0!==p&&p,v=n.tokenSeparator,m=void 0===v?/ +/g:v,g=n.findAllMatches,y=void 0!==g&&g,_=n.minMatchCharLength,k=void 0===_?1:_;o(this,e),this.options={location:i,distance:l,threshold:u,maxPatternLength:d,isCaseSensitive:f,tokenSeparator:m,findAllMatches:y,minMatchCharLength:k},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=d&&(this.patternAlphabet=a(this.pattern))}return r(e,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return i(e,this.pattern,o);var r=this.options,a=r.location,l=r.distance,c=r.threshold,u=r.findAllMatches,h=r.minMatchCharLength;return s(e,this.pattern,this.patternAlphabet,{location:a,distance:l,threshold:c,findAllMatches:u,minMatchCharLength:h})}}]),e}();e.exports=l},function(e,t,n){"use strict";var o=n(0),r=function e(t,n,r){if(n){var i=n.indexOf("."),s=n,a=null;-1!==i&&(s=n.slice(0,i),a=n.slice(i+1));var l=t[s];if(null!==l&&void 0!==l)if(a||"string"!=typeof l&&"number"!=typeof l)if(o(l))for(var c=0,u=l.length;c<u;c+=1)e(l[c],a,r);else a&&e(l,a,r);else r.push(l.toString())}else r.push(t);return r};e.exports=function(e,t){return r(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||((r=i-1)-o+1>=t&&n.push([o,r]),o=-1)}return e[i-1]&&i-o>=t&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var o=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,r=new RegExp(t.replace(o,"\\$&").replace(n,"|")),i=e.match(r),s=!!i,a=[];if(s)for(var l=0,c=i.length;l<c;l+=1){var u=i[l];a.push([e.indexOf(u),u.length-1])}return{score:s?.5:1,isMatch:s,matchedIndices:a}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,h=Math.abs(a-i);return c?u+h/c:h?1:u}},function(e,t,n){"use strict";var o=n(6),r=n(3);e.exports=function(e,t,n,i){for(var s=i.location,a=void 0===s?0:s,l=i.distance,c=void 0===l?100:l,u=i.threshold,h=void 0===u?.6:u,d=i.findAllMatches,p=void 0!==d&&d,f=i.minMatchCharLength,v=void 0===f?1:f,m=a,g=e.length,y=h,_=e.indexOf(t,m),k=t.length,b=[],x=0;x<g;x+=1)b[x]=0;if(-1!==_){var S=o(t,{errors:0,currentLocation:_,expectedLocation:m,distance:c});if(y=Math.min(S,y),-1!==(_=e.lastIndexOf(t,m+k))){var w=o(t,{errors:0,currentLocation:_,expectedLocation:m,distance:c});y=Math.min(w,y)}}_=-1;for(var L=[],C=1,M=k+g,I=1<<k-1,N=0;N<k;N+=1){for(var A=0,O=M;A<O;)o(t,{errors:N,currentLocation:m+O,expectedLocation:m,distance:c})<=y?A=O:M=O,O=Math.floor((M-A)/2+A);M=O;var E=Math.max(1,m-O+1),T=p?g:Math.min(m+O,g)+k,j=Array(T+2);j[T+1]=(1<<N)-1;for(var P=T;P>=E;P-=1){var R=P-1,U=n[e.charAt(R)];if(U&&(b[R]=1),j[P]=(j[P+1]<<1|1)&U,0!==N&&(j[P]|=(L[P+1]|L[P])<<1|1|L[P+1]),j[P]&I&&(C=o(t,{errors:N,currentLocation:R,expectedLocation:m,distance:c}))<=y){if(y=C,(_=R)<=m)break;E=Math.max(1,2*m-_)}}if(o(t,{errors:N+1,currentLocation:m,expectedLocation:m,distance:c})>y)break;L=j}return{isMatch:_>=0,score:0===C?.001:C,matchedIndices:r(b,v)}}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=n(1),s=n(2),a=n(0),l=function(){function e(t,n){var r=n.location,i=void 0===r?0:r,a=n.distance,l=void 0===a?100:a,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,d=void 0===h?32:h,p=n.caseSensitive,f=void 0!==p&&p,v=n.tokenSeparator,m=void 0===v?/ +/g:v,g=n.findAllMatches,y=void 0!==g&&g,_=n.minMatchCharLength,k=void 0===_?1:_,b=n.id,x=void 0===b?null:b,S=n.keys,w=void 0===S?[]:S,L=n.shouldSort,C=void 0===L||L,M=n.getFn,I=void 0===M?s:M,N=n.sortFn,A=void 0===N?function(e,t){return e.score-t.score}:N,O=n.tokenize,E=void 0!==O&&O,T=n.matchAllTokens,j=void 0!==T&&T,P=n.includeMatches,R=void 0!==P&&P,U=n.includeScore,D=void 0!==U&&U,V=n.verbose,F=void 0!==V&&V;o(this,e),this.options={location:i,distance:l,threshold:u,maxPatternLength:d,isCaseSensitive:f,tokenSeparator:m,findAllMatches:y,minMatchCharLength:k,id:x,keys:w,includeMatches:R,includeScore:D,shouldSort:C,getFn:I,sortFn:A,verbose:F,tokenize:E,matchAllTokens:j},this.setCollection(t)}return r(e,[{key:"setCollection",value:function(e){return this.list=e,e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],h=0,d=this.options.keys.length;h<d;h+=1){var p=this.options.keys[h];if("string"!=typeof p){if(a[p.name]={weight:1-p.weight||1},p.weight<=0||p.weight>1)throw new Error("Key weight has to be > 0 and <= 1");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(u,p),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,l=e.index,c=t.tokenSearchers,u=void 0===c?[]:c,h=t.fullSearcher,d=void 0===h?[]:h,p=t.resultMap,f=void 0===p?{}:p,v=t.results,m=void 0===v?[]:v;if(void 0!==i&&null!==i){var g=!1,y=-1,_=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var k=d.search(i);if(this._log('Full text: "'+i+'", score: '+k.score),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),x=[],S=0;S<u.length;S+=1){var w=u[S];this._log('\nPattern: "'+w.pattern+'"');for(var L=!1,C=0;C<b.length;C+=1){var M=b[C],I=w.search(M),N={};I.isMatch?(N[M]=I.score,g=!0,L=!0,x.push(I.score)):(N[M]=1,this.options.matchAllTokens||x.push(1)),this._log('Token: "'+M+'", score: '+N[M])}L&&(_+=1)}y=x[0];for(var A=x.length,O=1;O<A;O+=1)y+=x[O];y/=A,this._log("Token score average:",y)}var E=k.score;y>-1&&(E=(E+y)/2),this._log("Score average:",E);var T=!this.options.tokenize||!this.options.matchAllTokens||_>=u.length;if(this._log("\nCheck Matches: "+T),(g||k.isMatch)&&T){var j=f[l];j?j.output.push({key:n,arrayIndex:r,value:i,score:E,matchedIndices:k.matchedIndices}):(f[l]={item:s,output:[{key:n,arrayIndex:r,value:i,score:E,matchedIndices:k.matchedIndices}]},m.push(f[l]))}}else if(a(i))for(var P=0,R=i.length;P<R;P+=1)this._analyze({key:n,arrayIndex:P,value:i[P],record:s,index:l},{resultMap:f,results:m,tokenSearchers:u,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=0,a=1,l=0;l<i;l+=1){var c=r[l].score,u=e?e[r[l].key].weight:1,h=c*u;1!==u?a=Math.min(a,h):(r[l].nScore=h,s+=h)}t[n].score=1===a?s/i:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&i.arrayIndex>-1&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){if(this.options.verbose){var e;(e=console).log.apply(e,arguments)}}}]),e}();e.exports=l}])})},{}],5:[function(e,t,n){!function(){"use strict";function e(){}function n(t,n){var o,r,i,s,a=O;for(s=arguments.length;s-- >2;)A.push(arguments[s]);for(n&&null!=n.children&&(A.length||A.push(n.children),delete n.children);A.length;)if((r=A.pop())&&void 0!==r.pop)for(s=r.length;s--;)A.push(r[s]);else"boolean"==typeof r&&(r=null),(i="function"!=typeof t)&&(null==r?r="":"number"==typeof r?r=String(r):"string"!=typeof r&&(i=!1)),i&&o?a[a.length-1]+=r:a===O?a=[r]:a.push(r),o=i;var l=new e;return l.nodeName=t,l.children=a,l.attributes=null==n?void 0:n,l.key=null==n?void 0:n.key,void 0!==N.vnode&&N.vnode(l),l}function o(e,t){for(var n in t)e[n]=t[n];return e}function r(e){!e.__d&&(e.__d=!0)&&1==j.push(e)&&(N.debounceRendering||E)(i)}function i(){var e,t=j;for(j=[];e=t.pop();)e.__d&&L(e)}function s(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&a(e,t.nodeName):n||e._componentConstructor===t.nodeName}function a(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function l(e){var t=o({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===t[r]&&(t[r]=n[r]);return t}function c(e,t){var n=t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);return n.__n=e,n}function u(e){var t=e.parentNode;t&&t.removeChild(e)}function h(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===T.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,p,s):e.removeEventListener(t,p,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e)d(e,t,null==o?"":o),null!=o&&!1!==o||e.removeAttribute(t);else{var a=r&&t!==(t=t.replace(/^xlink\:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function d(e,t,n){try{e[t]=n}catch(e){}}function p(e){return this.__l[e.type](N.event&&N.event(e)||e)}function f(){for(var e;e=P.pop();)N.afterMount&&N.afterMount(e),e.componentDidMount&&e.componentDidMount()}function v(e,t,n,o,r,i){R++||(U=null!=r&&void 0!==r.ownerSVGElement,D=null!=e&&!("__preactattr_"in e));var s=m(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--R||(D=!1,i||f()),s}function m(e,t,n,o,r){var i=e,s=U;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),y(e,!0))),i.__preactattr_=!0,i;var l=t.nodeName;if("function"==typeof l)return C(e,t,n,o);if(U="svg"===l||"foreignObject"!==l&&U,l=String(l),(!e||!a(e,l))&&(i=c(l,U),e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),y(e,!0)}var u=i.firstChild,h=i.__preactattr_,d=t.children;if(null==h){h=i.__preactattr_={};for(var p=i.attributes,f=p.length;f--;)h[p[f].name]=p[f].value}return!D&&d&&1===d.length&&"string"==typeof d[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=d[0]&&(u.nodeValue=d[0]):(d&&d.length||null!=u)&&g(i,d,n,o,D||null!=h.dangerouslySetInnerHTML),k(i,t.attributes,h),U=s,i}function g(e,t,n,o,r){var i,a,l,c,h,d=e.childNodes,p=[],f={},v=0,g=0,_=d.length,k=0,b=t?t.length:0;if(0!==_)for(L=0;L<_;L++){var x=d[L],S=x.__preactattr_;null!=(w=b&&S?x._component?x._component.__k:S.key:null)?(v++,f[w]=x):(S||(void 0!==x.splitText?!r||x.nodeValue.trim():r))&&(p[k++]=x)}if(0!==b)for(L=0;L<b;L++){h=null;var w=(c=t[L]).key;if(null!=w)v&&void 0!==f[w]&&(h=f[w],f[w]=void 0,v--);else if(!h&&g<k)for(i=g;i<k;i++)if(void 0!==p[i]&&s(a=p[i],c,r)){h=a,p[i]=void 0,i===k-1&&k--,i===g&&g++;break}h=m(h,c,n,o),l=d[L],h&&h!==e&&h!==l&&(null==l?e.appendChild(h):h===l.nextSibling?u(l):e.insertBefore(h,l))}if(v)for(var L in f)void 0!==f[L]&&y(f[L],!1);for(;g<=k;)void 0!==(h=p[k--])&&y(h,!1)}function y(e,t){var n=e._component;n?M(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||u(e),_(e))}function _(e){for(e=e.lastChild;e;){var t=e.previousSibling;y(e,!0),e=t}}function k(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||h(e,o,n[o],n[o]=void 0,U);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||h(e,o,n[o],n[o]=t[o],U)}function b(e){var t=e.constructor.name;(V[t]||(V[t]=[])).push(e)}function x(e,t,n){var o,r=V[e.name];if(e.prototype&&e.prototype.render?(o=new e(t,n),I.call(o,t,n)):((o=new I(t,n)).constructor=e,o.render=S),r)for(var i=r.length;i--;)if(r[i].constructor===e){o.__b=r[i].__b,r.splice(i,1);break}return o}function S(e,t,n){return this.constructor(e,n)}function w(e,t,n,o,i){e.__x||(e.__x=!0,(e.__r=t.ref)&&delete t.ref,(e.__k=t.key)&&delete t.key,!e.base||i?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===N.syncComponentUpdates&&e.base?r(e):L(e,1,i)),e.__r&&e.__r(e))}function L(e,t,n,r){if(!e.__x){var i,s,a,c=e.props,u=e.state,h=e.context,d=e.__p||c,p=e.__s||u,m=e.__c||h,g=e.base,_=e.__b,k=g||_,b=e._component,S=!1;if(g&&(e.props=d,e.state=p,e.context=m,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(c,u,h)?S=!0:e.componentWillUpdate&&e.componentWillUpdate(c,u,h),e.props=c,e.state=u,e.context=h),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!S){i=e.render(c,u,h),e.getChildContext&&(h=o(o({},h),e.getChildContext()));var C,I,A=i&&i.nodeName;if("function"==typeof A){var O=l(i);(s=b)&&s.constructor===A&&O.key==s.__k?w(s,O,1,h,!1):(C=s,e._component=s=x(A,O,h),s.__b=s.__b||_,s.__u=e,w(s,O,0,h,!1),L(s,1,n,!0)),I=s.base}else a=k,(C=b)&&(a=e._component=null),(k||1===t)&&(a&&(a._component=null),I=v(a,i,h,n||!g,k&&k.parentNode,!0));if(k&&I!==k&&s!==b){var E=k.parentNode;E&&I!==E&&(E.replaceChild(I,k),C||(k._component=null,y(k,!1)))}if(C&&M(C),e.base=I,I&&!r){for(var T=e,j=e;j=j.__u;)(T=j).base=I;I._component=T,I._componentConstructor=T.constructor}}if(!g||n?P.unshift(e):S||(e.componentDidUpdate&&e.componentDidUpdate(d,p,m),N.afterUpdate&&N.afterUpdate(e)),null!=e.__h)for(;e.__h.length;)e.__h.pop().call(e);R||r||f()}}function C(e,t,n,o){for(var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,c=a,u=l(t);r&&!c&&(r=r.__u);)c=r.constructor===t.nodeName;return r&&c&&(!o||r._component)?(w(r,u,3,n,o),e=r.base):(i&&!a&&(M(i),e=s=null),r=x(t.nodeName,u,n),e&&!r.__b&&(r.__b=e,s=null),w(r,u,1,n,o),e=r.base,s&&e!==s&&(s._component=null,y(s,!1))),e}function M(e){N.beforeUnmount&&N.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?M(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),e.__b=t,u(t),b(e),_(t)),e.__r&&e.__r(null)}function I(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{}}var N={},A=[],O=[],E="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,T=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,j=[],P=[],R=0,U=!1,D=!1,V={};o(I.prototype,{setState:function(e,t){var n=this.state;this.__s||(this.__s=o({},n)),o(n,"function"==typeof e?e(n,this.props):e),t&&(this.__h=this.__h||[]).push(t),r(this)},forceUpdate:function(e){e&&(this.__h=this.__h||[]).push(e),L(this,2)},render:function(){}});var F={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,o(o({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)},Component:I,render:function(e,t,n){return v(n,e,{},!1,t,!1)},rerender:i,options:N};void 0!==t?t.exports=F:self.preact=F}()},{}]},{},[2]);
+!function e(t,n,o){function r(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return r(n||e)},u,u.exports,e,t,n,o)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<o.length;s++)r(o[s]);return r}({1:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.setCookie=function(e,t){document.cookie=e+"="+encodeURIComponent(t)+";path=/;"},n.clearCookie=function(e){document.cookie=e+"=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;"},n.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),o=0;o<n.length;o++){for(var r=n[o];" "==r.charAt(0);)r=r.substring(1,r.length);if(0==r.indexOf(t))return decodeURIComponent(r.substring(t.length,r.length))}return null}},{}],2:[function(e,t,n){"use strict";function o(e){var t=d[e];if(void 0==t)throw new Error("could not find <details> element with id '"+e+"'");return t}function r(e){for(var t=e.target,n=t.id,r=o(n),i=r.element.open,s=0,l=r.toggles;s<l.length;s++){var c=l[s];c.classList.contains("details-toggle-control")&&(c.classList.add(i?"collapser":"expander"),c.classList.remove(i?"expander":"collapser"))}t.open==r.openByDefault?delete p[n]:p[n]=!0,a()}function i(){for(var e=0,t=Array.prototype.slice.call(document.getElementsByTagName("details"));e<t.length;e++){var n=t[e];"string"==typeof n.id&&n.id.length>0&&(d[n.id]={element:n,openByDefault:!!n.open,toggles:[]},n.addEventListener("toggle",r))}}function s(e){var t=o(e).element;t.open=!t.open}function a(){var e=Object.keys(p);document.cookie="toggled="+encodeURIComponent(e.join("+"))}function l(){var e=h.getCookie("toggled");if(e)for(var t=0,n=e.split("+");t<n.length;t++){var o=n[t],r=d[o];p[o]=!0,r&&(r.element.open=!r.element.open)}}function c(e){e.preventDefault();var t=e.currentTarget.getAttribute("data-details-id");if(!t)throw new Error("element with class 'details-toggle' has no 'data-details-id' attribute!");s(t)}function u(){Array.prototype.slice.call(document.getElementsByClassName("details-toggle")).forEach(function(e){var t=e.getAttribute("data-details-id");if(!t)throw new Error("element with class 'details-toggle' has no 'data-details-id' attribute!");var n=o(t);n.toggles.push(e),e.addEventListener("click",c),e.classList.contains("details-toggle-control")&&e.classList.add(n.element.open?"collapser":"expander")})}Object.defineProperty(n,"__esModule",{value:!0});var h=e("./cookies"),d={},p={};n.init=function(){i(),l(),u()}},{"./cookies":1}],3:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=e("./style-menu"),r=e("./details-helper"),i=e("./quick-jump");!function(e){"interactive"===document.readyState?e():document.addEventListener("readystatechange",function(){"interactive"===document.readyState&&e()})}(function(){document.body.classList.add("js-enabled"),o.init(),r.init(),i.init()})},{"./details-helper":2,"./quick-jump":4,"./style-menu":5}],4:[function(e,t,n){"use strict";function o(e,t,n){var o=new XMLHttpRequest;o.onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){if(t)try{t(JSON.parse(o.responseText))}catch(e){n(o)}}else n&&n(o)},o.open("GET",e,!0),o.send()}function r(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),d.render(p(v,{onClick:e,title:"Quick Jump"}),t,n)}function i(e,t){return t.length<=e?t:t.slice(0,e)}function s(){return p("table",{class:"keyboard-shortcuts"},p("tr",null,p("th",null,"Key"),p("th",null,"Shortcut")),p("tr",null,p("td",null,p("span",{class:"key"},"s")),p("td",null,"Open this search box")),p("tr",null,p("td",null,p("span",{class:"key"},"esc")),p("td",null,"Close this search box")),p("tr",null,p("td",null,p("span",{class:"key"},"↓"),",",p("span",{class:"key"},"ctrl")," + ",p("span",{class:"key"},"j")),p("td",null,"Move down in search results")),p("tr",null,p("td",null,p("span",{class:"key"},"↑"),",",p("span",{class:"key"},"ctrl")," + ",p("span",{class:"key"},"k")),p("td",null,"Move up in search results")),p("tr",null,p("td",null,p("span",{class:"key"},"↵")),p("td",null,"Go to active search result")))}function a(){return p("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function l(e){var t=[p("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",p("code",null,"[]"),"."),p("p",null,p("code",null,"Nothing")," matches your query for '",e.searchString,"'."),p("p",null,p("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function c(e,t){d.render(p(g,{baseUrl:e||".",showHideTrigger:t||r}),document.body)}var u=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();Object.defineProperty(n,"__esModule",{value:!0});var h=e("fuse.js"),d=e("preact"),p=d.h,f=d.Component,v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.render=function(e){return p("li",null,p("a",{href:"#",onClick:function(t){t.preventDefault(),e.onClick()}},e.title))},t}(f),g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.linkIndex=0,t.focusPlease=!1,t.navigatedByKeyboard=!1,t}return u(t,e),t.prototype.componentWillMount=function(){var e=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),o(this.props.baseUrl+"/doc-index.json",function(t){e.setState({fuse:new h(t,{threshold:.25,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:["name","module"]}),moduleResults:[]})},function(t){console&&console.error("could not load 'doc-index.json' for searching",t),e.setState({failedLoading:!0})}),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(t){e.state.isVisible&&("Escape"===t.key?e.hide():"ArrowUp"===t.key||"k"===t.key&&t.ctrlKey?(t.preventDefault(),e.navigateLinks(-1)):"ArrowDown"===t.key||"j"===t.key&&t.ctrlKey?(t.preventDefault(),e.navigateLinks(1)):"Enter"===t.key&&e.state.activeLinkIndex>=0&&e.followActiveLink()),"s"===t.key&&"input"!==t.target.tagName.toLowerCase()&&(t.preventDefault(),e.show())})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},t.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},t.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t={};this.state.fuse.search(e).forEach(function(e){var n=e.item.module;(t[n]||(t[n]=[])).push(e)});var n=[];for(var o in t)!function(e){var o=t[e],r=0;o.forEach(function(e){r+=1/e.score}),n.push({module:e,totalScore:1/r,items:o})}(o);n.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:n})},t.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){var n=this;if(t.failedLoading){var o="file:"==window.location.protocol;return p("div",{id:"search",class:t.isVisible?"":"hidden"},p("div",{id:"search-results"},p("p",{class:"error"},"Failed to load file 'doc-index.json' containing definitions in this package."),o?p("p",{class:"error"},"To use quick jump, load this page with HTTP (from a local static file web server) instead of using the ",p("code",null,"file://")," protocol. (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with ",p("code",null,"file://"),".)"):[]))}this.linkIndex=0;var r=function(e){e.stopPropagation()},c=i(10,t.moduleResults).map(function(e){return n.renderResultsInModule(e)});return p("div",{id:"search",class:t.isVisible?"":"hidden"},p("div",{id:"search-form",onMouseDown:r},p("input",{placeholder:"Search in package by name",ref:function(e){n.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),p("div",{id:"search-results",ref:function(e){n.searchResults=e},onMouseDown:r,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var o=t.getAttribute("data-link-index");if("string"==typeof o){var r=parseInt(o,10);n.setState({activeLinkIndex:r});break}t=t.parentNode}}},""===t.searchString?[p(a,null),p(s,null)]:0==c.length?p(l,{searchString:t.searchString}):p("ul",null,c)))},t.prototype.renderResultsInModule=function(e){var t=this,n=e.items,o=e.module,r=this.state.expanded[o]||n.length<=10,s=r?n:i(8,n),a=function(e){return p("li",{class:"search-result"},t.navigationLink(t.props.baseUrl+"/"+e.link,{},p(m,{html:e.display_html})))};return p("li",{class:"search-module"},p("h4",null,o),p("ul",null,s.map(function(e){return a(e.item)}),r?[]:p("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},t.state.expanded);e[o]=!0,t.setState({expanded:e})},{},"show "+(n.length-s.length)+" more results from this module"))))},t.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t),s=function(){window.location.href=e,n.hide()};return this.menuLink.apply(this,[i,s].concat(o))},t.prototype.actionLink=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(t){t.preventDefault(),e()}},t);return this.menuLink.apply(this,[r,e].concat(n))},t.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,p.apply(void 0,["a",s].concat(o))},t}(f),m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return p("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(f);n.init=c,window.quickNav={init:c}},{"fuse.js":6,preact:7}],5:[function(e,t,n){"use strict";function o(e){return(" "+e+" ").replace(g," ")}function r(e){return e.replace(m,"")}function i(e,t){return o(e.className||"").indexOf(" "+t+" ")>=0}function s(e,t){var n=o(e.className||"");n.indexOf(" "+t+" ")<0&&(e.className=r(n+" "+t))}function a(e,t){var n=o(e.className||"");n=n.replace(" "+t+" "," "),e.className=r(n)}function l(e,t,n,o){return null==o&&(o=!i(e,t)),o?(a(e,n),s(e,t)):(a(e,t),s(e,n)),o}function c(e){var t=document.getElementById("page-menu");if(t&&t.firstChild){var n=t.firstChild.cloneNode(!1);n.innerHTML=e,t.appendChild(n)}}function u(){return Array.prototype.slice.call(document.getElementsByTagName("link")).filter(function(e){return-1!=e.rel.indexOf("style")&&e.title})}function h(){var e=u(),t="";e.forEach(function(e){t+="<li><a href='#' onclick=\"setActiveStyleSheet('"+e.title+"'); return false;\">"+e.title+"</a></li>"}),e.length>1&&c("<div id='style-menu-holder'><a href='#' onclick='styleMenu(); return false;'>Style &#9662;</a><ul id='style-menu' class='hide'>"+t+"</ul></div>")}function d(e){for(var t=u(),n=null,o=0;o<t.length;o++){var r=t[o];r.disabled=!0,r.title==e&&(n=r)}n?(n.disabled=!1,v.setCookie("haddock-style",e)):(t[0].disabled=!1,v.clearCookie("haddock-style")),f(!1)}function p(){var e=v.getCookie("haddock-style");e&&d(e)}function f(e){var t=document.getElementById("style-menu");t&&y(t,e)}Object.defineProperty(n,"__esModule",{value:!0});var v=e("./cookies"),g=/\s\s+/g,m=/^\s+|\s+$/g,y=function(e,t){return function(n,o){return l(n,e,t,o)}}("show","hide");n.init=function(){h(),p()}},{"./cookies":1}],6:[function(e,t,n){!function(e,o){"object"==typeof n&&"object"==typeof t?t.exports=o():"function"==typeof define&&define.amd?define("Fuse",[],o):"object"==typeof n?n.Fuse=o():e.Fuse=o()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=n(5),s=n(7),a=n(4),l=function(){function e(t,n){var r=n.location,i=void 0===r?0:r,s=n.distance,l=void 0===s?100:s,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,d=void 0===h?32:h,p=n.isCaseSensitive,f=void 0!==p&&p,v=n.tokenSeparator,g=void 0===v?/ +/g:v,m=n.findAllMatches,y=void 0!==m&&m,_=n.minMatchCharLength,k=void 0===_?1:_;o(this,e),this.options={location:i,distance:l,threshold:u,maxPatternLength:d,isCaseSensitive:f,tokenSeparator:g,findAllMatches:y,minMatchCharLength:k},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=d&&(this.patternAlphabet=a(this.pattern))}return r(e,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return i(e,this.pattern,o);var r=this.options,a=r.location,l=r.distance,c=r.threshold,u=r.findAllMatches,h=r.minMatchCharLength;return s(e,this.pattern,this.patternAlphabet,{location:a,distance:l,threshold:c,findAllMatches:u,minMatchCharLength:h})}}]),e}();e.exports=l},function(e,t,n){"use strict";var o=n(0),r=function e(t,n,r){if(n){var i=n.indexOf("."),s=n,a=null;-1!==i&&(s=n.slice(0,i),a=n.slice(i+1));var l=t[s];if(null!==l&&void 0!==l)if(a||"string"!=typeof l&&"number"!=typeof l)if(o(l))for(var c=0,u=l.length;c<u;c+=1)e(l[c],a,r);else a&&e(l,a,r);else r.push(l.toString())}else r.push(t);return r};e.exports=function(e,t){return r(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||((r=i-1)-o+1>=t&&n.push([o,r]),o=-1)}return e[i-1]&&i-o>=t&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var o=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,r=new RegExp(t.replace(o,"\\$&").replace(n,"|")),i=e.match(r),s=!!i,a=[];if(s)for(var l=0,c=i.length;l<c;l+=1){var u=i[l];a.push([e.indexOf(u),u.length-1])}return{score:s?.5:1,isMatch:s,matchedIndices:a}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,h=Math.abs(a-i);return c?u+h/c:h?1:u}},function(e,t,n){"use strict";var o=n(6),r=n(3);e.exports=function(e,t,n,i){for(var s=i.location,a=void 0===s?0:s,l=i.distance,c=void 0===l?100:l,u=i.threshold,h=void 0===u?.6:u,d=i.findAllMatches,p=void 0!==d&&d,f=i.minMatchCharLength,v=void 0===f?1:f,g=a,m=e.length,y=h,_=e.indexOf(t,g),k=t.length,b=[],x=0;x<m;x+=1)b[x]=0;if(-1!==_){var w=o(t,{errors:0,currentLocation:_,expectedLocation:g,distance:c});if(y=Math.min(w,y),-1!==(_=e.lastIndexOf(t,g+k))){var S=o(t,{errors:0,currentLocation:_,expectedLocation:g,distance:c});y=Math.min(S,y)}}_=-1;for(var L=[],C=1,M=k+m,N=1<<k-1,I=0;I<k;I+=1){for(var A=0,O=M;A<O;)o(t,{errors:I,currentLocation:g+O,expectedLocation:g,distance:c})<=y?A=O:M=O,O=Math.floor((M-A)/2+A);M=O;var E=Math.max(1,g-O+1),T=p?m:Math.min(g+O,m)+k,j=Array(T+2);j[T+1]=(1<<I)-1;for(var P=T;P>=E;P-=1){var R=P-1,U=n[e.charAt(R)];if(U&&(b[R]=1),j[P]=(j[P+1]<<1|1)&U,0!==I&&(j[P]|=(L[P+1]|L[P])<<1|1|L[P+1]),j[P]&N&&(C=o(t,{errors:I,currentLocation:R,expectedLocation:g,distance:c}))<=y){if(y=C,(_=R)<=g)break;E=Math.max(1,2*g-_)}}if(o(t,{errors:I+1,currentLocation:g,expectedLocation:g,distance:c})>y)break;L=j}return{isMatch:_>=0,score:0===C?.001:C,matchedIndices:r(b,v)}}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=n(1),s=n(2),a=n(0),l=function(){function e(t,n){var r=n.location,i=void 0===r?0:r,a=n.distance,l=void 0===a?100:a,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,d=void 0===h?32:h,p=n.caseSensitive,f=void 0!==p&&p,v=n.tokenSeparator,g=void 0===v?/ +/g:v,m=n.findAllMatches,y=void 0!==m&&m,_=n.minMatchCharLength,k=void 0===_?1:_,b=n.id,x=void 0===b?null:b,w=n.keys,S=void 0===w?[]:w,L=n.shouldSort,C=void 0===L||L,M=n.getFn,N=void 0===M?s:M,I=n.sortFn,A=void 0===I?function(e,t){return e.score-t.score}:I,O=n.tokenize,E=void 0!==O&&O,T=n.matchAllTokens,j=void 0!==T&&T,P=n.includeMatches,R=void 0!==P&&P,U=n.includeScore,D=void 0!==U&&U,V=n.verbose,F=void 0!==V&&V;o(this,e),this.options={location:i,distance:l,threshold:u,maxPatternLength:d,isCaseSensitive:f,tokenSeparator:g,findAllMatches:y,minMatchCharLength:k,id:x,keys:S,includeMatches:R,includeScore:D,shouldSort:C,getFn:N,sortFn:A,verbose:F,tokenize:E,matchAllTokens:j},this.setCollection(t)}return r(e,[{key:"setCollection",value:function(e){return this.list=e,e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],h=0,d=this.options.keys.length;h<d;h+=1){var p=this.options.keys[h];if("string"!=typeof p){if(a[p.name]={weight:1-p.weight||1},p.weight<=0||p.weight>1)throw new Error("Key weight has to be > 0 and <= 1");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(u,p),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,l=e.index,c=t.tokenSearchers,u=void 0===c?[]:c,h=t.fullSearcher,d=void 0===h?[]:h,p=t.resultMap,f=void 0===p?{}:p,v=t.results,g=void 0===v?[]:v;if(void 0!==i&&null!==i){var m=!1,y=-1,_=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var k=d.search(i);if(this._log('Full text: "'+i+'", score: '+k.score),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),x=[],w=0;w<u.length;w+=1){var S=u[w];this._log('\nPattern: "'+S.pattern+'"');for(var L=!1,C=0;C<b.length;C+=1){var M=b[C],N=S.search(M),I={};N.isMatch?(I[M]=N.score,m=!0,L=!0,x.push(N.score)):(I[M]=1,this.options.matchAllTokens||x.push(1)),this._log('Token: "'+M+'", score: '+I[M])}L&&(_+=1)}y=x[0];for(var A=x.length,O=1;O<A;O+=1)y+=x[O];y/=A,this._log("Token score average:",y)}var E=k.score;y>-1&&(E=(E+y)/2),this._log("Score average:",E);var T=!this.options.tokenize||!this.options.matchAllTokens||_>=u.length;if(this._log("\nCheck Matches: "+T),(m||k.isMatch)&&T){var j=f[l];j?j.output.push({key:n,arrayIndex:r,value:i,score:E,matchedIndices:k.matchedIndices}):(f[l]={item:s,output:[{key:n,arrayIndex:r,value:i,score:E,matchedIndices:k.matchedIndices}]},g.push(f[l]))}}else if(a(i))for(var P=0,R=i.length;P<R;P+=1)this._analyze({key:n,arrayIndex:P,value:i[P],record:s,index:l},{resultMap:f,results:g,tokenSearchers:u,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=0,a=1,l=0;l<i;l+=1){var c=e?e[r[l].key].weight:1,u=(1===c?r[l].score:r[l].score||.001)*c;1!==c?a=Math.min(a,u):(r[l].nScore=u,s+=u)}t[n].score=1===a?s/i:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&i.arrayIndex>-1&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){if(this.options.verbose){var e;(e=console).log.apply(e,arguments)}}}]),e}();e.exports=l}])})},{}],7:[function(e,t,n){!function(){"use strict";function e(){}function n(t,n){var o,r,i,s,a=O;for(s=arguments.length;s-- >2;)A.push(arguments[s]);for(n&&null!=n.children&&(A.length||A.push(n.children),delete n.children);A.length;)if((r=A.pop())&&void 0!==r.pop)for(s=r.length;s--;)A.push(r[s]);else"boolean"==typeof r&&(r=null),(i="function"!=typeof t)&&(null==r?r="":"number"==typeof r?r=String(r):"string"!=typeof r&&(i=!1)),i&&o?a[a.length-1]+=r:a===O?a=[r]:a.push(r),o=i;var l=new e;return l.nodeName=t,l.children=a,l.attributes=null==n?void 0:n,l.key=null==n?void 0:n.key,void 0!==I.vnode&&I.vnode(l),l}function o(e,t){for(var n in t)e[n]=t[n];return e}function r(e){!e.__d&&(e.__d=!0)&&1==j.push(e)&&(I.debounceRendering||E)(i)}function i(){var e,t=j;for(j=[];e=t.pop();)e.__d&&L(e)}function s(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&a(e,t.nodeName):n||e._componentConstructor===t.nodeName}function a(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function l(e){var t=o({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===t[r]&&(t[r]=n[r]);return t}function c(e,t){var n=t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);return n.__n=e,n}function u(e){var t=e.parentNode;t&&t.removeChild(e)}function h(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===T.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,p,s):e.removeEventListener(t,p,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e)d(e,t,null==o?"":o),null!=o&&!1!==o||e.removeAttribute(t);else{var a=r&&t!==(t=t.replace(/^xlink\:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function d(e,t,n){try{e[t]=n}catch(e){}}function p(e){return this.__l[e.type](I.event&&I.event(e)||e)}function f(){for(var e;e=P.pop();)I.afterMount&&I.afterMount(e),e.componentDidMount&&e.componentDidMount()}function v(e,t,n,o,r,i){R++||(U=null!=r&&void 0!==r.ownerSVGElement,D=null!=e&&!("__preactattr_"in e));var s=g(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--R||(D=!1,i||f()),s}function g(e,t,n,o,r){var i=e,s=U;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),y(e,!0))),i.__preactattr_=!0,i;var l=t.nodeName;if("function"==typeof l)return C(e,t,n,o);if(U="svg"===l||"foreignObject"!==l&&U,l=String(l),(!e||!a(e,l))&&(i=c(l,U),e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),y(e,!0)}var u=i.firstChild,h=i.__preactattr_,d=t.children;if(null==h){h=i.__preactattr_={};for(var p=i.attributes,f=p.length;f--;)h[p[f].name]=p[f].value}return!D&&d&&1===d.length&&"string"==typeof d[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=d[0]&&(u.nodeValue=d[0]):(d&&d.length||null!=u)&&m(i,d,n,o,D||null!=h.dangerouslySetInnerHTML),k(i,t.attributes,h),U=s,i}function m(e,t,n,o,r){var i,a,l,c,h,d=e.childNodes,p=[],f={},v=0,m=0,_=d.length,k=0,b=t?t.length:0;if(0!==_)for(L=0;L<_;L++){var x=d[L],w=x.__preactattr_;null!=(S=b&&w?x._component?x._component.__k:w.key:null)?(v++,f[S]=x):(w||(void 0!==x.splitText?!r||x.nodeValue.trim():r))&&(p[k++]=x)}if(0!==b)for(L=0;L<b;L++){h=null;var S=(c=t[L]).key;if(null!=S)v&&void 0!==f[S]&&(h=f[S],f[S]=void 0,v--);else if(!h&&m<k)for(i=m;i<k;i++)if(void 0!==p[i]&&s(a=p[i],c,r)){h=a,p[i]=void 0,i===k-1&&k--,i===m&&m++;break}h=g(h,c,n,o),l=d[L],h&&h!==e&&h!==l&&(null==l?e.appendChild(h):h===l.nextSibling?u(l):e.insertBefore(h,l))}if(v)for(var L in f)void 0!==f[L]&&y(f[L],!1);for(;m<=k;)void 0!==(h=p[k--])&&y(h,!1)}function y(e,t){var n=e._component;n?M(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||u(e),_(e))}function _(e){for(e=e.lastChild;e;){var t=e.previousSibling;y(e,!0),e=t}}function k(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||h(e,o,n[o],n[o]=void 0,U);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||h(e,o,n[o],n[o]=t[o],U)}function b(e){var t=e.constructor.name;(V[t]||(V[t]=[])).push(e)}function x(e,t,n){var o,r=V[e.name];if(e.prototype&&e.prototype.render?(o=new e(t,n),N.call(o,t,n)):((o=new N(t,n)).constructor=e,o.render=w),r)for(var i=r.length;i--;)if(r[i].constructor===e){o.__b=r[i].__b,r.splice(i,1);break}return o}function w(e,t,n){return this.constructor(e,n)}function S(e,t,n,o,i){e.__x||(e.__x=!0,(e.__r=t.ref)&&delete t.ref,(e.__k=t.key)&&delete t.key,!e.base||i?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===I.syncComponentUpdates&&e.base?r(e):L(e,1,i)),e.__r&&e.__r(e))}function L(e,t,n,r){if(!e.__x){var i,s,a,c=e.props,u=e.state,h=e.context,d=e.__p||c,p=e.__s||u,g=e.__c||h,m=e.base,_=e.__b,k=m||_,b=e._component,w=!1;if(m&&(e.props=d,e.state=p,e.context=g,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(c,u,h)?w=!0:e.componentWillUpdate&&e.componentWillUpdate(c,u,h),e.props=c,e.state=u,e.context=h),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!w){i=e.render(c,u,h),e.getChildContext&&(h=o(o({},h),e.getChildContext()));var C,N,A=i&&i.nodeName;if("function"==typeof A){var O=l(i);(s=b)&&s.constructor===A&&O.key==s.__k?S(s,O,1,h,!1):(C=s,e._component=s=x(A,O,h),s.__b=s.__b||_,s.__u=e,S(s,O,0,h,!1),L(s,1,n,!0)),N=s.base}else a=k,(C=b)&&(a=e._component=null),(k||1===t)&&(a&&(a._component=null),N=v(a,i,h,n||!m,k&&k.parentNode,!0));if(k&&N!==k&&s!==b){var E=k.parentNode;E&&N!==E&&(E.replaceChild(N,k),C||(k._component=null,y(k,!1)))}if(C&&M(C),e.base=N,N&&!r){for(var T=e,j=e;j=j.__u;)(T=j).base=N;N._component=T,N._componentConstructor=T.constructor}}if(!m||n?P.unshift(e):w||(e.componentDidUpdate&&e.componentDidUpdate(d,p,g),I.afterUpdate&&I.afterUpdate(e)),null!=e.__h)for(;e.__h.length;)e.__h.pop().call(e);R||r||f()}}function C(e,t,n,o){for(var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,c=a,u=l(t);r&&!c&&(r=r.__u);)c=r.constructor===t.nodeName;return r&&c&&(!o||r._component)?(S(r,u,3,n,o),e=r.base):(i&&!a&&(M(i),e=s=null),r=x(t.nodeName,u,n),e&&!r.__b&&(r.__b=e,s=null),S(r,u,1,n,o),e=r.base,s&&e!==s&&(s._component=null,y(s,!1))),e}function M(e){I.beforeUnmount&&I.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?M(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),e.__b=t,u(t),b(e),_(t)),e.__r&&e.__r(null)}function N(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{}}var I={},A=[],O=[],E="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,T=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,j=[],P=[],R=0,U=!1,D=!1,V={};o(N.prototype,{setState:function(e,t){var n=this.state;this.__s||(this.__s=o({},n)),o(n,"function"==typeof e?e(n,this.props):e),t&&(this.__h=this.__h||[]).push(t),r(this)},forceUpdate:function(e){e&&(this.__h=this.__h||[]).push(e),L(this,2)},render:function(){}});var F={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,o(o({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)},Component:N,render:function(e,t,n){return v(n,e,{},!1,t,!1)},rerender:i,options:I};void 0!==t?t.exports=F:self.preact=F}()},{}]},{},[3]);
//# sourceMappingURL=haddock-bundle.min.js.map
diff --git a/haddock-api/resources/html/js-src/cookies.ts b/haddock-api/resources/html/js-src/cookies.ts
new file mode 100644
index 00000000..3b68d6d8
--- /dev/null
+++ b/haddock-api/resources/html/js-src/cookies.ts
@@ -0,0 +1,20 @@
+export function setCookie(name: string, value: string) {
+ document.cookie = name + "=" + encodeURIComponent(value) + ";path=/;";
+}
+
+export function clearCookie(name: string) {
+ document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
+}
+
+export function getCookie(name: string) {
+ const nameEQ = name + "=";
+ const ca = document.cookie.split(';');
+ for (let i = 0; i < ca.length; i++) {
+ let c = ca[i];
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
+ if (c.indexOf(nameEQ) == 0) {
+ return decodeURIComponent(c.substring(nameEQ.length,c.length));
+ }
+ }
+ return null;
+} \ No newline at end of file
diff --git a/haddock-api/resources/html/js-src/details-helper.ts b/haddock-api/resources/html/js-src/details-helper.ts
new file mode 100644
index 00000000..f13ac905
--- /dev/null
+++ b/haddock-api/resources/html/js-src/details-helper.ts
@@ -0,0 +1,106 @@
+import {getCookie} from "./cookies";
+
+interface HTMLDetailsElement extends HTMLElement {
+ open: boolean
+}
+
+interface DetailsInfo {
+ element: HTMLDetailsElement
+ openByDefault: boolean
+ toggles: HTMLElement[]
+}
+
+// Global state
+const detailsRegistry: { [id: string]: DetailsInfo } = {};
+const toggled: { [id: string]: true } = {}; /* stores which <details> are not in their default state */
+
+function lookupDetailsRegistry(id: string): DetailsInfo {
+ const info = detailsRegistry[id];
+ if (info == undefined) { throw new Error(`could not find <details> element with id '${id}'`); }
+ return info;
+}
+
+function onDetailsToggle(ev: Event) {
+ const element = ev.target as HTMLDetailsElement;
+ const id = element.id;
+ const info = lookupDetailsRegistry(id);
+ const isOpen = info.element.open;
+ for (const toggle of info.toggles) {
+ if (toggle.classList.contains('details-toggle-control')) {
+ toggle.classList.add(isOpen ? 'collapser' : 'expander');
+ toggle.classList.remove(isOpen ? 'expander' : 'collapser');
+ }
+ }
+ if (element.open == info.openByDefault) {
+ delete toggled[id];
+ } else {
+ toggled[id] = true;
+ }
+ rememberToggled();
+}
+
+function gatherDetailsElements() {
+ const els: HTMLDetailsElement[] = Array.prototype.slice.call(document.getElementsByTagName('details'));
+ for (const el of els) {
+ if (typeof el.id == "string" && el.id.length > 0) {
+ detailsRegistry[el.id] = {
+ element: el,
+ openByDefault: !!el.open,
+ toggles: [] // added later
+ };
+ el.addEventListener('toggle', onDetailsToggle);
+ }
+ }
+}
+
+function toggleDetails(id: string) {
+ const {element} = lookupDetailsRegistry(id);
+ element.open = !element.open;
+}
+
+function rememberToggled() {
+ const sections: string[] = Object.keys(toggled);
+ // cookie specific to this page; don't use setCookie which sets path=/
+ document.cookie = "toggled=" + encodeURIComponent(sections.join('+'));
+}
+
+function restoreToggled() {
+ const cookie = getCookie("toggled");
+ if (!cookie) { return; }
+ const ids = cookie.split('+');
+ for (const id of ids) {
+ const info = detailsRegistry[id];
+ toggled[id] = true;
+ if (info) {
+ info.element.open = !info.element.open;
+ }
+ }
+}
+
+function onToggleClick(ev: MouseEvent) {
+ ev.preventDefault();
+ const toggle = ev.currentTarget as HTMLElement;
+ const id = toggle.getAttribute('data-details-id');
+ if (!id) { throw new Error("element with class 'details-toggle' has no 'data-details-id' attribute!"); }
+ toggleDetails(id);
+}
+
+function initCollapseToggles() {
+ const toggles: HTMLElement[] = Array.prototype.slice.call(document.getElementsByClassName('details-toggle'));
+ toggles.forEach(toggle => {
+ const id = toggle.getAttribute('data-details-id');
+ if (!id) { throw new Error("element with class 'details-toggle' has no 'data-details-id' attribute!"); }
+ const info = lookupDetailsRegistry(id);
+ info.toggles.push(toggle);
+ toggle.addEventListener('click', onToggleClick);
+ if (toggle.classList.contains('details-toggle-control')) {
+ toggle.classList.add(info.element.open ? 'collapser' : 'expander');
+ }
+ });
+}
+
+export function init() {
+ gatherDetailsElements();
+ restoreToggled();
+ initCollapseToggles();
+} \ No newline at end of file
diff --git a/haddock-api/resources/html/js-src/init.ts b/haddock-api/resources/html/js-src/init.ts
index 0619dfc3..877874ae 100644
--- a/haddock-api/resources/html/js-src/init.ts
+++ b/haddock-api/resources/html/js-src/init.ts
@@ -1,4 +1,5 @@
-import * as util from "./haddock-util";
+import * as styleMenu from "./style-menu";
+import * as detailsHelper from "./details-helper";
import * as quickJump from "./quick-jump";
function onDomReady(callback: () => void) {
@@ -14,8 +15,8 @@ function onDomReady(callback: () => void) {
}
onDomReady(() => {
- util.addStyleMenu();
- util.resetStyle();
- util.restoreCollapsed();
+ document.body.classList.add('js-enabled');
+ styleMenu.init();
+ detailsHelper.init();
quickJump.init();
}); \ No newline at end of file
diff --git a/haddock-api/resources/html/js-src/quick-jump.tsx b/haddock-api/resources/html/js-src/quick-jump.tsx
index a2bcdb64..97ac14af 100644
--- a/haddock-api/resources/html/js-src/quick-jump.tsx
+++ b/haddock-api/resources/html/js-src/quick-jump.tsx
@@ -3,10 +3,6 @@ import preact = require("preact");
const { h, Component } = preact;
-declare interface ObjectConstructor {
- assign(target: any, ...sources: any[]): any;
-}
-
type DocItem = {
display_html: string
name: string
@@ -19,8 +15,13 @@ function loadJSON(path: string, success: (json: DocItem[]) => void, error: (xhr:
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
- if (success)
- success(JSON.parse(xhr.responseText));
+ if (success) {
+ try {
+ success(JSON.parse(xhr.responseText));
+ } catch (exc) {
+ error(xhr);
+ }
+ }
} else {
if (error) { error(xhr); }
}
@@ -102,7 +103,7 @@ class QuickJump extends Component<QuickJumpProps, QuickJumpState> {
loadJSON(this.props.baseUrl + "/doc-index.json", (data) => {
this.setState({
fuse: new Fuse(data, {
- threshold: 0.4,
+ threshold: 0.25,
caseSensitive: true,
includeScore: true,
tokenize: true,
@@ -218,7 +219,19 @@ class QuickJump extends Component<QuickJumpProps, QuickJumpState> {
}
render(props: any, state: QuickJumpState) {
- if (state.failedLoading) { return null; }
+ if (state.failedLoading) {
+ const usingFileProtocol = window.location.protocol == 'file:';
+ return <div id="search" class={state.isVisible ? '' : 'hidden'}>
+ <div id="search-results">
+ <p class="error">Failed to load file 'doc-index.json' containing definitions in this package.</p>
+ {usingFileProtocol ? <p class="error">
+ To use quick jump, load this page with HTTP (from a local static file web server) instead of using the <code>file://</code> protocol.
+ (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with <code>file://</code>.)
+ </p> : []
+ }
+ </div>
+ </div>;
+ }
this.linkIndex = 0;
diff --git a/haddock-api/resources/html/js-src/haddock-util.ts b/haddock-api/resources/html/js-src/style-menu.ts
index 257ceb6a..3911655b 100644
--- a/haddock-api/resources/html/js-src/haddock-util.ts
+++ b/haddock-api/resources/html/js-src/style-menu.ts
@@ -1,5 +1,7 @@
// Haddock JavaScript utilities
+import {getCookie, setCookie, clearCookie} from "./cookies";
+
const rspace = /\s\s+/g,
rtrim = /^\s+|\s+$/g;
@@ -37,7 +39,6 @@ function toggleClass(elem: Element, valueOn: string, valueOff: string, bool?: bo
return bool;
}
-
function makeClassToggle(valueOn: string, valueOff: string): (elem: Element, bool?: boolean) => boolean {
return function(elem, bool) {
return toggleClass(elem, valueOn, valueOff, bool);
@@ -45,69 +46,6 @@ function makeClassToggle(valueOn: string, valueOff: string): (elem: Element, boo
}
const toggleShow = makeClassToggle("show", "hide");
-const toggleCollapser = makeClassToggle("collapser", "expander");
-
-function toggleSection(id: string): boolean {
- const b = toggleShow(document.getElementById("section." + id) as Element);
- toggleCollapser(document.getElementById("control." + id) as Element, b);
- rememberCollapsed(id);
- return b;
-}
-
-// TODO: get rid of global variables
-if (typeof window !== 'undefined') {
- (window as any).toggleSection = toggleSection;
-}
-
-const collapsed: { [id: string]: boolean } = {};
-function rememberCollapsed(id: string) {
- if(collapsed[id])
- delete collapsed[id]
- else
- collapsed[id] = true;
-
- const sections: string[] = [];
- for(let i in collapsed) {
- if(collapsed.hasOwnProperty(i))
- sections.push(i);
- }
- // cookie specific to this page; don't use setCookie which sets path=/
- document.cookie = "collapsed=" + encodeURIComponent(sections.join('+'));
-}
-
-export function restoreCollapsed() {
- const cookie = getCookie("collapsed");
- if(!cookie)
- return;
-
- const ids = cookie.split('+');
- for(const i in ids)
- {
- if(document.getElementById("section." + ids[i]))
- toggleSection(ids[i]);
- }
-}
-
-function setCookie(name: string, value: string) {
- document.cookie = name + "=" + encodeURIComponent(value) + ";path=/;";
-}
-
-function clearCookie(name: string) {
- document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
-}
-
-function getCookie(name: string) {
- const nameEQ = name + "=";
- const ca = document.cookie.split(';');
- for (let i = 0; i < ca.length; i++) {
- let c = ca[i];
- while (c.charAt(0)==' ') c = c.substring(1,c.length);
- if (c.indexOf(nameEQ) == 0) {
- return decodeURIComponent(c.substring(nameEQ.length,c.length));
- }
- }
- return null;
-}
function addMenuItem(html: string) {
const menu = document.getElementById("page-menu");
@@ -123,7 +61,7 @@ function styles(): HTMLLinkElement[] {
return es.filter((a: HTMLLinkElement) => a.rel.indexOf("style") != -1 && a.title);
}
-export function addStyleMenu() {
+function addStyleMenu() {
const as = styles();
let btns = "";
as.forEach((a) => {
@@ -162,7 +100,7 @@ function setActiveStyleSheet(title: string) {
styleMenu(false);
}
-export function resetStyle() {
+function resetStyle() {
const s = getCookie("haddock-style");
if (s) setActiveStyleSheet(s);
}
@@ -170,4 +108,9 @@ export function resetStyle() {
function styleMenu(show?: boolean) {
const m = document.getElementById('style-menu');
if (m) toggleShow(m, show);
+}
+
+export function init() {
+ addStyleMenu();
+ resetStyle();
} \ No newline at end of file
diff --git a/haddock-api/resources/html/package.json b/haddock-api/resources/html/package.json
index 3f2922fa..165c4cb5 100644
--- a/haddock-api/resources/html/package.json
+++ b/haddock-api/resources/html/package.json
@@ -3,7 +3,8 @@
"version": "0.1.0",
"description": "A drop-down search on Haddock docs for navigating quickly to definitions of Haskell functions and types in the current package",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "build": "gulp"
},
"repository": {
"type": "git",
diff --git a/haddock-api/resources/html/quick-jump.css b/haddock-api/resources/html/quick-jump.css
index b69903c3..ede05042 100644
--- a/haddock-api/resources/html/quick-jump.css
+++ b/haddock-api/resources/html/quick-jump.css
@@ -33,17 +33,24 @@
outline: none;
}
+#search p.error {
+ color: rgb(107, 24, 24);
+ font-weight: bold;
+}
+
#search-results {
- top: 3em;
- max-height: calc(100% - 3em);
box-sizing: border-box;
- border-width: 0 0.05em 0.05em;
- border-style: solid;
- border-color: #b2d5fb;
+ border: 0.05em solid #b2d5fb;
background: #e8f3ff;
overflow-y: auto;
}
+#search-form input + #search-results {
+ border-top: none;
+ top: 3em;
+ max-height: calc(100% - 3em);
+}
+
/* @end */
/* @group search results */
diff --git a/haddock-api/resources/html/quick-jump.min.js b/haddock-api/resources/html/quick-jump.min.js
index c9f2b445..f22f8f28 100644
--- a/haddock-api/resources/html/quick-jump.min.js
+++ b/haddock-api/resources/html/quick-jump.min.js
@@ -1,2 +1,2 @@
-!function t(e,n,o){function r(s,a){if(!n[s]){if(!e[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};e[s][0].call(u.exports,function(t){var n=e[s][1][t];return r(n||t)},u,u.exports,t,e,n,o)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<o.length;s++)r(o[s]);return r}({1:[function(t,e,n){"use strict";function o(t,e,n){var o=new XMLHttpRequest;o.onreadystatechange=function(){o.readyState===XMLHttpRequest.DONE&&(200===o.status?e&&e(JSON.parse(o.responseText)):n&&n(o))},o.open("GET",t,!0),o.send()}function r(t){var e=document.querySelector("#page-menu"),n=document.createElement("li");e.insertBefore(n,e.firstChild),p.render(f(v,{onClick:t,title:"Quick Jump"}),e,n)}function i(t,e){return e.length<=t?e:e.slice(0,t)}function s(){return f("table",{class:"keyboard-shortcuts"},f("tr",null,f("th",null,"Key"),f("th",null,"Shortcut")),f("tr",null,f("td",null,f("span",{class:"key"},"s")),f("td",null,"Open this search box")),f("tr",null,f("td",null,f("span",{class:"key"},"esc")),f("td",null,"Close this search box")),f("tr",null,f("td",null,f("span",{class:"key"},"↓"),",",f("span",{class:"key"},"ctrl")," + ",f("span",{class:"key"},"j")),f("td",null,"Move down in search results")),f("tr",null,f("td",null,f("span",{class:"key"},"↑"),",",f("span",{class:"key"},"ctrl")," + ",f("span",{class:"key"},"k")),f("td",null,"Move up in search results")),f("tr",null,f("td",null,f("span",{class:"key"},"↵")),f("td",null,"Go to active search result")))}function a(){return f("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function l(t){var e=[f("p",null,"Your search for '",t.searchString,"' produced the following list of results: ",f("code",null,"[]"),"."),f("p",null,f("code",null,"Nothing")," matches your query for '",t.searchString,"'."),f("p",null,f("code",null,"Left \"no matches for '",t.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return e[(t.searchString||"a").charCodeAt(0)%e.length]}function c(t,e){p.render(f(_,{baseUrl:t||".",showHideTrigger:e||r}),document.body)}var u=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function o(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();Object.defineProperty(n,"__esModule",{value:!0});var h=t("fuse.js"),p=t("preact"),f=p.h,d=p.Component,v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return u(e,t),e.prototype.render=function(t){return f("li",null,f("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},e}(d),_=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.linkIndex=0,e.focusPlease=!1,e.navigatedByKeyboard=!1,e}return u(e,t),e.prototype.componentWillMount=function(){var t=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),o(this.props.baseUrl+"/doc-index.json",function(e){t.setState({fuse:new h(e,{threshold:.4,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:["name","module"]}),moduleResults:[]})},function(e){console&&console.error("could not load 'doc-index.json' for searching",e),t.setState({failedLoading:!0})}),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){t.state.isVisible&&("Escape"===e.key?t.hide():"ArrowUp"===e.key||"k"===e.key&&e.ctrlKey?(e.preventDefault(),t.navigateLinks(-1)):"ArrowDown"===e.key||"j"===e.key&&e.ctrlKey?(e.preventDefault(),t.navigateLinks(1)):"Enter"===e.key&&t.state.activeLinkIndex>=0&&t.followActiveLink()),"s"===e.key&&"input"!==e.target.tagName.toLowerCase()&&(e.preventDefault(),t.show())})},e.prototype.hide=function(){this.setState({isVisible:!1})},e.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},e.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},e.prototype.navigateLinks=function(t){var e=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+t));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:e})},e.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},e.prototype.updateResults=function(){var t=this.input&&this.input.value||"",e={};this.state.fuse.search(t).forEach(function(t){var n=t.item.module;(e[n]||(e[n]=[])).push(t)});var n=[];for(var o in e)!function(t){var o=e[t],r=0;o.forEach(function(t){r+=1/t.score}),n.push({module:t,totalScore:1/r,items:o})}(o);n.sort(function(t,e){return t.totalScore-e.totalScore}),this.setState({searchString:t,isVisible:!0,moduleResults:n})},e.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var t=this.activeLink.getClientRects()[0],e=this.searchResults.getClientRects()[0].top;t.bottom>window.innerHeight?this.searchResults.scrollTop+=t.bottom-window.innerHeight+80:t.top<e&&(this.searchResults.scrollTop-=e-t.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},e.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},e.prototype.render=function(t,e){var n=this;if(e.failedLoading)return null;this.linkIndex=0;var o=function(t){t.stopPropagation()},r=i(10,e.moduleResults).map(function(t){return n.renderResultsInModule(t)});return f("div",{id:"search",class:e.isVisible?"":"hidden"},f("div",{id:"search-form",onMouseDown:o},f("input",{placeholder:"Search in package by name",ref:function(t){n.input=t},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),f("div",{id:"search-results",ref:function(t){n.searchResults=t},onMouseDown:o,onMouseOver:function(t){for(var e=t.target;e&&"function"==typeof e.getAttribute;){var o=e.getAttribute("data-link-index");if("string"==typeof o){var r=parseInt(o,10);n.setState({activeLinkIndex:r});break}e=e.parentNode}}},""===e.searchString?[f(a,null),f(s,null)]:0==r.length?f(l,{searchString:e.searchString}):f("ul",null,r)))},e.prototype.renderResultsInModule=function(t){var e=this,n=t.items,o=t.module,r=this.state.expanded[o]||n.length<=10,s=r?n:i(8,n),a=function(t){return f("li",{class:"search-result"},e.navigationLink(e.props.baseUrl+"/"+t.link,{},f(g,{html:t.display_html})))};return f("li",{class:"search-module"},f("h4",null,o),f("ul",null,s.map(function(t){return a(t.item)}),r?[]:f("li",{class:"more-results"},this.actionLink(function(){var t=Object.assign({},e.state.expanded);t[o]=!0,e.setState({expanded:t})},{},"show "+(n.length-s.length)+" more results from this module"))))},e.prototype.navigationLink=function(t,e){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:t,onClick:this.hide.bind(this)},e);return this.menuLink.apply(this,[i,function(){window.location.href=t,n.hide()}].concat(o))},e.prototype.actionLink=function(t,e){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(e){e.preventDefault(),t()}},e);return this.menuLink.apply(this,[r,t].concat(n))},e.prototype.menuLink=function(t,e){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(t.class=(t.class?t.class+" ":"")+"active-link",t.ref=function(t){t&&(n.activeLink=t)},this.activeLinkAction=e);var s=Object.assign({"data-link-index":i},t);return this.linkIndex+=1,f.apply(void 0,["a",s].concat(o))},e}(d),g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return u(e,t),e.prototype.shouldComponentUpdate=function(t){return this.props.html!==t.html},e.prototype.render=function(t){return f("div",{dangerouslySetInnerHTML:{__html:t.html}})},e}(d);n.init=c,window.quickNav={init:c}},{"fuse.js":2,preact:3}],2:[function(t,e,n){!function(t,o){"object"==typeof n&&"object"==typeof e?e.exports=o():"function"==typeof define&&define.amd?define("Fuse",[],o):"object"==typeof n?n.Fuse=o():t.Fuse=o()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";t.exports=function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),i=n(5),s=n(7),a=n(4),l=function(){function t(e,n){var r=n.location,i=void 0===r?0:r,s=n.distance,l=void 0===s?100:s,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,p=void 0===h?32:h,f=n.isCaseSensitive,d=void 0!==f&&f,v=n.tokenSeparator,_=void 0===v?/ +/g:v,g=n.findAllMatches,m=void 0!==g&&g,y=n.minMatchCharLength,k=void 0===y?1:y;o(this,t),this.options={location:i,distance:l,threshold:u,maxPatternLength:p,isCaseSensitive:d,tokenSeparator:_,findAllMatches:m,minMatchCharLength:k},this.pattern=this.options.isCaseSensitive?e:e.toLowerCase(),this.pattern.length<=p&&(this.patternAlphabet=a(this.pattern))}return r(t,[{key:"search",value:function(t){if(this.options.isCaseSensitive||(t=t.toLowerCase()),this.pattern===t)return{isMatch:!0,score:0,matchedIndices:[[0,t.length-1]]};var e=this.options,n=e.maxPatternLength,o=e.tokenSeparator;if(this.pattern.length>n)return i(t,this.pattern,o);var r=this.options,a=r.location,l=r.distance,c=r.threshold,u=r.findAllMatches,h=r.minMatchCharLength;return s(t,this.pattern,this.patternAlphabet,{location:a,distance:l,threshold:c,findAllMatches:u,minMatchCharLength:h})}}]),t}();t.exports=l},function(t,e,n){"use strict";var o=n(0),r=function t(e,n,r){if(n){var i=n.indexOf("."),s=n,a=null;-1!==i&&(s=n.slice(0,i),a=n.slice(i+1));var l=e[s];if(null!==l&&void 0!==l)if(a||"string"!=typeof l&&"number"!=typeof l)if(o(l))for(var c=0,u=l.length;c<u;c+=1)t(l[c],a,r);else a&&t(l,a,r);else r.push(l.toString())}else r.push(e);return r};t.exports=function(t,e){return r(t,e,[])}},function(t,e,n){"use strict";t.exports=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=t.length;i<s;i+=1){var a=t[i];a&&-1===o?o=i:a||-1===o||((r=i-1)-o+1>=e&&n.push([o,r]),o=-1)}return t[i-1]&&i-o>=e&&n.push([o,i-1]),n}},function(t,e,n){"use strict";t.exports=function(t){for(var e={},n=t.length,o=0;o<n;o+=1)e[t.charAt(o)]=0;for(var r=0;r<n;r+=1)e[t.charAt(r)]|=1<<n-r-1;return e}},function(t,e,n){"use strict";var o=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;t.exports=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,r=new RegExp(e.replace(o,"\\$&").replace(n,"|")),i=t.match(r),s=!!i,a=[];if(s)for(var l=0,c=i.length;l<c;l+=1){var u=i[l];a.push([t.indexOf(u),u.length-1])}return{score:s?.5:1,isMatch:s,matchedIndices:a}}},function(t,e,n){"use strict";t.exports=function(t,e){var n=e.errors,o=void 0===n?0:n,r=e.currentLocation,i=void 0===r?0:r,s=e.expectedLocation,a=void 0===s?0:s,l=e.distance,c=void 0===l?100:l,u=o/t.length,h=Math.abs(a-i);return c?u+h/c:h?1:u}},function(t,e,n){"use strict";var o=n(6),r=n(3);t.exports=function(t,e,n,i){for(var s=i.location,a=void 0===s?0:s,l=i.distance,c=void 0===l?100:l,u=i.threshold,h=void 0===u?.6:u,p=i.findAllMatches,f=void 0!==p&&p,d=i.minMatchCharLength,v=void 0===d?1:d,_=a,g=t.length,m=h,y=t.indexOf(e,_),k=e.length,b=[],x=0;x<g;x+=1)b[x]=0;if(-1!==y){var S=o(e,{errors:0,currentLocation:y,expectedLocation:_,distance:c});if(m=Math.min(S,m),-1!==(y=t.lastIndexOf(e,_+k))){var w=o(e,{errors:0,currentLocation:y,expectedLocation:_,distance:c});m=Math.min(w,m)}}y=-1;for(var L=[],C=1,M=k+g,N=1<<k-1,I=0;I<k;I+=1){for(var A=0,O=M;A<O;)o(e,{errors:I,currentLocation:_+O,expectedLocation:_,distance:c})<=m?A=O:M=O,O=Math.floor((M-A)/2+A);M=O;var T=Math.max(1,_-O+1),P=f?g:Math.min(_+O,g)+k,j=Array(P+2);j[P+1]=(1<<I)-1;for(var E=P;E>=T;E-=1){var R=E-1,U=n[t.charAt(R)];if(U&&(b[R]=1),j[E]=(j[E+1]<<1|1)&U,0!==I&&(j[E]|=(L[E+1]|L[E])<<1|1|L[E+1]),j[E]&N&&(C=o(e,{errors:I,currentLocation:R,expectedLocation:_,distance:c}))<=m){if(m=C,(y=R)<=_)break;T=Math.max(1,2*_-y)}}if(o(e,{errors:I+1,currentLocation:_,expectedLocation:_,distance:c})>m)break;L=j}return{isMatch:y>=0,score:0===C?.001:C,matchedIndices:r(b,v)}}},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),i=n(1),s=n(2),a=n(0),l=function(){function t(e,n){var r=n.location,i=void 0===r?0:r,a=n.distance,l=void 0===a?100:a,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,p=void 0===h?32:h,f=n.caseSensitive,d=void 0!==f&&f,v=n.tokenSeparator,_=void 0===v?/ +/g:v,g=n.findAllMatches,m=void 0!==g&&g,y=n.minMatchCharLength,k=void 0===y?1:y,b=n.id,x=void 0===b?null:b,S=n.keys,w=void 0===S?[]:S,L=n.shouldSort,C=void 0===L||L,M=n.getFn,N=void 0===M?s:M,I=n.sortFn,A=void 0===I?function(t,e){return t.score-e.score}:I,O=n.tokenize,T=void 0!==O&&O,P=n.matchAllTokens,j=void 0!==P&&P,E=n.includeMatches,R=void 0!==E&&E,U=n.includeScore,D=void 0!==U&&U,V=n.verbose,F=void 0!==V&&V;o(this,t),this.options={location:i,distance:l,threshold:u,maxPatternLength:p,isCaseSensitive:d,tokenSeparator:_,findAllMatches:m,minMatchCharLength:k,id:x,keys:w,includeMatches:R,includeScore:D,shouldSort:C,getFn:N,sortFn:A,verbose:F,tokenize:T,matchAllTokens:j},this.setCollection(e)}return r(t,[{key:"setCollection",value:function(t){return this.list=t,t}},{key:"search",value:function(t){this._log('---------\nSearch pattern: "'+t+'"');var e=this._prepareSearchers(t),n=e.tokenSearchers,o=e.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=[];if(this.options.tokenize)for(var n=t.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)e.push(new i(n[o],this.options));return{tokenSearchers:e,fullSearcher:new i(t,this.options)}}},{key:"_search",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:t,fullSearcher:e});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],h=0,p=this.options.keys.length;h<p;h+=1){var f=this.options.keys[h];if("string"!=typeof f){if(a[f.name]={weight:1-f.weight||1},f.weight<=0||f.weight>1)throw new Error("Key weight has to be > 0 and <= 1");f=f.name}else a[f]={weight:1};this._analyze({key:f,value:this.options.getFn(u,f),record:u,index:l},{resultMap:o,results:r,tokenSearchers:t,fullSearcher:e})}return{weights:a,results:r}}},{key:"_analyze",value:function(t,e){var n=t.key,o=t.arrayIndex,r=void 0===o?-1:o,i=t.value,s=t.record,l=t.index,c=e.tokenSearchers,u=void 0===c?[]:c,h=e.fullSearcher,p=void 0===h?[]:h,f=e.resultMap,d=void 0===f?{}:f,v=e.results,_=void 0===v?[]:v;if(void 0!==i&&null!==i){var g=!1,m=-1,y=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var k=p.search(i);if(this._log('Full text: "'+i+'", score: '+k.score),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),x=[],S=0;S<u.length;S+=1){var w=u[S];this._log('\nPattern: "'+w.pattern+'"');for(var L=!1,C=0;C<b.length;C+=1){var M=b[C],N=w.search(M),I={};N.isMatch?(I[M]=N.score,g=!0,L=!0,x.push(N.score)):(I[M]=1,this.options.matchAllTokens||x.push(1)),this._log('Token: "'+M+'", score: '+I[M])}L&&(y+=1)}m=x[0];for(var A=x.length,O=1;O<A;O+=1)m+=x[O];m/=A,this._log("Token score average:",m)}var T=k.score;m>-1&&(T=(T+m)/2),this._log("Score average:",T);var P=!this.options.tokenize||!this.options.matchAllTokens||y>=u.length;if(this._log("\nCheck Matches: "+P),(g||k.isMatch)&&P){var j=d[l];j?j.output.push({key:n,arrayIndex:r,value:i,score:T,matchedIndices:k.matchedIndices}):(d[l]={item:s,output:[{key:n,arrayIndex:r,value:i,score:T,matchedIndices:k.matchedIndices}]},_.push(d[l]))}}else if(a(i))for(var E=0,R=i.length;E<R;E+=1)this._analyze({key:n,arrayIndex:E,value:i[E],record:s,index:l},{resultMap:d,results:_,tokenSearchers:u,fullSearcher:p})}}},{key:"_computeScore",value:function(t,e){this._log("\n\nComputing score:\n");for(var n=0,o=e.length;n<o;n+=1){for(var r=e[n].output,i=r.length,s=0,a=1,l=0;l<i;l+=1){var c=r[l].score,u=t?t[r[l].key].weight:1,h=c*u;1!==u?a=Math.min(a,h):(r[l].nScore=h,s+=h)}e[n].score=1===a?s/i:a,this._log(e[n])}}},{key:"_sort",value:function(t){this._log("\n\nSorting...."),t.sort(this.options.sortFn)}},{key:"_format",value:function(t){var e=[];this._log("\n\nOutput:\n\n",JSON.stringify(t));var n=[];this.options.includeMatches&&n.push(function(t,e){var n=t.output;e.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&i.arrayIndex>-1&&(s.arrayIndex=i.arrayIndex),e.matches.push(s)}}}),this.options.includeScore&&n.push(function(t,e){e.score=t.score});for(var o=0,r=t.length;o<r;o+=1){var i=t[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);e.push(s)}else e.push(i.item)}return e}},{key:"_log",value:function(){if(this.options.verbose){var t;(t=console).log.apply(t,arguments)}}}]),t}();t.exports=l}])})},{}],3:[function(t,e,n){!function(){"use strict";function t(){}function n(e,n){var o,r,i,s,a=O;for(s=arguments.length;s-- >2;)A.push(arguments[s]);for(n&&null!=n.children&&(A.length||A.push(n.children),delete n.children);A.length;)if((r=A.pop())&&void 0!==r.pop)for(s=r.length;s--;)A.push(r[s]);else"boolean"==typeof r&&(r=null),(i="function"!=typeof e)&&(null==r?r="":"number"==typeof r?r=String(r):"string"!=typeof r&&(i=!1)),i&&o?a[a.length-1]+=r:a===O?a=[r]:a.push(r),o=i;var l=new t;return l.nodeName=e,l.children=a,l.attributes=null==n?void 0:n,l.key=null==n?void 0:n.key,void 0!==I.vnode&&I.vnode(l),l}function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){!t.__d&&(t.__d=!0)&&1==j.push(t)&&(I.debounceRendering||T)(i)}function i(){var t,e=j;for(j=[];t=e.pop();)t.__d&&L(t)}function s(t,e,n){return"string"==typeof e||"number"==typeof e?void 0!==t.splitText:"string"==typeof e.nodeName?!t._componentConstructor&&a(t,e.nodeName):n||t._componentConstructor===e.nodeName}function a(t,e){return t.__n===e||t.nodeName.toLowerCase()===e.toLowerCase()}function l(t){var e=o({},t.attributes);e.children=t.children;var n=t.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===e[r]&&(e[r]=n[r]);return e}function c(t,e){var n=e?document.createElementNS("http://www.w3.org/2000/svg",t):document.createElement(t);return n.__n=t,n}function u(t){var e=t.parentNode;e&&e.removeChild(t)}function h(t,e,n,o,r){if("className"===e&&(e="class"),"key"===e);else if("ref"===e)n&&n(null),o&&o(t);else if("class"!==e||r)if("style"===e){if(o&&"string"!=typeof o&&"string"!=typeof n||(t.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(t.style[i]="");for(var i in o)t.style[i]="number"==typeof o[i]&&!1===P.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===e)o&&(t.innerHTML=o.__html||"");else if("o"==e[0]&&"n"==e[1]){var s=e!==(e=e.replace(/Capture$/,""));e=e.toLowerCase().substring(2),o?n||t.addEventListener(e,f,s):t.removeEventListener(e,f,s),(t.__l||(t.__l={}))[e]=o}else if("list"!==e&&"type"!==e&&!r&&e in t)p(t,e,null==o?"":o),null!=o&&!1!==o||t.removeAttribute(e);else{var a=r&&e!==(e=e.replace(/^xlink\:?/,""));null==o||!1===o?a?t.removeAttributeNS("http://www.w3.org/1999/xlink",e.toLowerCase()):t.removeAttribute(e):"function"!=typeof o&&(a?t.setAttributeNS("http://www.w3.org/1999/xlink",e.toLowerCase(),o):t.setAttribute(e,o))}else t.className=o||""}function p(t,e,n){try{t[e]=n}catch(t){}}function f(t){return this.__l[t.type](I.event&&I.event(t)||t)}function d(){for(var t;t=E.pop();)I.afterMount&&I.afterMount(t),t.componentDidMount&&t.componentDidMount()}function v(t,e,n,o,r,i){R++||(U=null!=r&&void 0!==r.ownerSVGElement,D=null!=t&&!("__preactattr_"in t));var s=_(t,e,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--R||(D=!1,i||d()),s}function _(t,e,n,o,r){var i=t,s=U;if(null!=e&&"boolean"!=typeof e||(e=""),"string"==typeof e||"number"==typeof e)return t&&void 0!==t.splitText&&t.parentNode&&(!t._component||r)?t.nodeValue!=e&&(t.nodeValue=e):(i=document.createTextNode(e),t&&(t.parentNode&&t.parentNode.replaceChild(i,t),m(t,!0))),i.__preactattr_=!0,i;var l=e.nodeName;if("function"==typeof l)return C(t,e,n,o);if(U="svg"===l||"foreignObject"!==l&&U,l=String(l),(!t||!a(t,l))&&(i=c(l,U),t)){for(;t.firstChild;)i.appendChild(t.firstChild);t.parentNode&&t.parentNode.replaceChild(i,t),m(t,!0)}var u=i.firstChild,h=i.__preactattr_,p=e.children;if(null==h){h=i.__preactattr_={};for(var f=i.attributes,d=f.length;d--;)h[f[d].name]=f[d].value}return!D&&p&&1===p.length&&"string"==typeof p[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=p[0]&&(u.nodeValue=p[0]):(p&&p.length||null!=u)&&g(i,p,n,o,D||null!=h.dangerouslySetInnerHTML),k(i,e.attributes,h),U=s,i}function g(t,e,n,o,r){var i,a,l,c,h,p=t.childNodes,f=[],d={},v=0,g=0,y=p.length,k=0,b=e?e.length:0;if(0!==y)for(L=0;L<y;L++){var x=p[L],S=x.__preactattr_;null!=(w=b&&S?x._component?x._component.__k:S.key:null)?(v++,d[w]=x):(S||(void 0!==x.splitText?!r||x.nodeValue.trim():r))&&(f[k++]=x)}if(0!==b)for(L=0;L<b;L++){h=null;var w=(c=e[L]).key;if(null!=w)v&&void 0!==d[w]&&(h=d[w],d[w]=void 0,v--);else if(!h&&g<k)for(i=g;i<k;i++)if(void 0!==f[i]&&s(a=f[i],c,r)){h=a,f[i]=void 0,i===k-1&&k--,i===g&&g++;break}h=_(h,c,n,o),l=p[L],h&&h!==t&&h!==l&&(null==l?t.appendChild(h):h===l.nextSibling?u(l):t.insertBefore(h,l))}if(v)for(var L in d)void 0!==d[L]&&m(d[L],!1);for(;g<=k;)void 0!==(h=f[k--])&&m(h,!1)}function m(t,e){var n=t._component;n?M(n):(null!=t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),!1!==e&&null!=t.__preactattr_||u(t),y(t))}function y(t){for(t=t.lastChild;t;){var e=t.previousSibling;m(t,!0),t=e}}function k(t,e,n){var o;for(o in n)e&&null!=e[o]||null==n[o]||h(t,o,n[o],n[o]=void 0,U);for(o in e)"children"===o||"innerHTML"===o||o in n&&e[o]===("value"===o||"checked"===o?t[o]:n[o])||h(t,o,n[o],n[o]=e[o],U)}function b(t){var e=t.constructor.name;(V[e]||(V[e]=[])).push(t)}function x(t,e,n){var o,r=V[t.name];if(t.prototype&&t.prototype.render?(o=new t(e,n),N.call(o,e,n)):((o=new N(e,n)).constructor=t,o.render=S),r)for(var i=r.length;i--;)if(r[i].constructor===t){o.__b=r[i].__b,r.splice(i,1);break}return o}function S(t,e,n){return this.constructor(t,n)}function w(t,e,n,o,i){t.__x||(t.__x=!0,(t.__r=e.ref)&&delete e.ref,(t.__k=e.key)&&delete e.key,!t.base||i?t.componentWillMount&&t.componentWillMount():t.componentWillReceiveProps&&t.componentWillReceiveProps(e,o),o&&o!==t.context&&(t.__c||(t.__c=t.context),t.context=o),t.__p||(t.__p=t.props),t.props=e,t.__x=!1,0!==n&&(1!==n&&!1===I.syncComponentUpdates&&t.base?r(t):L(t,1,i)),t.__r&&t.__r(t))}function L(t,e,n,r){if(!t.__x){var i,s,a,c=t.props,u=t.state,h=t.context,p=t.__p||c,f=t.__s||u,_=t.__c||h,g=t.base,y=t.__b,k=g||y,b=t._component,S=!1;if(g&&(t.props=p,t.state=f,t.context=_,2!==e&&t.shouldComponentUpdate&&!1===t.shouldComponentUpdate(c,u,h)?S=!0:t.componentWillUpdate&&t.componentWillUpdate(c,u,h),t.props=c,t.state=u,t.context=h),t.__p=t.__s=t.__c=t.__b=null,t.__d=!1,!S){i=t.render(c,u,h),t.getChildContext&&(h=o(o({},h),t.getChildContext()));var C,N,A=i&&i.nodeName;if("function"==typeof A){var O=l(i);(s=b)&&s.constructor===A&&O.key==s.__k?w(s,O,1,h,!1):(C=s,t._component=s=x(A,O,h),s.__b=s.__b||y,s.__u=t,w(s,O,0,h,!1),L(s,1,n,!0)),N=s.base}else a=k,(C=b)&&(a=t._component=null),(k||1===e)&&(a&&(a._component=null),N=v(a,i,h,n||!g,k&&k.parentNode,!0));if(k&&N!==k&&s!==b){var T=k.parentNode;T&&N!==T&&(T.replaceChild(N,k),C||(k._component=null,m(k,!1)))}if(C&&M(C),t.base=N,N&&!r){for(var P=t,j=t;j=j.__u;)(P=j).base=N;N._component=P,N._componentConstructor=P.constructor}}if(!g||n?E.unshift(t):S||(t.componentDidUpdate&&t.componentDidUpdate(p,f,_),I.afterUpdate&&I.afterUpdate(t)),null!=t.__h)for(;t.__h.length;)t.__h.pop().call(t);R||r||d()}}function C(t,e,n,o){for(var r=t&&t._component,i=r,s=t,a=r&&t._componentConstructor===e.nodeName,c=a,u=l(e);r&&!c&&(r=r.__u);)c=r.constructor===e.nodeName;return r&&c&&(!o||r._component)?(w(r,u,3,n,o),t=r.base):(i&&!a&&(M(i),t=s=null),r=x(e.nodeName,u,n),t&&!r.__b&&(r.__b=t,s=null),w(r,u,1,n,o),t=r.base,s&&t!==s&&(s._component=null,m(s,!1))),t}function M(t){I.beforeUnmount&&I.beforeUnmount(t);var e=t.base;t.__x=!0,t.componentWillUnmount&&t.componentWillUnmount(),t.base=null;var n=t._component;n?M(n):e&&(e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),t.__b=e,u(e),b(t),y(e)),t.__r&&t.__r(null)}function N(t,e){this.__d=!0,this.context=e,this.props=t,this.state=this.state||{}}var I={},A=[],O=[],T="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,P=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,j=[],E=[],R=0,U=!1,D=!1,V={};o(N.prototype,{setState:function(t,e){var n=this.state;this.__s||(this.__s=o({},n)),o(n,"function"==typeof t?t(n,this.props):t),e&&(this.__h=this.__h||[]).push(e),r(this)},forceUpdate:function(t){t&&(this.__h=this.__h||[]).push(t),L(this,2)},render:function(){}});var F={h:n,createElement:n,cloneElement:function(t,e){return n(t.nodeName,o(o({},t.attributes),e),arguments.length>2?[].slice.call(arguments,2):t.children)},Component:N,render:function(t,e,n){return v(n,t,{},!1,e,!1)},rerender:i,options:I};void 0!==e?e.exports=F:self.preact=F}()},{}]},{},[1]);
+!function e(t,n,o){function r(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return r(n||e)},u,u.exports,e,t,n,o)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<o.length;s++)r(o[s]);return r}({1:[function(e,t,n){"use strict";function o(e,t,n){var o=new XMLHttpRequest;o.onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){if(t)try{t(JSON.parse(o.responseText))}catch(e){n(o)}}else n&&n(o)},o.open("GET",e,!0),o.send()}function r(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),p.render(d(v,{onClick:e,title:"Quick Jump"}),t,n)}function i(e,t){return t.length<=e?t:t.slice(0,e)}function s(){return d("table",{class:"keyboard-shortcuts"},d("tr",null,d("th",null,"Key"),d("th",null,"Shortcut")),d("tr",null,d("td",null,d("span",{class:"key"},"s")),d("td",null,"Open this search box")),d("tr",null,d("td",null,d("span",{class:"key"},"esc")),d("td",null,"Close this search box")),d("tr",null,d("td",null,d("span",{class:"key"},"↓"),",",d("span",{class:"key"},"ctrl")," + ",d("span",{class:"key"},"j")),d("td",null,"Move down in search results")),d("tr",null,d("td",null,d("span",{class:"key"},"↑"),",",d("span",{class:"key"},"ctrl")," + ",d("span",{class:"key"},"k")),d("td",null,"Move up in search results")),d("tr",null,d("td",null,d("span",{class:"key"},"↵")),d("td",null,"Go to active search result")))}function a(){return d("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function l(e){var t=[d("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",d("code",null,"[]"),"."),d("p",null,d("code",null,"Nothing")," matches your query for '",e.searchString,"'."),d("p",null,d("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function c(e,t){p.render(d(_,{baseUrl:e||".",showHideTrigger:t||r}),document.body)}var u=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();Object.defineProperty(n,"__esModule",{value:!0});var h=e("fuse.js"),p=e("preact"),d=p.h,f=p.Component,v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.render=function(e){return d("li",null,d("a",{href:"#",onClick:function(t){t.preventDefault(),e.onClick()}},e.title))},t}(f),_=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.linkIndex=0,t.focusPlease=!1,t.navigatedByKeyboard=!1,t}return u(t,e),t.prototype.componentWillMount=function(){var e=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),o(this.props.baseUrl+"/doc-index.json",function(t){e.setState({fuse:new h(t,{threshold:.25,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:["name","module"]}),moduleResults:[]})},function(t){console&&console.error("could not load 'doc-index.json' for searching",t),e.setState({failedLoading:!0})}),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(t){e.state.isVisible&&("Escape"===t.key?e.hide():"ArrowUp"===t.key||"k"===t.key&&t.ctrlKey?(t.preventDefault(),e.navigateLinks(-1)):"ArrowDown"===t.key||"j"===t.key&&t.ctrlKey?(t.preventDefault(),e.navigateLinks(1)):"Enter"===t.key&&e.state.activeLinkIndex>=0&&e.followActiveLink()),"s"===t.key&&"input"!==t.target.tagName.toLowerCase()&&(t.preventDefault(),e.show())})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},t.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},t.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t={};this.state.fuse.search(e).forEach(function(e){var n=e.item.module;(t[n]||(t[n]=[])).push(e)});var n=[];for(var o in t)!function(e){var o=t[e],r=0;o.forEach(function(e){r+=1/e.score}),n.push({module:e,totalScore:1/r,items:o})}(o);n.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:n})},t.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){var n=this;if(t.failedLoading){var o="file:"==window.location.protocol;return d("div",{id:"search",class:t.isVisible?"":"hidden"},d("div",{id:"search-results"},d("p",{class:"error"},"Failed to load file 'doc-index.json' containing definitions in this package."),o?d("p",{class:"error"},"To use quick jump, load this page with HTTP (from a local static file web server) instead of using the ",d("code",null,"file://")," protocol. (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with ",d("code",null,"file://"),".)"):[]))}this.linkIndex=0;var r=function(e){e.stopPropagation()},c=i(10,t.moduleResults).map(function(e){return n.renderResultsInModule(e)});return d("div",{id:"search",class:t.isVisible?"":"hidden"},d("div",{id:"search-form",onMouseDown:r},d("input",{placeholder:"Search in package by name",ref:function(e){n.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),d("div",{id:"search-results",ref:function(e){n.searchResults=e},onMouseDown:r,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var o=t.getAttribute("data-link-index");if("string"==typeof o){var r=parseInt(o,10);n.setState({activeLinkIndex:r});break}t=t.parentNode}}},""===t.searchString?[d(a,null),d(s,null)]:0==c.length?d(l,{searchString:t.searchString}):d("ul",null,c)))},t.prototype.renderResultsInModule=function(e){var t=this,n=e.items,o=e.module,r=this.state.expanded[o]||n.length<=10,s=r?n:i(8,n),a=function(e){return d("li",{class:"search-result"},t.navigationLink(t.props.baseUrl+"/"+e.link,{},d(g,{html:e.display_html})))};return d("li",{class:"search-module"},d("h4",null,o),d("ul",null,s.map(function(e){return a(e.item)}),r?[]:d("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},t.state.expanded);e[o]=!0,t.setState({expanded:e})},{},"show "+(n.length-s.length)+" more results from this module"))))},t.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t),s=function(){window.location.href=e,n.hide()};return this.menuLink.apply(this,[i,s].concat(o))},t.prototype.actionLink=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(t){t.preventDefault(),e()}},t);return this.menuLink.apply(this,[r,e].concat(n))},t.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,d.apply(void 0,["a",s].concat(o))},t}(f),g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return d("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(f);n.init=c,window.quickNav={init:c}},{"fuse.js":2,preact:3}],2:[function(e,t,n){!function(e,o){"object"==typeof n&&"object"==typeof t?t.exports=o():"function"==typeof define&&define.amd?define("Fuse",[],o):"object"==typeof n?n.Fuse=o():e.Fuse=o()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=n(5),s=n(7),a=n(4),l=function(){function e(t,n){var r=n.location,i=void 0===r?0:r,s=n.distance,l=void 0===s?100:s,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,p=void 0===h?32:h,d=n.isCaseSensitive,f=void 0!==d&&d,v=n.tokenSeparator,_=void 0===v?/ +/g:v,g=n.findAllMatches,m=void 0!==g&&g,y=n.minMatchCharLength,k=void 0===y?1:y;o(this,e),this.options={location:i,distance:l,threshold:u,maxPatternLength:p,isCaseSensitive:f,tokenSeparator:_,findAllMatches:m,minMatchCharLength:k},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=p&&(this.patternAlphabet=a(this.pattern))}return r(e,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return i(e,this.pattern,o);var r=this.options,a=r.location,l=r.distance,c=r.threshold,u=r.findAllMatches,h=r.minMatchCharLength;return s(e,this.pattern,this.patternAlphabet,{location:a,distance:l,threshold:c,findAllMatches:u,minMatchCharLength:h})}}]),e}();e.exports=l},function(e,t,n){"use strict";var o=n(0),r=function e(t,n,r){if(n){var i=n.indexOf("."),s=n,a=null;-1!==i&&(s=n.slice(0,i),a=n.slice(i+1));var l=t[s];if(null!==l&&void 0!==l)if(a||"string"!=typeof l&&"number"!=typeof l)if(o(l))for(var c=0,u=l.length;c<u;c+=1)e(l[c],a,r);else a&&e(l,a,r);else r.push(l.toString())}else r.push(t);return r};e.exports=function(e,t){return r(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||((r=i-1)-o+1>=t&&n.push([o,r]),o=-1)}return e[i-1]&&i-o>=t&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var o=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,r=new RegExp(t.replace(o,"\\$&").replace(n,"|")),i=e.match(r),s=!!i,a=[];if(s)for(var l=0,c=i.length;l<c;l+=1){var u=i[l];a.push([e.indexOf(u),u.length-1])}return{score:s?.5:1,isMatch:s,matchedIndices:a}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,h=Math.abs(a-i);return c?u+h/c:h?1:u}},function(e,t,n){"use strict";var o=n(6),r=n(3);e.exports=function(e,t,n,i){for(var s=i.location,a=void 0===s?0:s,l=i.distance,c=void 0===l?100:l,u=i.threshold,h=void 0===u?.6:u,p=i.findAllMatches,d=void 0!==p&&p,f=i.minMatchCharLength,v=void 0===f?1:f,_=a,g=e.length,m=h,y=e.indexOf(t,_),k=t.length,b=[],x=0;x<g;x+=1)b[x]=0;if(-1!==y){var w=o(t,{errors:0,currentLocation:y,expectedLocation:_,distance:c});if(m=Math.min(w,m),-1!==(y=e.lastIndexOf(t,_+k))){var S=o(t,{errors:0,currentLocation:y,expectedLocation:_,distance:c});m=Math.min(S,m)}}y=-1;for(var L=[],C=1,M=k+g,N=1<<k-1,I=0;I<k;I+=1){for(var A=0,T=M;A<T;)o(t,{errors:I,currentLocation:_+T,expectedLocation:_,distance:c})<=m?A=T:M=T,T=Math.floor((M-A)/2+A);M=T;var O=Math.max(1,_-T+1),j=d?g:Math.min(_+T,g)+k,P=Array(j+2);P[j+1]=(1<<I)-1;for(var E=j;E>=O;E-=1){var R=E-1,U=n[e.charAt(R)];if(U&&(b[R]=1),P[E]=(P[E+1]<<1|1)&U,0!==I&&(P[E]|=(L[E+1]|L[E])<<1|1|L[E+1]),P[E]&N&&(C=o(t,{errors:I,currentLocation:R,expectedLocation:_,distance:c}))<=m){if(m=C,(y=R)<=_)break;O=Math.max(1,2*_-y)}}if(o(t,{errors:I+1,currentLocation:_,expectedLocation:_,distance:c})>m)break;L=P}return{isMatch:y>=0,score:0===C?.001:C,matchedIndices:r(b,v)}}},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),i=n(1),s=n(2),a=n(0),l=function(){function e(t,n){var r=n.location,i=void 0===r?0:r,a=n.distance,l=void 0===a?100:a,c=n.threshold,u=void 0===c?.6:c,h=n.maxPatternLength,p=void 0===h?32:h,d=n.caseSensitive,f=void 0!==d&&d,v=n.tokenSeparator,_=void 0===v?/ +/g:v,g=n.findAllMatches,m=void 0!==g&&g,y=n.minMatchCharLength,k=void 0===y?1:y,b=n.id,x=void 0===b?null:b,w=n.keys,S=void 0===w?[]:w,L=n.shouldSort,C=void 0===L||L,M=n.getFn,N=void 0===M?s:M,I=n.sortFn,A=void 0===I?function(e,t){return e.score-t.score}:I,T=n.tokenize,O=void 0!==T&&T,j=n.matchAllTokens,P=void 0!==j&&j,E=n.includeMatches,R=void 0!==E&&E,U=n.includeScore,D=void 0!==U&&U,V=n.verbose,F=void 0!==V&&V;o(this,e),this.options={location:i,distance:l,threshold:u,maxPatternLength:p,isCaseSensitive:f,tokenSeparator:_,findAllMatches:m,minMatchCharLength:k,id:x,keys:S,includeMatches:R,includeScore:D,shouldSort:C,getFn:N,sortFn:A,verbose:F,tokenize:O,matchAllTokens:P},this.setCollection(t)}return r(e,[{key:"setCollection",value:function(e){return this.list=e,e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],h=0,p=this.options.keys.length;h<p;h+=1){var d=this.options.keys[h];if("string"!=typeof d){if(a[d.name]={weight:1-d.weight||1},d.weight<=0||d.weight>1)throw new Error("Key weight has to be > 0 and <= 1");d=d.name}else a[d]={weight:1};this._analyze({key:d,value:this.options.getFn(u,d),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,l=e.index,c=t.tokenSearchers,u=void 0===c?[]:c,h=t.fullSearcher,p=void 0===h?[]:h,d=t.resultMap,f=void 0===d?{}:d,v=t.results,_=void 0===v?[]:v;if(void 0!==i&&null!==i){var g=!1,m=-1,y=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var k=p.search(i);if(this._log('Full text: "'+i+'", score: '+k.score),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),x=[],w=0;w<u.length;w+=1){var S=u[w];this._log('\nPattern: "'+S.pattern+'"');for(var L=!1,C=0;C<b.length;C+=1){var M=b[C],N=S.search(M),I={};N.isMatch?(I[M]=N.score,g=!0,L=!0,x.push(N.score)):(I[M]=1,this.options.matchAllTokens||x.push(1)),this._log('Token: "'+M+'", score: '+I[M])}L&&(y+=1)}m=x[0];for(var A=x.length,T=1;T<A;T+=1)m+=x[T];m/=A,this._log("Token score average:",m)}var O=k.score;m>-1&&(O=(O+m)/2),this._log("Score average:",O);var j=!this.options.tokenize||!this.options.matchAllTokens||y>=u.length;if(this._log("\nCheck Matches: "+j),(g||k.isMatch)&&j){var P=f[l];P?P.output.push({key:n,arrayIndex:r,value:i,score:O,matchedIndices:k.matchedIndices}):(f[l]={item:s,output:[{key:n,arrayIndex:r,value:i,score:O,matchedIndices:k.matchedIndices}]},_.push(f[l]))}}else if(a(i))for(var E=0,R=i.length;E<R;E+=1)this._analyze({key:n,arrayIndex:E,value:i[E],record:s,index:l},{resultMap:f,results:_,tokenSearchers:u,fullSearcher:p})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=0,a=1,l=0;l<i;l+=1){var c=e?e[r[l].key].weight:1,u=(1===c?r[l].score:r[l].score||.001)*c;1!==c?a=Math.min(a,u):(r[l].nScore=u,s+=u)}t[n].score=1===a?s/i:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&i.arrayIndex>-1&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){if(this.options.verbose){var e;(e=console).log.apply(e,arguments)}}}]),e}();e.exports=l}])})},{}],3:[function(e,t,n){!function(){"use strict";function e(){}function n(t,n){var o,r,i,s,a=T;for(s=arguments.length;s-- >2;)A.push(arguments[s]);for(n&&null!=n.children&&(A.length||A.push(n.children),delete n.children);A.length;)if((r=A.pop())&&void 0!==r.pop)for(s=r.length;s--;)A.push(r[s]);else"boolean"==typeof r&&(r=null),(i="function"!=typeof t)&&(null==r?r="":"number"==typeof r?r=String(r):"string"!=typeof r&&(i=!1)),i&&o?a[a.length-1]+=r:a===T?a=[r]:a.push(r),o=i;var l=new e;return l.nodeName=t,l.children=a,l.attributes=null==n?void 0:n,l.key=null==n?void 0:n.key,void 0!==I.vnode&&I.vnode(l),l}function o(e,t){for(var n in t)e[n]=t[n];return e}function r(e){!e.__d&&(e.__d=!0)&&1==P.push(e)&&(I.debounceRendering||O)(i)}function i(){var e,t=P;for(P=[];e=t.pop();)e.__d&&L(e)}function s(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&a(e,t.nodeName):n||e._componentConstructor===t.nodeName}function a(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function l(e){var t=o({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===t[r]&&(t[r]=n[r]);return t}function c(e,t){var n=t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);return n.__n=e,n}function u(e){var t=e.parentNode;t&&t.removeChild(e)}function h(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===j.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,d,s):e.removeEventListener(t,d,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e)p(e,t,null==o?"":o),null!=o&&!1!==o||e.removeAttribute(t);else{var a=r&&t!==(t=t.replace(/^xlink\:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function p(e,t,n){try{e[t]=n}catch(e){}}function d(e){return this.__l[e.type](I.event&&I.event(e)||e)}function f(){for(var e;e=E.pop();)I.afterMount&&I.afterMount(e),e.componentDidMount&&e.componentDidMount()}function v(e,t,n,o,r,i){R++||(U=null!=r&&void 0!==r.ownerSVGElement,D=null!=e&&!("__preactattr_"in e));var s=_(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--R||(D=!1,i||f()),s}function _(e,t,n,o,r){var i=e,s=U;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),m(e,!0))),i.__preactattr_=!0,i;var l=t.nodeName;if("function"==typeof l)return C(e,t,n,o);if(U="svg"===l||"foreignObject"!==l&&U,l=String(l),(!e||!a(e,l))&&(i=c(l,U),e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),m(e,!0)}var u=i.firstChild,h=i.__preactattr_,p=t.children;if(null==h){h=i.__preactattr_={};for(var d=i.attributes,f=d.length;f--;)h[d[f].name]=d[f].value}return!D&&p&&1===p.length&&"string"==typeof p[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=p[0]&&(u.nodeValue=p[0]):(p&&p.length||null!=u)&&g(i,p,n,o,D||null!=h.dangerouslySetInnerHTML),k(i,t.attributes,h),U=s,i}function g(e,t,n,o,r){var i,a,l,c,h,p=e.childNodes,d=[],f={},v=0,g=0,y=p.length,k=0,b=t?t.length:0;if(0!==y)for(L=0;L<y;L++){var x=p[L],w=x.__preactattr_;null!=(S=b&&w?x._component?x._component.__k:w.key:null)?(v++,f[S]=x):(w||(void 0!==x.splitText?!r||x.nodeValue.trim():r))&&(d[k++]=x)}if(0!==b)for(L=0;L<b;L++){h=null;var S=(c=t[L]).key;if(null!=S)v&&void 0!==f[S]&&(h=f[S],f[S]=void 0,v--);else if(!h&&g<k)for(i=g;i<k;i++)if(void 0!==d[i]&&s(a=d[i],c,r)){h=a,d[i]=void 0,i===k-1&&k--,i===g&&g++;break}h=_(h,c,n,o),l=p[L],h&&h!==e&&h!==l&&(null==l?e.appendChild(h):h===l.nextSibling?u(l):e.insertBefore(h,l))}if(v)for(var L in f)void 0!==f[L]&&m(f[L],!1);for(;g<=k;)void 0!==(h=d[k--])&&m(h,!1)}function m(e,t){var n=e._component;n?M(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||u(e),y(e))}function y(e){for(e=e.lastChild;e;){var t=e.previousSibling;m(e,!0),e=t}}function k(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||h(e,o,n[o],n[o]=void 0,U);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||h(e,o,n[o],n[o]=t[o],U)}function b(e){var t=e.constructor.name;(V[t]||(V[t]=[])).push(e)}function x(e,t,n){var o,r=V[e.name];if(e.prototype&&e.prototype.render?(o=new e(t,n),N.call(o,t,n)):((o=new N(t,n)).constructor=e,o.render=w),r)for(var i=r.length;i--;)if(r[i].constructor===e){o.__b=r[i].__b,r.splice(i,1);break}return o}function w(e,t,n){return this.constructor(e,n)}function S(e,t,n,o,i){e.__x||(e.__x=!0,(e.__r=t.ref)&&delete t.ref,(e.__k=t.key)&&delete t.key,!e.base||i?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===I.syncComponentUpdates&&e.base?r(e):L(e,1,i)),e.__r&&e.__r(e))}function L(e,t,n,r){if(!e.__x){var i,s,a,c=e.props,u=e.state,h=e.context,p=e.__p||c,d=e.__s||u,_=e.__c||h,g=e.base,y=e.__b,k=g||y,b=e._component,w=!1;if(g&&(e.props=p,e.state=d,e.context=_,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(c,u,h)?w=!0:e.componentWillUpdate&&e.componentWillUpdate(c,u,h),e.props=c,e.state=u,e.context=h),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!w){i=e.render(c,u,h),e.getChildContext&&(h=o(o({},h),e.getChildContext()));var C,N,A=i&&i.nodeName;if("function"==typeof A){var T=l(i);(s=b)&&s.constructor===A&&T.key==s.__k?S(s,T,1,h,!1):(C=s,e._component=s=x(A,T,h),s.__b=s.__b||y,s.__u=e,S(s,T,0,h,!1),L(s,1,n,!0)),N=s.base}else a=k,(C=b)&&(a=e._component=null),(k||1===t)&&(a&&(a._component=null),N=v(a,i,h,n||!g,k&&k.parentNode,!0));if(k&&N!==k&&s!==b){var O=k.parentNode;O&&N!==O&&(O.replaceChild(N,k),C||(k._component=null,m(k,!1)))}if(C&&M(C),e.base=N,N&&!r){for(var j=e,P=e;P=P.__u;)(j=P).base=N;N._component=j,N._componentConstructor=j.constructor}}if(!g||n?E.unshift(e):w||(e.componentDidUpdate&&e.componentDidUpdate(p,d,_),I.afterUpdate&&I.afterUpdate(e)),null!=e.__h)for(;e.__h.length;)e.__h.pop().call(e);R||r||f()}}function C(e,t,n,o){for(var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,c=a,u=l(t);r&&!c&&(r=r.__u);)c=r.constructor===t.nodeName;return r&&c&&(!o||r._component)?(S(r,u,3,n,o),e=r.base):(i&&!a&&(M(i),e=s=null),r=x(t.nodeName,u,n),e&&!r.__b&&(r.__b=e,s=null),S(r,u,1,n,o),e=r.base,s&&e!==s&&(s._component=null,m(s,!1))),e}function M(e){I.beforeUnmount&&I.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?M(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),e.__b=t,u(t),b(e),y(t)),e.__r&&e.__r(null)}function N(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{}}var I={},A=[],T=[],O="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,j=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,P=[],E=[],R=0,U=!1,D=!1,V={};o(N.prototype,{setState:function(e,t){var n=this.state;this.__s||(this.__s=o({},n)),o(n,"function"==typeof e?e(n,this.props):e),t&&(this.__h=this.__h||[]).push(t),r(this)},forceUpdate:function(e){e&&(this.__h=this.__h||[]).push(e),L(this,2)},render:function(){}});var F={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,o(o({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)},Component:N,render:function(e,t,n){return v(n,e,{},!1,t,!1)},rerender:i,options:I};void 0!==t?t.exports=F:self.preact=F}()},{}]},{},[1]);
//# sourceMappingURL=quick-jump.min.js.map
diff --git a/haddock-api/src/Haddock.hs b/haddock-api/src/Haddock.hs
index de40d06d..f7fa52b3 100644
--- a/haddock-api/src/Haddock.hs
+++ b/haddock-api/src/Haddock.hs
@@ -27,9 +27,9 @@ module Haddock (
import Data.Version
import Haddock.Backends.Xhtml
+import Haddock.Backends.Xhtml.Meta
import Haddock.Backends.Xhtml.Themes (getThemes)
import Haddock.Backends.LaTeX
-import Haddock.Backends.Meta
import Haddock.Backends.Hoogle
import Haddock.Backends.Hyperlinker
import Haddock.Interface
@@ -44,6 +44,7 @@ import Haddock.Utils
import Control.Monad hiding (forM_)
import Control.Applicative
import Data.Foldable (forM_, foldl')
+import Data.Traversable (for)
import Data.List (isPrefixOf)
import Control.Exception
import Data.Maybe
@@ -67,6 +68,7 @@ import Paths_haddock_api (getDataDir)
import System.Directory (doesDirectoryExist)
#endif
+import Text.ParserCombinators.ReadP (readP_to_S)
import GHC hiding (verbosity)
import Config
import DynFlags hiding (projectVersion, verbosity)
@@ -295,31 +297,52 @@ render dflags flags qual ifaces installedIfaces extSrcMap = do
sourceUrls' = (srcBase, srcModule', pkgSrcMap', pkgSrcLMap')
+ installedMap :: Map Module InstalledInterface
+ installedMap = Map.fromList [ (unwire (instMod iface), iface) | iface <- installedIfaces ]
+
+ -- The user gives use base-4.9.0.0, but the InstalledInterface
+ -- records the *wired in* identity base. So untranslate it
+ -- so that we can service the request.
+ unwire :: Module -> Module
+ unwire m = m { moduleUnitId = unwireUnitId dflags (moduleUnitId m) }
+
+ reexportedIfaces <- concat `fmap` (for (reexportFlags flags) $ \mod_str -> do
+ let warn = hPutStrLn stderr . ("Warning: " ++)
+ case readP_to_S parseModuleId mod_str of
+ [(m, "")]
+ | Just iface <- Map.lookup m installedMap
+ -> return [iface]
+ | otherwise
+ -> warn ("Cannot find reexported module '" ++ mod_str ++ "'") >> return []
+ _ -> warn ("Cannot parse reexported module flag '" ++ mod_str ++ "'") >> return [])
+
libDir <- getHaddockLibDir flags
prologue <- getPrologue dflags' flags
themes <- getThemes libDir flags >>= either bye return
+ let withQuickjump = Flag_QuickJumpIndex `elem` flags
+
when (Flag_GenIndex `elem` flags) $ do
ppHtmlIndex odir title pkgStr
themes opt_mathjax opt_contents_url sourceUrls' opt_wiki_urls
allVisibleIfaces pretty
- copyHtmlBits odir libDir themes
+ copyHtmlBits odir libDir themes withQuickjump
when (Flag_GenContents `elem` flags) $ do
ppHtmlContents dflags' odir title pkgStr
themes opt_mathjax opt_index_url sourceUrls' opt_wiki_urls
allVisibleIfaces True prologue pretty
(makeContentsQual qual)
- copyHtmlBits odir libDir themes
+ copyHtmlBits odir libDir themes withQuickjump
when (Flag_Html `elem` flags) $ do
- ppHtml dflags' title pkgStr visibleIfaces odir
+ ppHtml dflags' title pkgStr visibleIfaces reexportedIfaces odir
prologue
themes opt_mathjax sourceUrls' opt_wiki_urls
opt_contents_url opt_index_url unicode qual
- pretty
- copyHtmlBits odir libDir themes
- writeHaddockMeta odir
+ pretty withQuickjump
+ copyHtmlBits odir libDir themes withQuickjump
+ writeHaddockMeta odir withQuickjump
-- TODO: we throw away Meta for both Hoogle and LaTeX right now,
-- might want to fix that if/when these two get some work on them
diff --git a/haddock-api/src/Haddock/Backends/Meta.hs b/haddock-api/src/Haddock/Backends/Meta.hs
deleted file mode 100644
index c62c1ae8..00000000
--- a/haddock-api/src/Haddock/Backends/Meta.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-module Haddock.Backends.Meta where
-
-import Haddock.Utils.Json
-import Haddock.Version
-
-import Data.ByteString.Builder (hPutBuilder)
-import System.FilePath ((</>))
-import System.IO (withFile, IOMode (WriteMode))
-
--- | Writes a json encoded file containing additional
--- information about the generated documentation. This
--- is useful for external tools (e.g. hackage).
-writeHaddockMeta :: FilePath -> IO ()
-writeHaddockMeta odir = do
- let
- meta_json :: Value
- meta_json = object [
- "haddock_version" .= String projectVersion
- ]
-
- withFile (odir </> "meta.json") WriteMode $ \h ->
- hPutBuilder h (encodeToBuilder meta_json) \ No newline at end of file
diff --git a/haddock-api/src/Haddock/Backends/Xhtml.hs b/haddock-api/src/Haddock/Backends/Xhtml.hs
index 4055b1d6..55175163 100644
--- a/haddock-api/src/Haddock/Backends/Xhtml.hs
+++ b/haddock-api/src/Haddock/Backends/Xhtml.hs
@@ -37,7 +37,7 @@ import Haddock.GhcUtils
import Control.Monad ( when, unless )
import Data.Char ( toUpper, isSpace )
-import Data.List ( sortBy, intercalate, isPrefixOf, intersperse )
+import Data.List ( sortBy, isPrefixOf, intercalate, intersperse )
import Data.Maybe
import System.FilePath hiding ( (</>) )
import System.Directory
@@ -49,17 +49,16 @@ import Data.Ord ( comparing )
import DynFlags (Language(..))
import GHC hiding ( NoLink, moduleInfo,LexicalFixity(..) )
import Name
-import Module
--------------------------------------------------------------------------------
-- * Generating HTML documentation
--------------------------------------------------------------------------------
-
ppHtml :: DynFlags
-> String -- ^ Title
-> Maybe String -- ^ Package
-> [Interface]
+ -> [InstalledInterface] -- ^ Reexported interfaces
-> FilePath -- ^ Destination directory
-> Maybe (MDoc GHC.RdrName) -- ^ Prologue text, maybe
-> Themes -- ^ Themes
@@ -71,12 +70,13 @@ ppHtml :: DynFlags
-> Bool -- ^ Whether to use unicode in output (--use-unicode)
-> QualOption -- ^ How to qualify names
-> Bool -- ^ Output pretty html (newlines and indenting)
+ -> Bool -- ^ Also write Quickjump index
-> IO ()
-ppHtml dflags doctitle maybe_package ifaces odir prologue
+ppHtml dflags doctitle maybe_package ifaces reexported_ifaces odir prologue
themes maybe_mathjax_url maybe_source_url maybe_wiki_url
maybe_contents_url maybe_index_url unicode
- qual debug = do
+ qual debug withQuickjump = do
let
visible_ifaces = filter visible ifaces
visible i = OptHide `notElem` ifaceOptions i
@@ -84,32 +84,34 @@ ppHtml dflags doctitle maybe_package ifaces odir prologue
when (isNothing maybe_contents_url) $
ppHtmlContents dflags odir doctitle maybe_package
themes maybe_mathjax_url maybe_index_url maybe_source_url maybe_wiki_url
- (map toInstalledIface visible_ifaces)
+ (map toInstalledIface visible_ifaces ++ reexported_ifaces)
False -- we don't want to display the packages in a single-package contents
prologue debug (makeContentsQual qual)
when (isNothing maybe_index_url) $ do
ppHtmlIndex odir doctitle maybe_package
themes maybe_mathjax_url maybe_contents_url maybe_source_url maybe_wiki_url
- (map toInstalledIface visible_ifaces) debug
- ppJsonIndex odir maybe_source_url maybe_wiki_url unicode qual
- visible_ifaces
+ (map toInstalledIface visible_ifaces ++ reexported_ifaces) debug
+
+ when withQuickjump $
+ ppJsonIndex odir maybe_source_url maybe_wiki_url unicode qual
+ visible_ifaces
mapM_ (ppHtmlModule odir doctitle themes
maybe_mathjax_url maybe_source_url maybe_wiki_url
maybe_contents_url maybe_index_url unicode qual debug) visible_ifaces
-copyHtmlBits :: FilePath -> FilePath -> Themes -> IO ()
-copyHtmlBits odir libdir themes = do
+copyHtmlBits :: FilePath -> FilePath -> Themes -> Bool -> IO ()
+copyHtmlBits odir libdir themes withQuickjump = do
let
libhtmldir = joinPath [libdir, "html"]
copyCssFile f = copyFile f (combine odir (takeFileName f))
copyLibFile f = copyFile (joinPath [libhtmldir, f]) (joinPath [odir, f])
mapM_ copyCssFile (cssFiles themes)
- copyCssFile (joinPath [libhtmldir, quickJumpCssFile])
copyLibFile haddockJsFile
- copyLibFile jsQuickJumpFile
+ copyCssFile (joinPath [libhtmldir, quickJumpCssFile])
+ when withQuickjump (copyLibFile jsQuickJumpFile)
return ()
@@ -306,33 +308,35 @@ mkNodeList qual ss p ts = case ts of
mkNode :: Qualification -> [String] -> String -> ModuleTree -> Html
-mkNode qual ss p (Node s leaf pkg srcPkg short ts) =
+mkNode qual ss p (Node s leaf _pkg srcPkg short ts) =
htmlModule <+> shortDescr +++ htmlPkg +++ subtree
where
modAttrs = case (ts, leaf) of
- (_:_, False) -> collapseControl p True "module"
+ (_:_, Nothing) -> collapseControl p "module"
(_, _ ) -> [theclass "module"]
cBtn = case (ts, leaf) of
- (_:_, True) -> thespan ! collapseControl p True "" << spaceHtml
+ (_:_, Just _) -> thespan ! collapseControl p "" << spaceHtml
(_, _ ) -> noHtml
-- We only need an explicit collapser button when the module name
-- is also a leaf, and so is a link to a module page. Indeed, the
-- spaceHtml is a minor hack and does upset the layout a fraction.
htmlModule = thespan ! modAttrs << (cBtn +++
- if leaf
- then ppModule (mkModule (stringToUnitId (fromMaybe "" pkg))
- (mkModuleName mdl))
- else toHtml s
+ case leaf of
+ Just m -> ppModule m
+ Nothing -> toHtml s
)
- mdl = intercalate "." (reverse (s:ss))
-
shortDescr = maybe noHtml (origDocToHtml qual) short
htmlPkg = maybe noHtml (thespan ! [theclass "package"] <<) srcPkg
- subtree = mkNodeList qual (s:ss) p ts ! collapseSection p True ""
+ subtree =
+ if null ts then noHtml else
+ collapseDetails p DetailsOpen (
+ thesummary ! [ theclass "hide-when-js-enabled" ] << "Submodules" +++
+ mkNodeList qual (s:ss) p ts
+ )
@@ -587,10 +591,12 @@ ifaceToHtml maybe_source_url maybe_wiki_url iface unicode qual
| no_doc_at_all = noHtml
| otherwise
= divSynopsis $
- paragraph ! collapseControl "syn" False "caption" << "Synopsis" +++
- shortDeclList (
- mapMaybe (processExport True linksInfo unicode qual) exports
- ) ! (collapseSection "syn" False "" ++ collapseToggle "syn")
+ collapseDetails "syn" DetailsClosed (
+ thesummary << "Synopsis" +++
+ shortDeclList (
+ mapMaybe (processExport True linksInfo unicode qual) exports
+ ) ! collapseToggle "syn" ""
+ )
-- if the documentation doesn't begin with a section header, then
-- add one ("Documentation").
diff --git a/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs b/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs
index 18c8a0ff..e63667b0 100644
--- a/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs
+++ b/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs
@@ -165,9 +165,9 @@ hackMarkup fmt' h' =
UntouchedDoc d -> (markup fmt $ _doc d, [_meta d])
CollapsingHeader (Header lvl titl) par n nm ->
let id_ = makeAnchorId $ "ch:" ++ fromMaybe "noid:" nm ++ show n
- expanded = False
- col' = collapseControl id_ expanded "caption"
- instTable = (thediv ! collapseSection id_ expanded [] <<)
+ col' = collapseControl id_ "caption"
+ summary = thesummary ! [ theclass "hide-when-js-enabled" ] << "Expand"
+ instTable contents = collapseDetails id_ DetailsClosed (summary +++ contents)
lvs = zip [1 .. ] [h1, h2, h3, h4, h5, h6]
getHeader = fromMaybe caption (lookup lvl lvs)
subCaption = getHeader ! col' << markup fmt titl
diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs
index 6993c7f6..e020b909 100644
--- a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs
+++ b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs
@@ -199,10 +199,10 @@ subInstances :: Qualification
-> [(SubDecl,Located DocName)] -> Html
subInstances qual nm lnks splice = maybe noHtml wrap . instTable
where
- wrap = (subSection <<) . (subCaption +++)
- instTable = fmap (thediv ! collapseSection id_ True [] <<) . subTableSrc qual lnks splice
+ wrap contents = subSection (collapseDetails id_ DetailsOpen (summary +++ contents))
+ instTable = subTableSrc qual lnks splice
subSection = thediv ! [theclass "subs instances"]
- subCaption = paragraph ! collapseControl id_ True "caption" << "Instances"
+ summary = thesummary << "Instances"
id_ = makeAnchorId $ "i:" ++ nm
@@ -212,7 +212,7 @@ subOrphanInstances :: Qualification
subOrphanInstances qual lnks splice = maybe noHtml wrap . instTable
where
wrap = ((h1 << "Orphan instances") +++)
- instTable = fmap (thediv ! collapseSection id_ True [] <<) . subTableSrc qual lnks splice
+ instTable = fmap (thediv ! [ identifier ("section." ++ id_) ] <<) . subTableSrc qual lnks splice
id_ = makeAnchorId $ "orphans"
@@ -222,7 +222,7 @@ subInstHead :: String -- ^ Instance unique id (for anchor generation)
subInstHead iid hdr =
expander noHtml <+> hdr
where
- expander = thespan ! collapseControl (instAnchorId iid) False "instance"
+ expander = thespan ! collapseControl (instAnchorId iid) "instance"
subInstDetails :: String -- ^ Instance unique id (for anchor generation)
@@ -241,7 +241,9 @@ subFamInstDetails iid fi =
subInstSection :: String -- ^ Instance unique id (for anchor generation)
-> Html
-> Html
-subInstSection iid = thediv ! collapseSection (instAnchorId iid) False "inst-details"
+subInstSection iid contents = collapseDetails (instAnchorId iid) DetailsClosed (summary +++ contents)
+ where
+ summary = thesummary ! [ theclass "hide-when-js-enabled" ] << "Instance details"
instAnchorId :: String -> String
instAnchorId iid = makeAnchorId $ "i:" ++ iid
diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs b/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs
new file mode 100644
index 00000000..621bdd41
--- /dev/null
+++ b/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs
@@ -0,0 +1,28 @@
+module Haddock.Backends.Xhtml.Meta where
+
+import Haddock.Utils.Json
+import Haddock.Version
+
+import Data.ByteString.Builder (hPutBuilder)
+import System.FilePath ((</>))
+import System.IO (withFile, IOMode (WriteMode))
+
+-- | Everytime breaking changes to the Quckjump api
+-- happen this needs to be modified.
+quickjumpVersion :: Int
+quickjumpVersion = 1
+
+-- | Writes a json encoded file containing additional
+-- information about the generated documentation. This
+-- is useful for external tools (e.g. hackage).
+writeHaddockMeta :: FilePath -> Bool -> IO ()
+writeHaddockMeta odir withQuickjump = do
+ let
+ meta_json :: Value
+ meta_json = object (concat [
+ [ "haddock_version" .= String projectVersion ]
+ , [ "quickjump_version" .= quickjumpVersion | withQuickjump ]
+ ])
+
+ withFile (odir </> "meta.json") WriteMode $ \h ->
+ hPutBuilder h (encodeToBuilder meta_json)
diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs b/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs
index a8b4a4ec..a75c4b9a 100644
--- a/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs
+++ b/haddock-api/src/Haddock/Backends/Xhtml/Utils.hs
@@ -25,7 +25,8 @@ module Haddock.Backends.Xhtml.Utils (
hsep, vcat,
- collapseSection, collapseToggle, collapseControl,
+ DetailsState(..), collapseDetails, thesummary,
+ collapseToggle, collapseControl,
) where
@@ -213,26 +214,22 @@ groupId g = makeAnchorId ("g:" ++ g)
-- A section of HTML which is collapsible.
--
--- | Attributes for an area that can be collapsed
-collapseSection :: String -> Bool -> String -> [HtmlAttr]
-collapseSection id_ state classes = [ identifier sid, theclass cs ]
- where cs = unwords (words classes ++ [pick state "show" "hide"])
- sid = "section." ++ id_
+data DetailsState = DetailsOpen | DetailsClosed
+
+collapseDetails :: String -> DetailsState -> Html -> Html
+collapseDetails id_ state = tag "details" ! (identifier id_ : openAttrs)
+ where openAttrs = case state of { DetailsOpen -> [emptyAttr "open"]; DetailsClosed -> [] }
+
+thesummary :: Html -> Html
+thesummary = tag "summary"
-- | Attributes for an area that toggles a collapsed area
-collapseToggle :: String -> [HtmlAttr]
-collapseToggle id_ = [ strAttr "onclick" js ]
- where js = "toggleSection('" ++ id_ ++ "')";
+collapseToggle :: String -> String -> [HtmlAttr]
+collapseToggle id_ classes = [ theclass cs, strAttr "data-details-id" id_ ]
+ where cs = unwords (words classes ++ ["details-toggle"])
-- | Attributes for an area that toggles a collapsed area,
-- and displays a control.
-collapseControl :: String -> Bool -> String -> [HtmlAttr]
-collapseControl id_ state classes =
- [ identifier cid, theclass cs ] ++ collapseToggle id_
- where cs = unwords (words classes ++ [pick state "collapser" "expander"])
- cid = "control." ++ id_
-
-
-pick :: Bool -> a -> a -> a
-pick True t _ = t
-pick False _ f = f
+collapseControl :: String -> String -> [HtmlAttr]
+collapseControl id_ classes = collapseToggle id_ cs
+ where cs = unwords (words classes ++ ["details-toggle-control"]) \ No newline at end of file
diff --git a/haddock-api/src/Haddock/InterfaceFile.hs b/haddock-api/src/Haddock/InterfaceFile.hs
index 59582fd2..76bcb4ae 100644
--- a/haddock-api/src/Haddock/InterfaceFile.hs
+++ b/haddock-api/src/Haddock/InterfaceFile.hs
@@ -158,7 +158,7 @@ writeInterfaceFile filename iface = do
type NameCacheAccessor m = (m NameCache, NameCache -> m ())
-nameCacheFromGhc :: NameCacheAccessor Ghc
+nameCacheFromGhc :: forall m. (GhcMonad m, MonadIO m) => NameCacheAccessor m
nameCacheFromGhc = ( read_from_session , write_to_session )
where
read_from_session = do
diff --git a/haddock-api/src/Haddock/ModuleTree.hs b/haddock-api/src/Haddock/ModuleTree.hs
index e6cf8201..a0be820a 100644
--- a/haddock-api/src/Haddock/ModuleTree.hs
+++ b/haddock-api/src/Haddock/ModuleTree.hs
@@ -20,39 +20,41 @@ import DynFlags ( DynFlags )
import Packages ( lookupPackage )
import PackageConfig ( sourcePackageIdString )
+import qualified Control.Applicative as A
-data ModuleTree = Node String Bool (Maybe String) (Maybe String) (Maybe (MDoc Name)) [ModuleTree]
+
+data ModuleTree = Node String (Maybe Module) (Maybe String) (Maybe String) (Maybe (MDoc Name)) [ModuleTree]
mkModuleTree :: DynFlags -> Bool -> [(Module, Maybe (MDoc Name))] -> [ModuleTree]
mkModuleTree dflags showPkgs mods =
- foldr fn [] [ (splitModule mdl, modPkg mdl, modSrcPkg mdl, short) | (mdl, short) <- mods ]
+ foldr fn [] [ (mdl, splitModule mdl, modPkg mdl, modSrcPkg mdl, short) | (mdl, short) <- mods ]
where
modPkg mod_ | showPkgs = Just (unitIdString (moduleUnitId mod_))
| otherwise = Nothing
modSrcPkg mod_ | showPkgs = fmap sourcePackageIdString
(lookupPackage dflags (moduleUnitId mod_))
| otherwise = Nothing
- fn (mod_,pkg,srcPkg,short) = addToTrees mod_ pkg srcPkg short
+ fn (m,mod_,pkg,srcPkg,short) = addToTrees mod_ m pkg srcPkg short
-addToTrees :: [String] -> Maybe String -> Maybe String -> Maybe (MDoc Name) -> [ModuleTree] -> [ModuleTree]
-addToTrees [] _ _ _ ts = ts
-addToTrees ss pkg srcPkg short [] = mkSubTree ss pkg srcPkg short
-addToTrees (s1:ss) pkg srcPkg short (t@(Node s2 leaf node_pkg node_srcPkg node_short subs) : ts)
- | s1 > s2 = t : addToTrees (s1:ss) pkg srcPkg short ts
- | s1 == s2 = Node s2 (leaf || null ss) this_pkg this_srcPkg this_short (addToTrees ss pkg srcPkg short subs) : ts
- | otherwise = mkSubTree (s1:ss) pkg srcPkg short ++ t : ts
+addToTrees :: [String] -> Module -> Maybe String -> Maybe String -> Maybe (MDoc Name) -> [ModuleTree] -> [ModuleTree]
+addToTrees [] _ _ _ _ ts = ts
+addToTrees ss m pkg srcPkg short [] = mkSubTree ss m pkg srcPkg short
+addToTrees (s1:ss) m pkg srcPkg short (t@(Node s2 leaf node_pkg node_srcPkg node_short subs) : ts)
+ | s1 > s2 = t : addToTrees (s1:ss) m pkg srcPkg short ts
+ | s1 == s2 = Node s2 (leaf A.<|> (if null ss then Just m else Nothing)) this_pkg this_srcPkg this_short (addToTrees ss m pkg srcPkg short subs) : ts
+ | otherwise = mkSubTree (s1:ss) m pkg srcPkg short ++ t : ts
where
this_pkg = if null ss then pkg else node_pkg
this_srcPkg = if null ss then srcPkg else node_srcPkg
this_short = if null ss then short else node_short
-mkSubTree :: [String] -> Maybe String -> Maybe String -> Maybe (MDoc Name) -> [ModuleTree]
-mkSubTree [] _ _ _ = []
-mkSubTree [s] pkg srcPkg short = [Node s True pkg srcPkg short []]
-mkSubTree (s:ss) pkg srcPkg short = [Node s (null ss) Nothing Nothing Nothing (mkSubTree ss pkg srcPkg short)]
+mkSubTree :: [String] -> Module -> Maybe String -> Maybe String -> Maybe (MDoc Name) -> [ModuleTree]
+mkSubTree [] _ _ _ _ = []
+mkSubTree [s] m pkg srcPkg short = [Node s (Just m) pkg srcPkg short []]
+mkSubTree (s:s':ss) m pkg srcPkg short = [Node s Nothing Nothing Nothing Nothing (mkSubTree (s':ss) m pkg srcPkg short)]
splitModule :: Module -> [String]
diff --git a/haddock-api/src/Haddock/Options.hs b/haddock-api/src/Haddock/Options.hs
index d73d1a79..caf1fefe 100644
--- a/haddock-api/src/Haddock/Options.hs
+++ b/haddock-api/src/Haddock/Options.hs
@@ -31,6 +31,7 @@ module Haddock.Options (
qualification,
verbosity,
ghcFlags,
+ reexportFlags,
readIfaceArgs,
optPackageName,
optPackageVersion
@@ -70,6 +71,7 @@ data Flag
| Flag_WikiEntityURL String
| Flag_LaTeX
| Flag_LaTeXStyle String
+ | Flag_QuickJumpIndex
| Flag_HyperlinkedSource
| Flag_SourceCss String
| Flag_Mathjax String
@@ -98,6 +100,7 @@ data Flag
| Flag_NoPrintMissingDocs
| Flag_PackageName String
| Flag_PackageVersion String
+ | Flag_Reexport String
deriving (Eq, Show)
@@ -126,6 +129,8 @@ options backwardsCompat =
Option ['U'] ["use-unicode"] (NoArg Flag_UseUnicode) "use Unicode in HTML output",
Option [] ["hoogle"] (NoArg Flag_Hoogle)
"output for Hoogle; you may want --package-name and --package-version too",
+ Option [] ["quickjump"] (NoArg Flag_QuickJumpIndex)
+ "generate an index for interactive documentation navigation",
Option [] ["hyperlinked-source"] (NoArg Flag_HyperlinkedSource)
"generate highlighted and hyperlinked source code (for use with --html)",
Option [] ["source-css"] (ReqArg Flag_SourceCss "FILE")
@@ -194,6 +199,8 @@ options backwardsCompat =
"generate html with newlines and indenting (for use with --html)",
Option [] ["no-print-missing-docs"] (NoArg Flag_NoPrintMissingDocs)
"don't print information about any undocumented entities",
+ Option [] ["reexport"] (ReqArg Flag_Reexport "MOD")
+ "reexport the module MOD, adding it to the index",
Option [] ["package-name"] (ReqArg Flag_PackageName "NAME")
"name of the package being documented",
Option [] ["package-version"] (ReqArg Flag_PackageVersion "VERSION")
@@ -310,6 +317,9 @@ verbosity flags =
ghcFlags :: [Flag] -> [String]
ghcFlags flags = [ option | Flag_OptGhc option <- flags ]
+reexportFlags :: [Flag] -> [String]
+reexportFlags flags = [ option | Flag_Reexport option <- flags ]
+
readIfaceArgs :: [Flag] -> [(DocPaths, FilePath)]
readIfaceArgs flags = [ parseIfaceOption s | Flag_ReadInterface s <- flags ]
diff --git a/haddock.cabal b/haddock.cabal
index 6f3f64fe..cf9c8296 100644
--- a/haddock.cabal
+++ b/haddock.cabal
@@ -121,12 +121,12 @@ executable haddock
Haddock.Backends.Xhtml.Decl
Haddock.Backends.Xhtml.DocMarkup
Haddock.Backends.Xhtml.Layout
+ Haddock.Backends.Xhtml.Meta
Haddock.Backends.Xhtml.Names
Haddock.Backends.Xhtml.Themes
Haddock.Backends.Xhtml.Types
Haddock.Backends.Xhtml.Utils
Haddock.Backends.LaTeX
- Haddock.Backends.Meta
Haddock.Backends.HaddockDB
Haddock.Backends.Hoogle
Haddock.Backends.Hyperlinker
diff --git a/html-test/ref/A.html b/html-test/ref/A.html
index 094455f8..1fbfb371 100644
--- a/html-test/ref/A.html
+++ b/html-test/ref/A.html
@@ -39,44 +39,46 @@
>A</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >A</a
- > = <a href="#"
- >A</a
- ></li
- ><li class="src short"
- ><a href="#"
- >other</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >test2</a
- > :: <a href="#"
- >Bool</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >X</a
- > = <a href="#"
- >X</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >reExport</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >A</a
+ > = <a href="#"
+ >A</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >other</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >test2</a
+ > :: <a href="#"
+ >Bool</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >X</a
+ > = <a href="#"
+ >X</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >reExport</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/B.html b/html-test/ref/B.html
index 577c7b48..12d8e907 100644
--- a/html-test/ref/B.html
+++ b/html-test/ref/B.html
@@ -39,34 +39,36 @@
>B</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- >module <a href="#"
- >A</a
- ></li
- ><li class="src short"
- ><a href="#"
- >test</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >reExport</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >X</a
- > = <a href="#"
- >X</a
- ></li
- ></ul
+ >module <a href="#"
+ >A</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >test</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >reExport</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >X</a
+ > = <a href="#"
+ >X</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bold.html b/html-test/ref/Bold.html
index 305682fe..112d7aca 100644
--- a/html-test/ref/Bold.html
+++ b/html-test/ref/Bold.html
@@ -39,14 +39,16 @@
>Bold</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: a</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: a</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug1.html b/html-test/ref/Bug1.html
index 053c0b8e..e6ee486b 100644
--- a/html-test/ref/Bug1.html
+++ b/html-test/ref/Bug1.html
@@ -39,18 +39,20 @@
>Bug1</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T</a
- > = <a href="#"
- >T</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T</a
+ > = <a href="#"
+ >T</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug201.html b/html-test/ref/Bug201.html
index 6902a8b9..288a9499 100644
--- a/html-test/ref/Bug201.html
+++ b/html-test/ref/Bug201.html
@@ -39,18 +39,20 @@
>Bug201</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: ()</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >g</a
- > :: ()</li
- ></ul
+ ><a href="#"
+ >f</a
+ > :: ()</li
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug253.html b/html-test/ref/Bug253.html
index a8d232d4..178d70fe 100644
--- a/html-test/ref/Bug253.html
+++ b/html-test/ref/Bug253.html
@@ -55,14 +55,16 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: ()</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug26.html b/html-test/ref/Bug26.html
index 5dc4bc83..376c2ce6 100644
--- a/html-test/ref/Bug26.html
+++ b/html-test/ref/Bug26.html
@@ -51,28 +51,30 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: ()</li
- ><li class="src short"
- ><a href="#"
- >g</a
- > :: ()</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >C</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
+ ><a href="#"
+ >f</a
+ > :: ()</li
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: ()</li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >C</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
></ul
- ></li
- ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -149,14 +151,14 @@
></div
></div
><div class="subs instances"
- ><p id="control.i:C" class="caption collapser" onclick="toggleSection('i:C')"
- >Instances</p
- ><div id="section.i:C" class="show"
- ><table
+ ><details id="i:C" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:C:C:1" class="instance expander" onclick="toggleSection('i:ic:C:C:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:C:C:1"
></span
> <a href="#"
>C</a
@@ -175,8 +177,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:C:C:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:C:C:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -186,11 +190,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Bug294.html b/html-test/ref/Bug294.html
index d08b69a9..87a03731 100644
--- a/html-test/ref/Bug294.html
+++ b/html-test/ref/Bug294.html
@@ -51,14 +51,14 @@
>#</a
></p
><div class="subs instances"
- ><p id="control.i:A" class="caption collapser" onclick="toggleSection('i:A')"
- >Instances</p
- ><div id="section.i:A" class="show"
- ><table
+ ><details id="i:A" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:A:DP:1" class="instance expander" onclick="toggleSection('i:id:A:DP:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:A:DP:1"
></span
> <span class="keyword"
>data</span
@@ -75,8 +75,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:A:DP:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:A:DP:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -88,13 +90,13 @@
> <a href="#"
>A</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:A:TP:2" class="instance expander" onclick="toggleSection('i:id:A:TP:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:A:TP:2"
></span
> <span class="keyword"
>data</span
@@ -109,8 +111,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:A:TP:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:A:TP:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> TP <a href="#"
@@ -120,11 +124,11 @@
> <a href="#"
>A</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -175,14 +179,14 @@
>#</a
></p
><div class="subs instances"
- ><p id="control.i:DP" class="caption collapser" onclick="toggleSection('i:DP')"
- >Instances</p
- ><div id="section.i:DP" class="show"
- ><table
+ ><details id="i:DP" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:DP:DP:1" class="instance expander" onclick="toggleSection('i:if:DP:DP:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:DP:DP:1"
></span
> <span class="keyword"
>data</span
@@ -199,8 +203,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:DP:DP:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:DP:DP:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -212,11 +218,11 @@
> <a href="#"
>A</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Bug298.html b/html-test/ref/Bug298.html
index efee6ce3..532d40c5 100644
--- a/html-test/ref/Bug298.html
+++ b/html-test/ref/Bug298.html
@@ -39,30 +39,32 @@
>Bug298</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >(&lt;^&gt;)</a
- > :: (a -&gt; a) -&gt; a -&gt; a</li
- ><li class="src short"
- ><a href="#"
- >(&lt;^)</a
- > :: a -&gt; a -&gt; a</li
- ><li class="src short"
- ><a href="#"
- >(^&gt;)</a
- > :: a -&gt; a -&gt; a</li
- ><li class="src short"
- ><a href="#"
- >(&#8902;^)</a
- > :: a -&gt; a -&gt; a</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >f</a
- > :: ()</li
- ></ul
+ ><a href="#"
+ >(&lt;^&gt;)</a
+ > :: (a -&gt; a) -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><a href="#"
+ >(&lt;^)</a
+ > :: a -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><a href="#"
+ >(^&gt;)</a
+ > :: a -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><a href="#"
+ >(&#8902;^)</a
+ > :: a -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug3.html b/html-test/ref/Bug3.html
index 7cb1f431..80d01cfe 100644
--- a/html-test/ref/Bug3.html
+++ b/html-test/ref/Bug3.html
@@ -39,16 +39,18 @@
>Bug3</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug308.html b/html-test/ref/Bug308.html
index 54343aa6..b2d88452 100644
--- a/html-test/ref/Bug308.html
+++ b/html-test/ref/Bug308.html
@@ -39,18 +39,20 @@
>Bug308</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: ()</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >g</a
- > :: ()</li
- ></ul
+ ><a href="#"
+ >f</a
+ > :: ()</li
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug308CrossModule.html b/html-test/ref/Bug308CrossModule.html
index 9c9a2dec..acd10424 100644
--- a/html-test/ref/Bug308CrossModule.html
+++ b/html-test/ref/Bug308CrossModule.html
@@ -39,14 +39,16 @@
>Bug308CrossModule</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >h</a
- > :: ()</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >h</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug310.html b/html-test/ref/Bug310.html
index 93734800..50ba8cfd 100644
--- a/html-test/ref/Bug310.html
+++ b/html-test/ref/Bug310.html
@@ -39,24 +39,26 @@
>Bug310</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >type family</span
- > (a :: <a href="#"
- >Nat</a
- >) <a href="#"
- >+</a
- > (b :: <a href="#"
- >Nat</a
- >) :: <a href="#"
- >Nat</a
- > <span class="keyword"
- >where ...</span
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><span class="keyword"
+ >type family</span
+ > (a :: <a href="#"
+ >Nat</a
+ >) <a href="#"
+ >+</a
+ > (b :: <a href="#"
+ >Nat</a
+ >) :: <a href="#"
+ >Nat</a
+ > <span class="keyword"
+ >where ...</span
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug313.html b/html-test/ref/Bug313.html
index 9afe11eb..17a39600 100644
--- a/html-test/ref/Bug313.html
+++ b/html-test/ref/Bug313.html
@@ -52,18 +52,20 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >a</a
- > :: a</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >b</a
- > :: a</li
- ></ul
+ ><a href="#"
+ >a</a
+ > :: a</li
+ ><li class="src short"
+ ><a href="#"
+ >b</a
+ > :: a</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug335.html b/html-test/ref/Bug335.html
index 8aaf4349..f2185045 100644
--- a/html-test/ref/Bug335.html
+++ b/html-test/ref/Bug335.html
@@ -39,18 +39,20 @@
>Bug335</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: ()</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >g</a
- > :: ()</li
- ></ul
+ ><a href="#"
+ >f</a
+ > :: ()</li
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -63,12 +65,14 @@
>#</a
></p
><div class="doc"
- ><h3 id="control.ch:f0" class="caption expander" onclick="toggleSection('ch:f0')"
+ ><h3 class="caption details-toggle-control details-toggle" data-details-id="ch:f0"
>ExF:</h3
- ><div id="section.ch:f0" class="hide"
- ><p
+ ><details id="ch:f0"
+ ><summary class="hide-when-js-enabled"
+ >Expand</summary
+ ><p
>abc</p
- ></div
+ ></details
></div
></div
><div class="top"
@@ -79,10 +83,12 @@
>#</a
></p
><div class="doc"
- ><h3 id="control.ch:g0" class="caption expander" onclick="toggleSection('ch:g0')"
+ ><h3 class="caption details-toggle-control details-toggle" data-details-id="ch:g0"
>ExG:</h3
- ><div id="section.ch:g0" class="hide"
- ><pre class="screen"
+ ><details id="ch:g0"
+ ><summary class="hide-when-js-enabled"
+ >Expand</summary
+ ><pre class="screen"
><code class="prompt"
>&gt;&gt;&gt; </code
><strong class="userinput"
@@ -106,7 +112,7 @@
>Under ex</h4
><p
>foo</p
- ></div
+ ></details
><h2
>Out of Ex</h2
><p
diff --git a/html-test/ref/Bug387.html b/html-test/ref/Bug387.html
index e7ecdf62..23faa420 100644
--- a/html-test/ref/Bug387.html
+++ b/html-test/ref/Bug387.html
@@ -53,22 +53,24 @@
></ul
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >test1</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >test2</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><a href="#"
+ >test1</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >test2</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1 id="g:1"
diff --git a/html-test/ref/Bug4.html b/html-test/ref/Bug4.html
index 94d3fdb2..40d9ee7b 100644
--- a/html-test/ref/Bug4.html
+++ b/html-test/ref/Bug4.html
@@ -39,16 +39,18 @@
>Bug4</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug6.html b/html-test/ref/Bug6.html
index 5cad0cf1..9dc093cd 100644
--- a/html-test/ref/Bug6.html
+++ b/html-test/ref/Bug6.html
@@ -47,80 +47,82 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >A</a
- > = <a href="#"
- >A</a
- > <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >B</a
- > = <a href="#"
- >B</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >b</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
- >}</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >C</a
- > = <a href="#"
- >C</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >c1</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >A</a
+ > = <a href="#"
+ >A</a
+ > <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >B</a
+ > = <a href="#"
+ >B</a
+ > {<ul class="subs"
><li
- ><a href="#"
- >c2</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >D</a
- > = <a href="#"
- >D</a
- > <a href="#"
- >Int</a
- > <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >E</a
- > = <a href="#"
- >E</a
- > <a href="#"
- >Int</a
- ></li
- ></ul
+ ><a href="#"
+ >b</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >C</a
+ > = <a href="#"
+ >C</a
+ > {<ul class="subs"
+ ><li
+ ><a href="#"
+ >c1</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li
+ ><a href="#"
+ >c2</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >D</a
+ > = <a href="#"
+ >D</a
+ > <a href="#"
+ >Int</a
+ > <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >E</a
+ > = <a href="#"
+ >E</a
+ > <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Bug613.html b/html-test/ref/Bug613.html
index 45bf7bc4..765f18e1 100644
--- a/html-test/ref/Bug613.html
+++ b/html-test/ref/Bug613.html
@@ -39,28 +39,30 @@
>Bug613</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >Functor</a
- > f <span class="keyword"
- >where</span
- ><ul class="subs"
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >ThreeVars</a
- > a0 a b = <a href="#"
- >ThreeVars</a
- > a b</li
- ></ul
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >Functor</a
+ > f <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >ThreeVars</a
+ > a0 a b = <a href="#"
+ >ThreeVars</a
+ > a b</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -95,14 +97,14 @@
></p
></div
><div class="subs instances"
- ><p id="control.i:Functor" class="caption collapser" onclick="toggleSection('i:Functor')"
- >Instances</p
- ><div id="section.i:Functor" class="show"
- ><table
+ ><details id="i:Functor" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Functor:Functor:1" class="instance expander" onclick="toggleSection('i:ic:Functor:Functor:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Functor:Functor:1"
></span
> <a href="#"
>Functor</a
@@ -117,8 +119,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Functor:Functor:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Functor:Functor:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -132,13 +136,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Functor:Functor:2" class="instance expander" onclick="toggleSection('i:ic:Functor:Functor:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Functor:Functor:2"
></span
> <a href="#"
>Functor</a
@@ -153,8 +157,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Functor:Functor:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Functor:Functor:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -168,11 +174,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -203,14 +209,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:ThreeVars" class="caption collapser" onclick="toggleSection('i:ThreeVars')"
- >Instances</p
- ><div id="section.i:ThreeVars" class="show"
- ><table
+ ><details id="i:ThreeVars" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:ThreeVars:Functor:1" class="instance expander" onclick="toggleSection('i:id:ThreeVars:Functor:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ThreeVars:Functor:1"
></span
> <a href="#"
>Functor</a
@@ -225,8 +231,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:ThreeVars:Functor:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:ThreeVars:Functor:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -240,11 +248,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Bug7.html b/html-test/ref/Bug7.html
index 862002a0..ba1a4e26 100644
--- a/html-test/ref/Bug7.html
+++ b/html-test/ref/Bug7.html
@@ -48,24 +48,26 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Foo</a
- > = <a href="#"
- >Foo</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >Bar</a
- > x y</li
- ></ul
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Foo</a
+ > = <a href="#"
+ >Foo</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >Bar</a
+ > x y</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -98,14 +100,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:Foo" class="caption collapser" onclick="toggleSection('i:Foo')"
- >Instances</p
- ><div id="section.i:Foo" class="show"
- ><table
+ ><details id="i:Foo" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Foo:Bar:1" class="instance expander" onclick="toggleSection('i:id:Foo:Bar:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Foo:Bar:1"
></span
> <a href="#"
>Bar</a
@@ -124,12 +126,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Foo:Bar:1" class="inst-details hide"
- ></div
+ ><details id="i:id:Foo:Bar:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -146,14 +150,14 @@
>The Bar class</p
></div
><div class="subs instances"
- ><p id="control.i:Bar" class="caption collapser" onclick="toggleSection('i:Bar')"
- >Instances</p
- ><div id="section.i:Bar" class="show"
- ><table
+ ><details id="i:Bar" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:1" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:1"
></span
> <a href="#"
>Bar</a
@@ -172,12 +176,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:1" class="inst-details hide"
- ></div
+ ><details id="i:ic:Bar:Bar:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/BugDeprecated.html b/html-test/ref/BugDeprecated.html
index 629224e4..ca801201 100644
--- a/html-test/ref/BugDeprecated.html
+++ b/html-test/ref/BugDeprecated.html
@@ -39,46 +39,48 @@
>BugDeprecated</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >bar</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >baz</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >one</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >two</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >three</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >bar</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >baz</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >one</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >two</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >three</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/BugExportHeadings.html b/html-test/ref/BugExportHeadings.html
index ac121737..7b3e7728 100644
--- a/html-test/ref/BugExportHeadings.html
+++ b/html-test/ref/BugExportHeadings.html
@@ -69,46 +69,48 @@
></ul
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >bar</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >baz</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >one</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >two</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >three</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >bar</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >baz</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >one</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >two</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >three</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1 id="g:1"
diff --git a/html-test/ref/BundledPatterns.html b/html-test/ref/BundledPatterns.html
index 7f424a0d..dea60728 100644
--- a/html-test/ref/BundledPatterns.html
+++ b/html-test/ref/BundledPatterns.html
@@ -39,82 +39,84 @@
>BundledPatterns</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Vec</a
- > :: <a href="#"
- >Nat</a
- > -&gt; <a href="#"
- >*</a
- > -&gt; <a href="#"
- >*</a
- > <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><a href="#"
- >Nil</a
- > :: <a href="#"
- >Vec</a
- > 0 a</li
- ><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >(:&gt;)</a
- > :: a -&gt; <a href="#"
- >Vec</a
- > n a -&gt; <a href="#"
- >Vec</a
- > (n <a href="#"
- >+</a
- > 1) a</li
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >RTree</a
- > :: <a href="#"
- >Nat</a
- > -&gt; <a href="#"
- >*</a
- > -&gt; <a href="#"
- >*</a
- > <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >LR</a
- > :: a -&gt; <a href="#"
- >RTree</a
- > 0 a</li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Vec</a
+ > :: <a href="#"
+ >Nat</a
+ > -&gt; <a href="#"
+ >*</a
+ > -&gt; <a href="#"
+ >*</a
+ > <span class="keyword"
+ >where</span
+ ><ul class="subs"
><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >BR</a
- > :: <a href="#"
- >RTree</a
- > d a -&gt; <a href="#"
- >RTree</a
- > d a -&gt; <a href="#"
- >RTree</a
- > (d <a href="#"
- >+</a
- > 1) a</li
- ></ul
- ></li
- ></ul
+ ><a href="#"
+ >Nil</a
+ > :: <a href="#"
+ >Vec</a
+ > 0 a</li
+ ><li
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >(:&gt;)</a
+ > :: a -&gt; <a href="#"
+ >Vec</a
+ > n a -&gt; <a href="#"
+ >Vec</a
+ > (n <a href="#"
+ >+</a
+ > 1) a</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >RTree</a
+ > :: <a href="#"
+ >Nat</a
+ > -&gt; <a href="#"
+ >*</a
+ > -&gt; <a href="#"
+ >*</a
+ > <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ><li
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >LR</a
+ > :: a -&gt; <a href="#"
+ >RTree</a
+ > 0 a</li
+ ><li
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >BR</a
+ > :: <a href="#"
+ >RTree</a
+ > d a -&gt; <a href="#"
+ >RTree</a
+ > d a -&gt; <a href="#"
+ >RTree</a
+ > (d <a href="#"
+ >+</a
+ > 1) a</li
+ ></ul
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/BundledPatterns2.html b/html-test/ref/BundledPatterns2.html
index 3c7b8c89..385fd07f 100644
--- a/html-test/ref/BundledPatterns2.html
+++ b/html-test/ref/BundledPatterns2.html
@@ -39,84 +39,86 @@
>BundledPatterns2</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Vec</a
- > :: <a href="#"
- >Nat</a
- > -&gt; <a href="#"
- >*</a
- > -&gt; <a href="#"
- >*</a
- > <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >Empty</a
- > :: <a href="#"
- >Vec</a
- > 0 a</li
- ><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >(:&gt;)</a
- > :: a -&gt; <a href="#"
- >Vec</a
- > n a -&gt; <a href="#"
- >Vec</a
- > (n <a href="#"
- >+</a
- > 1) a</li
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >RTree</a
- > :: <a href="#"
- >Nat</a
- > -&gt; <a href="#"
- >*</a
- > -&gt; <a href="#"
- >*</a
- > <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >LR</a
- > :: a -&gt; <a href="#"
- >RTree</a
- > 0 a</li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Vec</a
+ > :: <a href="#"
+ >Nat</a
+ > -&gt; <a href="#"
+ >*</a
+ > -&gt; <a href="#"
+ >*</a
+ > <span class="keyword"
+ >where</span
+ ><ul class="subs"
><li
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >BR</a
- > :: <a href="#"
- >RTree</a
- > d a -&gt; <a href="#"
- >RTree</a
- > d a -&gt; <a href="#"
- >RTree</a
- > (d <a href="#"
- >+</a
- > 1) a</li
- ></ul
- ></li
- ></ul
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >Empty</a
+ > :: <a href="#"
+ >Vec</a
+ > 0 a</li
+ ><li
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >(:&gt;)</a
+ > :: a -&gt; <a href="#"
+ >Vec</a
+ > n a -&gt; <a href="#"
+ >Vec</a
+ > (n <a href="#"
+ >+</a
+ > 1) a</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >RTree</a
+ > :: <a href="#"
+ >Nat</a
+ > -&gt; <a href="#"
+ >*</a
+ > -&gt; <a href="#"
+ >*</a
+ > <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ><li
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >LR</a
+ > :: a -&gt; <a href="#"
+ >RTree</a
+ > 0 a</li
+ ><li
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >BR</a
+ > :: <a href="#"
+ >RTree</a
+ > d a -&gt; <a href="#"
+ >RTree</a
+ > d a -&gt; <a href="#"
+ >RTree</a
+ > (d <a href="#"
+ >+</a
+ > 1) a</li
+ ></ul
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedClass.html b/html-test/ref/DeprecatedClass.html
index c7ff47dd..f7571316 100644
--- a/html-test/ref/DeprecatedClass.html
+++ b/html-test/ref/DeprecatedClass.html
@@ -39,30 +39,32 @@
>DeprecatedClass</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >SomeClass</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >SomeOtherClass</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >SomeClass</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >SomeOtherClass</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
></ul
- ></li
- ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedData.html b/html-test/ref/DeprecatedData.html
index 1216c4e0..2caed880 100644
--- a/html-test/ref/DeprecatedData.html
+++ b/html-test/ref/DeprecatedData.html
@@ -39,42 +39,44 @@
>DeprecatedData</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Foo</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >Foo</a
- ></li
- ><li
- >| <a href="#"
- >Bar</a
- ></li
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >One</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >One</a
- ></li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Foo</a
+ ><ul class="subs"
+ ><li
+ >= <a href="#"
+ >Foo</a
+ ></li
+ ><li
+ >| <a href="#"
+ >Bar</a
+ ></li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >One</a
+ ><ul class="subs"
><li
- >| <a href="#"
- >Two</a
- ></li
- ></ul
- ></li
- ></ul
+ >= <a href="#"
+ >One</a
+ ></li
+ ><li
+ >| <a href="#"
+ >Two</a
+ ></li
+ ></ul
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedFunction.html b/html-test/ref/DeprecatedFunction.html
index 4235df24..41bf7454 100644
--- a/html-test/ref/DeprecatedFunction.html
+++ b/html-test/ref/DeprecatedFunction.html
@@ -39,22 +39,24 @@
>DeprecatedFunction</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >bar</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >bar</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedFunction2.html b/html-test/ref/DeprecatedFunction2.html
index 6e420a74..bbf6cdd7 100644
--- a/html-test/ref/DeprecatedFunction2.html
+++ b/html-test/ref/DeprecatedFunction2.html
@@ -39,16 +39,18 @@
>DeprecatedFunction2</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedFunction3.html b/html-test/ref/DeprecatedFunction3.html
index 4f398f1c..96474a98 100644
--- a/html-test/ref/DeprecatedFunction3.html
+++ b/html-test/ref/DeprecatedFunction3.html
@@ -39,16 +39,18 @@
>DeprecatedFunction3</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Integer</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Integer</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedNewtype.html b/html-test/ref/DeprecatedNewtype.html
index 9ce1b7f0..c7803c81 100644
--- a/html-test/ref/DeprecatedNewtype.html
+++ b/html-test/ref/DeprecatedNewtype.html
@@ -39,30 +39,32 @@
>DeprecatedNewtype</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >SomeNewType</a
- > = <a href="#"
- >SomeNewTypeConst</a
- > <a href="#"
- >String</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >SomeOtherNewType</a
- > = <a href="#"
- >SomeOtherNewTypeConst</a
- > <a href="#"
- >String</a
- ></li
- ></ul
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >SomeNewType</a
+ > = <a href="#"
+ >SomeNewTypeConst</a
+ > <a href="#"
+ >String</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >SomeOtherNewType</a
+ > = <a href="#"
+ >SomeOtherNewTypeConst</a
+ > <a href="#"
+ >String</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedReExport.html b/html-test/ref/DeprecatedReExport.html
index 38a7d9a7..fd137108 100644
--- a/html-test/ref/DeprecatedReExport.html
+++ b/html-test/ref/DeprecatedReExport.html
@@ -65,16 +65,18 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1 id="g:1"
diff --git a/html-test/ref/DeprecatedRecord.html b/html-test/ref/DeprecatedRecord.html
index 24c0542a..3e2aa285 100644
--- a/html-test/ref/DeprecatedRecord.html
+++ b/html-test/ref/DeprecatedRecord.html
@@ -39,32 +39,34 @@
>DeprecatedRecord</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Foo</a
- > = <a href="#"
- >Foo</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >fooName</a
- > :: <a href="#"
- >String</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Foo</a
+ > = <a href="#"
+ >Foo</a
+ > {<ul class="subs"
><li
- ><a href="#"
- >fooValue</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
- >}</li
- ></ul
+ ><a href="#"
+ >fooName</a
+ > :: <a href="#"
+ >String</a
+ ></li
+ ><li
+ ><a href="#"
+ >fooValue</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ >}</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedTypeFamily.html b/html-test/ref/DeprecatedTypeFamily.html
index 9a879b36..6f267c01 100644
--- a/html-test/ref/DeprecatedTypeFamily.html
+++ b/html-test/ref/DeprecatedTypeFamily.html
@@ -39,30 +39,32 @@
>DeprecatedTypeFamily</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data family</span
- > <a href="#"
- >SomeTypeFamily</a
- > k :: <a href="#"
- >*</a
- > -&gt; <a href="#"
- >*</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data family</span
- > <a href="#"
- >SomeOtherTypeFamily</a
- > k :: <a href="#"
- >*</a
- > -&gt; <a href="#"
- >*</a
- ></li
- ></ul
+ ><span class="keyword"
+ >data family</span
+ > <a href="#"
+ >SomeTypeFamily</a
+ > k :: <a href="#"
+ >*</a
+ > -&gt; <a href="#"
+ >*</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data family</span
+ > <a href="#"
+ >SomeOtherTypeFamily</a
+ > k :: <a href="#"
+ >*</a
+ > -&gt; <a href="#"
+ >*</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/DeprecatedTypeSynonym.html b/html-test/ref/DeprecatedTypeSynonym.html
index 0bfd7e60..db0a8ab6 100644
--- a/html-test/ref/DeprecatedTypeSynonym.html
+++ b/html-test/ref/DeprecatedTypeSynonym.html
@@ -39,26 +39,28 @@
>DeprecatedTypeSynonym</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >type</span
- > <a href="#"
- >TypeSyn</a
- > = <a href="#"
- >String</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >type</span
- > <a href="#"
- >OtherTypeSyn</a
- > = <a href="#"
- >String</a
- ></li
- ></ul
+ ><span class="keyword"
+ >type</span
+ > <a href="#"
+ >TypeSyn</a
+ > = <a href="#"
+ >String</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >type</span
+ > <a href="#"
+ >OtherTypeSyn</a
+ > = <a href="#"
+ >String</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Examples.html b/html-test/ref/Examples.html
index a8eeeaf0..fa321fab 100644
--- a/html-test/ref/Examples.html
+++ b/html-test/ref/Examples.html
@@ -39,18 +39,20 @@
>Examples</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >fib</a
- > :: <a href="#"
- >Integer</a
- > -&gt; <a href="#"
- >Integer</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >fib</a
+ > :: <a href="#"
+ >Integer</a
+ > -&gt; <a href="#"
+ >Integer</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Extensions.html b/html-test/ref/Extensions.html
index 361c41e6..ee84df30 100644
--- a/html-test/ref/Extensions.html
+++ b/html-test/ref/Extensions.html
@@ -51,14 +51,16 @@
>Extensions</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foobar</a
- > :: t</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foobar</a
+ > :: t</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/GADTRecords.html b/html-test/ref/GADTRecords.html
index fffe5bd5..bba54b3e 100644
--- a/html-test/ref/GADTRecords.html
+++ b/html-test/ref/GADTRecords.html
@@ -39,52 +39,54 @@
>GADTRecords</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >H1</a
- > a b <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><a href="#"
- >C1</a
- > :: <a href="#"
- >H1</a
- > a b</li
- ><li
- ><a href="#"
- >C2</a
- > :: <a href="#"
- >Ord</a
- > a =&gt; [a] -&gt; <a href="#"
- >H1</a
- > a a</li
- ><li
- ><a href="#"
- >C3</a
- > :: {..} -&gt; <a href="#"
- >H1</a
- > <a href="#"
- >Int</a
- > <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >H1</a
+ > a b <span class="keyword"
+ >where</span
+ ><ul class="subs"
><li
- ><a href="#"
- >C4</a
- > :: {..} -&gt; <a href="#"
- >H1</a
- > <a href="#"
- >Int</a
- > a</li
- ></ul
- ></li
- ></ul
+ ><a href="#"
+ >C1</a
+ > :: <a href="#"
+ >H1</a
+ > a b</li
+ ><li
+ ><a href="#"
+ >C2</a
+ > :: <a href="#"
+ >Ord</a
+ > a =&gt; [a] -&gt; <a href="#"
+ >H1</a
+ > a a</li
+ ><li
+ ><a href="#"
+ >C3</a
+ > :: {..} -&gt; <a href="#"
+ >H1</a
+ > <a href="#"
+ >Int</a
+ > <a href="#"
+ >Int</a
+ ></li
+ ><li
+ ><a href="#"
+ >C4</a
+ > :: {..} -&gt; <a href="#"
+ >H1</a
+ > <a href="#"
+ >Int</a
+ > a</li
+ ></ul
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Hash.html b/html-test/ref/Hash.html
index 7cf99038..21004e20 100644
--- a/html-test/ref/Hash.html
+++ b/html-test/ref/Hash.html
@@ -74,60 +74,62 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >HashTable</a
- > key val</li
- ><li class="src short"
- ><a href="#"
- >new</a
- > :: (<a href="#"
- >Eq</a
- > key, <a href="#"
- >Hash</a
- > key) =&gt; <a href="#"
- >Int</a
- > -&gt; <a href="#"
- >IO</a
- > (<a href="#"
- >HashTable</a
- > key val)</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >insert</a
- > :: (<a href="#"
- >Eq</a
- > key, <a href="#"
- >Hash</a
- > key) =&gt; key -&gt; val -&gt; <a href="#"
- >IO</a
- > ()</li
- ><li class="src short"
- ><a href="#"
- >lookup</a
- > :: <a href="#"
- >Hash</a
- > key =&gt; key -&gt; <a href="#"
- >IO</a
- > (<a href="#"
- >Maybe</a
- > val)</li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >Hash</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >HashTable</a
+ > key val</li
+ ><li class="src short"
+ ><a href="#"
+ >new</a
+ > :: (<a href="#"
+ >Eq</a
+ > key, <a href="#"
+ >Hash</a
+ > key) =&gt; <a href="#"
+ >Int</a
+ > -&gt; <a href="#"
+ >IO</a
+ > (<a href="#"
+ >HashTable</a
+ > key val)</li
+ ><li class="src short"
+ ><a href="#"
+ >insert</a
+ > :: (<a href="#"
+ >Eq</a
+ > key, <a href="#"
+ >Hash</a
+ > key) =&gt; key -&gt; val -&gt; <a href="#"
+ >IO</a
+ > ()</li
+ ><li class="src short"
+ ><a href="#"
+ >lookup</a
+ > :: <a href="#"
+ >Hash</a
+ > key =&gt; key -&gt; <a href="#"
+ >IO</a
+ > (<a href="#"
+ >Maybe</a
+ > val)</li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >Hash</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
></ul
- ></li
- ></ul
+ ></details
></div
><div id="interface"
><h1 id="g:1"
@@ -282,14 +284,14 @@
></div
></div
><div class="subs instances"
- ><p id="control.i:Hash" class="caption collapser" onclick="toggleSection('i:Hash')"
- >Instances</p
- ><div id="section.i:Hash" class="show"
- ><table
+ ><details id="i:Hash" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Hash:Hash:1" class="instance expander" onclick="toggleSection('i:ic:Hash:Hash:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Hash:Hash:1"
></span
> <a href="#"
>Hash</a
@@ -304,8 +306,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Hash:Hash:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Hash:Hash:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -319,13 +323,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Hash:Hash:2" class="instance expander" onclick="toggleSection('i:ic:Hash:Hash:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Hash:Hash:2"
></span
> <a href="#"
>Hash</a
@@ -340,8 +344,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Hash:Hash:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Hash:Hash:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -355,13 +361,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Hash:Hash:3" class="instance expander" onclick="toggleSection('i:ic:Hash:Hash:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Hash:Hash:3"
></span
> (<a href="#"
>Hash</a
@@ -378,8 +384,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Hash:Hash:3" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Hash:Hash:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -391,11 +399,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/HiddenInstances.html b/html-test/ref/HiddenInstances.html
index 5a1329fc..b3586649 100644
--- a/html-test/ref/HiddenInstances.html
+++ b/html-test/ref/HiddenInstances.html
@@ -39,22 +39,24 @@
>HiddenInstances</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >VisibleClass</a
- > a</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >VisibleData</a
- ></li
- ></ul
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >VisibleClass</a
+ > a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >VisibleData</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -73,14 +75,14 @@
>Should be visible</p
></div
><div class="subs instances"
- ><p id="control.i:VisibleClass" class="caption collapser" onclick="toggleSection('i:VisibleClass')"
- >Instances</p
- ><div id="section.i:VisibleClass" class="show"
- ><table
+ ><details id="i:VisibleClass" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:VisibleClass:VisibleClass:1" class="instance expander" onclick="toggleSection('i:ic:VisibleClass:VisibleClass:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:VisibleClass:VisibleClass:1"
></span
> <a href="#"
>VisibleClass</a
@@ -97,14 +99,16 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:VisibleClass:VisibleClass:1" class="inst-details hide"
- ></div
+ ><details id="i:ic:VisibleClass:VisibleClass:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:VisibleClass:VisibleClass:2" class="instance expander" onclick="toggleSection('i:ic:VisibleClass:VisibleClass:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:VisibleClass:VisibleClass:2"
></span
> <a href="#"
>VisibleClass</a
@@ -121,12 +125,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:VisibleClass:VisibleClass:2" class="inst-details hide"
- ></div
+ ><details id="i:ic:VisibleClass:VisibleClass:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -143,14 +149,14 @@
>Should be visible</p
></div
><div class="subs instances"
- ><p id="control.i:VisibleData" class="caption collapser" onclick="toggleSection('i:VisibleData')"
- >Instances</p
- ><div id="section.i:VisibleData" class="show"
- ><table
+ ><details id="i:VisibleData" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:VisibleData:Num:1" class="instance expander" onclick="toggleSection('i:id:VisibleData:Num:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:VisibleData:Num:1"
></span
> <a href="#"
>Num</a
@@ -167,8 +173,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:VisibleData:Num:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:VisibleData:Num:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -248,13 +256,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:VisibleData:VisibleClass:2" class="instance expander" onclick="toggleSection('i:id:VisibleData:VisibleClass:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:VisibleData:VisibleClass:2"
></span
> <a href="#"
>VisibleClass</a
@@ -271,12 +279,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:VisibleData:VisibleClass:2" class="inst-details hide"
- ></div
+ ><details id="i:id:VisibleData:VisibleClass:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/HiddenInstancesB.html b/html-test/ref/HiddenInstancesB.html
index 11e9611f..d2f7b74d 100644
--- a/html-test/ref/HiddenInstancesB.html
+++ b/html-test/ref/HiddenInstancesB.html
@@ -39,22 +39,24 @@
>HiddenInstancesB</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >Foo</a
- > a</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Bar</a
- ></li
- ></ul
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >Foo</a
+ > a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Bar</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -73,14 +75,14 @@
>Should be visible</p
></div
><div class="subs instances"
- ><p id="control.i:Foo" class="caption collapser" onclick="toggleSection('i:Foo')"
- >Instances</p
- ><div id="section.i:Foo" class="show"
- ><table
+ ><details id="i:Foo" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:1" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:1"
></span
> <a href="#"
>Foo</a
@@ -97,12 +99,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:1" class="inst-details hide"
- ></div
+ ><details id="i:ic:Foo:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -119,14 +123,14 @@
>Should be visible</p
></div
><div class="subs instances"
- ><p id="control.i:Bar" class="caption collapser" onclick="toggleSection('i:Bar')"
- >Instances</p
- ><div id="section.i:Bar" class="show"
- ><table
+ ><details id="i:Bar" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Bar:Foo:1" class="instance expander" onclick="toggleSection('i:id:Bar:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Bar:Foo:1"
></span
> <a href="#"
>Foo</a
@@ -143,12 +147,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Bar:Foo:1" class="inst-details hide"
- ></div
+ ><details id="i:id:Bar:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Hyperlinks.html b/html-test/ref/Hyperlinks.html
index bc14415b..8e190358 100644
--- a/html-test/ref/Hyperlinks.html
+++ b/html-test/ref/Hyperlinks.html
@@ -39,16 +39,18 @@
>Hyperlinks</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/IgnoreExports.html b/html-test/ref/IgnoreExports.html
index 686fac7a..abfc0497 100644
--- a/html-test/ref/IgnoreExports.html
+++ b/html-test/ref/IgnoreExports.html
@@ -39,22 +39,24 @@
>IgnoreExports</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >bar</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >bar</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Instances.html b/html-test/ref/Instances.html
index e4a84a35..84c9498f 100644
--- a/html-test/ref/Instances.html
+++ b/html-test/ref/Instances.html
@@ -65,14 +65,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:-60--126--126-" class="caption collapser" onclick="toggleSection('i:-60--126--126-')"
- >Instances</p
- ><div id="section.i:-60--126--126-" class="show"
- ><table
+ ><details id="i:-60--126--126-" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:-60--126--126-:Foo:1" class="instance expander" onclick="toggleSection('i:id:-60--126--126-:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:-60--126--126-:Foo:1"
></span
> <a href="#"
>Foo</a
@@ -87,8 +87,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:-60--126--126-:Foo:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:-60--126--126-:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -122,11 +124,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -163,14 +165,14 @@
></p
></div
><div class="subs instances"
- ><p id="control.i:Foo" class="caption collapser" onclick="toggleSection('i:Foo')"
- >Instances</p
- ><div id="section.i:Foo" class="show"
- ><table
+ ><details id="i:Foo" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:1" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:1"
></span
> <a href="#"
>Foo</a
@@ -183,8 +185,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -206,13 +210,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:2" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:2"
></span
> <a href="#"
>Foo</a
@@ -227,8 +231,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -262,13 +268,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:3" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:3"
></span
> <a href="#"
>Foo</a
@@ -283,8 +289,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:3" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -318,13 +326,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:4" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:4')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:4"
></span
> (<a href="#"
>Eq</a
@@ -343,8 +351,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:4" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:4"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -366,13 +376,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:5" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:5')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:5"
></span
> <a href="#"
>Foo</a
@@ -387,8 +397,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:5" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:5"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -422,13 +434,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:6" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:6')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:6"
></span
> <a href="#"
>Foo</a
@@ -443,8 +455,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:6" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:6"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -466,13 +480,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:7" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:7')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:7"
></span
> <a href="#"
>Foo</a
@@ -487,8 +501,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:7" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:7"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -522,13 +538,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Foo:Foo:8" class="instance expander" onclick="toggleSection('i:ic:Foo:Foo:8')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Foo:Foo:8"
></span
> <a href="#"
>Foo</a
@@ -545,8 +561,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Foo:Foo:8" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Foo:Foo:8"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -592,11 +610,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -643,14 +661,14 @@
></p
></div
><div class="subs instances"
- ><p id="control.i:Bar" class="caption collapser" onclick="toggleSection('i:Bar')"
- >Instances</p
- ><div id="section.i:Bar" class="show"
- ><table
+ ><details id="i:Bar" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:1" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:1"
></span
> <a href="#"
>Bar</a
@@ -667,8 +685,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Bar:Bar:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -742,13 +762,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:2" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:2"
></span
> <a href="#"
>Bar</a
@@ -763,8 +783,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Bar:Bar:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -824,13 +846,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:3" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:3"
></span
> <a href="#"
>Bar</a
@@ -843,8 +865,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:3" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Bar:Bar:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -874,13 +898,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:4" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:4')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:4"
></span
> <a href="#"
>Foo</a
@@ -897,8 +921,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:4" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Bar:Bar:4"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -958,13 +984,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:5" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:5')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:5"
></span
> <a href="#"
>Foo</a
@@ -983,8 +1009,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:5" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Bar:Bar:5"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1014,13 +1042,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Bar:Bar:6" class="instance expander" onclick="toggleSection('i:ic:Bar:Bar:6')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Bar:Bar:6"
></span
> <a href="#"
>Bar</a
@@ -1037,8 +1065,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Bar:Bar:6" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Bar:Bar:6"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1112,11 +1142,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1167,14 +1197,14 @@
></p
></div
><div class="subs instances"
- ><p id="control.i:Baz" class="caption collapser" onclick="toggleSection('i:Baz')"
- >Instances</p
- ><div id="section.i:Baz" class="show"
- ><table
+ ><details id="i:Baz" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Baz:Baz:1" class="instance expander" onclick="toggleSection('i:ic:Baz:Baz:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Baz:Baz:1"
></span
> <a href="#"
>Baz</a
@@ -1187,8 +1217,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Baz:Baz:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Baz:Baz:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1224,13 +1256,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Baz:Baz:2" class="instance expander" onclick="toggleSection('i:ic:Baz:Baz:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Baz:Baz:2"
></span
> <a href="#"
>Baz</a
@@ -1243,8 +1275,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Baz:Baz:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Baz:Baz:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1280,13 +1314,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Baz:Baz:3" class="instance expander" onclick="toggleSection('i:ic:Baz:Baz:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Baz:Baz:3"
></span
> <a href="#"
>Baz</a
@@ -1299,8 +1333,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Baz:Baz:3" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Baz:Baz:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1336,13 +1372,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Baz:Baz:4" class="instance expander" onclick="toggleSection('i:ic:Baz:Baz:4')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Baz:Baz:4"
></span
> <a href="#"
>Baz</a
@@ -1357,8 +1393,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Baz:Baz:4" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Baz:Baz:4"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1406,13 +1444,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Baz:Baz:5" class="instance expander" onclick="toggleSection('i:ic:Baz:Baz:5')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Baz:Baz:5"
></span
> <a href="#"
>Baz</a
@@ -1425,8 +1463,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Baz:Baz:5" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:Baz:Baz:5"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1462,11 +1502,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1509,14 +1549,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:Quux" class="caption collapser" onclick="toggleSection('i:Quux')"
- >Instances</p
- ><div id="section.i:Quux" class="show"
- ><table
+ ><details id="i:Quux" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Quux:Foo:1" class="instance expander" onclick="toggleSection('i:id:Quux:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Quux:Foo:1"
></span
> <a href="#"
>Foo</a
@@ -1531,8 +1571,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Quux:Foo:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:Quux:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1566,13 +1608,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Quux:Bar:2" class="instance expander" onclick="toggleSection('i:id:Quux:Bar:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Quux:Bar:2"
></span
> <a href="#"
>Bar</a
@@ -1589,8 +1631,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Quux:Bar:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:Quux:Bar:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1664,13 +1708,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Quux:Baz:3" class="instance expander" onclick="toggleSection('i:id:Quux:Baz:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Quux:Baz:3"
></span
> <a href="#"
>Baz</a
@@ -1685,8 +1729,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Quux:Baz:3" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:Quux:Baz:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1734,13 +1780,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Quux:Thud:4" class="instance expander" onclick="toggleSection('i:id:Quux:Thud:4')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Quux:Thud:4"
></span
> <span class="keyword"
>data</span
@@ -1759,8 +1805,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Quux:Thud:4" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Quux:Thud:4"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -1784,11 +1832,11 @@
></li
></ul
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1835,14 +1883,14 @@
></p
></div
><div class="subs instances"
- ><p id="control.i:Norf" class="caption collapser" onclick="toggleSection('i:Norf')"
- >Instances</p
- ><div id="section.i:Norf" class="show"
- ><table
+ ><details id="i:Norf" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Norf:Norf:1" class="instance expander" onclick="toggleSection('i:ic:Norf:Norf:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Norf:Norf:1"
></span
> <a href="#"
>Norf</a
@@ -1859,8 +1907,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Norf:Norf:1" class="inst-details hide"
- ><div class="subs associated-types"
+ ><details id="i:ic:Norf:Norf:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs associated-types"
><p class="caption"
>Associated Types</p
><p class="src"
@@ -1912,13 +1962,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Norf:Norf:2" class="instance expander" onclick="toggleSection('i:ic:Norf:Norf:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Norf:Norf:2"
></span
> <a href="#"
>Norf</a
@@ -1931,8 +1981,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Norf:Norf:2" class="inst-details hide"
- ><div class="subs associated-types"
+ ><details id="i:ic:Norf:Norf:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs associated-types"
><p class="caption"
>Associated Types</p
><p class="src"
@@ -1968,11 +2020,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Math.html b/html-test/ref/Math.html
index 4d7cf62e..33ac0239 100644
--- a/html-test/ref/Math.html
+++ b/html-test/ref/Math.html
@@ -55,16 +55,18 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: <a href="#"
- >Integer</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: <a href="#"
+ >Integer</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/NamedDoc.html b/html-test/ref/NamedDoc.html
index 95be55d1..ece4f381 100644
--- a/html-test/ref/NamedDoc.html
+++ b/html-test/ref/NamedDoc.html
@@ -39,10 +39,12 @@
>NamedDoc</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Nesting.html b/html-test/ref/Nesting.html
index ac3e4784..76993674 100644
--- a/html-test/ref/Nesting.html
+++ b/html-test/ref/Nesting.html
@@ -39,42 +39,44 @@
>Nesting</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >d</a
- > :: t</li
- ><li class="src short"
- ><a href="#"
- >e</a
- > :: t</li
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: t</li
- ><li class="src short"
- ><a href="#"
- >g</a
- > :: t</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >h</a
- > :: t</li
- ><li class="src short"
- ><a href="#"
- >i</a
- > :: t</li
- ><li class="src short"
- ><a href="#"
- >j</a
- > :: t</li
- ><li class="src short"
- ><a href="#"
- >k</a
- > :: t</li
- ></ul
+ ><a href="#"
+ >d</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >e</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >h</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >i</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >j</a
+ > :: t</li
+ ><li class="src short"
+ ><a href="#"
+ >k</a
+ > :: t</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/NoLayout.html b/html-test/ref/NoLayout.html
index 0fbd9762..607b5f8d 100644
--- a/html-test/ref/NoLayout.html
+++ b/html-test/ref/NoLayout.html
@@ -39,16 +39,18 @@
>NoLayout</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >g</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/NonGreedy.html b/html-test/ref/NonGreedy.html
index 2ad812ec..cc03a20b 100644
--- a/html-test/ref/NonGreedy.html
+++ b/html-test/ref/NonGreedy.html
@@ -39,14 +39,16 @@
>NonGreedy</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: a</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: a</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Operators.html b/html-test/ref/Operators.html
index 0f1b9554..1db0a91a 100644
--- a/html-test/ref/Operators.html
+++ b/html-test/ref/Operators.html
@@ -47,114 +47,116 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >(+-)</a
- > :: a -&gt; a -&gt; a</li
- ><li class="src short"
- ><a href="#"
- >(*/)</a
- > :: a -&gt; a -&gt; a</li
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: a -&gt; a -&gt; a</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Foo</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >Foo</a
- > <a href="#"
- >`Bar`</a
- > <a href="#"
- >Foo</a
- ></li
+ ><a href="#"
+ >(+-)</a
+ > :: a -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><a href="#"
+ >(*/)</a
+ > :: a -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><a href="#"
+ >foo</a
+ > :: a -&gt; a -&gt; a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Foo</a
+ ><ul class="subs"
><li
- >| <a href="#"
- >Foo</a
- > <a href="#"
- >:-</a
- > <a href="#"
- >Foo</a
- ></li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >(:+)</a
- > :: <span class="keyword"
- >forall</span
- > a. a -&gt; a -&gt; [a]</li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > a <a href="#"
- >&lt;-&gt;</a
- > b <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><a href="#"
- >(:&lt;-&gt;)</a
- > :: a -&gt; b -&gt; a <a href="#"
- >&lt;-&gt;</a
- > b</li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >type family</span
- > a <a href="#"
- >++</a
- > b</li
- ><li class="src short"
- ><span class="keyword"
- >data family</span
- > a <a href="#"
- >**</a
- > b</li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > a <a href="#"
- >&gt;&lt;&gt;</a
- > b | a -&gt; b <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><span class="keyword"
- >type</span
- > a <a href="#"
- >&lt;&gt;&lt;</a
- > b :: <a href="#"
- >*</a
- ></li
+ >= <a href="#"
+ >Foo</a
+ > <a href="#"
+ >`Bar`</a
+ > <a href="#"
+ >Foo</a
+ ></li
+ ><li
+ >| <a href="#"
+ >Foo</a
+ > <a href="#"
+ >:-</a
+ > <a href="#"
+ >Foo</a
+ ></li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >(:+)</a
+ > :: <span class="keyword"
+ >forall</span
+ > a. a -&gt; a -&gt; [a]</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > a <a href="#"
+ >&lt;-&gt;</a
+ > b <span class="keyword"
+ >where</span
+ ><ul class="subs"
><li
- ><span class="keyword"
- >data</span
- > a <a href="#"
- >&gt;&lt;&lt;</a
- > b</li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >type</span
- > <a href="#"
- >(&gt;-&lt;)</a
- > a b = a <a href="#"
- >&lt;-&gt;</a
- > b</li
- ></ul
+ ><a href="#"
+ >(:&lt;-&gt;)</a
+ > :: a -&gt; b -&gt; a <a href="#"
+ >&lt;-&gt;</a
+ > b</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >type family</span
+ > a <a href="#"
+ >++</a
+ > b</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data family</span
+ > a <a href="#"
+ >**</a
+ > b</li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > a <a href="#"
+ >&gt;&lt;&gt;</a
+ > b | a -&gt; b <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ><li
+ ><span class="keyword"
+ >type</span
+ > a <a href="#"
+ >&lt;&gt;&lt;</a
+ > b :: <a href="#"
+ >*</a
+ ></li
+ ><li
+ ><span class="keyword"
+ >data</span
+ > a <a href="#"
+ >&gt;&lt;&lt;</a
+ > b</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >type</span
+ > <a href="#"
+ >(&gt;-&lt;)</a
+ > a b = a <a href="#"
+ >&lt;-&gt;</a
+ > b</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/OrphanInstances.html b/html-test/ref/OrphanInstances.html
index 96eb5b3d..b7fa346c 100644
--- a/html-test/ref/OrphanInstances.html
+++ b/html-test/ref/OrphanInstances.html
@@ -49,22 +49,24 @@
></ul
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ></ul
+ ></details
></div
><div id="interface"
><h1
>Documentation</h1
><h1
>Orphan instances</h1
- ><div id="section.orphans" class="show"
+ ><div id="section.orphans"
><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:o:ic:AClass:AClass:1" class="instance expander" onclick="toggleSection('i:o:ic:AClass:AClass:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:o:ic:AClass:AClass:1"
></span
> <a href="#"
>AClass</a
@@ -81,8 +83,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:o:ic:AClass:AClass:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:o:ic:AClass:AClass:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -96,7 +100,7 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
diff --git a/html-test/ref/PR643.html b/html-test/ref/PR643.html
index d59e7f93..6fe27318 100644
--- a/html-test/ref/PR643.html
+++ b/html-test/ref/PR643.html
@@ -39,14 +39,16 @@
>PR643</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >test</a
- > :: ()</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >test</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/PR643_1.html b/html-test/ref/PR643_1.html
index 34f3e947..ecba8866 100644
--- a/html-test/ref/PR643_1.html
+++ b/html-test/ref/PR643_1.html
@@ -39,14 +39,16 @@
>PR643_1</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >test</a
- > :: ()</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >test</a
+ > :: ()</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/PatternSyns.html b/html-test/ref/PatternSyns.html
index 4b4eea96..bf0cdf1e 100644
--- a/html-test/ref/PatternSyns.html
+++ b/html-test/ref/PatternSyns.html
@@ -47,106 +47,108 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >FooType</a
- > x = <a href="#"
- >FooCtor</a
- > x</li
- ><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >Foo</a
- > :: <span class="keyword"
- >forall</span
- > x. x -&gt; <a href="#"
- >FooType</a
- > x</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >Bar</a
- > :: <span class="keyword"
- >forall</span
- > x. x -&gt; <a href="#"
- >FooType</a
- > (<a href="#"
- >FooType</a
- > x)</li
- ><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >(:&lt;-&gt;)</a
- > :: <span class="keyword"
- >forall</span
- > x x1. x -&gt; x1 -&gt; (<a href="#"
- >FooType</a
- > x, <a href="#"
- >FooType</a
- > (<a href="#"
- >FooType</a
- > x1))</li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >BlubType</a
- > = <a href="#"
- >Show</a
- > x =&gt; <a href="#"
- >BlubCtor</a
- > x</li
- ><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >Blub</a
- > :: () =&gt; <span class="keyword"
- >forall</span
- > x. <a href="#"
- >Show</a
- > x =&gt; x -&gt; <a href="#"
- >BlubType</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > (a :: <a href="#"
- >*</a
- >) <a href="#"
- >&gt;&lt;</a
- > b = <a href="#"
- >Empty</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >E</a
- > :: <span class="keyword"
- >forall</span
- > k a (b :: k). <a href="#"
- >(&gt;&lt;)</a
- > k a b</li
- ><li class="src short"
- ><span class="keyword"
- >pattern</span
- > <a href="#"
- >PatWithExplicitSig</a
- > :: <a href="#"
- >Eq</a
- > somex =&gt; somex -&gt; <a href="#"
- >FooType</a
- > somex</li
- ></ul
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >FooType</a
+ > x = <a href="#"
+ >FooCtor</a
+ > x</li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >Foo</a
+ > :: <span class="keyword"
+ >forall</span
+ > x. x -&gt; <a href="#"
+ >FooType</a
+ > x</li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >Bar</a
+ > :: <span class="keyword"
+ >forall</span
+ > x. x -&gt; <a href="#"
+ >FooType</a
+ > (<a href="#"
+ >FooType</a
+ > x)</li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >(:&lt;-&gt;)</a
+ > :: <span class="keyword"
+ >forall</span
+ > x x1. x -&gt; x1 -&gt; (<a href="#"
+ >FooType</a
+ > x, <a href="#"
+ >FooType</a
+ > (<a href="#"
+ >FooType</a
+ > x1))</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >BlubType</a
+ > = <a href="#"
+ >Show</a
+ > x =&gt; <a href="#"
+ >BlubCtor</a
+ > x</li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >Blub</a
+ > :: () =&gt; <span class="keyword"
+ >forall</span
+ > x. <a href="#"
+ >Show</a
+ > x =&gt; x -&gt; <a href="#"
+ >BlubType</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > (a :: <a href="#"
+ >*</a
+ >) <a href="#"
+ >&gt;&lt;</a
+ > b = <a href="#"
+ >Empty</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >E</a
+ > :: <span class="keyword"
+ >forall</span
+ > k a (b :: k). <a href="#"
+ >(&gt;&lt;)</a
+ > k a b</li
+ ><li class="src short"
+ ><span class="keyword"
+ >pattern</span
+ > <a href="#"
+ >PatWithExplicitSig</a
+ > :: <a href="#"
+ >Eq</a
+ > somex =&gt; somex -&gt; <a href="#"
+ >FooType</a
+ > somex</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Properties.html b/html-test/ref/Properties.html
index 0193b087..15585cd9 100644
--- a/html-test/ref/Properties.html
+++ b/html-test/ref/Properties.html
@@ -39,18 +39,20 @@
>Properties</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >fib</a
- > :: <a href="#"
- >Integer</a
- > -&gt; <a href="#"
- >Integer</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >fib</a
+ > :: <a href="#"
+ >Integer</a
+ > -&gt; <a href="#"
+ >Integer</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/QuasiExpr.html b/html-test/ref/QuasiExpr.html
index 6f8255b9..ccec6856 100644
--- a/html-test/ref/QuasiExpr.html
+++ b/html-test/ref/QuasiExpr.html
@@ -101,14 +101,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:Expr" class="caption collapser" onclick="toggleSection('i:Expr')"
- >Instances</p
- ><div id="section.i:Expr" class="show"
- ><table
+ ><details id="i:Expr" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Expr:Show:1" class="instance expander" onclick="toggleSection('i:id:Expr:Show:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Expr:Show:1"
></span
> <a href="#"
>Show</a
@@ -123,8 +123,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Expr:Show:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:Expr:Show:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -160,11 +162,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -215,14 +217,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:BinOp" class="caption collapser" onclick="toggleSection('i:BinOp')"
- >Instances</p
- ><div id="section.i:BinOp" class="show"
- ><table
+ ><details id="i:BinOp" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:BinOp:Show:1" class="instance expander" onclick="toggleSection('i:id:BinOp:Show:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:BinOp:Show:1"
></span
> <a href="#"
>Show</a
@@ -237,8 +239,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:BinOp:Show:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:BinOp:Show:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -274,11 +278,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
diff --git a/html-test/ref/SpuriousSuperclassConstraints.html b/html-test/ref/SpuriousSuperclassConstraints.html
index a1157b5d..53421ff5 100644
--- a/html-test/ref/SpuriousSuperclassConstraints.html
+++ b/html-test/ref/SpuriousSuperclassConstraints.html
@@ -81,14 +81,14 @@ Fix spurious superclass constraints bug.</pre
>#</a
></p
><div class="subs instances"
- ><p id="control.i:SomeType" class="caption collapser" onclick="toggleSection('i:SomeType')"
- >Instances</p
- ><div id="section.i:SomeType" class="show"
- ><table
+ ><details id="i:SomeType" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:SomeType:Functor:1" class="instance expander" onclick="toggleSection('i:id:SomeType:Functor:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SomeType:Functor:1"
></span
> <a href="#"
>Functor</a
@@ -103,8 +103,10 @@ Fix spurious superclass constraints bug.</pre
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:SomeType:Functor:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:SomeType:Functor:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -128,13 +130,13 @@ Fix spurious superclass constraints bug.</pre
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:SomeType:Applicative:2" class="instance expander" onclick="toggleSection('i:id:SomeType:Applicative:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:SomeType:Applicative:2"
></span
> <a href="#"
>Applicative</a
@@ -151,8 +153,10 @@ Fix spurious superclass constraints bug.</pre
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:SomeType:Applicative:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:id:SomeType:Applicative:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -212,11 +216,11 @@ Fix spurious superclass constraints bug.</pre
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Test.html b/html-test/ref/Test.html
index 23ee2de6..4bcd2508 100644
--- a/html-test/ref/Test.html
+++ b/html-test/ref/Test.html
@@ -152,480 +152,482 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T</a
- > a b<ul class="subs"
- ><li
- >= <a href="#"
- >A</a
- > <a href="#"
- >Int</a
- > (<a href="#"
- >Maybe</a
- > <a href="#"
- >Float</a
- >)</li
- ><li
- >| <a href="#"
- >B</a
- > (<a href="#"
- >T</a
- > a b, <a href="#"
- >T</a
- > <a href="#"
- >Int</a
- > <a href="#"
- >Float</a
- >)</li
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T2</a
- > a b</li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T3</a
- > a b<ul class="subs"
- ><li
- >= <a href="#"
- >A1</a
- > a</li
- ><li
- >| <a href="#"
- >B1</a
- > b</li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T4</a
- > a b<ul class="subs"
- ><li
- >= <a href="#"
- >A2</a
- > a</li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T</a
+ > a b<ul class="subs"
><li
- >| <a href="#"
- >B2</a
- > b</li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T5</a
- > a b<ul class="subs"
- ><li
- >= <a href="#"
- >A3</a
- > a</li
+ >= <a href="#"
+ >A</a
+ > <a href="#"
+ >Int</a
+ > (<a href="#"
+ >Maybe</a
+ > <a href="#"
+ >Float</a
+ >)</li
+ ><li
+ >| <a href="#"
+ >B</a
+ > (<a href="#"
+ >T</a
+ > a b, <a href="#"
+ >T</a
+ > <a href="#"
+ >Int</a
+ > <a href="#"
+ >Float</a
+ >)</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T2</a
+ > a b</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T3</a
+ > a b<ul class="subs"
><li
- >| <a href="#"
- >B3</a
- > b</li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >T6</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >A4</a
- ></li
+ >= <a href="#"
+ >A1</a
+ > a</li
+ ><li
+ >| <a href="#"
+ >B1</a
+ > b</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T4</a
+ > a b<ul class="subs"
><li
- >| <a href="#"
- >B4</a
- ></li
+ >= <a href="#"
+ >A2</a
+ > a</li
+ ><li
+ >| <a href="#"
+ >B2</a
+ > b</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T5</a
+ > a b<ul class="subs"
><li
- >| <a href="#"
- >C4</a
- ></li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >N1</a
- > a = <a href="#"
- >N1</a
- > a</li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >N2</a
- > a b = <a href="#"
- >N2</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >n</a
- > :: a b</li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >N3</a
- > a b = <a href="#"
- >N3</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >n3</a
- > :: a b</li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >N4</a
- > a b</li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >N5</a
- > a b = <a href="#"
- >N5</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >n5</a
- > :: a b</li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >N6</a
- > a b = <a href="#"
- >N6</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >n6</a
- > :: a b</li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >newtype</span
- > <a href="#"
- >N7</a
- > a b = <a href="#"
- >N7</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >n7</a
- > :: a b</li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >R</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >C1</a
- > { <ul class="subs"
+ >= <a href="#"
+ >A3</a
+ > a</li
><li
- ><a href="#"
- >p</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li
- ><a href="#"
- >q</a
- > :: <span class="keyword"
- >forall</span
- > a. a -&gt; a</li
- ><li
- ><a href="#"
- >r</a
- >, <a href="#"
- >s</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
- > }</li
+ >| <a href="#"
+ >B3</a
+ > b</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >T6</a
+ ><ul class="subs"
><li
- >| <a href="#"
- >C2</a
- > { <ul class="subs"
+ >= <a href="#"
+ >A4</a
+ ></li
><li
- ><a href="#"
- >t</a
- > :: T1 -&gt; <a href="#"
- >T2</a
- > <a href="#"
- >Int</a
- > <a href="#"
- >Int</a
- > -&gt; <a href="#"
- >T3</a
- > <a href="#"
- >Bool</a
- > <a href="#"
- >Bool</a
- > -&gt; <a href="#"
- >T4</a
- > <a href="#"
- >Float</a
- > <a href="#"
- >Float</a
- > -&gt; <a href="#"
- >T5</a
- > () ()</li
- ><li
- ><a href="#"
- >u</a
- >, <a href="#"
- >v</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
- > }</li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >R1</a
- > = <a href="#"
- >C3</a
- > {<ul class="subs"
- ><li
- ><a href="#"
- >s1</a
- > :: <a href="#"
- >Int</a
- ></li
+ >| <a href="#"
+ >B4</a
+ ></li
+ ><li
+ >| <a href="#"
+ >C4</a
+ ></li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >N1</a
+ > a = <a href="#"
+ >N1</a
+ > a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >N2</a
+ > a b = <a href="#"
+ >N2</a
+ > {<ul class="subs"
><li
- ><a href="#"
- >s2</a
- > :: <a href="#"
- >Int</a
- ></li
+ ><a href="#"
+ >n</a
+ > :: a b</li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >N3</a
+ > a b = <a href="#"
+ >N3</a
+ > {<ul class="subs"
><li
- ><a href="#"
- >s3</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
- >}</li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >D</a
- > a =&gt; <a href="#"
- >C</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >D</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >E</a
- > a</li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >F</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
- ></ul
- ></li
- ><li class="src short"
- ><a href="#"
- >a</a
- > :: <a href="#"
- >C</a
- > a =&gt; <a href="#"
- >IO</a
- > a</li
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: <a href="#"
- >C</a
- > a =&gt; a -&gt; <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >g</a
- > :: <a href="#"
- >Int</a
- > -&gt; <a href="#"
- >IO</a
- > CInt</li
- ><li class="src short"
- ><a href="#"
- >hidden</a
- > :: <a href="#"
- >Int</a
- > -&gt; <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- >module <a href="#"
- >Visible</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Ex</a
- > a<ul class="subs"
- ><li
- >= <a href="#"
- >C</a
- > b =&gt; <a href="#"
- >Ex1</a
- > b</li
+ ><a href="#"
+ >n3</a
+ > :: a b</li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >N4</a
+ > a b</li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >N5</a
+ > a b = <a href="#"
+ >N5</a
+ > {<ul class="subs"
><li
- >| <a href="#"
- >Ex2</a
- > b</li
+ ><a href="#"
+ >n5</a
+ > :: a b</li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >N6</a
+ > a b = <a href="#"
+ >N6</a
+ > {<ul class="subs"
><li
- >| <a href="#"
- >C</a
- > a =&gt; <a href="#"
- >Ex3</a
- > b</li
+ ><a href="#"
+ >n6</a
+ > :: a b</li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >newtype</span
+ > <a href="#"
+ >N7</a
+ > a b = <a href="#"
+ >N7</a
+ > {<ul class="subs"
><li
- >| <a href="#"
- >Ex4</a
- > (<span class="keyword"
- >forall</span
- > a. a -&gt; a)</li
+ ><a href="#"
+ >n7</a
+ > :: a b</li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >R</a
+ ><ul class="subs"
+ ><li
+ >= <a href="#"
+ >C1</a
+ > { <ul class="subs"
+ ><li
+ ><a href="#"
+ >p</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li
+ ><a href="#"
+ >q</a
+ > :: <span class="keyword"
+ >forall</span
+ > a. a -&gt; a</li
+ ><li
+ ><a href="#"
+ >r</a
+ >, <a href="#"
+ >s</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ > }</li
+ ><li
+ >| <a href="#"
+ >C2</a
+ > { <ul class="subs"
+ ><li
+ ><a href="#"
+ >t</a
+ > :: T1 -&gt; <a href="#"
+ >T2</a
+ > <a href="#"
+ >Int</a
+ > <a href="#"
+ >Int</a
+ > -&gt; <a href="#"
+ >T3</a
+ > <a href="#"
+ >Bool</a
+ > <a href="#"
+ >Bool</a
+ > -&gt; <a href="#"
+ >T4</a
+ > <a href="#"
+ >Float</a
+ > <a href="#"
+ >Float</a
+ > -&gt; <a href="#"
+ >T5</a
+ > () ()</li
+ ><li
+ ><a href="#"
+ >u</a
+ >, <a href="#"
+ >v</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ > }</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >R1</a
+ > = <a href="#"
+ >C3</a
+ > {<ul class="subs"
+ ><li
+ ><a href="#"
+ >s1</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li
+ ><a href="#"
+ >s2</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li
+ ><a href="#"
+ >s3</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ >}</li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >D</a
+ > a =&gt; <a href="#"
+ >C</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
></ul
- ></li
- ><li class="src short"
- ><a href="#"
- >k</a
- > :: <a href="#"
- >T</a
- > () () -&gt; <a href="#"
- >T2</a
- > <a href="#"
- >Int</a
- > <a href="#"
- >Int</a
- > -&gt; (<a href="#"
- >T3</a
- > <a href="#"
- >Bool</a
- > <a href="#"
- >Bool</a
- > -&gt; <a href="#"
- >T4</a
- > <a href="#"
- >Float</a
- > <a href="#"
- >Float</a
- >) -&gt; <a href="#"
- >T5</a
- > () () -&gt; <a href="#"
- >IO</a
- > ()</li
- ><li class="src short"
- ><a href="#"
- >l</a
- > :: (<a href="#"
- >Int</a
- >, <a href="#"
- >Int</a
- >, <a href="#"
- >Float</a
- >) -&gt; <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >m</a
- > :: <a href="#"
- >R</a
- > -&gt; <a href="#"
- >N1</a
- > () -&gt; <a href="#"
- >IO</a
- > <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >o</a
- > :: <a href="#"
- >Float</a
- > -&gt; <a href="#"
- >IO</a
- > <a href="#"
- >Float</a
- ></li
- ><li class="src short"
- ><a href="#"
- >f'</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >withType</a
- > :: <a href="#"
- >Int</a
- ></li
- ><li class="src short"
- ><a href="#"
- >withoutType</a
- > :: a</li
- ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >D</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >E</a
+ > a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >F</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ></ul
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >a</a
+ > :: <a href="#"
+ >C</a
+ > a =&gt; <a href="#"
+ >IO</a
+ > a</li
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: <a href="#"
+ >C</a
+ > a =&gt; a -&gt; <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >g</a
+ > :: <a href="#"
+ >Int</a
+ > -&gt; <a href="#"
+ >IO</a
+ > CInt</li
+ ><li class="src short"
+ ><a href="#"
+ >hidden</a
+ > :: <a href="#"
+ >Int</a
+ > -&gt; <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ >module <a href="#"
+ >Visible</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Ex</a
+ > a<ul class="subs"
+ ><li
+ >= <a href="#"
+ >C</a
+ > b =&gt; <a href="#"
+ >Ex1</a
+ > b</li
+ ><li
+ >| <a href="#"
+ >Ex2</a
+ > b</li
+ ><li
+ >| <a href="#"
+ >C</a
+ > a =&gt; <a href="#"
+ >Ex3</a
+ > b</li
+ ><li
+ >| <a href="#"
+ >Ex4</a
+ > (<span class="keyword"
+ >forall</span
+ > a. a -&gt; a)</li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >k</a
+ > :: <a href="#"
+ >T</a
+ > () () -&gt; <a href="#"
+ >T2</a
+ > <a href="#"
+ >Int</a
+ > <a href="#"
+ >Int</a
+ > -&gt; (<a href="#"
+ >T3</a
+ > <a href="#"
+ >Bool</a
+ > <a href="#"
+ >Bool</a
+ > -&gt; <a href="#"
+ >T4</a
+ > <a href="#"
+ >Float</a
+ > <a href="#"
+ >Float</a
+ >) -&gt; <a href="#"
+ >T5</a
+ > () () -&gt; <a href="#"
+ >IO</a
+ > ()</li
+ ><li class="src short"
+ ><a href="#"
+ >l</a
+ > :: (<a href="#"
+ >Int</a
+ >, <a href="#"
+ >Int</a
+ >, <a href="#"
+ >Float</a
+ >) -&gt; <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >m</a
+ > :: <a href="#"
+ >R</a
+ > -&gt; <a href="#"
+ >N1</a
+ > () -&gt; <a href="#"
+ >IO</a
+ > <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >o</a
+ > :: <a href="#"
+ >Float</a
+ > -&gt; <a href="#"
+ >IO</a
+ > <a href="#"
+ >Float</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >f'</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >withType</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >withoutType</a
+ > :: a</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1 id="g:1"
@@ -1561,14 +1563,14 @@
></p
></div
><div class="subs instances"
- ><p id="control.i:D" class="caption collapser" onclick="toggleSection('i:D')"
- >Instances</p
- ><div id="section.i:D" class="show"
- ><table
+ ><details id="i:D" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:D:D:1" class="instance expander" onclick="toggleSection('i:ic:D:D:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:D:D:1"
></span
> <a href="#"
>D</a
@@ -1583,8 +1585,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:D:D:1" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:D:D:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1608,13 +1612,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:D:D:2" class="instance expander" onclick="toggleSection('i:ic:D:D:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:D:D:2"
></span
> <a href="#"
>D</a
@@ -1629,8 +1633,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:D:D:2" class="inst-details hide"
- ><div class="subs methods"
+ ><details id="i:ic:D:D:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
@@ -1654,11 +1660,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
diff --git a/html-test/ref/Threaded.html b/html-test/ref/Threaded.html
index 0d16ba9a..836a4db2 100644
--- a/html-test/ref/Threaded.html
+++ b/html-test/ref/Threaded.html
@@ -49,16 +49,18 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: <a href="#"
- >Integer</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: <a href="#"
+ >Integer</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Threaded_TH.html b/html-test/ref/Threaded_TH.html
index 553ea0e3..7f80b127 100644
--- a/html-test/ref/Threaded_TH.html
+++ b/html-test/ref/Threaded_TH.html
@@ -50,14 +50,16 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >forkTH</a
- > :: Q Exp</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >forkTH</a
+ > :: Q Exp</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Ticket112.html b/html-test/ref/Ticket112.html
index 25a4b22d..ccd39ff0 100644
--- a/html-test/ref/Ticket112.html
+++ b/html-test/ref/Ticket112.html
@@ -39,14 +39,16 @@
>Ticket112</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >f</a
- > :: a</li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: a</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/Ticket75.html b/html-test/ref/Ticket75.html
index e4def849..488913b1 100644
--- a/html-test/ref/Ticket75.html
+++ b/html-test/ref/Ticket75.html
@@ -39,24 +39,26 @@
>Ticket75</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > a <a href="#"
- >:-</a
- > b = <a href="#"
- >Q</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >f</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><span class="keyword"
+ >data</span
+ > a <a href="#"
+ >:-</a
+ > b = <a href="#"
+ >Q</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >f</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/TitledPicture.html b/html-test/ref/TitledPicture.html
index 3f3cb2e4..966c2a34 100644
--- a/html-test/ref/TitledPicture.html
+++ b/html-test/ref/TitledPicture.html
@@ -39,22 +39,24 @@
>TitledPicture</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >foo</a
- > :: <a href="#"
- >Integer</a
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><a href="#"
- >bar</a
- > :: <a href="#"
- >Integer</a
- ></li
- ></ul
+ ><a href="#"
+ >foo</a
+ > :: <a href="#"
+ >Integer</a
+ ></li
+ ><li class="src short"
+ ><a href="#"
+ >bar</a
+ > :: <a href="#"
+ >Integer</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
diff --git a/html-test/ref/TypeFamilies.html b/html-test/ref/TypeFamilies.html
index df2a57c2..dcb5a92a 100644
--- a/html-test/ref/TypeFamilies.html
+++ b/html-test/ref/TypeFamilies.html
@@ -47,118 +47,120 @@
></div
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >X</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >X</a
- ></li
- ><li
- >| <a href="#"
- >XX</a
- ></li
- ><li
- >| <a href="#"
- >XXX</a
- ></li
- ></ul
- ></li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Y</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >Z</a
- ><ul class="subs"
- ><li
- >= <a href="#"
- >ZA</a
- ></li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >X</a
+ ><ul class="subs"
><li
- >| <a href="#"
- >ZB</a
- ></li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >Test</a
- > a</li
- ><li class="src short"
- ><span class="keyword"
- >type family</span
- > <a href="#"
- >Foo</a
- > a :: k</li
- ><li class="src short"
- ><span class="keyword"
- >data family</span
- > <a href="#"
- >Bat</a
- > (a :: k) :: <a href="#"
- >*</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > <a href="#"
- >Assoc</a
- > a <span class="keyword"
- >where</span
- ><ul class="subs"
- ><li
- ><span class="keyword"
- >data</span
- > <a href="#"
- >AssocD</a
- > a :: <a href="#"
- >*</a
- ></li
+ >= <a href="#"
+ >X</a
+ ></li
+ ><li
+ >| <a href="#"
+ >XX</a
+ ></li
+ ><li
+ >| <a href="#"
+ >XXX</a
+ ></li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Y</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >Z</a
+ ><ul class="subs"
><li
- ><span class="keyword"
- >type</span
- > <a href="#"
- >AssocT</a
- > a :: <a href="#"
- >*</a
- ></li
- ></ul
- ></li
- ><li class="src short"
- ><span class="keyword"
- >type family</span
- > <a href="#"
- >Bar</a
- > b <span class="keyword"
- >where ...</span
- ></li
- ><li class="src short"
- ><span class="keyword"
- >type family</span
- > (a :: k) <a href="#"
- >&lt;&gt;</a
- > (b :: k) :: k</li
- ><li class="src short"
- ><span class="keyword"
- >class</span
- > (a :: k) <a href="#"
- >&gt;&lt;</a
- > (b :: k)</li
- ></ul
+ >= <a href="#"
+ >ZA</a
+ ></li
+ ><li
+ >| <a href="#"
+ >ZB</a
+ ></li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >Test</a
+ > a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >type family</span
+ > <a href="#"
+ >Foo</a
+ > a :: k</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data family</span
+ > <a href="#"
+ >Bat</a
+ > (a :: k) :: <a href="#"
+ >*</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > <a href="#"
+ >Assoc</a
+ > a <span class="keyword"
+ >where</span
+ ><ul class="subs"
+ ><li
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >AssocD</a
+ > a :: <a href="#"
+ >*</a
+ ></li
+ ><li
+ ><span class="keyword"
+ >type</span
+ > <a href="#"
+ >AssocT</a
+ > a :: <a href="#"
+ >*</a
+ ></li
+ ></ul
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >type family</span
+ > <a href="#"
+ >Bar</a
+ > b <span class="keyword"
+ >where ...</span
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >type family</span
+ > (a :: k) <a href="#"
+ >&lt;&gt;</a
+ > (b :: k) :: k</li
+ ><li class="src short"
+ ><span class="keyword"
+ >class</span
+ > (a :: k) <a href="#"
+ >&gt;&lt;</a
+ > (b :: k)</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -213,14 +215,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:X" class="caption collapser" onclick="toggleSection('i:X')"
- >Instances</p
- ><div id="section.i:X" class="show"
- ><table
+ ><details id="i:X" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:-62--60-:1" class="instance expander" onclick="toggleSection('i:id:X:-62--60-:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:-62--60-:1"
></span
> <a href="#"
>(&gt;&lt;)</a
@@ -239,14 +241,16 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:-62--60-:1" class="inst-details hide"
- ></div
+ ><details id="i:id:X:-62--60-:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:Assoc:2" class="instance expander" onclick="toggleSection('i:id:X:Assoc:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:Assoc:2"
></span
> <a href="#"
>Assoc</a
@@ -265,8 +269,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:Assoc:2" class="inst-details hide"
- ><div class="subs associated-types"
+ ><details id="i:id:X:Assoc:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs associated-types"
><p class="caption"
>Associated Types</p
><p class="src"
@@ -298,13 +304,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:Test:3" class="instance expander" onclick="toggleSection('i:id:X:Test:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:Test:3"
></span
> <a href="#"
>Test</a
@@ -323,14 +329,16 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:Test:3" class="inst-details hide"
- ></div
+ ><details id="i:id:X:Test:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:Foo:4" class="instance expander" onclick="toggleSection('i:id:X:Foo:4')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:Foo:4"
></span
> <span class="keyword"
>type</span
@@ -347,8 +355,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:Foo:4" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:Foo:4"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -358,13 +368,13 @@
> = <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:-60--62-:5" class="instance expander" onclick="toggleSection('i:id:X:-60--62-:5')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:-60--62-:5"
></span
> <span class="keyword"
>type</span
@@ -385,8 +395,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:-60--62-:5" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:-60--62-:5"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -400,13 +412,13 @@
> = <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:AssocD:6" class="instance expander" onclick="toggleSection('i:id:X:AssocD:6')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:AssocD:6"
></span
> <span class="keyword"
>data</span
@@ -425,8 +437,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:AssocD:6" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:AssocD:6"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -438,13 +452,13 @@
> = <a id="v:AssocX" class="def"
>AssocX</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:AssocT:7" class="instance expander" onclick="toggleSection('i:id:X:AssocT:7')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:AssocT:7"
></span
> <span class="keyword"
>type</span
@@ -463,8 +477,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:AssocT:7" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:AssocT:7"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -480,13 +496,13 @@
> <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:Bat:8" class="instance expander" onclick="toggleSection('i:id:X:Bat:8')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:Bat:8"
></span
> <span class="keyword"
>data</span
@@ -507,8 +523,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:Bat:8" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:Bat:8"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -544,13 +562,13 @@
> }</li
></ul
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:Foo:9" class="instance expander" onclick="toggleSection('i:id:X:Foo:9')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:Foo:9"
></span
> <span class="keyword"
>type</span
@@ -569,8 +587,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:Foo:9" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:Foo:9"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -582,13 +602,13 @@
> = <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:X:-60--62-:10" class="instance expander" onclick="toggleSection('i:id:X:-60--62-:10')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:X:-60--62-:10"
></span
> <span class="keyword"
>type</span
@@ -607,8 +627,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:X:-60--62-:10" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:X:-60--62-:10"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -620,11 +642,11 @@
> a = <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -641,14 +663,14 @@
>Doc for: data Y</p
></div
><div class="subs instances"
- ><p id="control.i:Y" class="caption collapser" onclick="toggleSection('i:Y')"
- >Instances</p
- ><div id="section.i:Y" class="show"
- ><table
+ ><details id="i:Y" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:Assoc:1" class="instance expander" onclick="toggleSection('i:id:Y:Assoc:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:Assoc:1"
></span
> <a href="#"
>Assoc</a
@@ -667,8 +689,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:Assoc:1" class="inst-details hide"
- ><div class="subs associated-types"
+ ><details id="i:id:Y:Assoc:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs associated-types"
><p class="caption"
>Associated Types</p
><p class="src"
@@ -700,13 +724,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:Test:2" class="instance expander" onclick="toggleSection('i:id:Y:Test:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:Test:2"
></span
> <a href="#"
>Test</a
@@ -725,14 +749,16 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:Test:2" class="inst-details hide"
- ></div
+ ><details id="i:id:Y:Test:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:Bar:3" class="instance expander" onclick="toggleSection('i:id:Y:Bar:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:Bar:3"
></span
> <span class="keyword"
>data</span
@@ -749,8 +775,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:Bar:3" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Y:Bar:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -758,13 +786,13 @@
> <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:AssocD:4" class="instance expander" onclick="toggleSection('i:id:Y:AssocD:4')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:AssocD:4"
></span
> <span class="keyword"
>data</span
@@ -783,8 +811,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:AssocD:4" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Y:AssocD:4"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -796,13 +826,13 @@
> = <a id="v:AssocY" class="def"
>AssocY</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:AssocT:5" class="instance expander" onclick="toggleSection('i:id:Y:AssocT:5')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:AssocT:5"
></span
> <span class="keyword"
>type</span
@@ -821,8 +851,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:AssocT:5" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Y:AssocT:5"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -838,13 +870,13 @@
> <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:Bat:6" class="instance expander" onclick="toggleSection('i:id:Y:Bat:6')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:Bat:6"
></span
> <span class="keyword"
>data</span
@@ -865,8 +897,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:Bat:6" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Y:Bat:6"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -880,13 +914,13 @@
> <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:Foo:7" class="instance expander" onclick="toggleSection('i:id:Y:Foo:7')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:Foo:7"
></span
> <span class="keyword"
>type</span
@@ -905,8 +939,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:Foo:7" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Y:Foo:7"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -918,13 +954,13 @@
> = <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Y:-60--62-:8" class="instance expander" onclick="toggleSection('i:id:Y:-60--62-:8')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Y:-60--62-:8"
></span
> <span class="keyword"
>type</span
@@ -943,8 +979,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Y:-60--62-:8" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Y:-60--62-:8"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -954,11 +992,11 @@
> <a href="#"
>Y</a
> a = a</div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -997,14 +1035,14 @@
></table
></div
><div class="subs instances"
- ><p id="control.i:Z" class="caption collapser" onclick="toggleSection('i:Z')"
- >Instances</p
- ><div id="section.i:Z" class="show"
- ><table
+ ><details id="i:Z" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:Z:Bat:1" class="instance expander" onclick="toggleSection('i:id:Z:Bat:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:Z:Bat:1"
></span
> <span class="keyword"
>data</span
@@ -1023,8 +1061,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:Z:Bat:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:Z:Bat:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -1056,11 +1096,11 @@
></li
></ul
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1077,14 +1117,14 @@
>Doc for: class Test a</p
></div
><div class="subs instances"
- ><p id="control.i:Test" class="caption collapser" onclick="toggleSection('i:Test')"
- >Instances</p
- ><div id="section.i:Test" class="show"
- ><table
+ ><details id="i:Test" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Test:Test:1" class="instance expander" onclick="toggleSection('i:ic:Test:Test:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Test:Test:1"
></span
> <a href="#"
>Test</a
@@ -1103,14 +1143,16 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Test:Test:1" class="inst-details hide"
- ></div
+ ><details id="i:ic:Test:Test:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Test:Test:2" class="instance expander" onclick="toggleSection('i:ic:Test:Test:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Test:Test:2"
></span
> <a href="#"
>Test</a
@@ -1129,12 +1171,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Test:Test:2" class="inst-details hide"
- ></div
+ ><details id="i:ic:Test:Test:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1151,14 +1195,14 @@
>Doc for: type family Foo a</p
></div
><div class="subs instances"
- ><p id="control.i:Foo" class="caption collapser" onclick="toggleSection('i:Foo')"
- >Instances</p
- ><div id="section.i:Foo" class="show"
- ><table
+ ><details id="i:Foo" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Foo:Foo:1" class="instance expander" onclick="toggleSection('i:if:Foo:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Foo:Foo:1"
></span
> <span class="keyword"
>type</span
@@ -1177,8 +1221,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Foo:Foo:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Foo:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -1190,13 +1236,13 @@
> = <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Foo:Foo:2" class="instance expander" onclick="toggleSection('i:if:Foo:Foo:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Foo:Foo:2"
></span
> <span class="keyword"
>type</span
@@ -1215,8 +1261,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Foo:Foo:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Foo:Foo:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -1228,11 +1276,11 @@
> = <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1251,14 +1299,14 @@
>Doc for: data family Bat a</p
></div
><div class="subs instances"
- ><p id="control.i:Bat" class="caption collapser" onclick="toggleSection('i:Bat')"
- >Instances</p
- ><div id="section.i:Bat" class="show"
- ><table
+ ><details id="i:Bat" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Bat:Bat:1" class="instance expander" onclick="toggleSection('i:if:Bat:Bat:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Bat:Bat:1"
></span
> <span class="keyword"
>data</span
@@ -1277,8 +1325,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Bat:Bat:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Bat:Bat:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -1310,13 +1360,13 @@
></li
></ul
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Bat:Bat:2" class="instance expander" onclick="toggleSection('i:if:Bat:Bat:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Bat:Bat:2"
></span
> <span class="keyword"
>data</span
@@ -1337,8 +1387,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Bat:Bat:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Bat:Bat:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -1352,13 +1404,13 @@
> <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Bat:Bat:3" class="instance expander" onclick="toggleSection('i:if:Bat:Bat:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Bat:Bat:3"
></span
> <span class="keyword"
>data</span
@@ -1379,8 +1431,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Bat:Bat:3" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Bat:Bat:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -1416,11 +1470,11 @@
> }</li
></ul
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1469,14 +1523,14 @@
></div
></div
><div class="subs instances"
- ><p id="control.i:Assoc" class="caption collapser" onclick="toggleSection('i:Assoc')"
- >Instances</p
- ><div id="section.i:Assoc" class="show"
- ><table
+ ><details id="i:Assoc" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Assoc:Assoc:1" class="instance expander" onclick="toggleSection('i:ic:Assoc:Assoc:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Assoc:Assoc:1"
></span
> <a href="#"
>Assoc</a
@@ -1495,8 +1549,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Assoc:Assoc:1" class="inst-details hide"
- ><div class="subs associated-types"
+ ><details id="i:ic:Assoc:Assoc:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs associated-types"
><p class="caption"
>Associated Types</p
><p class="src"
@@ -1528,13 +1584,13 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:Assoc:Assoc:2" class="instance expander" onclick="toggleSection('i:ic:Assoc:Assoc:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:Assoc:Assoc:2"
></span
> <a href="#"
>Assoc</a
@@ -1553,8 +1609,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:Assoc:Assoc:2" class="inst-details hide"
- ><div class="subs associated-types"
+ ><details id="i:ic:Assoc:Assoc:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="subs associated-types"
><p class="caption"
>Associated Types</p
><p class="src"
@@ -1586,11 +1644,11 @@
>#</a
></p
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1647,14 +1705,14 @@
>#</a
></p
><div class="subs instances"
- ><p id="control.i:-60--62-" class="caption collapser" onclick="toggleSection('i:-60--62-')"
- >Instances</p
- ><div id="section.i:-60--62-" class="show"
- ><table
+ ><details id="i:-60--62-" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:-60--62-:-60--62-:1" class="instance expander" onclick="toggleSection('i:if:-60--62-:-60--62-:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:-60--62-:-60--62-:1"
></span
> <span class="keyword"
>type</span
@@ -1675,8 +1733,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:-60--62-:-60--62-:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:-60--62-:-60--62-:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -1690,13 +1750,13 @@
> = <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:-60--62-:-60--62-:2" class="instance expander" onclick="toggleSection('i:if:-60--62-:-60--62-:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:-60--62-:-60--62-:2"
></span
> <span class="keyword"
>type</span
@@ -1715,8 +1775,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:-60--62-:-60--62-:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:-60--62-:-60--62-:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -1726,13 +1788,13 @@
> <a href="#"
>Y</a
> a = a</div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:-60--62-:-60--62-:3" class="instance expander" onclick="toggleSection('i:if:-60--62-:-60--62-:3')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:-60--62-:-60--62-:3"
></span
> <span class="keyword"
>type</span
@@ -1751,8 +1813,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:-60--62-:-60--62-:3" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:-60--62-:-60--62-:3"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -1764,11 +1828,11 @@
> a = <a href="#"
>X</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -1781,14 +1845,14 @@
>#</a
></p
><div class="subs instances"
- ><p id="control.i:-62--60-" class="caption collapser" onclick="toggleSection('i:-62--60-')"
- >Instances</p
- ><div id="section.i:-62--60-" class="show"
- ><table
+ ><details id="i:-62--60-" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:ic:-62--60-:-62--60-:1" class="instance expander" onclick="toggleSection('i:ic:-62--60-:-62--60-:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:-62--60-:-62--60-:1"
></span
> <a href="#"
>(&gt;&lt;)</a
@@ -1807,12 +1871,14 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:ic:-62--60-:-62--60-:1" class="inst-details hide"
- ></div
+ ><details id="i:ic:-62--60-:-62--60-:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/TypeFamilies2.html b/html-test/ref/TypeFamilies2.html
index c976d9b6..84e7df36 100644
--- a/html-test/ref/TypeFamilies2.html
+++ b/html-test/ref/TypeFamilies2.html
@@ -39,28 +39,30 @@
>TypeFamilies2</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><span class="keyword"
- >data</span
- > <a href="#"
- >W</a
- ></li
- ><li class="src short"
- ><span class="keyword"
- >type family</span
- > <a href="#"
- >Foo</a
- > a</li
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
><li class="src short"
- ><span class="keyword"
- >data family</span
- > <a href="#"
- >Bar</a
- > a</li
- ></ul
+ ><span class="keyword"
+ >data</span
+ > <a href="#"
+ >W</a
+ ></li
+ ><li class="src short"
+ ><span class="keyword"
+ >type family</span
+ > <a href="#"
+ >Foo</a
+ > a</li
+ ><li class="src short"
+ ><span class="keyword"
+ >data family</span
+ > <a href="#"
+ >Bar</a
+ > a</li
+ ></ul
+ ></details
></div
><div id="interface"
><h1
@@ -79,14 +81,14 @@
>Exported type</p
></div
><div class="subs instances"
- ><p id="control.i:W" class="caption collapser" onclick="toggleSection('i:W')"
- >Instances</p
- ><div id="section.i:W" class="show"
- ><table
+ ><details id="i:W" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:W:Bar:1" class="instance expander" onclick="toggleSection('i:id:W:Bar:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:W:Bar:1"
></span
> <span class="keyword"
>data</span
@@ -105,8 +107,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:W:Bar:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:W:Bar:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -116,13 +120,13 @@
> = <a id="v:BarX" class="def"
>BarX</a
> Z</div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:id:W:Foo:2" class="instance expander" onclick="toggleSection('i:id:W:Foo:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:id:W:Foo:2"
></span
> <span class="keyword"
>type</span
@@ -139,8 +143,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:id:W:Foo:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:id:W:Foo:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -148,11 +154,11 @@
> <a href="#"
>W</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -169,14 +175,14 @@
>Exported type family</p
></div
><div class="subs instances"
- ><p id="control.i:Foo" class="caption collapser" onclick="toggleSection('i:Foo')"
- >Instances</p
- ><div id="section.i:Foo" class="show"
- ><table
+ ><details id="i:Foo" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Foo:Foo:1" class="instance expander" onclick="toggleSection('i:if:Foo:Foo:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Foo:Foo:1"
></span
> <span class="keyword"
>type</span
@@ -193,8 +199,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Foo:Foo:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Foo:Foo:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -202,13 +210,13 @@
> <a href="#"
>W</a
></div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Foo:Foo:2" class="instance expander" onclick="toggleSection('i:if:Foo:Foo:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Foo:Foo:2"
></span
> <span class="keyword"
>type</span
@@ -225,8 +233,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Foo:Foo:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Foo:Foo:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>type</span
> <a href="#"
@@ -236,11 +246,11 @@
> = <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
><div class="top"
@@ -257,14 +267,14 @@
>Exported data family</p
></div
><div class="subs instances"
- ><p id="control.i:Bar" class="caption collapser" onclick="toggleSection('i:Bar')"
- >Instances</p
- ><div id="section.i:Bar" class="show"
- ><table
+ ><details id="i:Bar" open="open"
+ ><summary
+ >Instances</summary
+ ><table
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Bar:Bar:1" class="instance expander" onclick="toggleSection('i:if:Bar:Bar:1')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Bar:Bar:1"
></span
> <span class="keyword"
>data</span
@@ -283,8 +293,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Bar:Bar:1" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Bar:Bar:1"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -294,13 +306,13 @@
> = <a id="v:BarX" class="def"
>BarX</a
> Z</div
- ></div
+ ></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
- ><span id="control.i:if:Bar:Bar:2" class="instance expander" onclick="toggleSection('i:if:Bar:Bar:2')"
+ ><span class="instance details-toggle-control details-toggle" data-details-id="i:if:Bar:Bar:2"
></span
> <span class="keyword"
>data</span
@@ -317,8 +329,10 @@
></tr
><tr
><td colspan="2"
- ><div id="section.i:if:Bar:Bar:2" class="inst-details hide"
- ><div class="src"
+ ><details id="i:if:Bar:Bar:2"
+ ><summary class="hide-when-js-enabled"
+ >Instance details</summary
+ ><div class="src"
><span class="keyword"
>data</span
> <a href="#"
@@ -326,11 +340,11 @@
> <a href="#"
>Y</a
></div
- ></div
+ ></details
></td
></tr
></table
- ></div
+ ></details
></div
></div
></div
diff --git a/html-test/ref/Unicode.html b/html-test/ref/Unicode.html
index fb04b942..0f2a30d4 100644
--- a/html-test/ref/Unicode.html
+++ b/html-test/ref/Unicode.html
@@ -39,16 +39,18 @@
>Unicode</p
></div
><div id="synopsis"
- ><p id="control.syn" class="caption expander" onclick="toggleSection('syn')"
- >Synopsis</p
- ><ul id="section.syn" class="hide" onclick="toggleSection('syn')"
- ><li class="src short"
- ><a href="#"
- >x</a
- > :: <a href="#"
- >Int</a
- ></li
- ></ul
+ ><details id="syn"
+ ><summary
+ >Synopsis</summary
+ ><ul class="details-toggle" data-details-id="syn"
+ ><li class="src short"
+ ><a href="#"
+ >x</a
+ > :: <a href="#"
+ >Int</a
+ ></li
+ ></ul
+ ></details
></div
><div id="interface"
><h1