UNPKG

@zxr3680166/simple-mind-map

Version:

一个简单的web在线思维导图

243 lines (240 loc) 10.5 kB
import { CONSTANTS } from './constant' // 默认选项配置 export const defaultOpt = { // 是否只读 readonly: false, // 布局 layout: CONSTANTS.LAYOUT.LOGICAL_STRUCTURE, // 如果结构为鱼骨图,那么可以通过该选项控制倾斜角度 fishboneDeg: 45, // 主题 theme: 'default', // 内置主题:default(默认主题) // 主题配置,会和所选择的主题进行合并 themeConfig: {}, // 放大缩小的增量比例 scaleRatio: 0.2, // 鼠标缩放是否以鼠标当前位置为中心点,否则以画布中心点 mouseScaleCenterUseMousePosition: true, // 最多显示几个标签 maxTag: 5, // 展开收缩按钮尺寸 expandBtnSize: 20, // 节点里图片和文字的间距 imgTextMargin: 5, // 节点里各种文字信息的间距,如图标和文字的间距 textContentMargin: 2, // 多选节点时鼠标移动到边缘时的画布移动偏移量 selectTranslateStep: 3, // 多选节点时鼠标移动距边缘多少距离时开始偏移 selectTranslateLimit: 20, // 自定义节点备注内容显示 customNoteContentShow: null, /* { show(){}, hide(){} } */ // 是否开启节点自由拖拽 enableFreeDrag: false, // 水印配置 watermarkConfig: { text: '', lineSpacing: 100, textSpacing: 100, angle: 30, textStyle: { color: '#999', opacity: 0.5, fontSize: 14 } }, // 达到该宽度文本自动换行 textAutoWrapWidth: 500, // 自定义鼠标滚轮事件处理 // 可以传一个函数,回调参数为事件对象 customHandleMousewheel: null, // 鼠标滚动的行为,如果customHandleMousewheel传了自定义函数,这个属性不生效 mousewheelAction: CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM, // zoom(放大缩小)、move(上下移动) // 当mousewheelAction设为move时,可以通过该属性控制鼠标滚动一下视图移动的步长,单位px mousewheelMoveStep: 100, // 当mousewheelAction设为zoom时,默认向前滚动是缩小,向后滚动是放大,如果该属性设为true,那么会反过来 mousewheelZoomActionReverse: false, // 是否使用鼠标滚轮缩放画布还是使用Mac手势缩放画布 useMouseWheelScaleCanvas: true, // 默认插入的二级节点的文字 defaultInsertSecondLevelNodeText: '二级节点', // 默认插入的二级以下节点的文字 defaultInsertBelowSecondLevelNodeText: '分支主题', // 展开收起按钮的颜色 expandBtnStyle: { color: '#808080', fill: '#fff', fontSize: 13, strokeColor: '#333333' }, // 自定义展开收起按钮的图标 expandBtnIcon: { open: '', // svg字符串 close: '' }, // 处理收起节点数量 expandBtnNumHandler: num => { return num }, // 是否显示带数量的收起按钮 isShowExpandNum: true, // 是否只有当鼠标在画布内才响应快捷键事件 enableShortcutOnlyWhenMouseInSvg: true, // 初始根节点的位置 initRootNodePosition: null, // 导出png、svg、pdf时的图形内边距,注意是单侧内边距 exportPaddingX: 10, exportPaddingY: 10, // 节点文本编辑框的z-index nodeTextEditZIndex: 3000, // 节点备注浮层的z-index nodeNoteTooltipZIndex: 3000, // 是否在点击了画布外的区域时结束节点文本的编辑状态 isEndNodeTextEditOnClickOuter: true, // 最大历史记录数 maxHistoryCount: 1000, // 是否一直显示节点的展开收起按钮,默认为鼠标移上去和激活时才显示 alwaysShowExpandBtn: false, // 扩展节点可插入的图标 iconList: [ // { // name: '',// 分组名称 // type: '',// 分组的值 // list: [// 分组下的图标列表 // { // name: '',// 图标名称 // icon:''// 图标,可以传svg或图片 // } // ] // } ], // 节点最大缓存数量 maxNodeCacheCount: 1000, // 关联线默认文字 defaultAssociativeLineText: '关联', // 思维导图适应画布大小时的内边距 fitPadding: 50, // 是否开启按住ctrl键多选节点功能 enableCtrlKeyNodeSelection: true, // 设置为左键多选节点,右键拖动画布 useLeftKeySelectionRightKeyDrag: false, // 节点即将进入编辑前的回调方法,如果该方法返回true以外的值,那么将取消编辑,函数可以返回一个值,或一个Promise,回调参数为节点实例 beforeTextEdit: null, // 是否开启自定义节点内容 isUseCustomNodeContent: false, // 自定义返回节点内容的方法 customCreateNodeContent: null, // 指定内部一些元素(节点文本编辑元素、节点备注显示元素、关联线文本编辑元素、节点图片调整按钮元素)添加到的位置,默认添加到document.body下 customInnerElsAppendTo: null, // 拖拽元素时,指示元素新位置的块的最大高度 nodeDragPlaceholderMaxSize: 20, // 是否在存在一个激活节点时,当按下中文、英文、数字按键时自动进入文本编辑模式 // 开启该特性后,需要给你的输入框绑定keydown事件,并禁止冒泡 enableAutoEnterTextEditWhenKeydown: false, // 设置富文本节点编辑框和节点大小一致,形成伪原地编辑的效果 // 需要注意的是,只有当节点内只有文本、且形状是矩形才会有比较好的效果 richTextEditFakeInPlace: false, // 自定义对剪贴板文本的处理。当按ctrl+v粘贴时会读取用户剪贴板中的文本和图片,默认只会判断文本是否是普通文本和simple-mind-map格式的节点数据,如果你想处理其他思维导图的数据,比如processon、zhixi等,那么可以传递一个函数,接受当前剪贴板中的文本为参数,返回处理后的数据,可以返回两种类型: /* 1.返回一个纯文本,那么会直接以该文本创建一个子节点 2.返回一个节点对象,格式如下: { // 代表是simple-mind-map格式的数据 simpleMindMap: true, // 节点数据,同simple-mind-map节点数据格式 data: { data: { text: '' }, children: [] } } */ // 如果你的处理逻辑存在异步逻辑,也可以返回一个promise customHandleClipboardText: null, // 禁止鼠标滚轮缩放,你仍旧可以使用api进行缩放 disableMouseWheelZoom: false, // 禁止双指缩放,你仍旧可以使用api进行缩放 // 需要注册TouchEvent插件后生效 disableTouchZoom: false, // 错误处理函数 errorHandler: (code, error) => { console.error(code, error) }, // 设置导出图片和svg时,针对富文本节点内容,也就是嵌入到svg中的html节点的默认样式覆盖 // 如果不覆盖,会发生偏移问题 resetCss: ` * { margin: 0; padding: 0; box-sizing: border-box; } `, // 是否在鼠标双击时回到根节点,也就是让根节点居中显示 enableDblclickBackToRootNode: false, // 导出图片时canvas的缩放倍数,该配置会和window.devicePixelRatio值取最大值 minExportImgCanvasScale: 2, // 节点鼠标hover和激活时显示的矩形边框的颜色 hoverRectColor: 'rgb(94, 200, 248)', // 节点鼠标hover和激活时显示的矩形边框距节点内容的距离 hoverRectPadding: 2, // 双击节点进入节点文本编辑时是否默认选中文本,默认只在创建新节点时会选中 selectTextOnEnterEditText: false, // 删除节点后激活相邻节点 deleteNodeActive: true, // 拖拽节点时鼠标移动到画布边缘是否开启画布自动移动 autoMoveWhenMouseInEdgeOnDrag: true, // 是否首次加载fit view fit: false, // 拖拽多个节点时随鼠标移动的示意矩形的样式配置 dragMultiNodeRectConfig: { width: 40, height: 20, fill: '' // 填充颜色,如果不传默认使用连线的颜色 }, // 节点拖拽时新位置的示意矩形的填充颜色,如果不传默认使用连线的颜色 dragPlaceholderRectFill: '', // 节点拖拽时的透明度配置 dragOpacityConfig: { cloneNodeOpacity: 0.5, // 跟随鼠标移动的克隆节点或矩形的透明度 beingDragNodeOpacity: 0.3 // 被拖拽节点的透明度 }, // 自定义标签的颜色 // {pass: 'green, unpass: 'red'} tagsColorMap: {}, // 节点协作样式配置 cooperateStyle: { avatarSize: 22, // 头像大小 fontSize: 12 // 如果是文字头像,那么文字的大小 }, // 关联线是否始终显示在节点上层 // false:即创建关联线和激活关联线时处于最顶层,其他情况下处于节点下方 associativeLineIsAlwaysAboveNode: true, // 插入概要的默认文本 defaultGeneralizationText: '概要', // 粘贴文本的方式创建新节点时,控制是否按换行自动分割节点,即如果存在换行,那么会根据换行创建多个节点,否则只会创建一个节点 // 可以传递一个函数,返回promise,resolve代表根据换行分割,reject代表忽略换行 handleIsSplitByWrapOnPasteCreateNewNode: null, // 多少时间内只允许添加一次历史记录,避免添加没有必要的中间状态,单位:ms addHistoryTime: 100, // 是否禁止拖动画布 isDisableDrag: false, // 鼠标移入概要高亮所属节点时的高亮框样式 highlightNodeBoxStyle: { stroke: 'rgb(94, 200, 248)', fill: 'transparent' }, // 创建新节点时的行为 /* DEFAULT :默认会激活新创建的节点,并且进入编辑模式。如果同时创建了多个新节点,那么只会激活而不会进入编辑模式 NOT_ACTIVE : 不激活新创建的节点 ACTIVE_ONLY : 只激活新创建的节点,不进入编辑模式 */ createNewNodeBehavior: CONSTANTS.CREATE_NEW_NODE_BEHAVIOR.DEFAULT }