8
0

decouplededitorui.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /**
  2. * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /**
  6. * @module editor-decoupled/decouplededitorui
  7. */
  8. import EditorUI from '@ckeditor/ckeditor5-core/src/editor/editorui';
  9. import enableToolbarKeyboardFocus from '@ckeditor/ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus';
  10. import normalizeToolbarConfig from '@ckeditor/ckeditor5-ui/src/toolbar/normalizetoolbarconfig';
  11. /**
  12. * The decoupled editor UI class.
  13. *
  14. * @extends module:core/editor/editorui~EditorUI
  15. */
  16. export default class DecoupledEditorUI extends EditorUI {
  17. /**
  18. * @inheritDoc
  19. */
  20. constructor( editor, view ) {
  21. super( editor, view );
  22. /**
  23. * A normalized `config.toolbar` object.
  24. *
  25. * @type {Object}
  26. * @private
  27. */
  28. this._toolbarConfig = normalizeToolbarConfig( editor.config.get( 'toolbar' ) );
  29. }
  30. /**
  31. * Initializes the UI.
  32. */
  33. init() {
  34. const editor = this.editor;
  35. const view = this.view;
  36. view.render();
  37. // Set up the editable.
  38. const editingRoot = editor.editing.view.document.getRoot();
  39. view.editable.bind( 'isReadOnly' ).to( editingRoot );
  40. view.editable.bind( 'isFocused' ).to( editor.editing.view.document );
  41. editor.editing.view.attachDomRoot( view.editableElement );
  42. view.editable.name = editingRoot.rootName;
  43. this.focusTracker.add( this.view.editableElement );
  44. this.view.toolbar.fillFromConfig( this._toolbarConfig.items, this.componentFactory );
  45. enableToolbarKeyboardFocus( {
  46. origin: editor.editing.view,
  47. originFocusTracker: this.focusTracker,
  48. originKeystrokeHandler: editor.keystrokes,
  49. toolbar: this.view.toolbar
  50. } );
  51. }
  52. }