@atlaskit/adf-schema 19.2.4 → 20.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/cjs/index.js +24 -6
  3. package/dist/cjs/schema/create-schema.js +10 -3
  4. package/dist/cjs/schema/default-schema.js +7 -13
  5. package/dist/cjs/schema/index.js +12 -6
  6. package/dist/cjs/schema/jira-schema.js +1 -1
  7. package/dist/cjs/schema/marks/fragment.js +77 -0
  8. package/dist/cjs/schema/marks/index.js +15 -1
  9. package/dist/cjs/schema/marks/unsupported-mark.js +1 -0
  10. package/dist/cjs/schema/nodes/bodied-extension.js +1 -1
  11. package/dist/cjs/schema/nodes/caption.js +0 -1
  12. package/dist/cjs/schema/nodes/doc.js +1 -1
  13. package/dist/cjs/schema/nodes/emoji.js +4 -0
  14. package/dist/cjs/schema/nodes/expand.js +1 -1
  15. package/dist/cjs/schema/nodes/index.js +0 -6
  16. package/dist/cjs/schema/nodes/layout-column.js +1 -1
  17. package/dist/cjs/schema/nodes/media-single.js +1 -1
  18. package/dist/cjs/schema/nodes/panel.js +58 -53
  19. package/dist/cjs/schema/nodes/paragraph.js +2 -2
  20. package/dist/cjs/schema/nodes/tableNodes.js +3 -3
  21. package/dist/cjs/utils/index.js +12 -0
  22. package/dist/cjs/utils/url.js +62 -4
  23. package/dist/cjs/version.json +1 -1
  24. package/dist/es2019/index.js +2 -2
  25. package/dist/es2019/schema/create-schema.js +10 -5
  26. package/dist/es2019/schema/default-schema.js +6 -10
  27. package/dist/es2019/schema/index.js +2 -2
  28. package/dist/es2019/schema/jira-schema.js +1 -1
  29. package/dist/es2019/schema/marks/fragment.js +59 -0
  30. package/dist/es2019/schema/marks/index.js +2 -1
  31. package/dist/es2019/schema/marks/unsupported-mark.js +1 -0
  32. package/dist/es2019/schema/nodes/bodied-extension.js +1 -1
  33. package/dist/es2019/schema/nodes/caption.js +0 -1
  34. package/dist/es2019/schema/nodes/doc.js +1 -1
  35. package/dist/es2019/schema/nodes/emoji.js +4 -0
  36. package/dist/es2019/schema/nodes/expand.js +1 -1
  37. package/dist/es2019/schema/nodes/index.js +1 -1
  38. package/dist/es2019/schema/nodes/layout-column.js +1 -1
  39. package/dist/es2019/schema/nodes/media-single.js +1 -1
  40. package/dist/es2019/schema/nodes/panel.js +42 -49
  41. package/dist/es2019/schema/nodes/paragraph.js +2 -2
  42. package/dist/es2019/schema/nodes/tableNodes.js +3 -3
  43. package/dist/es2019/utils/index.js +1 -1
  44. package/dist/es2019/utils/url.js +57 -4
  45. package/dist/es2019/version.json +1 -1
  46. package/dist/esm/index.js +2 -2
  47. package/dist/esm/schema/create-schema.js +10 -5
  48. package/dist/esm/schema/default-schema.js +6 -10
  49. package/dist/esm/schema/index.js +2 -2
  50. package/dist/esm/schema/jira-schema.js +1 -1
  51. package/dist/esm/schema/marks/fragment.js +64 -0
  52. package/dist/esm/schema/marks/index.js +2 -1
  53. package/dist/esm/schema/marks/unsupported-mark.js +1 -0
  54. package/dist/esm/schema/nodes/bodied-extension.js +1 -1
  55. package/dist/esm/schema/nodes/caption.js +0 -1
  56. package/dist/esm/schema/nodes/doc.js +1 -1
  57. package/dist/esm/schema/nodes/emoji.js +4 -0
  58. package/dist/esm/schema/nodes/expand.js +1 -1
  59. package/dist/esm/schema/nodes/index.js +1 -1
  60. package/dist/esm/schema/nodes/layout-column.js +1 -1
  61. package/dist/esm/schema/nodes/media-single.js +1 -1
  62. package/dist/esm/schema/nodes/panel.js +53 -51
  63. package/dist/esm/schema/nodes/paragraph.js +2 -2
  64. package/dist/esm/schema/nodes/tableNodes.js +3 -3
  65. package/dist/esm/utils/index.js +1 -1
  66. package/dist/esm/utils/url.js +57 -4
  67. package/dist/esm/version.json +1 -1
  68. package/dist/json-schema/v1/full.json +108 -73
  69. package/dist/json-schema/v1/stage-0.json +63 -26
  70. package/dist/types/index.d.ts +3 -3
  71. package/dist/types/schema/create-schema.d.ts +1 -0
  72. package/dist/types/schema/index.d.ts +3 -3
  73. package/dist/types/schema/marks/fragment.d.ts +30 -0
  74. package/dist/types/schema/marks/index.d.ts +2 -0
  75. package/dist/types/schema/marks/link.d.ts +3 -0
  76. package/dist/types/schema/nodes/block-card.d.ts +3 -0
  77. package/dist/types/schema/nodes/bodied-extension.d.ts +7 -5
  78. package/dist/types/schema/nodes/caption.d.ts +0 -1
  79. package/dist/types/schema/nodes/embed-card.d.ts +3 -0
  80. package/dist/types/schema/nodes/extension.d.ts +7 -5
  81. package/dist/types/schema/nodes/index.d.ts +1 -1
  82. package/dist/types/schema/nodes/inline-card.d.ts +0 -9
  83. package/dist/types/schema/nodes/inline-extension.d.ts +7 -5
  84. package/dist/types/schema/nodes/media-single.d.ts +0 -1
  85. package/dist/types/schema/nodes/panel.d.ts +1 -11
  86. package/dist/types/utils/index.d.ts +1 -1
  87. package/dist/types/utils/url.d.ts +7 -2
  88. package/json-schema/v1/full.json +108 -73
  89. package/json-schema/v1/stage-0.json +63 -26
  90. package/package.json +11 -8
  91. package/test-helpers/schema.ts +1 -0
@@ -7,24 +7,82 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.getLinkMatch = getLinkMatch;
9
9
  exports.normalizeUrl = normalizeUrl;
10
- exports.isSafeUrl = void 0;
10
+ exports.linkifyMatch = exports.LINK_REGEXP = exports.linkify = exports.isSafeUrl = void 0;
11
11
 
12
12
  var _linkifyIt = _interopRequireDefault(require("linkify-it"));
13
13
 
14
14
  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];
15
15
 
16
16
  var isSafeUrl = function isSafeUrl(url) {
17
+ var urlTrimmed = url.trim();
18
+
19
+ if (urlTrimmed.length === 0) {
20
+ return true;
21
+ }
22
+
17
23
  return whitelistedURLPatterns.some(function (p) {
18
- return p.test(url.trim()) === true;
24
+ return p.test(urlTrimmed);
19
25
  });
20
26
  };
21
27
 
22
28
  exports.isSafeUrl = isSafeUrl;
23
29
  var linkify = (0, _linkifyIt.default)();
30
+ exports.linkify = linkify;
24
31
  linkify.add('sourcetree:', 'http:');
32
+ var tlds = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');
33
+ var tlds2Char = 'a[cdefgilmnoqrtuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrtuvwxyz]|n[acefgilopruz]|om|p[aefghkmnrtw]|qa|r[eosuw]|s[abcdegijklmnrtuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';
34
+ tlds.push(tlds2Char);
35
+ linkify.tlds(tlds, false);
36
+ var LINK_REGEXP = /(https?|ftp):\/\/[^\s]+/;
37
+ exports.LINK_REGEXP = LINK_REGEXP;
38
+
39
+ var linkifyMatch = function linkifyMatch(text) {
40
+ var matches = [];
41
+
42
+ if (!LINK_REGEXP.test(text)) {
43
+ return matches;
44
+ }
45
+
46
+ var startpos = 0;
47
+ var substr;
48
+
49
+ while (substr = text.substr(startpos)) {
50
+ var link = (substr.match(LINK_REGEXP) || [''])[0];
51
+
52
+ if (link) {
53
+ var index = substr.search(LINK_REGEXP);
54
+ var start = index >= 0 ? index + startpos : index;
55
+ var end = start + link.length;
56
+ matches.push({
57
+ index: start,
58
+ lastIndex: end,
59
+ raw: link,
60
+ url: link,
61
+ text: link,
62
+ schema: ''
63
+ });
64
+ startpos += end;
65
+ } else {
66
+ break;
67
+ }
68
+ }
69
+
70
+ return matches;
71
+ };
72
+
73
+ exports.linkifyMatch = linkifyMatch;
25
74
 
26
75
  function getLinkMatch(str) {
27
- var match = str && linkify.match(str);
76
+ if (!str) {
77
+ return null;
78
+ }
79
+
80
+ var match = linkifyMatch(str);
81
+
82
+ if (!match.length) {
83
+ match = linkify.match(str);
84
+ }
85
+
28
86
  return match && match[0];
29
87
  }
30
88
  /**
@@ -34,5 +92,5 @@ function getLinkMatch(str) {
34
92
 
35
93
  function normalizeUrl(url) {
36
94
  var match = getLinkMatch(url);
37
- return match && match.url || url;
95
+ return match && match.url || '';
38
96
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/adf-schema",
3
- "version": "19.2.4",
3
+ "version": "20.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -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, customPanel, 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
- 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, normalizeHexColor, normalizeUrl, rgbToHex, uuid } from './utils';
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
+ 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';
@@ -1,7 +1,7 @@
1
1
  import { Schema } from 'prosemirror-model';
2
2
  import { COLOR, FONT_STYLE, SEARCH_QUERY, LINK } from './groups';
3
- import { link, em, strong, textColor, strike, subsup, underline, code, typeAheadQuery, confluenceInlineComment, breakout, alignment, indentation, annotation, unsupportedMark, unsupportedNodeAttribute, dataConsumer } from './marks';
4
- import { confluenceJiraIssue, confluenceUnsupportedBlock, confluenceUnsupportedInline, doc, paragraph, text, bulletList, orderedList, listItem, heading, blockquote, codeBlock, panel, rule, image, mention, media, mediaInline, mediaGroup, mediaSingle, 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';
3
+ import { link, em, strong, textColor, strike, subsup, underline, code, typeAheadQuery, confluenceInlineComment, breakout, alignment, indentation, annotation, unsupportedMark, unsupportedNodeAttribute, dataConsumer, fragment } from './marks';
4
+ 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';
5
5
 
6
6
  function addItems(builtInItems, config, customSpecs = {}) {
7
7
  if (!config) {
@@ -83,7 +83,7 @@ const nodesInOrder = [{
83
83
  spec: codeBlock
84
84
  }, {
85
85
  name: 'panel',
86
- spec: panel
86
+ spec: panel(true)
87
87
  }, {
88
88
  name: 'rule',
89
89
  spec: rule
@@ -104,7 +104,7 @@ const nodesInOrder = [{
104
104
  spec: mediaGroup
105
105
  }, {
106
106
  name: 'mediaSingle',
107
- spec: mediaSingle
107
+ spec: mediaSingleWithCaption
108
108
  }, {
109
109
  name: 'mediaInline',
110
110
  spec: mediaInline
@@ -238,6 +238,9 @@ const marksInOrder = [{
238
238
  }, {
239
239
  name: 'dataConsumer',
240
240
  spec: dataConsumer
241
+ }, {
242
+ name: 'fragment',
243
+ spec: fragment
241
244
  }, {
242
245
  name: 'indentation',
243
246
  spec: indentation
@@ -322,4 +325,6 @@ function isContentSupported(nodes, contentKey) {
322
325
  }
323
326
 
324
327
  return false;
325
- }
328
+ }
329
+
330
+ export const allowCustomPanel = true;
@@ -1,12 +1,10 @@
1
- import { customPanel } from './nodes/panel';
2
- import { layoutSectionWithSingleColumn } from './nodes/layout-section';
3
- import { dataConsumer } from './marks/data-consumer';
1
+ import { layoutSectionWithSingleColumn } from './nodes';
2
+ import { dataConsumer, fragment } from './marks';
4
3
  import { createSchema } from './create-schema';
5
- import { mediaSingleWithCaption } from './nodes';
6
4
 
7
5
  const getDefaultSchemaConfig = () => {
8
6
  let 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
  };
@@ -15,18 +13,16 @@ const getDefaultSchemaConfig = () => {
15
13
 
16
14
  export const defaultSchemaConfig = getDefaultSchemaConfig();
17
15
  export const getSchemaBasedOnStage = (stage = 'final') => {
18
- const defaultSchemaConfig = getDefaultSchemaConfig(); // TODO: ED-10445 remove stage0 check after panels with emoji are on full schema AND image captions are on full schema
16
+ const defaultSchemaConfig = getDefaultSchemaConfig();
19
17
 
20
18
  if (stage === 'stage0') {
21
19
  defaultSchemaConfig.customNodeSpecs = {
22
- panel: customPanel,
23
- mediaSingle: mediaSingleWithCaption,
24
20
  layoutSection: layoutSectionWithSingleColumn
25
21
  };
26
22
  defaultSchemaConfig.customMarkSpecs = {
27
- dataConsumer: dataConsumer
23
+ dataConsumer: dataConsumer,
24
+ fragment
28
25
  };
29
- defaultSchemaConfig.nodes.push('caption');
30
26
  defaultSchemaConfig.nodes.push('mediaInline');
31
27
  }
32
28
 
@@ -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, customPanel, 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, 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';
@@ -37,7 +37,7 @@ export default function makeSchema(config) {
37
37
  }
38
38
 
39
39
  if (config.allowMedia) {
40
- nodes.push('mediaGroup', 'mediaSingle', 'media');
40
+ nodes.push('mediaGroup', 'mediaSingle', 'media', 'caption');
41
41
  }
42
42
 
43
43
  if (config.allowTextColor) {
@@ -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';
@@ -3,6 +3,7 @@ export const unsupportedMark = {
3
3
  return ['span'];
4
4
  },
5
5
 
6
+ excludes: '',
6
7
  attrs: {
7
8
  originalValue: {}
8
9
  }
@@ -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,
@@ -1,5 +1,4 @@
1
1
  /**
2
- * @stage 0
3
2
  * @name caption_node
4
3
  */
5
4
  export const caption = {
@@ -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
  };
@@ -28,6 +28,10 @@ export const emoji = {
28
28
  text: dom.getAttribute('data-emoji-text') || emoji.attrs.text.default
29
29
  };
30
30
  }
31
+ }, // Handle copy/paste beautiful panel from renderer />
32
+ {
33
+ tag: 'div.ak-editor-panel__icon',
34
+ ignore: true
31
35
  }, // Handle copy/paste from old <ac:emoticon />
32
36
  {
33
37
  tag: 'img[data-emoticon-name]',
@@ -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, customPanel, PanelType } from './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 => ({
@@ -10,12 +10,8 @@ export let PanelType;
10
10
  PanelType["CUSTOM"] = "custom";
11
11
  })(PanelType || (PanelType = {}));
12
12
 
13
- //TODO: ED-10445 rename to panel and merge with the other panel node spec, after emoji panels moved to full schema
14
- export const customPanel = {
15
- group: 'block',
16
- content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
17
- marks: 'unsupportedMark unsupportedNodeAttribute',
18
- attrs: {
13
+ const getDefaultAttrs = () => {
14
+ let attrs = {
19
15
  panelType: {
20
16
  default: 'info'
21
17
  },
@@ -25,55 +21,52 @@ export const customPanel = {
25
21
  panelColor: {
26
22
  default: null
27
23
  }
28
- },
29
- parseDOM: [{
30
- tag: 'div[data-panel-type]',
31
- getAttrs: dom => ({
32
- panelType: dom.getAttribute('data-panel-type'),
24
+ };
25
+ return attrs;
26
+ };
27
+
28
+ const getDomAttrs = nodeAttrs => {
29
+ let attrs = {
30
+ 'data-panel-type': nodeAttrs.panelType,
31
+ 'data-panel-icon': nodeAttrs.panelIcon,
32
+ 'data-panel-color': nodeAttrs.panelColor
33
+ };
34
+ return attrs;
35
+ };
36
+
37
+ const getParseDOMAttrs = (allowCustomPanel, dom) => {
38
+ let parseDOMAttrs = {
39
+ panelType: dom.getAttribute('data-panel-type')
40
+ };
41
+
42
+ if (allowCustomPanel) {
43
+ parseDOMAttrs = { ...parseDOMAttrs,
33
44
  panelIcon: dom.getAttribute('data-panel-icon'),
34
45
  panelColor: dom.getAttribute('data-panel-color')
35
- })
36
- }],
37
-
38
- toDOM(node) {
39
- const {
40
- panelType,
41
- panelIcon,
42
- panelColor
43
- } = node.attrs;
44
- const attrs = {
45
- 'data-panel-type': panelType,
46
- 'data-panel-icon': panelIcon,
47
- 'data-panel-color': panelColor
48
46
  };
49
- return ['div', attrs, ['div', {}, 0]];
47
+ } else {
48
+ parseDOMAttrs.panelType = parseDOMAttrs.panelType === PanelType.CUSTOM ? PanelType.INFO : parseDOMAttrs.panelType;
50
49
  }
51
50
 
51
+ return parseDOMAttrs;
52
52
  };
53
- export const panel = {
54
- group: 'block',
55
- content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
56
- marks: 'unsupportedMark unsupportedNodeAttribute',
57
- attrs: {
58
- panelType: {
59
- default: 'info'
60
- }
61
- },
62
- parseDOM: [{
63
- tag: 'div[data-panel-type]',
64
- getAttrs: dom => ({
65
- panelType: dom.getAttribute('data-panel-type')
66
- })
67
- }],
68
53
 
69
- toDOM(node) {
70
- const {
71
- panelType
72
- } = node.attrs;
73
- const attrs = {
74
- 'data-panel-type': panelType
75
- };
76
- return ['div', attrs, ['div', {}, 0]];
77
- }
54
+ export const panel = allowCustomPanel => {
55
+ const panelNodeSpec = {
56
+ group: 'block',
57
+ content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
58
+ marks: 'unsupportedMark unsupportedNodeAttribute',
59
+ attrs: getDefaultAttrs(),
60
+ parseDOM: [{
61
+ tag: 'div[data-panel-type]',
62
+ getAttrs: dom => getParseDOMAttrs(allowCustomPanel, dom)
63
+ }],
64
+
65
+ toDOM(node) {
66
+ const attrs = getDomAttrs(node.attrs);
67
+ return ['div', attrs, ['div', {}, 0]];
68
+ }
78
69
 
70
+ };
71
+ return panelNodeSpec;
79
72
  };
@@ -97,13 +97,13 @@ const isBlockLevelNode = node => {
97
97
 
98
98
  const NOT_INTERNAL_LINKS = [':not([data-inline-card])', ':not([data-block-card])', ':not([data-block-link])', ':not([data-skip-paste])'].join('');
99
99
  const ANCHOR_LINK = `a[href]${NOT_INTERNAL_LINKS}`;
100
- const NOT_INTERNAL_ELEMENTS = [':not(.code-block)', ':not([data-node-type])', ':not([data-embed-card])', ':not([data-layout-section])', ':not([data-pm-slice])', ':not([data-mark-type])'].join('');
100
+ const NOT_INTERNAL_ELEMENTS = [':not(.code-block)', ':not([data-node-type])', ':not([data-embed-card])', ':not([data-layout-section])', ':not([data-task-local-id])', ':not([data-task-state])', ':not([data-pm-slice])', ':not([data-mark-type])'].join('');
101
101
  const pDOM = ['p', 0];
102
102
  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, {
@@ -1,4 +1,4 @@
1
1
  export { acNameToEmoji, acShortcutToEmoji, emojiIdToAcName, getEmojiAcName } from './confluence/emoji';
2
2
  export { generateUuid, uuid } from './uuid';
3
3
  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, hexToRgb, hexToRgba, isHex, isRgb, normalizeHexColor, rgbToHex } from './colors';
4
- export { getLinkMatch, isSafeUrl, normalizeUrl } from './url';
4
+ export { getLinkMatch, isSafeUrl, normalizeUrl, linkify, linkifyMatch } from './url';
@@ -1,12 +1,65 @@
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
- return whitelistedURLPatterns.some(p => p.test(url.trim()) === true);
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
- const linkify = LinkifyIt();
12
+ export const linkify = LinkifyIt();
7
13
  linkify.add('sourcetree:', 'http:');
14
+ const tlds = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');
15
+ const tlds2Char = 'a[cdefgilmnoqrtuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrtuvwxyz]|n[acefgilopruz]|om|p[aefghkmnrtw]|qa|r[eosuw]|s[abcdegijklmnrtuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';
16
+ tlds.push(tlds2Char);
17
+ linkify.tlds(tlds, false);
18
+ export const LINK_REGEXP = /(https?|ftp):\/\/[^\s]+/;
19
+ export const linkifyMatch = text => {
20
+ const matches = [];
21
+
22
+ if (!LINK_REGEXP.test(text)) {
23
+ return matches;
24
+ }
25
+
26
+ let startpos = 0;
27
+ let substr;
28
+
29
+ while (substr = text.substr(startpos)) {
30
+ const link = (substr.match(LINK_REGEXP) || [''])[0];
31
+
32
+ if (link) {
33
+ const index = substr.search(LINK_REGEXP);
34
+ const start = index >= 0 ? index + startpos : index;
35
+ const end = start + link.length;
36
+ matches.push({
37
+ index: start,
38
+ lastIndex: end,
39
+ raw: link,
40
+ url: link,
41
+ text: link,
42
+ schema: ''
43
+ });
44
+ startpos += end;
45
+ } else {
46
+ break;
47
+ }
48
+ }
49
+
50
+ return matches;
51
+ };
8
52
  export function getLinkMatch(str) {
9
- const match = str && linkify.match(str);
53
+ if (!str) {
54
+ return null;
55
+ }
56
+
57
+ let match = linkifyMatch(str);
58
+
59
+ if (!match.length) {
60
+ match = linkify.match(str);
61
+ }
62
+
10
63
  return match && match[0];
11
64
  }
12
65
  /**
@@ -15,5 +68,5 @@ export function getLinkMatch(str) {
15
68
 
16
69
  export function normalizeUrl(url) {
17
70
  const match = getLinkMatch(url);
18
- return match && match.url || url;
71
+ return match && match.url || '';
19
72
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/adf-schema",
3
- "version": "19.2.4",
3
+ "version": "20.0.1",
4
4
  "sideEffects": false
5
5
  }
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, customPanel, 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
- 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, normalizeHexColor, normalizeUrl, rgbToHex, uuid } from './utils';
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
+ 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';