UNPKG

@kukejs/kkeditor-full-screen

Version:

基于 ckeditor 的编辑器全屏功能

61 lines (60 loc) 2 kB
import { Plugin } from 'ckeditor5/src/core'; import { ButtonView } from 'ckeditor5/src/ui'; import '../../theme/index.css'; /** * 编辑器全屏的工具栏按钮 * 因为全屏功能修改的是编辑器整体,而不是修改编辑器中的内容 * 所以不需要实现命令和转换器 */ export default class FullScreenUI extends Plugin { constructor(editor) { super(editor); /** * 定义一个控制是否全屏的变量 */ this.set('isFullScreen', false); } init() { const editor = this.editor; // 注册一个工具栏按钮 editor.ui.componentFactory.add('fullScreen', () => { // 获取当前编辑器的 DOM const buttonView = new ButtonView(); buttonView.set({ label: '全屏', withText: true }); // 当全屏活动时,使工具栏按钮显示为单击状态 buttonView.bind('isOn').to(this, 'isFullScreen'); this.listenTo(buttonView, 'execute', () => { if (!this.isFullScreen) { this.openFullScreen(); } else { this.closeFullScreen(); } }); return buttonView; }); } /** * 编辑器全屏 */ openFullScreen() { const editor = this.editor; // 获取根节点 const wrapperElement = editor.ui.element; wrapperElement === null || wrapperElement === void 0 ? void 0 : wrapperElement.classList.add('kkeditor-full-screen'); this.isFullScreen = true; } /** * */ closeFullScreen() { const editor = this.editor; // 获取根节点 const wrapperElement = editor.ui.element; wrapperElement === null || wrapperElement === void 0 ? void 0 : wrapperElement.classList.remove('kkeditor-full-screen'); this.isFullScreen = false; } }