Skip to content
Snippets Groups Projects
Commit e6194c15 authored by chris's avatar chris
Browse files

nodes in progress

parent 9037f214
No related branches found
No related tags found
1 merge request!418move marks to services
Showing
with 92 additions and 64 deletions
/*
LIST OF SUPPORTED NODES
*/
export { default as authorNode } from './src/nodes/authorNode';
export { default as epigraphPoetryNode } from './src/nodes/epigraphPoetryNode';
export { default as epigraphProseNode } from './src/nodes/epigraphProseNode';
export { default as sourceNoteNode } from './src/nodes/sourceNoteNode';
export { default as paragraphContNode } from './src/nodes/paragraphContNode';
export { default as extractProseNode } from './src/nodes/extractProseNode';
export { default as extractPoetryNode } from './src/nodes/extractPoetryNode';
export { default as titleNode } from './src/nodes/titleNode';
export { default as orderedListNode } from './src/nodes/orderedListNode';
export { default as bulletListNode } from './src/nodes/bulletListNode';
export { default as listItemNode } from './src/nodes/listItemNode';
export { default as subTitleNode } from './src/nodes/subTitleNode';
export { default as figureNode } from './src/nodes/figureNode';
export { default as figureCaptionNode } from './src/nodes/figureCaptionNode';
export { default as imageNode } from './src/nodes/imageNode';
export { default as headingNode } from './src/nodes/headingNode';
export { default as blockQuoteNode } from './src/nodes/blockQuoteNode';
export { default as footNoteNode } from './src/nodes/footNoteNode';
export { default as codeBlockNode } from './src/nodes/codeBlockNode';
export { default as mathInlineNode } from './src/nodes/mathInlineNode';
export { default as mathDisplayNode } from './src/nodes/mathDisplayNode';
export { default as customBlockNode } from './src/nodes/customBlockNode';
export { default as OenNodes } from './src/nodes/oenNodes';
/* eslint-disable no-param-reassign */
const heading = {
attrs: {
level: { default: 2 },
},
content: 'inline*',
group: 'block',
defining: true,
parseDOM: [
{
tag: 'h2',
attrs: { level: 2 },
},
{
tag: 'h3',
attrs: { level: 3 },
},
{
tag: 'h4',
attrs: { level: 4 },
},
],
toDOM(hook, next) {
const attrs = {};
hook.value = [`h${hook.node.attrs.level}`, attrs, 0];
next();
},
};
export default heading;
const author = {
const authorNode = {
content: 'inline*',
group: 'block',
priority: 0,
......@@ -24,4 +24,4 @@ const author = {
},
};
export default author;
export default authorNode;
import { Service } from 'wax-prosemirror-core';
import { epigraphPoetryNode } from 'wax-prosemirror-schema';
import epigraphPoetryNode from './schema/epigraphPoetryNode';
import EpigraphPoetry from './EpigraphPoetry';
class EpigraphPoetryService extends Service {
......
const epigraphPoetry = {
const epigraphPoetryNode = {
content: 'inline*',
group: 'block',
priority: 0,
......@@ -24,4 +24,4 @@ const epigraphPoetry = {
},
};
export default epigraphPoetry;
export default epigraphPoetryNode;
import { Service } from 'wax-prosemirror-core';
import { epigraphProseNode } from 'wax-prosemirror-schema';
import epigraphProseNode from './schema/epigraphProseNode';
import EpigraphProse from './EpigraphProse';
class EpigraphProseService extends Service {
......
const epigraphProse = {
const epigraphProseNode = {
content: 'inline*',
group: 'block',
priority: 0,
......@@ -24,4 +24,4 @@ const epigraphProse = {
},
};
export default epigraphProse;
export default epigraphProseNode;
import { Service } from 'wax-prosemirror-core';
import { subTitleNode } from 'wax-prosemirror-schema';
import subTitleNode from './schema/subTitleNode';
import SubTitle from './SubTitle';
class SubTitleService extends Service {
......
const subtitle = {
const subTitleNode = {
content: 'inline*',
group: 'block',
priority: 0,
......@@ -24,4 +24,4 @@ const subtitle = {
},
};
export default subtitle;
export default subTitleNode;
import { Service } from 'wax-prosemirror-core';
import { titleNode } from 'wax-prosemirror-schema';
import titleNode from './schema/titleNode';
import Title from './Title';
class TitleService extends Service {
......
const title = {
const titleNode = {
attrs: {
level: { default: 1 },
},
......@@ -19,4 +19,4 @@ const title = {
},
};
export default title;
export default titleNode;
......@@ -125,6 +125,7 @@ export default ({ node, view, getPos }) => {
const [optionText, setOptionText] = useState('');
const [addingOption, setAddingOption] = useState(false);
const addOptionRef = useRef(null);
const addOptionBtnRef = useRef(null);
const customProps = main.props.customValues;
......@@ -134,6 +135,19 @@ export default ({ node, view, getPos }) => {
const readOnly = !isEditable;
useEffect(() => {
const listener = event => {
if (event.code === 'Enter') {
event.preventDefault();
addOptionBtnRef.current.click();
}
};
addOptionBtnRef.current.addEventListener('keydown', listener);
return () => {
addOptionBtnRef.current.removeEventListener('keydown', listener);
};
}, []);
useEffect(() => {
const allNodes = getNodes(main);
......@@ -246,7 +260,7 @@ export default ({ node, view, getPos }) => {
type="text"
value={optionText}
/>
<button onClick={addOption} type="button">
<button onClick={addOption} ref={addOptionBtnRef} type="button">
Add Option
</button>
</AddOption>
......
import { Service } from 'wax-prosemirror-core';
import { blockQuoteNode } from 'wax-prosemirror-schema';
import blockQuoteNode from './schema/blockQuoteNode';
import BlockQuote from './BlockQuote';
import './blockQuote.css';
......
const blockquote = {
const blockQuoteNode = {
content: 'block+',
group: 'block',
defining: true,
......@@ -8,4 +8,4 @@ const blockquote = {
},
};
export default blockquote;
export default blockQuoteNode;
import { Service } from 'wax-prosemirror-core';
import { extractPoetryNode } from 'wax-prosemirror-schema';
import extractPoetryNode from './schema/extractPoetryNode';
import ExtractPoetry from './ExtractPoetry';
class ExtractPoetryService extends Service {
......
const extractPoetryNode = {
content: 'inline*',
group: 'block',
priority: 0,
defining: true,
attrs: {
class: { default: 'extract-poetry' },
},
parseDOM: [
{
tag: 'p.extract-poetry',
getAttrs(hook, next) {
Object.assign(hook, {
class: hook.dom.getAttribute('class'),
});
next();
},
},
],
toDOM(hook, next) {
const attrs = { class: hook.node.attrs.class };
hook.value = ['p', attrs, 0];
next();
},
};
export default extractPoetryNode;
import { Service } from 'wax-prosemirror-core';
import { extractProseNode } from 'wax-prosemirror-schema';
import extractProseNode from './schema/extractProseNode';
import ExtractProse from './ExtractProse';
class ExtractProseService extends Service {
......
const extractProse = {
const extractProseNode = {
content: 'inline*',
group: 'block',
priority: 0,
......@@ -24,4 +24,4 @@ const extractProse = {
},
};
export default extractProse;
export default extractProseNode;
import { Service } from 'wax-prosemirror-core';
import { paragraphContNode } from 'wax-prosemirror-schema';
import paragraphContNode from './schema/paragraphContNode';
import ParagraphContinued from './ParagraphContinued';
class ParagraphContinuedService extends Service {
......
const paragraphCont = {
content: "inline*",
group: "block",
const paragraphContNode = {
content: 'inline*',
group: 'block',
priority: 0,
defining: true,
attrs: {
class: { default: "paragraph-cont" }
class: { default: 'paragraph-cont' },
},
parseDOM: [
{
tag: "p.paragraph-cont",
tag: 'p.paragraph-cont',
getAttrs(hook, next) {
Object.assign(hook, {
class: hook.dom.getAttribute("class")
class: hook.dom.getAttribute('class'),
});
next();
}
}
},
},
],
toDOM(hook, next) {
const attrs = { class: hook.node.attrs.class };
hook.value = ["p", attrs, 0];
hook.value = ['p', attrs, 0];
next();
}
},
};
export default paragraphCont;
export default paragraphContNode;
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment