Feat:新增自定义节点粘贴图片时的处理函数选项

This commit is contained in:
街角小林 2023-12-25 17:39:51 +08:00
parent c0db185ca6
commit bac174c8df
3 changed files with 39 additions and 4 deletions

View File

@ -244,5 +244,17 @@ export const defaultOpt = {
// 比如向右拖动时,思维导图图形的最左侧到达画布中心时将无法继续向右拖动,其他同理
isLimitMindMapInCanvas: false,
// 当注册了滚动条插件Scrollbar是否将思维导图限制在画布内isLimitMindMapInCanvas不再起作用
isLimitMindMapInCanvasWhenHasScrollbar: true
isLimitMindMapInCanvasWhenHasScrollbar: true,
// 在节点上粘贴剪贴板中的图片的处理方法默认是转换为data:url数据插入到节点中你可以通过该方法来将图片数据上传到服务器实现保存图片的url
// 可以传递一个异步方法接收Blob类型的图片数据需要返回如下结构
/*
{
url, // 图片url
size: {
width, // 图片的宽度
height //图片的高度
}
}
*/
handleNodePasteImg: null
}

View File

@ -895,8 +895,11 @@ class Render {
// 粘贴
async paste() {
const { errorHandler, handleIsSplitByWrapOnPasteCreateNewNode } =
this.mindMap.opt
const {
errorHandler,
handleIsSplitByWrapOnPasteCreateNewNode,
handleNodePasteImg
} = this.mindMap.opt
// 读取剪贴板的文字和图片
let text = null
let img = null
@ -999,7 +1002,13 @@ class Render {
// 存在图片,则添加到当前激活节点
if (img) {
try {
let imgData = await loadImage(img)
let imgData = null
// 自定义图片处理函数
if (handleNodePasteImg && typeof handleNodePasteImg === 'function') {
imgData = await handleNodePasteImg(img)
} else {
imgData = await loadImage(img)
}
if (this.activeNodeList.length > 0) {
this.activeNodeList.forEach(node => {
this.mindMap.execCommand('SET_NODE_IMAGE', node, {

View File

@ -338,6 +338,20 @@ export default {
break
}
}
// handleNodePasteImg: img => {
// console.log(img)
// return new Promise(resolve => {
// setTimeout(() => {
// resolve({
// url: require('../../../assets/img/themes/autumn.jpg'),
// size: {
// width: 100,
// height: 100
// }
// })
// }, 200)
// })
// }
// isUseCustomNodeContent: true,
// 1routerstorei18nvue西
// customCreateNodeContent: (node) => {