aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/formattedText/nodes_rts.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/formattedText/nodes_rts.ts')
-rw-r--r--src/client/views/nodes/formattedText/nodes_rts.ts91
1 files changed, 61 insertions, 30 deletions
diff --git a/src/client/views/nodes/formattedText/nodes_rts.ts b/src/client/views/nodes/formattedText/nodes_rts.ts
index 5bf942218..02ded3103 100644
--- a/src/client/views/nodes/formattedText/nodes_rts.ts
+++ b/src/client/views/nodes/formattedText/nodes_rts.ts
@@ -1,6 +1,6 @@
import { DOMOutputSpec, Node, NodeSpec } from 'prosemirror-model';
import { listItem, orderedList } from 'prosemirror-schema-list';
-import { ParagraphNodeSpec, toParagraphDOM, getParagraphNodeAttrs } from './ParagraphNodeSpec';
+import { ParagraphNodeSpec, toParagraphDOM, getHeadingAttrs } from './ParagraphNodeSpec';
import { DocServer } from '../../../DocServer';
import { Doc, Field, FieldType } from '../../../../fields/Doc';
import { schema } from './schema_rts';
@@ -53,7 +53,7 @@ export const nodes: { [index: string]: NodeSpec } = {
parseDOM: [
{
tag: 'audiotag',
- getAttrs(dom: any) {
+ getAttrs: dom => {
return {
timeCode: dom.getAttribute('data-timecode'),
audioId: dom.getAttribute('data-audioid'),
@@ -123,24 +123,57 @@ export const nodes: { [index: string]: NodeSpec } = {
level: { default: 1 },
},
parseDOM: [
- { tag: 'h1', attrs: { level: 1 } },
- { tag: 'h2', attrs: { level: 2 } },
- { tag: 'h3', attrs: { level: 3 } },
- { tag: 'h4', attrs: { level: 4 } },
- { tag: 'h5', attrs: { level: 5 } },
- { tag: 'h6', attrs: { level: 6 } },
+ {
+ tag: 'h1',
+ attrs: { level: 1 },
+ getAttrs(dom) {
+ return getHeadingAttrs(dom);
+ },
+ },
+ {
+ tag: 'h2',
+ attrs: { level: 2 },
+ getAttrs(dom) {
+ return getHeadingAttrs(dom);
+ },
+ },
+ {
+ tag: 'h3',
+ attrs: { level: 3 },
+ getAttrs(dom) {
+ return getHeadingAttrs(dom);
+ },
+ },
+ {
+ tag: 'h4',
+ attrs: { level: 4 },
+ getAttrs(dom) {
+ return getHeadingAttrs(dom);
+ },
+ },
+ {
+ tag: 'h5',
+ attrs: { level: 5 },
+ getAttrs(dom) {
+ return getHeadingAttrs(dom);
+ },
+ },
+ {
+ tag: 'h6',
+ attrs: { level: 6 },
+ getAttrs(dom) {
+ return getHeadingAttrs(dom);
+ },
+ },
],
toDOM(node) {
- const dom = toParagraphDOM(node) as any;
- dom[0] = `h${node.attrs.level || 1}`;
+ const dom = toParagraphDOM(node);
+ if (dom instanceof Array) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ (dom as any)[0] = `h${node.attrs.level || 1}`; // [0] is readonly so cast away to any
+ }
return dom;
},
- getAttrs(dom: any) {
- const attrs = getParagraphNodeAttrs(dom) as any;
- const level = Number(dom.nodeName.substring(1)) || 1;
- attrs.level = level;
- return attrs;
- },
},
// :: NodeSpec A code listing. Disallows marks or non-text inline
@@ -221,7 +254,7 @@ export const nodes: { [index: string]: NodeSpec } = {
parseDOM: [
{
tag: 'img[src]',
- getAttrs(dom: any) {
+ getAttrs: dom => {
return {
src: dom.getAttribute('src'),
title: dom.getAttribute('title'),
@@ -300,7 +333,7 @@ export const nodes: { [index: string]: NodeSpec } = {
parseDOM: [
{
tag: 'video[src]',
- getAttrs(dom: any) {
+ getAttrs: dom => {
return {
src: dom.getAttribute('src'),
title: dom.getAttribute('title'),
@@ -341,33 +374,31 @@ export const nodes: { [index: string]: NodeSpec } = {
parseDOM: [
{
tag: 'ul',
- getAttrs(dom: any) {
+ getAttrs: dom => {
return {
bulletStyle: dom.getAttribute('data-bulletStyle'),
mapStyle: dom.getAttribute('data-mapStyle'),
fontColor: dom.style.color,
- fontSize: dom.style['font-size'],
- fontFamily: dom.style['font-family'],
- indent: dom.style['margin-left'],
+ fontSize: dom.style.fontSize,
+ fontFamily: dom.style.fontFamily,
+ indent: dom.style.marginLeft,
};
},
},
{
style: 'list-style-type=disc',
- getAttrs() {
- return { mapStyle: 'bullet' };
- },
+ getAttrs: () => ({ mapStyle: 'bullet' }),
},
{
tag: 'ol',
- getAttrs(dom: any) {
+ getAttrs: dom => {
return {
bulletStyle: dom.getAttribute('data-bulletStyle'),
mapStyle: dom.getAttribute('data-mapStyle'),
fontColor: dom.style.color,
- fontSize: dom.style['font-size'],
- fontFamily: dom.style['font-family'],
- indent: dom.style['margin-left'],
+ fontSize: dom.style.fontSize,
+ fontFamily: dom.style.fontFamily,
+ indent: dom.style.marginLeft,
};
},
},
@@ -416,7 +447,7 @@ export const nodes: { [index: string]: NodeSpec } = {
parseDOM: [
{
tag: 'li',
- getAttrs(dom: any) {
+ getAttrs: dom => {
return { mapStyle: dom.getAttribute('data-mapStyle'), bulletStyle: dom.getAttribute('data-bulletStyle') };
},
},