1 import {EditorButton, EditorButtonDefinition} from "../../framework/buttons";
2 import undoIcon from "@icons/editor/undo.svg";
3 import {EditorUiContext} from "../../framework/core";
12 import redoIcon from "@icons/editor/redo.svg";
13 import sourceIcon from "@icons/editor/source-view.svg";
14 import fullscreenIcon from "@icons/editor/fullscreen.svg";
15 import aboutIcon from "@icons/editor/about.svg";
16 import {getEditorContentAsHtml} from "../../../utils/actions";
18 export const undo: EditorButtonDefinition = {
21 action(context: EditorUiContext) {
22 context.editor.dispatchCommand(UNDO_COMMAND, undefined);
23 context.manager.triggerFutureStateRefresh();
25 isActive(selection: BaseSelection|null): boolean {
28 setup(context: EditorUiContext, button: EditorButton) {
29 button.toggleDisabled(true);
31 context.editor.registerCommand(CAN_UNDO_COMMAND, (payload: boolean): boolean => {
32 button.toggleDisabled(!payload)
34 }, COMMAND_PRIORITY_LOW);
38 export const redo: EditorButtonDefinition = {
41 action(context: EditorUiContext) {
42 context.editor.dispatchCommand(REDO_COMMAND, undefined);
43 context.manager.triggerFutureStateRefresh();
45 isActive(selection: BaseSelection|null): boolean {
48 setup(context: EditorUiContext, button: EditorButton) {
49 button.toggleDisabled(true);
51 context.editor.registerCommand(CAN_REDO_COMMAND, (payload: boolean): boolean => {
52 button.toggleDisabled(!payload)
54 }, COMMAND_PRIORITY_LOW);
59 export const source: EditorButtonDefinition = {
62 async action(context: EditorUiContext) {
63 const modal = context.manager.createModal('source');
64 const source = await getEditorContentAsHtml(context.editor);
72 export const fullscreen: EditorButtonDefinition = {
75 async action(context: EditorUiContext, button: EditorButton) {
76 const isFullScreen = context.containerDOM.classList.contains('fullscreen');
77 context.containerDOM.classList.toggle('fullscreen', !isFullScreen);
78 (context.containerDOM.closest('body') as HTMLElement).classList.toggle('editor-is-fullscreen', !isFullScreen);
79 button.setActiveState(!isFullScreen);
81 isActive(selection, context: EditorUiContext) {
82 return context.containerDOM.classList.contains('fullscreen');
86 export const about: EditorButtonDefinition = {
87 label: 'About the editor',
89 async action(context: EditorUiContext, button: EditorButton) {
90 const modal = context.manager.createModal('about');
93 isActive(selection, context: EditorUiContext) {