@atlaskit/adf-utils 19.30.1 → 19.31.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 (82) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/alignment/package.json +15 -0
  3. package/background-color/package.json +15 -0
  4. package/block-card/package.json +15 -0
  5. package/block-task-item/package.json +15 -0
  6. package/blockquote/package.json +15 -0
  7. package/bodied-extension/package.json +15 -0
  8. package/bodied-sync-block/package.json +15 -0
  9. package/border/package.json +15 -0
  10. package/breakout/package.json +15 -0
  11. package/bullet-list/package.json +15 -0
  12. package/code/package.json +15 -0
  13. package/code-block/package.json +15 -0
  14. package/data-consumer/package.json +15 -0
  15. package/date/package.json +15 -0
  16. package/decision-item/package.json +15 -0
  17. package/decision-list/package.json +15 -0
  18. package/dedupe-marks-transform/package.json +15 -0
  19. package/dist/cjs/transforms/native-embeds-fallback-transform.js +43 -10
  20. package/dist/es2019/transforms/native-embeds-fallback-transform.js +42 -10
  21. package/dist/esm/transforms/native-embeds-fallback-transform.js +43 -10
  22. package/dist/types/transforms/native-embeds-fallback-transform.d.ts +7 -9
  23. package/dist/types-ts4.5/transforms/native-embeds-fallback-transform.d.ts +7 -9
  24. package/doc/package.json +15 -0
  25. package/em/package.json +15 -0
  26. package/embed-card/package.json +15 -0
  27. package/emoji/package.json +15 -0
  28. package/errors/package.json +15 -0
  29. package/expand/package.json +15 -0
  30. package/extension/package.json +15 -0
  31. package/filter/package.json +15 -0
  32. package/fragment/package.json +15 -0
  33. package/hard-break/package.json +15 -0
  34. package/heading/package.json +15 -0
  35. package/helpers/package.json +15 -0
  36. package/indentation/package.json +15 -0
  37. package/indentation-marks-transform/package.json +15 -0
  38. package/inline-card/package.json +15 -0
  39. package/inline-extension/package.json +15 -0
  40. package/invalid-media-content-transform/package.json +15 -0
  41. package/layout-column/package.json +15 -0
  42. package/layout-section/package.json +15 -0
  43. package/link/package.json +15 -0
  44. package/list-item/package.json +15 -0
  45. package/map/package.json +15 -0
  46. package/media/package.json +15 -0
  47. package/media-group/package.json +15 -0
  48. package/media-link-transform/package.json +15 -0
  49. package/media-single/package.json +15 -0
  50. package/mention/package.json +15 -0
  51. package/native-embeds-fallback-transform/package.json +15 -0
  52. package/nested-expand/package.json +15 -0
  53. package/nested-table-transform/package.json +15 -0
  54. package/nodes-missing-content-transform/package.json +15 -0
  55. package/ordered-list/package.json +15 -0
  56. package/package.json +3 -3
  57. package/panel/package.json +15 -0
  58. package/paragraph/package.json +15 -0
  59. package/placeholder/package.json +15 -0
  60. package/reduce/package.json +15 -0
  61. package/rule/package.json +15 -0
  62. package/scrub-adf/package.json +15 -0
  63. package/scrub-content/package.json +15 -0
  64. package/status/package.json +15 -0
  65. package/strike/package.json +15 -0
  66. package/strong/package.json +15 -0
  67. package/subsup/package.json +15 -0
  68. package/sync-block/package.json +15 -0
  69. package/sync-block-fallback-transform/package.json +15 -0
  70. package/table/package.json +15 -0
  71. package/table-cell/package.json +15 -0
  72. package/table-header/package.json +15 -0
  73. package/table-row/package.json +15 -0
  74. package/task-item/package.json +15 -0
  75. package/task-list/package.json +15 -0
  76. package/text/package.json +15 -0
  77. package/text-color/package.json +15 -0
  78. package/text-link-code-transform/package.json +15 -0
  79. package/transform-media-single-width/package.json +15 -0
  80. package/traverse/main/package.json +15 -0
  81. package/underline/package.json +15 -0
  82. package/validator/main/package.json +15 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/adf-utils
2
2
 
3
+ ## 19.31.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`a30920d056679`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a30920d056679) -
8
+ Autofix: add explicit package exports (barrel removal)
9
+
10
+ ## 19.30.2
11
+
12
+ ### Patch Changes
13
+
14
+ - [`2ee094c6df7e1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2ee094c6df7e1) -
15
+ `nativeEmbedsFallbackTransform` now renders an `embedCard` when the parent context allows it (per
16
+ the supplied ProseMirror schema), and falls back to the existing `paragraph > inlineCard` shape
17
+ only when `embedCard` would not be valid in that position. The function now requires a `Schema`
18
+ argument, which the renderer passes from the schema being used for the current render.
19
+
3
20
  ## 19.30.1
4
21
 
5
22
  ### Patch Changes
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/alignment",
3
+ "main": "../dist/cjs/builders/marks/alignment.js",
4
+ "module": "../dist/esm/builders/marks/alignment.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/alignment.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/alignment.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/alignment.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/background-color",
3
+ "main": "../dist/cjs/builders/marks/background-color.js",
4
+ "module": "../dist/esm/builders/marks/background-color.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/background-color.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/background-color.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/background-color.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/block-card",
3
+ "main": "../dist/cjs/builders/nodes/block-card.js",
4
+ "module": "../dist/esm/builders/nodes/block-card.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/block-card.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/block-card.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/block-card.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/block-task-item",
3
+ "main": "../dist/cjs/builders/nodes/block-task-item.js",
4
+ "module": "../dist/esm/builders/nodes/block-task-item.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/block-task-item.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/block-task-item.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/block-task-item.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/blockquote",
3
+ "main": "../dist/cjs/builders/nodes/blockquote.js",
4
+ "module": "../dist/esm/builders/nodes/blockquote.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/blockquote.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/blockquote.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/blockquote.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/bodied-extension",
3
+ "main": "../dist/cjs/builders/nodes/bodied-extension.js",
4
+ "module": "../dist/esm/builders/nodes/bodied-extension.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/bodied-extension.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/bodied-extension.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/bodied-extension.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/bodied-sync-block",
3
+ "main": "../dist/cjs/builders/nodes/bodied-sync-block.js",
4
+ "module": "../dist/esm/builders/nodes/bodied-sync-block.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/bodied-sync-block.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/bodied-sync-block.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/bodied-sync-block.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/border",
3
+ "main": "../dist/cjs/builders/marks/border.js",
4
+ "module": "../dist/esm/builders/marks/border.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/border.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/border.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/border.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/breakout",
3
+ "main": "../dist/cjs/builders/marks/breakout.js",
4
+ "module": "../dist/esm/builders/marks/breakout.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/breakout.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/breakout.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/breakout.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/bullet-list",
3
+ "main": "../dist/cjs/builders/nodes/bullet-list.js",
4
+ "module": "../dist/esm/builders/nodes/bullet-list.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/bullet-list.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/bullet-list.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/bullet-list.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/code",
3
+ "main": "../dist/cjs/builders/marks/code.js",
4
+ "module": "../dist/esm/builders/marks/code.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/code.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/code.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/code.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/code-block",
3
+ "main": "../dist/cjs/builders/nodes/code-block.js",
4
+ "module": "../dist/esm/builders/nodes/code-block.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/code-block.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/code-block.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/code-block.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/data-consumer",
3
+ "main": "../dist/cjs/builders/marks/data-consumer.js",
4
+ "module": "../dist/esm/builders/marks/data-consumer.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/data-consumer.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/data-consumer.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/data-consumer.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/date",
3
+ "main": "../dist/cjs/builders/nodes/date.js",
4
+ "module": "../dist/esm/builders/nodes/date.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/date.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/date.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/date.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/decision-item",
3
+ "main": "../dist/cjs/builders/nodes/decision-item.js",
4
+ "module": "../dist/esm/builders/nodes/decision-item.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/decision-item.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/decision-item.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/decision-item.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/decision-list",
3
+ "main": "../dist/cjs/builders/nodes/decision-list.js",
4
+ "module": "../dist/esm/builders/nodes/decision-list.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/decision-list.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/decision-list.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/decision-list.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/dedupe-marks-transform",
3
+ "main": "../dist/cjs/transforms/dedupe-marks-transform.js",
4
+ "module": "../dist/esm/transforms/dedupe-marks-transform.js",
5
+ "module:es2019": "../dist/es2019/transforms/dedupe-marks-transform.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/transforms/dedupe-marks-transform.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/transforms/dedupe-marks-transform.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -9,19 +9,43 @@ var _validator = require("../validator/validator");
9
9
  var NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
10
10
 
11
11
  /**
12
- * Replaces any `extension` nodes whose `extensionKey` is
13
- * `native-embed` with a paragraph containing an `inlineCard`
14
- * node pointing at the same URL.
15
- * If a native-embed node has no URL it is dropped from the document.
16
- *
17
- * The transformed ADF is validated against the ADF spec.
18
- * If validation fails the original (untransformed) ADF is returned
19
- * to avoid rendering broken content.
12
+ * Returns the set of parent node names whose content expression in the
13
+ * supplied schema allows an `embedCard` child. Returns an empty set if the
14
+ * schema does not declare an `embedCard` node.
20
15
  */
21
- var nativeEmbedsFallbackTransform = exports.nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransform(adf) {
16
+ var getEmbedCardAllowedParentTypes = function getEmbedCardAllowedParentTypes(schema) {
17
+ var embedCardType = schema.nodes.embedCard;
18
+ if (!embedCardType) {
19
+ return new Set();
20
+ }
21
+ var allowed = new Set();
22
+ for (var _i = 0, _Object$values = Object.values(schema.nodes); _i < _Object$values.length; _i++) {
23
+ var _nodeType$contentMatc;
24
+ var nodeType = _Object$values[_i];
25
+ if ((_nodeType$contentMatc = nodeType.contentMatch) !== null && _nodeType$contentMatc !== void 0 && _nodeType$contentMatc.matchType(embedCardType)) {
26
+ allowed.add(nodeType.name);
27
+ }
28
+ }
29
+ return allowed;
30
+ };
31
+
32
+ /**
33
+ * Replaces `extension` nodes whose `extensionKey` starts with `native-embed`
34
+ * with an `embedCard` when the parent context allows it (per the supplied
35
+ * schema), otherwise a `paragraph` containing an `inlineCard`. Native-embed
36
+ * nodes with no URL are dropped. If the transformed ADF fails schema
37
+ * validation the original ADF is returned.
38
+ */
39
+ var nativeEmbedsFallbackTransform = exports.nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransform(adf, schema) {
40
+ var embedCardAllowedParentTypes = getEmbedCardAllowedParentTypes(schema);
41
+ var isEmbedCardAllowedInParent = function isEmbedCardAllowedInParent(parent) {
42
+ var _parent$node;
43
+ var parentType = parent === null || parent === void 0 || (_parent$node = parent.node) === null || _parent$node === void 0 ? void 0 : _parent$node.type;
44
+ return parentType ? embedCardAllowedParentTypes.has(parentType) : false;
45
+ };
22
46
  var didTransform = false;
23
47
  var transformedAdf = (0, _traverse.traverse)(adf, {
24
- extension: function extension(node) {
48
+ extension: function extension(node, parent) {
25
49
  var _node$attrs, _node$attrs2;
26
50
  if (((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs['extensionKey'].split(':')[0]) !== NATIVE_EMBED_EXTENSION_KEY) {
27
51
  return node;
@@ -32,6 +56,15 @@ var nativeEmbedsFallbackTransform = exports.nativeEmbedsFallbackTransform = func
32
56
  return false;
33
57
  }
34
58
  didTransform = true;
59
+ if (isEmbedCardAllowedInParent(parent)) {
60
+ return {
61
+ type: 'embedCard',
62
+ attrs: {
63
+ url: url,
64
+ layout: 'center'
65
+ }
66
+ };
67
+ }
35
68
  return {
36
69
  type: 'paragraph',
37
70
  content: [{
@@ -3,19 +3,42 @@ import { validator } from '../validator/validator';
3
3
  const NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
4
4
 
5
5
  /**
6
- * Replaces any `extension` nodes whose `extensionKey` is
7
- * `native-embed` with a paragraph containing an `inlineCard`
8
- * node pointing at the same URL.
9
- * If a native-embed node has no URL it is dropped from the document.
10
- *
11
- * The transformed ADF is validated against the ADF spec.
12
- * If validation fails the original (untransformed) ADF is returned
13
- * to avoid rendering broken content.
6
+ * Returns the set of parent node names whose content expression in the
7
+ * supplied schema allows an `embedCard` child. Returns an empty set if the
8
+ * schema does not declare an `embedCard` node.
14
9
  */
15
- export const nativeEmbedsFallbackTransform = adf => {
10
+ const getEmbedCardAllowedParentTypes = schema => {
11
+ const embedCardType = schema.nodes.embedCard;
12
+ if (!embedCardType) {
13
+ return new Set();
14
+ }
15
+ const allowed = new Set();
16
+ for (const nodeType of Object.values(schema.nodes)) {
17
+ var _nodeType$contentMatc;
18
+ if ((_nodeType$contentMatc = nodeType.contentMatch) !== null && _nodeType$contentMatc !== void 0 && _nodeType$contentMatc.matchType(embedCardType)) {
19
+ allowed.add(nodeType.name);
20
+ }
21
+ }
22
+ return allowed;
23
+ };
24
+
25
+ /**
26
+ * Replaces `extension` nodes whose `extensionKey` starts with `native-embed`
27
+ * with an `embedCard` when the parent context allows it (per the supplied
28
+ * schema), otherwise a `paragraph` containing an `inlineCard`. Native-embed
29
+ * nodes with no URL are dropped. If the transformed ADF fails schema
30
+ * validation the original ADF is returned.
31
+ */
32
+ export const nativeEmbedsFallbackTransform = (adf, schema) => {
33
+ const embedCardAllowedParentTypes = getEmbedCardAllowedParentTypes(schema);
34
+ const isEmbedCardAllowedInParent = parent => {
35
+ var _parent$node;
36
+ const parentType = parent === null || parent === void 0 ? void 0 : (_parent$node = parent.node) === null || _parent$node === void 0 ? void 0 : _parent$node.type;
37
+ return parentType ? embedCardAllowedParentTypes.has(parentType) : false;
38
+ };
16
39
  let didTransform = false;
17
40
  const transformedAdf = traverse(adf, {
18
- extension: node => {
41
+ extension: (node, parent) => {
19
42
  var _node$attrs, _node$attrs2, _node$attrs2$paramete, _node$attrs2$paramete2, _node$attrs2$paramete3;
20
43
  if (((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs['extensionKey'].split(':')[0]) !== NATIVE_EMBED_EXTENSION_KEY) {
21
44
  return node;
@@ -26,6 +49,15 @@ export const nativeEmbedsFallbackTransform = adf => {
26
49
  return false;
27
50
  }
28
51
  didTransform = true;
52
+ if (isEmbedCardAllowedInParent(parent)) {
53
+ return {
54
+ type: 'embedCard',
55
+ attrs: {
56
+ url,
57
+ layout: 'center'
58
+ }
59
+ };
60
+ }
29
61
  return {
30
62
  type: 'paragraph',
31
63
  content: [{
@@ -3,19 +3,43 @@ import { validator } from '../validator/validator';
3
3
  var NATIVE_EMBED_EXTENSION_KEY = 'native-embed';
4
4
 
5
5
  /**
6
- * Replaces any `extension` nodes whose `extensionKey` is
7
- * `native-embed` with a paragraph containing an `inlineCard`
8
- * node pointing at the same URL.
9
- * If a native-embed node has no URL it is dropped from the document.
10
- *
11
- * The transformed ADF is validated against the ADF spec.
12
- * If validation fails the original (untransformed) ADF is returned
13
- * to avoid rendering broken content.
6
+ * Returns the set of parent node names whose content expression in the
7
+ * supplied schema allows an `embedCard` child. Returns an empty set if the
8
+ * schema does not declare an `embedCard` node.
14
9
  */
15
- export var nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransform(adf) {
10
+ var getEmbedCardAllowedParentTypes = function getEmbedCardAllowedParentTypes(schema) {
11
+ var embedCardType = schema.nodes.embedCard;
12
+ if (!embedCardType) {
13
+ return new Set();
14
+ }
15
+ var allowed = new Set();
16
+ for (var _i = 0, _Object$values = Object.values(schema.nodes); _i < _Object$values.length; _i++) {
17
+ var _nodeType$contentMatc;
18
+ var nodeType = _Object$values[_i];
19
+ if ((_nodeType$contentMatc = nodeType.contentMatch) !== null && _nodeType$contentMatc !== void 0 && _nodeType$contentMatc.matchType(embedCardType)) {
20
+ allowed.add(nodeType.name);
21
+ }
22
+ }
23
+ return allowed;
24
+ };
25
+
26
+ /**
27
+ * Replaces `extension` nodes whose `extensionKey` starts with `native-embed`
28
+ * with an `embedCard` when the parent context allows it (per the supplied
29
+ * schema), otherwise a `paragraph` containing an `inlineCard`. Native-embed
30
+ * nodes with no URL are dropped. If the transformed ADF fails schema
31
+ * validation the original ADF is returned.
32
+ */
33
+ export var nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransform(adf, schema) {
34
+ var embedCardAllowedParentTypes = getEmbedCardAllowedParentTypes(schema);
35
+ var isEmbedCardAllowedInParent = function isEmbedCardAllowedInParent(parent) {
36
+ var _parent$node;
37
+ var parentType = parent === null || parent === void 0 || (_parent$node = parent.node) === null || _parent$node === void 0 ? void 0 : _parent$node.type;
38
+ return parentType ? embedCardAllowedParentTypes.has(parentType) : false;
39
+ };
16
40
  var didTransform = false;
17
41
  var transformedAdf = traverse(adf, {
18
- extension: function extension(node) {
42
+ extension: function extension(node, parent) {
19
43
  var _node$attrs, _node$attrs2;
20
44
  if (((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs['extensionKey'].split(':')[0]) !== NATIVE_EMBED_EXTENSION_KEY) {
21
45
  return node;
@@ -26,6 +50,15 @@ export var nativeEmbedsFallbackTransform = function nativeEmbedsFallbackTransfor
26
50
  return false;
27
51
  }
28
52
  didTransform = true;
53
+ if (isEmbedCardAllowedInParent(parent)) {
54
+ return {
55
+ type: 'embedCard',
56
+ attrs: {
57
+ url: url,
58
+ layout: 'center'
59
+ }
60
+ };
61
+ }
29
62
  return {
30
63
  type: 'paragraph',
31
64
  content: [{
@@ -1,15 +1,13 @@
1
+ import type { Schema } from '@atlaskit/editor-prosemirror/model';
1
2
  import type { ADFEntity } from '../types';
2
3
  /**
3
- * Replaces any `extension` nodes whose `extensionKey` is
4
- * `native-embed` with a paragraph containing an `inlineCard`
5
- * node pointing at the same URL.
6
- * If a native-embed node has no URL it is dropped from the document.
7
- *
8
- * The transformed ADF is validated against the ADF spec.
9
- * If validation fails the original (untransformed) ADF is returned
10
- * to avoid rendering broken content.
4
+ * Replaces `extension` nodes whose `extensionKey` starts with `native-embed`
5
+ * with an `embedCard` when the parent context allows it (per the supplied
6
+ * schema), otherwise a `paragraph` containing an `inlineCard`. Native-embed
7
+ * nodes with no URL are dropped. If the transformed ADF fails schema
8
+ * validation the original ADF is returned.
11
9
  */
12
- export declare const nativeEmbedsFallbackTransform: (adf: ADFEntity) => {
10
+ export declare const nativeEmbedsFallbackTransform: (adf: ADFEntity, schema: Schema) => {
13
11
  hasValidTransform: boolean;
14
12
  transformedAdf: false | ADFEntity;
15
13
  };
@@ -1,15 +1,13 @@
1
+ import type { Schema } from '@atlaskit/editor-prosemirror/model';
1
2
  import type { ADFEntity } from '../types';
2
3
  /**
3
- * Replaces any `extension` nodes whose `extensionKey` is
4
- * `native-embed` with a paragraph containing an `inlineCard`
5
- * node pointing at the same URL.
6
- * If a native-embed node has no URL it is dropped from the document.
7
- *
8
- * The transformed ADF is validated against the ADF spec.
9
- * If validation fails the original (untransformed) ADF is returned
10
- * to avoid rendering broken content.
4
+ * Replaces `extension` nodes whose `extensionKey` starts with `native-embed`
5
+ * with an `embedCard` when the parent context allows it (per the supplied
6
+ * schema), otherwise a `paragraph` containing an `inlineCard`. Native-embed
7
+ * nodes with no URL are dropped. If the transformed ADF fails schema
8
+ * validation the original ADF is returned.
11
9
  */
12
- export declare const nativeEmbedsFallbackTransform: (adf: ADFEntity) => {
10
+ export declare const nativeEmbedsFallbackTransform: (adf: ADFEntity, schema: Schema) => {
13
11
  hasValidTransform: boolean;
14
12
  transformedAdf: false | ADFEntity;
15
13
  };
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/doc",
3
+ "main": "../dist/cjs/builders/nodes/doc.js",
4
+ "module": "../dist/esm/builders/nodes/doc.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/doc.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/doc.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/doc.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/em",
3
+ "main": "../dist/cjs/builders/marks/em.js",
4
+ "module": "../dist/esm/builders/marks/em.js",
5
+ "module:es2019": "../dist/es2019/builders/marks/em.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/marks/em.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/marks/em.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/embed-card",
3
+ "main": "../dist/cjs/builders/nodes/embed-card.js",
4
+ "module": "../dist/esm/builders/nodes/embed-card.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/embed-card.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/embed-card.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/embed-card.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/emoji",
3
+ "main": "../dist/cjs/builders/nodes/emoji.js",
4
+ "module": "../dist/esm/builders/nodes/emoji.js",
5
+ "module:es2019": "../dist/es2019/builders/nodes/emoji.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/builders/nodes/emoji.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/builders/nodes/emoji.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/adf-utils/errors",
3
+ "main": "../dist/cjs/transforms/errors.js",
4
+ "module": "../dist/esm/transforms/errors.js",
5
+ "module:es2019": "../dist/es2019/transforms/errors.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/transforms/errors.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.9": {
10
+ "*": [
11
+ "../dist/types-ts4.5/transforms/errors.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }