focus.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. import Document from '/ckeditor5/engine/view/document.js';
  7. import MutationObserver from '/ckeditor5/engine/view/observer/mutationobserver.js';
  8. import SelectionObserver from '/ckeditor5/engine/view/observer/selectionobserver.js';
  9. import FocusObserver from '/ckeditor5/engine/view/observer/focusobserver.js';
  10. import { parse } from '/tests/engine/_utils/view.js';
  11. const viewDocument = new Document();
  12. const domEditable1 = document.getElementById( 'editable1' );
  13. const domEditable2 = document.getElementById( 'editable2' );
  14. const editable1 = viewDocument.createRoot( domEditable1, 'editable1' );
  15. const editable2 = viewDocument.createRoot( domEditable2, 'editable2' );
  16. viewDocument.on( 'selectionChange', ( evt, data ) => {
  17. viewDocument.selection.setTo( data.newSelection );
  18. } );
  19. viewDocument.addObserver( MutationObserver );
  20. viewDocument.addObserver( SelectionObserver );
  21. viewDocument.addObserver( FocusObserver );
  22. const { selection: selection1 } = parse( '<p>Foo {bar} baz.</p>', { rootElement: editable1 } );
  23. const { selection: selection2 } = parse( '<p>{Foo} bar baz.</p>', { rootElement: editable2 } );
  24. document.getElementById( 'button1' ).addEventListener( 'click', () => {
  25. viewDocument.selection.setTo( selection1 );
  26. viewDocument.focus();
  27. } );
  28. document.getElementById( 'button2' ).addEventListener( 'click', () => {
  29. viewDocument.selection.setTo( selection2 );
  30. viewDocument.focus();
  31. } );
  32. viewDocument.render();