const { DISPLAY_TYPES: t } = require("../constants.js"),
{
MENTION: n,
HTTP_LINK: e,
PEAR_LINK: r,
BOLD: o,
ITALIC: c,
CODE: s,
EMOJI: a,
CODE_BLOCK: i,
STRIKE_THROUGH: u,
} = t,
l = { [o]: $, [c]: m, [u]: d, [s]: g, [i]: j, [a]: E, [n]: O, [r]: I, [e]: I }
function f(t, n, e = {}) {
if (!n) return p(t) || ""
let r = ""
for (const { start: o, end: c, styles: s } of n) {
let n = p(t.slice(o, c))
for (const t of s) n = l[t.type](n, t, e)
r += n
}
return r.replace(/\n/g, "<br />")
}
function p(t) {
return t ? t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">") : ""
}
function $(t) {
return `<b>${t}</b>`
}
function m(t) {
return `<i>${t}</i>`
}
function d(t) {
return `<s>${t}</s>`
}
function g(t) {
return `<code>${t}</code>`
}
function j(t) {
return `<pre>${t}</pre>`
}
function E(t, n, e) {
const { urlRiv: r, url: o, emoji: c } = e.getEmojiData(n.content) || {}
let s
return (
(s = r || o ? `<img ${T({ class: "emoji-img", src: r || o, alt: `:${n.content}:` })} />` : t),
`<span ${T({ class: "emoji", data: { shortcode: n.content, emoji: c } })}>${s}</span>`
)
}
function O(t, n) {
const [e, r] = n.content.split("/"),
o = {
class: "mention",
data: { type: "mention", id: e, label: t.startsWith("@") ? t.slice(1) : t },
}
return (r && (o.data.role = r), `<span ${T(o)}>${t}</span>`)
}
function I(t, n) {
return `<a href="${n.content}">${t}</a>`
}
function T(t) {
const { data: n, ...e } = t,
r = Object.keys(e).map((t) => `${t}="${e[t]}"`)
return (n && Object.keys(n).forEach((t) => r.push(`data-${t}="${n[t]}"`)), r.join(" "))
}
module.exports = { segmentToHtml: f }