From a23c2d557d63c9601c2798f34584aaf345d3ee34 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 2 Dec 2021 17:21:07 +0200 Subject: [PATCH] add new component --- .../src/components/UndoRedoButton.js | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 wax-prosemirror-components/src/components/UndoRedoButton.js diff --git a/wax-prosemirror-components/src/components/UndoRedoButton.js b/wax-prosemirror-components/src/components/UndoRedoButton.js new file mode 100644 index 000000000..834b053ff --- /dev/null +++ b/wax-prosemirror-components/src/components/UndoRedoButton.js @@ -0,0 +1,51 @@ +/* eslint react/prop-types: 0 */ +import React, { useContext, useMemo } from 'react'; +import { WaxContext } from 'wax-prosemirror-core'; +import MenuButton from '../ui/buttons/MenuButton'; + +const UndoRedoButton = ({ view = {}, item }) => { + const { active, icon, label, run, select, title } = item; + + const { + view: { main }, + activeViewId, + activeView, + } = useContext(WaxContext); + + const isEditable = main.props.editable(editable => { + return editable; + }); + + const { state } = view; + + const handleMouseDown = (e, editorState, editorDispatch) => { + e.preventDefault(); + run(editorState, editorDispatch); + }; + + const isActive = !!( + active(activeView.state, activeViewId) && + select(state, activeViewId, activeView) + ); + + let isDisabled = !select(state, activeViewId, activeView); + if (!isEditable) isDisabled = true; + + const UndoRedoButtonComponent = useMemo( + () => ( + <MenuButton + active={isActive || false} + disabled={isDisabled} + iconName={icon} + label={label} + onMouseDown={e => handleMouseDown(e, main.state, main.dispatch)} + title={title} + /> + ), + [isActive, isDisabled], + ); + + return UndoRedoButtonComponent; +}; + +export default UndoRedoButton; -- GitLab