@atlaskit/editor-plugin-block-menu 3.0.2 → 3.1.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 (32) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/editor-commands/transforms/layout/utils.js +8 -8
  3. package/dist/cjs/editor-commands/transforms/list-transforms.js +5 -52
  4. package/dist/cjs/editor-commands/transforms/utils.js +3 -14
  5. package/dist/es2019/editor-commands/transforms/layout/utils.js +2 -2
  6. package/dist/es2019/editor-commands/transforms/list-transforms.js +3 -54
  7. package/dist/es2019/editor-commands/transforms/utils.js +2 -13
  8. package/dist/esm/editor-commands/transforms/layout/utils.js +2 -2
  9. package/dist/esm/editor-commands/transforms/list-transforms.js +3 -50
  10. package/dist/esm/editor-commands/transforms/utils.js +2 -13
  11. package/dist/types/editor-commands/transforms/container-transforms.d.ts +2 -1
  12. package/dist/types/editor-commands/transforms/layout/utils.d.ts +1 -1
  13. package/dist/types/editor-commands/transforms/layout-transforms.d.ts +1 -1
  14. package/dist/types/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.d.ts +1 -1
  15. package/dist/types/editor-commands/transforms/list/transformTaskListToBlockNodes.d.ts +1 -1
  16. package/dist/types/editor-commands/transforms/list-transforms.d.ts +2 -5
  17. package/dist/types/editor-commands/transforms/types.d.ts +1 -8
  18. package/dist/types/editor-commands/transforms/utils.d.ts +0 -4
  19. package/dist/types-ts4.5/editor-commands/transforms/container-transforms.d.ts +2 -1
  20. package/dist/types-ts4.5/editor-commands/transforms/layout/utils.d.ts +1 -1
  21. package/dist/types-ts4.5/editor-commands/transforms/layout-transforms.d.ts +1 -1
  22. package/dist/types-ts4.5/editor-commands/transforms/list/transformOrderedUnorderedListToBlockNodes.d.ts +1 -1
  23. package/dist/types-ts4.5/editor-commands/transforms/list/transformTaskListToBlockNodes.d.ts +1 -1
  24. package/dist/types-ts4.5/editor-commands/transforms/list-transforms.d.ts +2 -5
  25. package/dist/types-ts4.5/editor-commands/transforms/types.d.ts +1 -8
  26. package/dist/types-ts4.5/editor-commands/transforms/utils.d.ts +0 -4
  27. package/package.json +2 -2
  28. package/dist/cjs/editor-commands/transforms/list/transformBetweenListTypes.js +0 -138
  29. package/dist/es2019/editor-commands/transforms/list/transformBetweenListTypes.js +0 -140
  30. package/dist/esm/editor-commands/transforms/list/transformBetweenListTypes.js +0 -133
  31. package/dist/types/editor-commands/transforms/list/transformBetweenListTypes.d.ts +0 -18
  32. package/dist/types-ts4.5/editor-commands/transforms/list/transformBetweenListTypes.d.ts +0 -18
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/editor-plugin-block-menu
2
2
 
3
+ ## 3.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`cebd8f9171426`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/cebd8f9171426) -
8
+ [ux] ED-29159 Implement transform task inside lists - handle logic
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
3
14
  ## 3.0.2
4
15
 
5
16
  ### Patch Changes
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.unwrapLayoutNodesToTextNodes = exports.transformToListNode = exports.convertUnwrappedLayoutContent = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _transforms = require("@atlaskit/editor-common/transforms");
9
10
  var _model = require("@atlaskit/editor-prosemirror/model");
10
11
  var _utils = require("@atlaskit/editor-prosemirror/utils");
11
12
  var _inlineNodeTransforms = require("../inline-node-transforms");
12
- var _transformBetweenListTypes = require("../list/transformBetweenListTypes");
13
13
  var _utils2 = require("../utils");
14
14
  var unwrapLayoutNodesToTextNodes = exports.unwrapLayoutNodesToTextNodes = function unwrapLayoutNodesToTextNodes(context, finalTargetNodeType) {
15
15
  var tr = context.tr,
@@ -237,7 +237,7 @@ var transformToContainerNode = function transformToContainerNode(nodes, targetNo
237
237
  });
238
238
  };
239
239
  var transformToListNode = exports.transformToListNode = function transformToListNode(nodes, targetNodeType, schema) {
240
- var isTargetTask = (0, _utils2.isTaskList)(targetNodeType);
240
+ var isTargetTask = (0, _transforms.isTaskList)(targetNodeType);
241
241
  var listItems = [];
242
242
  var listItemType = isTargetTask ? schema.nodes.taskItem : schema.nodes.listItem;
243
243
  var isValid = (0, _utils2.getContentSupportChecker)(listItemType);
@@ -253,16 +253,16 @@ var transformToListNode = exports.transformToListNode = function transformToList
253
253
 
254
254
  // If the node is a list, we may need to transform it
255
255
  if ((0, _utils2.isListNode)(node)) {
256
- var isSourceBulletOrOrdered = (0, _utils2.isBulletOrOrderedList)(node.type);
257
- var _isTargetTask = (0, _utils2.isTaskList)(targetNodeType);
258
- var isSourceTask = (0, _utils2.isTaskList)(node.type);
259
- var isTargetBulletOrOrdered = (0, _utils2.isBulletOrOrderedList)(targetNodeType);
260
- var supportedListTypes = (0, _utils2.getSupportedListTypesSet)(schema.nodes);
256
+ var isSourceBulletOrOrdered = (0, _transforms.isBulletOrOrderedList)(node.type);
257
+ var _isTargetTask = (0, _transforms.isTaskList)(targetNodeType);
258
+ var isSourceTask = (0, _transforms.isTaskList)(node.type);
259
+ var isTargetBulletOrOrdered = (0, _transforms.isBulletOrOrderedList)(targetNodeType);
260
+ var supportedListTypes = (0, _transforms.getSupportedListTypesSet)(schema.nodes);
261
261
  if (node.type === targetNodeType) {
262
262
  // For the same list type, we can keep the structure
263
263
  newListItems = node.content.content;
264
264
  } else {
265
- var newList = (0, _transformBetweenListTypes.transformListRecursively)({
265
+ var newList = (0, _transforms.transformListRecursively)({
266
266
  isSourceBulletOrOrdered: isSourceBulletOrOrdered,
267
267
  isSourceTask: isSourceTask,
268
268
  isTargetBulletOrOrdered: isTargetBulletOrOrdered,
@@ -4,11 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.transformListToContainer = exports.transformListToBlockNodes = exports.transformListNode = exports.transformBlockToList = exports.transformBetweenListTypes = exports.liftListToBlockType = void 0;
7
+ exports.transformListToContainer = exports.transformListToBlockNodes = exports.transformListNode = exports.transformBlockToList = exports.liftListToBlockType = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _transforms = require("@atlaskit/editor-common/transforms");
9
10
  var _model = require("@atlaskit/editor-prosemirror/model");
10
11
  var _transform = require("@atlaskit/editor-prosemirror/transform");
11
- var _transformBetweenListTypes = require("./list/transformBetweenListTypes");
12
12
  var _transformOrderedUnorderedListToBlockNodes = require("./list/transformOrderedUnorderedListToBlockNodes");
13
13
  var _transformTaskListToBlockNodes = require("./list/transformTaskListToBlockNodes");
14
14
  var _transformToTaskList = require("./list/transformToTaskList");
@@ -30,7 +30,7 @@ var transformBlockToList = exports.transformBlockToList = function transformBloc
30
30
  return null;
31
31
  }
32
32
  var nodes = tr.doc.type.schema.nodes;
33
- var isTargetTask = (0, _utils.isTaskList)(targetNodeType);
33
+ var isTargetTask = (0, _transforms.isTaskList)(targetNodeType);
34
34
 
35
35
  // Handle task lists differently due to their structure
36
36
  if (isTargetTask) {
@@ -145,7 +145,7 @@ var transformListNode = exports.transformListNode = function transformListNode(c
145
145
 
146
146
  // Transform between list types
147
147
  if ((0, _utils.isListNodeType)(targetNodeType)) {
148
- return transformBetweenListTypes(context);
148
+ return (0, _transforms.transformBetweenListTypes)(context);
149
149
  }
150
150
  return null;
151
151
  };
@@ -158,51 +158,4 @@ var liftListToBlockType = exports.liftListToBlockType = function liftListToBlock
158
158
  return null;
159
159
  };
160
160
 
161
- /**
162
- * Transform between different list types
163
- */
164
- var transformBetweenListTypes = exports.transformBetweenListTypes = function transformBetweenListTypes(context) {
165
- var tr = context.tr,
166
- sourceNode = context.sourceNode,
167
- sourcePos = context.sourcePos,
168
- targetNodeType = context.targetNodeType;
169
- var nodes = tr.doc.type.schema.nodes;
170
- var sourceListType = sourceNode.type;
171
- var isSourceBulletOrOrdered = (0, _utils.isBulletOrOrderedList)(sourceListType);
172
- var isTargetTask = (0, _utils.isTaskList)(targetNodeType);
173
- var isSourceTask = (0, _utils.isTaskList)(sourceListType);
174
- var isTargetBulletOrOrdered = (0, _utils.isBulletOrOrderedList)(targetNodeType);
175
-
176
- // Check if we need structure transformation
177
- var needsStructureTransform = isSourceBulletOrOrdered && isTargetTask || isSourceTask && isTargetBulletOrOrdered;
178
- try {
179
- if (!needsStructureTransform) {
180
- // Simple type change for same structure lists (bullet <-> ordered)
181
- // Apply to the main list
182
- tr.setNodeMarkup(sourcePos, targetNodeType);
183
-
184
- // Apply to nested lists
185
- var listStart = sourcePos;
186
- var listEnd = sourcePos + sourceNode.nodeSize;
187
- var supportedListTypesSet = (0, _utils.getSupportedListTypesSet)(nodes);
188
- tr.doc.nodesBetween(listStart, listEnd, function (node, pos, parent) {
189
- // Only process nested lists (not the root list we already handled)
190
- if (supportedListTypesSet.has(node.type) && pos !== sourcePos) {
191
- var isNestedList = parent && (supportedListTypesSet.has(parent.type) || parent.type === nodes.listItem);
192
- if (isNestedList) {
193
- var shouldTransformNode = node.type === sourceListType || (0, _utils.isBulletOrOrderedList)(node.type) && isTargetBulletOrOrdered;
194
- if (shouldTransformNode) {
195
- tr.setNodeMarkup(pos, targetNodeType);
196
- }
197
- }
198
- }
199
- return true; // Continue traversing
200
- });
201
- return tr;
202
- } else {
203
- return (0, _transformBetweenListTypes.transformListStructure)(context);
204
- }
205
- } catch (_unused) {
206
- return null;
207
- }
208
- };
161
+ // transformBetweenListTypes is now imported from @atlaskit/editor-common/transforms
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isTaskList = exports.isListNodeType = exports.isListNode = exports.isLayoutNodeType = exports.isLayoutNode = exports.isHeadingOrParagraphNode = exports.isContainerNodeType = exports.isContainerNode = exports.isBulletOrOrderedList = exports.isBlockNodeType = exports.isBlockNodeForExtraction = exports.isBlockNode = exports.getTargetNodeInfo = exports.getSupportedListTypesSet = exports.getSupportedListTypes = exports.getContentSupportChecker = exports.filterMarksForTargetNodeType = exports.convertNodeToInlineContent = exports.convertCodeBlockContentToParagraphs = void 0;
6
+ exports.isListNodeType = exports.isListNode = exports.isLayoutNodeType = exports.isLayoutNode = exports.isHeadingOrParagraphNode = exports.isContainerNodeType = exports.isContainerNode = exports.isBlockNodeType = exports.isBlockNodeForExtraction = exports.isBlockNode = exports.getTargetNodeInfo = exports.getContentSupportChecker = exports.filterMarksForTargetNodeType = exports.convertNodeToInlineContent = exports.convertCodeBlockContentToParagraphs = void 0;
7
7
  var _model = require("@atlaskit/editor-prosemirror/model");
8
8
  var getTargetNodeInfo = exports.getTargetNodeInfo = function getTargetNodeInfo(targetType, nodes) {
9
9
  switch (targetType) {
@@ -116,19 +116,8 @@ var isContainerNodeType = exports.isContainerNodeType = function isContainerNode
116
116
  return ['panel', 'expand', 'blockquote'].includes(nodeType.name);
117
117
  };
118
118
 
119
- // List type utilities
120
- var isBulletOrOrderedList = exports.isBulletOrOrderedList = function isBulletOrOrderedList(nodeType) {
121
- return nodeType.name === 'bulletList' || nodeType.name === 'orderedList';
122
- };
123
- var isTaskList = exports.isTaskList = function isTaskList(nodeType) {
124
- return nodeType.name === 'taskList';
125
- };
126
- var getSupportedListTypes = exports.getSupportedListTypes = function getSupportedListTypes(nodes) {
127
- return [nodes.bulletList, nodes.orderedList, nodes.taskList].filter(Boolean);
128
- };
129
- var getSupportedListTypesSet = exports.getSupportedListTypesSet = function getSupportedListTypesSet(nodes) {
130
- return new Set(getSupportedListTypes(nodes));
131
- };
119
+ // List type utilities moved to @atlaskit/editor-common/transforms
120
+
132
121
  var isLayoutNodeType = exports.isLayoutNodeType = function isLayoutNodeType(nodeType) {
133
122
  return nodeType.name === 'layoutSection';
134
123
  };
@@ -1,8 +1,8 @@
1
+ import { transformListRecursively, isBulletOrOrderedList, isTaskList, getSupportedListTypesSet } from '@atlaskit/editor-common/transforms';
1
2
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
2
3
  import { findChildrenByType } from '@atlaskit/editor-prosemirror/utils';
3
4
  import { getInlineNodeTextContent } from '../inline-node-transforms';
4
- import { transformListRecursively } from '../list/transformBetweenListTypes';
5
- import { getContentSupportChecker, getSupportedListTypesSet, isBlockNode, isBlockNodeForExtraction, isBlockNodeType, isBulletOrOrderedList, isContainerNode, isContainerNodeType, isHeadingOrParagraphNode, isListNode, isListNodeType, isTaskList } from '../utils';
5
+ import { getContentSupportChecker, isBlockNode, isBlockNodeForExtraction, isBlockNodeType, isContainerNode, isContainerNodeType, isHeadingOrParagraphNode, isListNode, isListNodeType } from '../utils';
6
6
  export const unwrapLayoutNodesToTextNodes = (context, finalTargetNodeType) => {
7
7
  const {
8
8
  tr,
@@ -1,10 +1,10 @@
1
+ import { transformBetweenListTypes, isTaskList } from '@atlaskit/editor-common/transforms';
1
2
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
2
3
  import { findWrapping } from '@atlaskit/editor-prosemirror/transform';
3
- import { transformListStructure } from './list/transformBetweenListTypes';
4
4
  import { transformOrderedUnorderedListToBlockNodes } from './list/transformOrderedUnorderedListToBlockNodes';
5
5
  import { transformTaskListToBlockNodes } from './list/transformTaskListToBlockNodes';
6
6
  import { transformToTaskList } from './list/transformToTaskList';
7
- import { getSupportedListTypesSet, isBulletOrOrderedList, isBlockNodeType, isContainerNodeType, isListNodeType, isTaskList } from './utils';
7
+ import { isBlockNodeType, isContainerNodeType, isListNodeType } from './utils';
8
8
 
9
9
  /**
10
10
  * Transform selection to list type
@@ -165,55 +165,4 @@ export const liftListToBlockType = () => {
165
165
  return null;
166
166
  };
167
167
 
168
- /**
169
- * Transform between different list types
170
- */
171
- export const transformBetweenListTypes = context => {
172
- const {
173
- tr,
174
- sourceNode,
175
- sourcePos,
176
- targetNodeType
177
- } = context;
178
- const {
179
- nodes
180
- } = tr.doc.type.schema;
181
- const sourceListType = sourceNode.type;
182
- const isSourceBulletOrOrdered = isBulletOrOrderedList(sourceListType);
183
- const isTargetTask = isTaskList(targetNodeType);
184
- const isSourceTask = isTaskList(sourceListType);
185
- const isTargetBulletOrOrdered = isBulletOrOrderedList(targetNodeType);
186
-
187
- // Check if we need structure transformation
188
- const needsStructureTransform = isSourceBulletOrOrdered && isTargetTask || isSourceTask && isTargetBulletOrOrdered;
189
- try {
190
- if (!needsStructureTransform) {
191
- // Simple type change for same structure lists (bullet <-> ordered)
192
- // Apply to the main list
193
- tr.setNodeMarkup(sourcePos, targetNodeType);
194
-
195
- // Apply to nested lists
196
- const listStart = sourcePos;
197
- const listEnd = sourcePos + sourceNode.nodeSize;
198
- const supportedListTypesSet = getSupportedListTypesSet(nodes);
199
- tr.doc.nodesBetween(listStart, listEnd, (node, pos, parent) => {
200
- // Only process nested lists (not the root list we already handled)
201
- if (supportedListTypesSet.has(node.type) && pos !== sourcePos) {
202
- const isNestedList = parent && (supportedListTypesSet.has(parent.type) || parent.type === nodes.listItem);
203
- if (isNestedList) {
204
- const shouldTransformNode = node.type === sourceListType || isBulletOrOrderedList(node.type) && isTargetBulletOrOrdered;
205
- if (shouldTransformNode) {
206
- tr.setNodeMarkup(pos, targetNodeType);
207
- }
208
- }
209
- }
210
- return true; // Continue traversing
211
- });
212
- return tr;
213
- } else {
214
- return transformListStructure(context);
215
- }
216
- } catch {
217
- return null;
218
- }
219
- };
168
+ // transformBetweenListTypes is now imported from @atlaskit/editor-common/transforms
@@ -110,19 +110,8 @@ export const isContainerNodeType = nodeType => {
110
110
  return ['panel', 'expand', 'blockquote'].includes(nodeType.name);
111
111
  };
112
112
 
113
- // List type utilities
114
- export const isBulletOrOrderedList = nodeType => {
115
- return nodeType.name === 'bulletList' || nodeType.name === 'orderedList';
116
- };
117
- export const isTaskList = nodeType => {
118
- return nodeType.name === 'taskList';
119
- };
120
- export const getSupportedListTypes = nodes => {
121
- return [nodes.bulletList, nodes.orderedList, nodes.taskList].filter(Boolean);
122
- };
123
- export const getSupportedListTypesSet = nodes => {
124
- return new Set(getSupportedListTypes(nodes));
125
- };
113
+ // List type utilities moved to @atlaskit/editor-common/transforms
114
+
126
115
  export const isLayoutNodeType = nodeType => {
127
116
  return nodeType.name === 'layoutSection';
128
117
  };
@@ -1,9 +1,9 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { transformListRecursively, isBulletOrOrderedList, isTaskList, getSupportedListTypesSet } from '@atlaskit/editor-common/transforms';
2
3
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
3
4
  import { findChildrenByType } from '@atlaskit/editor-prosemirror/utils';
4
5
  import { getInlineNodeTextContent } from '../inline-node-transforms';
5
- import { transformListRecursively } from '../list/transformBetweenListTypes';
6
- import { getContentSupportChecker, getSupportedListTypesSet, isBlockNode, isBlockNodeForExtraction, isBlockNodeType, isBulletOrOrderedList, isContainerNode, isContainerNodeType, isHeadingOrParagraphNode, isListNode, isListNodeType, isTaskList } from '../utils';
6
+ import { getContentSupportChecker, isBlockNode, isBlockNodeForExtraction, isBlockNodeType, isContainerNode, isContainerNodeType, isHeadingOrParagraphNode, isListNode, isListNodeType } from '../utils';
7
7
  export var unwrapLayoutNodesToTextNodes = function unwrapLayoutNodesToTextNodes(context, finalTargetNodeType) {
8
8
  var tr = context.tr,
9
9
  sourceNode = context.sourceNode,
@@ -1,11 +1,11 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { transformBetweenListTypes, isTaskList } from '@atlaskit/editor-common/transforms';
2
3
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
3
4
  import { findWrapping } from '@atlaskit/editor-prosemirror/transform';
4
- import { transformListStructure } from './list/transformBetweenListTypes';
5
5
  import { transformOrderedUnorderedListToBlockNodes } from './list/transformOrderedUnorderedListToBlockNodes';
6
6
  import { transformTaskListToBlockNodes } from './list/transformTaskListToBlockNodes';
7
7
  import { transformToTaskList } from './list/transformToTaskList';
8
- import { getSupportedListTypesSet, isBulletOrOrderedList, isBlockNodeType, isContainerNodeType, isListNodeType, isTaskList } from './utils';
8
+ import { isBlockNodeType, isContainerNodeType, isListNodeType } from './utils';
9
9
 
10
10
  /**
11
11
  * Transform selection to list type
@@ -152,51 +152,4 @@ export var liftListToBlockType = function liftListToBlockType() {
152
152
  return null;
153
153
  };
154
154
 
155
- /**
156
- * Transform between different list types
157
- */
158
- export var transformBetweenListTypes = function transformBetweenListTypes(context) {
159
- var tr = context.tr,
160
- sourceNode = context.sourceNode,
161
- sourcePos = context.sourcePos,
162
- targetNodeType = context.targetNodeType;
163
- var nodes = tr.doc.type.schema.nodes;
164
- var sourceListType = sourceNode.type;
165
- var isSourceBulletOrOrdered = isBulletOrOrderedList(sourceListType);
166
- var isTargetTask = isTaskList(targetNodeType);
167
- var isSourceTask = isTaskList(sourceListType);
168
- var isTargetBulletOrOrdered = isBulletOrOrderedList(targetNodeType);
169
-
170
- // Check if we need structure transformation
171
- var needsStructureTransform = isSourceBulletOrOrdered && isTargetTask || isSourceTask && isTargetBulletOrOrdered;
172
- try {
173
- if (!needsStructureTransform) {
174
- // Simple type change for same structure lists (bullet <-> ordered)
175
- // Apply to the main list
176
- tr.setNodeMarkup(sourcePos, targetNodeType);
177
-
178
- // Apply to nested lists
179
- var listStart = sourcePos;
180
- var listEnd = sourcePos + sourceNode.nodeSize;
181
- var supportedListTypesSet = getSupportedListTypesSet(nodes);
182
- tr.doc.nodesBetween(listStart, listEnd, function (node, pos, parent) {
183
- // Only process nested lists (not the root list we already handled)
184
- if (supportedListTypesSet.has(node.type) && pos !== sourcePos) {
185
- var isNestedList = parent && (supportedListTypesSet.has(parent.type) || parent.type === nodes.listItem);
186
- if (isNestedList) {
187
- var shouldTransformNode = node.type === sourceListType || isBulletOrOrderedList(node.type) && isTargetBulletOrOrdered;
188
- if (shouldTransformNode) {
189
- tr.setNodeMarkup(pos, targetNodeType);
190
- }
191
- }
192
- }
193
- return true; // Continue traversing
194
- });
195
- return tr;
196
- } else {
197
- return transformListStructure(context);
198
- }
199
- } catch (_unused) {
200
- return null;
201
- }
202
- };
155
+ // transformBetweenListTypes is now imported from @atlaskit/editor-common/transforms
@@ -110,19 +110,8 @@ export var isContainerNodeType = function isContainerNodeType(nodeType) {
110
110
  return ['panel', 'expand', 'blockquote'].includes(nodeType.name);
111
111
  };
112
112
 
113
- // List type utilities
114
- export var isBulletOrOrderedList = function isBulletOrOrderedList(nodeType) {
115
- return nodeType.name === 'bulletList' || nodeType.name === 'orderedList';
116
- };
117
- export var isTaskList = function isTaskList(nodeType) {
118
- return nodeType.name === 'taskList';
119
- };
120
- export var getSupportedListTypes = function getSupportedListTypes(nodes) {
121
- return [nodes.bulletList, nodes.orderedList, nodes.taskList].filter(Boolean);
122
- };
123
- export var getSupportedListTypesSet = function getSupportedListTypesSet(nodes) {
124
- return new Set(getSupportedListTypes(nodes));
125
- };
113
+ // List type utilities moved to @atlaskit/editor-common/transforms
114
+
126
115
  export var isLayoutNodeType = function isLayoutNodeType(nodeType) {
127
116
  return nodeType.name === 'layoutSection';
128
117
  };
@@ -1,4 +1,5 @@
1
- import type { TransformContext, TransformFunction } from './types';
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
2
+ import type { TransformFunction } from './types';
2
3
  /**
3
4
  * Transform selection to container type
4
5
  */
@@ -1,5 +1,5 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { NodeType, Node as PMNode, Schema } from '@atlaskit/editor-prosemirror/model';
2
- import type { TransformContext } from '../types';
3
3
  export declare const unwrapLayoutNodesToTextNodes: (context: TransformContext, finalTargetNodeType: NodeType) => PMNode[];
4
4
  export declare const transformToListNode: (nodes: PMNode[], targetNodeType: NodeType, schema: Schema) => PMNode[];
5
5
  export declare const convertUnwrappedLayoutContent: (nodes: PMNode[], targetNodeType: NodeType, schema: Schema) => PMNode[];
@@ -1,3 +1,3 @@
1
- import type { TransformContext } from './types';
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
2
2
  export declare const convertToLayout: (context: TransformContext) => import("prosemirror-state").Transaction;
3
3
  export declare const transformLayoutNode: (context: TransformContext) => import("prosemirror-state").Transaction;
@@ -1,3 +1,3 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
- import type { TransformContext } from '.././types';
3
3
  export declare const transformOrderedUnorderedListToBlockNodes: (context: TransformContext) => Transaction | null;
@@ -1,3 +1,3 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
- import type { TransformContext } from '.././types';
3
3
  export declare const transformTaskListToBlockNodes: (context: TransformContext) => Transaction | null;
@@ -1,5 +1,6 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
- import type { TransformContext, TransformFunction } from './types';
3
+ import type { TransformFunction } from './types';
3
4
  /**
4
5
  * Transform selection to list type
5
6
  */
@@ -20,7 +21,3 @@ export declare const transformListNode: TransformFunction;
20
21
  * Lift list content and convert to block type
21
22
  */
22
23
  export declare const liftListToBlockType: () => null;
23
- /**
24
- * Transform between different list types
25
- */
26
- export declare const transformBetweenListTypes: (context: TransformContext) => Transaction | null;
@@ -1,11 +1,4 @@
1
- import type { Node as PMNode, NodeType } from '@atlaskit/editor-prosemirror/model';
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
2
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
3
3
  export type FormatNodeTargetType = 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'heading5' | 'heading6' | 'paragraph' | 'blockquote' | 'expand' | 'layoutSection' | 'panel' | 'codeBlock' | 'bulletList' | 'orderedList' | 'taskList';
4
- export interface TransformContext {
5
- sourceNode: PMNode;
6
- sourcePos: number;
7
- targetAttrs?: Record<string, unknown>;
8
- targetNodeType: NodeType;
9
- tr: Transaction;
10
- }
11
4
  export type TransformFunction = (context: TransformContext) => Transaction | null;
@@ -12,10 +12,6 @@ export declare const isContainerNode: (node: PMNode) => boolean;
12
12
  export declare const isBlockNodeType: (nodeType: NodeType) => boolean;
13
13
  export declare const isListNodeType: (nodeType: NodeType) => boolean;
14
14
  export declare const isContainerNodeType: (nodeType: NodeType) => boolean;
15
- export declare const isBulletOrOrderedList: (nodeType: NodeType) => boolean;
16
- export declare const isTaskList: (nodeType: NodeType) => boolean;
17
- export declare const getSupportedListTypes: (nodes: Record<string, NodeType>) => NodeType[];
18
- export declare const getSupportedListTypesSet: (nodes: Record<string, NodeType>) => Set<NodeType>;
19
15
  export declare const isLayoutNodeType: (nodeType: NodeType) => boolean;
20
16
  export declare const isLayoutNode: (node: PMNode) => boolean;
21
17
  /**
@@ -1,4 +1,5 @@
1
- import type { TransformContext, TransformFunction } from './types';
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
2
+ import type { TransformFunction } from './types';
2
3
  /**
3
4
  * Transform selection to container type
4
5
  */
@@ -1,5 +1,5 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { NodeType, Node as PMNode, Schema } from '@atlaskit/editor-prosemirror/model';
2
- import type { TransformContext } from '../types';
3
3
  export declare const unwrapLayoutNodesToTextNodes: (context: TransformContext, finalTargetNodeType: NodeType) => PMNode[];
4
4
  export declare const transformToListNode: (nodes: PMNode[], targetNodeType: NodeType, schema: Schema) => PMNode[];
5
5
  export declare const convertUnwrappedLayoutContent: (nodes: PMNode[], targetNodeType: NodeType, schema: Schema) => PMNode[];
@@ -1,3 +1,3 @@
1
- import type { TransformContext } from './types';
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
2
2
  export declare const convertToLayout: (context: TransformContext) => import("prosemirror-state").Transaction;
3
3
  export declare const transformLayoutNode: (context: TransformContext) => import("prosemirror-state").Transaction;
@@ -1,3 +1,3 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
- import type { TransformContext } from '.././types';
3
3
  export declare const transformOrderedUnorderedListToBlockNodes: (context: TransformContext) => Transaction | null;
@@ -1,3 +1,3 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
- import type { TransformContext } from '.././types';
3
3
  export declare const transformTaskListToBlockNodes: (context: TransformContext) => Transaction | null;
@@ -1,5 +1,6 @@
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
1
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
2
- import type { TransformContext, TransformFunction } from './types';
3
+ import type { TransformFunction } from './types';
3
4
  /**
4
5
  * Transform selection to list type
5
6
  */
@@ -20,7 +21,3 @@ export declare const transformListNode: TransformFunction;
20
21
  * Lift list content and convert to block type
21
22
  */
22
23
  export declare const liftListToBlockType: () => null;
23
- /**
24
- * Transform between different list types
25
- */
26
- export declare const transformBetweenListTypes: (context: TransformContext) => Transaction | null;
@@ -1,11 +1,4 @@
1
- import type { Node as PMNode, NodeType } from '@atlaskit/editor-prosemirror/model';
1
+ import type { TransformContext } from '@atlaskit/editor-common/transforms';
2
2
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
3
3
  export type FormatNodeTargetType = 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'heading5' | 'heading6' | 'paragraph' | 'blockquote' | 'expand' | 'layoutSection' | 'panel' | 'codeBlock' | 'bulletList' | 'orderedList' | 'taskList';
4
- export interface TransformContext {
5
- sourceNode: PMNode;
6
- sourcePos: number;
7
- targetAttrs?: Record<string, unknown>;
8
- targetNodeType: NodeType;
9
- tr: Transaction;
10
- }
11
4
  export type TransformFunction = (context: TransformContext) => Transaction | null;
@@ -12,10 +12,6 @@ export declare const isContainerNode: (node: PMNode) => boolean;
12
12
  export declare const isBlockNodeType: (nodeType: NodeType) => boolean;
13
13
  export declare const isListNodeType: (nodeType: NodeType) => boolean;
14
14
  export declare const isContainerNodeType: (nodeType: NodeType) => boolean;
15
- export declare const isBulletOrOrderedList: (nodeType: NodeType) => boolean;
16
- export declare const isTaskList: (nodeType: NodeType) => boolean;
17
- export declare const getSupportedListTypes: (nodes: Record<string, NodeType>) => NodeType[];
18
- export declare const getSupportedListTypesSet: (nodes: Record<string, NodeType>) => Set<NodeType>;
19
15
  export declare const isLayoutNodeType: (nodeType: NodeType) => boolean;
20
16
  export declare const isLayoutNode: (node: PMNode) => boolean;
21
17
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-block-menu",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "BlockMenu plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -46,7 +46,7 @@
46
46
  "@babel/runtime": "^7.0.0"
47
47
  },
48
48
  "peerDependencies": {
49
- "@atlaskit/editor-common": "^109.3.0",
49
+ "@atlaskit/editor-common": "^109.4.0",
50
50
  "react": "^18.2.0",
51
51
  "react-intl-next": "npm:react-intl@^5.18.1"
52
52
  },
@@ -1,138 +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.transformListStructure = exports.transformListRecursively = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
- var _utils = require("../utils");
11
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
- /**
14
- * Convert a block node to inline content suitable for task items
15
- */
16
- var convertBlockToInlineContent = function convertBlockToInlineContent(node, schema) {
17
- var paragraph = schema.nodes.paragraph;
18
- if (node.type === paragraph) {
19
- return (0, _toConsumableArray2.default)(node.content.content);
20
- }
21
- if (node.isBlock) {
22
- var textContent = node.textContent;
23
- return textContent ? [schema.text(textContent)] : [];
24
- }
25
- return [node];
26
- };
27
- var _transformListRecursively = exports.transformListRecursively = function transformListRecursively(props) {
28
- var transformedItems = [];
29
- var listNode = props.listNode,
30
- isSourceBulletOrOrdered = props.isSourceBulletOrOrdered,
31
- isTargetBulletOrOrdered = props.isTargetBulletOrOrdered,
32
- isSourceTask = props.isSourceTask,
33
- isTargetTask = props.isTargetTask,
34
- supportedListTypes = props.supportedListTypes,
35
- schema = props.schema,
36
- targetNodeType = props.targetNodeType;
37
- var _schema$nodes = schema.nodes,
38
- taskList = _schema$nodes.taskList,
39
- listItem = _schema$nodes.listItem,
40
- taskItem = _schema$nodes.taskItem,
41
- paragraph = _schema$nodes.paragraph;
42
- listNode.forEach(function (child) {
43
- if (isSourceBulletOrOrdered && isTargetTask) {
44
- // Convert bullet/ordered => task
45
- if (child.type === listItem) {
46
- var inlineContent = [];
47
- var nestedTaskLists = [];
48
- child.forEach(function (grandChild) {
49
- if (supportedListTypes.has(grandChild.type) && grandChild.type !== taskList) {
50
- nestedTaskLists.push(_transformListRecursively(_objectSpread(_objectSpread({}, props), {}, {
51
- listNode: grandChild
52
- })));
53
- } else {
54
- inlineContent.push.apply(inlineContent, (0, _toConsumableArray2.default)(convertBlockToInlineContent(grandChild, schema)));
55
- }
56
- });
57
- transformedItems.push(taskItem.create(null, inlineContent.length > 0 ? inlineContent : null));
58
- transformedItems.push.apply(transformedItems, nestedTaskLists);
59
- }
60
- } else if (isSourceTask && isTargetBulletOrOrdered) {
61
- // Convert task => bullet/ordered
62
- if (child.type === taskItem) {
63
- var _inlineContent = (0, _toConsumableArray2.default)(child.content.content);
64
- var paragraphNode = paragraph.create(null, _inlineContent.length > 0 ? _inlineContent : null);
65
- transformedItems.push(listItem.create(null, [paragraphNode]));
66
- } else if (child.type === taskList) {
67
- var transformedNestedList = _transformListRecursively(_objectSpread(_objectSpread({}, props), {}, {
68
- listNode: child
69
- }));
70
- var lastItem = transformedItems[transformedItems.length - 1];
71
- if ((lastItem === null || lastItem === void 0 ? void 0 : lastItem.type) === listItem) {
72
- // Attach nested list to previous item
73
- var updatedContent = [].concat((0, _toConsumableArray2.default)(lastItem.content.content), [transformedNestedList]);
74
- transformedItems[transformedItems.length - 1] = listItem.create(lastItem.attrs, updatedContent);
75
- } else {
76
- // No previous item, flatten nested items
77
- transformedItems.push.apply(transformedItems, (0, _toConsumableArray2.default)(transformedNestedList.content.content));
78
- }
79
- }
80
- } else if (isSourceBulletOrOrdered && isTargetBulletOrOrdered) {
81
- if (child.type === listItem) {
82
- var convertedNestedLists = [];
83
- child.forEach(function (grandChild) {
84
- if (supportedListTypes.has(grandChild.type) && grandChild.type !== targetNodeType) {
85
- var convertedNode = _transformListRecursively(_objectSpread(_objectSpread({}, props), {}, {
86
- listNode: grandChild
87
- }));
88
- convertedNestedLists.push(convertedNode);
89
- } else {
90
- convertedNestedLists.push(grandChild);
91
- }
92
- });
93
- transformedItems.push(listItem.create(null, convertedNestedLists));
94
- }
95
- }
96
- });
97
- return targetNodeType.create(null, transformedItems);
98
- };
99
-
100
- /**
101
- * Transform list structure between different list types
102
- */
103
- var transformListStructure = exports.transformListStructure = function transformListStructure(context) {
104
- var tr = context.tr,
105
- sourceNode = context.sourceNode,
106
- sourcePos = context.sourcePos,
107
- targetNodeType = context.targetNodeType;
108
- var nodes = tr.doc.type.schema.nodes;
109
- try {
110
- var listNode = {
111
- node: sourceNode,
112
- pos: sourcePos
113
- };
114
- var sourceList = listNode.node,
115
- listPos = listNode.pos;
116
- // const { taskList, listItem, taskItem, paragraph } = nodes;
117
-
118
- var isSourceBulletOrOrdered = (0, _utils.isBulletOrOrderedList)(sourceList.type);
119
- var isTargetTask = (0, _utils.isTaskList)(targetNodeType);
120
- var isSourceTask = (0, _utils.isTaskList)(sourceList.type);
121
- var isTargetBulletOrOrdered = (0, _utils.isBulletOrOrderedList)(targetNodeType);
122
- var supportedListTypes = (0, _utils.getSupportedListTypesSet)(nodes);
123
- var newList = _transformListRecursively({
124
- isSourceBulletOrOrdered: isSourceBulletOrOrdered,
125
- isSourceTask: isSourceTask,
126
- isTargetBulletOrOrdered: isTargetBulletOrOrdered,
127
- isTargetTask: isTargetTask,
128
- listNode: sourceList,
129
- schema: tr.doc.type.schema,
130
- supportedListTypes: supportedListTypes,
131
- targetNodeType: targetNodeType
132
- });
133
- tr.replaceWith(listPos, listPos + sourceList.nodeSize, newList);
134
- return tr;
135
- } catch (_unused) {
136
- return tr;
137
- }
138
- };
@@ -1,140 +0,0 @@
1
- import { getSupportedListTypesSet, isBulletOrOrderedList, isTaskList } from '../utils';
2
-
3
- /**
4
- * Convert a block node to inline content suitable for task items
5
- */
6
- const convertBlockToInlineContent = (node, schema) => {
7
- const {
8
- paragraph
9
- } = schema.nodes;
10
- if (node.type === paragraph) {
11
- return [...node.content.content];
12
- }
13
- if (node.isBlock) {
14
- const textContent = node.textContent;
15
- return textContent ? [schema.text(textContent)] : [];
16
- }
17
- return [node];
18
- };
19
- export const transformListRecursively = props => {
20
- const transformedItems = [];
21
- const {
22
- listNode,
23
- isSourceBulletOrOrdered,
24
- isTargetBulletOrOrdered,
25
- isSourceTask,
26
- isTargetTask,
27
- supportedListTypes,
28
- schema,
29
- targetNodeType
30
- } = props;
31
- const {
32
- taskList,
33
- listItem,
34
- taskItem,
35
- paragraph
36
- } = schema.nodes;
37
- listNode.forEach(child => {
38
- if (isSourceBulletOrOrdered && isTargetTask) {
39
- // Convert bullet/ordered => task
40
- if (child.type === listItem) {
41
- const inlineContent = [];
42
- const nestedTaskLists = [];
43
- child.forEach(grandChild => {
44
- if (supportedListTypes.has(grandChild.type) && grandChild.type !== taskList) {
45
- nestedTaskLists.push(transformListRecursively({
46
- ...props,
47
- listNode: grandChild
48
- }));
49
- } else {
50
- inlineContent.push(...convertBlockToInlineContent(grandChild, schema));
51
- }
52
- });
53
- transformedItems.push(taskItem.create(null, inlineContent.length > 0 ? inlineContent : null));
54
- transformedItems.push(...nestedTaskLists);
55
- }
56
- } else if (isSourceTask && isTargetBulletOrOrdered) {
57
- // Convert task => bullet/ordered
58
- if (child.type === taskItem) {
59
- const inlineContent = [...child.content.content];
60
- const paragraphNode = paragraph.create(null, inlineContent.length > 0 ? inlineContent : null);
61
- transformedItems.push(listItem.create(null, [paragraphNode]));
62
- } else if (child.type === taskList) {
63
- const transformedNestedList = transformListRecursively({
64
- ...props,
65
- listNode: child
66
- });
67
- const lastItem = transformedItems[transformedItems.length - 1];
68
- if ((lastItem === null || lastItem === void 0 ? void 0 : lastItem.type) === listItem) {
69
- // Attach nested list to previous item
70
- const updatedContent = [...lastItem.content.content, transformedNestedList];
71
- transformedItems[transformedItems.length - 1] = listItem.create(lastItem.attrs, updatedContent);
72
- } else {
73
- // No previous item, flatten nested items
74
- transformedItems.push(...transformedNestedList.content.content);
75
- }
76
- }
77
- } else if (isSourceBulletOrOrdered && isTargetBulletOrOrdered) {
78
- if (child.type === listItem) {
79
- const convertedNestedLists = [];
80
- child.forEach(grandChild => {
81
- if (supportedListTypes.has(grandChild.type) && grandChild.type !== targetNodeType) {
82
- const convertedNode = transformListRecursively({
83
- ...props,
84
- listNode: grandChild
85
- });
86
- convertedNestedLists.push(convertedNode);
87
- } else {
88
- convertedNestedLists.push(grandChild);
89
- }
90
- });
91
- transformedItems.push(listItem.create(null, convertedNestedLists));
92
- }
93
- }
94
- });
95
- return targetNodeType.create(null, transformedItems);
96
- };
97
-
98
- /**
99
- * Transform list structure between different list types
100
- */
101
- export const transformListStructure = context => {
102
- const {
103
- tr,
104
- sourceNode,
105
- sourcePos,
106
- targetNodeType
107
- } = context;
108
- const nodes = tr.doc.type.schema.nodes;
109
- try {
110
- const listNode = {
111
- node: sourceNode,
112
- pos: sourcePos
113
- };
114
- const {
115
- node: sourceList,
116
- pos: listPos
117
- } = listNode;
118
- // const { taskList, listItem, taskItem, paragraph } = nodes;
119
-
120
- const isSourceBulletOrOrdered = isBulletOrOrderedList(sourceList.type);
121
- const isTargetTask = isTaskList(targetNodeType);
122
- const isSourceTask = isTaskList(sourceList.type);
123
- const isTargetBulletOrOrdered = isBulletOrOrderedList(targetNodeType);
124
- const supportedListTypes = getSupportedListTypesSet(nodes);
125
- const newList = transformListRecursively({
126
- isSourceBulletOrOrdered,
127
- isSourceTask,
128
- isTargetBulletOrOrdered,
129
- isTargetTask,
130
- listNode: sourceList,
131
- schema: tr.doc.type.schema,
132
- supportedListTypes,
133
- targetNodeType
134
- });
135
- tr.replaceWith(listPos, listPos + sourceList.nodeSize, newList);
136
- return tr;
137
- } catch {
138
- return tr;
139
- }
140
- };
@@ -1,133 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- import { getSupportedListTypesSet, isBulletOrOrderedList, isTaskList } from '../utils';
6
-
7
- /**
8
- * Convert a block node to inline content suitable for task items
9
- */
10
- var convertBlockToInlineContent = function convertBlockToInlineContent(node, schema) {
11
- var paragraph = schema.nodes.paragraph;
12
- if (node.type === paragraph) {
13
- return _toConsumableArray(node.content.content);
14
- }
15
- if (node.isBlock) {
16
- var textContent = node.textContent;
17
- return textContent ? [schema.text(textContent)] : [];
18
- }
19
- return [node];
20
- };
21
- var _transformListRecursively = function transformListRecursively(props) {
22
- var transformedItems = [];
23
- var listNode = props.listNode,
24
- isSourceBulletOrOrdered = props.isSourceBulletOrOrdered,
25
- isTargetBulletOrOrdered = props.isTargetBulletOrOrdered,
26
- isSourceTask = props.isSourceTask,
27
- isTargetTask = props.isTargetTask,
28
- supportedListTypes = props.supportedListTypes,
29
- schema = props.schema,
30
- targetNodeType = props.targetNodeType;
31
- var _schema$nodes = schema.nodes,
32
- taskList = _schema$nodes.taskList,
33
- listItem = _schema$nodes.listItem,
34
- taskItem = _schema$nodes.taskItem,
35
- paragraph = _schema$nodes.paragraph;
36
- listNode.forEach(function (child) {
37
- if (isSourceBulletOrOrdered && isTargetTask) {
38
- // Convert bullet/ordered => task
39
- if (child.type === listItem) {
40
- var inlineContent = [];
41
- var nestedTaskLists = [];
42
- child.forEach(function (grandChild) {
43
- if (supportedListTypes.has(grandChild.type) && grandChild.type !== taskList) {
44
- nestedTaskLists.push(_transformListRecursively(_objectSpread(_objectSpread({}, props), {}, {
45
- listNode: grandChild
46
- })));
47
- } else {
48
- inlineContent.push.apply(inlineContent, _toConsumableArray(convertBlockToInlineContent(grandChild, schema)));
49
- }
50
- });
51
- transformedItems.push(taskItem.create(null, inlineContent.length > 0 ? inlineContent : null));
52
- transformedItems.push.apply(transformedItems, nestedTaskLists);
53
- }
54
- } else if (isSourceTask && isTargetBulletOrOrdered) {
55
- // Convert task => bullet/ordered
56
- if (child.type === taskItem) {
57
- var _inlineContent = _toConsumableArray(child.content.content);
58
- var paragraphNode = paragraph.create(null, _inlineContent.length > 0 ? _inlineContent : null);
59
- transformedItems.push(listItem.create(null, [paragraphNode]));
60
- } else if (child.type === taskList) {
61
- var transformedNestedList = _transformListRecursively(_objectSpread(_objectSpread({}, props), {}, {
62
- listNode: child
63
- }));
64
- var lastItem = transformedItems[transformedItems.length - 1];
65
- if ((lastItem === null || lastItem === void 0 ? void 0 : lastItem.type) === listItem) {
66
- // Attach nested list to previous item
67
- var updatedContent = [].concat(_toConsumableArray(lastItem.content.content), [transformedNestedList]);
68
- transformedItems[transformedItems.length - 1] = listItem.create(lastItem.attrs, updatedContent);
69
- } else {
70
- // No previous item, flatten nested items
71
- transformedItems.push.apply(transformedItems, _toConsumableArray(transformedNestedList.content.content));
72
- }
73
- }
74
- } else if (isSourceBulletOrOrdered && isTargetBulletOrOrdered) {
75
- if (child.type === listItem) {
76
- var convertedNestedLists = [];
77
- child.forEach(function (grandChild) {
78
- if (supportedListTypes.has(grandChild.type) && grandChild.type !== targetNodeType) {
79
- var convertedNode = _transformListRecursively(_objectSpread(_objectSpread({}, props), {}, {
80
- listNode: grandChild
81
- }));
82
- convertedNestedLists.push(convertedNode);
83
- } else {
84
- convertedNestedLists.push(grandChild);
85
- }
86
- });
87
- transformedItems.push(listItem.create(null, convertedNestedLists));
88
- }
89
- }
90
- });
91
- return targetNodeType.create(null, transformedItems);
92
- };
93
-
94
- /**
95
- * Transform list structure between different list types
96
- */
97
- export { _transformListRecursively as transformListRecursively };
98
- export var transformListStructure = function transformListStructure(context) {
99
- var tr = context.tr,
100
- sourceNode = context.sourceNode,
101
- sourcePos = context.sourcePos,
102
- targetNodeType = context.targetNodeType;
103
- var nodes = tr.doc.type.schema.nodes;
104
- try {
105
- var listNode = {
106
- node: sourceNode,
107
- pos: sourcePos
108
- };
109
- var sourceList = listNode.node,
110
- listPos = listNode.pos;
111
- // const { taskList, listItem, taskItem, paragraph } = nodes;
112
-
113
- var isSourceBulletOrOrdered = isBulletOrOrderedList(sourceList.type);
114
- var isTargetTask = isTaskList(targetNodeType);
115
- var isSourceTask = isTaskList(sourceList.type);
116
- var isTargetBulletOrOrdered = isBulletOrOrderedList(targetNodeType);
117
- var supportedListTypes = getSupportedListTypesSet(nodes);
118
- var newList = _transformListRecursively({
119
- isSourceBulletOrOrdered: isSourceBulletOrOrdered,
120
- isSourceTask: isSourceTask,
121
- isTargetBulletOrOrdered: isTargetBulletOrOrdered,
122
- isTargetTask: isTargetTask,
123
- listNode: sourceList,
124
- schema: tr.doc.type.schema,
125
- supportedListTypes: supportedListTypes,
126
- targetNodeType: targetNodeType
127
- });
128
- tr.replaceWith(listPos, listPos + sourceList.nodeSize, newList);
129
- return tr;
130
- } catch (_unused) {
131
- return tr;
132
- }
133
- };
@@ -1,18 +0,0 @@
1
- import type { NodeType, Node as PMNode, Schema } from '@atlaskit/editor-prosemirror/model';
2
- import type { TransformContext } from '../types';
3
- type TransformListRecursivelyProps = {
4
- isSourceBulletOrOrdered: boolean;
5
- isSourceTask: boolean;
6
- isTargetBulletOrOrdered: boolean;
7
- isTargetTask: boolean;
8
- listNode: PMNode;
9
- schema: Schema;
10
- supportedListTypes: Set<NodeType>;
11
- targetNodeType: NodeType;
12
- };
13
- export declare const transformListRecursively: (props: TransformListRecursivelyProps) => PMNode;
14
- /**
15
- * Transform list structure between different list types
16
- */
17
- export declare const transformListStructure: (context: TransformContext) => import("prosemirror-state").Transaction;
18
- export {};
@@ -1,18 +0,0 @@
1
- import type { NodeType, Node as PMNode, Schema } from '@atlaskit/editor-prosemirror/model';
2
- import type { TransformContext } from '../types';
3
- type TransformListRecursivelyProps = {
4
- isSourceBulletOrOrdered: boolean;
5
- isSourceTask: boolean;
6
- isTargetBulletOrOrdered: boolean;
7
- isTargetTask: boolean;
8
- listNode: PMNode;
9
- schema: Schema;
10
- supportedListTypes: Set<NodeType>;
11
- targetNodeType: NodeType;
12
- };
13
- export declare const transformListRecursively: (props: TransformListRecursivelyProps) => PMNode;
14
- /**
15
- * Transform list structure between different list types
16
- */
17
- export declare const transformListStructure: (context: TransformContext) => import("prosemirror-state").Transaction;
18
- export {};