ovto 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile.lock +15 -16
  4. data/Rakefile +2 -9
  5. data/book/SUMMARY.md +15 -11
  6. data/book/book.toml +10 -0
  7. data/docs/.nojekyll +1 -0
  8. data/docs/404.html +189 -0
  9. data/docs/FontAwesome/css/font-awesome.css +4 -0
  10. data/docs/FontAwesome/fonts/FontAwesome.ttf +0 -0
  11. data/docs/FontAwesome/fonts/fontawesome-webfont.eot +0 -0
  12. data/docs/FontAwesome/fonts/fontawesome-webfont.svg +2671 -0
  13. data/docs/{gitbook/fonts/fontawesome → FontAwesome/fonts}/fontawesome-webfont.ttf +0 -0
  14. data/docs/FontAwesome/fonts/fontawesome-webfont.woff +0 -0
  15. data/docs/FontAwesome/fonts/fontawesome-webfont.woff2 +0 -0
  16. data/docs/api/Array.html +4 -4
  17. data/docs/api/Hash.html +4 -4
  18. data/docs/api/MightyInspect.html +238 -0
  19. data/docs/api/Ovto/Actions.html +4 -4
  20. data/docs/api/Ovto/App.html +4 -4
  21. data/docs/api/Ovto/Component/MoreThanOneNode.html +5 -5
  22. data/docs/api/Ovto/Component.html +4 -4
  23. data/docs/api/Ovto/Middleware/Actions.html +4 -4
  24. data/docs/api/Ovto/Middleware/Base.html +5 -5
  25. data/docs/api/Ovto/Middleware/Component.html +5 -5
  26. data/docs/api/Ovto/Middleware.html +8 -8
  27. data/docs/api/Ovto/PureComponent/StateIsNotAvailable.html +4 -4
  28. data/docs/api/Ovto/PureComponent.html +4 -4
  29. data/docs/api/Ovto/Runtime.html +4 -4
  30. data/docs/api/Ovto/State/MissingValue.html +4 -4
  31. data/docs/api/Ovto/State/UnknownStateKey.html +4 -4
  32. data/docs/api/Ovto/State.html +12 -12
  33. data/docs/api/Ovto/WiredActionSet.html +4 -4
  34. data/docs/api/Ovto/WiredActions.html +4 -4
  35. data/docs/api/Ovto.html +8 -8
  36. data/docs/api/_index.html +5 -5
  37. data/docs/api/actions.html +215 -426
  38. data/docs/api/app.html +226 -432
  39. data/docs/api/component.html +268 -480
  40. data/docs/api/fetch.html +188 -393
  41. data/docs/api/file.README.html +4 -4
  42. data/docs/api/frames.html +1 -1
  43. data/docs/api/index.html +4 -4
  44. data/docs/api/middleware.html +249 -460
  45. data/docs/api/pure_component.html +186 -398
  46. data/docs/api/state.html +226 -438
  47. data/docs/api/top-level-namespace.html +4 -4
  48. data/docs/ayu-highlight.css +78 -0
  49. data/docs/book.js +688 -0
  50. data/docs/book.toml +10 -0
  51. data/docs/clipboard.min.js +7 -0
  52. data/docs/css/chrome.css +545 -0
  53. data/docs/css/general.css +203 -0
  54. data/docs/css/print.css +54 -0
  55. data/docs/css/variables.css +255 -0
  56. data/docs/elasticlunr.min.js +10 -0
  57. data/docs/favicon.png +0 -0
  58. data/docs/favicon.svg +22 -0
  59. data/docs/fonts/OPEN-SANS-LICENSE.txt +202 -0
  60. data/docs/fonts/SOURCE-CODE-PRO-LICENSE.txt +93 -0
  61. data/docs/fonts/fonts.css +100 -0
  62. data/docs/fonts/open-sans-v17-all-charsets-300.woff2 +0 -0
  63. data/docs/fonts/open-sans-v17-all-charsets-300italic.woff2 +0 -0
  64. data/docs/fonts/open-sans-v17-all-charsets-600.woff2 +0 -0
  65. data/docs/fonts/open-sans-v17-all-charsets-600italic.woff2 +0 -0
  66. data/docs/fonts/open-sans-v17-all-charsets-700.woff2 +0 -0
  67. data/docs/fonts/open-sans-v17-all-charsets-700italic.woff2 +0 -0
  68. data/docs/fonts/open-sans-v17-all-charsets-800.woff2 +0 -0
  69. data/docs/fonts/open-sans-v17-all-charsets-800italic.woff2 +0 -0
  70. data/docs/fonts/open-sans-v17-all-charsets-italic.woff2 +0 -0
  71. data/docs/fonts/open-sans-v17-all-charsets-regular.woff2 +0 -0
  72. data/docs/fonts/source-code-pro-v11-all-charsets-500.woff2 +0 -0
  73. data/docs/guides/debugging.html +184 -390
  74. data/docs/guides/development.html +171 -383
  75. data/docs/guides/install.html +206 -409
  76. data/docs/guides/tutorial.html +309 -525
  77. data/docs/highlight.css +82 -0
  78. data/docs/highlight.js +6 -0
  79. data/docs/index.html +390 -391
  80. data/docs/mark.min.js +7 -0
  81. data/docs/print.html +958 -0
  82. data/docs/searcher.js +483 -0
  83. data/docs/searchindex.js +1 -0
  84. data/docs/searchindex.json +1 -0
  85. data/docs/tomorrow-night.css +102 -0
  86. data/examples/sinatra/Gemfile.lock +25 -25
  87. data/examples/static/Gemfile.lock +8 -8
  88. data/lib/ovto/component.rb +2 -3
  89. data/lib/ovto/version.rb +1 -1
  90. metadata +47 -26
  91. data/docs/gitbook/fonts/fontawesome/FontAwesome.otf +0 -0
  92. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  93. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg +0 -685
  94. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  95. data/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 +0 -0
  96. data/docs/gitbook/gitbook-plugin-fontsettings/fontsettings.js +0 -240
  97. data/docs/gitbook/gitbook-plugin-fontsettings/website.css +0 -291
  98. data/docs/gitbook/gitbook-plugin-highlight/ebook.css +0 -135
  99. data/docs/gitbook/gitbook-plugin-highlight/website.css +0 -434
  100. data/docs/gitbook/gitbook-plugin-lunr/lunr.min.js +0 -7
  101. data/docs/gitbook/gitbook-plugin-lunr/search-lunr.js +0 -59
  102. data/docs/gitbook/gitbook-plugin-search/lunr.min.js +0 -7
  103. data/docs/gitbook/gitbook-plugin-search/search-engine.js +0 -50
  104. data/docs/gitbook/gitbook-plugin-search/search.css +0 -35
  105. data/docs/gitbook/gitbook-plugin-search/search.js +0 -213
  106. data/docs/gitbook/gitbook-plugin-sharing/buttons.js +0 -90
  107. data/docs/gitbook/gitbook.js +0 -4
  108. data/docs/gitbook/images/apple-touch-icon-precomposed-152.png +0 -0
  109. data/docs/gitbook/images/favicon.ico +0 -0
  110. data/docs/gitbook/style.css +0 -9
  111. data/docs/gitbook/theme.js +0 -4
  112. data/docs/search_index.json +0 -1
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * clipboard.js v2.0.4
3
+ * https://zenorocha.github.io/clipboard.js
4
+ *
5
+ * Licensed MIT © Zeno Rocha
6
+ */
7
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(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(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=o(n(1)),c=o(n(3)),u=o(n(4));function o(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function o(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.resolveOptions(e),n.listenClick(t),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,c.default),i(o,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,u.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return s("action",t)}},{key:"defaultTarget",value:function(t){var e=s("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return s("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),o}();function s(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=l},function(t,e,n){"use strict";var o,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(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(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=n(2),c=(o=a)&&o.__esModule?o:{default:o};var u=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.resolveOptions(t),this.initSelection()}return i(e,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,c.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,c.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),e}();t.exports=u},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var d=n(5),h=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!d.string(e))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(t))return s=e,f=n,(l=t).addEventListener(s,f),{destroy:function(){l.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,u=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,u)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,u)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,a,c,u,l,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(7);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])});
@@ -0,0 +1,545 @@
1
+ /* CSS for UI elements (a.k.a. chrome) */
2
+
3
+ @import 'variables.css';
4
+
5
+ html {
6
+ scrollbar-color: var(--scrollbar) var(--bg);
7
+ }
8
+ #searchresults a,
9
+ .content a:link,
10
+ a:visited,
11
+ a > .hljs {
12
+ color: var(--links);
13
+ }
14
+
15
+ /*
16
+ body-container is necessary because mobile browsers don't seem to like
17
+ overflow-x on the body tag when there is a <meta name="viewport"> tag.
18
+ */
19
+ #body-container {
20
+ /*
21
+ This is used when the sidebar pushes the body content off the side of
22
+ the screen on small screens. Without it, dragging on mobile Safari
23
+ will want to reposition the viewport in a weird way.
24
+ */
25
+ overflow-x: clip;
26
+ }
27
+
28
+ /* Menu Bar */
29
+
30
+ #menu-bar,
31
+ #menu-bar-hover-placeholder {
32
+ z-index: 101;
33
+ margin: auto calc(0px - var(--page-padding));
34
+ }
35
+ #menu-bar {
36
+ position: relative;
37
+ display: flex;
38
+ flex-wrap: wrap;
39
+ background-color: var(--bg);
40
+ border-bottom-color: var(--bg);
41
+ border-bottom-width: 1px;
42
+ border-bottom-style: solid;
43
+ }
44
+ #menu-bar.sticky,
45
+ .js #menu-bar-hover-placeholder:hover + #menu-bar,
46
+ .js #menu-bar:hover,
47
+ .js.sidebar-visible #menu-bar {
48
+ position: -webkit-sticky;
49
+ position: sticky;
50
+ top: 0 !important;
51
+ }
52
+ #menu-bar-hover-placeholder {
53
+ position: sticky;
54
+ position: -webkit-sticky;
55
+ top: 0;
56
+ height: var(--menu-bar-height);
57
+ }
58
+ #menu-bar.bordered {
59
+ border-bottom-color: var(--table-border-color);
60
+ }
61
+ #menu-bar i, #menu-bar .icon-button {
62
+ position: relative;
63
+ padding: 0 8px;
64
+ z-index: 10;
65
+ line-height: var(--menu-bar-height);
66
+ cursor: pointer;
67
+ transition: color 0.5s;
68
+ }
69
+ @media only screen and (max-width: 420px) {
70
+ #menu-bar i, #menu-bar .icon-button {
71
+ padding: 0 5px;
72
+ }
73
+ }
74
+
75
+ .icon-button {
76
+ border: none;
77
+ background: none;
78
+ padding: 0;
79
+ color: inherit;
80
+ }
81
+ .icon-button i {
82
+ margin: 0;
83
+ }
84
+
85
+ .right-buttons {
86
+ margin: 0 15px;
87
+ }
88
+ .right-buttons a {
89
+ text-decoration: none;
90
+ }
91
+
92
+ .left-buttons {
93
+ display: flex;
94
+ margin: 0 5px;
95
+ }
96
+ .no-js .left-buttons {
97
+ display: none;
98
+ }
99
+
100
+ .menu-title {
101
+ display: inline-block;
102
+ font-weight: 200;
103
+ font-size: 2.4rem;
104
+ line-height: var(--menu-bar-height);
105
+ text-align: center;
106
+ margin: 0;
107
+ flex: 1;
108
+ white-space: nowrap;
109
+ overflow: hidden;
110
+ text-overflow: ellipsis;
111
+ }
112
+ .js .menu-title {
113
+ cursor: pointer;
114
+ }
115
+
116
+ .menu-bar,
117
+ .menu-bar:visited,
118
+ .nav-chapters,
119
+ .nav-chapters:visited,
120
+ .mobile-nav-chapters,
121
+ .mobile-nav-chapters:visited,
122
+ .menu-bar .icon-button,
123
+ .menu-bar a i {
124
+ color: var(--icons);
125
+ }
126
+
127
+ .menu-bar i:hover,
128
+ .menu-bar .icon-button:hover,
129
+ .nav-chapters:hover,
130
+ .mobile-nav-chapters i:hover {
131
+ color: var(--icons-hover);
132
+ }
133
+
134
+ /* Nav Icons */
135
+
136
+ .nav-chapters {
137
+ font-size: 2.5em;
138
+ text-align: center;
139
+ text-decoration: none;
140
+
141
+ position: fixed;
142
+ top: 0;
143
+ bottom: 0;
144
+ margin: 0;
145
+ max-width: 150px;
146
+ min-width: 90px;
147
+
148
+ display: flex;
149
+ justify-content: center;
150
+ align-content: center;
151
+ flex-direction: column;
152
+
153
+ transition: color 0.5s, background-color 0.5s;
154
+ }
155
+
156
+ .nav-chapters:hover {
157
+ text-decoration: none;
158
+ background-color: var(--theme-hover);
159
+ transition: background-color 0.15s, color 0.15s;
160
+ }
161
+
162
+ .nav-wrapper {
163
+ margin-top: 50px;
164
+ display: none;
165
+ }
166
+
167
+ .mobile-nav-chapters {
168
+ font-size: 2.5em;
169
+ text-align: center;
170
+ text-decoration: none;
171
+ width: 90px;
172
+ border-radius: 5px;
173
+ background-color: var(--sidebar-bg);
174
+ }
175
+
176
+ .previous {
177
+ float: left;
178
+ }
179
+
180
+ .next {
181
+ float: right;
182
+ right: var(--page-padding);
183
+ }
184
+
185
+ @media only screen and (max-width: 1080px) {
186
+ .nav-wide-wrapper { display: none; }
187
+ .nav-wrapper { display: block; }
188
+ }
189
+
190
+ @media only screen and (max-width: 1380px) {
191
+ .sidebar-visible .nav-wide-wrapper { display: none; }
192
+ .sidebar-visible .nav-wrapper { display: block; }
193
+ }
194
+
195
+ /* Inline code */
196
+
197
+ :not(pre) > .hljs {
198
+ display: inline;
199
+ padding: 0.1em 0.3em;
200
+ border-radius: 3px;
201
+ }
202
+
203
+ :not(pre):not(a) > .hljs {
204
+ color: var(--inline-code-color);
205
+ overflow-x: initial;
206
+ }
207
+
208
+ a:hover > .hljs {
209
+ text-decoration: underline;
210
+ }
211
+
212
+ pre {
213
+ position: relative;
214
+ }
215
+ pre > .buttons {
216
+ position: absolute;
217
+ z-index: 100;
218
+ right: 0px;
219
+ top: 2px;
220
+ margin: 0px;
221
+ padding: 2px 0px;
222
+
223
+ color: var(--sidebar-fg);
224
+ cursor: pointer;
225
+ visibility: hidden;
226
+ opacity: 0;
227
+ transition: visibility 0.1s linear, opacity 0.1s linear;
228
+ }
229
+ pre:hover > .buttons {
230
+ visibility: visible;
231
+ opacity: 1
232
+ }
233
+ pre > .buttons :hover {
234
+ color: var(--sidebar-active);
235
+ border-color: var(--icons-hover);
236
+ background-color: var(--theme-hover);
237
+ }
238
+ pre > .buttons i {
239
+ margin-left: 8px;
240
+ }
241
+ pre > .buttons button {
242
+ cursor: inherit;
243
+ margin: 0px 5px;
244
+ padding: 3px 5px;
245
+ font-size: 14px;
246
+
247
+ border-style: solid;
248
+ border-width: 1px;
249
+ border-radius: 4px;
250
+ border-color: var(--icons);
251
+ background-color: var(--theme-popup-bg);
252
+ transition: 100ms;
253
+ transition-property: color,border-color,background-color;
254
+ color: var(--icons);
255
+ }
256
+ @media (pointer: coarse) {
257
+ pre > .buttons button {
258
+ /* On mobile, make it easier to tap buttons. */
259
+ padding: 0.3rem 1rem;
260
+ }
261
+ }
262
+ pre > code {
263
+ padding: 1rem;
264
+ }
265
+
266
+ /* FIXME: ACE editors overlap their buttons because ACE does absolute
267
+ positioning within the code block which breaks padding. The only solution I
268
+ can think of is to move the padding to the outer pre tag (or insert a div
269
+ wrapper), but that would require fixing a whole bunch of CSS rules.
270
+ */
271
+ .hljs.ace_editor {
272
+ padding: 0rem 0rem;
273
+ }
274
+
275
+ pre > .result {
276
+ margin-top: 10px;
277
+ }
278
+
279
+ /* Search */
280
+
281
+ #searchresults a {
282
+ text-decoration: none;
283
+ }
284
+
285
+ mark {
286
+ border-radius: 2px;
287
+ padding: 0 3px 1px 3px;
288
+ margin: 0 -3px -1px -3px;
289
+ background-color: var(--search-mark-bg);
290
+ transition: background-color 300ms linear;
291
+ cursor: pointer;
292
+ }
293
+
294
+ mark.fade-out {
295
+ background-color: rgba(0,0,0,0) !important;
296
+ cursor: auto;
297
+ }
298
+
299
+ .searchbar-outer {
300
+ margin-left: auto;
301
+ margin-right: auto;
302
+ max-width: var(--content-max-width);
303
+ }
304
+
305
+ #searchbar {
306
+ width: 100%;
307
+ margin: 5px auto 0px auto;
308
+ padding: 10px 16px;
309
+ transition: box-shadow 300ms ease-in-out;
310
+ border: 1px solid var(--searchbar-border-color);
311
+ border-radius: 3px;
312
+ background-color: var(--searchbar-bg);
313
+ color: var(--searchbar-fg);
314
+ }
315
+ #searchbar:focus,
316
+ #searchbar.active {
317
+ box-shadow: 0 0 3px var(--searchbar-shadow-color);
318
+ }
319
+
320
+ .searchresults-header {
321
+ font-weight: bold;
322
+ font-size: 1em;
323
+ padding: 18px 0 0 5px;
324
+ color: var(--searchresults-header-fg);
325
+ }
326
+
327
+ .searchresults-outer {
328
+ margin-left: auto;
329
+ margin-right: auto;
330
+ max-width: var(--content-max-width);
331
+ border-bottom: 1px dashed var(--searchresults-border-color);
332
+ }
333
+
334
+ ul#searchresults {
335
+ list-style: none;
336
+ padding-left: 20px;
337
+ }
338
+ ul#searchresults li {
339
+ margin: 10px 0px;
340
+ padding: 2px;
341
+ border-radius: 2px;
342
+ }
343
+ ul#searchresults li.focus {
344
+ background-color: var(--searchresults-li-bg);
345
+ }
346
+ ul#searchresults span.teaser {
347
+ display: block;
348
+ clear: both;
349
+ margin: 5px 0 0 20px;
350
+ font-size: 0.8em;
351
+ }
352
+ ul#searchresults span.teaser em {
353
+ font-weight: bold;
354
+ font-style: normal;
355
+ }
356
+
357
+ /* Sidebar */
358
+
359
+ .sidebar {
360
+ position: fixed;
361
+ left: 0;
362
+ top: 0;
363
+ bottom: 0;
364
+ width: var(--sidebar-width);
365
+ font-size: 0.875em;
366
+ box-sizing: border-box;
367
+ -webkit-overflow-scrolling: touch;
368
+ overscroll-behavior-y: contain;
369
+ background-color: var(--sidebar-bg);
370
+ color: var(--sidebar-fg);
371
+ }
372
+ .sidebar-resizing {
373
+ -moz-user-select: none;
374
+ -webkit-user-select: none;
375
+ -ms-user-select: none;
376
+ user-select: none;
377
+ }
378
+ .js:not(.sidebar-resizing) .sidebar {
379
+ transition: transform 0.3s; /* Animation: slide away */
380
+ }
381
+ .sidebar code {
382
+ line-height: 2em;
383
+ }
384
+ .sidebar .sidebar-scrollbox {
385
+ overflow-y: auto;
386
+ position: absolute;
387
+ top: 0;
388
+ bottom: 0;
389
+ left: 0;
390
+ right: 0;
391
+ padding: 10px 10px;
392
+ }
393
+ .sidebar .sidebar-resize-handle {
394
+ position: absolute;
395
+ cursor: col-resize;
396
+ width: 0;
397
+ right: 0;
398
+ top: 0;
399
+ bottom: 0;
400
+ }
401
+ .js .sidebar .sidebar-resize-handle {
402
+ cursor: col-resize;
403
+ width: 5px;
404
+ }
405
+ .sidebar-hidden .sidebar {
406
+ transform: translateX(calc(0px - var(--sidebar-width)));
407
+ }
408
+ .sidebar::-webkit-scrollbar {
409
+ background: var(--sidebar-bg);
410
+ }
411
+ .sidebar::-webkit-scrollbar-thumb {
412
+ background: var(--scrollbar);
413
+ }
414
+
415
+ .sidebar-visible .page-wrapper {
416
+ transform: translateX(var(--sidebar-width));
417
+ }
418
+ @media only screen and (min-width: 620px) {
419
+ .sidebar-visible .page-wrapper {
420
+ transform: none;
421
+ margin-left: var(--sidebar-width);
422
+ }
423
+ }
424
+
425
+ .chapter {
426
+ list-style: none outside none;
427
+ padding-left: 0;
428
+ line-height: 2.2em;
429
+ }
430
+
431
+ .chapter ol {
432
+ width: 100%;
433
+ }
434
+
435
+ .chapter li {
436
+ display: flex;
437
+ color: var(--sidebar-non-existant);
438
+ }
439
+ .chapter li a {
440
+ display: block;
441
+ padding: 0;
442
+ text-decoration: none;
443
+ color: var(--sidebar-fg);
444
+ }
445
+
446
+ .chapter li a:hover {
447
+ color: var(--sidebar-active);
448
+ }
449
+
450
+ .chapter li a.active {
451
+ color: var(--sidebar-active);
452
+ }
453
+
454
+ .chapter li > a.toggle {
455
+ cursor: pointer;
456
+ display: block;
457
+ margin-left: auto;
458
+ padding: 0 10px;
459
+ user-select: none;
460
+ opacity: 0.68;
461
+ }
462
+
463
+ .chapter li > a.toggle div {
464
+ transition: transform 0.5s;
465
+ }
466
+
467
+ /* collapse the section */
468
+ .chapter li:not(.expanded) + li > ol {
469
+ display: none;
470
+ }
471
+
472
+ .chapter li.chapter-item {
473
+ line-height: 1.5em;
474
+ margin-top: 0.6em;
475
+ }
476
+
477
+ .chapter li.expanded > a.toggle div {
478
+ transform: rotate(90deg);
479
+ }
480
+
481
+ .spacer {
482
+ width: 100%;
483
+ height: 3px;
484
+ margin: 5px 0px;
485
+ }
486
+ .chapter .spacer {
487
+ background-color: var(--sidebar-spacer);
488
+ }
489
+
490
+ @media (-moz-touch-enabled: 1), (pointer: coarse) {
491
+ .chapter li a { padding: 5px 0; }
492
+ .spacer { margin: 10px 0; }
493
+ }
494
+
495
+ .section {
496
+ list-style: none outside none;
497
+ padding-left: 20px;
498
+ line-height: 1.9em;
499
+ }
500
+
501
+ /* Theme Menu Popup */
502
+
503
+ .theme-popup {
504
+ position: absolute;
505
+ left: 10px;
506
+ top: var(--menu-bar-height);
507
+ z-index: 1000;
508
+ border-radius: 4px;
509
+ font-size: 0.7em;
510
+ color: var(--fg);
511
+ background: var(--theme-popup-bg);
512
+ border: 1px solid var(--theme-popup-border);
513
+ margin: 0;
514
+ padding: 0;
515
+ list-style: none;
516
+ display: none;
517
+ /* Don't let the children's background extend past the rounded corners. */
518
+ overflow: hidden;
519
+ }
520
+ .theme-popup .default {
521
+ color: var(--icons);
522
+ }
523
+ .theme-popup .theme {
524
+ width: 100%;
525
+ border: 0;
526
+ margin: 0;
527
+ padding: 2px 20px;
528
+ line-height: 25px;
529
+ white-space: nowrap;
530
+ text-align: left;
531
+ cursor: pointer;
532
+ color: inherit;
533
+ background: inherit;
534
+ font-size: inherit;
535
+ }
536
+ .theme-popup .theme:hover {
537
+ background-color: var(--theme-hover);
538
+ }
539
+
540
+ .theme-selected::before {
541
+ display: inline-block;
542
+ content: "✓";
543
+ margin-left: -14px;
544
+ width: 14px;
545
+ }