2023-07-30 10:56:35 +08:00

4.9 KiB
Raw Blame History

内置工具方法

基础工具方法

引用:

import {walk, ...} from 'simple-mind-map/src/utils'

方法

resizeImgSizeByOriginRatio(width, height, newWidth, newHeight)

v0.6.5+

width: 图片原始的宽度

height:图片原始的高度

newWidth:要缩放到的宽度

newHeight:要缩放到的高度

按比例缩放图片。在保持图片原始宽高比的情况下缩放到指定的newWidthnewHeight大小。

walk(root, parent, beforeCallback, afterCallback, isRoot, layerIndex = 0, index = 0)

深度优先遍历树

root:要遍历的树的根节点

parent:父节点

beforeCallback前序遍历回调函数回调参数为root, parent, isRoot, layerIndex, index

afterCallback后序遍历回调函数回调参数为root, parent, isRoot, layerIndex, index

isRoot:是否是根节点

layerIndex:节点层级

index:节点在同级节点里的索引

示例:

walk(tree, null, () => {}, () => {}, false, 0, 0)

bfsWalk(root, callback)

广度优先遍历树

resizeImgSize(width, height, maxWidth, maxHeight)

缩放图片的尺寸

width:图片原本的宽

height:图片原本的高

maxWidth:要缩放到的宽

maxHeight:要缩放到的高

maxWidthmaxHeight可以同时都传,也可以只传一个

resizeImg(imgUrl, maxWidth, maxHeight)

缩放图片,内部先加载图片,然后调用resizeImgSize方法,返回一个promise

simpleDeepClone(data)

极简的深拷贝方法,只能针对全是基本数据的对象,否则会报错

copyRenderTree(tree, root)

复制渲染树数据,示例:

copyRenderTree({}, this.mindMap.renderer.renderTree)

copyNodeTree(tree, root, removeActiveState, keepId)

  • removeActiveStateBoolean,默认为false,是否移除节点的激活状态

  • keepIdv0.4.6+Boolean,默认为false,是否保留被复制节点的id,默认会删除id防止节点id重复,但是对于移动节点的场景,节点原id需要保留

复制节点树数据,主要是剔除其中的引用node实例的_node,然后复制data对象的数据,示例:

copyNodeTree({}, node)

imgToDataUrl(src)

图片转成dataURL

downloadFile(file, fileName)

下载文件

throttle(fn, time = 300, ctx)

节流函数

asyncRun(taskList, callback = () => {})

异步执行任务队列,多个任务是同步执行的,没有先后顺序

degToRad(deg)

v0.2.24+

角度转弧度

camelCaseToHyphen(str)

v0.2.24+

驼峰转连字符

joinFontStr({ italic, bold, fontSize, fontFamily })

v0.3.4+

拼接css字体的font属性值

measureText(text, { italic, bold, fontSize, fontFamily })

v0.3.4+

测量文本的宽高,返回值:

{ width, height }

getTextFromHtml(html)

提取html字符串里的纯文本内容。

readBlob(blob)

v0.5.9+

blob数据转成data:url数据。

parseDataUrl(data)

v0.6.6+

解析data:url数据,返回:

{
  type,// 数据的文件类型
  base64// base64数据
}

getImageSize(src)

v0.6.6+

  • src图片的url

获取图片的大小。返回:

{
  width,
  height
}

loadImage(imgFile)

v0.6.8+

  • imgFile图片类型的File对象

加载图片,返回:

{
  url,// DataUrl
  size// { width, height } 图片宽高
}

getType(data)

v0.6.9+

获取一个数据的类型,比如BooleanArray等。

removeHtmlStyle(html)

v0.6.10+

移除html字符串中节点的内联样式。

addHtmlStyle(html, tag, style)

v0.6.10+

给html标签中指定的标签添加内联样式。

checkIsRichText(str)

v0.6.10+

检查一个字符串是否是富文本字符。

isWhite(color)

v0.6.11+

判断一个颜色是否是白色。

isTransparent(color)

判断一个颜色是否是透明。

v0.6.11+

在canvas中模拟css的背景属性

引入:

import drawBackgroundImageToCanvas from 'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'

使用:

let width = 500
let height = 500
let img = '/1.jpg'
let canvas = document.createElement('canvas')
canvas.width = width
canvas.height = height
drawBackgroundImageToCanvas(ctx, width, height, img, {
  backgroundRepeat: 'repeat-y',
  backgroundSize: '60%',
  backgroundPosition: 'center center'
}, (err) => {
  if (err) {
    // 失败
  } else {
    // 成功
  }
})

LRU缓存类

v0.5.10+

引入:

import Lru from 'simple-mind-map/src/utils/Lru.js'

构造函数

let lru = new Lru(max)

max:指定最大缓存数量。

实例属性

size

当前缓存的数量。

pool

获取缓存池。

实例方法

add(key, value)

添加缓存。

delete(key)

删除指定缓存。

has(key)

检查某个缓存是否存在。

get(key)

获取某个缓存的值。