@atlaskit/editor-plugin-paste 1.0.2 → 1.0.4
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 +13 -0
- package/dist/cjs/handlers.js +25 -9
- package/dist/es2019/handlers.js +26 -10
- package/dist/esm/handlers.js +26 -10
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-paste
|
|
2
2
|
|
|
3
|
+
## 1.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#74662](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/74662) [`03889d5b1256`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/03889d5b1256) - ED-22244 Allow copy paste of action within a panel into a panel
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
10
|
+
## 1.0.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [#75368](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/75368) [`0a0d45e03ecf`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/0a0d45e03ecf) - ED-22245: Fixing the bug to paste links inside nested codeblock
|
|
15
|
+
|
|
3
16
|
## 1.0.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/cjs/handlers.js
CHANGED
|
@@ -40,6 +40,7 @@ var _utils3 = require("@atlaskit/editor-tables/utils");
|
|
|
40
40
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
41
41
|
var _commands = require("./commands");
|
|
42
42
|
var _edgeCases = require("./edge-cases");
|
|
43
|
+
var _lists = require("./edge-cases/lists");
|
|
43
44
|
var _pluginFactory = require("./pm-plugins/plugin-factory");
|
|
44
45
|
var _util = require("./util");
|
|
45
46
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
@@ -83,7 +84,7 @@ function handleMention(slice, schema) {
|
|
|
83
84
|
}
|
|
84
85
|
function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChangedTr) {
|
|
85
86
|
return function (state, dispatch) {
|
|
86
|
-
var _slice$content$firstC, _transformedSlice$con;
|
|
87
|
+
var _slice$content$firstC, _slice$content$firstC2, _transformedSlice$con;
|
|
87
88
|
var schema = state.schema,
|
|
88
89
|
selection = state.tr.selection;
|
|
89
90
|
var codeMark = schema.marks.code,
|
|
@@ -101,23 +102,32 @@ function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChangedTr) {
|
|
|
101
102
|
taskList = _schema$nodes.taskList,
|
|
102
103
|
listItem = _schema$nodes.listItem,
|
|
103
104
|
expand = _schema$nodes.expand,
|
|
104
|
-
heading = _schema$nodes.heading
|
|
105
|
+
heading = _schema$nodes.heading,
|
|
106
|
+
codeBlock = _schema$nodes.codeBlock;
|
|
105
107
|
var selectionIsValidNode = state.selection instanceof _state.NodeSelection && ['decisionList', 'decisionItem', 'taskList', 'taskItem'].includes(state.selection.node.type.name);
|
|
106
108
|
var selectionHasValidParentNode = (0, _utils2.hasParentNodeOfType)([decisionItem, taskItem, panel])(state.selection);
|
|
107
|
-
var
|
|
109
|
+
var selectionIsCodeBlock = (0, _utils2.hasParentNodeOfType)([codeBlock])(state.selection);
|
|
110
|
+
var panelNode = (0, _util.isSelectionInsidePanel)(selection);
|
|
111
|
+
var selectionIsPanel = Boolean(panelNode);
|
|
112
|
+
|
|
113
|
+
// we avoid handling codeBlock-in-panel use case in this function
|
|
114
|
+
// returning false will allow code to flow into `handleCodeBlock` function
|
|
115
|
+
if (selectionIsPanel && selectionIsCodeBlock) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
108
118
|
|
|
109
119
|
// Some types of content should be handled by the default handler, not this function.
|
|
110
120
|
// Check through slice content to see if it contains an invalid node.
|
|
111
121
|
var sliceIsInvalid = false;
|
|
122
|
+
var sliceHasTask = false;
|
|
112
123
|
slice.content.nodesBetween(0, slice.content.size, function (node) {
|
|
113
124
|
if (node.type === bulletList || node.type === orderedList || node.type === expand || node.type === heading || node.type === listItem) {
|
|
114
125
|
sliceIsInvalid = true;
|
|
115
126
|
}
|
|
116
127
|
if (selectionIsPanel && node.type === taskList) {
|
|
117
|
-
|
|
128
|
+
sliceHasTask = true;
|
|
118
129
|
}
|
|
119
130
|
});
|
|
120
|
-
|
|
121
131
|
// If the selection is a panel,
|
|
122
132
|
// and the slice's first node is a paragraph
|
|
123
133
|
// and it is not from a depth that would indicate it being from inside from another node (e.g. text from a decision)
|
|
@@ -135,6 +145,12 @@ function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChangedTr) {
|
|
|
135
145
|
var transformedSlice = compose.apply(null, filters)(slice);
|
|
136
146
|
var isFirstChildTaskNode = transformedSlice.content.firstChild.type === taskList || transformedSlice.content.firstChild.type === taskItem;
|
|
137
147
|
var tr = (0, _history.closeHistory)(state.tr);
|
|
148
|
+
if (panelNode && sliceHasTask && ((_slice$content$firstC2 = slice.content.firstChild) === null || _slice$content$firstC2 === void 0 ? void 0 : _slice$content$firstC2.type) === panel && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.handle-paste-for-action-in-panel') && (0, _util.isEmptyNode)(panelNode) && selection.$from.node() === selection.$to.node()) {
|
|
149
|
+
return Boolean((0, _lists.insertSliceInsideOfPanelNodeSelected)(panelNode)({
|
|
150
|
+
tr: tr,
|
|
151
|
+
slice: slice
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
138
154
|
var transformedSliceIsValidNode = (transformedSlice.content.firstChild.type.inlineContent || ['decisionList', 'decisionItem', 'taskItem', 'taskList', 'panel'].includes(transformedSlice.content.firstChild.type.name)) && (!(0, _utils.isInListItem)(state) || (0, _utils.isInListItem)(state) && isFirstChildTaskNode);
|
|
139
155
|
// If the slice or the selection are valid nodes to handle,
|
|
140
156
|
// and the slice is not a whole node (i.e. openStart is 1 and openEnd is 0)
|
|
@@ -189,7 +205,7 @@ function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChangedTr) {
|
|
|
189
205
|
}
|
|
190
206
|
function handlePasteNonNestableBlockNodesIntoList(slice) {
|
|
191
207
|
return function (state, dispatch) {
|
|
192
|
-
var _tr$doc$nodeAt, _slice$content$
|
|
208
|
+
var _tr$doc$nodeAt, _slice$content$firstC3, _sliceContent$firstCh, _findParentNodeOfType;
|
|
193
209
|
var tr = state.tr;
|
|
194
210
|
var selection = tr.selection;
|
|
195
211
|
var $from = selection.$from,
|
|
@@ -264,7 +280,7 @@ function handlePasteNonNestableBlockNodesIntoList(slice) {
|
|
|
264
280
|
}
|
|
265
281
|
|
|
266
282
|
// handle the insertion of the slice
|
|
267
|
-
if (((_slice$content$
|
|
283
|
+
if (((_slice$content$firstC3 = slice.content.firstChild) === null || _slice$content$firstC3 === void 0 ? void 0 : _slice$content$firstC3.type.name) === 'blockquote' && (0, _utils2.contains)(slice.content.firstChild, state.schema.nodes.listItem)) {
|
|
268
284
|
(0, _edgeCases.insertSliceForListsInsideBlockquote)({
|
|
269
285
|
tr: tr,
|
|
270
286
|
slice: slice
|
|
@@ -983,6 +999,6 @@ var handleSelectedTable = exports.handleSelectedTable = function handleSelectedT
|
|
|
983
999
|
};
|
|
984
1000
|
};
|
|
985
1001
|
function checkTaskListInList(state, slice) {
|
|
986
|
-
var _slice$content$
|
|
987
|
-
return Boolean((0, _utils.isInListItem)(state) && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.allow-action-in-list') && ['taskList', 'taskItem'].includes(((_slice$content$
|
|
1002
|
+
var _slice$content$firstC4;
|
|
1003
|
+
return Boolean((0, _utils.isInListItem)(state) && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.allow-action-in-list') && ['taskList', 'taskItem'].includes(((_slice$content$firstC4 = slice.content.firstChild) === null || _slice$content$firstC4 === void 0 || (_slice$content$firstC4 = _slice$content$firstC4.type) === null || _slice$content$firstC4 === void 0 ? void 0 : _slice$content$firstC4.name) || ''));
|
|
988
1004
|
}
|
package/dist/es2019/handlers.js
CHANGED
|
@@ -14,8 +14,9 @@ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
|
14
14
|
|
|
15
15
|
import { startTrackingPastedMacroPositions, stopTrackingPastedMacroPositions } from './commands';
|
|
16
16
|
import { insertSliceForLists, insertSliceForListsInsideBlockquote, insertSliceForTaskInsideList } from './edge-cases';
|
|
17
|
+
import { insertSliceInsideOfPanelNodeSelected } from './edge-cases/lists';
|
|
17
18
|
import { getPluginState as getPastePluginState } from './pm-plugins/plugin-factory';
|
|
18
|
-
import { addReplaceSelectedTableAnalytics, applyTextMarksToSlice, hasOnlyNodesOfType } from './util';
|
|
19
|
+
import { addReplaceSelectedTableAnalytics, applyTextMarksToSlice, hasOnlyNodesOfType, isEmptyNode, isSelectionInsidePanel } from './util';
|
|
19
20
|
|
|
20
21
|
/** Helper type for single arg function */
|
|
21
22
|
|
|
@@ -49,7 +50,7 @@ export function handleMention(slice, schema) {
|
|
|
49
50
|
}
|
|
50
51
|
export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChangedTr) {
|
|
51
52
|
return (state, dispatch) => {
|
|
52
|
-
var _slice$content$firstC, _transformedSlice$con;
|
|
53
|
+
var _slice$content$firstC, _slice$content$firstC2, _transformedSlice$con;
|
|
53
54
|
const {
|
|
54
55
|
schema,
|
|
55
56
|
tr: {
|
|
@@ -74,25 +75,34 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChange
|
|
|
74
75
|
taskList,
|
|
75
76
|
listItem,
|
|
76
77
|
expand,
|
|
77
|
-
heading
|
|
78
|
+
heading,
|
|
79
|
+
codeBlock
|
|
78
80
|
}
|
|
79
81
|
} = schema;
|
|
80
82
|
const selectionIsValidNode = state.selection instanceof NodeSelection && ['decisionList', 'decisionItem', 'taskList', 'taskItem'].includes(state.selection.node.type.name);
|
|
81
83
|
const selectionHasValidParentNode = hasParentNodeOfType([decisionItem, taskItem, panel])(state.selection);
|
|
82
|
-
const
|
|
84
|
+
const selectionIsCodeBlock = hasParentNodeOfType([codeBlock])(state.selection);
|
|
85
|
+
const panelNode = isSelectionInsidePanel(selection);
|
|
86
|
+
const selectionIsPanel = Boolean(panelNode);
|
|
87
|
+
|
|
88
|
+
// we avoid handling codeBlock-in-panel use case in this function
|
|
89
|
+
// returning false will allow code to flow into `handleCodeBlock` function
|
|
90
|
+
if (selectionIsPanel && selectionIsCodeBlock) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
83
93
|
|
|
84
94
|
// Some types of content should be handled by the default handler, not this function.
|
|
85
95
|
// Check through slice content to see if it contains an invalid node.
|
|
86
96
|
let sliceIsInvalid = false;
|
|
97
|
+
let sliceHasTask = false;
|
|
87
98
|
slice.content.nodesBetween(0, slice.content.size, node => {
|
|
88
99
|
if (node.type === bulletList || node.type === orderedList || node.type === expand || node.type === heading || node.type === listItem) {
|
|
89
100
|
sliceIsInvalid = true;
|
|
90
101
|
}
|
|
91
102
|
if (selectionIsPanel && node.type === taskList) {
|
|
92
|
-
|
|
103
|
+
sliceHasTask = true;
|
|
93
104
|
}
|
|
94
105
|
});
|
|
95
|
-
|
|
96
106
|
// If the selection is a panel,
|
|
97
107
|
// and the slice's first node is a paragraph
|
|
98
108
|
// and it is not from a depth that would indicate it being from inside from another node (e.g. text from a decision)
|
|
@@ -110,6 +120,12 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChange
|
|
|
110
120
|
const transformedSlice = compose.apply(null, filters)(slice);
|
|
111
121
|
const isFirstChildTaskNode = transformedSlice.content.firstChild.type === taskList || transformedSlice.content.firstChild.type === taskItem;
|
|
112
122
|
const tr = closeHistory(state.tr);
|
|
123
|
+
if (panelNode && sliceHasTask && ((_slice$content$firstC2 = slice.content.firstChild) === null || _slice$content$firstC2 === void 0 ? void 0 : _slice$content$firstC2.type) === panel && getBooleanFF('platform.editor.handle-paste-for-action-in-panel') && isEmptyNode(panelNode) && selection.$from.node() === selection.$to.node()) {
|
|
124
|
+
return Boolean(insertSliceInsideOfPanelNodeSelected(panelNode)({
|
|
125
|
+
tr,
|
|
126
|
+
slice
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
113
129
|
const transformedSliceIsValidNode = (transformedSlice.content.firstChild.type.inlineContent || ['decisionList', 'decisionItem', 'taskItem', 'taskList', 'panel'].includes(transformedSlice.content.firstChild.type.name)) && (!isInListItem(state) || isInListItem(state) && isFirstChildTaskNode);
|
|
114
130
|
// If the slice or the selection are valid nodes to handle,
|
|
115
131
|
// and the slice is not a whole node (i.e. openStart is 1 and openEnd is 0)
|
|
@@ -164,7 +180,7 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChange
|
|
|
164
180
|
}
|
|
165
181
|
export function handlePasteNonNestableBlockNodesIntoList(slice) {
|
|
166
182
|
return (state, dispatch) => {
|
|
167
|
-
var _tr$doc$nodeAt, _slice$content$
|
|
183
|
+
var _tr$doc$nodeAt, _slice$content$firstC3, _sliceContent$firstCh, _findParentNodeOfType;
|
|
168
184
|
const {
|
|
169
185
|
tr
|
|
170
186
|
} = state;
|
|
@@ -246,7 +262,7 @@ export function handlePasteNonNestableBlockNodesIntoList(slice) {
|
|
|
246
262
|
}
|
|
247
263
|
|
|
248
264
|
// handle the insertion of the slice
|
|
249
|
-
if (((_slice$content$
|
|
265
|
+
if (((_slice$content$firstC3 = slice.content.firstChild) === null || _slice$content$firstC3 === void 0 ? void 0 : _slice$content$firstC3.type.name) === 'blockquote' && contains(slice.content.firstChild, state.schema.nodes.listItem)) {
|
|
250
266
|
insertSliceForListsInsideBlockquote({
|
|
251
267
|
tr,
|
|
252
268
|
slice
|
|
@@ -962,6 +978,6 @@ export const handleSelectedTable = editorAnalyticsAPI => slice => (state, dispat
|
|
|
962
978
|
return false;
|
|
963
979
|
};
|
|
964
980
|
export function checkTaskListInList(state, slice) {
|
|
965
|
-
var _slice$content$
|
|
966
|
-
return Boolean(isInListItem(state) && getBooleanFF('platform.editor.allow-action-in-list') && ['taskList', 'taskItem'].includes(((_slice$content$
|
|
981
|
+
var _slice$content$firstC4, _slice$content$firstC5;
|
|
982
|
+
return Boolean(isInListItem(state) && getBooleanFF('platform.editor.allow-action-in-list') && ['taskList', 'taskItem'].includes(((_slice$content$firstC4 = slice.content.firstChild) === null || _slice$content$firstC4 === void 0 ? void 0 : (_slice$content$firstC5 = _slice$content$firstC4.type) === null || _slice$content$firstC5 === void 0 ? void 0 : _slice$content$firstC5.name) || ''));
|
|
967
983
|
}
|
package/dist/esm/handlers.js
CHANGED
|
@@ -22,8 +22,9 @@ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
|
22
22
|
|
|
23
23
|
import { startTrackingPastedMacroPositions, stopTrackingPastedMacroPositions } from './commands';
|
|
24
24
|
import { insertSliceForLists, insertSliceForListsInsideBlockquote, insertSliceForTaskInsideList } from './edge-cases';
|
|
25
|
+
import { insertSliceInsideOfPanelNodeSelected } from './edge-cases/lists';
|
|
25
26
|
import { getPluginState as getPastePluginState } from './pm-plugins/plugin-factory';
|
|
26
|
-
import { addReplaceSelectedTableAnalytics, applyTextMarksToSlice, hasOnlyNodesOfType } from './util';
|
|
27
|
+
import { addReplaceSelectedTableAnalytics, applyTextMarksToSlice, hasOnlyNodesOfType, isEmptyNode, isSelectionInsidePanel } from './util';
|
|
27
28
|
|
|
28
29
|
/** Helper type for single arg function */
|
|
29
30
|
|
|
@@ -61,7 +62,7 @@ export function handleMention(slice, schema) {
|
|
|
61
62
|
}
|
|
62
63
|
export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChangedTr) {
|
|
63
64
|
return function (state, dispatch) {
|
|
64
|
-
var _slice$content$firstC, _transformedSlice$con;
|
|
65
|
+
var _slice$content$firstC, _slice$content$firstC2, _transformedSlice$con;
|
|
65
66
|
var schema = state.schema,
|
|
66
67
|
selection = state.tr.selection;
|
|
67
68
|
var codeMark = schema.marks.code,
|
|
@@ -79,23 +80,32 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChange
|
|
|
79
80
|
taskList = _schema$nodes.taskList,
|
|
80
81
|
listItem = _schema$nodes.listItem,
|
|
81
82
|
expand = _schema$nodes.expand,
|
|
82
|
-
heading = _schema$nodes.heading
|
|
83
|
+
heading = _schema$nodes.heading,
|
|
84
|
+
codeBlock = _schema$nodes.codeBlock;
|
|
83
85
|
var selectionIsValidNode = state.selection instanceof NodeSelection && ['decisionList', 'decisionItem', 'taskList', 'taskItem'].includes(state.selection.node.type.name);
|
|
84
86
|
var selectionHasValidParentNode = hasParentNodeOfType([decisionItem, taskItem, panel])(state.selection);
|
|
85
|
-
var
|
|
87
|
+
var selectionIsCodeBlock = hasParentNodeOfType([codeBlock])(state.selection);
|
|
88
|
+
var panelNode = isSelectionInsidePanel(selection);
|
|
89
|
+
var selectionIsPanel = Boolean(panelNode);
|
|
90
|
+
|
|
91
|
+
// we avoid handling codeBlock-in-panel use case in this function
|
|
92
|
+
// returning false will allow code to flow into `handleCodeBlock` function
|
|
93
|
+
if (selectionIsPanel && selectionIsCodeBlock) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
86
96
|
|
|
87
97
|
// Some types of content should be handled by the default handler, not this function.
|
|
88
98
|
// Check through slice content to see if it contains an invalid node.
|
|
89
99
|
var sliceIsInvalid = false;
|
|
100
|
+
var sliceHasTask = false;
|
|
90
101
|
slice.content.nodesBetween(0, slice.content.size, function (node) {
|
|
91
102
|
if (node.type === bulletList || node.type === orderedList || node.type === expand || node.type === heading || node.type === listItem) {
|
|
92
103
|
sliceIsInvalid = true;
|
|
93
104
|
}
|
|
94
105
|
if (selectionIsPanel && node.type === taskList) {
|
|
95
|
-
|
|
106
|
+
sliceHasTask = true;
|
|
96
107
|
}
|
|
97
108
|
});
|
|
98
|
-
|
|
99
109
|
// If the selection is a panel,
|
|
100
110
|
// and the slice's first node is a paragraph
|
|
101
111
|
// and it is not from a depth that would indicate it being from inside from another node (e.g. text from a decision)
|
|
@@ -113,6 +123,12 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChange
|
|
|
113
123
|
var transformedSlice = compose.apply(null, filters)(slice);
|
|
114
124
|
var isFirstChildTaskNode = transformedSlice.content.firstChild.type === taskList || transformedSlice.content.firstChild.type === taskItem;
|
|
115
125
|
var tr = closeHistory(state.tr);
|
|
126
|
+
if (panelNode && sliceHasTask && ((_slice$content$firstC2 = slice.content.firstChild) === null || _slice$content$firstC2 === void 0 ? void 0 : _slice$content$firstC2.type) === panel && getBooleanFF('platform.editor.handle-paste-for-action-in-panel') && isEmptyNode(panelNode) && selection.$from.node() === selection.$to.node()) {
|
|
127
|
+
return Boolean(insertSliceInsideOfPanelNodeSelected(panelNode)({
|
|
128
|
+
tr: tr,
|
|
129
|
+
slice: slice
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
116
132
|
var transformedSliceIsValidNode = (transformedSlice.content.firstChild.type.inlineContent || ['decisionList', 'decisionItem', 'taskItem', 'taskList', 'panel'].includes(transformedSlice.content.firstChild.type.name)) && (!isInListItem(state) || isInListItem(state) && isFirstChildTaskNode);
|
|
117
133
|
// If the slice or the selection are valid nodes to handle,
|
|
118
134
|
// and the slice is not a whole node (i.e. openStart is 1 and openEnd is 0)
|
|
@@ -167,7 +183,7 @@ export function handlePasteIntoTaskOrDecisionOrPanel(slice, queueCardsFromChange
|
|
|
167
183
|
}
|
|
168
184
|
export function handlePasteNonNestableBlockNodesIntoList(slice) {
|
|
169
185
|
return function (state, dispatch) {
|
|
170
|
-
var _tr$doc$nodeAt, _slice$content$
|
|
186
|
+
var _tr$doc$nodeAt, _slice$content$firstC3, _sliceContent$firstCh, _findParentNodeOfType;
|
|
171
187
|
var tr = state.tr;
|
|
172
188
|
var selection = tr.selection;
|
|
173
189
|
var $from = selection.$from,
|
|
@@ -242,7 +258,7 @@ export function handlePasteNonNestableBlockNodesIntoList(slice) {
|
|
|
242
258
|
}
|
|
243
259
|
|
|
244
260
|
// handle the insertion of the slice
|
|
245
|
-
if (((_slice$content$
|
|
261
|
+
if (((_slice$content$firstC3 = slice.content.firstChild) === null || _slice$content$firstC3 === void 0 ? void 0 : _slice$content$firstC3.type.name) === 'blockquote' && contains(slice.content.firstChild, state.schema.nodes.listItem)) {
|
|
246
262
|
insertSliceForListsInsideBlockquote({
|
|
247
263
|
tr: tr,
|
|
248
264
|
slice: slice
|
|
@@ -961,6 +977,6 @@ export var handleSelectedTable = function handleSelectedTable(editorAnalyticsAPI
|
|
|
961
977
|
};
|
|
962
978
|
};
|
|
963
979
|
export function checkTaskListInList(state, slice) {
|
|
964
|
-
var _slice$content$
|
|
965
|
-
return Boolean(isInListItem(state) && getBooleanFF('platform.editor.allow-action-in-list') && ['taskList', 'taskItem'].includes(((_slice$content$
|
|
980
|
+
var _slice$content$firstC4;
|
|
981
|
+
return Boolean(isInListItem(state) && getBooleanFF('platform.editor.allow-action-in-list') && ['taskList', 'taskItem'].includes(((_slice$content$firstC4 = slice.content.firstChild) === null || _slice$content$firstC4 === void 0 || (_slice$content$firstC4 = _slice$content$firstC4.type) === null || _slice$content$firstC4 === void 0 ? void 0 : _slice$content$firstC4.name) || ''));
|
|
966
982
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-paste",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Paste plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
".": "./src/index.ts"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@atlaskit/editor-common": "^78.
|
|
36
|
+
"@atlaskit/editor-common": "^78.4.0",
|
|
37
37
|
"@atlaskit/editor-markdown-transformer": "^5.3.0",
|
|
38
38
|
"@atlaskit/editor-plugin-analytics": "^1.0.0",
|
|
39
39
|
"@atlaskit/editor-plugin-annotation": "^1.0.0",
|
|
@@ -125,6 +125,9 @@
|
|
|
125
125
|
},
|
|
126
126
|
"platform.editor.media.fix-copy-paste-excel_62g4s": {
|
|
127
127
|
"type": "boolean"
|
|
128
|
+
},
|
|
129
|
+
"platform.editor.handle-paste-for-action-in-panel": {
|
|
130
|
+
"type": "boolean"
|
|
128
131
|
}
|
|
129
132
|
}
|
|
130
133
|
}
|