@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 +30 -6
- package/EMMarkSpec.js.flow +30 -5
- package/EditorMarks.js +4 -2
- package/EditorMarks.js.flow +3 -0
- package/FontSizeMarkSpec.js +36 -21
- package/FontSizeMarkSpec.js.flow +32 -27
- package/FontTypeMarkSpec.js +33 -17
- package/FontTypeMarkSpec.js.flow +28 -15
- package/MarkNames.js +2 -1
- package/MarkNames.js.flow +1 -0
- package/OverrideMarkSpec.js +54 -0
- package/OverrideMarkSpec.js.flow +49 -0
- package/ParagraphNodeSpec.js +12 -3
- package/ParagraphNodeSpec.js.flow +25 -14
- package/StrikeMarkSpec.js +14 -7
- package/StrikeMarkSpec.js.flow +10 -7
- package/StrongMarkSpec.js +28 -15
- package/StrongMarkSpec.js.flow +26 -12
- package/TextColorMarkSpec.js +17 -10
- package/TextColorMarkSpec.js.flow +11 -6
- package/TextHighlightMarkSpec.js +18 -8
- package/TextHighlightMarkSpec.js.flow +15 -6
- package/TextSubMarkSpec.js +18 -4
- package/TextSubMarkSpec.js.flow +7 -6
- package/TextSuperMarkSpec.js +18 -4
- package/TextSuperMarkSpec.js.flow +7 -6
- package/TextUnderlineMarkSpec.js +15 -12
- package/TextUnderlineMarkSpec.js.flow +10 -13
- package/bom.xml +3049 -2907
- package/buildEditorPlugins.js +0 -1
- package/buildEditorPlugins.js.flow +7 -8
- package/package.json +4 -4
- package/styles.css +4 -2
- package/ui/ListTypeMenu.js +6 -0
- package/ui/ListTypeMenu.js.flow +9 -0
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
|
-
|
|
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
|
|
32
|
+
toDOM: function toDOM(mark) {
|
|
33
|
+
return ['em', {
|
|
34
|
+
overridden: mark.attrs.overridden
|
|
35
|
+
}, 0];
|
|
12
36
|
}
|
|
13
37
|
};
|
|
14
38
|
export default EMMarkSpec;
|
package/EMMarkSpec.js.flow
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
package/EditorMarks.js.flow
CHANGED
|
@@ -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 });
|
package/FontSizeMarkSpec.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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";
|
package/FontSizeMarkSpec.js.flow
CHANGED
|
@@ -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
|
-
|
|
18
|
-
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
|
|
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
|
-
|
|
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;
|
package/FontTypeMarkSpec.js
CHANGED
|
@@ -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
|
|
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
|
-
//
|
|
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
|
-
|
|
40
|
-
getAttrs: function getAttrs(
|
|
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
|
|
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
|
|
48
|
-
|
|
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);
|
package/FontTypeMarkSpec.js.flow
CHANGED
|
@@ -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
|
|
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
|
-
//
|
|
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
|
-
|
|
55
|
-
getAttrs: (
|
|
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
|
|
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
|
@@ -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;
|
package/ParagraphNodeSpec.js
CHANGED
|
@@ -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);
|