UNPKG

mind-elixir

Version:

Mind elixir is a free open source mind map core.

104 lines (103 loc) 3.94 kB
//#region src/types/index.ts var e = { LHS: "lhs", RHS: "rhs", DOWN: "down" }, t = (e) => `<div class="map-container"><div class="map-canvas">${e}</div></div>`, n = function(e, t = {}) { let { direction: n = 2 } = t, r = (e) => { let t = { id: e.id, topic: e.topic, direction: e.direction, style: e.style, tags: e.tags, icons: e.icons, hyperLink: e.hyperLink, expanded: e.expanded, image: e.image, branchColor: e.branchColor, dangerouslySetInnerHTML: e.dangerouslySetInnerHTML, note: e.note }; return e.children && e.children.length > 0 && (t.children = e.children.map(r)), t; }, i = r(e), a = e.children || [], o = [], s = []; if (n === 2) { let e = 0, t = 0; a.forEach((n) => { let i = r(n); n.direction === 0 ? (i.direction = 0, o.push(i), e += 1) : n.direction === 1 ? (i.direction = 1, s.push(i), t += 1) : e <= t ? (i.direction = 0, o.push(i), e += 1) : (i.direction = 1, s.push(i), t += 1); }); } else n === 0 ? a.forEach((e) => { let t = r(e); t.direction = 0, o.push(t); }) : a.forEach((e) => { let t = r(e); t.direction = 1, s.push(t); }); return { root: i, leftNodes: o, rightNodes: s, direction: n }; }, r = function(n, r = {}) { let { className: a = "" } = r, o = (e, t = !1) => { let n = `me${e.id}`, a = ""; if (e.style) { let t = []; e.style.color && t.push(`color: ${e.style.color}`), e.style.background && t.push(`background: ${e.style.background}`), e.style.fontSize && t.push(`font-size: ${e.style.fontSize}px`), e.style.fontWeight && t.push(`font-weight: ${e.style.fontWeight}`), t.length > 0 && (a = ` style="${t.join("; ")}"`); } let o = ""; if (e.dangerouslySetInnerHTML) o = e.dangerouslySetInnerHTML; else { if (o = i(e.topic), e.tags && e.tags.length > 0) { let t = e.tags.map((e) => { if (typeof e == "string") return `<span class="me-tag">${i(e)}</span>`; { let t = "me-tag"; e.className && (t += ` ${e.className}`); let n = ""; if (e.style) { let t = Object.entries(e.style).filter(([e, t]) => t != null && t !== "").map(([e, t]) => `${e.replace(/([A-Z])/g, "-$1").toLowerCase()}: ${t}`); t.length > 0 && (n = ` style="${t.join("; ")}"`); } return `<span class="${t}"${n}>${i(e.text)}</span>`; } }).join(""); o += t; } if (e.icons && e.icons.length > 0) { let t = e.icons.map((e) => `<span class="me-icon">${e}</span>`).join(""); o += t; } if (e.image) { let { url: t, width: n, height: a, fit: s = "cover" } = e.image, c = r.imageProxy ? r.imageProxy(t) : t; o += `<img src="${i(c)}" width="${n}" height="${a}" style="object-fit: ${s}" alt="" />`; } } let c = `<div class="me-tpc" data-nodeid="${n}"${a}>${o}</div>`; if (t) return `<div class="me-root">${c}</div>`; let l = ""; return e.children && e.children.length > 0 && e.expanded !== !1 && (l = `<div class="me-children">${e.children.map((e) => s(e)).join("")}</div>`), `<div class="me-wrapper">${`<div class="me-parent">${c}</div>`}${l}</div>`; }, s = (e) => o(e, !1), c = o(n.root, !0), l = n.leftNodes.map((e) => s(e)).join(""), u = n.rightNodes.map((e) => s(e)).join(""), d = `<div class="me-main ${e.LHS}">${l}</div>`, f = `<div class="me-main ${e.RHS}">${u}</div>`; return t(`<div class="${["me-nodes", a].filter(Boolean).join(" ")}">${d}${c}${f}</div>`); }; function i(e) { let t = typeof document < "u" ? document.createElement("div") : null; return t ? (t.textContent = e, t.innerHTML) : e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;"); } var a = function(e) { return JSON.stringify(e, null, 2); }, o = function(e, t, n = {}) { return { nodeData: e, layoutResult: t, options: { direction: t.direction, ...n }, timestamp: Date.now() }; }; //#endregion export { o as getHydrationData, a as getSSRData, n as layoutSSR, r as renderSSRHTML };