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

add headings

parent 3ed6d74e
No related branches found
No related tags found
1 merge request!45Develop
Showing
with 130 additions and 73 deletions
......@@ -33,3 +33,4 @@ 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 imageNode } from "./src/nodes/imageNode";
export { default as headingNode } from "./src/nodes/headingNode";
......@@ -22,51 +22,6 @@ const nodes = {
return brDOM;
}
},
heading: {
attrs: {
level: { default: 1 },
track: { default: [] }
},
content: "inline*",
group: "block",
defining: true,
parseDOM: [
{
tag: "h1",
attrs: { level: 1 },
getAttrs(dom) {
return {
track: parseTracks(dom.dataset.track)
};
}
},
{
tag: "h2",
attrs: { level: 2 },
getAttrs(dom) {
return {
track: parseTracks(dom.dataset.track)
};
}
},
{
tag: "h3",
attrs: { level: 3 },
getAttrs(dom) {
return {
track: parseTracks(dom.dataset.track)
};
}
}
],
toDOM(node) {
const attrs = {};
if (node.attrs.track.length) {
attrs["data-track"] = JSON.stringify(node.attrs.track);
}
return [`h${node.attrs.level}`, attrs, 0];
}
},
blockquote: {
content: "block+",
group: "block",
......
import { parseTracks, blockLevelToDOM } from "./helpers";
const epigraphPoetry = {
content: "inline*",
group: "block",
......@@ -10,17 +11,19 @@ const epigraphPoetry = {
parseDOM: [
{
tag: "p.epigraph-poetry",
getAttrs(dom) {
return {
getAttrs(hook, next) {
Object.assign(hook, {
class: dom.getAttribute("class"),
track: parseTracks(dom.dataset.track)
};
track: parseTracks(hook.dom.dataset.track)
});
next();
}
}
],
toDOM(node) {
const attrs = blockLevelToDOM(node);
return ["p", attrs, 0];
toDOM(hook, next) {
const attrs = blockLevelToDOM(hook.node);
hook.value = ["p", attrs, 0];
next();
}
};
......
import { parseTracks, blockLevelToDOM } from "./helpers";
const epigraphProse = {
content: "inline*",
group: "block",
......@@ -10,17 +11,19 @@ const epigraphProse = {
parseDOM: [
{
tag: "p.epigraph-prose",
getAttrs(dom) {
return {
getAttrs(hook, next) {
Object.assign(hook, {
class: dom.getAttribute("class"),
track: parseTracks(dom.dataset.track)
};
track: parseTracks(hook.dom.dataset.track)
});
next();
}
}
],
toDOM(node) {
const attrs = blockLevelToDOM(node);
return ["p", attrs, 0];
toDOM(hook, next) {
const attrs = blockLevelToDOM(hook.node);
hook.value = ["p", attrs, 0];
next();
}
};
......
import { parseTracks, blockLevelToDOM } from "./helpers";
const extractPoetry = {
content: "inline*",
group: "block",
......@@ -10,17 +11,19 @@ const extractPoetry = {
parseDOM: [
{
tag: "p.extract-poetry",
getAttrs(dom) {
return {
getAttrs(hook, next) {
Object.assign(hook, {
class: dom.getAttribute("class"),
track: parseTracks(dom.dataset.track)
};
track: parseTracks(hook.dom.dataset.track)
});
next();
}
}
],
toDOM(node) {
const attrs = blockLevelToDOM(node);
return ["p", attrs, 0];
toDOM(hook, next) {
const attrs = blockLevelToDOM(hook.node);
hook.value[("p", attrs, 0)];
next();
}
};
......
import { parseTracks } from "./helpers";
const heading = {
attrs: {
level: { default: 1 },
track: { default: [] }
},
content: "inline*",
group: "block",
defining: true,
parseDOM: [
{
tag: "h1",
attrs: { level: 1 },
getAttrs(hook, next) {
Object.assign(hook, {
track: parseTracks(hook.dom.dataset.track)
});
next();
}
},
{
tag: "h2",
attrs: { level: 2 },
getAttrs(hook, next) {
Object.assign(hook, {
track: parseTracks(hook.dom.dataset.track)
});
next();
}
},
{
tag: "h3",
attrs: { level: 3 },
getAttrs(hook, next) {
Object.assign(hook, {
track: parseTracks(hook.dom.dataset.track)
});
next();
}
}
],
toDOM(hook, next) {
const attrs = {};
if (hook.node.attrs.track.length) {
attrs["data-track"] = JSON.stringify(hook.node.attrs.track);
}
hook.value = [`h${hook.node.attrs.level}`, attrs, 0];
next();
}
};
export default heading;
import Service from "wax-prosemirror-core/src/services/Service";
import { epigraphPoetryNode } from "wax-prosemirror-schema";
import EpigraphPoetry from "./EpigraphPoetry";
class EpigraphPoetryService extends Service {
......@@ -6,6 +7,13 @@ class EpigraphPoetryService extends Service {
register() {
this.container.bind("EpigraphPoetry").to(EpigraphPoetry);
const createNode = this.container.get("CreateNode");
createNode(
{
epigraphPoetry: epigraphPoetryNode
},
{ toWaxSchema: true }
);
}
}
......
import Service from "wax-prosemirror-core/src/services/Service";
import { epigraphProseNode } from "wax-prosemirror-schema";
import EpigraphProse from "./EpigraphProse";
class EpigraphProseService extends Service {
......@@ -6,6 +7,13 @@ class EpigraphProseService extends Service {
register() {
this.container.bind("EpigraphProse").to(EpigraphProse);
const createNode = this.container.get("CreateNode");
createNode(
{
epigraphProse: epigraphProseNode
},
{ toWaxSchema: true }
);
}
}
......
import Service from "wax-prosemirror-core/src/services/Service";
import { headingNode } from "wax-prosemirror-schema";
import Heading1 from "./Heading1";
import Heading2 from "./Heading3";
import Heading2 from "./Heading2";
import Heading3 from "./Heading3";
class HeadingService extends Service {
......@@ -10,6 +11,13 @@ class HeadingService extends Service {
this.container.bind("Heading1").to(Heading1);
this.container.bind("Heading2").to(Heading2);
this.container.bind("Heading3").to(Heading3);
const createNode = this.container.get("CreateNode");
createNode(
{
heading: headingNode
},
{ toWaxSchema: true }
);
}
}
......
import Service from "wax-prosemirror-core/src/services/Service";
import { SubTitleNode } from "wax-prosemirror-schema";
import { subTitleNode } from "wax-prosemirror-schema";
import SubTitle from "./SubTitle";
class SubTitleService extends Service {
......@@ -10,7 +10,7 @@ class SubTitleService extends Service {
const createNode = this.container.get("CreateNode");
createNode(
{
subtitle: SubTitleNode
subtitle: subTitleNode
},
{ toWaxSchema: true }
);
......
import AuthorService from "./AuthorService/AuthorService";
import EpigraphPoetryService from "./EpigraphPoetryService/EpigraphPoetryService";
import EpigraphProseService from "./EpigraphProseService/EpigraphProseService";
import HeadingService from "./HeadingService/HeadingService";
import SubTitleService from "./SubTitleService/SubTitleService";
import TitleService from "./TitleService/TitleService";
export default [
new AuthorService(),
// new EpigraphPoetryService(),
// new HeadingService(),
new EpigraphProseService(),
new EpigraphPoetryService(),
new HeadingService(),
new SubTitleService(),
new TitleService()
];
......@@ -16,10 +16,24 @@ class Display extends ToolGroup {
constructor(
@inject("Author") author,
@inject("Title") title,
@inject("SubTitle") subtitle
@inject("SubTitle") subtitle,
@inject("EpigraphProse") epigraphprose,
@inject("EpigraphPoetry") epigraphpoetry,
@inject("Heading1") heading1,
@inject("Heading2") heading2,
@inject("Heading3") heading3
) {
super();
this.tools = [title, author, subtitle];
this.tools = [
title,
author,
subtitle,
epigraphprose,
epigraphpoetry,
heading1,
heading2,
heading3
];
}
}
......
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