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 {getEditorContentAsHtml} from "../../../utils/actions";
15 import fullscreenIcon from "@icons/editor/fullscreen.svg";
17 export const undo: EditorButtonDefinition = {
20 action(context: EditorUiContext) {
21 context.editor.dispatchCommand(UNDO_COMMAND, undefined);
22 context.manager.triggerFutureStateRefresh();
24 isActive(selection: BaseSelection|null): boolean {
27 setup(context: EditorUiContext, button: EditorButton) {
28 button.toggleDisabled(true);
30 context.editor.registerCommand(CAN_UNDO_COMMAND, (payload: boolean): boolean => {
31 button.toggleDisabled(!payload)
33 }, COMMAND_PRIORITY_LOW);
37 export const redo: EditorButtonDefinition = {
40 action(context: EditorUiContext) {
41 context.editor.dispatchCommand(REDO_COMMAND, undefined);
42 context.manager.triggerFutureStateRefresh();
44 isActive(selection: BaseSelection|null): boolean {
47 setup(context: EditorUiContext, button: EditorButton) {
48 button.toggleDisabled(true);
50 context.editor.registerCommand(CAN_REDO_COMMAND, (payload: boolean): boolean => {
51 button.toggleDisabled(!payload)
53 }, COMMAND_PRIORITY_LOW);
58 export const source: EditorButtonDefinition = {
61 async action(context: EditorUiContext) {
62 const modal = context.manager.createModal('source');
63 const source = await getEditorContentAsHtml(context.editor);
71 export const fullscreen: EditorButtonDefinition = {
74 async action(context: EditorUiContext, button: EditorButton) {
75 const isFullScreen = context.containerDOM.classList.contains('fullscreen');
76 context.containerDOM.classList.toggle('fullscreen', !isFullScreen);
77 (context.containerDOM.closest('body') as HTMLElement).classList.toggle('editor-is-fullscreen', !isFullScreen);
78 button.setActiveState(!isFullScreen);
80 isActive(selection, context: EditorUiContext) {
81 return context.containerDOM.classList.contains('fullscreen');