mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 19:17:13 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
(function() {
 | 
						|
 | 
						|
	// don't emit events from inside the previews themselves
 | 
						|
	if( window.location.search.match( /receiver/gi ) ) { return; }
 | 
						|
 | 
						|
	var socket = io.connect( window.location.origin ),
 | 
						|
		socketId = Math.random().toString().slice( 2 );
 | 
						|
 | 
						|
	console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
 | 
						|
 | 
						|
	window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Posts the current slide data to the notes window
 | 
						|
	 */
 | 
						|
	function post() {
 | 
						|
 | 
						|
		var slideElement = Reveal.getCurrentSlide(),
 | 
						|
			notesElement = slideElement.querySelector( 'aside.notes' );
 | 
						|
 | 
						|
		var messageData = {
 | 
						|
			notes: '',
 | 
						|
			markdown: false,
 | 
						|
			socketId: socketId,
 | 
						|
			state: Reveal.getState()
 | 
						|
		};
 | 
						|
 | 
						|
		// Look for notes defined in a slide attribute
 | 
						|
		if( slideElement.hasAttribute( 'data-notes' ) ) {
 | 
						|
			messageData.notes = slideElement.getAttribute( 'data-notes' );
 | 
						|
		}
 | 
						|
 | 
						|
		// Look for notes defined in an aside element
 | 
						|
		if( notesElement ) {
 | 
						|
			messageData.notes = notesElement.innerHTML;
 | 
						|
			messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
 | 
						|
		}
 | 
						|
 | 
						|
		socket.emit( 'statechanged', messageData );
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	// When a new notes window connects, post our current state
 | 
						|
	socket.on( 'connect', function( data ) {
 | 
						|
		post();
 | 
						|
	} );
 | 
						|
 | 
						|
	// Monitor events that trigger a change in state
 | 
						|
	Reveal.addEventListener( 'slidechanged', post );
 | 
						|
	Reveal.addEventListener( 'fragmentshown', post );
 | 
						|
	Reveal.addEventListener( 'fragmenthidden', post );
 | 
						|
	Reveal.addEventListener( 'overviewhidden', post );
 | 
						|
	Reveal.addEventListener( 'overviewshown', post );
 | 
						|
	Reveal.addEventListener( 'paused', post );
 | 
						|
	Reveal.addEventListener( 'resumed', post );
 | 
						|
 | 
						|
	// Post the initial state
 | 
						|
	post();
 | 
						|
 | 
						|
}());
 |