@atlaskit/editor-plugin-block-menu 5.2.7 → 5.2.8

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/editor-plugin-block-menu
2
2
 
3
+ ## 5.2.8
4
+
5
+ ### Patch Changes
6
+
7
+ - [`0006edf16b3a3`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0006edf16b3a3) -
8
+ Editor-2778: Media wrap in container
9
+
3
10
  ## 5.2.7
4
11
 
5
12
  ### Patch Changes
@@ -19,6 +19,7 @@ var _types = require("./types");
19
19
  var _unwrapExpandStep = require("./unwrapExpandStep");
20
20
  var _unwrapStep = require("./unwrapStep");
21
21
  var _wrapIntoLayoutStep = require("./wrapIntoLayoutStep");
22
+ var _wrapIntoListStep = require("./wrapIntoListStep");
22
23
  var _wrapStep = require("./wrapStep");
23
24
  // Exampled step for overrides:
24
25
  // - open Block menu on a paragraph, click 'Panel' in the Turn into'
@@ -33,7 +34,7 @@ var TRANSFORM_STEPS = {
33
34
  atomic: {
34
35
  atomic: undefined,
35
36
  container: [_wrapStep.wrapStep],
36
- list: undefined,
37
+ list: [_wrapIntoListStep.wrapIntoListStep],
37
38
  text: undefined
38
39
  },
39
40
  container: {
@@ -121,7 +122,12 @@ var TRANSFORM_STEPS_OVERRIDE = {
121
122
  decisionList: [_flattenListStep.flattenListStep, _listToDecisionListStep.listToDecisionListStep]
122
123
  },
123
124
  table: {
124
- expand: [_wrapStep.wrapStep],
125
+ layoutSection: [_wrapIntoLayoutStep.wrapIntoLayoutStep]
126
+ },
127
+ mediaSingle: {
128
+ layoutSection: [_wrapIntoLayoutStep.wrapIntoLayoutStep]
129
+ },
130
+ mediaGroup: {
125
131
  layoutSection: [_wrapIntoLayoutStep.wrapIntoLayoutStep]
126
132
  },
127
133
  decisionList: {
@@ -76,13 +76,29 @@ var expandSelectionToBlockRange = exports.expandSelectionToBlockRange = function
76
76
  var table = (0, _utils2.findTable)(selection);
77
77
  if (table) {
78
78
  var $from = selection.$from.doc.resolve(table.pos);
79
- var $to = selection.$from.doc.resolve(table.pos + table.node.nodeSize - 1);
79
+ var $to = selection.$from.doc.resolve(table.pos + table.node.nodeSize);
80
80
  return {
81
81
  $from: $from,
82
82
  $to: $to
83
83
  };
84
84
  }
85
85
  }
86
+
87
+ // when selecting a file, selection is on media
88
+ // need to find media group and return its pos
89
+ if (selection instanceof _state.NodeSelection) {
90
+ if (selection.node.type === nodes.media) {
91
+ var mediaGroup = (0, _utils.findParentNodeOfType)(nodes.mediaGroup)(selection);
92
+ if (mediaGroup) {
93
+ var _$from = selection.$from.doc.resolve(mediaGroup.pos);
94
+ var _$to = selection.$from.doc.resolve(mediaGroup.pos + mediaGroup.node.nodeSize);
95
+ return {
96
+ $from: _$from,
97
+ $to: _$to
98
+ };
99
+ }
100
+ }
101
+ }
86
102
  return (0, _selection.expandToBlockRange)(selection.$from, selection.$to, function (node) {
87
103
  if (nodesNeedToExpandRange.includes(node.type)) {
88
104
  return false;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.wrapIntoListStep = void 0;
7
+ /** wrap nodes into bullet list or numbered list, does not work for task list */
8
+ var wrapIntoListStep = exports.wrapIntoListStep = function wrapIntoListStep(nodes, context) {
9
+ var schema = context.schema,
10
+ targetNodeTypeName = context.targetNodeTypeName;
11
+ var listItemNode = schema.nodes.listItem.createAndFill({}, nodes);
12
+ var outputNode = schema.nodes[targetNodeTypeName].createAndFill({}, listItemNode);
13
+ if (outputNode) {
14
+ return [outputNode];
15
+ }
16
+ return nodes;
17
+ };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.transformNode = void 0;
7
7
  var _model = require("@atlaskit/editor-prosemirror/model");
8
+ var _state = require("@atlaskit/editor-prosemirror/state");
8
9
  var _isNestedNode = require("../ui/utils/isNestedNode");
9
10
  var _transform = require("./transform-node-utils/transform");
10
11
  var _utils = require("./transform-node-utils/utils");
@@ -20,7 +21,9 @@ var transformNode = exports.transformNode = function transformNode(api) {
20
21
  if (!preservedSelection) {
21
22
  return tr;
22
23
  }
23
- var _expandSelectionToBlo = (0, _utils.expandSelectionToBlockRange)(preservedSelection, tr.doc.type.schema),
24
+ var schema = tr.doc.type.schema;
25
+ var nodes = schema.nodes;
26
+ var _expandSelectionToBlo = (0, _utils.expandSelectionToBlockRange)(preservedSelection, schema),
24
27
  $from = _expandSelectionToBlo.$from,
25
28
  $to = _expandSelectionToBlo.$to;
26
29
  var isNested = (0, _isNestedNode.isNestedNode)(preservedSelection, '');
@@ -39,9 +42,15 @@ var transformNode = exports.transformNode = function transformNode(api) {
39
42
  fragment = fragment.append(_model.Fragment.fromArray(outputNode));
40
43
  }
41
44
  });
42
-
43
- // TODO: ED-12345 - selection is broken post transaction, to fix.
44
- tr.replaceWith(isList ? $from.pos - 1 : $from.pos, $to.pos, fragment);
45
+ var nodesToDeleteAndInsert = [nodes.mediaSingle];
46
+ if (preservedSelection instanceof _state.NodeSelection && nodesToDeleteAndInsert.includes(preservedSelection.node.type)) {
47
+ // when node is media single, use tr.replaceWith freeze editor, if modify position, tr.replaceWith creates duplicats
48
+ tr.deleteRange($from.pos, $to.pos);
49
+ tr.insert($from.pos, fragment);
50
+ } else {
51
+ // TODO: ED-12345 - selection is broken post transaction, to fix.
52
+ tr.replaceWith(isList ? $from.pos - 1 : $from.pos, $to.pos, fragment);
53
+ }
45
54
  return tr;
46
55
  };
47
56
  }
@@ -13,6 +13,7 @@ import { NODE_CATEGORY_BY_TYPE, toNodeTypeValue } from './types';
13
13
  import { unwrapExpandStep } from './unwrapExpandStep';
14
14
  import { unwrapStep } from './unwrapStep';
15
15
  import { wrapIntoLayoutStep } from './wrapIntoLayoutStep';
16
+ import { wrapIntoListStep } from './wrapIntoListStep';
16
17
  import { wrapStep } from './wrapStep';
17
18
 
18
19
  // Exampled step for overrides:
@@ -28,7 +29,7 @@ const TRANSFORM_STEPS = {
28
29
  atomic: {
29
30
  atomic: undefined,
30
31
  container: [wrapStep],
31
- list: undefined,
32
+ list: [wrapIntoListStep],
32
33
  text: undefined
33
34
  },
34
35
  container: {
@@ -116,7 +117,12 @@ const TRANSFORM_STEPS_OVERRIDE = {
116
117
  decisionList: [flattenListStep, listToDecisionListStep]
117
118
  },
118
119
  table: {
119
- expand: [wrapStep],
120
+ layoutSection: [wrapIntoLayoutStep]
121
+ },
122
+ mediaSingle: {
123
+ layoutSection: [wrapIntoLayoutStep]
124
+ },
125
+ mediaGroup: {
120
126
  layoutSection: [wrapIntoLayoutStep]
121
127
  },
122
128
  decisionList: {
@@ -73,13 +73,29 @@ export const expandSelectionToBlockRange = (selection, schema) => {
73
73
  const table = findTable(selection);
74
74
  if (table) {
75
75
  const $from = selection.$from.doc.resolve(table.pos);
76
- const $to = selection.$from.doc.resolve(table.pos + table.node.nodeSize - 1);
76
+ const $to = selection.$from.doc.resolve(table.pos + table.node.nodeSize);
77
77
  return {
78
78
  $from,
79
79
  $to
80
80
  };
81
81
  }
82
82
  }
83
+
84
+ // when selecting a file, selection is on media
85
+ // need to find media group and return its pos
86
+ if (selection instanceof NodeSelection) {
87
+ if (selection.node.type === nodes.media) {
88
+ const mediaGroup = findParentNodeOfType(nodes.mediaGroup)(selection);
89
+ if (mediaGroup) {
90
+ const $from = selection.$from.doc.resolve(mediaGroup.pos);
91
+ const $to = selection.$from.doc.resolve(mediaGroup.pos + mediaGroup.node.nodeSize);
92
+ return {
93
+ $from,
94
+ $to
95
+ };
96
+ }
97
+ }
98
+ }
83
99
  return expandToBlockRange(selection.$from, selection.$to, node => {
84
100
  if (nodesNeedToExpandRange.includes(node.type)) {
85
101
  return false;
@@ -0,0 +1,13 @@
1
+ /** wrap nodes into bullet list or numbered list, does not work for task list */
2
+ export const wrapIntoListStep = (nodes, context) => {
3
+ const {
4
+ schema,
5
+ targetNodeTypeName
6
+ } = context;
7
+ const listItemNode = schema.nodes.listItem.createAndFill({}, nodes);
8
+ const outputNode = schema.nodes[targetNodeTypeName].createAndFill({}, listItemNode);
9
+ if (outputNode) {
10
+ return [outputNode];
11
+ }
12
+ return nodes;
13
+ };
@@ -1,4 +1,5 @@
1
1
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
2
+ import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
2
3
  import { isNestedNode } from '../ui/utils/isNestedNode';
3
4
  import { getOutputNodes } from './transform-node-utils/transform';
4
5
  import { expandSelectionToBlockRange } from './transform-node-utils/utils';
@@ -14,10 +15,14 @@ export const transformNode = api =>
14
15
  if (!preservedSelection) {
15
16
  return tr;
16
17
  }
18
+ const schema = tr.doc.type.schema;
19
+ const {
20
+ nodes
21
+ } = schema;
17
22
  const {
18
23
  $from,
19
24
  $to
20
- } = expandSelectionToBlockRange(preservedSelection, tr.doc.type.schema);
25
+ } = expandSelectionToBlockRange(preservedSelection, schema);
21
26
  const isNested = isNestedNode(preservedSelection, '');
22
27
  const selectedParent = $from.parent;
23
28
  let fragment = Fragment.empty;
@@ -34,9 +39,15 @@ export const transformNode = api =>
34
39
  fragment = fragment.append(Fragment.fromArray(outputNode));
35
40
  }
36
41
  });
37
-
38
- // TODO: ED-12345 - selection is broken post transaction, to fix.
39
- tr.replaceWith(isList ? $from.pos - 1 : $from.pos, $to.pos, fragment);
42
+ const nodesToDeleteAndInsert = [nodes.mediaSingle];
43
+ if (preservedSelection instanceof NodeSelection && nodesToDeleteAndInsert.includes(preservedSelection.node.type)) {
44
+ // when node is media single, use tr.replaceWith freeze editor, if modify position, tr.replaceWith creates duplicats
45
+ tr.deleteRange($from.pos, $to.pos);
46
+ tr.insert($from.pos, fragment);
47
+ } else {
48
+ // TODO: ED-12345 - selection is broken post transaction, to fix.
49
+ tr.replaceWith(isList ? $from.pos - 1 : $from.pos, $to.pos, fragment);
50
+ }
40
51
  return tr;
41
52
  };
42
53
  };
@@ -13,6 +13,7 @@ import { NODE_CATEGORY_BY_TYPE, toNodeTypeValue } from './types';
13
13
  import { unwrapExpandStep } from './unwrapExpandStep';
14
14
  import { unwrapStep } from './unwrapStep';
15
15
  import { wrapIntoLayoutStep } from './wrapIntoLayoutStep';
16
+ import { wrapIntoListStep } from './wrapIntoListStep';
16
17
  import { wrapStep } from './wrapStep';
17
18
 
18
19
  // Exampled step for overrides:
@@ -28,7 +29,7 @@ var TRANSFORM_STEPS = {
28
29
  atomic: {
29
30
  atomic: undefined,
30
31
  container: [wrapStep],
31
- list: undefined,
32
+ list: [wrapIntoListStep],
32
33
  text: undefined
33
34
  },
34
35
  container: {
@@ -116,7 +117,12 @@ var TRANSFORM_STEPS_OVERRIDE = {
116
117
  decisionList: [flattenListStep, listToDecisionListStep]
117
118
  },
118
119
  table: {
119
- expand: [wrapStep],
120
+ layoutSection: [wrapIntoLayoutStep]
121
+ },
122
+ mediaSingle: {
123
+ layoutSection: [wrapIntoLayoutStep]
124
+ },
125
+ mediaGroup: {
120
126
  layoutSection: [wrapIntoLayoutStep]
121
127
  },
122
128
  decisionList: {
@@ -70,13 +70,29 @@ export var expandSelectionToBlockRange = function expandSelectionToBlockRange(se
70
70
  var table = findTable(selection);
71
71
  if (table) {
72
72
  var $from = selection.$from.doc.resolve(table.pos);
73
- var $to = selection.$from.doc.resolve(table.pos + table.node.nodeSize - 1);
73
+ var $to = selection.$from.doc.resolve(table.pos + table.node.nodeSize);
74
74
  return {
75
75
  $from: $from,
76
76
  $to: $to
77
77
  };
78
78
  }
79
79
  }
80
+
81
+ // when selecting a file, selection is on media
82
+ // need to find media group and return its pos
83
+ if (selection instanceof NodeSelection) {
84
+ if (selection.node.type === nodes.media) {
85
+ var mediaGroup = findParentNodeOfType(nodes.mediaGroup)(selection);
86
+ if (mediaGroup) {
87
+ var _$from = selection.$from.doc.resolve(mediaGroup.pos);
88
+ var _$to = selection.$from.doc.resolve(mediaGroup.pos + mediaGroup.node.nodeSize);
89
+ return {
90
+ $from: _$from,
91
+ $to: _$to
92
+ };
93
+ }
94
+ }
95
+ }
80
96
  return expandToBlockRange(selection.$from, selection.$to, function (node) {
81
97
  if (nodesNeedToExpandRange.includes(node.type)) {
82
98
  return false;
@@ -0,0 +1,11 @@
1
+ /** wrap nodes into bullet list or numbered list, does not work for task list */
2
+ export var wrapIntoListStep = function wrapIntoListStep(nodes, context) {
3
+ var schema = context.schema,
4
+ targetNodeTypeName = context.targetNodeTypeName;
5
+ var listItemNode = schema.nodes.listItem.createAndFill({}, nodes);
6
+ var outputNode = schema.nodes[targetNodeTypeName].createAndFill({}, listItemNode);
7
+ if (outputNode) {
8
+ return [outputNode];
9
+ }
10
+ return nodes;
11
+ };
@@ -1,4 +1,5 @@
1
1
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
2
+ import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
2
3
  import { isNestedNode } from '../ui/utils/isNestedNode';
3
4
  import { getOutputNodes } from './transform-node-utils/transform';
4
5
  import { expandSelectionToBlockRange } from './transform-node-utils/utils';
@@ -14,7 +15,9 @@ export var transformNode = function transformNode(api) {
14
15
  if (!preservedSelection) {
15
16
  return tr;
16
17
  }
17
- var _expandSelectionToBlo = expandSelectionToBlockRange(preservedSelection, tr.doc.type.schema),
18
+ var schema = tr.doc.type.schema;
19
+ var nodes = schema.nodes;
20
+ var _expandSelectionToBlo = expandSelectionToBlockRange(preservedSelection, schema),
18
21
  $from = _expandSelectionToBlo.$from,
19
22
  $to = _expandSelectionToBlo.$to;
20
23
  var isNested = isNestedNode(preservedSelection, '');
@@ -33,9 +36,15 @@ export var transformNode = function transformNode(api) {
33
36
  fragment = fragment.append(Fragment.fromArray(outputNode));
34
37
  }
35
38
  });
36
-
37
- // TODO: ED-12345 - selection is broken post transaction, to fix.
38
- tr.replaceWith(isList ? $from.pos - 1 : $from.pos, $to.pos, fragment);
39
+ var nodesToDeleteAndInsert = [nodes.mediaSingle];
40
+ if (preservedSelection instanceof NodeSelection && nodesToDeleteAndInsert.includes(preservedSelection.node.type)) {
41
+ // when node is media single, use tr.replaceWith freeze editor, if modify position, tr.replaceWith creates duplicats
42
+ tr.deleteRange($from.pos, $to.pos);
43
+ tr.insert($from.pos, fragment);
44
+ } else {
45
+ // TODO: ED-12345 - selection is broken post transaction, to fix.
46
+ tr.replaceWith(isList ? $from.pos - 1 : $from.pos, $to.pos, fragment);
47
+ }
39
48
  return tr;
40
49
  };
41
50
  }
@@ -0,0 +1,3 @@
1
+ import type { TransformStep } from './types';
2
+ /** wrap nodes into bullet list or numbered list, does not work for task list */
3
+ export declare const wrapIntoListStep: TransformStep;
@@ -0,0 +1,3 @@
1
+ import type { TransformStep } from './types';
2
+ /** wrap nodes into bullet list or numbered list, does not work for task list */
3
+ export declare const wrapIntoListStep: TransformStep;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-block-menu",
3
- "version": "5.2.7",
3
+ "version": "5.2.8",
4
4
  "description": "BlockMenu plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -31,7 +31,7 @@
31
31
  "@atlaskit/css": "^0.17.0",
32
32
  "@atlaskit/dropdown-menu": "^16.3.0",
33
33
  "@atlaskit/editor-plugin-analytics": "^6.2.0",
34
- "@atlaskit/editor-plugin-block-controls": "^7.13.0",
34
+ "@atlaskit/editor-plugin-block-controls": "^7.14.0",
35
35
  "@atlaskit/editor-plugin-decorations": "^6.1.0",
36
36
  "@atlaskit/editor-plugin-selection": "^6.1.0",
37
37
  "@atlaskit/editor-plugin-user-intent": "^4.0.0",
@@ -40,16 +40,16 @@
40
40
  "@atlaskit/editor-tables": "^2.9.0",
41
41
  "@atlaskit/editor-toolbar": "^0.18.0",
42
42
  "@atlaskit/flag": "^17.6.0",
43
- "@atlaskit/icon": "^29.0.0",
43
+ "@atlaskit/icon": "^29.1.0",
44
44
  "@atlaskit/platform-feature-flags": "^1.1.0",
45
45
  "@atlaskit/platform-feature-flags-react": "^0.4.0",
46
46
  "@atlaskit/primitives": "^16.4.0",
47
- "@atlaskit/tmp-editor-statsig": "^15.9.0",
47
+ "@atlaskit/tmp-editor-statsig": "^15.10.0",
48
48
  "@atlaskit/tokens": "^8.4.0",
49
49
  "@babel/runtime": "^7.0.0"
50
50
  },
51
51
  "peerDependencies": {
52
- "@atlaskit/editor-common": "^110.41.0",
52
+ "@atlaskit/editor-common": "^110.42.0",
53
53
  "react": "^18.2.0",
54
54
  "react-intl-next": "npm:react-intl@^5.18.1"
55
55
  },