2023-04-25 17:14:19 +08:00

3.4 KiB
Raw Blame History

Utility Methods

Base utility Methods

Reference:

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

Methods

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

Depth-first traversal of a tree

root: the root node of the tree to be traversed

parent: parent node

beforeCallback: preorder traversal callback function, callback parameters are: root, parent, isRoot, layerIndex, index

afterCallback: postorder traversal callback function, callback parameters are: root, parent, isRoot, layerIndex, index

isRoot: whether it is the root node

layerIndex: node level

index: index of the node among its siblings

Example:

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

bfsWalk(root, callback)

Breadth-first traversal of a tree

resizeImgSize(width, height, maxWidth, maxHeight)

Resize image size

width: original width of the image

height: original height of the image

maxWidth: the width to resize to

maxHeight: the height to resize to

maxWidth and maxHeight can both be passed, or only one of them can be passed

resizeImg(imgUrl, maxWidth, maxHeight)

Resize image, internally loads the image first, then calls the resizeImgSize method, and returns a promise

simpleDeepClone(data)

Extremely simple deep copy method, can only be used for objects that are all basic data, otherwise it will throw an error

copyRenderTree(tree, root)

Copy render tree data, example:

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

copyNodeTree(tree, root, removeActiveState, keepId)

  • removeActiveState: Boolean, default is false, Whether to remove the active state of the node

  • keepId: v0.4.6+, Boolean, default is false, Whether to retain the id of the replicated node will be deleted by default to prevent duplicate node id. However, for mobile node scenarios, the original id of the node needs to be retained

Copy node tree data, mainly eliminating the reference node instance _node and copying the data of the data object, example:

copyNodeTree({}, node);

imgToDataUrl(src)

Convert image to dataURL

downloadFile(file, fileName)

Download file

throttle(fn, time = 300, ctx)

Throttle function

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

Run tasks in task list asynchronously, tasks are run synchronously without order

degToRad(deg)

v0.2.24+

Angle to radian

camelCaseToHyphen(str)

v0.2.24+

CamelCase to hyphen

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

v0.3.4+

Join the font attribute value of the css font

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

v0.3.4+

Measure the width and height of the text, return value:

{ width, height }

getTextFromHtml(html)

Extract plain text content from an HTML string.

readBlob(blob)

v0.5.9+

Convert blob data to data:url data.

Simulate CSS background in Canvas

Import:

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

Usage

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) {
    // fail
  } else {
    // success
  }
})