@modusoperandi/licit 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/EMMarkSpec.js +30 -6
  2. package/EMMarkSpec.js.flow +30 -5
  3. package/EditorMarks.js +4 -2
  4. package/EditorMarks.js.flow +3 -0
  5. package/FontSizeMarkSpec.js +36 -21
  6. package/FontSizeMarkSpec.js.flow +32 -27
  7. package/FontTypeMarkSpec.js +33 -17
  8. package/FontTypeMarkSpec.js.flow +28 -15
  9. package/MarkNames.js +2 -1
  10. package/MarkNames.js.flow +1 -0
  11. package/OverrideMarkSpec.js +54 -0
  12. package/OverrideMarkSpec.js.flow +49 -0
  13. package/ParagraphNodeSpec.js +12 -3
  14. package/ParagraphNodeSpec.js.flow +25 -14
  15. package/StrikeMarkSpec.js +14 -7
  16. package/StrikeMarkSpec.js.flow +10 -7
  17. package/StrongMarkSpec.js +28 -15
  18. package/StrongMarkSpec.js.flow +26 -12
  19. package/TextColorMarkSpec.js +20 -10
  20. package/TextColorMarkSpec.js.flow +12 -7
  21. package/TextHighlightMarkSpec.js +21 -8
  22. package/TextHighlightMarkSpec.js.flow +16 -7
  23. package/TextSubMarkSpec.js +20 -4
  24. package/TextSubMarkSpec.js.flow +14 -6
  25. package/TextSuperMarkSpec.js +19 -4
  26. package/TextSuperMarkSpec.js.flow +14 -6
  27. package/TextUnderlineMarkSpec.js +15 -12
  28. package/TextUnderlineMarkSpec.js.flow +10 -13
  29. package/bom.xml +4167 -4144
  30. package/buildEditorPlugins.js +0 -1
  31. package/buildEditorPlugins.js.flow +7 -8
  32. package/package.json +5 -5
  33. package/styles.css +8 -6
  34. package/ui/ListItemNodeView.js +4 -0
  35. package/ui/ListItemNodeView.js.flow +5 -2
  36. package/ui/ListTypeMenu.js +6 -0
  37. package/ui/ListTypeMenu.js.flow +9 -0
  38. package/ui/TableCellMenu.js +0 -1
  39. package/ui/TableCellMenu.js.flow +1 -1
  40. package/ui/czi-editor.css +3 -4
  41. package/ui/czi-link-tooltip.css +1 -1
  42. package/ui/czi-table.css +0 -1
  43. package/ui/czi-vars.css +44 -1
@@ -74,6 +74,7 @@ const ParagraphNodeSpec: NodeSpec = {
74
74
  },
75
75
  content: 'inline*',
76
76
  group: 'block',
77
+ defining: true,
77
78
  parseDOM: [
78
79
  {
79
80
  tag: 'p',
@@ -84,15 +85,10 @@ const ParagraphNodeSpec: NodeSpec = {
84
85
  };
85
86
 
86
87
  function getAttrs(dom: HTMLElement): Object {
87
- const {
88
- lineHeight,
89
- textAlign,
90
- marginLeft,
91
- paddingTop,
92
- paddingBottom,
93
- } = dom.style;
88
+ const { lineHeight, textAlign, marginLeft, paddingTop, paddingBottom } =
89
+ dom.style;
94
90
 
95
- let align = dom.getAttribute('align') || textAlign || '';
91
+ let align = dom.getAttribute('align') || textAlign || 'left';
96
92
  align = ALIGN_PATTERN.test(align) ? align : null;
97
93
 
98
94
  let indent = parseInt(dom.getAttribute(ATTRIBUTE_INDENT), 10);
@@ -109,10 +105,12 @@ function getAttrs(dom: HTMLElement): Object {
109
105
  const overriddenAlign = dom.getAttribute('overriddenAlign') || '';
110
106
  const overriddenAlignValue = dom.getAttribute('overriddenAlignValue') || '';
111
107
  const overriddenLineSpacing = dom.getAttribute('overriddenLineSpacing') || '';
112
- const overriddenLineSpacingValue = dom.getAttribute('overriddenLineSpacingValue') || '';
108
+ const overriddenLineSpacingValue =
109
+ dom.getAttribute('overriddenLineSpacingValue') || '';
113
110
  const overriddenIndent = dom.getAttribute('overriddenIndent') || '';
114
111
  const overriddenIndentValue = dom.getAttribute('overriddenIndentValue') || '';
115
112
  const innerLink = dom.getAttribute('innerLink') || '';
113
+ const objectId = dom.getAttribute('objectId') || '';
116
114
  return {
117
115
  align,
118
116
  indent,
@@ -127,6 +125,7 @@ function getAttrs(dom: HTMLElement): Object {
127
125
  overriddenIndent,
128
126
  overriddenIndentValue,
129
127
  innerLink,
128
+ objectId,
130
129
  };
131
130
  }
132
131
 
@@ -135,7 +134,7 @@ function getStyle(attrs: Object) {
135
134
  attrs.align,
136
135
  attrs.lineSpacing,
137
136
  attrs.paddingTop,
138
- attrs.paddingBottom,
137
+ attrs.paddingBottom
139
138
  );
140
139
  }
141
140
 
@@ -161,12 +160,21 @@ function getStyleEx(align, lineSpacing, paddingTop, paddingBottom) {
161
160
  style += `padding-bottom: ${paddingBottom};`;
162
161
  }
163
162
  return { style };
164
-
165
163
  }
166
164
 
167
165
  function toDOM(node: Node): Array<any> {
168
- const { indent, id, overriddenAlign,overriddenAlignValue, overriddenLineSpacing,overriddenLineSpacingValue, overriddenIndent,overriddenIndentValue, innerLink } = node.attrs;
169
- const attrs = {};
166
+ const {
167
+ indent,
168
+ id,
169
+ overriddenAlign,
170
+ overriddenAlignValue,
171
+ overriddenLineSpacing,
172
+ overriddenLineSpacingValue,
173
+ overriddenIndent,
174
+ overriddenIndentValue,
175
+ innerLink,
176
+ } = node.attrs;
177
+ const attrs = { ...node.attrs };
170
178
  const { style } = getStyle(node.attrs);
171
179
 
172
180
  style && (attrs.style = style);
@@ -196,7 +204,10 @@ export const getParagraphStyle = getStyle;
196
204
 
197
205
  export function convertMarginLeftToIndentValue(marginLeft: string): number {
198
206
  const ptValue = convertToCSSPTValue(marginLeft);
199
- return Math.min(Math.max(Math.floor(ptValue / INDENT_MARGIN_PT_SIZE), MIN_INDENT_LEVEL), MAX_INDENT_LEVEL);
207
+ return Math.min(
208
+ Math.max(Math.floor(ptValue / INDENT_MARGIN_PT_SIZE), MIN_INDENT_LEVEL),
209
+ MAX_INDENT_LEVEL
210
+ );
200
211
  }
201
212
 
202
213
  export default ParagraphNodeSpec;
package/StrikeMarkSpec.js CHANGED
@@ -1,15 +1,22 @@
1
1
  // https://bitbucket.org/atlassian/atlaskit/src/34facee3f461/packages/editor-core/src/schema/nodes/?at=master
2
2
  var StrikeMarkSpec = {
3
+ attrs: {
4
+ overridden: {
5
+ "default": false
6
+ } // Optional attribute for additional logic
7
+ },
3
8
  parseDOM: [{
4
- style: 'text-decoration',
5
- getAttrs: function getAttrs(value) {
6
- return value === 'line-through' && null;
9
+ tag: 'strike',
10
+ getAttrs: function getAttrs(dom) {
11
+ var _overridden = dom.getAttribute('overridden');
12
+ return {
13
+ overridden: _overridden === 'true'
14
+ };
7
15
  }
8
16
  }],
9
- toDOM: function toDOM() {
10
- var style = 'text-decoration: line-through';
11
- return ['span', {
12
- style: style
17
+ toDOM: function toDOM(mark) {
18
+ return ['strike', {
19
+ overridden: mark.attrs.overridden
13
20
  }, 0];
14
21
  }
15
22
  };
@@ -4,17 +4,20 @@ import type { MarkSpec } from './Types.js';
4
4
 
5
5
  // https://bitbucket.org/atlassian/atlaskit/src/34facee3f461/packages/editor-core/src/schema/nodes/?at=master
6
6
  const StrikeMarkSpec: MarkSpec = {
7
+ attrs: {
8
+ overridden: { default: false }, // Optional attribute for additional logic
9
+ },
7
10
  parseDOM: [
8
11
  {
9
- style: 'text-decoration',
10
- getAttrs: (value) => {
11
- return value === 'line-through' && null;
12
- },
12
+ tag: 'strike',
13
+ getAttrs: (dom: HTMLElement) => {
14
+ const _overridden = dom.getAttribute('overridden');
15
+ return { overridden: _overridden === 'true' };
16
+ }
13
17
  },
14
18
  ],
15
- toDOM() {
16
- const style = 'text-decoration: line-through';
17
- return ['span', { style }, 0];
19
+ toDOM(mark) {
20
+ return ['strike', { overridden: mark.attrs.overridden }, 0];
18
21
  },
19
22
  };
20
23
 
package/StrongMarkSpec.js CHANGED
@@ -1,25 +1,38 @@
1
- var STRONG_DOM = ['strong', 0];
2
- var CSS_BOLD_PATTERN = /^(bold(er)?|[5-9]\d{2,})$/;
3
1
  var StrongMarkSpec = {
4
- parseDOM: [{
5
- tag: 'strong'
2
+ attrs: {
3
+ overridden: {
4
+ "default": false
5
+ }
6
6
  },
7
- // This works around a Google Docs misbehavior where
8
- // pasted content will be inexplicably wrapped in `<b>`
9
- // tags with a font-weight normal.
10
- {
7
+ parseDOM: [{
8
+ tag: 'strong',
9
+ getAttrs: function getAttrs(dom) {
10
+ var _overridden = dom.getAttribute('overridden');
11
+ return {
12
+ overridden: _overridden === 'true'
13
+ };
14
+ }
15
+ }, {
11
16
  tag: 'b',
12
- getAttrs: function getAttrs(node) {
13
- return node.style.fontWeight != 'normal' && null;
17
+ getAttrs: function getAttrs(dom) {
18
+ var _overridden = dom.getAttribute('overridden');
19
+ return {
20
+ overridden: _overridden === 'true'
21
+ };
14
22
  }
15
23
  }, {
16
- style: 'font-weight',
17
- getAttrs: function getAttrs(value) {
18
- return CSS_BOLD_PATTERN.test(value) && null;
24
+ tag: 'span[style*=font-weight]',
25
+ getAttrs: function getAttrs(value, dom) {
26
+ var _overridden = dom.getAttribute('overridden');
27
+ return {
28
+ overridden: _overridden === 'true'
29
+ };
19
30
  }
20
31
  }],
21
- toDOM: function toDOM() {
22
- return STRONG_DOM;
32
+ toDOM: function toDOM(mark) {
33
+ return ['strong', {
34
+ overridden: mark.attrs.overridden
35
+ }, 0];
23
36
  }
24
37
  };
25
38
  export default StrongMarkSpec;
@@ -2,23 +2,37 @@
2
2
 
3
3
  import type { MarkSpec } from './Types.js';
4
4
 
5
- const STRONG_DOM = ['strong', 0];
6
- const CSS_BOLD_PATTERN = /^(bold(er)?|[5-9]\d{2,})$/;
7
-
8
5
  const StrongMarkSpec: MarkSpec = {
6
+ attrs: {
7
+ overridden: { default: false }
8
+ },
9
9
  parseDOM: [
10
- { tag: 'strong' },
11
- // This works around a Google Docs misbehavior where
12
- // pasted content will be inexplicably wrapped in `<b>`
13
- // tags with a font-weight normal.
14
- { tag: 'b', getAttrs: (node) => node.style.fontWeight != 'normal' && null },
10
+
11
+ {
12
+ tag: 'strong',
13
+ getAttrs: (dom: HTMLElement) => {
14
+ const _overridden = dom.getAttribute('overridden');
15
+ return { overridden: _overridden === 'true' };
16
+ }
17
+ },
18
+ {
19
+ tag: 'b',
20
+ getAttrs: (dom: HTMLElement) => {
21
+ const _overridden = dom.getAttribute('overridden');
22
+ return { overridden: _overridden === 'true' };
23
+ }
24
+ },
15
25
  {
16
- style: 'font-weight',
17
- getAttrs: (value) => CSS_BOLD_PATTERN.test(value) && null,
26
+ tag: 'span[style*=font-weight]',
27
+ getAttrs: (value, dom: HTMLElement) => {
28
+ const _overridden = dom.getAttribute('overridden');
29
+ return { overridden: _overridden === 'true' };
30
+
31
+ },
18
32
  },
19
33
  ],
20
- toDOM() {
21
- return STRONG_DOM;
34
+ toDOM(mark) {
35
+ return ['strong', { overridden: mark.attrs.overridden }, 0];
22
36
  },
23
37
  };
24
38
 
@@ -2,27 +2,37 @@ import { Node } from 'prosemirror-model';
2
2
  import toCSSColor from './ui/toCSSColor.js';
3
3
  var TextColorMarkSpec = {
4
4
  attrs: {
5
- color: ''
5
+ color: {
6
+ "default": null
7
+ },
8
+ // Allow missing color
9
+ overridden: {
10
+ "default": false
11
+ }
6
12
  },
7
13
  inline: true,
8
14
  group: 'inline',
9
15
  parseDOM: [{
10
- style: 'color',
11
- getAttrs: function getAttrs(color) {
16
+ tag: 'span[style*=color]',
17
+ getAttrs: function getAttrs(dom) {
18
+ var color = dom.style.color;
19
+ var overridden = dom.getAttribute('overridden') === 'true'; // Extract overridden flag
12
20
  return {
13
- color: toCSSColor(color)
21
+ color: toCSSColor(color),
22
+ overridden: overridden
14
23
  };
15
24
  }
16
25
  }],
17
26
  toDOM: function toDOM(node) {
18
- var color = node.attrs.color;
19
- var style = '';
27
+ var _node$attrs = node.attrs,
28
+ color = _node$attrs.color,
29
+ overridden = _node$attrs.overridden;
30
+ var attrs = {};
20
31
  if (color) {
21
- style += "color: ".concat(color, ";");
32
+ attrs.style = "color: ".concat(color, ";");
33
+ attrs['overridden'] = overridden.toString();
22
34
  }
23
- return ['span', {
24
- style: style
25
- }, 0];
35
+ return ['span', attrs, 0];
26
36
  }
27
37
  };
28
38
  export default TextColorMarkSpec;
@@ -8,27 +8,32 @@ import type { MarkSpec } from './Types.js';
8
8
 
9
9
  const TextColorMarkSpec: MarkSpec = {
10
10
  attrs: {
11
- color: '',
11
+ color: { default: null }, // Allow missing color
12
+ overridden: { default: false },
12
13
  },
13
14
  inline: true,
14
15
  group: 'inline',
15
16
  parseDOM: [
16
17
  {
17
- style: 'color',
18
- getAttrs: (color) => {
18
+ tag: 'span[style*=color]',
19
+ getAttrs: (dom: HTMLElement) => {
20
+ const { color } = dom.style;
21
+ const overridden = dom.getAttribute('overridden') === 'true'; // Extract overridden flag
19
22
  return {
20
23
  color: toCSSColor(color),
24
+ overridden
21
25
  };
22
26
  },
23
27
  },
24
28
  ],
25
29
  toDOM(node: Node) {
26
- const { color } = node.attrs;
27
- let style = '';
30
+ const { color, overridden } = node.attrs;
31
+ const attrs = {};
28
32
  if (color) {
29
- style += `color: ${color};`;
33
+ attrs.style = `color: ${color};`;
34
+ attrs['overridden'] = overridden.toString();
30
35
  }
31
- return ['span', { style }, 0];
36
+ return ['span', attrs, 0];
32
37
  },
33
38
  };
34
39
 
@@ -2,29 +2,42 @@ import { Node } from 'prosemirror-model';
2
2
  import { isTransparent, toCSSColor } from './ui/toCSSColor.js';
3
3
  var TextHighlightMarkSpec = {
4
4
  attrs: {
5
- highlightColor: ''
5
+ highlightColor: {
6
+ "default": null
7
+ },
8
+ // Allow missing color
9
+ overridden: {
10
+ "default": false
11
+ }
6
12
  },
7
13
  inline: true,
8
14
  group: 'inline',
9
15
  parseDOM: [{
10
16
  tag: 'span[style*=background-color]',
17
+ priority: 100,
11
18
  getAttrs: function getAttrs(dom) {
12
19
  var backgroundColor = dom.style.backgroundColor;
13
20
  var color = toCSSColor(backgroundColor);
21
+ var overridden = dom.getAttribute('overridden') === 'true'; // Extract overridden flag
22
+
14
23
  return {
15
- highlightColor: isTransparent(color) ? '' : color
24
+ highlightColor: isTransparent(color) ? '' : color,
25
+ overridden: overridden // Ensure overridden is captured
16
26
  };
17
27
  }
18
28
  }],
19
29
  toDOM: function toDOM(node) {
20
- var highlightColor = node.attrs.highlightColor;
21
- var style = '';
30
+ var _node$attrs = node.attrs,
31
+ highlightColor = _node$attrs.highlightColor,
32
+ overridden = _node$attrs.overridden;
33
+ var attrs = {};
22
34
  if (highlightColor) {
23
- style += "background-color: ".concat(highlightColor, ";");
35
+ attrs.style = "background-color: ".concat(highlightColor, ";");
24
36
  }
25
- return ['span', {
26
- style: style
27
- }, 0];
37
+
38
+ // Store overridden flag properly as a data attribute
39
+ attrs['overridden'] = overridden.toString();
40
+ return ['span', attrs, 0];
28
41
  }
29
42
  };
30
43
  export default TextHighlightMarkSpec;
@@ -1,37 +1,46 @@
1
1
  // @flow
2
2
 
3
3
  import { Node } from 'prosemirror-model';
4
-
5
4
  import { isTransparent, toCSSColor } from './ui/toCSSColor.js';
6
5
 
7
6
  import type { MarkSpec } from './Types.js';
8
7
 
9
8
  const TextHighlightMarkSpec: MarkSpec = {
10
9
  attrs: {
11
- highlightColor: '',
10
+ highlightColor: { default: null }, // Allow missing color
11
+ overridden: { default: false },
12
12
  },
13
13
  inline: true,
14
14
  group: 'inline',
15
15
  parseDOM: [
16
16
  {
17
17
  tag: 'span[style*=background-color]',
18
+ priority: 100,
18
19
  getAttrs: (dom: HTMLElement) => {
19
- const {backgroundColor} = dom.style;
20
+ const { backgroundColor } = dom.style;
20
21
  const color = toCSSColor(backgroundColor);
22
+ const overridden = dom.getAttribute('overridden') === 'true'; // Extract overridden flag
23
+
21
24
  return {
22
25
  highlightColor: isTransparent(color) ? '' : color,
26
+ overridden, // Ensure overridden is captured
23
27
  };
24
28
  },
25
29
  },
26
30
  ],
27
31
 
28
32
  toDOM(node: Node) {
29
- const {highlightColor} = node.attrs;
30
- let style = '';
33
+ const { highlightColor, overridden } = node.attrs;
34
+ const attrs = {};
35
+
31
36
  if (highlightColor) {
32
- style += `background-color: ${highlightColor};`;
37
+ attrs.style = `background-color: ${highlightColor};`;
33
38
  }
34
- return ['span', {style}, 0];
39
+
40
+ // Store overridden flag properly as a data attribute
41
+ attrs['overridden'] = overridden.toString();
42
+
43
+ return ['span', attrs, 0];
35
44
  },
36
45
  };
37
46
 
@@ -1,14 +1,30 @@
1
1
  var TextSubMarkSpec = {
2
+ attrs: {
3
+ overridden: {
4
+ "default": false
5
+ }
6
+ },
2
7
  parseDOM: [{
3
- tag: 'sub'
8
+ tag: 'sub',
9
+ priority: 150,
10
+ getAttrs: function getAttrs(dom) {
11
+ var _overridden = dom.getAttribute('overridden');
12
+ return {
13
+ overridden: _overridden === 'true'
14
+ };
15
+ }
4
16
  }, {
5
17
  style: 'vertical-align',
6
18
  getAttrs: function getAttrs(value) {
7
- return value === 'sub' && null;
19
+ return value === 'sub' ? {
20
+ overridden: true
21
+ } : null;
8
22
  }
9
23
  }],
10
- toDOM: function toDOM() {
11
- return ['sub', 0];
24
+ toDOM: function toDOM(mark) {
25
+ return ['sub', {
26
+ overridden: mark.attrs.overridden
27
+ }, 0];
12
28
  }
13
29
  };
14
30
  export default TextSubMarkSpec;
@@ -3,17 +3,25 @@
3
3
  import type { MarkSpec } from './Types.js';
4
4
 
5
5
  const TextSubMarkSpec: MarkSpec = {
6
+ attrs: {
7
+ overridden: { default: false },
8
+ },
6
9
  parseDOM: [
7
- { tag: 'sub' },
10
+ {
11
+ tag: 'sub',
12
+ priority: 150,
13
+ getAttrs: (dom: HTMLElement) => {
14
+ const _overridden = dom.getAttribute('overridden');
15
+ return { overridden: _overridden === 'true' };
16
+ }
17
+ },
8
18
  {
9
19
  style: 'vertical-align',
10
- getAttrs: (value) => {
11
- return value === 'sub' && null;
12
- },
20
+ getAttrs: (value) => (value === 'sub' ? { overridden: true } : null),
13
21
  },
14
22
  ],
15
- toDOM() {
16
- return ['sub', 0];
23
+ toDOM(mark) {
24
+ return ['sub', { overridden: mark.attrs.overridden }, 0];
17
25
  },
18
26
  };
19
27
 
@@ -1,14 +1,29 @@
1
1
  var TextSuperMarkSpec = {
2
+ attrs: {
3
+ overridden: {
4
+ "default": false
5
+ }
6
+ },
2
7
  parseDOM: [{
3
- tag: 'sup'
8
+ tag: 'sup',
9
+ getAttrs: function getAttrs(dom) {
10
+ var _overridden = dom.getAttribute('overridden');
11
+ return {
12
+ overridden: _overridden === 'true'
13
+ };
14
+ }
4
15
  }, {
5
16
  style: 'vertical-align',
6
17
  getAttrs: function getAttrs(value) {
7
- return value === 'super' && null;
18
+ return value === 'sup' ? {
19
+ overridden: true
20
+ } : null;
8
21
  }
9
22
  }],
10
- toDOM: function toDOM() {
11
- return ['sup', 0];
23
+ toDOM: function toDOM(mark) {
24
+ return ['sup', {
25
+ overridden: mark.attrs.overridden
26
+ }, 0];
12
27
  }
13
28
  };
14
29
  export default TextSuperMarkSpec;
@@ -3,17 +3,25 @@
3
3
  import type { MarkSpec } from './Types.js';
4
4
 
5
5
  const TextSuperMarkSpec: MarkSpec = {
6
+ attrs: {
7
+ overridden: { default: false },
8
+ },
6
9
  parseDOM: [
7
- { tag: 'sup' },
10
+ {
11
+ tag: 'sup',
12
+ getAttrs: (dom: HTMLElement) => {
13
+ const _overridden = dom.getAttribute('overridden');
14
+ return { overridden: _overridden === 'true' };
15
+ }
16
+ },
17
+
8
18
  {
9
19
  style: 'vertical-align',
10
- getAttrs: (value) => {
11
- return value === 'super' && null;
12
- },
20
+ getAttrs: (value) => (value === 'sup' ? { overridden: true } : null),
13
21
  },
14
22
  ],
15
- toDOM() {
16
- return ['sup', 0];
23
+ toDOM(mark) {
24
+ return ['sup', { overridden: mark.attrs.overridden }, 0];
17
25
  },
18
26
  };
19
27
 
@@ -1,20 +1,23 @@
1
1
  // https://bitbucket.org/atlassian/atlaskit/src/34facee3f461/packages/editor-core/src/schema/nodes/?at=master
2
2
  var TextUnderlineMarkSpec = {
3
- parseDOM: [{
4
- tag: 'u'
5
- }, {
6
- style: 'text-decoration-line',
7
- getAttrs: function getAttrs(value) {
8
- return value === 'underline' && null;
3
+ attrs: {
4
+ overridden: {
5
+ "default": false
9
6
  }
10
- }, {
11
- style: 'text-decoration',
12
- getAttrs: function getAttrs(value) {
13
- return value === 'underline' && null;
7
+ },
8
+ parseDOM: [{
9
+ tag: 'u',
10
+ getAttrs: function getAttrs(dom) {
11
+ var _overridden = dom.getAttribute('overridden');
12
+ return {
13
+ overridden: _overridden === 'true'
14
+ };
14
15
  }
15
16
  }],
16
- toDOM: function toDOM() {
17
- return ['u', 0];
17
+ toDOM: function toDOM(mark) {
18
+ return ['u', {
19
+ overridden: mark.attrs.overridden
20
+ }, 0];
18
21
  }
19
22
  };
20
23
  export default TextUnderlineMarkSpec;
@@ -4,23 +4,20 @@ import type { MarkSpec } from './Types.js';
4
4
 
5
5
  // https://bitbucket.org/atlassian/atlaskit/src/34facee3f461/packages/editor-core/src/schema/nodes/?at=master
6
6
  const TextUnderlineMarkSpec: MarkSpec = {
7
+ attrs: {
8
+ overridden: { default: false },
9
+ },
7
10
  parseDOM: [
8
- { tag: 'u' },
9
- {
10
- style: 'text-decoration-line',
11
- getAttrs: (value) => {
12
- return value === 'underline' && null;
13
- },
14
- },
15
11
  {
16
- style: 'text-decoration',
17
- getAttrs: (value) => {
18
- return value === 'underline' && null;
19
- },
12
+ tag: 'u',
13
+ getAttrs: (dom: HTMLElement) => {
14
+ const _overridden = dom.getAttribute('overridden');
15
+ return { overridden: _overridden === 'true' };
16
+ }
20
17
  },
21
18
  ],
22
- toDOM() {
23
- return ['u', 0];
19
+ toDOM(mark) {
20
+ return ['u', { overridden: mark.attrs.overridden }, 0];
24
21
  },
25
22
  };
26
23