Specifically added to align with existing TinyMCE behaviour which was
used by some users based upon new editor feedback.
+function handleImageLinkInsert(data: DataTransfer, context: EditorUiContext): boolean {
+ const regex = /https?:\/\/([^?#]*?)\.(png|jpeg|jpg|gif|webp|bmp|avif)/i
+ const text = data.getData('text/plain');
+ if (text && regex.test(text)) {
+ context.editor.update(() => {
+ const image = $createImageNode(text);
+ $insertNodes([image]);
+ image.select();
+ });
+ return true;
+ }
+
+ return false;
+}
+
function createDropListener(context: EditorUiContext): (event: DragEvent) => boolean {
const editor = context.editor;
return (event: DragEvent): boolean => {
function createDropListener(context: EditorUiContext): (event: DragEvent) => boolean {
const editor = context.editor;
return (event: DragEvent): boolean => {
- const handled = handleMediaInsert(event.clipboardData, context);
+ const handled =
+ handleImageLinkInsert(event.clipboardData, context) ||
+ handleMediaInsert(event.clipboardData, context);
+
if (handled) {
event.preventDefault();
}
if (handled) {
event.preventDefault();
}