App-SlideServer

 view release on metacpan or  search on metacpan

example/Introduction/slides.md  view on Meta::CPAN

<style>
div.slide { min-width: 900px; }
</style>


<h1 style="font-family: monospace; padding-top:2em;">App::SlideServer</span></h1>

<br>

<div style="text-align:left; margin: 2em;">
  Follow Along at:<br>
  <a href="https://nrdvana.net/slides/app-slideserver">nrdvana.net/slides/app-slideserver</a><br>
  <br>
  Source:<br>
  <a href="https://github.com/nrdvana/perl-App-SlideServer" target="_blank">github.com/nrdvana/perl-App-SlideServer</a><br>
</div>

example/Introduction/slides.md  view on Meta::CPAN

        <li>...
      </ul>
      <pre class="notes"> ... </pre>
    </div>
  </div>
</body>
```

## Markdown Structure

<div style="padding: 0 20%; font-size: 150%">
  <pre><code>
    ## Heading 2
    
      * Item 1
      * Item 2
      * Item 3
    
    &lt;pre class=notes>
       ...
    &lt;/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

excludeEnd:!0}
},l.HEXCOLOR,u,m("variable","@@?[\\w-]+",10),m("variable","@\\{[\\w-]+\\}"),m("built_in","~?`[^`]*?`"),{
className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0
},l.IMPORTANT,{beginKeywords:"and not"},l.FUNCTION_DISPATCH);const h=g.concat({
begin:/\{/,end:/\}/,contains:c}),f={beginKeywords:"when",endsWithParent:!0,
contains:[{beginKeywords:"and not"}].concat(g)},k={begin:d+"\\s*:",
returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/
},l.CSS_VARIABLE,{className:"attribute",begin:"\\b("+o.join("|")+")\\b",
end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:g}}]
},w={className:"keyword",
begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
starts:{end:"[;{}]",keywords:p,returnEnd:!0,contains:g,relevance:0}},v={
className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{
begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:h}},y={variants:[{
begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:d,end:/\{/}],returnBegin:!0,
returnEnd:!0,illegal:"[<='$\"]",relevance:0,
contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,f,m("keyword","all\\b"),m("variable","@\\{[\\w-]+\\}"),{
begin:"\\b("+e.join("|")+")\\b",className:"selector-tag"
},l.CSS_NUMBER_MODE,m("selector-tag",d,0),m("selector-id","#"+d),m("selector-class","\\."+d,0),m("selector-tag","&",0),l.ATTRIBUTE_SELECTOR_MODE,{
className:"selector-pseudo",begin:":("+r.join("|")+")"},{
className:"selector-pseudo",begin:":(:)?("+i.join("|")+")"},{begin:/\(/,

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

className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0
},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",
begin:"\\b("+e.join("|")+")\\b",relevance:0},{className:"selector-pseudo",
begin:":("+s.join("|")+")"},{className:"selector-pseudo",
begin:":(:)?("+l.join("|")+")"},c,{begin:/\(/,end:/\)/,
contains:[a.CSS_NUMBER_MODE]},a.CSS_VARIABLE,{className:"attribute",
begin:"\\b("+o.join("|")+")\\b"},{
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

	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 {

share/public/slides-ui.css  view on Meta::CPAN

	width: 14em;
}
.slides-sidebar .ui-inner {
	padding: .5em;
	width: 9em;
	margin-right: auto;
}
.slides-sidebar h5 {
	margin: .5em 0 .3em 0;
	padding: 0;
	font-weight: bold;
}

.slides-notify p { margin: .5em; padding: 0; text-align: right; width: 200px; }

.slides .status {
	font-size: 75%;
	margin: 0; padding: 0;
	list-style-type: none;
}
.slides .status li {
	display: block;
	margin: 2px 0; padding: 0;
}
.slides .status li .host {
	font-family: Consolas, Inconsolata, Courier New, monospace;
}
.slides .status li.connecting { color: #FFFFBB; }
.slides .status li.connected { color: #CCFFCC; }
.slides .status li.disconnected { color: #FFCCCC; }
.slides .status li.broadcast { color: #CCCCEE; }

.slides .status-actions {
	display: flex;
	flex-flow: column;
	gap: 4px;
	margin: 4px 0;
}
.slides .status-actions > * { display: none; }
.slides .status-actions > label { font-size: 90%; white-space: nowrap; }

.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;

share/public/slides-ui.css  view on Meta::CPAN

.slides-menu .status > * { display: none; }
.slides-menu.open .status > * { display: block; }
.slides-menu .status .popup { display: block; }

.slides-menu .status-actions button { display: none; }
.slides-menu .status-actions button.show { display: block; }
.slides-menu .status-actions .popup { display: block; }


#websocket-reconnect { position: fixed; top: 0; right: 0; z-index: 10; }
#slideshow-join { position: fixed; top: 0; right: 4px; z-index: 9; font-size: 22px; }
.slideshow-address { font: 28px monospace; }
ol.slides { margin: 0; padding: 0; list-style: none; }

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;
	min-width: 900px;
}
.slide.dense { font-size: 30px; }
.slide > h1 { margin-top: .2em; }
.slide > ul, .slide > ol { display: inline-block; max-width: 90%; }
.slide > ul > li { margin-bottom: .5em; }
.slide > figure {
	position: relative;
	/* top:50%; left:50%; transform: translate(-50%,-50%); */
	display: inline-block; max-width: 80%; width: auto;
	margin: 0; padding: 0;
}
.slide > figure > figcaption {
	position: absolute;
	bottom: 0; left:50%; transform: translate(-50%,100%);
	display: block; white-space:nowrap;
	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; }
.slide figure.code.wider { width: 80%; }
.slide figure.code.wider code { font-size: 35%; }
 .slide ul.bare li { list-style-type: none; }
.slide ul li.bare { list-style-type: none; }
*/



( run in 0.659 second using v1.01-cache-2.11-cpan-ceb78f64989 )