@atlaskit/adf-schema 19.2.3 → 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.
Files changed (94) hide show
  1. package/CHANGELOG.md +40 -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/link.js +1 -54
  10. package/dist/cjs/schema/marks/unsupported-mark.js +1 -0
  11. package/dist/cjs/schema/nodes/bodied-extension.js +1 -1
  12. package/dist/cjs/schema/nodes/caption.js +0 -1
  13. package/dist/cjs/schema/nodes/doc.js +1 -1
  14. package/dist/cjs/schema/nodes/emoji.js +4 -0
  15. package/dist/cjs/schema/nodes/expand.js +1 -1
  16. package/dist/cjs/schema/nodes/index.js +0 -6
  17. package/dist/cjs/schema/nodes/layout-column.js +1 -1
  18. package/dist/cjs/schema/nodes/media-single.js +1 -1
  19. package/dist/cjs/schema/nodes/panel.js +58 -53
  20. package/dist/cjs/schema/nodes/paragraph.js +168 -25
  21. package/dist/cjs/schema/nodes/tableNodes.js +3 -3
  22. package/dist/cjs/utils/index.js +12 -0
  23. package/dist/cjs/utils/url.js +62 -4
  24. package/dist/cjs/version.json +1 -1
  25. package/dist/es2019/index.js +2 -2
  26. package/dist/es2019/schema/create-schema.js +10 -5
  27. package/dist/es2019/schema/default-schema.js +6 -10
  28. package/dist/es2019/schema/index.js +2 -2
  29. package/dist/es2019/schema/jira-schema.js +1 -1
  30. package/dist/es2019/schema/marks/fragment.js +59 -0
  31. package/dist/es2019/schema/marks/index.js +2 -1
  32. package/dist/es2019/schema/marks/link.js +1 -49
  33. package/dist/es2019/schema/marks/unsupported-mark.js +1 -0
  34. package/dist/es2019/schema/nodes/bodied-extension.js +1 -1
  35. package/dist/es2019/schema/nodes/caption.js +0 -1
  36. package/dist/es2019/schema/nodes/doc.js +1 -1
  37. package/dist/es2019/schema/nodes/emoji.js +4 -0
  38. package/dist/es2019/schema/nodes/expand.js +1 -1
  39. package/dist/es2019/schema/nodes/index.js +1 -1
  40. package/dist/es2019/schema/nodes/layout-column.js +1 -1
  41. package/dist/es2019/schema/nodes/media-single.js +1 -1
  42. package/dist/es2019/schema/nodes/panel.js +42 -49
  43. package/dist/es2019/schema/nodes/paragraph.js +163 -25
  44. package/dist/es2019/schema/nodes/tableNodes.js +3 -3
  45. package/dist/es2019/utils/index.js +1 -1
  46. package/dist/es2019/utils/url.js +57 -4
  47. package/dist/es2019/version.json +1 -1
  48. package/dist/esm/index.js +2 -2
  49. package/dist/esm/schema/create-schema.js +10 -5
  50. package/dist/esm/schema/default-schema.js +6 -10
  51. package/dist/esm/schema/index.js +2 -2
  52. package/dist/esm/schema/jira-schema.js +1 -1
  53. package/dist/esm/schema/marks/fragment.js +64 -0
  54. package/dist/esm/schema/marks/index.js +2 -1
  55. package/dist/esm/schema/marks/link.js +1 -53
  56. package/dist/esm/schema/marks/unsupported-mark.js +1 -0
  57. package/dist/esm/schema/nodes/bodied-extension.js +1 -1
  58. package/dist/esm/schema/nodes/caption.js +0 -1
  59. package/dist/esm/schema/nodes/doc.js +1 -1
  60. package/dist/esm/schema/nodes/emoji.js +4 -0
  61. package/dist/esm/schema/nodes/expand.js +1 -1
  62. package/dist/esm/schema/nodes/index.js +1 -1
  63. package/dist/esm/schema/nodes/layout-column.js +1 -1
  64. package/dist/esm/schema/nodes/media-single.js +1 -1
  65. package/dist/esm/schema/nodes/panel.js +53 -51
  66. package/dist/esm/schema/nodes/paragraph.js +167 -25
  67. package/dist/esm/schema/nodes/tableNodes.js +3 -3
  68. package/dist/esm/utils/index.js +1 -1
  69. package/dist/esm/utils/url.js +57 -4
  70. package/dist/esm/version.json +1 -1
  71. package/dist/json-schema/v1/full.json +108 -73
  72. package/dist/json-schema/v1/stage-0.json +63 -26
  73. package/dist/types/index.d.ts +3 -3
  74. package/dist/types/schema/create-schema.d.ts +1 -0
  75. package/dist/types/schema/index.d.ts +3 -3
  76. package/dist/types/schema/marks/fragment.d.ts +30 -0
  77. package/dist/types/schema/marks/index.d.ts +2 -0
  78. package/dist/types/schema/marks/link.d.ts +3 -0
  79. package/dist/types/schema/nodes/block-card.d.ts +3 -0
  80. package/dist/types/schema/nodes/bodied-extension.d.ts +7 -5
  81. package/dist/types/schema/nodes/caption.d.ts +0 -1
  82. package/dist/types/schema/nodes/embed-card.d.ts +3 -0
  83. package/dist/types/schema/nodes/extension.d.ts +7 -5
  84. package/dist/types/schema/nodes/index.d.ts +1 -1
  85. package/dist/types/schema/nodes/inline-card.d.ts +0 -9
  86. package/dist/types/schema/nodes/inline-extension.d.ts +7 -5
  87. package/dist/types/schema/nodes/media-single.d.ts +0 -1
  88. package/dist/types/schema/nodes/panel.d.ts +1 -11
  89. package/dist/types/utils/index.d.ts +1 -1
  90. package/dist/types/utils/url.d.ts +7 -2
  91. package/json-schema/v1/full.json +108 -73
  92. package/json-schema/v1/stage-0.json +63 -26
  93. package/package.json +11 -8
  94. package/test-helpers/schema.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # @atlaskit/adf-schema
2
2
 
3
+ ## 20.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`3a2a5e14fdc`](https://bitbucket.org/atlassian/atlassian-frontend/commits/3a2a5e14fdc) - As we are moving to full schema, merged the customPanel nodeSpec with panel nodeSpec
8
+ - [`8f0577e0eb1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8f0577e0eb1) - [ux] Promoted captions to full schema and better support of wikimarkup, email and slack renderer
9
+
10
+ ### Minor Changes
11
+
12
+ - [`65a541166fe`](https://bitbucket.org/atlassian/atlassian-frontend/commits/65a541166fe) - ED-13766 fix pm node spec for media single with caption
13
+ - [`83154234335`](https://bitbucket.org/atlassian/atlassian-frontend/commits/83154234335) - ED-13522 Add safe URL check to ADF validator (smart cards now show as unsupported content if the check fails)
14
+ - [`8bbb96540ea`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8bbb96540ea) - Add "fragment" mark to stage0 ADF schema
15
+
16
+ ### Patch Changes
17
+
18
+ - [`c6feed82071`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c6feed82071) - ED-11632: Bump prosemirror packages;
19
+
20
+ - prosmirror-commands 1.1.4 -> 1.1.11,
21
+ - prosemirror-model 1.11.0 -> 1.14.3,
22
+ - prosemirror-state 1.3.3 -> 1.3.4,
23
+ - prosemirror-transform 1.2.8 -> 1.3.2,
24
+ - prosemirror-view 1.15.4 + 1.18.8 -> 1.20.2.
25
+
26
+ - [`297d113d54b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/297d113d54b) - Unskip backwrd compat test and fix mistakes
27
+ - Updated dependencies
28
+
29
+ ## 19.3.1
30
+
31
+ ### Patch Changes
32
+
33
+ - [`f4ce830a2f2`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f4ce830a2f2) - [HOT-97158] Fix paste link applying marks on block nodes
34
+
35
+ ## 19.3.0
36
+
37
+ ### Minor Changes
38
+
39
+ - [`93da0afefce`](https://bitbucket.org/atlassian/atlassian-frontend/commits/93da0afefce) - CETI-78 Change panel nodeSpec to handle paste when feature flag is off
40
+ - [`971845eac0d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/971845eac0d) - CETI-96 Added new rule to emoji to solve the duplicate icon issue when we copy from renderer
41
+ - [`e856b56fd31`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e856b56fd31) - ED-13669 reuse same links normalization method in plugin and adf schema
42
+
3
43
  ## 19.2.3
4
44
 
5
45
  ### Patch Changes
package/dist/cjs/index.js CHANGED
@@ -255,6 +255,18 @@ Object.defineProperty(exports, "extension", {
255
255
  return _schema.extension;
256
256
  }
257
257
  });
258
+ Object.defineProperty(exports, "fragment", {
259
+ enumerable: true,
260
+ get: function get() {
261
+ return _schema.fragment;
262
+ }
263
+ });
264
+ Object.defineProperty(exports, "fragmentToJSON", {
265
+ enumerable: true,
266
+ get: function get() {
267
+ return _schema.fragmentToJSON;
268
+ }
269
+ });
258
270
  Object.defineProperty(exports, "getSchemaBasedOnStage", {
259
271
  enumerable: true,
260
272
  get: function get() {
@@ -477,12 +489,6 @@ Object.defineProperty(exports, "panel", {
477
489
  return _schema.panel;
478
490
  }
479
491
  });
480
- Object.defineProperty(exports, "customPanel", {
481
- enumerable: true,
482
- get: function get() {
483
- return _schema.customPanel;
484
- }
485
- });
486
492
  Object.defineProperty(exports, "paragraph", {
487
493
  enumerable: true,
488
494
  get: function get() {
@@ -1059,6 +1065,18 @@ Object.defineProperty(exports, "isSafeUrl", {
1059
1065
  return _utils.isSafeUrl;
1060
1066
  }
1061
1067
  });
1068
+ Object.defineProperty(exports, "linkify", {
1069
+ enumerable: true,
1070
+ get: function get() {
1071
+ return _utils.linkify;
1072
+ }
1073
+ });
1074
+ Object.defineProperty(exports, "linkifyMatch", {
1075
+ enumerable: true,
1076
+ get: function get() {
1077
+ return _utils.linkifyMatch;
1078
+ }
1079
+ });
1062
1080
  Object.defineProperty(exports, "normalizeHexColor", {
1063
1081
  enumerable: true,
1064
1082
  get: function get() {
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.createSchema = createSchema;
9
9
  exports.sanitizeNodes = sanitizeNodes;
10
10
  exports.sanitizeNodeSpecContent = sanitizeNodeSpecContent;
11
+ exports.allowCustomPanel = void 0;
11
12
 
12
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
14
 
@@ -107,7 +108,7 @@ var nodesInOrder = [{
107
108
  spec: _nodes.codeBlock
108
109
  }, {
109
110
  name: 'panel',
110
- spec: _nodes.panel
111
+ spec: (0, _nodes.panel)(true)
111
112
  }, {
112
113
  name: 'rule',
113
114
  spec: _nodes.rule
@@ -128,7 +129,7 @@ var nodesInOrder = [{
128
129
  spec: _nodes.mediaGroup
129
130
  }, {
130
131
  name: 'mediaSingle',
131
- spec: _nodes.mediaSingle
132
+ spec: _nodes.mediaSingleWithCaption
132
133
  }, {
133
134
  name: 'mediaInline',
134
135
  spec: _nodes.mediaInline
@@ -262,6 +263,9 @@ var marksInOrder = [{
262
263
  }, {
263
264
  name: 'dataConsumer',
264
265
  spec: _marks.dataConsumer
266
+ }, {
267
+ name: 'fragment',
268
+ spec: _marks.fragment
265
269
  }, {
266
270
  name: 'indentation',
267
271
  spec: _marks.indentation
@@ -351,4 +355,7 @@ function isContentSupported(nodes, contentKey) {
351
355
  }
352
356
 
353
357
  return false;
354
- }
358
+ }
359
+
360
+ var allowCustomPanel = true;
361
+ exports.allowCustomPanel = allowCustomPanel;
@@ -5,19 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.defaultSchema = exports.getSchemaBasedOnStage = exports.defaultSchemaConfig = void 0;
7
7
 
8
- var _panel = require("./nodes/panel");
9
-
10
- var _layoutSection = require("./nodes/layout-section");
8
+ var _nodes = require("./nodes");
11
9
 
12
- var _dataConsumer = require("./marks/data-consumer");
10
+ var _marks = require("./marks");
13
11
 
14
12
  var _createSchema = require("./create-schema");
15
13
 
16
- var _nodes = require("./nodes");
17
-
18
14
  var getDefaultSchemaConfig = function getDefaultSchemaConfig() {
19
15
  var defaultSchemaConfig = {
20
- 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'],
16
+ 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'],
21
17
  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,
22
18
  ]
23
19
  };
@@ -29,18 +25,16 @@ exports.defaultSchemaConfig = defaultSchemaConfig;
29
25
 
30
26
  var getSchemaBasedOnStage = function getSchemaBasedOnStage() {
31
27
  var stage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'final';
32
- var defaultSchemaConfig = getDefaultSchemaConfig(); // TODO: ED-10445 remove stage0 check after panels with emoji are on full schema AND image captions are on full schema
28
+ var defaultSchemaConfig = getDefaultSchemaConfig();
33
29
 
34
30
  if (stage === 'stage0') {
35
31
  defaultSchemaConfig.customNodeSpecs = {
36
- panel: _panel.customPanel,
37
- mediaSingle: _nodes.mediaSingleWithCaption,
38
- layoutSection: _layoutSection.layoutSectionWithSingleColumn
32
+ layoutSection: _nodes.layoutSectionWithSingleColumn
39
33
  };
40
34
  defaultSchemaConfig.customMarkSpecs = {
41
- dataConsumer: _dataConsumer.dataConsumer
35
+ dataConsumer: _marks.dataConsumer,
36
+ fragment: _marks.fragment
42
37
  };
43
- defaultSchemaConfig.nodes.push('caption');
44
38
  defaultSchemaConfig.nodes.push('mediaInline');
45
39
  }
46
40
 
@@ -275,12 +275,6 @@ Object.defineProperty(exports, "panel", {
275
275
  return _nodes.panel;
276
276
  }
277
277
  });
278
- Object.defineProperty(exports, "customPanel", {
279
- enumerable: true,
280
- get: function get() {
281
- return _nodes.customPanel;
282
- }
283
- });
284
278
  Object.defineProperty(exports, "paragraph", {
285
279
  enumerable: true,
286
280
  get: function get() {
@@ -521,6 +515,18 @@ Object.defineProperty(exports, "em", {
521
515
  return _marks.em;
522
516
  }
523
517
  });
518
+ Object.defineProperty(exports, "fragment", {
519
+ enumerable: true,
520
+ get: function get() {
521
+ return _marks.fragment;
522
+ }
523
+ });
524
+ Object.defineProperty(exports, "fragmentToJSON", {
525
+ enumerable: true,
526
+ get: function get() {
527
+ return _marks.fragmentToJSON;
528
+ }
529
+ });
524
530
  Object.defineProperty(exports, "indentation", {
525
531
  enumerable: true,
526
532
  get: function get() {
@@ -56,7 +56,7 @@ function makeSchema(config) {
56
56
  }
57
57
 
58
58
  if (config.allowMedia) {
59
- nodes.push('mediaGroup', 'mediaSingle', 'media');
59
+ nodes.push('mediaGroup', 'mediaSingle', 'media', 'caption');
60
60
  }
61
61
 
62
62
  if (config.allowTextColor) {
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.toJSON = exports.fragment = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _parseDOM = require("../../utils/parseDOM");
13
+
14
+ 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; }
15
+
16
+ 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) { (0, _defineProperty2.default)(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; }
17
+
18
+ var parseFragment = function parseFragment(maybeValue) {
19
+ var _maybeValue$getAttrib;
20
+
21
+ if (!(0, _parseDOM.isDOMElement)(maybeValue)) {
22
+ return false;
23
+ }
24
+
25
+ var name = (_maybeValue$getAttrib = maybeValue.getAttribute('data-name')) !== null && _maybeValue$getAttrib !== void 0 ? _maybeValue$getAttrib : undefined;
26
+ var localId = maybeValue.getAttribute('data-localId');
27
+
28
+ if (!localId) {
29
+ return false;
30
+ }
31
+
32
+ return {
33
+ localId: localId,
34
+ name: name
35
+ };
36
+ };
37
+
38
+ var fragment = {
39
+ inclusive: false,
40
+ excludes: '',
41
+ attrs: {
42
+ localId: {
43
+ default: ''
44
+ },
45
+ name: {
46
+ default: null
47
+ }
48
+ },
49
+ parseDOM: [{
50
+ tag: '[data-mark-type="fragment"]',
51
+ getAttrs: function getAttrs(maybeValue) {
52
+ return parseFragment(maybeValue);
53
+ }
54
+ }],
55
+ toDOM: function toDOM(mark, inline) {
56
+ var wrapperStyle = inline ? 'span' : 'div';
57
+ return [wrapperStyle, {
58
+ 'data-mark-type': 'fragment',
59
+ 'data-name': mark.attrs.name,
60
+ 'data-localId': mark.attrs.localId
61
+ }];
62
+ }
63
+ };
64
+ exports.fragment = fragment;
65
+
66
+ var toJSON = function toJSON(mark) {
67
+ return {
68
+ type: mark.type.name,
69
+ attrs: _objectSpread({
70
+ localId: mark.attrs.localId
71
+ }, mark.attrs.name ? {
72
+ name: mark.attrs.name
73
+ } : {})
74
+ };
75
+ };
76
+
77
+ exports.toJSON = toJSON;
@@ -153,6 +153,18 @@ Object.defineProperty(exports, "dataConsumerToJSON", {
153
153
  return _dataConsumer.toJSON;
154
154
  }
155
155
  });
156
+ Object.defineProperty(exports, "fragment", {
157
+ enumerable: true,
158
+ get: function get() {
159
+ return _fragment.fragment;
160
+ }
161
+ });
162
+ Object.defineProperty(exports, "fragmentToJSON", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _fragment.toJSON;
166
+ }
167
+ });
156
168
 
157
169
  var _em = require("./em");
158
170
 
@@ -186,4 +198,6 @@ var _unsupportedMark = require("./unsupported-mark");
186
198
 
187
199
  var _unsupportedNodeAttributes = require("./unsupported-node-attributes");
188
200
 
189
- var _dataConsumer = require("./data-consumer");
201
+ var _dataConsumer = require("./data-consumer");
202
+
203
+ var _fragment = require("./fragment");
@@ -9,8 +9,6 @@ exports.toJSON = exports.link = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
- var _prosemirrorModel = require("prosemirror-model");
13
-
14
12
  var _groups = require("../groups");
15
13
 
16
14
  var _url = require("../../utils/url");
@@ -37,32 +35,6 @@ var getLinkAttrs = function getLinkAttrs(attribute) {
37
35
  };
38
36
  };
39
37
 
40
- var getLinkAttrsWithCheck = function getLinkAttrsWithCheck(attribute) {
41
- return function (domNode) {
42
- var dom = domNode;
43
- var hasTextOnlyChildren = Array.from(dom.childNodes).every(function (node) {
44
- return node.nodeType === Node.TEXT_NODE || node.nodeName === 'SPAN';
45
- });
46
-
47
- if (hasTextOnlyChildren) {
48
- var href = dom.getAttribute(attribute) || '';
49
- var attrs = {
50
- __confluenceMetadata: dom.hasAttribute('__confluenceMetadata') ? JSON.parse(dom.getAttribute('__confluenceMetadata') || '') : undefined
51
- };
52
-
53
- if ((0, _url.isSafeUrl)(href)) {
54
- attrs.href = (0, _url.normalizeUrl)(href);
55
- } else {
56
- return false;
57
- }
58
-
59
- return attrs;
60
- }
61
-
62
- return false;
63
- };
64
- };
65
-
66
38
  var link = {
67
39
  excludes: "".concat(_groups.LINK, " ").concat(_groups.COLOR),
68
40
  // ED-5844 No multiple links in media node
@@ -80,39 +52,14 @@ var link = {
80
52
  contentElement: function contentElement(node) {
81
53
  var clone = node.cloneNode(true);
82
54
  clone.removeAttribute('data-block-link');
55
+ clone.setAttribute('data-skip-paste', 'true');
83
56
  var wrapper = document.createElement('div');
84
57
  wrapper.appendChild(clone);
85
58
  return wrapper;
86
59
  }
87
60
  }, {
88
61
  tag: 'a[href]',
89
- context: 'mediaSingle/|taskItem/|decisionItem/',
90
62
  getAttrs: getLinkAttrs('href')
91
- }, {
92
- tag: 'a[href]',
93
- getAttrs: getLinkAttrsWithCheck('href')
94
- }, {
95
- /**
96
- * When links aren't wrapped in a paragraph and due to
97
- * the odd nature of how our schema is set up, prosemirror will
98
- * add the link to the paragraph node itself where it should be on
99
- * the text node, this satisfies our schema because link is allowed
100
- * in many places (e.g. listitem)
101
- * This change comes through via prosemirror-model@1.9.1
102
- */
103
- tag: 'a[href]',
104
- getAttrs: getLinkAttrsWithCheck('href'),
105
- getContent: function getContent(node, schema) {
106
- if (node instanceof HTMLAnchorElement) {
107
- var href = node.getAttribute('href');
108
- var text = node.innerText;
109
- return _prosemirrorModel.Fragment.from(schema.nodes.paragraph.createChecked(undefined, schema.text(text, [schema.marks.link.create({
110
- href: href
111
- })])));
112
- }
113
-
114
- return _prosemirrorModel.Fragment.empty;
115
- }
116
63
  }],
117
64
  toDOM: function toDOM(node, isInline) {
118
65
  var attrs = Object.keys(node.attrs).reduce(function (attrs, key) {
@@ -8,6 +8,7 @@ var unsupportedMark = {
8
8
  toDOM: function toDOM() {
9
9
  return ['span'];
10
10
  },
11
+ excludes: '',
11
12
  attrs: {
12
13
  originalValue: {}
13
14
  }
@@ -11,7 +11,7 @@ var createBodiedExtensionNodeSpec = function createBodiedExtensionNodeSpec() {
11
11
  var nodeSpec = {
12
12
  inline: false,
13
13
  group: 'block',
14
- marks: 'link dataConsumer',
14
+ marks: 'link dataConsumer fragment',
15
15
  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | extension | unsupportedBlock | embedCard)+',
16
16
  defining: true,
17
17
  selectable: true,
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.caption = void 0;
7
7
 
8
8
  /**
9
- * @stage 0
10
9
  * @name caption_node
11
10
  */
12
11
  var caption = {
@@ -10,6 +10,6 @@ exports.doc = void 0;
10
10
  */
11
11
  var doc = {
12
12
  content: '(block|layoutSection)+',
13
- marks: 'alignment breakout dataConsumer indentation link unsupportedMark unsupportedNodeAttribute'
13
+ marks: 'alignment breakout dataConsumer fragment indentation link unsupportedMark unsupportedNodeAttribute'
14
14
  };
15
15
  exports.doc = doc;
@@ -32,6 +32,10 @@ var emoji = {
32
32
  text: dom.getAttribute('data-emoji-text') || emoji.attrs.text.default
33
33
  };
34
34
  }
35
+ }, // Handle copy/paste beautiful panel from renderer />
36
+ {
37
+ tag: 'div.ak-editor-panel__icon',
38
+ ignore: true
35
39
  }, // Handle copy/paste from old <ac:emoticon />
36
40
  {
37
41
  tag: 'img[data-emoticon-name]',
@@ -27,7 +27,7 @@ function getExpandAttrs(domNode) {
27
27
  var expand = {
28
28
  inline: false,
29
29
  group: 'block',
30
- marks: 'link dataConsumer unsupportedMark unsupportedNodeAttribute',
30
+ marks: 'link dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
31
31
  content: '(paragraph | panel | blockquote | orderedList | bulletList | rule | heading | codeBlock | mediaGroup | mediaSingle | decisionList | taskList | table | blockCard | embedCard | extension | unsupportedBlock)+',
32
32
  isolating: true,
33
33
  selectable: true,
@@ -143,12 +143,6 @@ Object.defineProperty(exports, "panel", {
143
143
  return _panel.panel;
144
144
  }
145
145
  });
146
- Object.defineProperty(exports, "customPanel", {
147
- enumerable: true,
148
- get: function get() {
149
- return _panel.customPanel;
150
- }
151
- });
152
146
  Object.defineProperty(exports, "PanelType", {
153
147
  enumerable: true,
154
148
  get: function get() {
@@ -11,7 +11,7 @@ exports.layoutColumn = void 0;
11
11
  var layoutColumn = {
12
12
  content: '(block|unsupportedBlock)+',
13
13
  isolating: true,
14
- marks: 'link alignment indentation dataConsumer unsupportedMark unsupportedNodeAttribute',
14
+ marks: 'link alignment indentation dataConsumer fragment unsupportedMark unsupportedNodeAttribute',
15
15
  selectable: false,
16
16
  attrs: {
17
17
  width: {
@@ -32,7 +32,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
32
32
 
33
33
  /**
34
34
  * @name mediaSingle_caption_node
35
- * @stage 0
36
35
  */
37
36
  var defaultAttrs = {
38
37
  width: {
@@ -81,6 +80,7 @@ var mediaSingle = {
81
80
  exports.mediaSingle = mediaSingle;
82
81
 
83
82
  var mediaSingleWithCaption = _objectSpread(_objectSpread({}, mediaSingle), {}, {
83
+ atom: false,
84
84
  content: 'media|unsupportedBlock+|media (caption|unsupportedBlock) unsupportedBlock*'
85
85
  });
86
86
 
@@ -1,9 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.panel = exports.customPanel = exports.PanelType = void 0;
8
+ exports.panel = exports.PanelType = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ 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; }
13
+
14
+ 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) { (0, _defineProperty2.default)(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; }
15
+
7
16
  var PanelType;
8
17
  exports.PanelType = PanelType;
9
18
 
@@ -17,12 +26,8 @@ exports.PanelType = PanelType;
17
26
  PanelType["CUSTOM"] = "custom";
18
27
  })(PanelType || (exports.PanelType = PanelType = {}));
19
28
 
20
- //TODO: ED-10445 rename to panel and merge with the other panel node spec, after emoji panels moved to full schema
21
- var customPanel = {
22
- group: 'block',
23
- content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
24
- marks: 'unsupportedMark unsupportedNodeAttribute',
25
- attrs: {
29
+ var getDefaultAttrs = function getDefaultAttrs() {
30
+ var attrs = {
26
31
  panelType: {
27
32
  default: 'info'
28
33
  },
@@ -32,54 +37,54 @@ var customPanel = {
32
37
  panelColor: {
33
38
  default: null
34
39
  }
35
- },
36
- parseDOM: [{
37
- tag: 'div[data-panel-type]',
38
- getAttrs: function getAttrs(dom) {
39
- return {
40
- panelType: dom.getAttribute('data-panel-type'),
41
- panelIcon: dom.getAttribute('data-panel-icon'),
42
- panelColor: dom.getAttribute('data-panel-color')
43
- };
44
- }
45
- }],
46
- toDOM: function toDOM(node) {
47
- var _node$attrs = node.attrs,
48
- panelType = _node$attrs.panelType,
49
- panelIcon = _node$attrs.panelIcon,
50
- panelColor = _node$attrs.panelColor;
51
- var attrs = {
52
- 'data-panel-type': panelType,
53
- 'data-panel-icon': panelIcon,
54
- 'data-panel-color': panelColor
55
- };
56
- return ['div', attrs, ['div', {}, 0]];
40
+ };
41
+ return attrs;
42
+ };
43
+
44
+ var getDomAttrs = function getDomAttrs(nodeAttrs) {
45
+ var attrs = {
46
+ 'data-panel-type': nodeAttrs.panelType,
47
+ 'data-panel-icon': nodeAttrs.panelIcon,
48
+ 'data-panel-color': nodeAttrs.panelColor
49
+ };
50
+ return attrs;
51
+ };
52
+
53
+ var getParseDOMAttrs = function getParseDOMAttrs(allowCustomPanel, dom) {
54
+ var parseDOMAttrs = {
55
+ panelType: dom.getAttribute('data-panel-type')
56
+ };
57
+
58
+ if (allowCustomPanel) {
59
+ parseDOMAttrs = _objectSpread(_objectSpread({}, parseDOMAttrs), {}, {
60
+ panelIcon: dom.getAttribute('data-panel-icon'),
61
+ panelColor: dom.getAttribute('data-panel-color')
62
+ });
63
+ } else {
64
+ parseDOMAttrs.panelType = parseDOMAttrs.panelType === PanelType.CUSTOM ? PanelType.INFO : parseDOMAttrs.panelType;
57
65
  }
66
+
67
+ return parseDOMAttrs;
58
68
  };
59
- exports.customPanel = customPanel;
60
- var panel = {
61
- group: 'block',
62
- content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
63
- marks: 'unsupportedMark unsupportedNodeAttribute',
64
- attrs: {
65
- panelType: {
66
- default: 'info'
67
- }
68
- },
69
- parseDOM: [{
70
- tag: 'div[data-panel-type]',
71
- getAttrs: function getAttrs(dom) {
72
- return {
73
- panelType: dom.getAttribute('data-panel-type')
74
- };
69
+
70
+ var panel = function panel(allowCustomPanel) {
71
+ var panelNodeSpec = {
72
+ group: 'block',
73
+ content: '(paragraph | heading | bulletList | orderedList | blockCard | unsupportedBlock)+',
74
+ marks: 'unsupportedMark unsupportedNodeAttribute',
75
+ attrs: getDefaultAttrs(),
76
+ parseDOM: [{
77
+ tag: 'div[data-panel-type]',
78
+ getAttrs: function getAttrs(dom) {
79
+ return getParseDOMAttrs(allowCustomPanel, dom);
80
+ }
81
+ }],
82
+ toDOM: function toDOM(node) {
83
+ var attrs = getDomAttrs(node.attrs);
84
+ return ['div', attrs, ['div', {}, 0]];
75
85
  }
76
- }],
77
- toDOM: function toDOM(node) {
78
- var panelType = node.attrs.panelType;
79
- var attrs = {
80
- 'data-panel-type': panelType
81
- };
82
- return ['div', attrs, ['div', {}, 0]];
83
- }
86
+ };
87
+ return panelNodeSpec;
84
88
  };
89
+
85
90
  exports.panel = panel;