focus.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  4. */
  5. /* globals document */
  6. import View from '../../../src/view/view';
  7. import ViewPosition from '../../../src/view/position';
  8. import ViewRange from '../../../src/view/range';
  9. import createViewRoot from '../_utils/createroot';
  10. import { StylesProcessor } from '../../../src/view/stylesmap';
  11. const view = new View( new StylesProcessor() );
  12. const viewDocument = view.document;
  13. const domEditable1 = document.getElementById( 'editable1' );
  14. const domEditable2 = document.getElementById( 'editable2' );
  15. const editable1 = createViewRoot( viewDocument, 'div', 'editable1' );
  16. view.attachDomRoot( domEditable1, 'editable1' );
  17. const editable2 = createViewRoot( viewDocument, 'div', 'editable2' );
  18. view.attachDomRoot( domEditable2, 'editable2' );
  19. let text1, text2;
  20. view.change( writer => {
  21. text1 = writer.createText( 'Foo bar baz' );
  22. text2 = writer.createText( 'Foo bar baz' );
  23. writer.insert( ViewPosition._createAt( editable1, 0 ), text1 );
  24. writer.insert( ViewPosition._createAt( editable2, 0 ), text2 );
  25. } );
  26. document.getElementById( 'button1' ).addEventListener( 'click', () => {
  27. view.change( writer => {
  28. writer.setSelection( ViewRange._createFromParentsAndOffsets( text1, 4, text1, 7 ) );
  29. } );
  30. view.focus();
  31. } );
  32. document.getElementById( 'button2' ).addEventListener( 'click', () => {
  33. view.change( writer => {
  34. writer.setSelection( ViewRange._createFromParentsAndOffsets( text2, 0, text2, 3 ) );
  35. } );
  36. view.focus();
  37. } );