@modusoperandi/licit 1.1.3 → 1.1.4

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.
package/EMMarkSpec.js CHANGED
@@ -1,14 +1,38 @@
1
- var EM_DOM = ['em', 0];
2
1
  var EMMarkSpec = {
2
+ attrs: {
3
+ overridden: {
4
+ "default": false
5
+ }
6
+ },
3
7
  parseDOM: [{
4
- tag: 'i'
8
+ tag: 'i',
9
+ getAttrs: function getAttrs(dom) {
10
+ var _overridden = dom.getAttribute('overridden');
11
+ return {
12
+ overridden: _overridden === 'true'
13
+ };
14
+ }
5
15
  }, {
6
- tag: 'em'
16
+ tag: 'em',
17
+ getAttrs: function getAttrs(dom) {
18
+ var _overridden = dom.getAttribute('overridden');
19
+ return {
20
+ overridden: _overridden === 'true'
21
+ };
22
+ }
7
23
  }, {
8
- style: 'font-style=italic'
24
+ tag: 'span[style*=font-style]',
25
+ getAttrs: function getAttrs(value, dom) {
26
+ var _overridden = dom.getAttribute('overridden');
27
+ return {
28
+ overridden: _overridden === 'true'
29
+ };
30
+ }
9
31
  }],
10
- toDOM: function toDOM() {
11
- return EM_DOM;
32
+ toDOM: function toDOM(mark) {
33
+ return ['em', {
34
+ overridden: mark.attrs.overridden
35
+ }, 0];
12
36
  }
13
37
  };
14
38
  export default EMMarkSpec;
@@ -1,13 +1,38 @@
1
- // @flow
2
1
 
3
2
  import type { MarkSpec } from './Types.js';
4
3
 
5
- const EM_DOM = ['em', 0];
6
4
 
7
5
  const EMMarkSpec: MarkSpec = {
8
- parseDOM: [{ tag: 'i' }, { tag: 'em' }, { style: 'font-style=italic' }],
9
- toDOM() {
10
- return EM_DOM;
6
+ attrs: {
7
+ overridden: { default: false },
8
+ },
9
+ parseDOM: [
10
+ {
11
+ tag: 'i',
12
+ getAttrs: (dom: HTMLElement) => {
13
+ const _overridden = dom.getAttribute('overridden');
14
+ return { overridden: _overridden === 'true' };
15
+ }
16
+ },
17
+
18
+ {
19
+ tag: 'em',
20
+ getAttrs: (dom: HTMLElement) => {
21
+ const _overridden = dom.getAttribute('overridden');
22
+ return { overridden: _overridden === 'true' };
23
+ }
24
+ },
25
+ {
26
+ tag: 'span[style*=font-style]',
27
+ getAttrs: (value, dom: HTMLElement) => {
28
+ const _overridden = dom.getAttribute('overridden');
29
+ return { overridden: _overridden === 'true' };
30
+
31
+ },
32
+ },
33
+ ],
34
+ toDOM(mark) {
35
+ return ['em', { overridden: mark.attrs.overridden }, 0];
11
36
  },
12
37
  };
13
38
 
package/EditorMarks.js CHANGED
@@ -24,6 +24,7 @@ import TextSelectionMarkSpec from './TextSelectionMarkSpec.js';
24
24
  import TextSuperMarkSpec from './TextSuperMarkSpec.js';
25
25
  import TextSubMarkSpec from './TextSubMarkSpec.js';
26
26
  import TextUnderlineMarkSpec from './TextUnderlineMarkSpec.js';
27
+ import OverrideMarkSpec from './OverrideMarkSpec.js';
27
28
  var MARK_CODE = MarkNames.MARK_CODE,
28
29
  MARK_EM = MarkNames.MARK_EM,
29
30
  MARK_FONT_SIZE = MarkNames.MARK_FONT_SIZE,
@@ -38,11 +39,12 @@ var MARK_CODE = MarkNames.MARK_CODE,
38
39
  MARK_TEXT_HIGHLIGHT = MarkNames.MARK_TEXT_HIGHLIGHT,
39
40
  MARK_TEXT_SELECTION = MarkNames.MARK_TEXT_SELECTION,
40
41
  MARK_UNDERLINE = MarkNames.MARK_UNDERLINE,
41
- MARK_SPACER = MarkNames.MARK_SPACER;
42
+ MARK_SPACER = MarkNames.MARK_SPACER,
43
+ MARK_OVERRIDE = MarkNames.MARK_OVERRIDE;
42
44
 
43
45
  // These nodes are required to build basic marks.
44
46
  var nodes = _defineProperty(_defineProperty(_defineProperty({}, DOC, DocNodeSpec), PARAGRAPH, ParagraphNodeSpec), TEXT, TextNodeSpec);
45
- var marks = (_marks = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_marks, MARK_LINK, LinkMarkSpec), MARK_NO_BREAK, TextNoWrapMarkSpec), MARK_CODE, CodeMarkSpec), MARK_EM, EMMarkSpec), MARK_FONT_SIZE, FontSizeMarkSpec), MARK_FONT_TYPE, FontTypeMarkSpec), MARK_SPACER, SpacerMarkSpec), MARK_STRIKE, StrikeMarkSpec), MARK_STRONG, StrongMarkSpec), MARK_SUPER, TextSuperMarkSpec), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_marks, MARK_SUB, TextSubMarkSpec), MARK_TEXT_COLOR, TextColorMarkSpec), MARK_TEXT_HIGHLIGHT, TextHighlightMarkSpec), MARK_TEXT_SELECTION, TextSelectionMarkSpec), MARK_UNDERLINE, TextUnderlineMarkSpec));
47
+ var marks = (_marks = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_marks, MARK_LINK, LinkMarkSpec), MARK_NO_BREAK, TextNoWrapMarkSpec), MARK_CODE, CodeMarkSpec), MARK_EM, EMMarkSpec), MARK_FONT_SIZE, FontSizeMarkSpec), MARK_FONT_TYPE, FontTypeMarkSpec), MARK_SPACER, SpacerMarkSpec), MARK_STRIKE, StrikeMarkSpec), MARK_STRONG, StrongMarkSpec), MARK_SUPER, TextSuperMarkSpec), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_marks, MARK_SUB, TextSubMarkSpec), MARK_TEXT_COLOR, TextColorMarkSpec), MARK_TEXT_HIGHLIGHT, TextHighlightMarkSpec), MARK_TEXT_SELECTION, TextSelectionMarkSpec), MARK_UNDERLINE, TextUnderlineMarkSpec), MARK_OVERRIDE, OverrideMarkSpec));
46
48
  var schema = new Schema({
47
49
  nodes: nodes,
48
50
  marks: marks
@@ -20,6 +20,7 @@ import TextSelectionMarkSpec from './TextSelectionMarkSpec.js';
20
20
  import TextSuperMarkSpec from './TextSuperMarkSpec.js';
21
21
  import TextSubMarkSpec from './TextSubMarkSpec.js';
22
22
  import TextUnderlineMarkSpec from './TextUnderlineMarkSpec.js';
23
+ import OverrideMarkSpec from './OverrideMarkSpec.js';
23
24
 
24
25
  const {
25
26
  MARK_CODE,
@@ -37,6 +38,7 @@ const {
37
38
  MARK_TEXT_SELECTION,
38
39
  MARK_UNDERLINE,
39
40
  MARK_SPACER,
41
+ MARK_OVERRIDE
40
42
  } = MarkNames;
41
43
 
42
44
  // These nodes are required to build basic marks.
@@ -64,6 +66,7 @@ const marks = {
64
66
  [MARK_TEXT_HIGHLIGHT]: TextHighlightMarkSpec,
65
67
  [MARK_TEXT_SELECTION]: TextSelectionMarkSpec,
66
68
  [MARK_UNDERLINE]: TextUnderlineMarkSpec,
69
+ [MARK_OVERRIDE]: OverrideMarkSpec,
67
70
  };
68
71
 
69
72
  const schema = new Schema({ nodes, marks });
@@ -4,35 +4,50 @@ var FontSizeMarkSpec = {
4
4
  attrs: {
5
5
  pt: {
6
6
  "default": null
7
+ },
8
+ overridden: {
9
+ "default": false
7
10
  }
8
11
  },
9
12
  inline: true,
10
13
  group: 'inline',
11
14
  parseDOM: [{
12
- style: 'font-size',
13
- getAttrs: getAttrs
15
+ tag: 'span[style*=font-size]',
16
+ getAttrs: function getAttrs(domNode) {
17
+ var _domNode$parentNode, _domNode$parentNode2;
18
+ var fontSize = domNode.style.fontSize || '';
19
+ var _mOverriden = domNode.getAttribute('overridden');
20
+ var ptValue = 0;
21
+ var _mptValue = 0;
22
+ var parentFontsize = ((_domNode$parentNode = domNode.parentNode) === null || _domNode$parentNode === void 0 ? void 0 : _domNode$parentNode.style.fontSize) || '';
23
+ var mparent_overriden = (_domNode$parentNode2 = domNode.parentNode) === null || _domNode$parentNode2 === void 0 ? void 0 : _domNode$parentNode2.getAttribute('overridden');
24
+ if (fontSize !== '') {
25
+ ptValue = toClosestFontPtSize(fontSize);
26
+ }
27
+ if (parentFontsize !== '') {
28
+ _mptValue = toClosestFontPtSize(parentFontsize);
29
+ }
30
+ var overridden = _mOverriden === 'true' && fontSize !== '' || parentFontsize !== '' && mparent_overriden === 'true'; // Check if the font is overridden
31
+
32
+ return {
33
+ pt: ptValue || _mptValue,
34
+ overridden: overridden
35
+ };
36
+ }
14
37
  }],
15
38
  toDOM: function toDOM(node) {
16
- var pt = node.attrs.pt;
17
- var domAttrs = pt ? {
18
- style: "font-size: ".concat(pt, "pt;"),
19
- "class": 'czi-font-size-mark'
20
- } : null;
21
- return ['span', domAttrs, 0];
39
+ var _node$attrs = node.attrs,
40
+ pt = _node$attrs.pt,
41
+ overridden = _node$attrs.overridden;
42
+ var attrs = {
43
+ overridden: overridden
44
+ };
45
+ if (pt) {
46
+ attrs.style = "font-size: ".concat(pt, "pt;");
47
+ attrs["class"] = 'czi-font-size-mark';
48
+ }
49
+ return ['span', attrs, 0];
22
50
  }
23
51
  };
24
- function getAttrs(fontSize) {
25
- var attrs = {};
26
- if (!fontSize) {
27
- return attrs;
28
- }
29
- var ptValue = toClosestFontPtSize(fontSize);
30
- if (!ptValue) {
31
- return attrs;
32
- }
33
- return {
34
- pt: ptValue
35
- };
36
- }
37
52
  export default FontSizeMarkSpec;
38
53
  import { bpfrpt_proptype_MarkSpec } from "./Types.js";
@@ -1,49 +1,54 @@
1
1
  // @flow
2
2
 
3
3
  import { Node } from 'prosemirror-model';
4
-
5
4
  import { toClosestFontPtSize } from './toClosestFontPtSize.js';
6
-
7
5
  import type { MarkSpec } from './Types.js';
8
6
 
9
7
  const FontSizeMarkSpec: MarkSpec = {
10
8
  attrs: {
11
9
  pt: { default: null },
10
+ overridden: { default: false },
12
11
  },
13
12
  inline: true,
14
13
  group: 'inline',
15
14
  parseDOM: [
16
15
  {
17
- style: 'font-size',
18
- getAttrs: getAttrs,
16
+ tag: 'span[style*=font-size]',
17
+ getAttrs: (domNode) => {
18
+ const fontSize = domNode.style.fontSize || '';
19
+ const _mOverriden = domNode.getAttribute('overridden');
20
+ let ptValue = 0;
21
+ let _mptValue = 0;
22
+
23
+ const parentFontsize = domNode.parentNode?.style.fontSize || '';
24
+ const mparent_overriden = domNode.parentNode?.getAttribute('overridden');
25
+ if (fontSize !== '') {
26
+ ptValue = toClosestFontPtSize(fontSize);
27
+ }
28
+ if (parentFontsize !== '') {
29
+ _mptValue = toClosestFontPtSize(parentFontsize);
30
+ }
31
+
32
+ const overridden = (_mOverriden === 'true' && fontSize !== '') || (parentFontsize !== '' && mparent_overriden === 'true'); // Check if the font is overridden
33
+
34
+ return {
35
+ pt: ptValue || _mptValue,
36
+ overridden: overridden,
37
+ };
38
+ },
19
39
  },
20
40
  ],
21
41
  toDOM(node: Node) {
22
- const { pt } = node.attrs;
23
- const domAttrs = pt
24
- ? {
25
- style: `font-size: ${pt}pt;`,
26
- class: 'czi-font-size-mark',
27
- }
28
- : null;
42
+ const { pt, overridden } = node.attrs;
43
+ const attrs = { overridden };
29
44
 
30
- return ['span', domAttrs, 0];
45
+ if (pt) {
46
+ attrs.style = `font-size: ${pt}pt;`;
47
+ attrs.class = 'czi-font-size-mark';
48
+ }
49
+
50
+ return ['span', attrs, 0];
31
51
  },
32
52
  };
33
53
 
34
- function getAttrs(fontSize: string): Object {
35
- const attrs = {};
36
- if (!fontSize) {
37
- return attrs;
38
- }
39
-
40
- const ptValue = toClosestFontPtSize(fontSize);
41
- if (!ptValue) {
42
- return attrs;
43
- }
44
- return {
45
- pt: ptValue,
46
- };
47
- }
48
-
49
54
  export default FontSizeMarkSpec;
@@ -1,29 +1,23 @@
1
1
  import { Node } from 'prosemirror-model';
2
2
  // [FS] IRAD-1061 2020-09-19
3
- // Now loaded locally, so that it work in closed network as well.
3
+ // Now loaded locally, so that it works in closed networks as well.
4
4
 
5
5
  export var FONT_TYPE_NAMES = [
6
6
  // SERIF
7
- 'Aclonica', 'Acme', 'Alegreya', 'Arial',
8
- //'Arial',//??? - Commented out fonts that are not available to download using https://fonts.googleapis.com/css?family=
9
- 'Arial Black', 'Georgia', 'Tahoma', 'Times New Roman', 'Times', 'Verdana',
7
+ 'Aclonica', 'Acme', 'Alegreya', 'Arial', 'Arial Black', 'Georgia', 'Tahoma', 'Times New Roman', 'Times', 'Verdana',
10
8
  // MONOSPACE
11
- 'Courier New'
12
- //'Lucida Console',//???
13
- //'Monaco',//???
14
- //'monospace',//???
15
- ];
9
+ 'Courier New'];
16
10
 
17
11
  // FS IRAD-988 2020-06-18
18
12
  // Preload fonts that are listed by default,
19
- // so that even if the font is not available locally, load from web.
13
+ // so that even if the font is not available locally, load from the web.
20
14
  export function preLoadFonts() {
21
15
  FONT_TYPE_NAMES.forEach(function (name) {
22
16
  loadAndCacheFont(name);
23
17
  });
24
18
  }
25
19
 
26
- // resolve each font after it is loaded.
20
+ // Resolve each font after it is loaded.
27
21
  var RESOLVED_FONT_NAMES = new Set([]);
28
22
  function loadAndCacheFont(name) {
29
23
  // Cache custom fonts
@@ -31,21 +25,43 @@ function loadAndCacheFont(name) {
31
25
  }
32
26
  var FontTypeMarkSpec = {
33
27
  attrs: {
34
- name: ''
28
+ name: '',
29
+ overridden: {
30
+ "default": false
31
+ }
35
32
  },
36
33
  inline: true,
37
34
  group: 'inline',
38
35
  parseDOM: [{
39
- style: 'font-family',
40
- getAttrs: function getAttrs(name) {
36
+ tag: 'span[style*=font-family]',
37
+ getAttrs: function getAttrs(domNode) {
38
+ var _domNode$parentNode, _domNode$parentNode2;
39
+ var name = domNode.style.fontFamily || '';
40
+ var parentFontName = ((_domNode$parentNode = domNode.parentNode) === null || _domNode$parentNode === void 0 ? void 0 : _domNode$parentNode.style.fontFamily) || '';
41
+ var _mOverriden = domNode.getAttribute('overridden');
42
+ var mparent_overriden = (_domNode$parentNode2 = domNode.parentNode) === null || _domNode$parentNode2 === void 0 ? void 0 : _domNode$parentNode2.getAttribute('overridden');
43
+ if (name !== '') {
44
+ name = name ? name.replace(/["']/g, '') : '';
45
+ }
46
+ if (parentFontName !== '') {
47
+ parentFontName = parentFontName ? parentFontName.replace(/["']/g, '') : '';
48
+ }
49
+ var overridden = _mOverriden === 'true' && name !== '' || parentFontName !== '' && mparent_overriden === 'true'; // Check if the font is overridden
50
+
41
51
  return {
42
- name: name ? name.replace(/["']/g, '') : ''
52
+ name: name || parentFontName || 'Arial',
53
+ // Clean up the font name
54
+ overridden: overridden
43
55
  };
44
56
  }
45
57
  }],
46
58
  toDOM: function toDOM(node) {
47
- var name = node.attrs.name;
48
- var attrs = {};
59
+ var _node$attrs = node.attrs,
60
+ name = _node$attrs.name,
61
+ overridden = _node$attrs.overridden;
62
+ var attrs = {
63
+ overridden: overridden
64
+ };
49
65
  if (name) {
50
66
  if (!RESOLVED_FONT_NAMES.has(name)) {
51
67
  loadAndCacheFont(name);
@@ -4,7 +4,7 @@ import { Node } from 'prosemirror-model';
4
4
  import type { MarkSpec } from './Types.js';
5
5
 
6
6
  // [FS] IRAD-1061 2020-09-19
7
- // Now loaded locally, so that it work in closed network as well.
7
+ // Now loaded locally, so that it works in closed networks as well.
8
8
 
9
9
  export const FONT_TYPE_NAMES = [
10
10
  // SERIF
@@ -12,7 +12,6 @@ export const FONT_TYPE_NAMES = [
12
12
  'Acme',
13
13
  'Alegreya',
14
14
  'Arial',
15
- //'Arial',//??? - Commented out fonts that are not available to download using https://fonts.googleapis.com/css?family=
16
15
  'Arial Black',
17
16
  'Georgia',
18
17
  'Tahoma',
@@ -21,21 +20,18 @@ export const FONT_TYPE_NAMES = [
21
20
  'Verdana',
22
21
  // MONOSPACE
23
22
  'Courier New',
24
- //'Lucida Console',//???
25
- //'Monaco',//???
26
- //'monospace',//???
27
23
  ];
28
24
 
29
25
  // FS IRAD-988 2020-06-18
30
26
  // Preload fonts that are listed by default,
31
- // so that even if the font is not available locally, load from web.
27
+ // so that even if the font is not available locally, load from the web.
32
28
  export function preLoadFonts() {
33
29
  FONT_TYPE_NAMES.forEach((name) => {
34
30
  loadAndCacheFont(name);
35
31
  });
36
32
  }
37
33
 
38
- // resolve each font after it is loaded.
34
+ // Resolve each font after it is loaded.
39
35
  const RESOLVED_FONT_NAMES = new Set([]);
40
36
 
41
37
  function loadAndCacheFont(name) {
@@ -46,23 +42,40 @@ function loadAndCacheFont(name) {
46
42
  const FontTypeMarkSpec: MarkSpec = {
47
43
  attrs: {
48
44
  name: '',
45
+ overridden: { default: false },
49
46
  },
50
47
  inline: true,
51
48
  group: 'inline',
52
49
  parseDOM: [
53
50
  {
54
- style: 'font-family',
55
- getAttrs: (name) => {
51
+ tag: 'span[style*=font-family]',
52
+ getAttrs: (domNode) => {
53
+
54
+ let name = domNode.style.fontFamily || '';
55
+ let parentFontName = domNode.parentNode?.style.fontFamily || '';
56
+ const _mOverriden = domNode.getAttribute('overridden');
57
+ const mparent_overriden = domNode.parentNode?.getAttribute('overridden');
58
+
59
+ if (name !== '') {
60
+ name = name ? name.replace(/["']/g, '') : '';
61
+ }
62
+ if (parentFontName !== '') {
63
+ parentFontName = parentFontName ? parentFontName.replace(/["']/g, '') : '';
64
+ }
65
+
66
+ const overridden = (_mOverriden === 'true' && name !== '') || (parentFontName !== '' && mparent_overriden === 'true'); // Check if the font is overridden
67
+
56
68
  return {
57
- name: name ? name.replace(/["']/g, '') : '',
69
+ name: name || parentFontName || 'Arial', // Clean up the font name
70
+ overridden: overridden,
58
71
  };
59
- },
60
- },
72
+ }
73
+ }
61
74
  ],
62
75
 
63
76
  toDOM(node: Node) {
64
- const { name } = node.attrs;
65
- const attrs = {};
77
+ const { name, overridden } = node.attrs;
78
+ const attrs = { overridden };
66
79
  if (name) {
67
80
  if (!RESOLVED_FONT_NAMES.has(name)) {
68
81
  loadAndCacheFont(name);
@@ -70,7 +83,7 @@ const FontTypeMarkSpec: MarkSpec = {
70
83
  attrs.style = `font-family: ${name}`;
71
84
  }
72
85
  return ['span', attrs, 0];
73
- },
86
+ }
74
87
  };
75
88
 
76
89
  export default FontTypeMarkSpec;
package/MarkNames.js CHANGED
@@ -13,4 +13,5 @@ export var MARK_TEXT_COLOR = 'mark-text-color';
13
13
  export var MARK_TEXT_HIGHLIGHT = 'mark-text-highlight';
14
14
  export var MARK_TEXT_SELECTION = 'mark-text-selection';
15
15
  export var MARK_UNDERLINE = 'underline';
16
- export var MARK_SPACER = 'spacer';
16
+ export var MARK_SPACER = 'spacer';
17
+ export var MARK_OVERRIDE = 'override';
package/MarkNames.js.flow CHANGED
@@ -16,3 +16,4 @@ export const MARK_TEXT_HIGHLIGHT = 'mark-text-highlight';
16
16
  export const MARK_TEXT_SELECTION = 'mark-text-selection';
17
17
  export const MARK_UNDERLINE = 'underline';
18
18
  export const MARK_SPACER = 'spacer';
19
+ export const MARK_OVERRIDE = 'override';
@@ -0,0 +1,54 @@
1
+ var OverrideMarkSpec = {
2
+ attrs: {
3
+ strong: {
4
+ "default": false
5
+ },
6
+ em: {
7
+ "default": false
8
+ },
9
+ underline: {
10
+ "default": false
11
+ },
12
+ strike: {
13
+ "default": false
14
+ }
15
+ },
16
+ inline: true,
17
+ group: 'inline',
18
+ parseDOM: [{
19
+ tag: 'span',
20
+ getAttrs: function getAttrs(dom) {
21
+ var strong = dom.getAttribute('cs-strong') === 'true';
22
+ var em = dom.getAttribute('cs-em') === 'true';
23
+ var underline = dom.getAttribute('cs-underline') === 'true';
24
+ var strike = dom.getAttribute('cs-strike') === 'true';
25
+
26
+ // Only create the mark if at least one attribute is true
27
+ if (strong || em || underline || strike) {
28
+ return {
29
+ strong: strong,
30
+ em: em,
31
+ underline: underline,
32
+ strike: strike
33
+ };
34
+ }
35
+ return false; // Ignore spans where all attributes are false
36
+ }
37
+ }],
38
+ toDOM: function toDOM(mark) {
39
+ // Only render the <span> if at least one attribute is true
40
+ if (mark.attrs.strong || mark.attrs.em || mark.attrs.underline || mark.attrs.strike) {
41
+ return ['span', {
42
+ 'cs-strong': mark.attrs.strong,
43
+ 'cs-em': mark.attrs.em,
44
+ 'cs-underline': mark.attrs.underline,
45
+ 'cs-strike': mark.attrs.strike
46
+ }, 0];
47
+ }
48
+
49
+ // If no attributes are true, return nothing (ProseMirror will ignore this)
50
+ return null;
51
+ }
52
+ };
53
+ export default OverrideMarkSpec;
54
+ import { bpfrpt_proptype_MarkSpec } from "./Types.js";
@@ -0,0 +1,49 @@
1
+ import type { MarkSpec } from './Types.js';
2
+ const OverrideMarkSpec: MarkSpec = {
3
+ attrs: {
4
+ strong: { default: false },
5
+ em: { default: false },
6
+ underline: { default: false },
7
+ strike: { default: false },
8
+ },
9
+ inline: true,
10
+ group: 'inline',
11
+ parseDOM: [
12
+ {
13
+ tag: 'span',
14
+ getAttrs: (dom) => {
15
+ const strong = dom.getAttribute('cs-strong') === 'true';
16
+ const em = dom.getAttribute('cs-em') === 'true';
17
+ const underline = dom.getAttribute('cs-underline') === 'true';
18
+ const strike = dom.getAttribute('cs-strike') === 'true';
19
+
20
+ // Only create the mark if at least one attribute is true
21
+ if (strong || em || underline || strike) {
22
+ return { strong, em, underline, strike };
23
+ }
24
+
25
+ return false; // Ignore spans where all attributes are false
26
+ },
27
+ },
28
+ ],
29
+ toDOM: (mark) => {
30
+ // Only render the <span> if at least one attribute is true
31
+ if (mark.attrs.strong || mark.attrs.em || mark.attrs.underline || mark.attrs.strike) {
32
+ return [
33
+ 'span',
34
+ {
35
+ 'cs-strong': mark.attrs.strong,
36
+ 'cs-em': mark.attrs.em,
37
+ 'cs-underline': mark.attrs.underline,
38
+ 'cs-strike': mark.attrs.strike,
39
+ },
40
+ 0,
41
+ ];
42
+ }
43
+
44
+ // If no attributes are true, return nothing (ProseMirror will ignore this)
45
+ return null;
46
+ },
47
+ };
48
+
49
+ export default OverrideMarkSpec;
@@ -1,3 +1,9 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
7
  import convertToCSSPTValue from './convertToCSSPTValue.js';
2
8
  import toCSSLineSpacing from './ui/toCSSLineSpacing.js';
3
9
  import { Node } from 'prosemirror-model';
@@ -67,6 +73,7 @@ var ParagraphNodeSpec = {
67
73
  },
68
74
  content: 'inline*',
69
75
  group: 'block',
76
+ defining: true,
70
77
  parseDOM: [{
71
78
  tag: 'p',
72
79
  getAttrs: getAttrs
@@ -80,7 +87,7 @@ function getAttrs(dom) {
80
87
  marginLeft = _dom$style.marginLeft,
81
88
  paddingTop = _dom$style.paddingTop,
82
89
  paddingBottom = _dom$style.paddingBottom;
83
- var align = dom.getAttribute('align') || textAlign || '';
90
+ var align = dom.getAttribute('align') || textAlign || 'left';
84
91
  align = ALIGN_PATTERN.test(align) ? align : null;
85
92
  var indent = parseInt(dom.getAttribute(ATTRIBUTE_INDENT), 10);
86
93
  if (!indent && marginLeft) {
@@ -96,6 +103,7 @@ function getAttrs(dom) {
96
103
  var overriddenIndent = dom.getAttribute('overriddenIndent') || '';
97
104
  var overriddenIndentValue = dom.getAttribute('overriddenIndentValue') || '';
98
105
  var innerLink = dom.getAttribute('innerLink') || '';
106
+ var objectId = dom.getAttribute('objectId') || '';
99
107
  return {
100
108
  align: align,
101
109
  indent: indent,
@@ -109,7 +117,8 @@ function getAttrs(dom) {
109
117
  overriddenLineSpacingValue: overriddenLineSpacingValue,
110
118
  overriddenIndent: overriddenIndent,
111
119
  overriddenIndentValue: overriddenIndentValue,
112
- innerLink: innerLink
120
+ innerLink: innerLink,
121
+ objectId: objectId
113
122
  };
114
123
  }
115
124
  function getStyle(attrs) {
@@ -147,7 +156,7 @@ function toDOM(node) {
147
156
  overriddenIndent = _node$attrs.overriddenIndent,
148
157
  overriddenIndentValue = _node$attrs.overriddenIndentValue,
149
158
  innerLink = _node$attrs.innerLink;
150
- var attrs = {};
159
+ var attrs = _objectSpread({}, node.attrs);
151
160
  var _getStyle = getStyle(node.attrs),
152
161
  style = _getStyle.style;
153
162
  style && (attrs.style = style);