@atlaskit/editor-plugin-block-menu 9.0.19 → 9.1.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 (107) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/editor-commands/transform-node-utils/TRANSFORMATION_MATRIX.js +5 -5
  3. package/dist/cjs/editor-commands/transform-node-utils/{unwrapExpandStep.js → steps/unwrapExpandStep.js} +1 -1
  4. package/dist/cjs/editor-commands/transform-node-utils/{wrapIntoListStep.js → steps/wrapIntoListStep.js} +2 -2
  5. package/dist/cjs/editor-commands/transform-node-utils/{wrapStep.js → steps/wrapStep.js} +2 -2
  6. package/dist/cjs/editor-commands/transform-node-utils/utils.js +4 -1
  7. package/dist/cjs/editor-commands/transformNode.js +1 -1
  8. package/dist/es2019/editor-commands/transform-node-utils/TRANSFORMATION_MATRIX.js +5 -6
  9. package/dist/es2019/editor-commands/transform-node-utils/{unwrapExpandStep.js → steps/unwrapExpandStep.js} +1 -1
  10. package/dist/es2019/editor-commands/transform-node-utils/{wrapIntoListStep.js → steps/wrapIntoListStep.js} +2 -2
  11. package/dist/es2019/editor-commands/transform-node-utils/{wrapStep.js → steps/wrapStep.js} +2 -2
  12. package/dist/es2019/editor-commands/transform-node-utils/utils.js +3 -0
  13. package/dist/es2019/editor-commands/transformNode.js +1 -1
  14. package/dist/esm/editor-commands/transform-node-utils/TRANSFORMATION_MATRIX.js +5 -6
  15. package/dist/esm/editor-commands/transform-node-utils/{unwrapExpandStep.js → steps/unwrapExpandStep.js} +1 -1
  16. package/dist/esm/editor-commands/transform-node-utils/{wrapIntoListStep.js → steps/wrapIntoListStep.js} +2 -2
  17. package/dist/esm/editor-commands/transform-node-utils/{wrapStep.js → steps/wrapStep.js} +2 -2
  18. package/dist/esm/editor-commands/transform-node-utils/utils.js +3 -0
  19. package/dist/esm/editor-commands/transformNode.js +1 -1
  20. package/dist/types/blockMenuPluginType.d.ts +1 -1
  21. package/dist/types/editor-commands/selection.d.ts +1 -1
  22. package/dist/types/editor-commands/transform-node-utils/{flattenStep.d.ts → steps/flattenStep.d.ts} +1 -1
  23. package/dist/types/editor-commands/transform-node-utils/{unwrapExpandStep.d.ts → steps/unwrapExpandStep.d.ts} +1 -1
  24. package/dist/types/editor-commands/transform-node-utils/{unwrapStep.d.ts → steps/unwrapStep.d.ts} +1 -1
  25. package/dist/{types-ts4.5/editor-commands/transform-node-utils → types/editor-commands/transform-node-utils/steps}/wrapIntoListStep.d.ts +1 -1
  26. package/dist/types/editor-commands/transform-node-utils/{wrapStep.d.ts → steps/wrapStep.d.ts} +1 -1
  27. package/dist/types/editor-commands/transform-node-utils/utils.d.ts +1 -0
  28. package/dist/types/editor-commands/transformNode.d.ts +1 -1
  29. package/dist/{types-ts4.5/editor-commands/transforms → types/editor-commands}/types.d.ts +0 -3
  30. package/dist/types/index.d.ts +1 -1
  31. package/dist/types-ts4.5/blockMenuPluginType.d.ts +1 -1
  32. package/dist/types-ts4.5/editor-commands/selection.d.ts +1 -1
  33. package/dist/types-ts4.5/editor-commands/transform-node-utils/{flattenStep.d.ts → steps/flattenStep.d.ts} +1 -1
  34. package/dist/types-ts4.5/editor-commands/transform-node-utils/{unwrapExpandStep.d.ts → steps/unwrapExpandStep.d.ts} +1 -1
  35. package/dist/types-ts4.5/editor-commands/transform-node-utils/{unwrapStep.d.ts → steps/unwrapStep.d.ts} +1 -1
  36. package/dist/{types/editor-commands/transform-node-utils → types-ts4.5/editor-commands/transform-node-utils/steps}/wrapIntoListStep.d.ts +1 -1
  37. package/dist/types-ts4.5/editor-commands/transform-node-utils/{wrapStep.d.ts → steps/wrapStep.d.ts} +1 -1
  38. package/dist/types-ts4.5/editor-commands/transform-node-utils/utils.d.ts +1 -0
  39. package/dist/types-ts4.5/editor-commands/transformNode.d.ts +1 -1
  40. package/dist/{types/editor-commands/transforms → types-ts4.5/editor-commands}/types.d.ts +0 -3
  41. package/dist/types-ts4.5/index.d.ts +1 -1
  42. package/docs/0-intro.tsx +5 -5
  43. package/package.json +4 -4
  44. package/dist/cjs/editor-commands/transforms/block-transforms.js +0 -55
  45. package/dist/cjs/editor-commands/transforms/container-transforms.js +0 -448
  46. package/dist/cjs/editor-commands/transforms/inline-node-transforms.js +0 -39
  47. package/dist/cjs/editor-commands/transforms/layout/utils.js +0 -355
  48. package/dist/cjs/editor-commands/transforms/layout-transforms.js +0 -79
  49. package/dist/cjs/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.js +0 -97
  50. package/dist/cjs/editor-commands/transforms/list/transformTaskListToBlockNodes.js +0 -59
  51. package/dist/cjs/editor-commands/transforms/list/transformToTaskList.js +0 -44
  52. package/dist/cjs/editor-commands/transforms/list-transforms.js +0 -161
  53. package/dist/cjs/editor-commands/transforms/transformNodeToTargetType.js +0 -77
  54. package/dist/cjs/editor-commands/transforms/utils.js +0 -260
  55. package/dist/es2019/editor-commands/transforms/block-transforms.js +0 -58
  56. package/dist/es2019/editor-commands/transforms/container-transforms.js +0 -449
  57. package/dist/es2019/editor-commands/transforms/inline-node-transforms.js +0 -33
  58. package/dist/es2019/editor-commands/transforms/layout/utils.js +0 -334
  59. package/dist/es2019/editor-commands/transforms/layout-transforms.js +0 -75
  60. package/dist/es2019/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.js +0 -93
  61. package/dist/es2019/editor-commands/transforms/list/transformTaskListToBlockNodes.js +0 -47
  62. package/dist/es2019/editor-commands/transforms/list/transformToTaskList.js +0 -38
  63. package/dist/es2019/editor-commands/transforms/list-transforms.js +0 -168
  64. package/dist/es2019/editor-commands/transforms/transformNodeToTargetType.js +0 -76
  65. package/dist/es2019/editor-commands/transforms/utils.js +0 -248
  66. package/dist/esm/editor-commands/transforms/block-transforms.js +0 -50
  67. package/dist/esm/editor-commands/transforms/container-transforms.js +0 -441
  68. package/dist/esm/editor-commands/transforms/inline-node-transforms.js +0 -33
  69. package/dist/esm/editor-commands/transforms/layout/utils.js +0 -348
  70. package/dist/esm/editor-commands/transforms/layout-transforms.js +0 -72
  71. package/dist/esm/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.js +0 -90
  72. package/dist/esm/editor-commands/transforms/list/transformTaskListToBlockNodes.js +0 -53
  73. package/dist/esm/editor-commands/transforms/list/transformToTaskList.js +0 -37
  74. package/dist/esm/editor-commands/transforms/list-transforms.js +0 -155
  75. package/dist/esm/editor-commands/transforms/transformNodeToTargetType.js +0 -72
  76. package/dist/esm/editor-commands/transforms/utils.js +0 -253
  77. package/dist/types/editor-commands/transforms/block-transforms.d.ts +0 -5
  78. package/dist/types/editor-commands/transforms/container-transforms.d.ts +0 -20
  79. package/dist/types/editor-commands/transforms/inline-node-transforms.d.ts +0 -6
  80. package/dist/types/editor-commands/transforms/layout/utils.d.ts +0 -5
  81. package/dist/types/editor-commands/transforms/layout-transforms.d.ts +0 -6
  82. package/dist/types/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.d.ts +0 -3
  83. package/dist/types/editor-commands/transforms/list/transformTaskListToBlockNodes.d.ts +0 -3
  84. package/dist/types/editor-commands/transforms/list/transformToTaskList.d.ts +0 -10
  85. package/dist/types/editor-commands/transforms/list-transforms.d.ts +0 -23
  86. package/dist/types/editor-commands/transforms/transformNodeToTargetType.d.ts +0 -14
  87. package/dist/types/editor-commands/transforms/utils.d.ts +0 -45
  88. package/dist/types-ts4.5/editor-commands/transforms/block-transforms.d.ts +0 -5
  89. package/dist/types-ts4.5/editor-commands/transforms/container-transforms.d.ts +0 -20
  90. package/dist/types-ts4.5/editor-commands/transforms/inline-node-transforms.d.ts +0 -6
  91. package/dist/types-ts4.5/editor-commands/transforms/layout/utils.d.ts +0 -5
  92. package/dist/types-ts4.5/editor-commands/transforms/layout-transforms.d.ts +0 -6
  93. package/dist/types-ts4.5/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.d.ts +0 -3
  94. package/dist/types-ts4.5/editor-commands/transforms/list/transformTaskListToBlockNodes.d.ts +0 -3
  95. package/dist/types-ts4.5/editor-commands/transforms/list/transformToTaskList.d.ts +0 -10
  96. package/dist/types-ts4.5/editor-commands/transforms/list-transforms.d.ts +0 -23
  97. package/dist/types-ts4.5/editor-commands/transforms/transformNodeToTargetType.d.ts +0 -14
  98. package/dist/types-ts4.5/editor-commands/transforms/utils.d.ts +0 -45
  99. /package/dist/cjs/editor-commands/transform-node-utils/{flattenStep.js → steps/flattenStep.js} +0 -0
  100. /package/dist/cjs/editor-commands/transform-node-utils/{unwrapStep.js → steps/unwrapStep.js} +0 -0
  101. /package/dist/cjs/editor-commands/{transforms/types.js → types.js} +0 -0
  102. /package/dist/es2019/editor-commands/transform-node-utils/{flattenStep.js → steps/flattenStep.js} +0 -0
  103. /package/dist/es2019/editor-commands/transform-node-utils/{unwrapStep.js → steps/unwrapStep.js} +0 -0
  104. /package/dist/es2019/editor-commands/{transforms/types.js → types.js} +0 -0
  105. /package/dist/esm/editor-commands/transform-node-utils/{flattenStep.js → steps/flattenStep.js} +0 -0
  106. /package/dist/esm/editor-commands/transform-node-utils/{unwrapStep.js → steps/unwrapStep.js} +0 -0
  107. /package/dist/esm/editor-commands/{transforms/types.js → types.js} +0 -0
@@ -1,161 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.transformListToContainer = exports.transformListToBlockNodes = exports.transformListNode = exports.transformBlockToList = exports.liftListToBlockType = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _transforms = require("@atlaskit/editor-common/transforms");
10
- var _model = require("@atlaskit/editor-prosemirror/model");
11
- var _transform = require("@atlaskit/editor-prosemirror/transform");
12
- var _transformOrderedUnorderedListToBlockNodes = require("./list/transformOrderedUnorderedListToBlockNodes");
13
- var _transformTaskListToBlockNodes = require("./list/transformTaskListToBlockNodes");
14
- var _transformToTaskList = require("./list/transformToTaskList");
15
- var _utils = require("./utils");
16
- /**
17
- * Transform selection to list type
18
- */
19
- var transformBlockToList = exports.transformBlockToList = function transformBlockToList(context) {
20
- var tr = context.tr,
21
- sourceNode = context.sourceNode,
22
- targetNodeType = context.targetNodeType,
23
- targetAttrs = context.targetAttrs;
24
- var _tr$selection = tr.selection,
25
- $from = _tr$selection.$from,
26
- $to = _tr$selection.$to;
27
- var schema = tr.doc.type.schema;
28
- var range = $from.blockRange($to);
29
- if (!range) {
30
- return null;
31
- }
32
- var nodes = tr.doc.type.schema.nodes;
33
- var isTargetTask = (0, _transforms.isTaskList)(targetNodeType);
34
-
35
- // Handle task lists differently due to their structure
36
- if (isTargetTask) {
37
- return (0, _transformToTaskList.transformToTaskList)(tr, range, targetNodeType, targetAttrs, nodes);
38
- }
39
-
40
- // filter marks that are not allowed in the target node type
41
- if (sourceNode.type === schema.nodes.paragraph || sourceNode.type === schema.nodes.heading) {
42
- var allowedMarks = targetNodeType.allowedMarks(sourceNode.marks);
43
- tr.setNodeMarkup(range.start, null, null, allowedMarks);
44
- }
45
-
46
- // For headings, convert to paragraph first since headings cannot be direct children of list items
47
- if (sourceNode && sourceNode.type.name.startsWith('heading')) {
48
- tr.setBlockType(range.start, range.end, nodes.paragraph);
49
- }
50
-
51
- // Get the current range (updated if we converted from heading)
52
- var currentRange = tr.selection.$from.blockRange(tr.selection.$to) || range;
53
-
54
- // Wrap in the target list type
55
- var wrapping = (0, _transform.findWrapping)(currentRange, targetNodeType, targetAttrs);
56
- if (!wrapping) {
57
- return null;
58
- }
59
- tr.wrap(currentRange, wrapping);
60
- return tr;
61
- };
62
-
63
- /**
64
- * Transform list to block nodes
65
- */
66
- var transformListToBlockNodes = exports.transformListToBlockNodes = function transformListToBlockNodes(context) {
67
- var sourceNode = context.sourceNode;
68
- if (sourceNode.type.name === 'taskList') {
69
- return (0, _transformTaskListToBlockNodes.transformTaskListToBlockNodes)(context);
70
- } else {
71
- return (0, _transformOrderedUnorderedListToBlockNodes.transformOrderedUnorderedListToBlockNodes)(context);
72
- }
73
- };
74
-
75
- /**
76
- * Wraps bulletList, orderedList or taskList in node of container type
77
- */
78
- var transformListToContainer = exports.transformListToContainer = function transformListToContainer(context) {
79
- var tr = context.tr,
80
- sourceNode = context.sourceNode,
81
- sourcePos = context.sourcePos,
82
- targetNodeType = context.targetNodeType,
83
- targetAttrs = context.targetAttrs;
84
- if (sourcePos === null) {
85
- return null;
86
- }
87
- var schema = tr.doc.type.schema;
88
- var _schema$nodes = schema.nodes,
89
- blockquote = _schema$nodes.blockquote,
90
- taskList = _schema$nodes.taskList,
91
- taskItem = _schema$nodes.taskItem,
92
- paragraph = _schema$nodes.paragraph;
93
-
94
- // Special case: Task list -> Blockquote
95
- // Flattens the task list before wrapping by blockquote
96
- if (sourceNode.type === taskList && targetNodeType === blockquote) {
97
- var _extractParagraphsFromTaskList = function extractParagraphsFromTaskList(node) {
98
- var paragraphs = [];
99
- node.forEach(function (child) {
100
- if (child.type === taskItem) {
101
- if (child.content.size > 0) {
102
- var paragraphNode = paragraph.createChecked({}, child.content.content);
103
- paragraphs.push(paragraphNode);
104
- }
105
- } else if (child.type === taskList) {
106
- paragraphs.push.apply(paragraphs, (0, _toConsumableArray2.default)(_extractParagraphsFromTaskList(child)));
107
- }
108
- });
109
- return paragraphs;
110
- };
111
- var liftedParagraphs = _extractParagraphsFromTaskList(sourceNode);
112
- var _containerNode = targetNodeType.createAndFill(targetAttrs, _model.Fragment.from(liftedParagraphs));
113
- if (!_containerNode) {
114
- return null;
115
- }
116
- tr.replaceWith(sourcePos, sourcePos + sourceNode.nodeSize, _containerNode);
117
- return tr;
118
- }
119
-
120
- // Default case
121
- var containerNode = targetNodeType.createAndFill(targetAttrs, [sourceNode]);
122
- if (!containerNode) {
123
- return null;
124
- }
125
- tr.replaceWith(sourcePos, sourcePos + sourceNode.nodeSize, containerNode);
126
- return tr;
127
- };
128
-
129
- /**
130
- * Transform list nodes
131
- */
132
- var transformListNode = exports.transformListNode = function transformListNode(context) {
133
- var targetNodeType = context.targetNodeType;
134
- // Transform list to block type
135
- if ((0, _utils.isBlockNodeType)(targetNodeType)) {
136
- // Lift list items out of the list and convert to target block type
137
- return transformListToBlockNodes(context);
138
- }
139
-
140
- // Transform list to container type
141
- if ((0, _utils.isContainerNodeType)(targetNodeType)) {
142
- // Wrap list items into container type, where possible
143
- return transformListToContainer(context);
144
- }
145
-
146
- // Transform between list types
147
- if ((0, _utils.isListNodeType)(targetNodeType)) {
148
- return (0, _transforms.transformBetweenListTypes)(context);
149
- }
150
- return null;
151
- };
152
-
153
- /**
154
- * Lift list content and convert to block type
155
- */
156
- var liftListToBlockType = exports.liftListToBlockType = function liftListToBlockType() {
157
- // Convert to target block type directly
158
- return null;
159
- };
160
-
161
- // transformBetweenListTypes is now imported from @atlaskit/editor-common/transforms
@@ -1,77 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.transformNodeToTargetType = transformNodeToTargetType;
7
- var _blockTransforms = require("./block-transforms");
8
- var _containerTransforms = require("./container-transforms");
9
- var _layoutTransforms = require("./layout-transforms");
10
- var _listTransforms = require("./list-transforms");
11
- var _utils = require("./utils");
12
- /**
13
- * Transforms a source node to the specified target type.
14
- * Throws errors on failure which should be caught at the command level.
15
- *
16
- * @param tr - The transaction to apply transformations to
17
- * @param sourceNode - The node to transform
18
- * @param sourcePos - The position of the source node in the document
19
- * @param targetType - The target node type to transform to
20
- * @returns The modified transaction if successful, null if transformation is not possible
21
- */
22
- function transformNodeToTargetType(tr, sourceNode, sourcePos, targetType) {
23
- var nodes = tr.doc.type.schema.nodes;
24
- var targetNodeInfo = (0, _utils.getTargetNodeInfo)(targetType, nodes);
25
- if (!targetNodeInfo) {
26
- return null;
27
- }
28
- var targetNodeType = targetNodeInfo.nodeType,
29
- targetAttrs = targetNodeInfo.attrs;
30
-
31
- // Early return if trying to transform to the same type
32
- if (sourceNode.type.name === targetNodeType.name) {
33
- // For headings, also check if the level matches
34
- if (targetNodeType.name === 'heading') {
35
- var _sourceNode$attrs;
36
- var sourceLevel = (_sourceNode$attrs = sourceNode.attrs) === null || _sourceNode$attrs === void 0 ? void 0 : _sourceNode$attrs.level;
37
- var targetLevel = targetAttrs === null || targetAttrs === void 0 ? void 0 : targetAttrs.level;
38
- if (sourceLevel === targetLevel) {
39
- return tr;
40
- }
41
- } else {
42
- return tr;
43
- }
44
- }
45
-
46
- // Prepare transformation context
47
- var transformationContext = {
48
- tr: tr,
49
- sourceNode: sourceNode,
50
- sourcePos: sourcePos,
51
- targetNodeType: targetNodeType,
52
- targetAttrs: targetAttrs
53
- };
54
-
55
- // Route to appropriate transformation strategy based on source node type
56
- if ((0, _utils.isLayoutNodeType)(targetNodeType)) {
57
- return (0, _layoutTransforms.convertToLayout)(transformationContext);
58
- }
59
-
60
- // special case codeblock to listType
61
- if (sourceNode.type.name === 'codeBlock' && (0, _utils.isListNodeType)(targetNodeType)) {
62
- return (0, _containerTransforms.unwrapAndConvertToList)(transformationContext);
63
- }
64
- if ((0, _utils.isLayoutNode)(sourceNode)) {
65
- return (0, _layoutTransforms.transformLayoutNode)(transformationContext);
66
- }
67
- if ((0, _utils.isBlockNode)(sourceNode)) {
68
- return (0, _blockTransforms.transformBlockNode)(transformationContext);
69
- }
70
- if ((0, _utils.isListNode)(sourceNode)) {
71
- return (0, _listTransforms.transformListNode)(transformationContext);
72
- }
73
- if ((0, _utils.isContainerNode)(sourceNode)) {
74
- return (0, _containerTransforms.transformContainerNode)(transformationContext);
75
- }
76
- return null;
77
- }
@@ -1,260 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.isListNodeType = exports.isListNode = exports.isLayoutNodeType = exports.isLayoutNode = exports.isHeadingOrParagraphNode = exports.isContainerNodeType = exports.isContainerNode = exports.isBlockNodeType = exports.isBlockNodeForExtraction = exports.isBlockNode = exports.getTargetNodeInfo = exports.getMarksWithBreakout = exports.getConversionType = exports.getContentSupportChecker = exports.filterMarksForTargetNodeType = exports.convertNodeToInlineContent = exports.convertCodeBlockContentToParagraphs = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _utils = require("@atlaskit/editor-common/utils");
10
- var _model = require("@atlaskit/editor-prosemirror/model");
11
- var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
12
- var getTargetNodeInfo = exports.getTargetNodeInfo = function getTargetNodeInfo(targetType, nodes) {
13
- switch (targetType) {
14
- case 'heading1':
15
- return {
16
- nodeType: nodes.heading,
17
- attrs: {
18
- level: 1
19
- }
20
- };
21
- case 'heading2':
22
- return {
23
- nodeType: nodes.heading,
24
- attrs: {
25
- level: 2
26
- }
27
- };
28
- case 'heading3':
29
- return {
30
- nodeType: nodes.heading,
31
- attrs: {
32
- level: 3
33
- }
34
- };
35
- case 'heading4':
36
- return {
37
- nodeType: nodes.heading,
38
- attrs: {
39
- level: 4
40
- }
41
- };
42
- case 'heading5':
43
- return {
44
- nodeType: nodes.heading,
45
- attrs: {
46
- level: 5
47
- }
48
- };
49
- case 'heading6':
50
- return {
51
- nodeType: nodes.heading,
52
- attrs: {
53
- level: 6
54
- }
55
- };
56
- case 'paragraph':
57
- return {
58
- nodeType: nodes.paragraph
59
- };
60
- case 'blockquote':
61
- return {
62
- nodeType: nodes.blockquote
63
- };
64
- case 'expand':
65
- return {
66
- nodeType: nodes.expand
67
- };
68
- case 'panel':
69
- return {
70
- nodeType: nodes.panel,
71
- attrs: {
72
- panelType: 'info'
73
- }
74
- };
75
- case 'codeBlock':
76
- return {
77
- nodeType: nodes.codeBlock
78
- };
79
- case 'bulletList':
80
- return {
81
- nodeType: nodes.bulletList
82
- };
83
- case 'orderedList':
84
- return {
85
- nodeType: nodes.orderedList
86
- };
87
- case 'taskList':
88
- return {
89
- nodeType: nodes.taskList
90
- };
91
- case 'layoutSection':
92
- return {
93
- nodeType: nodes.layoutSection
94
- };
95
- default:
96
- return null;
97
- }
98
- };
99
-
100
- // Helper functions to categorize node types
101
- var isBlockNode = exports.isBlockNode = function isBlockNode(node) {
102
- return ['paragraph', 'heading', 'codeBlock'].includes(node.type.name);
103
- };
104
- var isHeadingOrParagraphNode = exports.isHeadingOrParagraphNode = function isHeadingOrParagraphNode(node) {
105
- return ['paragraph', 'heading'].includes(node.type.name);
106
- };
107
- var isListNode = exports.isListNode = function isListNode(node) {
108
- return ['bulletList', 'orderedList', 'taskList'].includes(node.type.name);
109
- };
110
- var isContainerNode = exports.isContainerNode = function isContainerNode(node) {
111
- return ['panel', 'expand', 'blockquote'].includes(node.type.name);
112
- };
113
- var isBlockNodeType = exports.isBlockNodeType = function isBlockNodeType(nodeType) {
114
- return ['paragraph', 'heading', 'codeBlock'].includes(nodeType.name);
115
- };
116
- var isListNodeType = exports.isListNodeType = function isListNodeType(nodeType) {
117
- return ['bulletList', 'orderedList', 'taskList'].includes(nodeType.name);
118
- };
119
- var isContainerNodeType = exports.isContainerNodeType = function isContainerNodeType(nodeType) {
120
- return ['panel', 'expand', 'blockquote'].includes(nodeType.name);
121
- };
122
-
123
- // List type utilities moved to @atlaskit/editor-common/transforms
124
-
125
- var isLayoutNodeType = exports.isLayoutNodeType = function isLayoutNodeType(nodeType) {
126
- return nodeType.name === 'layoutSection';
127
- };
128
- var isLayoutNode = exports.isLayoutNode = function isLayoutNode(node) {
129
- return node.type.name === 'layoutSection';
130
- };
131
-
132
- /**
133
- * Check if a node should be extracted as a standalone block node
134
- * rather than converted to inline content
135
- */
136
- var isBlockNodeForExtraction = exports.isBlockNodeForExtraction = function isBlockNodeForExtraction(node) {
137
- var blockNodesForExtraction = ['table', 'mediaSingle', 'extension', 'bodiedExtension', 'blockCard', 'embedCard'];
138
- return blockNodesForExtraction.includes(node.type.name);
139
- };
140
-
141
- /**
142
- * Get a function that checks if content is supported in the target container type
143
- */
144
- var getContentSupportChecker = exports.getContentSupportChecker = function getContentSupportChecker(targetNodeType) {
145
- return function (node) {
146
- // Check if the target container type can contain this node
147
- try {
148
- return targetNodeType.validContent(_model.Fragment.from(node));
149
- } catch (_unused) {
150
- return false;
151
- }
152
- };
153
- };
154
-
155
- /**
156
- * Convert a node to inline content that can be placed in a paragraph
157
- */
158
- var convertNodeToInlineContent = exports.convertNodeToInlineContent = function convertNodeToInlineContent(node, schema) {
159
- // Extract text and inline nodes from any complex node
160
- var inlineNodes = [];
161
- node.descendants(function (childNode) {
162
- if (childNode.isText) {
163
- inlineNodes.push(childNode);
164
- } else if (childNode.isInline) {
165
- inlineNodes.push(childNode);
166
- }
167
- return true; // Continue traversing
168
- });
169
-
170
- // If no inline content was found but the node has text content,
171
- // create a text node with the full text content
172
- if (inlineNodes.length === 0 && node.textContent) {
173
- return [schema.text(node.textContent)];
174
- }
175
- return inlineNodes;
176
- };
177
-
178
- /**
179
- * Filter marks from content based on the target node type
180
- * @param content The content fragment to filter
181
- * @param targetNodeType The target node type to check against
182
- * @returns A new fragment with marks filtered for the target node type
183
- */
184
- var filterMarksForTargetNodeType = exports.filterMarksForTargetNodeType = function filterMarksForTargetNodeType(content, targetNodeType) {
185
- var withValidMarks = [];
186
- content.forEach(function (node) {
187
- if (node.marks.length > 0) {
188
- var allowedMarks = targetNodeType.allowedMarks(node.marks);
189
- var updatedNode = node.mark(allowedMarks);
190
- withValidMarks.push(updatedNode);
191
- } else {
192
- withValidMarks.push(node);
193
- }
194
- });
195
- return _model.Fragment.from(withValidMarks);
196
- };
197
-
198
- /** * Convert content from a code block node into multiple paragraph nodes
199
- */
200
- var convertCodeBlockContentToParagraphs = exports.convertCodeBlockContentToParagraphs = function convertCodeBlockContentToParagraphs(codeBlockNode, schema) {
201
- var paragraphNodes = [];
202
- var codeText = codeBlockNode.textContent;
203
- var lines = codeText.split('\n');
204
- lines.forEach(function (line) {
205
- var paragraphNode = schema.nodes.paragraph.create(null, line ? schema.text(line) : null);
206
- paragraphNodes.push(paragraphNode);
207
- });
208
- return paragraphNodes;
209
- };
210
- var isBreakoutMarkSupported = function isBreakoutMarkSupported(nodeType) {
211
- return (0, _experiments.editorExperiment)('platform_synced_block', true) ? _utils.breakoutResizableNodes.includes(nodeType.name) : ['codeBlock', 'expand', 'layoutSection'].includes(nodeType.name);
212
- };
213
- var getMarksWithBreakout = exports.getMarksWithBreakout = function getMarksWithBreakout(sourceNode, targetNodeType) {
214
- var allowedMarks = targetNodeType.allowedMarks(sourceNode.marks);
215
- var sourceBreakoutMark = sourceNode.marks.find(function (mark) {
216
- return mark.type.name === 'breakout';
217
- });
218
- if (sourceBreakoutMark && isBreakoutMarkSupported(targetNodeType)) {
219
- // Check if breakout mark is already in allowedMarks to avoid duplicates
220
- var hasBreakoutMark = allowedMarks.some(function (mark) {
221
- return mark.type.name === 'breakout';
222
- });
223
- return hasBreakoutMark ? allowedMarks : [].concat((0, _toConsumableArray2.default)(allowedMarks), [sourceBreakoutMark]);
224
- }
225
- return allowedMarks;
226
- };
227
-
228
- /**
229
- * Determines the conversion type based on source and target node types
230
- * This is for analytics use - these types match existing analytics events for consistency
231
- */
232
- var getConversionType = exports.getConversionType = function getConversionType(from, to) {
233
- // Block node insertion: block-like elements inserted from empty line or wrapping text/list
234
- var blockNodes = ['panel', 'expand', 'codeBlock', 'layoutSection', 'taskList'];
235
- var textNodes = ['paragraph', 'blockquote'];
236
- var headingNodes = ['heading1', 'heading2', 'heading3', 'heading4', 'heading5', 'heading6'];
237
- var listNodes = ['bulletList', 'orderedList'];
238
-
239
- // Check if converting to block nodes from text/heading/list nodes
240
- if (blockNodes.includes(to) && (textNodes.includes(from) || headingNodes.includes(from) || listNodes.includes(from))) {
241
- return 'blockNodeInserted';
242
- }
243
-
244
- // Check if converting from paragraph/blockquote to list
245
- if (listNodes.includes(to) && textNodes.includes(from)) {
246
- return 'listInserted';
247
- }
248
-
249
- // Check if converting from list to paragraph/heading/blockquote or between list types
250
- if (listNodes.includes(from) && (listNodes.includes(to) || textNodes.includes(to))) {
251
- return 'listConverted';
252
- }
253
-
254
- // Text formatting: conversions among paragraph/headings/blockquote
255
- if ((textNodes.includes(from) || headingNodes.includes(from)) && (textNodes.includes(to) || headingNodes.includes(to))) {
256
- return 'textFormatted';
257
- }
258
- // For other conversions, we do not have a matching event category
259
- return undefined;
260
- };
@@ -1,58 +0,0 @@
1
- import { transformToContainer, unwrapAndConvertToBlockType } from './container-transforms';
2
- import { getInlineNodeTextNode } from './inline-node-transforms';
3
- import { transformBlockToList } from './list-transforms';
4
- import { isListNodeType, isContainerNodeType, isBlockNodeType } from './utils';
5
-
6
- /**
7
- * Transform block nodes (paragraph, heading, codeblock)
8
- */
9
- export const transformBlockNode = context => {
10
- const {
11
- targetNodeType
12
- } = context;
13
-
14
- // Handle transformation to list types
15
- if (isListNodeType(targetNodeType)) {
16
- return transformBlockToList(context);
17
- }
18
-
19
- // Handle transformation to container types (panel, expand, blockquote)
20
- if (isContainerNodeType(targetNodeType)) {
21
- return transformToContainer(context);
22
- }
23
-
24
- // Handle block type transformation (paragraph, heading, codeblock)
25
- if (isBlockNodeType(targetNodeType)) {
26
- return transformToBlockNode(context);
27
- }
28
- return null;
29
- };
30
- const transformToBlockNode = context => {
31
- const {
32
- tr,
33
- targetNodeType,
34
- targetAttrs,
35
- sourceNode
36
- } = context;
37
- const {
38
- selection,
39
- doc
40
- } = tr;
41
- const {
42
- $from,
43
- $to
44
- } = selection;
45
- const schema = doc.type.schema;
46
- if (targetNodeType === schema.nodes.codeBlock) {
47
- const textContent = getInlineNodeTextNode(selection.content().content, schema);
48
- const node = schema.nodes.codeBlock.createChecked(undefined, textContent);
49
- return tr.replaceRangeWith(selection.from, selection.to, node);
50
- }
51
-
52
- // code block acts like a container, we need to unwrap it
53
- if (sourceNode.type === schema.nodes.codeBlock) {
54
- return unwrapAndConvertToBlockType(context);
55
- }
56
- tr.setBlockType($from.pos, $to.pos, targetNodeType, targetAttrs);
57
- return tr;
58
- };