@atlaskit/adf-schema 19.3.1 → 20.0.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 +26 -0
- package/dist/cjs/index.js +12 -6
- package/dist/cjs/schema/create-schema.js +5 -2
- package/dist/cjs/schema/default-schema.js +7 -13
- package/dist/cjs/schema/index.js +12 -6
- package/dist/cjs/schema/jira-schema.js +1 -1
- package/dist/cjs/schema/marks/fragment.js +77 -0
- package/dist/cjs/schema/marks/index.js +15 -1
- package/dist/cjs/schema/marks/unsupported-mark.js +1 -0
- package/dist/cjs/schema/nodes/bodied-extension.js +1 -1
- package/dist/cjs/schema/nodes/caption.js +0 -1
- package/dist/cjs/schema/nodes/doc.js +1 -1
- package/dist/cjs/schema/nodes/expand.js +1 -1
- package/dist/cjs/schema/nodes/index.js +0 -6
- package/dist/cjs/schema/nodes/layout-column.js +1 -1
- package/dist/cjs/schema/nodes/media-single.js +1 -1
- package/dist/cjs/schema/nodes/panel.js +2 -28
- package/dist/cjs/schema/nodes/paragraph.js +1 -1
- package/dist/cjs/schema/nodes/tableNodes.js +3 -3
- package/dist/cjs/utils/url.js +7 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/schema/create-schema.js +7 -4
- package/dist/es2019/schema/default-schema.js +7 -11
- package/dist/es2019/schema/index.js +2 -2
- package/dist/es2019/schema/jira-schema.js +1 -1
- package/dist/es2019/schema/marks/fragment.js +59 -0
- package/dist/es2019/schema/marks/index.js +2 -1
- package/dist/es2019/schema/marks/unsupported-mark.js +1 -0
- package/dist/es2019/schema/nodes/bodied-extension.js +1 -1
- package/dist/es2019/schema/nodes/caption.js +0 -1
- package/dist/es2019/schema/nodes/doc.js +1 -1
- package/dist/es2019/schema/nodes/expand.js +1 -1
- package/dist/es2019/schema/nodes/index.js +1 -1
- package/dist/es2019/schema/nodes/layout-column.js +1 -1
- package/dist/es2019/schema/nodes/media-single.js +1 -1
- package/dist/es2019/schema/nodes/panel.js +1 -28
- package/dist/es2019/schema/nodes/paragraph.js +1 -1
- package/dist/es2019/schema/nodes/tableNodes.js +3 -3
- package/dist/es2019/utils/url.js +7 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/schema/create-schema.js +7 -4
- package/dist/esm/schema/default-schema.js +7 -11
- package/dist/esm/schema/index.js +2 -2
- package/dist/esm/schema/jira-schema.js +1 -1
- package/dist/esm/schema/marks/fragment.js +64 -0
- package/dist/esm/schema/marks/index.js +2 -1
- package/dist/esm/schema/marks/unsupported-mark.js +1 -0
- package/dist/esm/schema/nodes/bodied-extension.js +1 -1
- package/dist/esm/schema/nodes/caption.js +0 -1
- package/dist/esm/schema/nodes/doc.js +1 -1
- package/dist/esm/schema/nodes/expand.js +1 -1
- package/dist/esm/schema/nodes/index.js +1 -1
- package/dist/esm/schema/nodes/layout-column.js +1 -1
- package/dist/esm/schema/nodes/media-single.js +1 -1
- package/dist/esm/schema/nodes/panel.js +1 -26
- package/dist/esm/schema/nodes/paragraph.js +1 -1
- package/dist/esm/schema/nodes/tableNodes.js +3 -3
- package/dist/esm/utils/url.js +7 -1
- package/dist/esm/version.json +1 -1
- package/dist/json-schema/v1/full.json +108 -73
- package/dist/json-schema/v1/stage-0.json +63 -26
- package/dist/types/index.d.ts +2 -2
- package/dist/types/schema/index.d.ts +3 -3
- package/dist/types/schema/marks/fragment.d.ts +30 -0
- package/dist/types/schema/marks/index.d.ts +2 -0
- package/dist/types/schema/marks/link.d.ts +3 -0
- package/dist/types/schema/nodes/block-card.d.ts +3 -0
- package/dist/types/schema/nodes/bodied-extension.d.ts +7 -5
- package/dist/types/schema/nodes/caption.d.ts +0 -1
- package/dist/types/schema/nodes/embed-card.d.ts +3 -0
- package/dist/types/schema/nodes/extension.d.ts +7 -5
- package/dist/types/schema/nodes/index.d.ts +1 -1
- package/dist/types/schema/nodes/inline-card.d.ts +0 -9
- package/dist/types/schema/nodes/inline-extension.d.ts +7 -5
- package/dist/types/schema/nodes/media-single.d.ts +0 -1
- package/dist/types/schema/nodes/panel.d.ts +1 -11
- package/json-schema/v1/full.json +108 -73
- package/json-schema/v1/stage-0.json +63 -26
- package/package.json +11 -8
- package/test-helpers/schema.ts +1 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
import { isDOMElement } from '../../utils/parseDOM';
|
2
|
+
|
3
|
+
const parseFragment = maybeValue => {
|
4
|
+
var _maybeValue$getAttrib;
|
5
|
+
|
6
|
+
if (!isDOMElement(maybeValue)) {
|
7
|
+
return false;
|
8
|
+
}
|
9
|
+
|
10
|
+
const name = (_maybeValue$getAttrib = maybeValue.getAttribute('data-name')) !== null && _maybeValue$getAttrib !== void 0 ? _maybeValue$getAttrib : undefined;
|
11
|
+
const localId = maybeValue.getAttribute('data-localId');
|
12
|
+
|
13
|
+
if (!localId) {
|
14
|
+
return false;
|
15
|
+
}
|
16
|
+
|
17
|
+
return {
|
18
|
+
localId,
|
19
|
+
name
|
20
|
+
};
|
21
|
+
};
|
22
|
+
|
23
|
+
export const fragment = {
|
24
|
+
inclusive: false,
|
25
|
+
excludes: '',
|
26
|
+
attrs: {
|
27
|
+
localId: {
|
28
|
+
default: ''
|
29
|
+
},
|
30
|
+
name: {
|
31
|
+
default: null
|
32
|
+
}
|
33
|
+
},
|
34
|
+
parseDOM: [{
|
35
|
+
tag: '[data-mark-type="fragment"]',
|
36
|
+
getAttrs: maybeValue => parseFragment(maybeValue)
|
37
|
+
}],
|
38
|
+
|
39
|
+
toDOM(mark, inline) {
|
40
|
+
const wrapperStyle = inline ? 'span' : 'div';
|
41
|
+
return [wrapperStyle, {
|
42
|
+
'data-mark-type': 'fragment',
|
43
|
+
'data-name': mark.attrs.name,
|
44
|
+
'data-localId': mark.attrs.localId
|
45
|
+
}];
|
46
|
+
}
|
47
|
+
|
48
|
+
};
|
49
|
+
export const toJSON = mark => {
|
50
|
+
return {
|
51
|
+
type: mark.type.name,
|
52
|
+
attrs: {
|
53
|
+
localId: mark.attrs.localId,
|
54
|
+
...(mark.attrs.name ? {
|
55
|
+
name: mark.attrs.name
|
56
|
+
} : {})
|
57
|
+
}
|
58
|
+
};
|
59
|
+
};
|
@@ -14,4 +14,5 @@ export { indentation } from './indentation';
|
|
14
14
|
export { annotation, AnnotationMarkStates, buildDataAttributes as buildAnnotationMarkDataAttributes, AnnotationTypes } from './annotation';
|
15
15
|
export { unsupportedMark } from './unsupported-mark';
|
16
16
|
export { unsupportedNodeAttribute } from './unsupported-node-attributes';
|
17
|
-
export { dataConsumer, toJSON as dataConsumerToJSON } from './data-consumer';
|
17
|
+
export { dataConsumer, toJSON as dataConsumerToJSON } from './data-consumer';
|
18
|
+
export { fragment, toJSON as fragmentToJSON } from './fragment';
|
@@ -4,7 +4,7 @@ const createBodiedExtensionNodeSpec = () => {
|
|
4
4
|
const nodeSpec = {
|
5
5
|
inline: false,
|
6
6
|
group: 'block',
|
7
|
-
marks: 'link dataConsumer',
|
7
|
+
marks: 'link dataConsumer fragment',
|
8
8
|
content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | extension | unsupportedBlock | embedCard)+',
|
9
9
|
defining: true,
|
10
10
|
selectable: true,
|
@@ -3,5 +3,5 @@
|
|
3
3
|
*/
|
4
4
|
export const doc = {
|
5
5
|
content: '(block|layoutSection)+',
|
6
|
-
marks: 'alignment breakout dataConsumer indentation link unsupportedMark unsupportedNodeAttribute'
|
6
|
+
marks: 'alignment breakout dataConsumer fragment indentation link unsupportedMark unsupportedNodeAttribute'
|
7
7
|
};
|
@@ -20,7 +20,7 @@ function getExpandAttrs(domNode) {
|
|
20
20
|
export const expand = {
|
21
21
|
inline: false,
|
22
22
|
group: 'block',
|
23
|
-
marks: 'link dataConsumer unsupportedMark unsupportedNodeAttribute',
|
23
|
+
marks: 'link dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
24
24
|
content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | embedCard | extension | unsupportedBlock)+',
|
25
25
|
isolating: true,
|
26
26
|
selectable: true,
|
@@ -15,7 +15,7 @@ export { emoji } from './emoji';
|
|
15
15
|
export { image } from './image';
|
16
16
|
export { mention, toJSON as mentionToJSON } from './mention';
|
17
17
|
export { listItem } from './list-item';
|
18
|
-
export { panel,
|
18
|
+
export { panel, PanelType } from './panel';
|
19
19
|
export { text } from './text';
|
20
20
|
export { default as unknownBlock } from './unknown-block';
|
21
21
|
export { caption } from './caption';
|
@@ -4,7 +4,7 @@
|
|
4
4
|
export const layoutColumn = {
|
5
5
|
content: '(block|unsupportedBlock)+',
|
6
6
|
isolating: true,
|
7
|
-
marks: 'link alignment indentation dataConsumer unsupportedMark unsupportedNodeAttribute',
|
7
|
+
marks: 'link alignment indentation dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
8
8
|
selectable: false,
|
9
9
|
attrs: {
|
10
10
|
width: {
|
@@ -17,7 +17,6 @@
|
|
17
17
|
|
18
18
|
/**
|
19
19
|
* @name mediaSingle_caption_node
|
20
|
-
* @stage 0
|
21
20
|
*/
|
22
21
|
export const defaultAttrs = {
|
23
22
|
width: {
|
@@ -64,6 +63,7 @@ export const mediaSingle = {
|
|
64
63
|
|
65
64
|
};
|
66
65
|
export const mediaSingleWithCaption = { ...mediaSingle,
|
66
|
+
atom: false,
|
67
67
|
content: 'media|unsupportedBlock+|media (caption|unsupportedBlock) unsupportedBlock*'
|
68
68
|
};
|
69
69
|
export const toJSON = node => ({
|
@@ -51,7 +51,7 @@ const getParseDOMAttrs = (allowCustomPanel, dom) => {
|
|
51
51
|
return parseDOMAttrs;
|
52
52
|
};
|
53
53
|
|
54
|
-
export const
|
54
|
+
export const panel = allowCustomPanel => {
|
55
55
|
const panelNodeSpec = {
|
56
56
|
group: 'block',
|
57
57
|
content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
|
@@ -69,31 +69,4 @@ export const customPanel = allowCustomPanel => {
|
|
69
69
|
|
70
70
|
};
|
71
71
|
return panelNodeSpec;
|
72
|
-
};
|
73
|
-
export const panel = {
|
74
|
-
group: 'block',
|
75
|
-
content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
|
76
|
-
marks: 'unsupportedMark unsupportedNodeAttribute',
|
77
|
-
attrs: {
|
78
|
-
panelType: {
|
79
|
-
default: 'info'
|
80
|
-
}
|
81
|
-
},
|
82
|
-
parseDOM: [{
|
83
|
-
tag: 'div[data-panel-type]',
|
84
|
-
getAttrs: dom => ({
|
85
|
-
panelType: dom.getAttribute('data-panel-type')
|
86
|
-
})
|
87
|
-
}],
|
88
|
-
|
89
|
-
toDOM(node) {
|
90
|
-
const {
|
91
|
-
panelType
|
92
|
-
} = node.attrs;
|
93
|
-
const attrs = {
|
94
|
-
'data-panel-type': panelType
|
95
|
-
};
|
96
|
-
return ['div', attrs, ['div', {}, 0]];
|
97
|
-
}
|
98
|
-
|
99
72
|
};
|
@@ -103,7 +103,7 @@ export const paragraph = {
|
|
103
103
|
selectable: false,
|
104
104
|
content: 'inline*',
|
105
105
|
group: 'block',
|
106
|
-
marks: 'strong code em link strike subsup textColor typeAheadQuery underline confluenceInlineComment action annotation unsupportedMark unsupportedNodeAttribute dataConsumer',
|
106
|
+
marks: 'strong code em link strike subsup textColor typeAheadQuery underline confluenceInlineComment action annotation unsupportedMark unsupportedNodeAttribute dataConsumer fragment',
|
107
107
|
parseDOM: [{
|
108
108
|
tag: 'p'
|
109
109
|
}, {
|
@@ -103,7 +103,7 @@ const createTableSpec = () => {
|
|
103
103
|
const tableNodeSpec = {
|
104
104
|
content: 'tableRow+',
|
105
105
|
attrs: attrs,
|
106
|
-
marks: 'unsupportedMark unsupportedNodeAttribute',
|
106
|
+
marks: 'fragment unsupportedMark unsupportedNodeAttribute',
|
107
107
|
tableRole: 'table',
|
108
108
|
isolating: true,
|
109
109
|
selectable: false,
|
@@ -183,7 +183,7 @@ export const tableCell = {
|
|
183
183
|
content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaSingle | mediaGroup | decisionList | taskList | blockCard | embedCard | extension | nestedExpand | unsupportedBlock)+',
|
184
184
|
attrs: cellAttrs,
|
185
185
|
tableRole: 'cell',
|
186
|
-
marks: 'link alignment dataConsumer unsupportedMark unsupportedNodeAttribute',
|
186
|
+
marks: 'link alignment dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
187
187
|
isolating: true,
|
188
188
|
parseDOM: [// Ignore number cell copied from renderer
|
189
189
|
{
|
@@ -210,7 +210,7 @@ export const tableHeader = {
|
|
210
210
|
attrs: cellAttrs,
|
211
211
|
tableRole: 'header_cell',
|
212
212
|
isolating: true,
|
213
|
-
marks: 'link alignment dataConsumer unsupportedMark unsupportedNodeAttribute',
|
213
|
+
marks: 'link alignment dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
214
214
|
parseDOM: [{
|
215
215
|
tag: 'th',
|
216
216
|
getAttrs: dom => getCellAttrs(dom, {
|
package/dist/es2019/utils/url.js
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
import LinkifyIt from 'linkify-it';
|
2
2
|
const whitelistedURLPatterns = [/^https?:\/\//im, /^ftps?:\/\//im, /^\//im, /^mailto:/im, /^skype:/im, /^callto:/im, /^facetime:/im, /^git:/im, /^irc6?:/im, /^news:/im, /^nntp:/im, /^feed:/im, /^cvs:/im, /^svn:/im, /^mvn:/im, /^ssh:/im, /^scp:\/\//im, /^sftp:\/\//im, /^itms:/im, /^notes:/im, /^hipchat:\/\//im, /^sourcetree:/im, /^urn:/im, /^tel:/im, /^xmpp:/im, /^telnet:/im, /^vnc:/im, /^rdp:/im, /^whatsapp:/im, /^slack:/im, /^sips?:/im, /^magnet:/im, /^#/im];
|
3
3
|
export const isSafeUrl = url => {
|
4
|
-
|
4
|
+
const urlTrimmed = url.trim();
|
5
|
+
|
6
|
+
if (urlTrimmed.length === 0) {
|
7
|
+
return true;
|
8
|
+
}
|
9
|
+
|
10
|
+
return whitelistedURLPatterns.some(p => p.test(urlTrimmed));
|
5
11
|
};
|
6
12
|
export const linkify = LinkifyIt();
|
7
13
|
linkify.add('sourcetree:', 'http:');
|
package/dist/es2019/version.json
CHANGED
package/dist/esm/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export { AnnotationTypes, PanelType, alignment, alignmentPositionMap, annotation, bitbucketSchema, blockCard, blockquote, bodiedExtension, breakout, bulletList, bulletListSelector, caption, code, codeBlock, codeBlockToJSON, colorPalette, colorPaletteExtended, confluenceInlineComment, confluenceJiraIssue, confluenceSchema, confluenceSchemaWithMediaSingle, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, createJIRASchema, createSchema, dataConsumer, dataConsumerToJSON, date, decisionItem, decisionList, decisionListSelector, defaultSchema, defaultSchemaConfig, doc, em, embedCard, emoji, expand, expandToJSON, extension, getSchemaBasedOnStage, hardBreak, heading, image, indentation, inlineCard, inlineExtension, inlineNodes, isSchemaWithAdvancedTextFormattingMarks, isSchemaWithBlockQuotes, isSchemaWithCodeBlock, isSchemaWithEmojis, isSchemaWithLinks, isSchemaWithLists, isSchemaWithMedia, isSchemaWithMentions, isSchemaWithSubSupMark, isSchemaWithTables, isSchemaWithTextColor, layoutColumn, layoutSection, link, linkToJSON, listItem, media, mediaGroup, mediaSingle, mediaSingleWithCaption, mediaInline, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, panel,
|
1
|
+
export { AnnotationTypes, PanelType, alignment, alignmentPositionMap, annotation, bitbucketSchema, blockCard, blockquote, bodiedExtension, breakout, bulletList, bulletListSelector, caption, code, codeBlock, codeBlockToJSON, colorPalette, colorPaletteExtended, confluenceInlineComment, confluenceJiraIssue, confluenceSchema, confluenceSchemaWithMediaSingle, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, createJIRASchema, createSchema, dataConsumer, dataConsumerToJSON, date, decisionItem, decisionList, decisionListSelector, defaultSchema, defaultSchemaConfig, doc, em, embedCard, emoji, expand, expandToJSON, extension, fragment, fragmentToJSON, getSchemaBasedOnStage, hardBreak, heading, image, indentation, inlineCard, inlineExtension, inlineNodes, isSchemaWithAdvancedTextFormattingMarks, isSchemaWithBlockQuotes, isSchemaWithCodeBlock, isSchemaWithEmojis, isSchemaWithLinks, isSchemaWithLists, isSchemaWithMedia, isSchemaWithMentions, isSchemaWithSubSupMark, isSchemaWithTables, isSchemaWithTextColor, layoutColumn, layoutSection, link, linkToJSON, listItem, media, mediaGroup, mediaSingle, mediaSingleWithCaption, mediaInline, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, panel, paragraph, placeholder, rule, sanitizeNodes, getCellAttrs, getCellDomAttrs, status, strike, strong, subsup, table, tableBackgroundBorderColor, tableBackgroundColorNames, tableBackgroundColorPalette, tableCell, tableCellContentDomSelector, tableCellContentWrapperSelector, tableCellSelector, tableHeader, tableHeaderSelector, tablePrefixSelector, tableRow, tableToJSON, taskItem, taskList, taskListSelector, text, textColor, toJSONTableCell, toJSONTableHeader, typeAheadQuery, underline, unknownBlock, unsupportedBlock, unsupportedInline, unsupportedNodeTypesForMediaCards, buildAnnotationMarkDataAttributes, AnnotationMarkStates, unsupportedMark, unsupportedNodeAttribute } from './schema';
|
2
2
|
export { B100, B400, B50, B500, B75, G200, G300, G400, G50, G500, G75, N0, N20, N200, N30, N300, N40, N50, N500, N60, N80, N800, N90, P100, P300, P400, P50, P500, P75, R100, R300, R400, R50, R500, R75, T100, T300, T50, T500, T75, Y200, Y400, Y50, Y500, Y75, acNameToEmoji, acShortcutToEmoji, emojiIdToAcName, generateUuid, getEmojiAcName, getLinkMatch, hexToRgb, hexToRgba, isHex, isRgb, isSafeUrl, linkify, linkifyMatch, normalizeHexColor, normalizeUrl, rgbToHex, uuid } from './utils';
|
@@ -6,8 +6,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
6
6
|
|
7
7
|
import { Schema } from 'prosemirror-model';
|
8
8
|
import { COLOR, FONT_STYLE, SEARCH_QUERY, LINK } from './groups';
|
9
|
-
import { link, em, strong, textColor, strike, subsup, underline, code, typeAheadQuery, confluenceInlineComment, breakout, alignment, indentation, annotation, unsupportedMark, unsupportedNodeAttribute, dataConsumer } from './marks';
|
10
|
-
import { confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, doc, paragraph, text, bulletList, orderedList, listItem, heading, blockquote, codeBlock, panel, rule, image, mention, media, mediaInline, mediaGroup,
|
9
|
+
import { link, em, strong, textColor, strike, subsup, underline, code, typeAheadQuery, confluenceInlineComment, breakout, alignment, indentation, annotation, unsupportedMark, unsupportedNodeAttribute, dataConsumer, fragment } from './marks';
|
10
|
+
import { confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, doc, paragraph, text, bulletList, orderedList, listItem, heading, blockquote, codeBlock, panel, rule, image, mention, media, mediaInline, mediaGroup, mediaSingleWithCaption, hardBreak, emoji, table, tableCell, tableHeader, tableRow, decisionList, decisionItem, taskList, taskItem, unknownBlock, extension, inlineExtension, bodiedExtension, date, placeholder, layoutSection, layoutColumn, inlineCard, blockCard, unsupportedBlock, unsupportedInline, status, expand, nestedExpand, embedCard, caption } from './nodes';
|
11
11
|
|
12
12
|
function addItems(builtInItems, config) {
|
13
13
|
var customSpecs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
@@ -93,7 +93,7 @@ var nodesInOrder = [{
|
|
93
93
|
spec: codeBlock
|
94
94
|
}, {
|
95
95
|
name: 'panel',
|
96
|
-
spec: panel
|
96
|
+
spec: panel(true)
|
97
97
|
}, {
|
98
98
|
name: 'rule',
|
99
99
|
spec: rule
|
@@ -114,7 +114,7 @@ var nodesInOrder = [{
|
|
114
114
|
spec: mediaGroup
|
115
115
|
}, {
|
116
116
|
name: 'mediaSingle',
|
117
|
-
spec:
|
117
|
+
spec: mediaSingleWithCaption
|
118
118
|
}, {
|
119
119
|
name: 'mediaInline',
|
120
120
|
spec: mediaInline
|
@@ -248,6 +248,9 @@ var marksInOrder = [{
|
|
248
248
|
}, {
|
249
249
|
name: 'dataConsumer',
|
250
250
|
spec: dataConsumer
|
251
|
+
}, {
|
252
|
+
name: 'fragment',
|
253
|
+
spec: fragment
|
251
254
|
}, {
|
252
255
|
name: 'indentation',
|
253
256
|
spec: indentation
|
@@ -1,12 +1,10 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import { allowCustomPanel, createSchema } from './create-schema';
|
5
|
-
import { mediaSingleWithCaption } from './nodes';
|
1
|
+
import { layoutSectionWithSingleColumn } from './nodes';
|
2
|
+
import { dataConsumer, fragment } from './marks';
|
3
|
+
import { createSchema } from './create-schema';
|
6
4
|
|
7
5
|
var getDefaultSchemaConfig = function getDefaultSchemaConfig() {
|
8
6
|
var defaultSchemaConfig = {
|
9
|
-
nodes: ['doc', 'paragraph', 'text', 'bulletList', 'orderedList', 'listItem', 'heading', 'blockquote', 'codeBlock', 'panel', 'rule', 'image', 'mention', 'media', 'mediaGroup', 'mediaSingle', 'mediaInline', 'confluenceUnsupportedBlock', 'confluenceUnsupportedInline', 'confluenceJiraIssue', 'expand', 'nestedExpand', 'extension', 'inlineExtension', 'bodiedExtension', 'hardBreak', 'emoji', 'table', 'tableCell', 'tableHeader', 'tableRow', 'decisionList', 'decisionItem', 'taskList', 'taskItem', 'unknownBlock', 'date', 'status', 'placeholder', 'layoutSection', 'layoutColumn', 'inlineCard', 'blockCard', 'embedCard', 'unsupportedBlock', 'unsupportedInline'],
|
7
|
+
nodes: ['doc', 'paragraph', 'text', 'bulletList', 'orderedList', 'listItem', 'heading', 'blockquote', 'codeBlock', 'panel', 'rule', 'image', 'caption', 'mention', 'media', 'mediaGroup', 'mediaSingle', 'mediaInline', 'confluenceUnsupportedBlock', 'confluenceUnsupportedInline', 'confluenceJiraIssue', 'expand', 'nestedExpand', 'extension', 'inlineExtension', 'bodiedExtension', 'hardBreak', 'emoji', 'table', 'tableCell', 'tableHeader', 'tableRow', 'decisionList', 'decisionItem', 'taskList', 'taskItem', 'unknownBlock', 'date', 'status', 'placeholder', 'layoutSection', 'layoutColumn', 'inlineCard', 'blockCard', 'embedCard', 'unsupportedBlock', 'unsupportedInline'],
|
10
8
|
marks: ['link', 'em', 'strong', 'strike', 'subsup', 'underline', 'code', 'textColor', 'confluenceInlineComment', 'breakout', 'alignment', 'indentation', 'annotation', 'unsupportedMark', 'unsupportedNodeAttribute', 'typeAheadQuery' // https://product-fabric.atlassian.net/browse/ED-10214,
|
11
9
|
]
|
12
10
|
};
|
@@ -16,18 +14,16 @@ var getDefaultSchemaConfig = function getDefaultSchemaConfig() {
|
|
16
14
|
export var defaultSchemaConfig = getDefaultSchemaConfig();
|
17
15
|
export var getSchemaBasedOnStage = function getSchemaBasedOnStage() {
|
18
16
|
var stage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'final';
|
19
|
-
var defaultSchemaConfig = getDefaultSchemaConfig();
|
17
|
+
var defaultSchemaConfig = getDefaultSchemaConfig();
|
20
18
|
|
21
19
|
if (stage === 'stage0') {
|
22
20
|
defaultSchemaConfig.customNodeSpecs = {
|
23
|
-
panel: customPanel(allowCustomPanel),
|
24
|
-
mediaSingle: mediaSingleWithCaption,
|
25
21
|
layoutSection: layoutSectionWithSingleColumn
|
26
22
|
};
|
27
23
|
defaultSchemaConfig.customMarkSpecs = {
|
28
|
-
dataConsumer: dataConsumer
|
24
|
+
dataConsumer: dataConsumer,
|
25
|
+
fragment: fragment
|
29
26
|
};
|
30
|
-
defaultSchemaConfig.nodes.push('caption');
|
31
27
|
defaultSchemaConfig.nodes.push('mediaInline');
|
32
28
|
}
|
33
29
|
|
package/dist/esm/schema/index.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
export { PanelType, blockCard, blockquote, bodiedExtension, bulletList, bulletListSelector, caption, codeBlock, codeBlockToJSON, confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, date, decisionItem, decisionList, decisionListSelector, doc, embedCard, emoji, expand, expandToJSON, extension, hardBreak, heading, image, inlineCard, inlineExtension, layoutColumn, layoutSection, layoutSectionWithSingleColumn, listItem, media, mediaGroup, mediaSingle, mediaInline, mediaSingleWithCaption, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, panel,
|
2
|
-
export { AnnotationTypes, alignment, alignmentPositionMap, annotation, breakout, code, colorPalette, colorPaletteExtended, confluenceInlineComment, dataConsumer, dataConsumerToJSON, em, indentation, link, linkToJSON, strike, strong, subsup, textColor, typeAheadQuery, underline, buildAnnotationMarkDataAttributes, AnnotationMarkStates, unsupportedMark, unsupportedNodeAttribute } from './marks';
|
1
|
+
export { PanelType, blockCard, blockquote, bodiedExtension, bulletList, bulletListSelector, caption, codeBlock, codeBlockToJSON, confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, copyPrivateMediaAttributes, date, decisionItem, decisionList, decisionListSelector, doc, embedCard, emoji, expand, expandToJSON, extension, hardBreak, heading, image, inlineCard, inlineExtension, layoutColumn, layoutSection, layoutSectionWithSingleColumn, listItem, media, mediaGroup, mediaSingle, mediaInline, mediaSingleWithCaption, mediaSingleToJSON, mediaToJSON, mention, mentionToJSON, nestedExpand, orderedList, orderedListSelector, panel, paragraph, placeholder, rule, getCellAttrs, getCellDomAttrs, status, table, tableBackgroundBorderColor, tableBackgroundColorNames, tableBackgroundColorPalette, tableCell, tableCellContentDomSelector, tableCellContentWrapperSelector, tableCellSelector, tableHeader, tableHeaderSelector, tablePrefixSelector, tableRow, tableToJSON, taskItem, taskList, taskListSelector, text, toJSONTableCell, toJSONTableHeader, unknownBlock, unsupportedBlock, unsupportedInline } from './nodes';
|
2
|
+
export { AnnotationTypes, alignment, alignmentPositionMap, annotation, breakout, code, colorPalette, colorPaletteExtended, confluenceInlineComment, dataConsumer, dataConsumerToJSON, em, fragment, fragmentToJSON, indentation, link, linkToJSON, strike, strong, subsup, textColor, typeAheadQuery, underline, buildAnnotationMarkDataAttributes, AnnotationMarkStates, unsupportedMark, unsupportedNodeAttribute } from './marks';
|
3
3
|
export { unsupportedNodeTypesForMediaCards } from './unsupported';
|
4
4
|
export { inlineNodes } from './inline-nodes';
|
5
5
|
export { sanitizeNodes, createSchema } from './create-schema';
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
2
|
+
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
4
|
+
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
6
|
+
|
7
|
+
import { isDOMElement } from '../../utils/parseDOM';
|
8
|
+
|
9
|
+
var parseFragment = function parseFragment(maybeValue) {
|
10
|
+
var _maybeValue$getAttrib;
|
11
|
+
|
12
|
+
if (!isDOMElement(maybeValue)) {
|
13
|
+
return false;
|
14
|
+
}
|
15
|
+
|
16
|
+
var name = (_maybeValue$getAttrib = maybeValue.getAttribute('data-name')) !== null && _maybeValue$getAttrib !== void 0 ? _maybeValue$getAttrib : undefined;
|
17
|
+
var localId = maybeValue.getAttribute('data-localId');
|
18
|
+
|
19
|
+
if (!localId) {
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
|
23
|
+
return {
|
24
|
+
localId: localId,
|
25
|
+
name: name
|
26
|
+
};
|
27
|
+
};
|
28
|
+
|
29
|
+
export var fragment = {
|
30
|
+
inclusive: false,
|
31
|
+
excludes: '',
|
32
|
+
attrs: {
|
33
|
+
localId: {
|
34
|
+
default: ''
|
35
|
+
},
|
36
|
+
name: {
|
37
|
+
default: null
|
38
|
+
}
|
39
|
+
},
|
40
|
+
parseDOM: [{
|
41
|
+
tag: '[data-mark-type="fragment"]',
|
42
|
+
getAttrs: function getAttrs(maybeValue) {
|
43
|
+
return parseFragment(maybeValue);
|
44
|
+
}
|
45
|
+
}],
|
46
|
+
toDOM: function toDOM(mark, inline) {
|
47
|
+
var wrapperStyle = inline ? 'span' : 'div';
|
48
|
+
return [wrapperStyle, {
|
49
|
+
'data-mark-type': 'fragment',
|
50
|
+
'data-name': mark.attrs.name,
|
51
|
+
'data-localId': mark.attrs.localId
|
52
|
+
}];
|
53
|
+
}
|
54
|
+
};
|
55
|
+
export var toJSON = function toJSON(mark) {
|
56
|
+
return {
|
57
|
+
type: mark.type.name,
|
58
|
+
attrs: _objectSpread({
|
59
|
+
localId: mark.attrs.localId
|
60
|
+
}, mark.attrs.name ? {
|
61
|
+
name: mark.attrs.name
|
62
|
+
} : {})
|
63
|
+
};
|
64
|
+
};
|
@@ -14,4 +14,5 @@ export { indentation } from './indentation';
|
|
14
14
|
export { annotation, AnnotationMarkStates, buildDataAttributes as buildAnnotationMarkDataAttributes, AnnotationTypes } from './annotation';
|
15
15
|
export { unsupportedMark } from './unsupported-mark';
|
16
16
|
export { unsupportedNodeAttribute } from './unsupported-node-attributes';
|
17
|
-
export { dataConsumer, toJSON as dataConsumerToJSON } from './data-consumer';
|
17
|
+
export { dataConsumer, toJSON as dataConsumerToJSON } from './data-consumer';
|
18
|
+
export { fragment, toJSON as fragmentToJSON } from './fragment';
|
@@ -4,7 +4,7 @@ var createBodiedExtensionNodeSpec = function createBodiedExtensionNodeSpec() {
|
|
4
4
|
var nodeSpec = {
|
5
5
|
inline: false,
|
6
6
|
group: 'block',
|
7
|
-
marks: 'link dataConsumer',
|
7
|
+
marks: 'link dataConsumer fragment',
|
8
8
|
content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | extension | unsupportedBlock | embedCard)+',
|
9
9
|
defining: true,
|
10
10
|
selectable: true,
|
@@ -3,5 +3,5 @@
|
|
3
3
|
*/
|
4
4
|
export var doc = {
|
5
5
|
content: '(block|layoutSection)+',
|
6
|
-
marks: 'alignment breakout dataConsumer indentation link unsupportedMark unsupportedNodeAttribute'
|
6
|
+
marks: 'alignment breakout dataConsumer fragment indentation link unsupportedMark unsupportedNodeAttribute'
|
7
7
|
};
|
@@ -20,7 +20,7 @@ function getExpandAttrs(domNode) {
|
|
20
20
|
export var expand = {
|
21
21
|
inline: false,
|
22
22
|
group: 'block',
|
23
|
-
marks: 'link dataConsumer unsupportedMark unsupportedNodeAttribute',
|
23
|
+
marks: 'link dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
24
24
|
content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | embedCard | extension | unsupportedBlock)+',
|
25
25
|
isolating: true,
|
26
26
|
selectable: true,
|
@@ -15,7 +15,7 @@ export { emoji } from './emoji';
|
|
15
15
|
export { image } from './image';
|
16
16
|
export { mention, toJSON as mentionToJSON } from './mention';
|
17
17
|
export { listItem } from './list-item';
|
18
|
-
export { panel,
|
18
|
+
export { panel, PanelType } from './panel';
|
19
19
|
export { text } from './text';
|
20
20
|
export { default as unknownBlock } from './unknown-block';
|
21
21
|
export { caption } from './caption';
|
@@ -4,7 +4,7 @@
|
|
4
4
|
export var layoutColumn = {
|
5
5
|
content: '(block|unsupportedBlock)+',
|
6
6
|
isolating: true,
|
7
|
-
marks: 'link alignment indentation dataConsumer unsupportedMark unsupportedNodeAttribute',
|
7
|
+
marks: 'link alignment indentation dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
8
8
|
selectable: false,
|
9
9
|
attrs: {
|
10
10
|
width: {
|
@@ -23,7 +23,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
23
23
|
|
24
24
|
/**
|
25
25
|
* @name mediaSingle_caption_node
|
26
|
-
* @stage 0
|
27
26
|
*/
|
28
27
|
export var defaultAttrs = {
|
29
28
|
width: {
|
@@ -69,6 +68,7 @@ export var mediaSingle = {
|
|
69
68
|
}
|
70
69
|
};
|
71
70
|
export var mediaSingleWithCaption = _objectSpread(_objectSpread({}, mediaSingle), {}, {
|
71
|
+
atom: false,
|
72
72
|
content: 'media|unsupportedBlock+|media (caption|unsupportedBlock) unsupportedBlock*'
|
73
73
|
});
|
74
74
|
export var toJSON = function toJSON(node) {
|
@@ -57,7 +57,7 @@ var getParseDOMAttrs = function getParseDOMAttrs(allowCustomPanel, dom) {
|
|
57
57
|
return parseDOMAttrs;
|
58
58
|
};
|
59
59
|
|
60
|
-
export var
|
60
|
+
export var panel = function panel(allowCustomPanel) {
|
61
61
|
var panelNodeSpec = {
|
62
62
|
group: 'block',
|
63
63
|
content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
|
@@ -75,29 +75,4 @@ export var customPanel = function customPanel(allowCustomPanel) {
|
|
75
75
|
}
|
76
76
|
};
|
77
77
|
return panelNodeSpec;
|
78
|
-
};
|
79
|
-
export var panel = {
|
80
|
-
group: 'block',
|
81
|
-
content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
|
82
|
-
marks: 'unsupportedMark unsupportedNodeAttribute',
|
83
|
-
attrs: {
|
84
|
-
panelType: {
|
85
|
-
default: 'info'
|
86
|
-
}
|
87
|
-
},
|
88
|
-
parseDOM: [{
|
89
|
-
tag: 'div[data-panel-type]',
|
90
|
-
getAttrs: function getAttrs(dom) {
|
91
|
-
return {
|
92
|
-
panelType: dom.getAttribute('data-panel-type')
|
93
|
-
};
|
94
|
-
}
|
95
|
-
}],
|
96
|
-
toDOM: function toDOM(node) {
|
97
|
-
var panelType = node.attrs.panelType;
|
98
|
-
var attrs = {
|
99
|
-
'data-panel-type': panelType
|
100
|
-
};
|
101
|
-
return ['div', attrs, ['div', {}, 0]];
|
102
|
-
}
|
103
78
|
};
|
@@ -105,7 +105,7 @@ export var paragraph = {
|
|
105
105
|
selectable: false,
|
106
106
|
content: 'inline*',
|
107
107
|
group: 'block',
|
108
|
-
marks: 'strong code em link strike subsup textColor typeAheadQuery underline confluenceInlineComment action annotation unsupportedMark unsupportedNodeAttribute dataConsumer',
|
108
|
+
marks: 'strong code em link strike subsup textColor typeAheadQuery underline confluenceInlineComment action annotation unsupportedMark unsupportedNodeAttribute dataConsumer fragment',
|
109
109
|
parseDOM: [{
|
110
110
|
tag: 'p'
|
111
111
|
}, {
|
@@ -107,7 +107,7 @@ var createTableSpec = function createTableSpec() {
|
|
107
107
|
var tableNodeSpec = {
|
108
108
|
content: 'tableRow+',
|
109
109
|
attrs: attrs,
|
110
|
-
marks: 'unsupportedMark unsupportedNodeAttribute',
|
110
|
+
marks: 'fragment unsupportedMark unsupportedNodeAttribute',
|
111
111
|
tableRole: 'table',
|
112
112
|
isolating: true,
|
113
113
|
selectable: false,
|
@@ -189,7 +189,7 @@ export var tableCell = {
|
|
189
189
|
content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaSingle | mediaGroup | decisionList | taskList | blockCard | embedCard | extension | nestedExpand | unsupportedBlock)+',
|
190
190
|
attrs: cellAttrs,
|
191
191
|
tableRole: 'cell',
|
192
|
-
marks: 'link alignment dataConsumer unsupportedMark unsupportedNodeAttribute',
|
192
|
+
marks: 'link alignment dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
193
193
|
isolating: true,
|
194
194
|
parseDOM: [// Ignore number cell copied from renderer
|
195
195
|
{
|
@@ -222,7 +222,7 @@ export var tableHeader = {
|
|
222
222
|
attrs: cellAttrs,
|
223
223
|
tableRole: 'header_cell',
|
224
224
|
isolating: true,
|
225
|
-
marks: 'link alignment dataConsumer unsupportedMark unsupportedNodeAttribute',
|
225
|
+
marks: 'link alignment dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
|
226
226
|
parseDOM: [{
|
227
227
|
tag: 'th',
|
228
228
|
getAttrs: function getAttrs(dom) {
|
package/dist/esm/utils/url.js
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
import LinkifyIt from 'linkify-it';
|
2
2
|
var whitelistedURLPatterns = [/^https?:\/\//im, /^ftps?:\/\//im, /^\//im, /^mailto:/im, /^skype:/im, /^callto:/im, /^facetime:/im, /^git:/im, /^irc6?:/im, /^news:/im, /^nntp:/im, /^feed:/im, /^cvs:/im, /^svn:/im, /^mvn:/im, /^ssh:/im, /^scp:\/\//im, /^sftp:\/\//im, /^itms:/im, /^notes:/im, /^hipchat:\/\//im, /^sourcetree:/im, /^urn:/im, /^tel:/im, /^xmpp:/im, /^telnet:/im, /^vnc:/im, /^rdp:/im, /^whatsapp:/im, /^slack:/im, /^sips?:/im, /^magnet:/im, /^#/im];
|
3
3
|
export var isSafeUrl = function isSafeUrl(url) {
|
4
|
+
var urlTrimmed = url.trim();
|
5
|
+
|
6
|
+
if (urlTrimmed.length === 0) {
|
7
|
+
return true;
|
8
|
+
}
|
9
|
+
|
4
10
|
return whitelistedURLPatterns.some(function (p) {
|
5
|
-
return p.test(
|
11
|
+
return p.test(urlTrimmed);
|
6
12
|
});
|
7
13
|
};
|
8
14
|
export var linkify = LinkifyIt();
|
package/dist/esm/version.json
CHANGED