CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

| Download
Project: KOB1
Views: 16973
1
(function() {
2
3
// don't emit events from inside the previews themselves
4
if( window.location.search.match( /receiver/gi ) ) { return; }
5
6
var socket = io.connect( window.location.origin ),
7
socketId = Math.random().toString().slice( 2 );
8
9
console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
10
11
window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
12
13
/**
14
* Posts the current slide data to the notes window
15
*/
16
function post() {
17
18
var slideElement = Reveal.getCurrentSlide(),
19
notesElement = slideElement.querySelector( 'aside.notes' );
20
21
var messageData = {
22
notes: '',
23
markdown: false,
24
socketId: socketId,
25
state: Reveal.getState()
26
};
27
28
// Look for notes defined in a slide attribute
29
if( slideElement.hasAttribute( 'data-notes' ) ) {
30
messageData.notes = slideElement.getAttribute( 'data-notes' );
31
}
32
33
// Look for notes defined in an aside element
34
if( notesElement ) {
35
messageData.notes = notesElement.innerHTML;
36
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
37
}
38
39
socket.emit( 'statechanged', messageData );
40
41
}
42
43
// When a new notes window connects, post our current state
44
socket.on( 'new-subscriber', function( data ) {
45
post();
46
} );
47
48
// When the state changes from inside of the speaker view
49
socket.on( 'statechanged-speaker', function( data ) {
50
Reveal.setState( data.state );
51
} );
52
53
// Monitor events that trigger a change in state
54
Reveal.addEventListener( 'slidechanged', post );
55
Reveal.addEventListener( 'fragmentshown', post );
56
Reveal.addEventListener( 'fragmenthidden', post );
57
Reveal.addEventListener( 'overviewhidden', post );
58
Reveal.addEventListener( 'overviewshown', post );
59
Reveal.addEventListener( 'paused', post );
60
Reveal.addEventListener( 'resumed', post );
61
62
// Post the initial state
63
post();
64
65
}());
66
67