1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-08-09 07:15:39 +00:00

Fix pasting of multiple types at once (#6622)

* wip fix dropzone closure variable problem

* just a new commit to autocreate at test wiki
This commit is contained in:
Mario Pietsch 2023-01-17 16:02:57 +01:00 committed by GitHub
parent e41511c652
commit c51816e826
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -232,10 +232,32 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
}; };
DropZoneWidget.prototype.handlePasteEvent = function(event) { DropZoneWidget.prototype.handlePasteEvent = function(event) {
var self = this, var self = this;
readFileCallback = function(tiddlerFieldsArray) { var readFileCallback = function(tiddlerFieldsArray) {
self.readFileCallback(tiddlerFieldsArray); self.readFileCallback(tiddlerFieldsArray);
}; };
var getItem = function(type) {
type = type || "text/plain";
return function(str) {
// Use the deserializer specified if any
if(self.dropzoneDeserializer) {
tiddlerFields = self.wiki.deserializeTiddlers(null,str,{title: self.wiki.generateNewTitle("Untitled " + type)},{deserializer:self.dropzoneDeserializer});
if(tiddlerFields && tiddlerFields.length) {
readFileCallback(tiddlerFields);
}
} else {
tiddlerFields = {
title: self.wiki.generateNewTitle("Untitled " + type),
text: str,
type: type
};
if($tw.log.IMPORT) {
console.log("Importing string '" + str + "', type: '" + type + "'");
}
readFileCallback([tiddlerFields]);
}
}
};
// Let the browser handle it if we're in a textarea or input box // Let the browser handle it if we're in a textarea or input box
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) { if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {
var self = this, var self = this,
@ -251,27 +273,10 @@ DropZoneWidget.prototype.handlePasteEvent = function(event) {
}); });
} else if(item.kind === "string") { } else if(item.kind === "string") {
// Create tiddlers from string items // Create tiddlers from string items
var tiddlerFields, var tiddlerFields;
type = item.type; // It's important to give getAsString a closure with the right type
item.getAsString(function(str) { // So it can be added to the import queue
// Use the deserializer specified if any item.getAsString(getItem(item.type));
if(self.dropzoneDeserializer) {
tiddlerFields = self.wiki.deserializeTiddlers(null,str,{title: self.wiki.generateNewTitle("Untitled")},{deserializer:self.dropzoneDeserializer});
if(tiddlerFields && tiddlerFields.length) {
readFileCallback(tiddlerFields);
}
} else {
tiddlerFields = {
title: self.wiki.generateNewTitle("Untitled"),
text: str,
type: type
};
if($tw.log.IMPORT) {
console.log("Importing string '" + str + "', type: '" + type + "'");
}
readFileCallback([tiddlerFields]);
}
});
} }
} }
// Tell the browser that we've handled the paste // Tell the browser that we've handled the paste