diff --git a/webpage/embed.ts b/webpage/embed.ts index b9a4886..a9c1494 100644 --- a/webpage/embed.ts +++ b/webpage/embed.ts @@ -1,5 +1,7 @@ import {Fullscreen} from "./fullscreen.js"; import {Message} from "./message.js"; +import {markdown} from "./markdown.js"; + class Embed{ type:string; owner:Message; @@ -48,7 +50,7 @@ class Embed{ authorline.append(img); } const a=document.createElement("a"); - a.innerText=this.json.author.name + a.textContent=this.json.author.name if(this.json.author.url){ a.href=this.json.author.url } @@ -57,7 +59,7 @@ class Embed{ embed.append(authorline); } const title=document.createElement("a"); - title.textContent=this.json.title; + title.append(markdown(this.json.title)); if(this.json.url){ title.href=this.json.url; } @@ -66,7 +68,7 @@ class Embed{ if(this.json.description){ const p=document.createElement("p"); - p.textContent=this.json.description; + p.append(markdown(this.json.description)); embed.append(p); } @@ -77,9 +79,8 @@ class Embed{ const b=document.createElement("b"); b.textContent=thing.name; div.append(b); - let p; - p=document.createElement("p") - p.textContent=thing.value; + const p=document.createElement("p") + p.append(markdown(thing.value)); p.classList.add("embedp"); div.append(p); diff --git a/webpage/fullscreen.ts b/webpage/fullscreen.ts index 4868b9f..df0f00e 100644 --- a/webpage/fullscreen.ts +++ b/webpage/fullscreen.ts @@ -59,7 +59,7 @@ class Fullscreen{ const checkbox = document.createElement('input'); div.appendChild(checkbox) const label=document.createElement("span"); - checkbox.value=array[2]; + checkbox.checked=array[2]; label.textContent=array[1]; div.appendChild(label); checkbox.addEventListener("change",array[3]); diff --git a/webpage/markdown.ts b/webpage/markdown.ts index bc0eac7..5c912e4 100644 --- a/webpage/markdown.ts +++ b/webpage/markdown.ts @@ -360,6 +360,42 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){ } } + if (txt[i] === "<" && (txt[i + 1] === ":" || (txt[i + 1] === "a" && txt[i + 2] === ":"))) { + let found=false; + const build = txt[i + 1] === "a" ? ["<","a",":"] : ["<",":"]; + let j = i+build.length; + for (; txt[j] !== void 0; j++) { + build.push(txt[j]); + + if (txt[j]===">") { + found=true; + break; + } + } + + if (found) { + const parts=build.join("").match(/^<(a)?:\w+:(\d{10,30})>$/); + if (parts && parts[2]) { + appendcurrent(); + i=j; + + const isEmojiOnly = txt.join("").trim()===build.join("").trim(); + + const emojiElem=document.createElement("img"); + emojiElem.classList.add("md-emoji"); + emojiElem.width=isEmojiOnly ? 48 : 22; + emojiElem.height=isEmojiOnly ? 48 : 22; + emojiElem.crossOrigin="anonymous"; + emojiElem.src=this.info.cdn.toString() + "/emojis/" + parts[2] + "." + (parts[1] ? "gif" : "png") + "?size=32"; + emojiElem.alt=""; + emojiElem.loading="lazy"; + span.appendChild(emojiElem); + + continue; + } + } + } + current.textContent+=txt[i]; } appendcurrent(); diff --git a/webpage/settings.ts b/webpage/settings.ts index 67b3b50..1b2f095 100644 --- a/webpage/settings.ts +++ b/webpage/settings.ts @@ -83,7 +83,7 @@ class PermissionToggle{ div.append(this.generateCheckbox()); const p=document.createElement("p"); - p.innerText=this.rolejson.description; + p.textContent=this.rolejson.description; div.appendChild(p); return div; } diff --git a/webpage/style.css b/webpage/style.css index b92af19..eb154e8 100644 --- a/webpage/style.css +++ b/webpage/style.css @@ -215,8 +215,6 @@ img { vertical-align: middle; max-width: 3in; max-height: 3in; - width: auto; - height: auto; } #page { @@ -1352,4 +1350,4 @@ span { width: 100%; flex-direction: row; max-height:100in; -} \ No newline at end of file +}