UNPKG

markmap-lib

Version:

Visualize your Markdown as mindmaps with Markmap

74 lines (59 loc) 1.75 kB
"use strict"; exports.__esModule = true; exports.getId = getId; exports.walkTree = walkTree; exports.arrayFrom = arrayFrom; exports.flatMap = flatMap; exports.addClass = addClass; exports.childSelector = childSelector; const uniqId = Math.random().toString(36).slice(2, 8); let globalIndex = 0; function getId() { globalIndex += 1; return `mm-${uniqId}-${globalIndex}`; } function walkTree(tree, callback, key = 'c') { const walk = (item, parent) => callback(item, () => { var _item$key; (_item$key = item[key]) == null ? void 0 : _item$key.forEach(child => { walk(child, item); }); }, parent); walk(tree); } function arrayFrom(arrayLike) { if (Array.from) return Array.from(arrayLike); const array = []; for (let i = 0; i < arrayLike.length; i += 1) { array.push(arrayLike[i]); } return array; } function flatMap(arrayLike, callback) { if (arrayLike.flatMap) return arrayLike.flatMap(callback); const array = []; for (let i = 0; i < arrayLike.length; i += 1) { const result = callback(arrayLike[i], i, arrayLike); if (Array.isArray(result)) array.push(...result);else array.push(result); } return array; } function addClass(className, ...rest) { const classList = (className || '').split(' ').filter(Boolean); rest.forEach(item => { if (item && classList.indexOf(item) < 0) classList.push(item); }); return classList.join(' '); } function childSelector(filter) { if (typeof filter === 'string') { const tagName = filter; filter = el => el.tagName === tagName; } const filterFn = filter; return function selector() { let nodes = arrayFrom(this.childNodes); if (filterFn) nodes = nodes.filter(node => filterFn(node)); return nodes; }; }