mirror of
https://github.com/element-hq/element-web.git
synced 2024-12-15 13:52:38 +03:00
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
|
export function htmlSerialize(model) {
|
||
|
return model.parts.reduce((html, part) => {
|
||
|
switch (part.type) {
|
||
|
case "newline":
|
||
|
return html + "<br />";
|
||
|
case "plain":
|
||
|
case "pill-candidate":
|
||
|
return html + part.text;
|
||
|
case "room-pill":
|
||
|
case "user-pill":
|
||
|
return html + `<a href="https://matrix.to/#/${part.resourceId}">${part.text}</a>`;
|
||
|
}
|
||
|
}, "");
|
||
|
}
|
||
|
|
||
|
export function textSerialize(model) {
|
||
|
return model.parts.reduce((text, part) => {
|
||
|
switch (part.type) {
|
||
|
case "newline":
|
||
|
return text + "\n";
|
||
|
case "plain":
|
||
|
case "pill-candidate":
|
||
|
return text + part.text;
|
||
|
case "room-pill":
|
||
|
case "user-pill":
|
||
|
return text + `${part.resourceId}`;
|
||
|
}
|
||
|
}, "");
|
||
|
}
|
||
|
|
||
|
export function requiresHtml(model) {
|
||
|
return model.parts.some(part => {
|
||
|
switch (part.type) {
|
||
|
case "newline":
|
||
|
case "plain":
|
||
|
case "pill-candidate":
|
||
|
return false;
|
||
|
case "room-pill":
|
||
|
case "user-pill":
|
||
|
return true;
|
||
|
}
|
||
|
});
|
||
|
}
|