clickobserver.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /**
  2. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals console, document */
  6. import Document from '../../../src/view/document';
  7. import DomEventObserver from '../../../src/view/observer/domeventobserver';
  8. const viewDocument = new Document();
  9. class ClickObserver1 extends DomEventObserver {
  10. constructor( viewDocument ) {
  11. super( viewDocument );
  12. this.id = 1;
  13. this.domEventType = 'click';
  14. }
  15. onDomEvent( domEvt ) {
  16. this.fire( 'click', domEvt, { id: this.id } );
  17. }
  18. }
  19. class ClickObserver2 extends DomEventObserver {
  20. constructor( viewDocument ) {
  21. super( viewDocument );
  22. this.id = 2;
  23. this.domEventType = 'click';
  24. }
  25. onDomEvent( domEvt ) {
  26. this.fire( 'click', domEvt, { id: this.id } );
  27. }
  28. }
  29. const observer1 = new ClickObserver1( viewDocument );
  30. viewDocument.on( 'click', ( evt, evtData ) => console.log( 'click', evtData.id, evtData.domTarget.id ) );
  31. document.getElementById( 'enable1' ).addEventListener( 'click', () => observer1.enable() );
  32. document.getElementById( 'disable1' ).addEventListener( 'click', () => observer1.disable() );
  33. // Random order.
  34. viewDocument.addObserver( ClickObserver1 );
  35. viewDocument.createRoot( document.getElementById( 'clickerA' ), 'clickerA' );
  36. viewDocument.addObserver( ClickObserver2 );
  37. viewDocument.createRoot( document.getElementById( 'clickerB' ), 'clickerB' );