mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 18:22:40 -04: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();
 | |
| 
 | |
| }());
 |