fakeselection.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals document */
  6. import ViewDocument from '/ckeditor5/engine/view/document.js';
  7. import ViewRange from '/ckeditor5/engine/view/range.js';
  8. import { setData } from '/ckeditor5/engine/dev-utils/view.js';
  9. const viewDocument = new ViewDocument();
  10. const domEditable = document.getElementById( 'editor' );
  11. const viewRoot = viewDocument.createRoot( domEditable );
  12. let viewStrong;
  13. document.getElementById( 'create-fake' ).addEventListener( 'click', () => {
  14. const viewP = viewRoot.getChild( 0 );
  15. viewStrong = viewP.getChild( 1 );
  16. const range = ViewRange.createOn( viewStrong );
  17. viewDocument.selection.setRanges( [ range ] );
  18. viewDocument.selection.setFake( true, { label: 'fake selection over bar' } );
  19. viewStrong.setStyle( 'background-color', 'yellow' );
  20. viewDocument.focus();
  21. } );
  22. viewDocument.on( 'selectionChange', ( evt, data ) => {
  23. viewDocument.selection.setTo( data.newSelection );
  24. viewDocument.render();
  25. } );
  26. viewDocument.selection.on( 'change', () => {
  27. if ( viewStrong && !viewDocument.selection.isFake ) {
  28. viewStrong.removeStyle( 'background-color' );
  29. }
  30. } );
  31. setData( viewDocument, '<container:p>{}foo<strong>bar</strong>baz</container:p>' );
  32. viewDocument.focus();