@ckeditor/ckeditor5-clipboard 40.0.0 → 40.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.
- package/LICENSE.md +3 -3
- package/package.json +6 -6
- package/src/augmentation.d.ts +15 -15
- package/src/augmentation.js +5 -5
- package/src/clipboard.d.ts +31 -31
- package/src/clipboard.js +35 -35
- package/src/clipboardobserver.d.ts +312 -312
- package/src/clipboardobserver.js +94 -94
- package/src/clipboardpipeline.d.ts +260 -260
- package/src/clipboardpipeline.js +266 -266
- package/src/dragdrop.d.ts +102 -102
- package/src/dragdrop.js +577 -577
- package/src/dragdropblocktoolbar.d.ts +47 -47
- package/src/dragdropblocktoolbar.js +121 -121
- package/src/dragdroptarget.d.ts +94 -94
- package/src/dragdroptarget.js +373 -363
- package/src/index.d.ts +16 -16
- package/src/index.js +14 -14
- package/src/lineview.d.ts +45 -45
- package/src/lineview.js +44 -44
- package/src/pasteplaintext.d.ts +28 -28
- package/src/pasteplaintext.js +82 -82
- package/src/utils/normalizeclipboarddata.d.ts +15 -15
- package/src/utils/normalizeclipboarddata.js +27 -27
- package/src/utils/plaintexttohtml.d.ts +14 -14
- package/src/utils/plaintexttohtml.js +39 -37
- package/src/utils/viewtoplaintext.d.ts +15 -15
- package/src/utils/viewtoplaintext.js +67 -50
package/src/clipboardobserver.js
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
-
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @module clipboard/clipboardobserver
|
|
7
|
-
*/
|
|
8
|
-
import { EventInfo } from '@ckeditor/ckeditor5-utils';
|
|
9
|
-
import { DataTransfer, DomEventObserver } from '@ckeditor/ckeditor5-engine';
|
|
10
|
-
/**
|
|
11
|
-
* Clipboard events observer.
|
|
12
|
-
*
|
|
13
|
-
* Fires the following events:
|
|
14
|
-
*
|
|
15
|
-
* * {@link module:engine/view/document~Document#event:clipboardInput},
|
|
16
|
-
* * {@link module:engine/view/document~Document#event:paste},
|
|
17
|
-
* * {@link module:engine/view/document~Document#event:copy},
|
|
18
|
-
* * {@link module:engine/view/document~Document#event:cut},
|
|
19
|
-
* * {@link module:engine/view/document~Document#event:drop},
|
|
20
|
-
* * {@link module:engine/view/document~Document#event:dragover},
|
|
21
|
-
* * {@link module:engine/view/document~Document#event:dragging},
|
|
22
|
-
* * {@link module:engine/view/document~Document#event:dragstart},
|
|
23
|
-
* * {@link module:engine/view/document~Document#event:dragend},
|
|
24
|
-
* * {@link module:engine/view/document~Document#event:dragenter},
|
|
25
|
-
* * {@link module:engine/view/document~Document#event:dragleave}.
|
|
26
|
-
*
|
|
27
|
-
* **Note**: This observer is not available by default (ckeditor5-engine does not add it on its own).
|
|
28
|
-
* To make it available, it needs to be added to {@link module:engine/view/document~Document} by using
|
|
29
|
-
* the {@link module:engine/view/view~View#addObserver `View#addObserver()`} method. Alternatively, you can load the
|
|
30
|
-
* {@link module:clipboard/clipboard~Clipboard} plugin which adds this observer automatically (because it uses it).
|
|
31
|
-
*/
|
|
32
|
-
export default class ClipboardObserver extends DomEventObserver {
|
|
33
|
-
constructor(view) {
|
|
34
|
-
super(view);
|
|
35
|
-
this.domEventType = [
|
|
36
|
-
'paste', 'copy', 'cut', 'drop', 'dragover', 'dragstart', 'dragend', 'dragenter', 'dragleave'
|
|
37
|
-
];
|
|
38
|
-
const viewDocument = this.document;
|
|
39
|
-
this.listenTo(viewDocument, 'paste', handleInput('clipboardInput'), { priority: 'low' });
|
|
40
|
-
this.listenTo(viewDocument, 'drop', handleInput('clipboardInput'), { priority: 'low' });
|
|
41
|
-
this.listenTo(viewDocument, 'dragover', handleInput('dragging'), { priority: 'low' });
|
|
42
|
-
function handleInput(type) {
|
|
43
|
-
return (evt, data) => {
|
|
44
|
-
data.preventDefault();
|
|
45
|
-
const targetRanges = data.dropRange ? [data.dropRange] : null;
|
|
46
|
-
const eventInfo = new EventInfo(viewDocument, type);
|
|
47
|
-
viewDocument.fire(eventInfo, {
|
|
48
|
-
dataTransfer: data.dataTransfer,
|
|
49
|
-
method: evt.name,
|
|
50
|
-
targetRanges,
|
|
51
|
-
target: data.target,
|
|
52
|
-
domEvent: data.domEvent
|
|
53
|
-
});
|
|
54
|
-
// If CKEditor handled the input, do not bubble the original event any further.
|
|
55
|
-
// This helps external integrations recognize that fact and act accordingly.
|
|
56
|
-
// https://github.com/ckeditor/ckeditor5-upload/issues/92
|
|
57
|
-
if (eventInfo.stop.called) {
|
|
58
|
-
data.stopPropagation();
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
onDomEvent(domEvent) {
|
|
64
|
-
const nativeDataTransfer = 'clipboardData' in domEvent ? domEvent.clipboardData : domEvent.dataTransfer;
|
|
65
|
-
const cacheFiles = domEvent.type == 'drop' || domEvent.type == 'paste';
|
|
66
|
-
const evtData = {
|
|
67
|
-
dataTransfer: new DataTransfer(nativeDataTransfer, { cacheFiles })
|
|
68
|
-
};
|
|
69
|
-
if (domEvent.type == 'drop' || domEvent.type == 'dragover') {
|
|
70
|
-
evtData.dropRange = getDropViewRange(this.view, domEvent);
|
|
71
|
-
}
|
|
72
|
-
this.fire(domEvent.type, domEvent, evtData);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function getDropViewRange(view, domEvent) {
|
|
76
|
-
const domDoc = domEvent.target.ownerDocument;
|
|
77
|
-
const x = domEvent.clientX;
|
|
78
|
-
const y = domEvent.clientY;
|
|
79
|
-
let domRange;
|
|
80
|
-
// Webkit & Blink.
|
|
81
|
-
if (domDoc.caretRangeFromPoint && domDoc.caretRangeFromPoint(x, y)) {
|
|
82
|
-
domRange = domDoc.caretRangeFromPoint(x, y);
|
|
83
|
-
}
|
|
84
|
-
// FF.
|
|
85
|
-
else if (domEvent.rangeParent) {
|
|
86
|
-
domRange = domDoc.createRange();
|
|
87
|
-
domRange.setStart(domEvent.rangeParent, domEvent.rangeOffset);
|
|
88
|
-
domRange.collapse(true);
|
|
89
|
-
}
|
|
90
|
-
if (domRange) {
|
|
91
|
-
return view.domConverter.domRangeToView(domRange);
|
|
92
|
-
}
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module clipboard/clipboardobserver
|
|
7
|
+
*/
|
|
8
|
+
import { EventInfo } from '@ckeditor/ckeditor5-utils';
|
|
9
|
+
import { DataTransfer, DomEventObserver } from '@ckeditor/ckeditor5-engine';
|
|
10
|
+
/**
|
|
11
|
+
* Clipboard events observer.
|
|
12
|
+
*
|
|
13
|
+
* Fires the following events:
|
|
14
|
+
*
|
|
15
|
+
* * {@link module:engine/view/document~Document#event:clipboardInput},
|
|
16
|
+
* * {@link module:engine/view/document~Document#event:paste},
|
|
17
|
+
* * {@link module:engine/view/document~Document#event:copy},
|
|
18
|
+
* * {@link module:engine/view/document~Document#event:cut},
|
|
19
|
+
* * {@link module:engine/view/document~Document#event:drop},
|
|
20
|
+
* * {@link module:engine/view/document~Document#event:dragover},
|
|
21
|
+
* * {@link module:engine/view/document~Document#event:dragging},
|
|
22
|
+
* * {@link module:engine/view/document~Document#event:dragstart},
|
|
23
|
+
* * {@link module:engine/view/document~Document#event:dragend},
|
|
24
|
+
* * {@link module:engine/view/document~Document#event:dragenter},
|
|
25
|
+
* * {@link module:engine/view/document~Document#event:dragleave}.
|
|
26
|
+
*
|
|
27
|
+
* **Note**: This observer is not available by default (ckeditor5-engine does not add it on its own).
|
|
28
|
+
* To make it available, it needs to be added to {@link module:engine/view/document~Document} by using
|
|
29
|
+
* the {@link module:engine/view/view~View#addObserver `View#addObserver()`} method. Alternatively, you can load the
|
|
30
|
+
* {@link module:clipboard/clipboard~Clipboard} plugin which adds this observer automatically (because it uses it).
|
|
31
|
+
*/
|
|
32
|
+
export default class ClipboardObserver extends DomEventObserver {
|
|
33
|
+
constructor(view) {
|
|
34
|
+
super(view);
|
|
35
|
+
this.domEventType = [
|
|
36
|
+
'paste', 'copy', 'cut', 'drop', 'dragover', 'dragstart', 'dragend', 'dragenter', 'dragleave'
|
|
37
|
+
];
|
|
38
|
+
const viewDocument = this.document;
|
|
39
|
+
this.listenTo(viewDocument, 'paste', handleInput('clipboardInput'), { priority: 'low' });
|
|
40
|
+
this.listenTo(viewDocument, 'drop', handleInput('clipboardInput'), { priority: 'low' });
|
|
41
|
+
this.listenTo(viewDocument, 'dragover', handleInput('dragging'), { priority: 'low' });
|
|
42
|
+
function handleInput(type) {
|
|
43
|
+
return (evt, data) => {
|
|
44
|
+
data.preventDefault();
|
|
45
|
+
const targetRanges = data.dropRange ? [data.dropRange] : null;
|
|
46
|
+
const eventInfo = new EventInfo(viewDocument, type);
|
|
47
|
+
viewDocument.fire(eventInfo, {
|
|
48
|
+
dataTransfer: data.dataTransfer,
|
|
49
|
+
method: evt.name,
|
|
50
|
+
targetRanges,
|
|
51
|
+
target: data.target,
|
|
52
|
+
domEvent: data.domEvent
|
|
53
|
+
});
|
|
54
|
+
// If CKEditor handled the input, do not bubble the original event any further.
|
|
55
|
+
// This helps external integrations recognize that fact and act accordingly.
|
|
56
|
+
// https://github.com/ckeditor/ckeditor5-upload/issues/92
|
|
57
|
+
if (eventInfo.stop.called) {
|
|
58
|
+
data.stopPropagation();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
onDomEvent(domEvent) {
|
|
64
|
+
const nativeDataTransfer = 'clipboardData' in domEvent ? domEvent.clipboardData : domEvent.dataTransfer;
|
|
65
|
+
const cacheFiles = domEvent.type == 'drop' || domEvent.type == 'paste';
|
|
66
|
+
const evtData = {
|
|
67
|
+
dataTransfer: new DataTransfer(nativeDataTransfer, { cacheFiles })
|
|
68
|
+
};
|
|
69
|
+
if (domEvent.type == 'drop' || domEvent.type == 'dragover') {
|
|
70
|
+
evtData.dropRange = getDropViewRange(this.view, domEvent);
|
|
71
|
+
}
|
|
72
|
+
this.fire(domEvent.type, domEvent, evtData);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function getDropViewRange(view, domEvent) {
|
|
76
|
+
const domDoc = domEvent.target.ownerDocument;
|
|
77
|
+
const x = domEvent.clientX;
|
|
78
|
+
const y = domEvent.clientY;
|
|
79
|
+
let domRange;
|
|
80
|
+
// Webkit & Blink.
|
|
81
|
+
if (domDoc.caretRangeFromPoint && domDoc.caretRangeFromPoint(x, y)) {
|
|
82
|
+
domRange = domDoc.caretRangeFromPoint(x, y);
|
|
83
|
+
}
|
|
84
|
+
// FF.
|
|
85
|
+
else if (domEvent.rangeParent) {
|
|
86
|
+
domRange = domDoc.createRange();
|
|
87
|
+
domRange.setStart(domEvent.rangeParent, domEvent.rangeOffset);
|
|
88
|
+
domRange.collapse(true);
|
|
89
|
+
}
|
|
90
|
+
if (domRange) {
|
|
91
|
+
return view.domConverter.domRangeToView(domRange);
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|