From 1339f5f5ef8a606f6de170e7784762da5aac8c4a Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 12 Sep 2022 19:24:22 +0300 Subject: [PATCH] add alt overlay in service --- .../src/ImageService/AltComponent.js | 29 +++++++++++++++++++ .../src/ImageService/ImageService.js | 14 +++++++++ 2 files changed, 43 insertions(+) create mode 100644 wax-prosemirror-services/src/ImageService/AltComponent.js diff --git a/wax-prosemirror-services/src/ImageService/AltComponent.js b/wax-prosemirror-services/src/ImageService/AltComponent.js new file mode 100644 index 000000000..084fca136 --- /dev/null +++ b/wax-prosemirror-services/src/ImageService/AltComponent.js @@ -0,0 +1,29 @@ +/* eslint-disable react/prop-types */ +import React, { useContext, useLayoutEffect } from 'react'; +import styled from 'styled-components'; +import { WaxContext } from 'wax-prosemirror-core'; + +export default ({ setPosition, position }) => { + const context = useContext(WaxContext); + const { + activeView, + pmViews: { main }, + } = context; + + const isEditable = main.props.editable(editable => { + return editable; + }); + + const readOnly = !isEditable; + + useLayoutEffect(() => { + const WaxSurface = activeView.dom.getBoundingClientRect(); + const left = 300; + const top = 500; + setPosition({ ...position, left, top }); + }, [position.left]); + + if (!readOnly) { + return <input type="text" />; + } +}; diff --git a/wax-prosemirror-services/src/ImageService/ImageService.js b/wax-prosemirror-services/src/ImageService/ImageService.js index d45d2074a..bb0b6cd5f 100644 --- a/wax-prosemirror-services/src/ImageService/ImageService.js +++ b/wax-prosemirror-services/src/ImageService/ImageService.js @@ -7,6 +7,7 @@ import { PlaceHolderPlugin, captionPlugin } from 'wax-prosemirror-plugins'; import Service from '../Service'; import Image from './Image'; import './image.css'; +import AltComponent from './AltComponent'; class ImageService extends Service { name = 'ImageService'; @@ -22,6 +23,7 @@ class ImageService extends Service { register() { this.container.bind('Image').to(Image); const createNode = this.container.get('CreateNode'); + const createOverlay = this.container.get('CreateOverlay'); createNode({ figure: figureNode, }); @@ -39,6 +41,18 @@ class ImageService extends Service { // , // { toWaxSchema: true }, ); + + createOverlay( + AltComponent, + {}, + { + nodeType: 'image', + findInParent: false, + markType: '', + followCursor: false, + selection: false, + }, + ); } } -- GitLab