device-56.home 2026-3-29:22:14:22
This commit is contained in:
2
.obsidian/plugins/lazy-plugins/data.json
vendored
2
.obsidian/plugins/lazy-plugins/data.json
vendored
@@ -13,7 +13,7 @@
|
|||||||
"startupType": "disabled"
|
"startupType": "disabled"
|
||||||
},
|
},
|
||||||
"obsidian-advanced-slides": {
|
"obsidian-advanced-slides": {
|
||||||
"startupType": "disabled"
|
"startupType": "short"
|
||||||
},
|
},
|
||||||
"obsidian-asciimath": {
|
"obsidian-asciimath": {
|
||||||
"startupType": "disabled"
|
"startupType": "disabled"
|
||||||
|
|||||||
@@ -627,8 +627,7 @@ p.align-center {
|
|||||||
--dbg-size: 1px;
|
--dbg-size: 1px;
|
||||||
border: 1px solid red;
|
border: 1px solid red;
|
||||||
}
|
}
|
||||||
.reset-margin,
|
.reset-margin {
|
||||||
.reset-margin > * {
|
|
||||||
--r-block-margin: 0;
|
--r-block-margin: 0;
|
||||||
--r-heading-margin: 0;
|
--r-heading-margin: 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,13 +75,13 @@
|
|||||||
--r-selection-color: #fff;
|
--r-selection-color: #fff;
|
||||||
}
|
}
|
||||||
.reveal-viewport {
|
.reveal-viewport {
|
||||||
background: #1c1e20;
|
background: rgb(28, 30, 32);
|
||||||
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -moz-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
|
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgb(85, 90, 95)), color-stop(100%, rgb(28, 30, 32)));
|
||||||
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -webkit-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -o-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -ms-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background-color: var(--r-background-color);
|
background-color: var(--r-background-color);
|
||||||
}
|
}
|
||||||
.reveal {
|
.reveal {
|
||||||
@@ -179,8 +179,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -360,6 +360,9 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
.reveal .slides {
|
.reveal .slides {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
{
|
{
|
||||||
"port": "",
|
"port": "3123",
|
||||||
"autoReload": true,
|
"autoReload": true,
|
||||||
"exportDirectory": "/presentations",
|
"exportDirectory": "/presentations",
|
||||||
"enableChalkboard": true,
|
"enableChalkboard": false,
|
||||||
"enableOverview": true,
|
"enableOverview": true,
|
||||||
"enableMenu": true,
|
"enableMenu": true,
|
||||||
"enablePointer": false,
|
"enablePointer": true,
|
||||||
"enableTimeBar": false,
|
"enableTimeBar": false,
|
||||||
"theme": "black",
|
"theme": "serif",
|
||||||
"highlightTheme": "zenburn",
|
"highlightTheme": "zenburn",
|
||||||
"transition": "fade",
|
"transition": "slide",
|
||||||
"transitionSpeed": "normal",
|
"transitionSpeed": "normal",
|
||||||
"controls": false,
|
"controls": true,
|
||||||
"progress": true,
|
"progress": true,
|
||||||
"slideNumber": true,
|
"slideNumber": true,
|
||||||
"showGrid": false,
|
"showGrid": false,
|
||||||
"autoComplete": "inPreview",
|
"autoComplete": "never",
|
||||||
"paneMode": "tab",
|
"paneMode": "tab",
|
||||||
"motm": ""
|
"motm": "2026-03-29T19:04:49.274Z"
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -57,13 +57,13 @@
|
|||||||
--r-selection-color: #fff;
|
--r-selection-color: #fff;
|
||||||
}
|
}
|
||||||
.reveal-viewport {
|
.reveal-viewport {
|
||||||
background: #f7f2d3;
|
background: rgb(247, 242, 211);
|
||||||
background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
|
background: -moz-radial-gradient(center, circle cover, rgb(255, 255, 255) 0%, rgb(247, 242, 211) 100%);
|
||||||
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3));
|
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgb(255, 255, 255)), color-stop(100%, rgb(247, 242, 211)));
|
||||||
background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
|
background: -webkit-radial-gradient(center, circle cover, rgb(255, 255, 255) 0%, rgb(247, 242, 211) 100%);
|
||||||
background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
|
background: -o-radial-gradient(center, circle cover, rgb(255, 255, 255) 0%, rgb(247, 242, 211) 100%);
|
||||||
background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
|
background: -ms-radial-gradient(center, circle cover, rgb(255, 255, 255) 0%, rgb(247, 242, 211) 100%);
|
||||||
background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
|
background: radial-gradient(center, circle cover, rgb(255, 255, 255) 0%, rgb(247, 242, 211) 100%);
|
||||||
background-color: var(--r-background-color);
|
background-color: var(--r-background-color);
|
||||||
}
|
}
|
||||||
.reveal {
|
.reveal {
|
||||||
@@ -161,8 +161,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -342,3 +342,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -146,8 +146,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -327,3 +327,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -151,8 +151,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -332,6 +332,9 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
.reveal p {
|
.reveal p {
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
text-shadow: 1px 1px #222;
|
text-shadow: 1px 1px #222;
|
||||||
|
|||||||
@@ -146,8 +146,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -327,6 +327,9 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
.reveal table th,
|
.reveal table th,
|
||||||
.reveal table td {
|
.reveal table td {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
|
|||||||
@@ -57,13 +57,13 @@
|
|||||||
--r-selection-color: #fff;
|
--r-selection-color: #fff;
|
||||||
}
|
}
|
||||||
.reveal-viewport {
|
.reveal-viewport {
|
||||||
background: #1c1e20;
|
background: rgb(28, 30, 32);
|
||||||
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -moz-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
|
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgb(85, 90, 95)), color-stop(100%, rgb(28, 30, 32)));
|
||||||
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -webkit-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -o-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -ms-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background-color: var(--r-background-color);
|
background-color: var(--r-background-color);
|
||||||
}
|
}
|
||||||
.reveal {
|
.reveal {
|
||||||
@@ -161,8 +161,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -342,3 +342,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -75,13 +75,13 @@
|
|||||||
--r-selection-color: #fff;
|
--r-selection-color: #fff;
|
||||||
}
|
}
|
||||||
.reveal-viewport {
|
.reveal-viewport {
|
||||||
background: #1c1e20;
|
background: rgb(28, 30, 32);
|
||||||
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -moz-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
|
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgb(85, 90, 95)), color-stop(100%, rgb(28, 30, 32)));
|
||||||
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -webkit-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -o-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: -ms-radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
|
background: radial-gradient(center, circle cover, rgb(85, 90, 95) 0%, rgb(28, 30, 32) 100%);
|
||||||
background-color: var(--r-background-color);
|
background-color: var(--r-background-color);
|
||||||
}
|
}
|
||||||
.reveal {
|
.reveal {
|
||||||
@@ -179,8 +179,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -360,6 +360,9 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
.reveal .slides {
|
.reveal .slides {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,8 +148,8 @@ html * {
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -329,3 +329,6 @@ html * {
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -144,8 +144,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -325,3 +325,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -152,8 +152,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -333,3 +333,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -144,8 +144,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -325,3 +325,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -150,8 +150,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -331,3 +331,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -139,8 +139,8 @@ html * {
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -320,3 +320,6 @@ html * {
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -146,8 +146,8 @@
|
|||||||
.reveal img,
|
.reveal img,
|
||||||
.reveal video,
|
.reveal video,
|
||||||
.reveal iframe {
|
.reveal iframe {
|
||||||
max-width: 95%;
|
max-width: 100%;
|
||||||
max-height: 95%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
.reveal strong,
|
.reveal strong,
|
||||||
.reveal b {
|
.reveal b {
|
||||||
@@ -327,3 +327,6 @@
|
|||||||
canvas[data-chart] {
|
canvas[data-chart] {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
}
|
}
|
||||||
|
.reveal .hljs {
|
||||||
|
min-height: 50%;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"version": "1.15.0"
|
"version": "1.20.0"
|
||||||
}
|
}
|
||||||
144
.obsidian/plugins/obsidian-advanced-slides/plugin/elapsed-time-bar/elapsed-time-bar.js
vendored
Normal file
144
.obsidian/plugins/obsidian-advanced-slides/plugin/elapsed-time-bar/elapsed-time-bar.js
vendored
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
var ElapsedTimeBar = {
|
||||||
|
// default value
|
||||||
|
barColor: 'rgb(200,0,0)',
|
||||||
|
pausedBarColor: 'rgba(200,0,0,.6)',
|
||||||
|
|
||||||
|
isPaused: false,
|
||||||
|
isFinished: false,
|
||||||
|
|
||||||
|
allottedTime: null,
|
||||||
|
timeProgressBar: null,
|
||||||
|
startTime: null,
|
||||||
|
pauseTime: null,
|
||||||
|
pauseTimeDuration: 0,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initialize elements
|
||||||
|
*/
|
||||||
|
handleReady() {
|
||||||
|
var config = Reveal.getConfig();
|
||||||
|
|
||||||
|
// activate this plugin if config.allottedTime exists.
|
||||||
|
if (!config.allottedTime) {
|
||||||
|
console.warn('Failed to start ElapsedTimeBar plugin. "allottedTime" property is required.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set configurations
|
||||||
|
this.barColor = config.barColor || this.barColor;
|
||||||
|
this.pausedBarColor = config.pausedBarColor || this.pausedBarColor;
|
||||||
|
|
||||||
|
// calc barHeight from config.barHeight or page-progress container
|
||||||
|
var barHeight;
|
||||||
|
var pageProgressContainer = document.querySelector('.progress');
|
||||||
|
if (config.progressBarHeight) {
|
||||||
|
barHeight = parseInt(config.progressBarHeight, 10) + 'px';
|
||||||
|
|
||||||
|
// override height of page-progress container
|
||||||
|
pageProgressContainer && (pageProgressContainer.style.height = barHeight);
|
||||||
|
} else if (config.progress && pageProgressContainer) {
|
||||||
|
// get height from page-progress container
|
||||||
|
barHeight = pageProgressContainer.getBoundingClientRect().height + 'px';
|
||||||
|
} else {
|
||||||
|
// default
|
||||||
|
barHeight = '3px';
|
||||||
|
}
|
||||||
|
|
||||||
|
// create container of time-progress
|
||||||
|
var timeProgressContainer = document.createElement('div');
|
||||||
|
timeProgressContainer.classList.add('progress');
|
||||||
|
Object.entries({
|
||||||
|
display: 'block',
|
||||||
|
position: 'fixed',
|
||||||
|
bottom: config.progress ? barHeight : 0,
|
||||||
|
width: '100%',
|
||||||
|
height: barHeight
|
||||||
|
}).forEach(([k, v]) => {
|
||||||
|
timeProgressContainer.style[k] = v;
|
||||||
|
});
|
||||||
|
document.querySelector('.reveal').appendChild(timeProgressContainer);
|
||||||
|
|
||||||
|
// create content of time-progress
|
||||||
|
this.timeProgressBar = document.createElement('div');
|
||||||
|
Object.entries({
|
||||||
|
height: '100%',
|
||||||
|
willChange: 'width'
|
||||||
|
}).forEach(([k, v]) => {
|
||||||
|
this.timeProgressBar.style[k] = v;
|
||||||
|
});
|
||||||
|
timeProgressContainer.appendChild(this.timeProgressBar);
|
||||||
|
|
||||||
|
// start timer
|
||||||
|
this.start(config.allottedTime);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update repeatedly using requestAnimationFrame.
|
||||||
|
*/
|
||||||
|
loop() {
|
||||||
|
if (this.isPaused) return;
|
||||||
|
var now = +new Date();
|
||||||
|
var elapsedTime = now - this.startTime - this.pauseTimeDuration;
|
||||||
|
if (elapsedTime > this.allottedTime) {
|
||||||
|
this.timeProgressBar.style.width = '100%';
|
||||||
|
this.isFinished = true;
|
||||||
|
} else {
|
||||||
|
this.timeProgressBar.style.width = elapsedTime / this.allottedTime * 100 + '%';
|
||||||
|
requestAnimationFrame(this.loop.bind(this));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set color of progress bar
|
||||||
|
*/
|
||||||
|
setBarColor() {
|
||||||
|
if (this.isPaused) {
|
||||||
|
this.timeProgressBar.style.backgroundColor = this.pausedBarColor;
|
||||||
|
} else {
|
||||||
|
this.timeProgressBar.style.backgroundColor = this.barColor;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* start(reset) timer with new allotted time.
|
||||||
|
* @param {number} allottedTime
|
||||||
|
* @param {number} [elapsedTime=0]
|
||||||
|
*/
|
||||||
|
start(allottedTime, elapsedTime = 0) {
|
||||||
|
this.isFinished = false;
|
||||||
|
this.isPaused = false;
|
||||||
|
this.allottedTime = allottedTime;
|
||||||
|
this.startTime = +new Date() - elapsedTime;
|
||||||
|
this.pauseTimeDuration = 0;
|
||||||
|
this.setBarColor();
|
||||||
|
this.loop();
|
||||||
|
},
|
||||||
|
|
||||||
|
reset() {
|
||||||
|
this.start(this.allottedTime);
|
||||||
|
},
|
||||||
|
|
||||||
|
pause() {
|
||||||
|
if (this.isPaused) return;
|
||||||
|
this.isPaused = true;
|
||||||
|
this.pauseTime = +new Date();
|
||||||
|
this.setBarColor();
|
||||||
|
},
|
||||||
|
|
||||||
|
resume() {
|
||||||
|
if (!this.isPaused) return;
|
||||||
|
|
||||||
|
// add paused time duration
|
||||||
|
this.isPaused = false;
|
||||||
|
this.pauseTimeDuration += new Date() - this.pauseTime;
|
||||||
|
this.pauseTime = null;
|
||||||
|
this.setBarColor();
|
||||||
|
this.loop();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (Reveal.isReady()) {
|
||||||
|
ElapsedTimeBar.handleReady();
|
||||||
|
} else {
|
||||||
|
Reveal.addEventListener('ready', () => ElapsedTimeBar.handleReady());
|
||||||
|
}
|
||||||
@@ -106,7 +106,7 @@ const Plugin = {
|
|||||||
|
|
||||||
var scrollState = { currentBlock: block };
|
var scrollState = { currentBlock: block };
|
||||||
|
|
||||||
// If there is at least one highlight step, generate
|
// If there is more than one highlight step, generate
|
||||||
// fragments
|
// fragments
|
||||||
var highlightSteps = Plugin.deserializeHighlightSteps( block.getAttribute( 'data-line-numbers' ) );
|
var highlightSteps = Plugin.deserializeHighlightSteps( block.getAttribute( 'data-line-numbers' ) );
|
||||||
if( highlightSteps.length > 1 ) {
|
if( highlightSteps.length > 1 ) {
|
||||||
@@ -142,7 +142,7 @@ const Plugin = {
|
|||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
block.removeAttribute( 'data-fragment-index' )
|
block.removeAttribute( 'data-fragment-index' );
|
||||||
block.setAttribute( 'data-line-numbers', Plugin.serializeHighlightSteps( [ highlightSteps[0] ] ) );
|
block.setAttribute( 'data-line-numbers', Plugin.serializeHighlightSteps( [ highlightSteps[0] ] ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -4,7 +4,7 @@
|
|||||||
* of external markdown documents.
|
* of external markdown documents.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import marked from 'marked'
|
import { marked } from 'marked';
|
||||||
|
|
||||||
const DEFAULT_SLIDE_SEPARATOR = '\r?\n---\r?\n',
|
const DEFAULT_SLIDE_SEPARATOR = '\r?\n---\r?\n',
|
||||||
DEFAULT_NOTES_SEPARATOR = 'notes?:',
|
DEFAULT_NOTES_SEPARATOR = 'notes?:',
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -56,7 +56,7 @@ export const MathJax3 = () => {
|
|||||||
let revealOptions = deck.getConfig().mathjax3 || {};
|
let revealOptions = deck.getConfig().mathjax3 || {};
|
||||||
let options = {...defaultOptions, ...revealOptions};
|
let options = {...defaultOptions, ...revealOptions};
|
||||||
options.tex = {...defaultOptions.tex, ...revealOptions.tex}
|
options.tex = {...defaultOptions.tex, ...revealOptions.tex}
|
||||||
options.options = {...options.options, ...defaultOptions.options}
|
options.options = {...defaultOptions.options, ...revealOptions.options}
|
||||||
options.startup = {...defaultOptions.startup, ...revealOptions.startup}
|
options.startup = {...defaultOptions.startup, ...revealOptions.startup}
|
||||||
|
|
||||||
let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js';
|
let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js';
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -4,16 +4,20 @@
|
|||||||
|
|
||||||
import mermaid from "mermaid";
|
import mermaid from "mermaid";
|
||||||
|
|
||||||
mermaid.mermaidAPI.initialize({
|
|
||||||
// The node size will be calculated incorrectly if set `startOnLoad: start`,
|
|
||||||
// so we need to manually render.
|
|
||||||
startOnLoad: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
const Plugin = {
|
const Plugin = {
|
||||||
id: "mermaid",
|
id: "mermaid",
|
||||||
|
|
||||||
init: function (reveal) {
|
init: function (reveal) {
|
||||||
|
|
||||||
|
let { ...mermaidConfig } = reveal.getConfig().mermaid || {};
|
||||||
|
|
||||||
|
mermaid.mermaidAPI.initialize({
|
||||||
|
// The node size will be calculated incorrectly if set `startOnLoad: start`,
|
||||||
|
// so we need to manually render.
|
||||||
|
startOnLoad: false,
|
||||||
|
...mermaidConfig,
|
||||||
|
});
|
||||||
|
|
||||||
const mermaidEls = reveal.getRevealElement().querySelectorAll(".mermaid");
|
const mermaidEls = reveal.getRevealElement().querySelectorAll(".mermaid");
|
||||||
|
|
||||||
Array.from(mermaidEls).forEach(function (el) {
|
Array.from(mermaidEls).forEach(function (el) {
|
||||||
@@ -30,8 +34,16 @@ const Plugin = {
|
|||||||
insertSvg
|
insertSvg
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error, { graphDefinition, el });
|
let errorStr = "";
|
||||||
el.innerHTML = error.message;
|
if (error?.str) {
|
||||||
|
// From mermaid 9.1.4, error.message does not exists anymore
|
||||||
|
errorStr = error.str;
|
||||||
|
}
|
||||||
|
if (error?.message) {
|
||||||
|
errorStr = error.message;
|
||||||
|
}
|
||||||
|
console.error(errorStr, { error, graphDefinition, el });
|
||||||
|
el.innerHTML = errorStr;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
|||||||
import speakerViewHTML from './speaker-view.html';
|
import speakerViewHTML from './speaker-view.html';
|
||||||
|
|
||||||
import marked from 'marked';
|
import { marked } from 'marked';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles opening of and synchronization with the reveal.js
|
* Handles opening of and synchronization with the reveal.js
|
||||||
@@ -15,141 +15,172 @@ import marked from 'marked';
|
|||||||
*/
|
*/
|
||||||
const Plugin = () => {
|
const Plugin = () => {
|
||||||
|
|
||||||
let popup = null;
|
let connectInterval;
|
||||||
|
let speakerWindow = null;
|
||||||
|
let deck;
|
||||||
|
|
||||||
let deck;
|
/**
|
||||||
|
* Opens a new speaker view window.
|
||||||
|
*/
|
||||||
|
function openSpeakerWindow() {
|
||||||
|
|
||||||
function openNotes() {
|
// If a window is already open, focus it
|
||||||
|
if( speakerWindow && !speakerWindow.closed ) {
|
||||||
|
speakerWindow.focus();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
speakerWindow = window.open( 'about:blank', 'reveal.js - Notes', 'width=1100,height=700' );
|
||||||
|
speakerWindow.marked = marked;
|
||||||
|
speakerWindow.document.write( speakerViewHTML );
|
||||||
|
|
||||||
if (popup && !popup.closed) {
|
if( !speakerWindow ) {
|
||||||
popup.focus();
|
alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
popup = window.open( 'about:blank', 'reveal.js - Notes', 'width=1100,height=700' );
|
connect();
|
||||||
popup.marked = marked;
|
|
||||||
popup.document.write( speakerViewHTML );
|
|
||||||
|
|
||||||
if( !popup ) {
|
|
||||||
alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' );
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
}
|
||||||
* Connect to the notes window through a postmessage handshake.
|
|
||||||
* Using postmessage enables us to work in situations where the
|
|
||||||
* origins differ, such as a presentation being opened from the
|
|
||||||
* file system.
|
|
||||||
*/
|
|
||||||
function connect() {
|
|
||||||
// Keep trying to connect until we get a 'connected' message back
|
|
||||||
let connectInterval = setInterval( function() {
|
|
||||||
popup.postMessage( JSON.stringify( {
|
|
||||||
namespace: 'reveal-notes',
|
|
||||||
type: 'connect',
|
|
||||||
url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search,
|
|
||||||
state: deck.getState()
|
|
||||||
} ), '*' );
|
|
||||||
}, 500 );
|
|
||||||
|
|
||||||
window.addEventListener( 'message', function( event ) {
|
/**
|
||||||
let data = JSON.parse( event.data );
|
* Reconnect with an existing speaker view window.
|
||||||
if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) {
|
*/
|
||||||
clearInterval( connectInterval );
|
function reconnectSpeakerWindow( reconnectWindow ) {
|
||||||
onConnected();
|
|
||||||
}
|
if( speakerWindow && !speakerWindow.closed ) {
|
||||||
if( data && data.namespace === 'reveal-notes' && data.type === 'call' ) {
|
speakerWindow.focus();
|
||||||
callRevealApi( data.methodName, data.arguments, data.callId );
|
}
|
||||||
}
|
else {
|
||||||
} );
|
speakerWindow = reconnectWindow;
|
||||||
|
window.addEventListener( 'message', onPostMessage );
|
||||||
|
onConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
}
|
||||||
* Calls the specified Reveal.js method with the provided argument
|
|
||||||
* and then pushes the result to the notes frame.
|
|
||||||
*/
|
|
||||||
function callRevealApi( methodName, methodArguments, callId ) {
|
|
||||||
|
|
||||||
let result = deck[methodName].apply( deck, methodArguments );
|
/**
|
||||||
popup.postMessage( JSON.stringify( {
|
* Connect to the notes window through a postmessage handshake.
|
||||||
|
* Using postmessage enables us to work in situations where the
|
||||||
|
* origins differ, such as a presentation being opened from the
|
||||||
|
* file system.
|
||||||
|
*/
|
||||||
|
function connect() {
|
||||||
|
|
||||||
|
const presentationURL = deck.getConfig().url;
|
||||||
|
|
||||||
|
const url = typeof presentationURL === 'string' ? presentationURL :
|
||||||
|
window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
|
||||||
|
|
||||||
|
// Keep trying to connect until we get a 'connected' message back
|
||||||
|
connectInterval = setInterval( function() {
|
||||||
|
speakerWindow.postMessage( JSON.stringify( {
|
||||||
namespace: 'reveal-notes',
|
namespace: 'reveal-notes',
|
||||||
type: 'return',
|
type: 'connect',
|
||||||
result: result,
|
state: deck.getState(),
|
||||||
callId: callId
|
url
|
||||||
} ), '*' );
|
} ), '*' );
|
||||||
|
}, 500 );
|
||||||
|
|
||||||
|
window.addEventListener( 'message', onPostMessage );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls the specified Reveal.js method with the provided argument
|
||||||
|
* and then pushes the result to the notes frame.
|
||||||
|
*/
|
||||||
|
function callRevealApi( methodName, methodArguments, callId ) {
|
||||||
|
|
||||||
|
let result = deck[methodName].apply( deck, methodArguments );
|
||||||
|
speakerWindow.postMessage( JSON.stringify( {
|
||||||
|
namespace: 'reveal-notes',
|
||||||
|
type: 'return',
|
||||||
|
result,
|
||||||
|
callId
|
||||||
|
} ), '*' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Posts the current slide data to the notes window.
|
||||||
|
*/
|
||||||
|
function post( event ) {
|
||||||
|
|
||||||
|
let slideElement = deck.getCurrentSlide(),
|
||||||
|
notesElement = slideElement.querySelector( 'aside.notes' ),
|
||||||
|
fragmentElement = slideElement.querySelector( '.current-fragment' );
|
||||||
|
|
||||||
|
let messageData = {
|
||||||
|
namespace: 'reveal-notes',
|
||||||
|
type: 'state',
|
||||||
|
notes: '',
|
||||||
|
markdown: false,
|
||||||
|
whitespace: 'normal',
|
||||||
|
state: deck.getState()
|
||||||
|
};
|
||||||
|
|
||||||
|
// Look for notes defined in a slide attribute
|
||||||
|
if( slideElement.hasAttribute( 'data-notes' ) ) {
|
||||||
|
messageData.notes = slideElement.getAttribute( 'data-notes' );
|
||||||
|
messageData.whitespace = 'pre-wrap';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// Look for notes defined in a fragment
|
||||||
* Posts the current slide data to the notes window
|
if( fragmentElement ) {
|
||||||
*/
|
let fragmentNotes = fragmentElement.querySelector( 'aside.notes' );
|
||||||
function post( event ) {
|
if( fragmentNotes ) {
|
||||||
|
notesElement = fragmentNotes;
|
||||||
let slideElement = deck.getCurrentSlide(),
|
}
|
||||||
notesElement = slideElement.querySelector( 'aside.notes' ),
|
else if( fragmentElement.hasAttribute( 'data-notes' ) ) {
|
||||||
fragmentElement = slideElement.querySelector( '.current-fragment' );
|
messageData.notes = fragmentElement.getAttribute( 'data-notes' );
|
||||||
|
|
||||||
let messageData = {
|
|
||||||
namespace: 'reveal-notes',
|
|
||||||
type: 'state',
|
|
||||||
notes: '',
|
|
||||||
markdown: false,
|
|
||||||
whitespace: 'normal',
|
|
||||||
state: deck.getState()
|
|
||||||
};
|
|
||||||
|
|
||||||
// Look for notes defined in a slide attribute
|
|
||||||
if( slideElement.hasAttribute( 'data-notes' ) ) {
|
|
||||||
messageData.notes = slideElement.getAttribute( 'data-notes' );
|
|
||||||
messageData.whitespace = 'pre-wrap';
|
messageData.whitespace = 'pre-wrap';
|
||||||
|
|
||||||
|
// In case there are slide notes
|
||||||
|
notesElement = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Look for notes defined in a fragment
|
|
||||||
if( fragmentElement ) {
|
|
||||||
let fragmentNotes = fragmentElement.querySelector( 'aside.notes' );
|
|
||||||
if( fragmentNotes ) {
|
|
||||||
notesElement = fragmentNotes;
|
|
||||||
}
|
|
||||||
else if( fragmentElement.hasAttribute( 'data-notes' ) ) {
|
|
||||||
messageData.notes = fragmentElement.getAttribute( 'data-notes' );
|
|
||||||
messageData.whitespace = 'pre-wrap';
|
|
||||||
|
|
||||||
// In case there are slide notes
|
|
||||||
notesElement = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Look for notes defined in an aside element
|
|
||||||
if( notesElement ) {
|
|
||||||
messageData.notes = notesElement.innerHTML;
|
|
||||||
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
|
|
||||||
}
|
|
||||||
|
|
||||||
popup.postMessage( JSON.stringify( messageData ), '*' );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// Look for notes defined in an aside element
|
||||||
* Called once we have established a connection to the notes
|
if( notesElement ) {
|
||||||
* window.
|
messageData.notes = notesElement.innerHTML;
|
||||||
*/
|
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
|
||||||
function onConnected() {
|
|
||||||
|
|
||||||
// Monitor events that trigger a change in state
|
|
||||||
deck.on( 'slidechanged', post );
|
|
||||||
deck.on( 'fragmentshown', post );
|
|
||||||
deck.on( 'fragmenthidden', post );
|
|
||||||
deck.on( 'overviewhidden', post );
|
|
||||||
deck.on( 'overviewshown', post );
|
|
||||||
deck.on( 'paused', post );
|
|
||||||
deck.on( 'resumed', post );
|
|
||||||
|
|
||||||
// Post the initial state
|
|
||||||
post();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connect();
|
speakerWindow.postMessage( JSON.stringify( messageData ), '*' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function onPostMessage( event ) {
|
||||||
|
|
||||||
|
let data = JSON.parse( event.data );
|
||||||
|
if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) {
|
||||||
|
clearInterval( connectInterval );
|
||||||
|
onConnected();
|
||||||
|
}
|
||||||
|
else if( data && data.namespace === 'reveal-notes' && data.type === 'call' ) {
|
||||||
|
callRevealApi( data.methodName, data.arguments, data.callId );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called once we have established a connection to the notes
|
||||||
|
* window.
|
||||||
|
*/
|
||||||
|
function onConnected() {
|
||||||
|
|
||||||
|
// Monitor events that trigger a change in state
|
||||||
|
deck.on( 'slidechanged', post );
|
||||||
|
deck.on( 'fragmentshown', post );
|
||||||
|
deck.on( 'fragmenthidden', post );
|
||||||
|
deck.on( 'overviewhidden', post );
|
||||||
|
deck.on( 'overviewshown', post );
|
||||||
|
deck.on( 'paused', post );
|
||||||
|
deck.on( 'resumed', post );
|
||||||
|
|
||||||
|
// Post the initial state
|
||||||
|
post();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,19 +195,40 @@ const Plugin = () => {
|
|||||||
|
|
||||||
// If the there's a 'notes' query set, open directly
|
// If the there's a 'notes' query set, open directly
|
||||||
if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) {
|
if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) {
|
||||||
openNotes();
|
openSpeakerWindow();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Keep listening for speaker view hearbeats. If we receive a
|
||||||
|
// heartbeat from an orphaned window, reconnect it. This ensures
|
||||||
|
// that we remain connected to the notes even if the presentation
|
||||||
|
// is reloaded.
|
||||||
|
window.addEventListener( 'message', event => {
|
||||||
|
|
||||||
|
if( !speakerWindow && typeof event.data === 'string' ) {
|
||||||
|
let data;
|
||||||
|
|
||||||
|
try {
|
||||||
|
data = JSON.parse( event.data );
|
||||||
|
}
|
||||||
|
catch( error ) {}
|
||||||
|
|
||||||
|
if( data && data.namespace === 'reveal-notes' && data.type === 'heartbeat' ) {
|
||||||
|
reconnectSpeakerWindow( event.source );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the notes when the 's' key is hit
|
// Open the notes when the 's' key is hit
|
||||||
deck.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() {
|
deck.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() {
|
||||||
openNotes();
|
openSpeakerWindow();
|
||||||
} );
|
} );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
open: openNotes
|
open: openSpeakerWindow
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
<!--
|
||||||
|
NOTE: You need to build the notes plugin after making changes to this file.
|
||||||
|
-->
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
@@ -347,7 +350,8 @@
|
|||||||
layoutDropdown,
|
layoutDropdown,
|
||||||
pendingCalls = {},
|
pendingCalls = {},
|
||||||
lastRevealApiCallId = 0,
|
lastRevealApiCallId = 0,
|
||||||
connected = false;
|
connected = false,
|
||||||
|
whitelistedWindows = [window.opener];
|
||||||
|
|
||||||
var SPEAKER_LAYOUTS = {
|
var SPEAKER_LAYOUTS = {
|
||||||
'default': 'Default',
|
'default': 'Default',
|
||||||
@@ -362,9 +366,14 @@
|
|||||||
var connectionTimeout = setTimeout( function() {
|
var connectionTimeout = setTimeout( function() {
|
||||||
connectionStatus.innerHTML = 'Error connecting to main window.<br>Please try closing and reopening the speaker view.';
|
connectionStatus.innerHTML = 'Error connecting to main window.<br>Please try closing and reopening the speaker view.';
|
||||||
}, 5000 );
|
}, 5000 );
|
||||||
|
;
|
||||||
window.addEventListener( 'message', function( event ) {
|
window.addEventListener( 'message', function( event ) {
|
||||||
|
|
||||||
|
// Validate the origin of this message to prevent XSS
|
||||||
|
if( window.location.origin !== event.origin && whitelistedWindows.indexOf( event.source ) === -1 ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
clearTimeout( connectionTimeout );
|
clearTimeout( connectionTimeout );
|
||||||
connectionStatus.style.display = 'none';
|
connectionStatus.style.display = 'none';
|
||||||
|
|
||||||
@@ -395,13 +404,21 @@
|
|||||||
}
|
}
|
||||||
else if( /slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
|
else if( /slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
|
||||||
|
|
||||||
window.opener.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ]} ), '*' );
|
dispatchStateToMainWindow( data.state );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the presentation in the main window to match the state
|
||||||
|
* of the presentation in the notes window.
|
||||||
|
*/
|
||||||
|
const dispatchStateToMainWindow = debounce(( state ) => {
|
||||||
|
window.opener.postMessage( JSON.stringify({ method: 'setState', args: [ state ]} ), '*' );
|
||||||
|
}, 500);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asynchronously calls the Reveal.js API of the main frame.
|
* Asynchronously calls the Reveal.js API of the main frame.
|
||||||
*/
|
*/
|
||||||
@@ -432,6 +449,7 @@
|
|||||||
setupKeyboard();
|
setupKeyboard();
|
||||||
setupNotes();
|
setupNotes();
|
||||||
setupTimer();
|
setupTimer();
|
||||||
|
setupHeartbeat();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -521,6 +539,8 @@
|
|||||||
upcomingSlide.setAttribute( 'src', upcomingURL );
|
upcomingSlide.setAttribute( 'src', upcomingURL );
|
||||||
document.querySelector( '#upcoming-slide' ).appendChild( upcomingSlide );
|
document.querySelector( '#upcoming-slide' ).appendChild( upcomingSlide );
|
||||||
|
|
||||||
|
whitelistedWindows.push( currentSlide.contentWindow, upcomingSlide.contentWindow );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -533,6 +553,18 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We send out a heartbeat at all times to ensure we can
|
||||||
|
* reconnect with the main presentation window after reloads.
|
||||||
|
*/
|
||||||
|
function setupHeartbeat() {
|
||||||
|
|
||||||
|
setInterval( () => {
|
||||||
|
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'heartbeat'} ), '*' );
|
||||||
|
}, 1000 );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function getTimings( callback ) {
|
function getTimings( callback ) {
|
||||||
|
|
||||||
callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) {
|
callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) {
|
||||||
|
|||||||
1
.obsidian/plugins/obsidian-advanced-slides/plugin/reveal-pointer/pointer.css
vendored
Normal file
1
.obsidian/plugins/obsidian-advanced-slides/plugin/reveal-pointer/pointer.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.cursor-dot,.cursor-dot-outline{pointer-events:none;position:absolute;top:0;left:0;border-radius:50%;opacity:0;transform:translate(-50%,-50%);transition:opacity 0.3s ease-in-out,transform 0.3s ease-in-out;}.cursor-dot{width:12px;height:12px;background-color:red;z-index:1;}.no-cursor{cursor:none;}.no-cursor a,.no-cursor div,.no-cursor span{cursor:none;}
|
||||||
1
.obsidian/plugins/obsidian-advanced-slides/plugin/reveal-pointer/pointer.js
vendored
Normal file
1
.obsidian/plugins/obsidian-advanced-slides/plugin/reveal-pointer/pointer.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
var RevealPointer=function(){"use strict";var e={backspace:8,tab:9,enter:13,shift:16,ctrl:17,alt:18,pausebreak:19,capslock:20,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,leftarrow:37,uparrow:38,rightarrow:39,downarrow:40,insert:45,delete:46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,leftwindowkey:91,rightwindowkey:92,selectkey:93,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,multiply:106,add:107,subtract:109,decimalpoint:110,divide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,numlock:144,scrolllock:145,semicolon:186,equalsign:187,comma:188,dash:189,period:190,forwardslash:191,graveaccent:192,openbracket:219,backslash:220,closebracket:221,singlequote:222};return function(){var t={},o=!1,n=null,a={x:0,y:0,isVisible:!1},i={x:0,y:0,scale:1};function l(o){var n;null==(t=o.pointer||{}).key?t.key="q":t.key=t.key.toLowerCase(),null!=t.pointerSize&&"number"==typeof t.pointerSize||(t.pointerSize=12),null!=t.tailLength&&"number"==typeof t.tailLength||(t.tailLength=10),null!=t.color&&"string"==typeof t.color||(t.color="red"),null!=t.alwaysVisible&&"boolean"==typeof t.alwaysVisible||(t.alwaysVisible=!1),null!=t.opacity&&"number"==typeof t.opacity||(t.opacity=.8),t.keyCode=(n=t.key,e[n])}function r(){n.style.top="".concat((a.y-i.y)/i.scale,"px"),n.style.left="".concat((a.x-i.x)/i.scale,"px"),a.isVisible?n.style.opacity=t.opacity.toString():n.style.opacity="0",1!==i.scale?(n.style.width="".concat(t.pointerSize/i.scale,"px"),n.style.height="".concat(t.pointerSize/i.scale,"px")):(n.style.width="".concat(t.pointerSize,"px"),n.style.height="".concat(t.pointerSize,"px"))}function c(e){a.x=e.pageX,a.y=e.pageY;var t=document.body.style.transform;""!==t?(i.x=Number.parseInt(/translate\((.*)px,/gm.exec(t)[1]),i.y=Number.parseInt(/px,\s(.*)px\)/gm.exec(t)[1]),i.scale=Number.parseFloat(/scale\((.)\)/gm.exec(t)[1])):(i.x=0,i.y=0,i.scale=1),requestAnimationFrame(r)}function s(){(o=!o)?(document.addEventListener("mousemove",c),document.body.classList.add("no-cursor"),a.isVisible=!0):(document.removeEventListener("mousemove",c),document.body.classList.remove("no-cursor"),a.isVisible=!1,requestAnimationFrame(r))}return{id:"pointer",init:function(e){var o;l(e.getConfig()),t.alwaysVisible?s():e.addKeyBinding({keyCode:t.keyCode,key:t.key},(function(){s()})),e.on("pointerColorChange",(function(e){var o;o=e.color,null!=n&&(n.style.backgroundColor=null!=o?o:t.color)})),(o=document.createElement("div")).className="cursor-dot",o.style.width="".concat(t.pointerSize,"px"),o.style.height="".concat(t.pointerSize,"px"),o.style.backgroundColor=t.color,t.alwaysVisible&&(o.style.opacity="0.8"),document.body.appendChild(o),n=o}}}}();
|
||||||
@@ -25,6 +25,12 @@ const Plugin = {
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: () => {
|
||||||
|
|
||||||
|
zoom.reset();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -52,19 +58,11 @@ var zoom = (function(){
|
|||||||
panUpdateInterval = -1;
|
panUpdateInterval = -1;
|
||||||
|
|
||||||
// Check for transform support so that we can fallback otherwise
|
// Check for transform support so that we can fallback otherwise
|
||||||
var supportsTransforms = 'WebkitTransform' in document.body.style ||
|
var supportsTransforms = 'transform' in document.body.style;
|
||||||
'MozTransform' in document.body.style ||
|
|
||||||
'msTransform' in document.body.style ||
|
|
||||||
'OTransform' in document.body.style ||
|
|
||||||
'transform' in document.body.style;
|
|
||||||
|
|
||||||
if( supportsTransforms ) {
|
if( supportsTransforms ) {
|
||||||
// The easing that will be applied when we zoom in/out
|
// The easing that will be applied when we zoom in/out
|
||||||
document.body.style.transition = 'transform 0.8s ease';
|
document.body.style.transition = 'transform 0.8s ease';
|
||||||
document.body.style.OTransition = '-o-transform 0.8s ease';
|
|
||||||
document.body.style.msTransition = '-ms-transform 0.8s ease';
|
|
||||||
document.body.style.MozTransition = '-moz-transform 0.8s ease';
|
|
||||||
document.body.style.WebkitTransition = '-webkit-transform 0.8s ease';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Zoom out if the user hits escape
|
// Zoom out if the user hits escape
|
||||||
@@ -105,10 +103,6 @@ var zoom = (function(){
|
|||||||
// Reset
|
// Reset
|
||||||
if( scale === 1 ) {
|
if( scale === 1 ) {
|
||||||
document.body.style.transform = '';
|
document.body.style.transform = '';
|
||||||
document.body.style.OTransform = '';
|
|
||||||
document.body.style.msTransform = '';
|
|
||||||
document.body.style.MozTransform = '';
|
|
||||||
document.body.style.WebkitTransform = '';
|
|
||||||
}
|
}
|
||||||
// Scale
|
// Scale
|
||||||
else {
|
else {
|
||||||
@@ -116,16 +110,7 @@ var zoom = (function(){
|
|||||||
transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
|
transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
|
||||||
|
|
||||||
document.body.style.transformOrigin = origin;
|
document.body.style.transformOrigin = origin;
|
||||||
document.body.style.OTransformOrigin = origin;
|
|
||||||
document.body.style.msTransformOrigin = origin;
|
|
||||||
document.body.style.MozTransformOrigin = origin;
|
|
||||||
document.body.style.WebkitTransformOrigin = origin;
|
|
||||||
|
|
||||||
document.body.style.transform = transform;
|
document.body.style.transform = transform;
|
||||||
document.body.style.OTransform = transform;
|
|
||||||
document.body.style.msTransform = transform;
|
|
||||||
document.body.style.MozTransform = transform;
|
|
||||||
document.body.style.WebkitTransform = transform;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*!
|
/*!
|
||||||
* reveal.js Zoom plugin
|
* reveal.js Zoom plugin
|
||||||
*/
|
*/
|
||||||
var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(t,o){var n=y();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,s)if(1===o)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=y();n<i?window.scroll(d.x,d.y-14/e*(1-n/i)):n>window.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),o<t?window.scroll(d.x-14/e*(1-o/t),d.y):o>window.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function y(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,r(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e}
|
var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(n){var o=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:o)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;n[i]&&!e.isOverview()&&(n.preventDefault(),t.to({x:n.clientX,y:n.clientY,scale:d,pan:!1}))}))},destroy:function(){t.reset()}},t=function(){var e=1,n=0,o=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,n){var o=r();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*n)/2,t.y-=(window.innerHeight-t.height*n)/2,l)if(1===n)document.body.style.transform="";else{var i=o.x+"px "+o.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+n+")";document.body.style.transformOrigin=i,document.body.style.transform=d}else 1===n?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(o.x+t.x)/n+"px",document.body.style.top=-(o.y+t.y)/n+"px",document.body.style.width=100*n+"%",document.body.style.height=100*n+"%",document.body.style.zoom=n);e=n,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();o<i?window.scroll(d.x,d.y-14/e*(1-o/i)):o>window.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-o)/i)*(14/e)),n<t?window.scroll(d.x-14/e*(1-n/t),d.y):n>window.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-n)/t)*(14/e),d.y)}function r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="transform 0.8s ease"),document.addEventListener("keyup",(function(n){1!==e&&27===n.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(n=t.clientX,o=t.clientY)})),{to:function(n){if(1!==e)t.out();else{if(n.x=n.x||0,n.y=n.y||0,n.element){var o=n.element.getBoundingClientRect();n.x=o.left-20,n.y=o.top-20,n.width=o.width+40,n.height=o.height+40}void 0!==n.width&&void 0!==n.height&&(n.scale=Math.max(Math.min(window.innerWidth/n.width,window.innerHeight/n.height),1)),n.scale>1&&(n.x*=n.scale,n.y*=n.scale,s(n,n.scale),!1!==n.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=o()}(this,(function(){"use strict";
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=t()}(this,(function(){"use strict";
|
||||||
/*!
|
/*!
|
||||||
* reveal.js Zoom plugin
|
* reveal.js Zoom plugin
|
||||||
*/var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(t){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;t[i]&&!e.isOverview()&&(t.preventDefault(),o.to({x:t.clientX,y:t.clientY,scale:d,pan:!1}))}))}},o=function(){var e=1,t=0,n=0,i=-1,d=-1,s="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style;function r(o,t){var n=l();if(o.width=o.width||1,o.height=o.height||1,o.x-=(window.innerWidth-o.width*t)/2,o.y-=(window.innerHeight-o.height*t)/2,s)if(1===t)document.body.style.transform="",document.body.style.OTransform="",document.body.style.msTransform="",document.body.style.MozTransform="",document.body.style.WebkitTransform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-o.x+"px,"+-o.y+"px) scale("+t+")";document.body.style.transformOrigin=i,document.body.style.OTransformOrigin=i,document.body.style.msTransformOrigin=i,document.body.style.MozTransformOrigin=i,document.body.style.WebkitTransformOrigin=i,document.body.style.transform=d,document.body.style.OTransform=d,document.body.style.msTransform=d,document.body.style.MozTransform=d,document.body.style.WebkitTransform=d}else 1===t?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+o.x)/t+"px",document.body.style.top=-(n.y+o.y)/t+"px",document.body.style.width=100*t+"%",document.body.style.height=100*t+"%",document.body.style.zoom=t);e=t,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function m(){var o=.12*window.innerWidth,i=.12*window.innerHeight,d=l();n<i?window.scroll(d.x,d.y-14/e*(1-n/i)):n>window.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),t<o?window.scroll(d.x-14/e*(1-t/o),d.y):t>window.innerWidth-o&&window.scroll(d.x+(1-(window.innerWidth-t)/o)*(14/e),d.y)}function l(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return s&&(document.body.style.transition="transform 0.8s ease",document.body.style.OTransition="-o-transform 0.8s ease",document.body.style.msTransition="-ms-transform 0.8s ease",document.body.style.MozTransition="-moz-transform 0.8s ease",document.body.style.WebkitTransition="-webkit-transform 0.8s ease"),document.addEventListener("keyup",(function(t){1!==e&&27===t.keyCode&&o.out()})),document.addEventListener("mousemove",(function(o){1!==e&&(t=o.clientX,n=o.clientY)})),{to:function(t){if(1!==e)o.out();else{if(t.x=t.x||0,t.y=t.y||0,t.element){var n=t.element.getBoundingClientRect();t.x=n.left-20,t.y=n.top-20,t.width=n.width+40,t.height=n.height+40}void 0!==t.width&&void 0!==t.height&&(t.scale=Math.max(Math.min(window.innerWidth/t.width,window.innerHeight/t.height),1)),t.scale>1&&(t.x*=t.scale,t.y*=t.scale,r(t,t.scale),!1!==t.pan&&(i=setTimeout((function(){d=setInterval(m,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),r({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}}));
|
*/var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))},destroy:function(){t.reset()}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,o){var n=r();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,l)if(1===o)document.body.style.transform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.transform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();n<i?window.scroll(d.x,d.y-14/e*(1-n/i)):n>window.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),o<t?window.scroll(d.x-14/e*(1-o/t),d.y):o>window.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,s(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}}));
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
<link rel="stylesheet" href="{{{base}}}plugin/chalkboard/style.css">
|
<link rel="stylesheet" href="{{{base}}}plugin/chalkboard/style.css">
|
||||||
{{/enableChalkboard}}
|
{{/enableChalkboard}}
|
||||||
|
|
||||||
|
{{#enablePointer}}
|
||||||
|
<link rel="stylesheet" href="{{{base}}}plugin/reveal-pointer/pointer.css" />
|
||||||
|
{{/enablePointer}}
|
||||||
|
|
||||||
{{#cssPaths}}
|
{{#cssPaths}}
|
||||||
<link rel="stylesheet" href="{{{base}}}{{{.}}}" />
|
<link rel="stylesheet" href="{{{base}}}{{{.}}}" />
|
||||||
{{/cssPaths}}
|
{{/cssPaths}}
|
||||||
@@ -113,6 +117,14 @@
|
|||||||
{{#enableChalkboard}}
|
{{#enableChalkboard}}
|
||||||
<script src="{{{base}}}plugin/chalkboard/plugin.js"></script>
|
<script src="{{{base}}}plugin/chalkboard/plugin.js"></script>
|
||||||
{{/enableChalkboard}}
|
{{/enableChalkboard}}
|
||||||
|
{{#enablePointer}}
|
||||||
|
<script src="{{{base}}}plugin/reveal-pointer/pointer.js"></script>
|
||||||
|
{{/enablePointer}}
|
||||||
|
{{#timeForPresentation}}
|
||||||
|
{{#enableTimeBar}}
|
||||||
|
<script src="{{{base}}}plugin/elapsed-time-bar/elapsed-time-bar.js"></script>
|
||||||
|
{{/enableTimeBar}}
|
||||||
|
{{/timeForPresentation}}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function extend() {
|
function extend() {
|
||||||
@@ -144,8 +156,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var bgColor = getComputedStyle(document.documentElement).getPropertyValue('--r-background-color').trim();
|
var bgColor = getComputedStyle(document.documentElement).getPropertyValue('--r-background-color').trim();
|
||||||
|
var isLight = isLight(bgColor);
|
||||||
|
|
||||||
if(isLight(bgColor)){
|
if(isLight){
|
||||||
document.body.classList.add('has-light-background');
|
document.body.classList.add('has-light-background');
|
||||||
} else {
|
} else {
|
||||||
document.body.classList.add('has-dark-background');
|
document.body.classList.add('has-dark-background');
|
||||||
@@ -172,14 +185,38 @@
|
|||||||
{{#enableMenu}}
|
{{#enableMenu}}
|
||||||
RevealMenu,
|
RevealMenu,
|
||||||
{{/enableMenu}}
|
{{/enableMenu}}
|
||||||
|
{{#enablePointer}}
|
||||||
|
RevealPointer,
|
||||||
|
{{/enablePointer}}
|
||||||
{{#enableChalkboard}}
|
{{#enableChalkboard}}
|
||||||
RevealChalkboard,
|
RevealChalkboard,
|
||||||
{{/enableChalkboard}}
|
{{/enableChalkboard}}
|
||||||
|
{{#timeForPresentation}}
|
||||||
|
{{#enableTimeBar}}
|
||||||
|
ElapsedTimeBar
|
||||||
|
{{/enableTimeBar}}
|
||||||
|
{{/timeForPresentation}}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
|
{{#timeForPresentation}}
|
||||||
|
allottedTime: {{{.}}} * 1000,
|
||||||
|
{{/timeForPresentation}}
|
||||||
|
|
||||||
mathjax3: {
|
mathjax3: {
|
||||||
mathjax: '{{{base}}}plugin/math/mathjax/tex-mml-chtml.js',
|
mathjax: '{{{base}}}plugin/math/mathjax/tex-mml-chtml.js',
|
||||||
},
|
},
|
||||||
|
markdown: {
|
||||||
|
gfm: true,
|
||||||
|
mangle: true,
|
||||||
|
pedantic: false,
|
||||||
|
smartLists: false,
|
||||||
|
smartypants: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
mermaid: {
|
||||||
|
theme: isLight ? 'default' : 'dark',
|
||||||
|
},
|
||||||
|
|
||||||
{{#enableCustomControls}}
|
{{#enableCustomControls}}
|
||||||
customcontrols: {
|
customcontrols: {
|
||||||
@@ -221,4 +258,6 @@
|
|||||||
Reveal.initialize(options);
|
Reveal.initialize(options);
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
<!-- created with {{! ignore me }}Advanced Slides -->
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -5,7 +5,7 @@
|
|||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Ma bibliothèque",
|
"name": "Ma bibliothèque",
|
||||||
"lastUpdate": 1774723941998
|
"lastUpdate": 1774813426972
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"renderCitations": true,
|
"renderCitations": true,
|
||||||
|
|||||||
@@ -1,15 +1,76 @@
|
|||||||
|
---
|
||||||
|
center: true
|
||||||
|
transition: slide
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
# Définition
|
# Définition
|
||||||
|
|
||||||
|
|
||||||
![[désintégration audioactive#^definition]]
|
![[désintégration audioactive#^definition]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
# Exemples
|
# Exemples
|
||||||
|
|
||||||
$1 \longrightarrow \text{un } 1$
|
--
|
||||||
. . .
|
## Exemple 1
|
||||||
$11 \longrightarrow \text{deux }1$
|
|
||||||
. . .
|
|
||||||
$21 \longrightarrow \text{un }2,\quad \text{un }1$
|
|
||||||
. . .
|
|
||||||
$1211 \longrightarrow \text{un }1,\quad \text{un }2,\quad \text{deux } 1$
|
|
||||||
. . .
|
|
||||||
|
|
||||||
|
+ $1 \longrightarrow \text{un } 1$
|
||||||
|
+ $11 \longrightarrow \text{deux }1$
|
||||||
|
+ $21 \longrightarrow \text{un }2,\quad \text{un }1$
|
||||||
|
+ $1211 \longrightarrow \text{un }1,\quad \text{un }2,\quad \text{deux }2$
|
||||||
|
+ $\underparen{111\!}\,221 \longrightarrow \text{trois }1,\quad \text{deux }2,\quad \text{un} 1$
|
||||||
|
+ $312211$
|
||||||
|
+ $13112221$
|
||||||
|
+ $1113213211$
|
||||||
|
|
||||||
|
--
|
||||||
|
## Exemple 2
|
||||||
|
|
||||||
|
$22 \longrightarrow \text{deux} 2$ <!-- element class="fragment" -->
|
||||||
|
|
||||||
|
$22$ <!-- element class="fragment" -->
|
||||||
|
|
||||||
|
$22$ <!-- element class="fragment" -->
|
||||||
|
|
||||||
|
$\vdots$ <!-- element class="fragment" -->
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
# Notations
|
||||||
|
|
||||||
|
+ $12 \longrightarrow 1112$
|
||||||
|
+ $,11,12,$
|
||||||
|
+ $[11$ et $12]$
|
||||||
|
+ $1^{3}2^{1}$
|
||||||
|
+ $1^{\geq 2}(\neq 1)^{3}$
|
||||||
|
+ $[1^{3}X^{1 \text{ ou } 2}$
|
||||||
|
|
||||||
|
---
|
||||||
|
# Propriétés
|
||||||
|
|
||||||
|
--
|
||||||
|
## Première propriété évidente
|
||||||
|
|
||||||
|
Pour une étape : $a^{\alpha}b^{\beta}c^{\gamma}d^{\delta}\cdots \longrightarrow \alpha a\beta b\gamma c\delta d\cdots$
|
||||||
|
|
||||||
|
Il est évident que : $a\neq b,\quad b\neq c,\quad c\neq d,\dots$
|
||||||
|
|
||||||
|
--
|
||||||
|
## Théorème du jour 1
|
||||||
|
|
||||||
|
Les morceaux de type :
|
||||||
|
+ $,ax,bx,$ <span class="fragment"> devrait être dérivé en $(a+b)x$ </span>
|
||||||
|
+ $x^{\geq 4}$ <span class="fragment"> $=\begin{cases}x,xx,x\cdots \\ ,xx,xx, \cdots\end{cases}$ impossible </span>
|
||||||
|
+ $x^{3}y^{3}$ <span class="fragment"> $=\begin{cases},xx,xy,yy, \text{ un cas de } ,ay,by, \\ x,xx,xy,y \text{ un cas de } ,ax,bx,\end{cases}$ </span>
|
||||||
|
|
||||||
|
n'apparaîssent plus après 1 jour.
|
||||||
|
|
||||||
|
--
|
||||||
|
## Théorème du jour 2
|
||||||
|
|
||||||
|
Après 2 jours, on ne peut plus avoir :
|
||||||
|
+ apparition d'un $\geq 4$ <span class="fragment">car $x^4$ impossible (thm. J1)</span>
|
||||||
|
+ $3X3$ <span class="fragment"> $=\begin{cases},3X,3y \longleftarrow X^3y^3 {\,\color{red}\times } \text{ (thm. J1)} \\ 3,X3, \text{ impossible (thm. J1)}\end{cases}$ </span>
|
||||||
@@ -43,13 +43,13 @@ header-auto-numbering:
|
|||||||
|
|
||||||
# Propriétés
|
# Propriétés
|
||||||
|
|
||||||
> [!proposition]+
|
> [!proposition]+ conséquence du regroupement
|
||||||
> Pour une étape :
|
> Pour une étape :
|
||||||
> $a^{\alpha}b^{\beta}c^{\gamma}d^{\delta}\cdots \longrightarrow \alpha a\beta b\gamma c\delta d\cdots$
|
> $a^{\alpha}b^{\beta}c^{\gamma}d^{\delta}\cdots \longrightarrow \alpha a\beta b\gamma c\delta d\cdots$
|
||||||
> Il est évident que :
|
> Il est évident que :
|
||||||
> $a\neq b,\quad b\neq c,\quad c\neq d,\dots$
|
> $a\neq b,\quad b\neq c,\quad c\neq d,\dots$
|
||||||
> - dem Cela découle directement du fait que l'on choisit, à chaque fois, les plus grands $\alpha, \beta, \gamma, \delta\dots$ possibles
|
> - dem Cela découle directement du fait que l'on choisit, à chaque fois, les plus grands $\alpha, \beta, \gamma, \delta\dots$ possibles
|
||||||
|
^regroupement
|
||||||
## Atomes
|
## Atomes
|
||||||
|
|
||||||
> [!definition] Découpage
|
> [!definition] Découpage
|
||||||
|
|||||||
Reference in New Issue
Block a user