Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
lib
react-ag-qeditor
Commits
0f503d93
Commit
0f503d93
authored
May 14, 2025
by
Яков
Browse files
try fix
parent
d0995235
Changes
2
Hide whitespace changes
Inline
Side-by-side
package.json
View file @
0f503d93
{
{
"name"
:
"react-ag-qeditor"
,
"name"
:
"react-ag-qeditor"
,
"version"
:
"1.0.7
5
"
,
"version"
:
"1.0.7
6
"
,
"description"
:
"WYSIWYG html editor"
,
"description"
:
"WYSIWYG html editor"
,
"author"
:
"atma"
,
"author"
:
"atma"
,
"license"
:
"
MIT
"
,
"license"
:
"
MIT
"
,
...
...
src/extensions/DragAndDrop.js
View file @
0f503d93
...
@@ -12,61 +12,128 @@ const upload = async (file) => {
...
@@ -12,61 +12,128 @@ const upload = async (file) => {
return
response
.
data
.
file_path
;
return
response
.
data
.
file_path
;
};
};
// const DragAndDrop = Extension.create({
// name: 'customDragAndDrop',
// addProseMirrorPlugins() {
// return [
// new Plugin({
// key: new PluginKey('customDragAndDrop'),
// props: {
// handleDOMEvents: {
// async paste (view, event) {
// let items = (event.clipboardData || event.originalEvent.clipboardData).items;
//
// for (let i = 0; i < items.length; i++){
// const { schema } = view.state;
// const image = items[i].getAsFile();
//
// if (!image) {
// return
// }
//
// event.preventDefault();
// const imageSrc = await upload(image);
//
// const node = schema.nodes.image.create({
// src: imageSrc,
// });
// const transaction = view.state.tr.replaceSelectionWith(node);
// view.dispatch(transaction)
// }
// },
// async drop (view, event) {
// const hasFiles = event.dataTransfer.files.length > 0;
//
// // Другой способ достать текст
// // console.log(event.dataTransfer.items[0].getAsString( (i) => {
// // console.log(i)
// // }));
// // console.log(hasFiles)
//
// if (hasFiles) {
// event.preventDefault();
// const images = event.dataTransfer.files;
// const {schema} = view.state;
// const coordinates = view.posAtCoords({left: event.clientX, top: event.clientY});
//
// for (let i = 0; i < images.length; i++) {
// const imageSrc = await upload(images[i]);
// if (imageSrc) {
// const node = schema.nodes.image.create({
// src: imageSrc
// });
// const transaction = view.state.tr.insert(coordinates.pos, node);
// view.dispatch(transaction)
// }
// }
// }
// }
// }
// }
// })
// ]
// }
// });
const
DragAndDrop
=
Extension
.
create
({
const
DragAndDrop
=
Extension
.
create
({
name
:
'
customDragAndDrop
'
,
name
:
'
customDragAndDrop
'
,
addProseMirrorPlugins
()
{
addProseMirrorPlugins
()
{
return
[
return
[
new
Plugin
({
new
Plugin
({
key
:
new
PluginKey
(
'
customDragAndDrop
'
),
key
:
new
PluginKey
(
'
customDragAndDrop
Plugin
'
),
props
:
{
props
:
{
handleDOMEvents
:
{
handleDOMEvents
:
{
async
paste
(
view
,
event
)
{
async
paste
(
view
,
event
)
{
let
items
=
(
event
.
clipboardData
||
event
.
originalEvent
.
clipboardData
).
items
;
const
items
=
(
event
.
clipboardData
||
event
.
originalEvent
.
clipboardData
).
items
;
let
hasImages
=
false
;
for
(
let
i
=
0
;
i
<
items
.
length
;
i
++
){
const
{
schema
}
=
view
.
state
;
const
image
=
items
[
i
].
getAsFile
();
if
(
!
image
)
{
// Проверяем, есть ли изображения в буфере
return
for
(
let
i
=
0
;
i
<
items
.
length
;
i
++
)
{
if
(
items
[
i
].
type
.
indexOf
(
'
image
'
)
!==
-
1
)
{
hasImages
=
true
;
break
;
}
}
}
// Если нет изображений - пропускаем обработку
if
(
!
hasImages
)
return
false
;
// Обрабатываем только изображения
for
(
let
i
=
0
;
i
<
items
.
length
;
i
++
)
{
const
image
=
items
[
i
].
getAsFile
();
if
(
!
image
||
!
image
.
type
.
match
(
'
image.*
'
))
continue
;
event
.
preventDefault
();
event
.
preventDefault
();
const
imageSrc
=
await
upload
(
image
);
const
imageSrc
=
await
upload
(
image
);
const
node
=
view
.
state
.
schema
.
nodes
.
image
.
create
({
const
node
=
schema
.
nodes
.
image
.
create
({
src
:
imageSrc
,
src
:
imageSrc
,
});
});
const
transaction
=
view
.
state
.
tr
.
replaceSelectionWith
(
node
);
const
transaction
=
view
.
state
.
tr
.
replaceSelectionWith
(
node
);
view
.
dispatch
(
transaction
)
view
.
dispatch
(
transaction
)
;
}
}
return
true
;
},
},
async
drop
(
view
,
event
)
{
async
drop
(
view
,
event
)
{
const
hasFiles
=
event
.
dataTransfer
.
files
.
length
>
0
;
const
hasFiles
=
event
.
dataTransfer
.
files
.
length
>
0
;
if
(
!
hasFiles
)
return
false
;
// Другой способ достать текст
event
.
preventDefault
();
// console.log(event.dataTransfer.items[0].getAsString( (i) => {
const
images
=
event
.
dataTransfer
.
files
;
// console.log(i)
const
{
schema
}
=
view
.
state
;
// }));
const
coordinates
=
view
.
posAtCoords
({
left
:
event
.
clientX
,
top
:
event
.
clientY
});
// console.log(hasFiles)
if
(
hasFiles
)
{
for
(
let
i
=
0
;
i
<
images
.
length
;
i
++
)
{
event
.
preventDefault
();
if
(
!
images
[
i
].
type
.
match
(
'
image.*
'
))
continue
;
const
images
=
event
.
dataTransfer
.
files
;
const
imageSrc
=
await
upload
(
images
[
i
]);
const
{
schema
}
=
view
.
state
;
if
(
imageSrc
)
{
const
coordinates
=
view
.
posAtCoords
({
left
:
event
.
clientX
,
top
:
event
.
clientY
});
const
node
=
schema
.
nodes
.
image
.
create
({
src
:
imageSrc
for
(
let
i
=
0
;
i
<
images
.
length
;
i
++
)
{
});
const
imageSrc
=
await
upload
(
images
[
i
]);
const
transaction
=
view
.
state
.
tr
.
insert
(
coordinates
.
pos
,
node
);
if
(
imageSrc
)
{
view
.
dispatch
(
transaction
);
const
node
=
schema
.
nodes
.
image
.
create
({
src
:
imageSrc
});
const
transaction
=
view
.
state
.
tr
.
insert
(
coordinates
.
pos
,
node
);
view
.
dispatch
(
transaction
)
}
}
}
}
}
return
true
;
}
}
}
}
}
}
...
@@ -74,5 +141,4 @@ const DragAndDrop = Extension.create({
...
@@ -74,5 +141,4 @@ const DragAndDrop = Extension.create({
]
]
}
}
});
});
export
default
DragAndDrop
;
export
default
DragAndDrop
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment