view release on metacpan or search on metacpan
example/Introduction/slides.md view on Meta::CPAN
<pre class=notes>
...
</pre>
</code></pre>
</div>
## A Complete Example
<iframe style="width: 700px; height: 600px; background-color: white;"
src="slides.txt">
</iframe>
## Deploying to a Server
<pre><code data-step="1-1">
# Build the Image
$ docker build -t slideserver -f share/Dockerfile .
</code></pre>
share/public/highlight/a11y-dark.min.css view on Meta::CPAN
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
Theme: a11y-dark
Author: @ericwbailey
Maintainer: @ericwbailey
Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
*/.hljs{background:#2b2b2b;color:#f8f8f2}.hljs-comment,.hljs-quote{color:#d4d0ab}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ffa07a}.hljs-built_in,.hljs-link,.h...
share/public/highlight/highlight.min.js view on Meta::CPAN
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
e["before:highlightBlock"](Object.assign({block:t.el},t))
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)}
}),t.debugMode=()=>{o=!1},t.safeMode=()=>{o=!0
},t.versionString="11.7.0",t.regex={concat:p,lookahead:d,either:f,optional:h,
anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t])
;return Object.assign(t,A),t})({});return te}()
;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `less` grammar compiled for Highlight.js 11.7.0 */
(()=>{var e=(()=>{"use strict"
;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6",...
;return a=>{const l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
scope:"number",
begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
}))(a),s=n,d="([\\w-]+|@\\{[\\w-]+\\})",c=[],g=[],b=e=>({className:"string",
share/public/highlight/highlight.min.js view on Meta::CPAN
keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],
literal:["true","false","null"]},
contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{
scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",
begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,
end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{
scope:"symbol",begin:a.concat(/[_A-Za-z][_0-9A-Za-z]*/,a.lookahead(/\s*:/)),
relevance:0}],illegal:[/[;<']/,/BEGIN/]}}})();hljs.registerLanguage("graphql",e)
})();/*! `scss` grammar compiled for Highlight.js 11.7.0 */
(()=>{var e=(()=>{"use strict"
;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6",...
;return n=>{const a=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
scope:"number",
begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
}))(n),l=t,s=i,d="@[a-z-]+",c={className:"variable",
share/public/highlight/highlight.min.js view on Meta::CPAN
begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|...
},{begin:/:/,end:/[;}{]/,relevance:0,
contains:[a.BLOCK_COMMENT,c,a.HEXCOLOR,a.CSS_NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,a.IMPORTANT,a.FUNCTION_DISPATCH]
},{begin:"@(page|font-face)",keywords:{$pattern:d,keyword:"@page @font-face"}},{
begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,
keyword:"and or not only",attribute:r.join(" ")},contains:[{begin:d,
className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"
},c,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,a.HEXCOLOR,a.CSS_NUMBER_MODE]
},a.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})();/*! `css` grammar compiled for Highlight.js 11.7.0 */
(()=>{var e=(()=>{"use strict"
;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6",...
;return n=>{const a=n.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
scope:"number",
begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
}))(n),s=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS",
share/public/jquery-3.3.1.min.js view on Meta::CPAN
/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof windo...
share/public/slides-ui.css view on Meta::CPAN
/* right edge of screen, stays 0px width until class 'open' is added */
.slides-sidebar {
position: fixed;
right: 0;
top: 0;
bottom: 0;
width: auto;
z-index: 10;
padding: 0;
color: #BBB;
background-color: #111111AA;
text-align: left;
font-size: 12pt;
font-family: Helvetica, sans-serif;
}
/* upper-right corner that is always visible */
.slides-corner {
position: fixed;
top: 0;
right: 0;
}
/* button that opens/closes the sidebar. Always visible even when sidebar is 0px wide */
.slides-sidebar-btn {
display: block;
margin: 4px 4px .5em auto;
width: 30px;
border: 2px solid black;
border-radius: 4px;
padding: 0;
background-color: #111;
}
/* fancy animated icon for the sidebar open/close button */
.slides-sidebar-btn .bar {
position: relative;
border: none;
background-color: #BBB;
margin: 4px;
height: 3px;
transition: 0.3s;
}
.slides-sidebar.open .slides-sidebar-btn .bar1 {
-webkit-transform: translate(0, 7px) rotate(-45deg);
transform: translate(0, 7px) rotate(-45deg);
}
.slides-sidebar.open .slides-sidebar-btn .bar2 { opacity: 0; }
.slides-sidebar.open .slides-sidebar-btn .bar3 {
share/public/slides-ui.css view on Meta::CPAN
.navbuttons {
position: fixed;
left:0;
bottom: 0;
z-index: 9;
}
.navbuttons button {
display: block; width: 75px; height: 100px;
margin: 16px;
background-color: #111111AA; color: white;
font-size: 14pt;
touch-action:manipulation;
}
.navbuttons button.step {
height: 200px;
}
.presenternotes {
position: fixed;
right: 0;
bottom: 0;
z-index: 9;
background-color: #111111AA;
font-size: 14pt;
}
/* main content of
.slides-menu {
margin: 30px 4px 4px 4px;
}
.slides-menu button { display: block; }
.slides-menu-btn {
position: fixed;
top: 0;
right: 0;
margin: 0 0 .5em auto;
width: 30px;
border: 2px solid black;
border-radius: 4px;
padding: 0;
background-color: #111;
}
.slides-menu-btn .bar {
position: relative;
border: none;
background-color: #BBB;
margin: 4px;
height: 3px;
transition: 0.3s;
}
.slides-menu.open .slides-menu-btn .bar1 {
-webkit-transform: translate(0, 7px) rotate(-45deg);
transform: translate(0, 7px) rotate(-45deg);
}
.slides-menu.open .slides-menu-btn .bar2 { opacity: 0; }
.slides-menu.open .slides-menu-btn .bar3 {
share/public/slides.css view on Meta::CPAN
/* baseline defaults for a slide-like environment */
html { margin: 0; padding: 0; }
body {
margin: 0 0 -4em 0; padding: 0;
background-color: #333; color: #EEE;
}
table { border-collapse: collapse; }
ul, ol { list-style: outside; padding: 0px 0px 0px 1em; text-align:left; }
h1 { font-size: 150%; }
h2 { font-size: 130%; margin: .5em; }
h3 { font-size: 110%; margin: .5em; }
.slide {
padding: 1em;
margin: 1em 0;
font-size: 40px;
share/public/slides.css view on Meta::CPAN
text-align: center;
}
.slide .notes { display: none; }
.slide ul ul { padding-top: .4em; }
li { margin-bottom: .2em; }
a { text-decoration: none; color: #DEF; }
.slide pre { text-align: left; }
.slide code { white-space: pre; font-size: 40%; margin:4px; text-align: left; }
/* styles for this presentation *
body.high-contrast { background-color: #000; color: #FFF; }
th { vertical-align: baseline; text-align: left; }
td { vertical-align: baseline; text-align: left; }
table.data {
font-size: 90%;
font-family: sans-serif;
border-collapse: separate;
border-spacing: 8px;
}
table.data th { padding: 4px 8px; background-color: #222; }
.high-contrast table.data th { background-color: #151515; }
.high-contrast table.data td { background-color: #303030; }
.chat-app { font-size: 14px; }
.chatlog {
background-color: #EEE; color: black;
text-align: left;
width: 775px;
height: 400px;
padding: 4px;
border: 1px solid black;
font-family: courier, sans-serif, monospace;
white-space: pre-wrap;
overflow-y: scroll;
}
.chatline { width: 640px; }
.chatline input { display: inline-block; background-color: #EEE; color: black; width: 80%; }
.chatline button { display: inline-block; width: 15%; }
h1.loud { font-size: 200%; }
h1.lesson { display:inline-block; white-space: nowrap; text-align:center; font-size: 150%; }
figure.lesson { width: 90%; }
figure img { height: 10em; }
.slide figure.extern { min-height: 8em; }
.slide figcaption.small { font-size: 60%; }
figure pre { margin:0px; }
.slide figure.code { text-align: left; }