@atlaskit/adf-schema 25.1.0 → 25.2.0
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/CHANGELOG.md +14 -0
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/json-schema/index.js +0 -3
- package/dist/cjs/schema/bitbucket-schema.js +0 -2
- package/dist/cjs/schema/confluence-schema.js +1 -4
- package/dist/cjs/schema/create-schema.js +12 -38
- package/dist/cjs/schema/default-schema.js +3 -16
- package/dist/cjs/schema/groups.js +13 -6
- package/dist/cjs/schema/index.js +0 -5
- package/dist/cjs/schema/inline-nodes.js +0 -5
- package/dist/cjs/schema/jira-schema.js +0 -36
- package/dist/cjs/schema/marks/alignment.js +0 -2
- package/dist/cjs/schema/marks/annotation.js +2 -14
- package/dist/cjs/schema/marks/code.js +0 -5
- package/dist/cjs/schema/marks/confluence-inline-comment.js +1 -1
- package/dist/cjs/schema/marks/data-consumer.js +2 -7
- package/dist/cjs/schema/marks/em.js +0 -2
- package/dist/cjs/schema/marks/fragment.js +0 -13
- package/dist/cjs/schema/marks/indentation.js +0 -2
- package/dist/cjs/schema/marks/index.js +0 -18
- package/dist/cjs/schema/marks/link.js +0 -17
- package/dist/cjs/schema/marks/strike.js +0 -2
- package/dist/cjs/schema/marks/strong.js +2 -3
- package/dist/cjs/schema/marks/subsup.js +0 -5
- package/dist/cjs/schema/marks/text-color.js +46 -37
- package/dist/cjs/schema/marks/type-ahead-query.js +0 -3
- package/dist/cjs/schema/marks/underline.js +0 -2
- package/dist/cjs/schema/nodes/block-card.js +1 -2
- package/dist/cjs/schema/nodes/blockquote.js +1 -1
- package/dist/cjs/schema/nodes/bodied-extension.js +0 -3
- package/dist/cjs/schema/nodes/caption.js +1 -1
- package/dist/cjs/schema/nodes/code-block.js +11 -29
- package/dist/cjs/schema/nodes/date.js +1 -1
- package/dist/cjs/schema/nodes/decision-item.js +2 -4
- package/dist/cjs/schema/nodes/decision-list.js +0 -2
- package/dist/cjs/schema/nodes/doc.js +1 -1
- package/dist/cjs/schema/nodes/embed-card.js +6 -6
- package/dist/cjs/schema/nodes/emoji.js +11 -9
- package/dist/cjs/schema/nodes/expand.js +1 -4
- package/dist/cjs/schema/nodes/extension.js +0 -3
- package/dist/cjs/schema/nodes/hard-break.js +1 -1
- package/dist/cjs/schema/nodes/heading.js +2 -2
- package/dist/cjs/schema/nodes/index.js +0 -45
- package/dist/cjs/schema/nodes/inline-card.js +4 -4
- package/dist/cjs/schema/nodes/inline-extension.js +0 -3
- package/dist/cjs/schema/nodes/layout-column.js +4 -5
- package/dist/cjs/schema/nodes/layout-section.js +1 -1
- package/dist/cjs/schema/nodes/media-group.js +1 -1
- package/dist/cjs/schema/nodes/media-inline.js +0 -2
- package/dist/cjs/schema/nodes/media-single.js +3 -14
- package/dist/cjs/schema/nodes/media.js +10 -28
- package/dist/cjs/schema/nodes/mention.js +4 -14
- package/dist/cjs/schema/nodes/nested-expand.js +1 -1
- package/dist/cjs/schema/nodes/ordered-list.js +3 -17
- package/dist/cjs/schema/nodes/panel.js +1 -13
- package/dist/cjs/schema/nodes/paragraph.js +1 -6
- package/dist/cjs/schema/nodes/placeholder.js +1 -1
- package/dist/cjs/schema/nodes/rule.js +1 -1
- package/dist/cjs/schema/nodes/status.js +4 -6
- package/dist/cjs/schema/nodes/tableNodes.js +12 -39
- package/dist/cjs/schema/nodes/task-item.js +2 -4
- package/dist/cjs/schema/nodes/task-list.js +0 -2
- package/dist/cjs/schema/nodes/text.js +1 -1
- package/dist/cjs/steps/analytics.js +4 -38
- package/dist/cjs/steps/set-attrs.js +0 -26
- package/dist/cjs/steps/table/add-column.js +33 -105
- package/dist/cjs/steps/table/constants.js +0 -1
- package/dist/cjs/steps/table/sort-column.js +0 -19
- package/dist/cjs/steps/table/utils/cell-step.js +18 -49
- package/dist/cjs/steps/table/utils/cells-at-column.js +2 -21
- package/dist/cjs/steps/table/utils/find-column.js +13 -17
- package/dist/cjs/steps/table/utils/get-table-rect-from-doc.js +6 -8
- package/dist/cjs/steps/table/utils/side-effects/rows.js +23 -78
- package/dist/cjs/steps/table/utils/side-effects/side-effects.js +0 -23
- package/dist/cjs/steps/table/utils/side-effects/table.js +2 -18
- package/dist/cjs/steps/table/utils/table-map.js +0 -6
- package/dist/cjs/steps/type-ahead.js +5 -25
- package/dist/cjs/steps.js +0 -6
- package/dist/cjs/utils/colors.js +13 -36
- package/dist/cjs/utils/confluence/emoji.js +6 -13
- package/dist/cjs/utils/extensions.js +0 -8
- package/dist/cjs/utils/index.js +0 -4
- package/dist/cjs/utils/parseDOM.js +0 -2
- package/dist/cjs/utils/url.js +3 -20
- package/dist/cjs/utils/uuid.js +0 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/index.js +1 -2
- package/dist/es2019/schema/bitbucket-schema.js +1 -1
- package/dist/es2019/schema/confluence-schema.js +1 -2
- package/dist/es2019/schema/create-schema.js +12 -25
- package/dist/es2019/schema/default-schema.js +3 -11
- package/dist/es2019/schema/groups.js +13 -6
- package/dist/es2019/schema/index.js +1 -2
- package/dist/es2019/schema/jira-schema.js +0 -24
- package/dist/es2019/schema/marks/alignment.js +1 -3
- package/dist/es2019/schema/marks/annotation.js +3 -9
- package/dist/es2019/schema/marks/breakout.js +0 -4
- package/dist/es2019/schema/marks/code.js +1 -5
- package/dist/es2019/schema/marks/confluence-inline-comment.js +1 -2
- package/dist/es2019/schema/marks/data-consumer.js +3 -5
- package/dist/es2019/schema/marks/em.js +1 -2
- package/dist/es2019/schema/marks/fragment.js +0 -8
- package/dist/es2019/schema/marks/indentation.js +0 -4
- package/dist/es2019/schema/marks/link.js +2 -11
- package/dist/es2019/schema/marks/strike.js +1 -2
- package/dist/es2019/schema/marks/strong.js +3 -7
- package/dist/es2019/schema/marks/subsup.js +0 -6
- package/dist/es2019/schema/marks/text-color.js +44 -29
- package/dist/es2019/schema/marks/type-ahead-query.js +0 -2
- package/dist/es2019/schema/marks/underline.js +1 -2
- package/dist/es2019/schema/marks/unsupported-mark.js +0 -1
- package/dist/es2019/schema/marks/unsupported-node-attributes.js +0 -1
- package/dist/es2019/schema/nodes/block-card.js +1 -3
- package/dist/es2019/schema/nodes/blockquote.js +1 -2
- package/dist/es2019/schema/nodes/bodied-extension.js +0 -4
- package/dist/es2019/schema/nodes/bullet-list.js +0 -2
- package/dist/es2019/schema/nodes/caption.js +1 -2
- package/dist/es2019/schema/nodes/code-block.js +11 -28
- package/dist/es2019/schema/nodes/confluence-jira-issue.js +0 -2
- package/dist/es2019/schema/nodes/confluence-unsupported-block.js +0 -4
- package/dist/es2019/schema/nodes/confluence-unsupported-inline.js +0 -4
- package/dist/es2019/schema/nodes/date.js +1 -2
- package/dist/es2019/schema/nodes/decision-item.js +0 -2
- package/dist/es2019/schema/nodes/decision-list.js +1 -2
- package/dist/es2019/schema/nodes/doc.js +1 -0
- package/dist/es2019/schema/nodes/embed-card.js +1 -2
- package/dist/es2019/schema/nodes/emoji.js +9 -6
- package/dist/es2019/schema/nodes/expand.js +1 -3
- package/dist/es2019/schema/nodes/extension.js +0 -4
- package/dist/es2019/schema/nodes/hard-break.js +1 -2
- package/dist/es2019/schema/nodes/heading.js +2 -3
- package/dist/es2019/schema/nodes/image.js +0 -4
- package/dist/es2019/schema/nodes/inline-card.js +4 -5
- package/dist/es2019/schema/nodes/inline-extension.js +0 -4
- package/dist/es2019/schema/nodes/layout-column.js +4 -6
- package/dist/es2019/schema/nodes/layout-section.js +1 -4
- package/dist/es2019/schema/nodes/list-item.js +0 -2
- package/dist/es2019/schema/nodes/media-group.js +1 -2
- package/dist/es2019/schema/nodes/media-single.js +3 -6
- package/dist/es2019/schema/nodes/media.js +10 -20
- package/dist/es2019/schema/nodes/mention.js +0 -11
- package/dist/es2019/schema/nodes/nested-expand.js +1 -2
- package/dist/es2019/schema/nodes/ordered-list.js +4 -14
- package/dist/es2019/schema/nodes/panel.js +3 -10
- package/dist/es2019/schema/nodes/paragraph.js +1 -7
- package/dist/es2019/schema/nodes/placeholder.js +1 -2
- package/dist/es2019/schema/nodes/rule.js +1 -2
- package/dist/es2019/schema/nodes/status.js +1 -2
- package/dist/es2019/schema/nodes/tableNodes.js +10 -26
- package/dist/es2019/schema/nodes/task-item.js +0 -2
- package/dist/es2019/schema/nodes/task-list.js +0 -2
- package/dist/es2019/schema/nodes/text.js +1 -0
- package/dist/es2019/schema/nodes/unknown-block.js +0 -2
- package/dist/es2019/schema/nodes/unsupported-block.js +0 -2
- package/dist/es2019/schema/nodes/unsupported-inline.js +0 -2
- package/dist/es2019/steps/analytics.js +13 -30
- package/dist/es2019/steps/set-attrs.js +3 -12
- package/dist/es2019/steps/table/add-column.js +33 -76
- package/dist/es2019/steps/table/constants.js +0 -1
- package/dist/es2019/steps/table/sort-column.js +1 -8
- package/dist/es2019/steps/table/utils/cell-step.js +15 -32
- package/dist/es2019/steps/table/utils/cells-at-column.js +6 -11
- package/dist/es2019/steps/table/utils/find-column.js +12 -15
- package/dist/es2019/steps/table/utils/get-table-rect-from-doc.js +7 -6
- package/dist/es2019/steps/table/utils/side-effects/rows.js +19 -59
- package/dist/es2019/steps/table/utils/side-effects/side-effects.js +0 -21
- package/dist/es2019/steps/table/utils/side-effects/table.js +0 -17
- package/dist/es2019/steps/type-ahead.js +3 -15
- package/dist/es2019/utils/colors.js +8 -18
- package/dist/es2019/utils/confluence/emoji.js +5 -8
- package/dist/es2019/utils/extensions.js +0 -4
- package/dist/es2019/utils/url.js +2 -12
- package/dist/es2019/utils/uuid.js +0 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/schema/bitbucket-schema.js +1 -1
- package/dist/esm/schema/confluence-schema.js +1 -2
- package/dist/esm/schema/create-schema.js +12 -31
- package/dist/esm/schema/default-schema.js +3 -11
- package/dist/esm/schema/groups.js +13 -6
- package/dist/esm/schema/index.js +1 -2
- package/dist/esm/schema/jira-schema.js +0 -24
- package/dist/esm/schema/marks/alignment.js +1 -1
- package/dist/esm/schema/marks/annotation.js +3 -11
- package/dist/esm/schema/marks/code.js +1 -3
- package/dist/esm/schema/marks/confluence-inline-comment.js +1 -0
- package/dist/esm/schema/marks/data-consumer.js +3 -3
- package/dist/esm/schema/marks/em.js +1 -0
- package/dist/esm/schema/marks/fragment.js +0 -9
- package/dist/esm/schema/marks/link.js +0 -12
- package/dist/esm/schema/marks/strike.js +1 -0
- package/dist/esm/schema/marks/strong.js +3 -1
- package/dist/esm/schema/marks/subsup.js +0 -4
- package/dist/esm/schema/marks/text-color.js +46 -30
- package/dist/esm/schema/marks/underline.js +1 -0
- package/dist/esm/schema/nodes/block-card.js +1 -1
- package/dist/esm/schema/nodes/blockquote.js +1 -0
- package/dist/esm/schema/nodes/bodied-extension.js +0 -2
- package/dist/esm/schema/nodes/caption.js +1 -0
- package/dist/esm/schema/nodes/code-block.js +11 -26
- package/dist/esm/schema/nodes/date.js +1 -0
- package/dist/esm/schema/nodes/decision-item.js +2 -2
- package/dist/esm/schema/nodes/decision-list.js +1 -0
- package/dist/esm/schema/nodes/doc.js +1 -0
- package/dist/esm/schema/nodes/embed-card.js +6 -5
- package/dist/esm/schema/nodes/emoji.js +12 -7
- package/dist/esm/schema/nodes/expand.js +1 -1
- package/dist/esm/schema/nodes/extension.js +0 -2
- package/dist/esm/schema/nodes/hard-break.js +1 -0
- package/dist/esm/schema/nodes/heading.js +2 -1
- package/dist/esm/schema/nodes/inline-card.js +4 -3
- package/dist/esm/schema/nodes/inline-extension.js +0 -2
- package/dist/esm/schema/nodes/layout-column.js +4 -4
- package/dist/esm/schema/nodes/layout-section.js +1 -0
- package/dist/esm/schema/nodes/media-group.js +1 -0
- package/dist/esm/schema/nodes/media-single.js +3 -8
- package/dist/esm/schema/nodes/media.js +10 -18
- package/dist/esm/schema/nodes/mention.js +4 -13
- package/dist/esm/schema/nodes/nested-expand.js +1 -0
- package/dist/esm/schema/nodes/ordered-list.js +3 -13
- package/dist/esm/schema/nodes/panel.js +1 -10
- package/dist/esm/schema/nodes/paragraph.js +1 -5
- package/dist/esm/schema/nodes/placeholder.js +1 -0
- package/dist/esm/schema/nodes/rule.js +1 -0
- package/dist/esm/schema/nodes/status.js +5 -4
- package/dist/esm/schema/nodes/tableNodes.js +12 -25
- package/dist/esm/schema/nodes/task-item.js +2 -2
- package/dist/esm/schema/nodes/text.js +1 -0
- package/dist/esm/steps/analytics.js +5 -31
- package/dist/esm/steps/set-attrs.js +1 -17
- package/dist/esm/steps/table/add-column.js +33 -91
- package/dist/esm/steps/table/constants.js +0 -1
- package/dist/esm/steps/table/sort-column.js +1 -10
- package/dist/esm/steps/table/utils/cell-step.js +18 -42
- package/dist/esm/steps/table/utils/cells-at-column.js +2 -18
- package/dist/esm/steps/table/utils/find-column.js +13 -16
- package/dist/esm/steps/table/utils/get-table-rect-from-doc.js +7 -6
- package/dist/esm/steps/table/utils/side-effects/rows.js +23 -76
- package/dist/esm/steps/table/utils/side-effects/side-effects.js +0 -18
- package/dist/esm/steps/table/utils/side-effects/table.js +2 -13
- package/dist/esm/steps/type-ahead.js +6 -18
- package/dist/esm/utils/colors.js +12 -23
- package/dist/esm/utils/confluence/emoji.js +6 -10
- package/dist/esm/utils/extensions.js +0 -4
- package/dist/esm/utils/url.js +2 -12
- package/dist/esm/version.json +1 -1
- package/dist/types/schema/default-schema.d.ts +1 -1
- package/dist/types/utils/colors.d.ts +1 -1
- package/package.json +2 -2
@@ -6,7 +6,6 @@ export const typeAheadQuery = {
|
|
6
6
|
parseDOM: [{
|
7
7
|
tag: 'span[data-type-ahead-query]'
|
8
8
|
}],
|
9
|
-
|
10
9
|
toDOM(node) {
|
11
10
|
return ['span', {
|
12
11
|
'data-type-ahead-query': 'true',
|
@@ -14,7 +13,6 @@ export const typeAheadQuery = {
|
|
14
13
|
style: `color: ${B400}`
|
15
14
|
}];
|
16
15
|
},
|
17
|
-
|
18
16
|
attrs: {
|
19
17
|
trigger: {
|
20
18
|
default: ''
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { FONT_STYLE } from '../groups';
|
2
|
+
|
2
3
|
/**
|
3
4
|
* @name underline_mark
|
4
5
|
*/
|
@@ -12,9 +13,7 @@ export const underline = {
|
|
12
13
|
style: 'text-decoration',
|
13
14
|
getAttrs: value => value === 'underline' && null
|
14
15
|
}],
|
15
|
-
|
16
16
|
toDOM() {
|
17
17
|
return ['u'];
|
18
18
|
}
|
19
|
-
|
20
19
|
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @name blockCard_node
|
3
3
|
*/
|
4
|
+
|
4
5
|
export const blockCard = {
|
5
6
|
inline: false,
|
6
7
|
group: 'block',
|
@@ -37,10 +38,8 @@ export const blockCard = {
|
|
37
38
|
};
|
38
39
|
}
|
39
40
|
}],
|
40
|
-
|
41
41
|
toDOM(node) {
|
42
42
|
var _node$attrs;
|
43
|
-
|
44
43
|
const attrs = {
|
45
44
|
'data-block-card': '',
|
46
45
|
href: node.attrs.url || '',
|
@@ -48,5 +47,4 @@ export const blockCard = {
|
|
48
47
|
};
|
49
48
|
return ['a', attrs, (node === null || node === void 0 ? void 0 : (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.url) || ' '];
|
50
49
|
}
|
51
|
-
|
52
50
|
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @name blockquote_node
|
3
3
|
*/
|
4
|
+
|
4
5
|
export const blockquote = {
|
5
6
|
content: '(paragraph | unsupportedBlock)+',
|
6
7
|
group: 'block',
|
@@ -9,9 +10,7 @@ export const blockquote = {
|
|
9
10
|
parseDOM: [{
|
10
11
|
tag: 'blockquote'
|
11
12
|
}],
|
12
|
-
|
13
13
|
toDOM() {
|
14
14
|
return ['blockquote', 0];
|
15
15
|
}
|
16
|
-
|
17
16
|
};
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { getExtensionAttrs } from '../../utils/extensions';
|
2
|
-
|
3
2
|
const createBodiedExtensionNodeSpec = () => {
|
4
3
|
const nodeSpec = {
|
5
4
|
inline: false,
|
@@ -37,7 +36,6 @@ const createBodiedExtensionNodeSpec = () => {
|
|
37
36
|
tag: '[data-node-type="bodied-extension"]',
|
38
37
|
getAttrs: domNode => getExtensionAttrs(domNode)
|
39
38
|
}],
|
40
|
-
|
41
39
|
toDOM(node) {
|
42
40
|
const attrs = {
|
43
41
|
'data-node-type': 'bodied-extension',
|
@@ -50,9 +48,7 @@ const createBodiedExtensionNodeSpec = () => {
|
|
50
48
|
};
|
51
49
|
return ['div', attrs, 0];
|
52
50
|
}
|
53
|
-
|
54
51
|
};
|
55
52
|
return nodeSpec;
|
56
53
|
};
|
57
|
-
|
58
54
|
export const bodiedExtension = createBodiedExtensionNodeSpec();
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @name caption_node
|
3
3
|
*/
|
4
|
+
|
4
5
|
export const caption = {
|
5
6
|
content: '(text|hardBreak|mention|emoji|date|placeholder|inlineCard|status)*',
|
6
7
|
isolating: true,
|
@@ -9,12 +10,10 @@ export const caption = {
|
|
9
10
|
parseDOM: [{
|
10
11
|
tag: 'figcaption[data-caption]'
|
11
12
|
}],
|
12
|
-
|
13
13
|
toDOM(node) {
|
14
14
|
const attrs = {
|
15
15
|
'data-caption': 'true'
|
16
16
|
};
|
17
17
|
return ['figcaption', attrs, 0];
|
18
18
|
}
|
19
|
-
|
20
19
|
};
|
@@ -1,50 +1,40 @@
|
|
1
1
|
import { Fragment } from 'prosemirror-model';
|
2
|
-
|
3
2
|
const getLanguageFromEditorStyle = dom => {
|
4
3
|
return dom.getAttribute('data-language') || undefined;
|
5
|
-
};
|
6
|
-
// <div class="codehilite language-javascript"><pre><span>hello world</span><span>\n</span></pre></div>
|
7
|
-
|
4
|
+
};
|
8
5
|
|
6
|
+
// example of BB style:
|
7
|
+
// <div class="codehilite language-javascript"><pre><span>hello world</span><span>\n</span></pre></div>
|
9
8
|
const getLanguageFromBitbucketStyle = dom => {
|
10
9
|
if (dom && dom.classList.contains('codehilite')) {
|
11
10
|
// code block html from Bitbucket always contains an extra new line
|
12
11
|
return extractLanguageFromClass(dom.className);
|
13
12
|
}
|
14
|
-
|
15
13
|
return;
|
16
|
-
};
|
17
|
-
|
14
|
+
};
|
18
15
|
|
16
|
+
// If there is a child code element, check that for data-language
|
19
17
|
const getLanguageFromCode = dom => {
|
20
18
|
const firstChild = dom.firstElementChild;
|
21
|
-
|
22
19
|
if (firstChild && firstChild.nodeName === 'CODE') {
|
23
20
|
return firstChild.getAttribute('data-language') || undefined;
|
24
21
|
}
|
25
22
|
};
|
26
|
-
|
27
23
|
const extractLanguageFromClass = className => {
|
28
24
|
const languageRegex = /(?:^|\s)language-([^\s]+)/;
|
29
25
|
const result = languageRegex.exec(className);
|
30
|
-
|
31
26
|
if (result && result[1]) {
|
32
27
|
return result[1];
|
33
28
|
}
|
34
|
-
|
35
29
|
return;
|
36
30
|
};
|
37
|
-
|
38
31
|
const removeLastNewLine = dom => {
|
39
32
|
const parent = dom && dom.parentElement;
|
40
|
-
|
41
33
|
if (parent && parent.classList.contains('codehilite')) {
|
42
34
|
dom.textContent = dom.textContent.replace(/\n$/, '');
|
43
35
|
}
|
44
|
-
|
45
36
|
return dom;
|
46
37
|
};
|
47
|
-
|
48
38
|
export const codeBlock = {
|
49
39
|
attrs: {
|
50
40
|
language: {
|
@@ -70,18 +60,17 @@ export const codeBlock = {
|
|
70
60
|
language
|
71
61
|
};
|
72
62
|
}
|
73
|
-
},
|
63
|
+
},
|
64
|
+
// Handle VSCode paste
|
74
65
|
// Checking `white-space: pre-wrap` is too aggressive @see ED-2627
|
75
66
|
{
|
76
67
|
tag: 'div[style]',
|
77
68
|
preserveWhitespace: 'full',
|
78
69
|
getAttrs: domNode => {
|
79
70
|
const dom = domNode;
|
80
|
-
|
81
71
|
if (dom.style.whiteSpace === 'pre' || dom.style.fontFamily && dom.style.fontFamily.toLowerCase().indexOf('monospace') > -1) {
|
82
72
|
return {};
|
83
73
|
}
|
84
|
-
|
85
74
|
return false;
|
86
75
|
},
|
87
76
|
// @see ED-5682
|
@@ -90,7 +79,8 @@ export const codeBlock = {
|
|
90
79
|
const code = Array.from(dom.children).map(child => child.textContent).filter(x => x !== undefined).join('\n');
|
91
80
|
return code ? Fragment.from(schema.text(code)) : Fragment.empty;
|
92
81
|
}
|
93
|
-
},
|
82
|
+
},
|
83
|
+
// Handle GitHub/Gist paste
|
94
84
|
{
|
95
85
|
tag: 'table[style]',
|
96
86
|
preserveWhitespace: 'full',
|
@@ -98,45 +88,38 @@ export const codeBlock = {
|
|
98
88
|
if (dom.querySelector('td[class*="blob-code"]')) {
|
99
89
|
return {};
|
100
90
|
}
|
101
|
-
|
102
91
|
return false;
|
103
92
|
}
|
104
93
|
}, {
|
105
94
|
tag: 'div.code-block',
|
106
95
|
preserveWhitespace: 'full',
|
107
96
|
getAttrs: domNode => {
|
108
|
-
const dom = domNode;
|
97
|
+
const dom = domNode;
|
98
|
+
// TODO: ED-5604 Fix it inside `react-syntax-highlighter`
|
109
99
|
// Remove line numbers
|
110
|
-
|
111
100
|
const lineNumber = dom.querySelectorAll('.react-syntax-highlighter-line-number');
|
112
|
-
|
113
101
|
if (lineNumber.length > 0) {
|
114
102
|
// It's possible to copy without the line numbers too hence this
|
115
103
|
// `react-syntax-highlighter-line-number` check, so that we don't remove real code
|
116
104
|
lineNumber.forEach(line => line.remove());
|
117
105
|
}
|
118
|
-
|
119
106
|
return {};
|
120
107
|
}
|
121
108
|
}],
|
122
|
-
|
123
109
|
toDOM(node) {
|
124
110
|
return ['pre', ['code', {
|
125
111
|
'data-language': node.attrs.language
|
126
112
|
}, 0]];
|
127
113
|
}
|
128
|
-
|
129
114
|
};
|
130
115
|
export const toJSON = node => ({
|
131
116
|
attrs: Object.keys(node.attrs).reduce((memo, key) => {
|
132
117
|
if (key === 'uniqueId') {
|
133
118
|
return memo;
|
134
119
|
}
|
135
|
-
|
136
120
|
if (key === 'language' && node.attrs.language === null) {
|
137
121
|
return memo;
|
138
122
|
}
|
139
|
-
|
140
123
|
memo[key] = node.attrs[key];
|
141
124
|
return memo;
|
142
125
|
}, {})
|
@@ -6,7 +6,6 @@ export const confluenceUnsupportedBlock = {
|
|
6
6
|
default: null
|
7
7
|
}
|
8
8
|
},
|
9
|
-
|
10
9
|
toDOM(node) {
|
11
10
|
// NOTE: This node cannot be "contenteditable: false". If it's the only node in a document, PM throws an error because there's nowhere to put the cursor.
|
12
11
|
const attrs = {
|
@@ -16,15 +15,12 @@ export const confluenceUnsupportedBlock = {
|
|
16
15
|
};
|
17
16
|
return ['div', attrs, 'Unsupported content'];
|
18
17
|
},
|
19
|
-
|
20
18
|
parseDOM: [{
|
21
19
|
tag: `div[data-node-type="${name}"]`,
|
22
|
-
|
23
20
|
getAttrs(dom) {
|
24
21
|
return {
|
25
22
|
cxhtml: dom.getAttribute('data-confluence-unsupported-block-cxhtml')
|
26
23
|
};
|
27
24
|
}
|
28
|
-
|
29
25
|
}]
|
30
26
|
};
|
@@ -8,7 +8,6 @@ export const confluenceUnsupportedInline = {
|
|
8
8
|
default: null
|
9
9
|
}
|
10
10
|
},
|
11
|
-
|
12
11
|
toDOM(node) {
|
13
12
|
const attrs = {
|
14
13
|
'data-node-type': name,
|
@@ -17,15 +16,12 @@ export const confluenceUnsupportedInline = {
|
|
17
16
|
};
|
18
17
|
return ['div', attrs, 'Unsupported content'];
|
19
18
|
},
|
20
|
-
|
21
19
|
parseDOM: [{
|
22
20
|
tag: `div[data-node-type="${name}"]`,
|
23
|
-
|
24
21
|
getAttrs(dom) {
|
25
22
|
return {
|
26
23
|
cxhtml: dom.getAttribute('data-confluence-unsupported-inline-cxhtml')
|
27
24
|
};
|
28
25
|
}
|
29
|
-
|
30
26
|
}]
|
31
27
|
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @name date_node
|
3
3
|
*/
|
4
|
+
|
4
5
|
export const date = {
|
5
6
|
inline: true,
|
6
7
|
group: 'inline',
|
@@ -16,7 +17,6 @@ export const date = {
|
|
16
17
|
timestamp: dom.getAttribute('data-timestamp')
|
17
18
|
})
|
18
19
|
}],
|
19
|
-
|
20
20
|
toDOM(node) {
|
21
21
|
const attrs = {
|
22
22
|
'data-node-type': 'date',
|
@@ -24,5 +24,4 @@ export const date = {
|
|
24
24
|
};
|
25
25
|
return ['span', attrs];
|
26
26
|
}
|
27
|
-
|
28
27
|
};
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { uuid } from '../../utils/uuid';
|
2
|
+
|
2
3
|
/**
|
3
4
|
* @name decisionList_node
|
4
5
|
*/
|
@@ -25,7 +26,6 @@ export const decisionList = {
|
|
25
26
|
localId: uuid.generate()
|
26
27
|
})
|
27
28
|
}],
|
28
|
-
|
29
29
|
toDOM(node) {
|
30
30
|
const {
|
31
31
|
localId
|
@@ -37,5 +37,4 @@ export const decisionList = {
|
|
37
37
|
};
|
38
38
|
return ['ol', attrs, 0];
|
39
39
|
}
|
40
|
-
|
41
40
|
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @name embedCard_node
|
3
3
|
*/
|
4
|
+
|
4
5
|
export const embedCard = {
|
5
6
|
inline: false,
|
6
7
|
group: 'block',
|
@@ -32,7 +33,6 @@ export const embedCard = {
|
|
32
33
|
originalHeight: Number(dom.getAttribute('data-card-original-height')) || null
|
33
34
|
})
|
34
35
|
}],
|
35
|
-
|
36
36
|
toDOM(node) {
|
37
37
|
const {
|
38
38
|
url,
|
@@ -51,5 +51,4 @@ export const embedCard = {
|
|
51
51
|
};
|
52
52
|
return ['div', attrs];
|
53
53
|
}
|
54
|
-
|
55
54
|
};
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { acNameToEmoji, acShortcutToEmoji } from '../../utils/confluence/emoji';
|
2
|
+
|
2
3
|
/**
|
3
4
|
* @name emoji_node
|
4
5
|
*/
|
@@ -18,7 +19,8 @@ export const emoji = {
|
|
18
19
|
default: ''
|
19
20
|
}
|
20
21
|
},
|
21
|
-
parseDOM: [
|
22
|
+
parseDOM: [
|
23
|
+
// Handle copy/paste beautiful panel from renderer />
|
22
24
|
{
|
23
25
|
tag: 'div.ak-editor-panel__icon span',
|
24
26
|
ignore: true
|
@@ -32,15 +34,18 @@ export const emoji = {
|
|
32
34
|
text: dom.getAttribute('data-emoji-text') || emoji.attrs.text.default
|
33
35
|
};
|
34
36
|
}
|
35
|
-
},
|
37
|
+
},
|
38
|
+
// Handle copy/paste from old <ac:emoticon />
|
36
39
|
{
|
37
40
|
tag: 'img[data-emoticon-name]',
|
38
41
|
getAttrs: dom => acNameToEmoji(dom.getAttribute('data-emoticon-name'))
|
39
|
-
},
|
42
|
+
},
|
43
|
+
// Handle copy/paste from old <ac:hipchat-emoticons />
|
40
44
|
{
|
41
45
|
tag: 'img[data-hipchat-emoticon]',
|
42
46
|
getAttrs: dom => acShortcutToEmoji(dom.getAttribute('data-hipchat-emoticon'))
|
43
|
-
},
|
47
|
+
},
|
48
|
+
// Handle copy/paste from bitbucket's <img class="emoji" />
|
44
49
|
{
|
45
50
|
tag: 'img.emoji[data-emoji-short-name]',
|
46
51
|
getAttrs: domNode => {
|
@@ -52,7 +57,6 @@ export const emoji = {
|
|
52
57
|
};
|
53
58
|
}
|
54
59
|
}],
|
55
|
-
|
56
60
|
toDOM(node) {
|
57
61
|
const {
|
58
62
|
shortName,
|
@@ -67,5 +71,4 @@ export const emoji = {
|
|
67
71
|
};
|
68
72
|
return ['span', attrs, text];
|
69
73
|
}
|
70
|
-
|
71
74
|
};
|
@@ -9,6 +9,7 @@
|
|
9
9
|
/**
|
10
10
|
* @name expand_with_breakout_mark_node
|
11
11
|
*/
|
12
|
+
|
12
13
|
function getExpandAttrs(domNode) {
|
13
14
|
const dom = domNode;
|
14
15
|
return {
|
@@ -16,7 +17,6 @@ function getExpandAttrs(domNode) {
|
|
16
17
|
__expanded: true
|
17
18
|
};
|
18
19
|
}
|
19
|
-
|
20
20
|
export const expand = {
|
21
21
|
inline: false,
|
22
22
|
group: 'block',
|
@@ -54,7 +54,6 @@ export const expand = {
|
|
54
54
|
tag: 'div[data-node-type="expand"]',
|
55
55
|
getAttrs: getExpandAttrs
|
56
56
|
}],
|
57
|
-
|
58
57
|
toDOM(node) {
|
59
58
|
const attrs = {
|
60
59
|
'data-node-type': 'expand',
|
@@ -63,7 +62,6 @@ export const expand = {
|
|
63
62
|
};
|
64
63
|
return ['div', attrs, 0];
|
65
64
|
}
|
66
|
-
|
67
65
|
};
|
68
66
|
export const toJSON = node => ({
|
69
67
|
attrs: Object.keys(node.attrs).filter(key => !key.startsWith('__')).reduce((obj, key) => {
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { getExtensionAttrs } from '../../utils/extensions';
|
2
|
-
|
3
2
|
const createExtensionNodeSpec = () => {
|
4
3
|
const nodeSpec = {
|
5
4
|
inline: false,
|
@@ -30,7 +29,6 @@ const createExtensionNodeSpec = () => {
|
|
30
29
|
tag: '[data-node-type="extension"]',
|
31
30
|
getAttrs: domNode => getExtensionAttrs(domNode)
|
32
31
|
}],
|
33
|
-
|
34
32
|
toDOM(node) {
|
35
33
|
const attrs = {
|
36
34
|
'data-node-type': 'extension',
|
@@ -43,9 +41,7 @@ const createExtensionNodeSpec = () => {
|
|
43
41
|
};
|
44
42
|
return ['div', attrs];
|
45
43
|
}
|
46
|
-
|
47
44
|
};
|
48
45
|
return nodeSpec;
|
49
46
|
};
|
50
|
-
|
51
47
|
export const extension = createExtensionNodeSpec();
|
@@ -5,8 +5,8 @@
|
|
5
5
|
/**
|
6
6
|
* @name heading_with_no_marks_node
|
7
7
|
*/
|
8
|
-
// Check `paragraph` node for why we are doing things like this
|
9
8
|
|
9
|
+
// Check `paragraph` node for why we are doing things like this
|
10
10
|
/**
|
11
11
|
* @name heading_with_alignment_node
|
12
12
|
*/
|
@@ -14,6 +14,7 @@
|
|
14
14
|
/**
|
15
15
|
* @name heading_with_indentation_node
|
16
16
|
*/
|
17
|
+
|
17
18
|
export const heading = {
|
18
19
|
attrs: {
|
19
20
|
level: {
|
@@ -55,9 +56,7 @@ export const heading = {
|
|
55
56
|
level: 6
|
56
57
|
}
|
57
58
|
}],
|
58
|
-
|
59
59
|
toDOM(node) {
|
60
60
|
return ['h' + node.attrs['level'], 0];
|
61
61
|
}
|
62
|
-
|
63
62
|
};
|
@@ -18,7 +18,6 @@ export const image = {
|
|
18
18
|
ignore: true
|
19
19
|
}, {
|
20
20
|
tag: 'img[src]',
|
21
|
-
|
22
21
|
getAttrs(domNode) {
|
23
22
|
const dom = domNode;
|
24
23
|
return {
|
@@ -27,11 +26,8 @@ export const image = {
|
|
27
26
|
title: dom.getAttribute('title')
|
28
27
|
};
|
29
28
|
}
|
30
|
-
|
31
29
|
}],
|
32
|
-
|
33
30
|
toDOM(node) {
|
34
31
|
return ['img', node.attrs];
|
35
32
|
}
|
36
|
-
|
37
33
|
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @name inlineCard_node
|
3
3
|
*/
|
4
|
+
|
4
5
|
export const inlineCard = {
|
5
6
|
inline: true,
|
6
7
|
group: 'inline',
|
@@ -21,14 +22,15 @@ export const inlineCard = {
|
|
21
22
|
getAttrs: dom => {
|
22
23
|
const anchor = dom;
|
23
24
|
const data = anchor.getAttribute('data-card-data');
|
24
|
-
/* Support attrs from Editor and Renderer */
|
25
25
|
|
26
|
+
/* Support attrs from Editor and Renderer */
|
26
27
|
return {
|
27
28
|
url: anchor.getAttribute('href') || anchor.getAttribute('data-card-url') || null,
|
28
29
|
data: data ? JSON.parse(data) : null
|
29
30
|
};
|
30
31
|
}
|
31
|
-
},
|
32
|
+
},
|
33
|
+
// for renderer
|
32
34
|
{
|
33
35
|
tag: 'div[data-inline-card]',
|
34
36
|
getAttrs: dom => {
|
@@ -40,19 +42,16 @@ export const inlineCard = {
|
|
40
42
|
};
|
41
43
|
}
|
42
44
|
}],
|
43
|
-
|
44
45
|
toDOM(node) {
|
45
46
|
const attrs = {
|
46
47
|
'data-inline-card': '',
|
47
48
|
href: node.attrs.url || '',
|
48
49
|
'data-card-data': node.attrs.data ? JSON.stringify(node.attrs.data) : ''
|
49
50
|
};
|
50
|
-
|
51
51
|
if (node.attrs.url) {
|
52
52
|
return ['a', attrs, node.attrs.url];
|
53
53
|
} else {
|
54
54
|
return ['a', attrs];
|
55
55
|
}
|
56
56
|
}
|
57
|
-
|
58
57
|
};
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { getExtensionAttrs } from '../../utils/extensions';
|
2
|
-
|
3
2
|
const createInlineExtensionNodeSpec = () => {
|
4
3
|
const nodeSpec = {
|
5
4
|
inline: true,
|
@@ -26,7 +25,6 @@ const createInlineExtensionNodeSpec = () => {
|
|
26
25
|
tag: 'span[data-extension-type]',
|
27
26
|
getAttrs: domNode => getExtensionAttrs(domNode, true)
|
28
27
|
}],
|
29
|
-
|
30
28
|
toDOM(node) {
|
31
29
|
const attrs = {
|
32
30
|
'data-extension-type': node.attrs.extensionType,
|
@@ -38,9 +36,7 @@ const createInlineExtensionNodeSpec = () => {
|
|
38
36
|
};
|
39
37
|
return ['span', attrs];
|
40
38
|
}
|
41
|
-
|
42
39
|
};
|
43
40
|
return nodeSpec;
|
44
41
|
};
|
45
|
-
|
46
42
|
export const inlineExtension = createInlineExtensionNodeSpec();
|