diff options
Diffstat (limited to 'geschichte/js/controllers/focus.js')
-rw-r--r-- | geschichte/js/controllers/focus.js | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/geschichte/js/controllers/focus.js b/geschichte/js/controllers/focus.js deleted file mode 100644 index 3e68c3f..0000000 --- a/geschichte/js/controllers/focus.js +++ /dev/null @@ -1,103 +0,0 @@ -import { closest } from '../utils/util.js' - -/** - * Manages focus when a presentation is embedded. This - * helps us only capture keyboard from the presentation - * a user is currently interacting with in a page where - * multiple presentations are embedded. - */ - -const STATE_FOCUS = 'focus'; -const STATE_BLUR = 'blur'; - -export default class Focus { - - constructor( Reveal ) { - - this.Reveal = Reveal; - - this.onRevealPointerDown = this.onRevealPointerDown.bind( this ); - this.onDocumentPointerDown = this.onDocumentPointerDown.bind( this ); - - } - - /** - * Called when the reveal.js config is updated. - */ - configure( config, oldConfig ) { - - if( config.embedded ) { - this.blur(); - } - else { - this.focus(); - this.unbind(); - } - - } - - bind() { - - if( this.Reveal.getConfig().embedded ) { - this.Reveal.getRevealElement().addEventListener( 'pointerdown', this.onRevealPointerDown, false ); - } - - } - - unbind() { - - this.Reveal.getRevealElement().removeEventListener( 'pointerdown', this.onRevealPointerDown, false ); - document.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false ); - - } - - focus() { - - if( this.state !== STATE_FOCUS ) { - this.Reveal.getRevealElement().classList.add( 'focused' ); - document.addEventListener( 'pointerdown', this.onDocumentPointerDown, false ); - } - - this.state = STATE_FOCUS; - - } - - blur() { - - if( this.state !== STATE_BLUR ) { - this.Reveal.getRevealElement().classList.remove( 'focused' ); - document.removeEventListener( 'pointerdown', this.onDocumentPointerDown, false ); - } - - this.state = STATE_BLUR; - - } - - isFocused() { - - return this.state === STATE_FOCUS; - - } - - destroy() { - - this.Reveal.getRevealElement().classList.remove( 'focused' ); - - } - - onRevealPointerDown( event ) { - - this.focus(); - - } - - onDocumentPointerDown( event ) { - - let revealElement = closest( event.target, '.reveal' ); - if( !revealElement || revealElement !== this.Reveal.getRevealElement() ) { - this.blur(); - } - - } - -} \ No newline at end of file |