From fce4ba1649ce1ea6bc32c9e2963fa8cc50c230ad Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 19 Oct 2022 12:24:26 +0300
Subject: [PATCH] save

---
 wax-prosemirror-core/src/WaxView.js           |  7 ++--
 wax-prosemirror-schema/src/nodes/imageNode.js |  2 +-
 .../src/ImageService/AltComponent.js          | 36 ++++++++++++++++---
 .../components/FeedbackComponent.js           |  3 +-
 4 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js
index 45382705d..0e064d8ab 100644
--- a/wax-prosemirror-core/src/WaxView.js
+++ b/wax-prosemirror-core/src/WaxView.js
@@ -102,12 +102,13 @@ const WaxView = forwardRef((props, ref) => {
           'main',
         );
         if (debug) applyDevTools(view);
-        if (autoFocus && view)
-          setTimeout(() => {
+        setTimeout(() => {
+          if (autoFocus && view) {
             view.focus();
             view.state.tr.insertText('', 0);
             view.dispatch(view.state.tr);
-          }, 500);
+          }
+        }, 500);
 
         return () => view.destroy();
       }
diff --git a/wax-prosemirror-schema/src/nodes/imageNode.js b/wax-prosemirror-schema/src/nodes/imageNode.js
index 4ef56bad8..6eb0f35f7 100644
--- a/wax-prosemirror-schema/src/nodes/imageNode.js
+++ b/wax-prosemirror-schema/src/nodes/imageNode.js
@@ -4,7 +4,7 @@ const image = {
   attrs: {
     id: { default: '' },
     src: {},
-    alt: { default: null },
+    alt: { default: '' },
     title: { default: null },
     // track: { default: [] },
     fileid: { default: null },
diff --git a/wax-prosemirror-services/src/ImageService/AltComponent.js b/wax-prosemirror-services/src/ImageService/AltComponent.js
index 1523df1b5..1dc2aebf5 100644
--- a/wax-prosemirror-services/src/ImageService/AltComponent.js
+++ b/wax-prosemirror-services/src/ImageService/AltComponent.js
@@ -1,9 +1,11 @@
 /* eslint-disable react/prop-types */
-import React, { useContext, useLayoutEffect } from 'react';
+import React, { useContext, useLayoutEffect, useRef, useState } from 'react';
 import styled from 'styled-components';
 import { WaxContext } from 'wax-prosemirror-core';
 
 export default ({ setPosition, position }) => {
+  const altRef = useRef(null);
+  const [altText, setAltText] = useState('');
   const context = useContext(WaxContext);
   const {
     activeView,
@@ -45,10 +47,36 @@ export default ({ setPosition, position }) => {
     const left = imagePosition.left - WaxSurface.left;
     const top = imagePosition.bottom - WaxSurface.top - 22;
     setPosition({ ...position, left, top });
-    console.log(position);
-  }, [position.left]);
+  }, [position.left, position.top]);
+
+  const altTextOnChange = () => {
+    const { selection } = activeView.state;
+    setAltText(altRef.current.value);
+    activeView.dispatch(
+      activeView.state.tr.setNodeMarkup(selection.from, undefined, {
+        ...selection.node.attrs,
+        alt: altRef.current.value,
+      }),
+    );
+  };
 
   if (!readOnly) {
-    return <StyledInputAlt placeholder="Alt Text" type="text" />;
+    return (
+      <StyledInputAlt
+        autoFocus="autoFocus"
+        key="alt"
+        onChange={altTextOnChange}
+        placeholder="Alt Text"
+        ref={altRef}
+        type="text"
+        value={
+          activeView.state.selection &&
+          activeView.state.selection.node &&
+          activeView.state.selection.node.attrs.alt !== ''
+            ? activeView.state.selection.node.attrs.alt
+            : altText
+        }
+      />
+    );
   }
 };
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
index 5ff3ac5cb..9de6f0ca4 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
@@ -33,7 +33,6 @@ const FeedBackInput = styled.input`
 export default ({ node, view, getPos, readOnly }) => {
   const context = useContext(WaxContext);
   const {
-    app,
     pmViews: { main },
   } = context;
 
@@ -98,12 +97,12 @@ export default ({ node, view, getPos, readOnly }) => {
     <FeedBack>
       <FeedBackLabel>Feedback</FeedBackLabel>
       <FeedBackInput
-        readOnly={readOnly}
         onBlur={saveFeedBack}
         onChange={feedBackInput}
         onFocus={onFocus}
         onKeyDown={handleKeyDown}
         placeholder="Insert feedback"
+        readOnly={readOnly}
         ref={feedBackRef}
         type="text"
         value={feedBack}
-- 
GitLab