@atlaskit/editor-plugin-block-controls 13.0.6 → 13.0.7
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 +10 -0
- package/dist/cjs/pm-plugins/decorations-drag-handle.js +2 -2
- package/dist/cjs/pm-plugins/decorations-quick-insert-button.js +1 -1
- package/dist/cjs/pm-plugins/interaction-tracking/handle-mouse-move.js +3 -1
- package/dist/cjs/pm-plugins/utils/marks.js +1 -55
- package/dist/es2019/pm-plugins/decorations-drag-handle.js +3 -3
- package/dist/es2019/pm-plugins/decorations-quick-insert-button.js +2 -2
- package/dist/es2019/pm-plugins/interaction-tracking/handle-mouse-move.js +3 -1
- package/dist/es2019/pm-plugins/utils/marks.js +0 -49
- package/dist/esm/pm-plugins/decorations-drag-handle.js +3 -3
- package/dist/esm/pm-plugins/decorations-quick-insert-button.js +2 -2
- package/dist/esm/pm-plugins/interaction-tracking/handle-mouse-move.js +3 -1
- package/dist/esm/pm-plugins/utils/marks.js +0 -55
- package/dist/types/pm-plugins/utils/marks.d.ts +0 -17
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-block-controls
|
|
2
2
|
|
|
3
|
+
## 13.0.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`c664929c3f15d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/c664929c3f15d) -
|
|
8
|
+
Clean up experiment `platform_editor_clean_up_widget_mark_logic`
|
|
9
|
+
- [`5c279743e9b74`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5c279743e9b74) -
|
|
10
|
+
Fire an exposure event for the `remix_button_right_margin_hover` experiment.
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
3
13
|
## 13.0.6
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -75,7 +75,7 @@ var dragHandleDecoration = exports.dragHandleDecoration = function dragHandleDec
|
|
|
75
75
|
* Exclude 'breakout' on purpose, so the widgets render at the top of the document to avoid z-index issues
|
|
76
76
|
* Other block marks must be added, otherwise PM will split the DOM elements causing mutations and re-draws
|
|
77
77
|
*/
|
|
78
|
-
marks: (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? (0, _marks.getMatchingBlockMarks)(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
78
|
+
marks: (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? (0, _marks.getMatchingBlockMarks)(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
79
79
|
destroy: function destroy(node) {
|
|
80
80
|
unbind && unbind();
|
|
81
81
|
}
|
|
@@ -84,7 +84,7 @@ var dragHandleDecoration = exports.dragHandleDecoration = function dragHandleDec
|
|
|
84
84
|
type: _decorationsCommon.TYPE_HANDLE_DEC,
|
|
85
85
|
// eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
|
|
86
86
|
testid: "".concat(_decorationsCommon.TYPE_HANDLE_DEC, "-").concat((0, _uuid.default)()),
|
|
87
|
-
marks: (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? (0, _marks.getMatchingBlockMarks)(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
87
|
+
marks: (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? (0, _marks.getMatchingBlockMarks)(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
88
88
|
destroy: function destroy(node) {
|
|
89
89
|
unbind && unbind();
|
|
90
90
|
}
|
|
@@ -62,7 +62,7 @@ var quickInsertButtonDecoration = exports.quickInsertButtonDecoration = function
|
|
|
62
62
|
* Other block marks must be added, otherwise PM will split the DOM elements causing mutations and re-draws
|
|
63
63
|
*/
|
|
64
64
|
|
|
65
|
-
marks: (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? (0, _marks.getMatchingBlockMarks)(editorState, rootPos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
65
|
+
marks: (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? (0, _marks.getMatchingBlockMarks)(editorState, rootPos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
66
66
|
destroy: function destroy(_) {
|
|
67
67
|
if ((0, _platformFeatureFlags.fg)('platform_editor_fix_widget_destroy')) {
|
|
68
68
|
nodeViewPortalProviderAPI.remove(key);
|
|
@@ -123,7 +123,9 @@ var processHoverSide = function processHoverSide(view, api) {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
// Added right-margin hover, gated so it can be rolled back. When off, fall through to midpoint.
|
|
126
|
-
if ((0, _experiments.editorExperiment)('remix_button_right_margin_hover', true
|
|
126
|
+
if ((0, _experiments.editorExperiment)('remix_button_right_margin_hover', true, {
|
|
127
|
+
exposure: true
|
|
128
|
+
})) {
|
|
127
129
|
var closestBlock = target === null || target === void 0 ? void 0 : target.closest(BLOCK_SELECTORS);
|
|
128
130
|
var blockElement = closestBlock instanceof HTMLElement ? closestBlock : null;
|
|
129
131
|
|
|
@@ -3,61 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getMatchingBlockMarks =
|
|
7
|
-
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
8
|
-
/**
|
|
9
|
-
* Remove this when platform_editor_clean_up_widget_mark_logic is cleaned up.
|
|
10
|
-
*
|
|
11
|
-
* Returns list of block marks on schema that widgets are allowed to render inside
|
|
12
|
-
* Currently
|
|
13
|
-
* - indent
|
|
14
|
-
* - alignment
|
|
15
|
-
* @param state - The editor state
|
|
16
|
-
* @returns The block marks
|
|
17
|
-
* @example
|
|
18
|
-
* ```ts
|
|
19
|
-
* const marks = getBlockMarks(state);
|
|
20
|
-
* console.log(marks);
|
|
21
|
-
* // [indent, alignment]
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
var getActiveBlockMarks = exports.getActiveBlockMarks = function getActiveBlockMarks(state, pos) {
|
|
25
|
-
var alignment = state.schema.marks.alignment;
|
|
26
|
-
var resolvedPos = state.doc.resolve(pos);
|
|
27
|
-
|
|
28
|
-
// find all active marks at the position
|
|
29
|
-
var marks = resolvedPos.marks();
|
|
30
|
-
var supportedMarks = marks.filter(function (mark) {
|
|
31
|
-
return mark.type === alignment;
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Fix for widget positioning at alignment mark boundaries.
|
|
36
|
-
* When the previous node has alignment but the next node doesn't, we need to prevent
|
|
37
|
-
* the widget from inheriting alignment marks. This ensures the widget is positioned
|
|
38
|
-
* correctly at the boundary rather than being absorbed into the alignment wrapper.
|
|
39
|
-
*/
|
|
40
|
-
if (supportedMarks.length > 0 && (0, _expValEquals.expValEquals)('platform_editor_native_anchor_with_dnd', 'isEnabled', true)) {
|
|
41
|
-
var _resolvedPos$nodeAfte;
|
|
42
|
-
var nextNodeMarks = ((_resolvedPos$nodeAfte = resolvedPos.nodeAfter) === null || _resolvedPos$nodeAfte === void 0 ? void 0 : _resolvedPos$nodeAfte.marks.filter(function (mark) {
|
|
43
|
-
return mark.type === alignment;
|
|
44
|
-
})) || [];
|
|
45
|
-
|
|
46
|
-
// Compare alignment values to ensure they are the same
|
|
47
|
-
var alignmentValuesMatch = supportedMarks.length === nextNodeMarks.length && supportedMarks.some(function (mark) {
|
|
48
|
-
return nextNodeMarks.some(function (nextMark) {
|
|
49
|
-
return nextMark.eq(mark);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
// previous node has alignment but next node does not have alignment or alignment values differ
|
|
54
|
-
if (nextNodeMarks.length === 0 || !alignmentValuesMatch) {
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return supportedMarks;
|
|
59
|
-
};
|
|
60
|
-
|
|
6
|
+
exports.getMatchingBlockMarks = void 0;
|
|
61
7
|
/** True when `mark` has an equal counterpart (type + attrs) in `marks`. */
|
|
62
8
|
var hasMatchingMark = function hasMatchingMark(mark, marks) {
|
|
63
9
|
var found = mark.type.isInSet(marks);
|
|
@@ -10,7 +10,7 @@ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
|
10
10
|
import { ACTIVE_DRAG_HANDLE_ATTR } from '../ui/consts';
|
|
11
11
|
import { DragHandle, DragHandleWithVisibility } from '../ui/drag-handle';
|
|
12
12
|
import { TYPE_HANDLE_DEC, TYPE_NODE_DEC, unmountDecorations } from './decorations-common';
|
|
13
|
-
import {
|
|
13
|
+
import { getMatchingBlockMarks } from './utils/marks';
|
|
14
14
|
const TYPE_ACTIVE_HANDLE_DEC = 'active-drag-handle-node';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -62,7 +62,7 @@ export const dragHandleDecoration = ({
|
|
|
62
62
|
* Exclude 'breakout' on purpose, so the widgets render at the top of the document to avoid z-index issues
|
|
63
63
|
* Other block marks must be added, otherwise PM will split the DOM elements causing mutations and re-draws
|
|
64
64
|
*/
|
|
65
|
-
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
65
|
+
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
66
66
|
destroy: node => {
|
|
67
67
|
unbind && unbind();
|
|
68
68
|
}
|
|
@@ -71,7 +71,7 @@ export const dragHandleDecoration = ({
|
|
|
71
71
|
type: TYPE_HANDLE_DEC,
|
|
72
72
|
// eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
|
|
73
73
|
testid: `${TYPE_HANDLE_DEC}-${uuid()}`,
|
|
74
|
-
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
74
|
+
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
75
75
|
destroy: node => {
|
|
76
76
|
unbind && unbind();
|
|
77
77
|
}
|
|
@@ -7,7 +7,7 @@ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
|
7
7
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
8
8
|
import { ACTIVE_QUICK_INSERT_ATTR } from '../ui/consts';
|
|
9
9
|
import { QuickInsertWithVisibility } from '../ui/quick-insert-button';
|
|
10
|
-
import {
|
|
10
|
+
import { getMatchingBlockMarks } from './utils/marks';
|
|
11
11
|
const TYPE_QUICK_INSERT = 'INSERT_BUTTON';
|
|
12
12
|
const TYPE_ACTIVE_QUICK_INSERT_NODE = 'active-quick-insert-node';
|
|
13
13
|
export const findQuickInsertInsertButtonDecoration = (decorations, from, to) => {
|
|
@@ -48,7 +48,7 @@ export const quickInsertButtonDecoration = ({
|
|
|
48
48
|
* Other block marks must be added, otherwise PM will split the DOM elements causing mutations and re-draws
|
|
49
49
|
*/
|
|
50
50
|
|
|
51
|
-
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, rootPos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
51
|
+
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, rootPos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
52
52
|
destroy: _ => {
|
|
53
53
|
if (fg('platform_editor_fix_widget_destroy')) {
|
|
54
54
|
nodeViewPortalProviderAPI.remove(key);
|
|
@@ -104,7 +104,9 @@ const processHoverSide = (view, api) => {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
// Added right-margin hover, gated so it can be rolled back. When off, fall through to midpoint.
|
|
107
|
-
if (editorExperiment('remix_button_right_margin_hover', true
|
|
107
|
+
if (editorExperiment('remix_button_right_margin_hover', true, {
|
|
108
|
+
exposure: true
|
|
109
|
+
})) {
|
|
108
110
|
const closestBlock = target === null || target === void 0 ? void 0 : target.closest(BLOCK_SELECTORS);
|
|
109
111
|
const blockElement = closestBlock instanceof HTMLElement ? closestBlock : null;
|
|
110
112
|
|
|
@@ -1,52 +1,3 @@
|
|
|
1
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Remove this when platform_editor_clean_up_widget_mark_logic is cleaned up.
|
|
5
|
-
*
|
|
6
|
-
* Returns list of block marks on schema that widgets are allowed to render inside
|
|
7
|
-
* Currently
|
|
8
|
-
* - indent
|
|
9
|
-
* - alignment
|
|
10
|
-
* @param state - The editor state
|
|
11
|
-
* @returns The block marks
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const marks = getBlockMarks(state);
|
|
15
|
-
* console.log(marks);
|
|
16
|
-
* // [indent, alignment]
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export const getActiveBlockMarks = (state, pos) => {
|
|
20
|
-
const {
|
|
21
|
-
alignment
|
|
22
|
-
} = state.schema.marks;
|
|
23
|
-
const resolvedPos = state.doc.resolve(pos);
|
|
24
|
-
|
|
25
|
-
// find all active marks at the position
|
|
26
|
-
const marks = resolvedPos.marks();
|
|
27
|
-
const supportedMarks = marks.filter(mark => mark.type === alignment);
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Fix for widget positioning at alignment mark boundaries.
|
|
31
|
-
* When the previous node has alignment but the next node doesn't, we need to prevent
|
|
32
|
-
* the widget from inheriting alignment marks. This ensures the widget is positioned
|
|
33
|
-
* correctly at the boundary rather than being absorbed into the alignment wrapper.
|
|
34
|
-
*/
|
|
35
|
-
if (supportedMarks.length > 0 && expValEquals('platform_editor_native_anchor_with_dnd', 'isEnabled', true)) {
|
|
36
|
-
var _resolvedPos$nodeAfte;
|
|
37
|
-
const nextNodeMarks = ((_resolvedPos$nodeAfte = resolvedPos.nodeAfter) === null || _resolvedPos$nodeAfte === void 0 ? void 0 : _resolvedPos$nodeAfte.marks.filter(mark => mark.type === alignment)) || [];
|
|
38
|
-
|
|
39
|
-
// Compare alignment values to ensure they are the same
|
|
40
|
-
const alignmentValuesMatch = supportedMarks.length === nextNodeMarks.length && supportedMarks.some(mark => nextNodeMarks.some(nextMark => nextMark.eq(mark)));
|
|
41
|
-
|
|
42
|
-
// previous node has alignment but next node does not have alignment or alignment values differ
|
|
43
|
-
if (nextNodeMarks.length === 0 || !alignmentValuesMatch) {
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return supportedMarks;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
1
|
/** True when `mark` has an equal counterpart (type + attrs) in `marks`. */
|
|
51
2
|
const hasMatchingMark = (mark, marks) => {
|
|
52
3
|
const found = mark.type.isInSet(marks);
|
|
@@ -11,7 +11,7 @@ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
|
11
11
|
import { ACTIVE_DRAG_HANDLE_ATTR } from '../ui/consts';
|
|
12
12
|
import { DragHandle, DragHandleWithVisibility } from '../ui/drag-handle';
|
|
13
13
|
import { TYPE_HANDLE_DEC, TYPE_NODE_DEC, unmountDecorations } from './decorations-common';
|
|
14
|
-
import {
|
|
14
|
+
import { getMatchingBlockMarks } from './utils/marks';
|
|
15
15
|
var TYPE_ACTIVE_HANDLE_DEC = 'active-drag-handle-node';
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -67,7 +67,7 @@ export var dragHandleDecoration = function dragHandleDecoration(_ref) {
|
|
|
67
67
|
* Exclude 'breakout' on purpose, so the widgets render at the top of the document to avoid z-index issues
|
|
68
68
|
* Other block marks must be added, otherwise PM will split the DOM elements causing mutations and re-draws
|
|
69
69
|
*/
|
|
70
|
-
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
70
|
+
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
71
71
|
destroy: function destroy(node) {
|
|
72
72
|
unbind && unbind();
|
|
73
73
|
}
|
|
@@ -76,7 +76,7 @@ export var dragHandleDecoration = function dragHandleDecoration(_ref) {
|
|
|
76
76
|
type: TYPE_HANDLE_DEC,
|
|
77
77
|
// eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
|
|
78
78
|
testid: "".concat(TYPE_HANDLE_DEC, "-").concat(uuid()),
|
|
79
|
-
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
79
|
+
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, pos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
80
80
|
destroy: function destroy(node) {
|
|
81
81
|
unbind && unbind();
|
|
82
82
|
}
|
|
@@ -8,7 +8,7 @@ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
|
8
8
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
9
9
|
import { ACTIVE_QUICK_INSERT_ATTR } from '../ui/consts';
|
|
10
10
|
import { QuickInsertWithVisibility } from '../ui/quick-insert-button';
|
|
11
|
-
import {
|
|
11
|
+
import { getMatchingBlockMarks } from './utils/marks';
|
|
12
12
|
var TYPE_QUICK_INSERT = 'INSERT_BUTTON';
|
|
13
13
|
var TYPE_ACTIVE_QUICK_INSERT_NODE = 'active-quick-insert-node';
|
|
14
14
|
export var findQuickInsertInsertButtonDecoration = function findQuickInsertInsertButtonDecoration(decorations, from, to) {
|
|
@@ -54,7 +54,7 @@ export var quickInsertButtonDecoration = function quickInsertButtonDecoration(_r
|
|
|
54
54
|
* Other block marks must be added, otherwise PM will split the DOM elements causing mutations and re-draws
|
|
55
55
|
*/
|
|
56
56
|
|
|
57
|
-
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, rootPos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) :
|
|
57
|
+
marks: expValEquals('platform_editor_small_font_size', 'isEnabled', true) ? getMatchingBlockMarks(editorState, rootPos, [editorState.schema.marks.alignment, editorState.schema.marks.fontSize]) : [],
|
|
58
58
|
destroy: function destroy(_) {
|
|
59
59
|
if (fg('platform_editor_fix_widget_destroy')) {
|
|
60
60
|
nodeViewPortalProviderAPI.remove(key);
|
|
@@ -118,7 +118,9 @@ var processHoverSide = function processHoverSide(view, api) {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
// Added right-margin hover, gated so it can be rolled back. When off, fall through to midpoint.
|
|
121
|
-
if (editorExperiment('remix_button_right_margin_hover', true
|
|
121
|
+
if (editorExperiment('remix_button_right_margin_hover', true, {
|
|
122
|
+
exposure: true
|
|
123
|
+
})) {
|
|
122
124
|
var closestBlock = target === null || target === void 0 ? void 0 : target.closest(BLOCK_SELECTORS);
|
|
123
125
|
var blockElement = closestBlock instanceof HTMLElement ? closestBlock : null;
|
|
124
126
|
|
|
@@ -1,58 +1,3 @@
|
|
|
1
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Remove this when platform_editor_clean_up_widget_mark_logic is cleaned up.
|
|
5
|
-
*
|
|
6
|
-
* Returns list of block marks on schema that widgets are allowed to render inside
|
|
7
|
-
* Currently
|
|
8
|
-
* - indent
|
|
9
|
-
* - alignment
|
|
10
|
-
* @param state - The editor state
|
|
11
|
-
* @returns The block marks
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const marks = getBlockMarks(state);
|
|
15
|
-
* console.log(marks);
|
|
16
|
-
* // [indent, alignment]
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export var getActiveBlockMarks = function getActiveBlockMarks(state, pos) {
|
|
20
|
-
var alignment = state.schema.marks.alignment;
|
|
21
|
-
var resolvedPos = state.doc.resolve(pos);
|
|
22
|
-
|
|
23
|
-
// find all active marks at the position
|
|
24
|
-
var marks = resolvedPos.marks();
|
|
25
|
-
var supportedMarks = marks.filter(function (mark) {
|
|
26
|
-
return mark.type === alignment;
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Fix for widget positioning at alignment mark boundaries.
|
|
31
|
-
* When the previous node has alignment but the next node doesn't, we need to prevent
|
|
32
|
-
* the widget from inheriting alignment marks. This ensures the widget is positioned
|
|
33
|
-
* correctly at the boundary rather than being absorbed into the alignment wrapper.
|
|
34
|
-
*/
|
|
35
|
-
if (supportedMarks.length > 0 && expValEquals('platform_editor_native_anchor_with_dnd', 'isEnabled', true)) {
|
|
36
|
-
var _resolvedPos$nodeAfte;
|
|
37
|
-
var nextNodeMarks = ((_resolvedPos$nodeAfte = resolvedPos.nodeAfter) === null || _resolvedPos$nodeAfte === void 0 ? void 0 : _resolvedPos$nodeAfte.marks.filter(function (mark) {
|
|
38
|
-
return mark.type === alignment;
|
|
39
|
-
})) || [];
|
|
40
|
-
|
|
41
|
-
// Compare alignment values to ensure they are the same
|
|
42
|
-
var alignmentValuesMatch = supportedMarks.length === nextNodeMarks.length && supportedMarks.some(function (mark) {
|
|
43
|
-
return nextNodeMarks.some(function (nextMark) {
|
|
44
|
-
return nextMark.eq(mark);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
// previous node has alignment but next node does not have alignment or alignment values differ
|
|
49
|
-
if (nextNodeMarks.length === 0 || !alignmentValuesMatch) {
|
|
50
|
-
return [];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return supportedMarks;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
1
|
/** True when `mark` has an equal counterpart (type + attrs) in `marks`. */
|
|
57
2
|
var hasMatchingMark = function hasMatchingMark(mark, marks) {
|
|
58
3
|
var found = mark.type.isInSet(marks);
|
|
@@ -1,22 +1,5 @@
|
|
|
1
1
|
import type { Mark, MarkType } from '@atlaskit/editor-prosemirror/model';
|
|
2
2
|
import type { EditorState } from '@atlaskit/editor-prosemirror/state';
|
|
3
|
-
/**
|
|
4
|
-
* Remove this when platform_editor_clean_up_widget_mark_logic is cleaned up.
|
|
5
|
-
*
|
|
6
|
-
* Returns list of block marks on schema that widgets are allowed to render inside
|
|
7
|
-
* Currently
|
|
8
|
-
* - indent
|
|
9
|
-
* - alignment
|
|
10
|
-
* @param state - The editor state
|
|
11
|
-
* @returns The block marks
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const marks = getBlockMarks(state);
|
|
15
|
-
* console.log(marks);
|
|
16
|
-
* // [indent, alignment]
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export declare const getActiveBlockMarks: (state: EditorState, pos: number) => Mark[];
|
|
20
3
|
/**
|
|
21
4
|
* Returns supported block marks at `pos` only when both adjacent siblings
|
|
22
5
|
* share the exact same set of those marks. Returns `[]` when they differ,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-block-controls",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.7",
|
|
4
4
|
"description": "Block controls plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -27,20 +27,20 @@
|
|
|
27
27
|
"@atlaskit/editor-plugin-editor-disabled": "^12.0.0",
|
|
28
28
|
"@atlaskit/editor-plugin-editor-viewmode": "^14.0.0",
|
|
29
29
|
"@atlaskit/editor-plugin-feature-flags": "^11.0.0",
|
|
30
|
-
"@atlaskit/editor-plugin-interaction": "^
|
|
30
|
+
"@atlaskit/editor-plugin-interaction": "^22.0.0",
|
|
31
31
|
"@atlaskit/editor-plugin-limited-mode": "^9.0.0",
|
|
32
32
|
"@atlaskit/editor-plugin-metrics": "^13.0.0",
|
|
33
33
|
"@atlaskit/editor-plugin-quick-insert": "^12.0.0",
|
|
34
34
|
"@atlaskit/editor-plugin-selection": "^12.0.0",
|
|
35
35
|
"@atlaskit/editor-plugin-toolbar": "^9.0.0",
|
|
36
|
-
"@atlaskit/editor-plugin-type-ahead": "^12.
|
|
36
|
+
"@atlaskit/editor-plugin-type-ahead": "^12.1.0",
|
|
37
37
|
"@atlaskit/editor-plugin-user-intent": "^10.0.0",
|
|
38
38
|
"@atlaskit/editor-plugin-width": "^13.0.0",
|
|
39
39
|
"@atlaskit/editor-prosemirror": "^8.0.0",
|
|
40
40
|
"@atlaskit/editor-shared-styles": "^4.0.0",
|
|
41
41
|
"@atlaskit/editor-tables": "^3.0.0",
|
|
42
42
|
"@atlaskit/icon": "^36.0.0",
|
|
43
|
-
"@atlaskit/icon-lab": "^7.
|
|
43
|
+
"@atlaskit/icon-lab": "^7.1.0",
|
|
44
44
|
"@atlaskit/link": "^4.0.0",
|
|
45
45
|
"@atlaskit/platform-feature-flags": "^2.0.0",
|
|
46
46
|
"@atlaskit/pragmatic-drag-and-drop": "^2.0.0",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^4.0.0",
|
|
49
49
|
"@atlaskit/primitives": "^20.0.0",
|
|
50
50
|
"@atlaskit/theme": "^26.0.0",
|
|
51
|
-
"@atlaskit/tmp-editor-statsig": "^
|
|
52
|
-
"@atlaskit/tokens": "^
|
|
51
|
+
"@atlaskit/tmp-editor-statsig": "^110.0.0",
|
|
52
|
+
"@atlaskit/tokens": "^15.0.0",
|
|
53
53
|
"@atlaskit/tooltip": "^23.0.0",
|
|
54
54
|
"@babel/runtime": "^7.0.0",
|
|
55
55
|
"@emotion/react": "^11.7.1",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"uuid": "^3.1.0"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
|
-
"@atlaskit/editor-common": "^116.
|
|
62
|
+
"@atlaskit/editor-common": "^116.11.0",
|
|
63
63
|
"react": "^18.2.0",
|
|
64
64
|
"react-dom": "^18.2.0",
|
|
65
65
|
"react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
|
|
@@ -147,6 +147,6 @@
|
|
|
147
147
|
"@atlassian/structured-docs-types": "workspace:^",
|
|
148
148
|
"react": "^18.2.0",
|
|
149
149
|
"react-dom": "^18.2.0",
|
|
150
|
-
"react-intl": "^
|
|
150
|
+
"react-intl": "^7.0.0"
|
|
151
151
|
}
|
|
152
152
|
}
|