@atlaskit/editor-plugin-block-controls 1.4.17 → 1.4.18

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,16 @@
1
1
  # @atlaskit/editor-plugin-block-controls
2
2
 
3
+ ## 1.4.18
4
+
5
+ ### Patch Changes
6
+
7
+ - [#110975](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/110975)
8
+ [`1b910ab971427`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/1b910ab971427) -
9
+ [ux] Generate generic drag preview for extension nodes
10
+ - [#110819](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/110819)
11
+ [`c81b4e2254428`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c81b4e2254428) -
12
+ Fix cursor and handle position when changing node type
13
+
3
14
  ## 1.4.17
4
15
 
5
16
  ### Patch Changes
@@ -82,7 +82,14 @@ var createPlugin = exports.createPlugin = function createPlugin(api) {
82
82
  var mouseWrapperDecs = (0, _decorations.mouseMoveWrapperDecorations)(newState, api);
83
83
  decorations = decorations.add(newState.doc, [].concat((0, _toConsumableArray2.default)(nodeDecs), (0, _toConsumableArray2.default)(mouseWrapperDecs)));
84
84
  if (activeNode) {
85
- var draghandleDec = (0, _decorations.dragHandleDecoration)(activeNode.pos, activeNode.anchorName, activeNode.nodeType, api);
85
+ var newActiveNode = activeNode && tr.doc.nodeAt(activeNode.pos);
86
+ var nodeType = activeNode.nodeType;
87
+ var anchorName = activeNode.anchorName;
88
+ if (newActiveNode && (newActiveNode === null || newActiveNode === void 0 ? void 0 : newActiveNode.type.name) !== activeNode.nodeType && !(meta !== null && meta !== void 0 && meta.nodeMoved)) {
89
+ nodeType = newActiveNode.type.name;
90
+ anchorName = activeNode.anchorName.replace(activeNode.nodeType, nodeType);
91
+ }
92
+ var draghandleDec = (0, _decorations.dragHandleDecoration)(activeNode.pos, anchorName, nodeType, api);
86
93
  decorations = decorations.add(newState.doc, [draghandleDec]);
87
94
  }
88
95
  }
@@ -20,8 +20,8 @@ var dragPreview = exports.dragPreview = function dragPreview(container, dom, nod
20
20
  var parent = document.createElement('div');
21
21
  // ProseMirror class is required to make sure the cloned dom is styled correctly
22
22
  parent.classList.add('ProseMirror');
23
- var isEmbedCard = nodeType === 'embedCard';
24
- if (isEmbedCard) {
23
+ var shouldBeGenericPreview = nodeType === 'embedCard' || nodeType === 'extension';
24
+ if (shouldBeGenericPreview) {
25
25
  parent.style.border = "".concat(previewStyle.borderWidth, " ").concat(previewStyle.borderStyle, " ").concat(previewStyle.borderColor);
26
26
  parent.style.borderRadius = previewStyle.borderRadius;
27
27
  parent.style.backgroundColor = previewStyle.backgroundColor;
@@ -29,7 +29,7 @@ var dragPreview = exports.dragPreview = function dragPreview(container, dom, nod
29
29
  parent.setAttribute('data-testid', 'block-ctrl-generic-drag-preview');
30
30
  }
31
31
  var resizer = dom.querySelector('.resizer-item');
32
- var clonedDom = resizer ? resizer.cloneNode(true) : dom.cloneNode(!isEmbedCard);
32
+ var clonedDom = resizer ? resizer.cloneNode(true) : dom.cloneNode(!shouldBeGenericPreview);
33
33
 
34
34
  // Remove any margin from the cloned element to ensure is doesn't position incorrectly
35
35
  clonedDom.style.marginLeft = '0';
@@ -78,7 +78,14 @@ export const createPlugin = api => {
78
78
  const mouseWrapperDecs = mouseMoveWrapperDecorations(newState, api);
79
79
  decorations = decorations.add(newState.doc, [...nodeDecs, ...mouseWrapperDecs]);
80
80
  if (activeNode) {
81
- const draghandleDec = dragHandleDecoration(activeNode.pos, activeNode.anchorName, activeNode.nodeType, api);
81
+ const newActiveNode = activeNode && tr.doc.nodeAt(activeNode.pos);
82
+ let nodeType = activeNode.nodeType;
83
+ let anchorName = activeNode.anchorName;
84
+ if (newActiveNode && (newActiveNode === null || newActiveNode === void 0 ? void 0 : newActiveNode.type.name) !== activeNode.nodeType && !(meta !== null && meta !== void 0 && meta.nodeMoved)) {
85
+ nodeType = newActiveNode.type.name;
86
+ anchorName = activeNode.anchorName.replace(activeNode.nodeType, nodeType);
87
+ }
88
+ const draghandleDec = dragHandleDecoration(activeNode.pos, anchorName, nodeType, api);
82
89
  decorations = decorations.add(newState.doc, [draghandleDec]);
83
90
  }
84
91
  }
@@ -14,8 +14,8 @@ export const dragPreview = (container, dom, nodeType) => {
14
14
  const parent = document.createElement('div');
15
15
  // ProseMirror class is required to make sure the cloned dom is styled correctly
16
16
  parent.classList.add('ProseMirror');
17
- const isEmbedCard = nodeType === 'embedCard';
18
- if (isEmbedCard) {
17
+ const shouldBeGenericPreview = nodeType === 'embedCard' || nodeType === 'extension';
18
+ if (shouldBeGenericPreview) {
19
19
  parent.style.border = `${previewStyle.borderWidth} ${previewStyle.borderStyle} ${previewStyle.borderColor}`;
20
20
  parent.style.borderRadius = previewStyle.borderRadius;
21
21
  parent.style.backgroundColor = previewStyle.backgroundColor;
@@ -23,7 +23,7 @@ export const dragPreview = (container, dom, nodeType) => {
23
23
  parent.setAttribute('data-testid', 'block-ctrl-generic-drag-preview');
24
24
  }
25
25
  const resizer = dom.querySelector('.resizer-item');
26
- const clonedDom = resizer ? resizer.cloneNode(true) : dom.cloneNode(!isEmbedCard);
26
+ const clonedDom = resizer ? resizer.cloneNode(true) : dom.cloneNode(!shouldBeGenericPreview);
27
27
 
28
28
  // Remove any margin from the cloned element to ensure is doesn't position incorrectly
29
29
  clonedDom.style.marginLeft = '0';
@@ -75,7 +75,14 @@ export var createPlugin = function createPlugin(api) {
75
75
  var mouseWrapperDecs = mouseMoveWrapperDecorations(newState, api);
76
76
  decorations = decorations.add(newState.doc, [].concat(_toConsumableArray(nodeDecs), _toConsumableArray(mouseWrapperDecs)));
77
77
  if (activeNode) {
78
- var draghandleDec = dragHandleDecoration(activeNode.pos, activeNode.anchorName, activeNode.nodeType, api);
78
+ var newActiveNode = activeNode && tr.doc.nodeAt(activeNode.pos);
79
+ var nodeType = activeNode.nodeType;
80
+ var anchorName = activeNode.anchorName;
81
+ if (newActiveNode && (newActiveNode === null || newActiveNode === void 0 ? void 0 : newActiveNode.type.name) !== activeNode.nodeType && !(meta !== null && meta !== void 0 && meta.nodeMoved)) {
82
+ nodeType = newActiveNode.type.name;
83
+ anchorName = activeNode.anchorName.replace(activeNode.nodeType, nodeType);
84
+ }
85
+ var draghandleDec = dragHandleDecoration(activeNode.pos, anchorName, nodeType, api);
79
86
  decorations = decorations.add(newState.doc, [draghandleDec]);
80
87
  }
81
88
  }
@@ -14,8 +14,8 @@ export var dragPreview = function dragPreview(container, dom, nodeType) {
14
14
  var parent = document.createElement('div');
15
15
  // ProseMirror class is required to make sure the cloned dom is styled correctly
16
16
  parent.classList.add('ProseMirror');
17
- var isEmbedCard = nodeType === 'embedCard';
18
- if (isEmbedCard) {
17
+ var shouldBeGenericPreview = nodeType === 'embedCard' || nodeType === 'extension';
18
+ if (shouldBeGenericPreview) {
19
19
  parent.style.border = "".concat(previewStyle.borderWidth, " ").concat(previewStyle.borderStyle, " ").concat(previewStyle.borderColor);
20
20
  parent.style.borderRadius = previewStyle.borderRadius;
21
21
  parent.style.backgroundColor = previewStyle.backgroundColor;
@@ -23,7 +23,7 @@ export var dragPreview = function dragPreview(container, dom, nodeType) {
23
23
  parent.setAttribute('data-testid', 'block-ctrl-generic-drag-preview');
24
24
  }
25
25
  var resizer = dom.querySelector('.resizer-item');
26
- var clonedDom = resizer ? resizer.cloneNode(true) : dom.cloneNode(!isEmbedCard);
26
+ var clonedDom = resizer ? resizer.cloneNode(true) : dom.cloneNode(!shouldBeGenericPreview);
27
27
 
28
28
  // Remove any margin from the cloned element to ensure is doesn't position incorrectly
29
29
  clonedDom.style.marginLeft = '0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-block-controls",
3
- "version": "1.4.17",
3
+ "version": "1.4.18",
4
4
  "description": "Block controls plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",