inline.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals console:false, document, window */
  6. import InlineEditor from '../../src/inline';
  7. import ArticlePreset from '@ckeditor/ckeditor5-presets/src/article';
  8. import testUtils from '@ckeditor/ckeditor5-utils/tests/_utils/utils';
  9. window.editors = {};
  10. window.editables = [];
  11. window._observers = [];
  12. function initEditors() {
  13. init( '#editor-1' );
  14. init( '#editor-2' );
  15. function init( selector ) {
  16. InlineEditor.create( document.querySelector( selector ), {
  17. plugins: [ ArticlePreset ],
  18. toolbar: [ 'headings', 'bold', 'italic', 'undo', 'redo', 'link', 'unlink' ]
  19. } )
  20. .then( editor => {
  21. console.log( `${ selector } has been initialized`, editor );
  22. console.log( 'It has been added to global `editors` and `editables`.' );
  23. window.editors[ selector ] = editor;
  24. window.editables.push( editor.editing.view.getRoot() );
  25. let observer = testUtils.createObserver();
  26. observer.observe(
  27. `${ selector }.ui.focusTracker`,
  28. editor.ui.focusTracker,
  29. [ 'isFocused' ]
  30. );
  31. window._observers.push( observer );
  32. } )
  33. .catch( err => {
  34. console.error( err.stack );
  35. } );
  36. }
  37. }
  38. function destroyEditors() {
  39. for ( let selector in window.editors ) {
  40. window.editors[ selector ].destroy().then( () => {
  41. console.log( `${ selector } was destroyed.` );
  42. } );
  43. }
  44. for ( let observer of window._observers ) {
  45. observer.stopListening();
  46. }
  47. window.editors = {};
  48. window.editables.length = window._observers.length = 0;
  49. }
  50. document.getElementById( 'initEditors' ).addEventListener( 'click', initEditors );
  51. document.getElementById( 'destroyEditors' ).addEventListener( 'click', destroyEditors );