make MarkDown into a class and fixed emojis
This commit is contained in:
@@ -3,7 +3,6 @@ import { Message } from "./message.js";
|
|||||||
import { Voice } from "./audio.js";
|
import { Voice } from "./audio.js";
|
||||||
import { Contextmenu } from "./contextmenu.js";
|
import { Contextmenu } from "./contextmenu.js";
|
||||||
import { Fullscreen } from "./fullscreen.js";
|
import { Fullscreen } from "./fullscreen.js";
|
||||||
import { markdown } from "./markdown.js";
|
|
||||||
import { Permissions } from "./permissions.js";
|
import { Permissions } from "./permissions.js";
|
||||||
import { Settings, RoleList } from "./settings.js";
|
import { Settings, RoleList } from "./settings.js";
|
||||||
import { InfiniteScroller } from "./infiniteScroller.js";
|
import { InfiniteScroller } from "./infiniteScroller.js";
|
||||||
@@ -745,10 +744,10 @@ class Channel {
|
|||||||
if (!("Notification" in window)) {
|
if (!("Notification" in window)) {
|
||||||
}
|
}
|
||||||
else if (Notification.permission === "granted") {
|
else if (Notification.permission === "granted") {
|
||||||
let noticontent = markdown(message.content).textContent;
|
let noticontent = message.content.textContent;
|
||||||
if (message.embeds[0]) {
|
if (message.embeds[0]) {
|
||||||
noticontent ||= message.embeds[0].json.title;
|
noticontent ||= message.embeds[0].json.title;
|
||||||
noticontent ||= markdown(message.embeds[0].json.description).textContent;
|
noticontent ||= message.content.textContent;
|
||||||
}
|
}
|
||||||
noticontent ||= "Blank Message";
|
noticontent ||= "Blank Message";
|
||||||
let imgurl = null;
|
let imgurl = null;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { Fullscreen } from "./fullscreen.js";
|
import { Fullscreen } from "./fullscreen.js";
|
||||||
import { markdown } from "./markdown.js";
|
import { MarkDown } from "./markdown.js";
|
||||||
class Embed {
|
class Embed {
|
||||||
type;
|
type;
|
||||||
owner;
|
owner;
|
||||||
@@ -27,6 +27,18 @@ class Embed {
|
|||||||
return document.createElement("div"); //prevent errors by giving blank div
|
return document.createElement("div"); //prevent errors by giving blank div
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
get message() {
|
||||||
|
return this.owner;
|
||||||
|
}
|
||||||
|
get channel() {
|
||||||
|
return this.message.channel;
|
||||||
|
}
|
||||||
|
get guild() {
|
||||||
|
return this.channel.guild;
|
||||||
|
}
|
||||||
|
get localuser() {
|
||||||
|
return this.guild.localuser;
|
||||||
|
}
|
||||||
generateRich() {
|
generateRich() {
|
||||||
console.log(this.json);
|
console.log(this.json);
|
||||||
const div = document.createElement("div");
|
const div = document.createElement("div");
|
||||||
@@ -55,7 +67,7 @@ class Embed {
|
|||||||
embed.append(authorline);
|
embed.append(authorline);
|
||||||
}
|
}
|
||||||
const title = document.createElement("a");
|
const title = document.createElement("a");
|
||||||
title.append(markdown(this.json.title));
|
title.append(new MarkDown(this.json.title, this.localuser).makeHTML());
|
||||||
if (this.json.url) {
|
if (this.json.url) {
|
||||||
title.href = this.json.url;
|
title.href = this.json.url;
|
||||||
}
|
}
|
||||||
@@ -63,7 +75,7 @@ class Embed {
|
|||||||
embed.append(title);
|
embed.append(title);
|
||||||
if (this.json.description) {
|
if (this.json.description) {
|
||||||
const p = document.createElement("p");
|
const p = document.createElement("p");
|
||||||
p.append(markdown(this.json.description));
|
p.append(new MarkDown(this.json.description, this.channel).makeHTML());
|
||||||
embed.append(p);
|
embed.append(p);
|
||||||
}
|
}
|
||||||
embed.append(document.createElement("br"));
|
embed.append(document.createElement("br"));
|
||||||
@@ -74,7 +86,7 @@ class Embed {
|
|||||||
b.textContent = thing.name;
|
b.textContent = thing.name;
|
||||||
div.append(b);
|
div.append(b);
|
||||||
const p = document.createElement("p");
|
const p = document.createElement("p");
|
||||||
p.append(markdown(thing.value));
|
p.append(new MarkDown(thing.value, this.channel).makeHTML());
|
||||||
p.classList.add("embedp");
|
p.classList.add("embedp");
|
||||||
div.append(p);
|
div.append(p);
|
||||||
if (thing.inline) {
|
if (thing.inline) {
|
||||||
|
@@ -1,5 +1,35 @@
|
|||||||
export { markdown };
|
export { MarkDown };
|
||||||
function markdown(text, { keep = false, stdsize = false } = {}) {
|
class MarkDown {
|
||||||
|
txt;
|
||||||
|
keep;
|
||||||
|
stdsize;
|
||||||
|
owner;
|
||||||
|
info;
|
||||||
|
constructor(text, owner, { keep = false, stdsize = false } = {}) {
|
||||||
|
if ((typeof text) === (typeof "")) {
|
||||||
|
this.txt = text.split("");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.txt = text;
|
||||||
|
}
|
||||||
|
if (this.txt === undefined) {
|
||||||
|
this.txt = [];
|
||||||
|
}
|
||||||
|
this.info = owner.info;
|
||||||
|
this.keep = keep;
|
||||||
|
this.owner = owner;
|
||||||
|
this.stdsize = stdsize;
|
||||||
|
}
|
||||||
|
get rawString() {
|
||||||
|
return this.txt.concat("");
|
||||||
|
}
|
||||||
|
get textContent() {
|
||||||
|
return this.makeHTML().textContent;
|
||||||
|
}
|
||||||
|
makeHTML({ keep = this.keep, stdsize = this.stdsize } = {}) {
|
||||||
|
return this.markdown(this.txt, { keep: keep, stdsize: stdsize });
|
||||||
|
}
|
||||||
|
markdown(text, { keep = false, stdsize = false } = {}) {
|
||||||
let txt;
|
let txt;
|
||||||
if ((typeof text) === (typeof "")) {
|
if ((typeof text) === (typeof "")) {
|
||||||
txt = text.split("");
|
txt = text.split("");
|
||||||
@@ -71,7 +101,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
element.append(keepys);
|
element.append(keepys);
|
||||||
}
|
}
|
||||||
element.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
element.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
span.append(element);
|
span.append(element);
|
||||||
i--;
|
i--;
|
||||||
continue;
|
continue;
|
||||||
@@ -186,7 +216,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
i.append(stars);
|
i.append(stars);
|
||||||
}
|
}
|
||||||
i.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
i.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
i.append(stars);
|
i.append(stars);
|
||||||
}
|
}
|
||||||
@@ -197,7 +227,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
b.append(stars);
|
b.append(stars);
|
||||||
}
|
}
|
||||||
b.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
b.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
b.append(stars);
|
b.append(stars);
|
||||||
}
|
}
|
||||||
@@ -209,7 +239,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
b.append(stars);
|
b.append(stars);
|
||||||
}
|
}
|
||||||
b.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
b.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
b.append(stars);
|
b.append(stars);
|
||||||
}
|
}
|
||||||
@@ -252,7 +282,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
i.append(underscores);
|
i.append(underscores);
|
||||||
}
|
}
|
||||||
i.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
i.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
i.append(underscores);
|
i.append(underscores);
|
||||||
}
|
}
|
||||||
@@ -263,7 +293,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
u.append(underscores);
|
u.append(underscores);
|
||||||
}
|
}
|
||||||
u.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
u.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
u.append(underscores);
|
u.append(underscores);
|
||||||
}
|
}
|
||||||
@@ -275,7 +305,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
i.append(underscores);
|
i.append(underscores);
|
||||||
}
|
}
|
||||||
i.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
i.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
i.append(underscores);
|
i.append(underscores);
|
||||||
}
|
}
|
||||||
@@ -312,7 +342,7 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
s.append(tildes);
|
s.append(tildes);
|
||||||
}
|
}
|
||||||
s.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
s.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
if (keep) {
|
if (keep) {
|
||||||
s.append(tildes);
|
s.append(tildes);
|
||||||
}
|
}
|
||||||
@@ -347,9 +377,9 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
if (keep) {
|
if (keep) {
|
||||||
j.append(pipes);
|
j.append(pipes);
|
||||||
}
|
}
|
||||||
j.appendChild(markdown(build, { keep: keep, stdsize: stdsize }));
|
j.appendChild(this.markdown(build, { keep: keep, stdsize: stdsize }));
|
||||||
j.classList.add("spoiler");
|
j.classList.add("spoiler");
|
||||||
j.onclick = markdown.unspoil;
|
j.onclick = MarkDown.unspoil;
|
||||||
if (keep) {
|
if (keep) {
|
||||||
j.append(pipes);
|
j.append(pipes);
|
||||||
}
|
}
|
||||||
@@ -414,20 +444,20 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
const parts = build.join("").match(/^<(a)?:\w+:(\d{10,30})>$/);
|
const buildjoin = build.join("");
|
||||||
|
const parts = buildjoin.match(/^<(a)?:\w+:(\d{10,30})>$/);
|
||||||
if (parts && parts[2]) {
|
if (parts && parts[2]) {
|
||||||
appendcurrent();
|
appendcurrent();
|
||||||
i = j;
|
i = j;
|
||||||
console.log(typeof txt, txt);
|
console.log(typeof txt, txt);
|
||||||
const isEmojiOnly = txt.join("").trim() === build.join("").trim();
|
const isEmojiOnly = txt.join("").trim() === buildjoin.trim();
|
||||||
|
console.log(isEmojiOnly, ":3");
|
||||||
const emojiElem = document.createElement("img");
|
const emojiElem = document.createElement("img");
|
||||||
emojiElem.classList.add("md-emoji");
|
emojiElem.classList.add("md-emoji");
|
||||||
emojiElem.width = isEmojiOnly ? 48 : 22;
|
emojiElem.classList.add(isEmojiOnly ? "bigemoji" : "smallemoji");
|
||||||
emojiElem.height = isEmojiOnly ? 48 : 22;
|
|
||||||
emojiElem.crossOrigin = "anonymous";
|
emojiElem.crossOrigin = "anonymous";
|
||||||
//emojiElem.src=this.info.cdn.toString() + "/emojis/" + parts[2] + "." + (parts[1] ? "gif" : "png") + "?size=32";
|
emojiElem.src = this.info.cdn.toString() + "emojis/" + parts[2] + "." + (parts[1] ? "gif" : "png") + "?size=32";
|
||||||
//must uncomment later
|
emojiElem.alt = buildjoin;
|
||||||
emojiElem.alt = "";
|
|
||||||
emojiElem.loading = "lazy";
|
emojiElem.loading = "lazy";
|
||||||
span.appendChild(emojiElem);
|
span.appendChild(emojiElem);
|
||||||
continue;
|
continue;
|
||||||
@@ -438,9 +468,9 @@ function markdown(text, { keep = false, stdsize = false } = {}) {
|
|||||||
}
|
}
|
||||||
appendcurrent();
|
appendcurrent();
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
markdown.unspoil = function (e) {
|
static unspoil(e) {
|
||||||
//console.log("undone")
|
|
||||||
e.target.classList.remove("spoiler");
|
e.target.classList.remove("spoiler");
|
||||||
e.target.classList.add("unspoiled");
|
e.target.classList.add("unspoiled");
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Contextmenu } from "./contextmenu.js";
|
import { Contextmenu } from "./contextmenu.js";
|
||||||
import { User } from "./user.js";
|
import { User } from "./user.js";
|
||||||
import { Member } from "./member.js";
|
import { Member } from "./member.js";
|
||||||
import { markdown } from "./markdown.js";
|
import { MarkDown } from "./markdown.js";
|
||||||
import { Embed } from "./embed.js";
|
import { Embed } from "./embed.js";
|
||||||
import { File } from "./file.js";
|
import { File } from "./file.js";
|
||||||
class Message {
|
class Message {
|
||||||
@@ -33,7 +33,7 @@ class Message {
|
|||||||
}
|
}
|
||||||
static setupcmenu() {
|
static setupcmenu() {
|
||||||
Message.contextmenu.addbutton("Copy raw text", function () {
|
Message.contextmenu.addbutton("Copy raw text", function () {
|
||||||
navigator.clipboard.writeText(this.content);
|
navigator.clipboard.writeText(this.content.rawString);
|
||||||
});
|
});
|
||||||
Message.contextmenu.addbutton("Reply", function (div) {
|
Message.contextmenu.addbutton("Reply", function (div) {
|
||||||
this.channel.setReplying(this);
|
this.channel.setReplying(this);
|
||||||
@@ -63,6 +63,10 @@ class Message {
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
else if (thing === "content") {
|
||||||
|
this.content = new MarkDown(messagejson[thing], this.channel);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
this[thing] = messagejson[thing];
|
this[thing] = messagejson[thing];
|
||||||
}
|
}
|
||||||
for (const thing in this.embeds) {
|
for (const thing in this.embeds) {
|
||||||
@@ -204,7 +208,7 @@ class Message {
|
|||||||
replyline.classList.add("replyflex");
|
replyline.classList.add("replyflex");
|
||||||
this.channel.getmessage(this.message_reference.message_id).then(message => {
|
this.channel.getmessage(this.message_reference.message_id).then(message => {
|
||||||
const author = message.author;
|
const author = message.author;
|
||||||
reply.appendChild(markdown(message.content, { stdsize: true }));
|
reply.appendChild(message.content.makeHTML({ stdsize: true }));
|
||||||
minipfp.src = author.getpfpsrc();
|
minipfp.src = author.getpfpsrc();
|
||||||
author.bind(minipfp);
|
author.bind(minipfp);
|
||||||
username.textContent = author.username;
|
username.textContent = author.username;
|
||||||
@@ -266,7 +270,7 @@ class Message {
|
|||||||
else {
|
else {
|
||||||
div.classList.remove("topMessage");
|
div.classList.remove("topMessage");
|
||||||
}
|
}
|
||||||
const messaged = markdown(this.content);
|
const messaged = this.content.makeHTML();
|
||||||
div["txt"] = messaged;
|
div["txt"] = messaged;
|
||||||
const messagedwrap = document.createElement("div");
|
const messagedwrap = document.createElement("div");
|
||||||
messagedwrap.classList.add("flexttb");
|
messagedwrap.classList.add("flexttb");
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
//const usercache={};
|
//const usercache={};
|
||||||
import { Member } from "./member.js";
|
import { Member } from "./member.js";
|
||||||
import { markdown } from "./markdown.js";
|
import { MarkDown } from "./markdown.js";
|
||||||
import { Contextmenu } from "./contextmenu.js";
|
import { Contextmenu } from "./contextmenu.js";
|
||||||
class User {
|
class User {
|
||||||
static userids = {};
|
static userids = {};
|
||||||
@@ -48,6 +48,10 @@ class User {
|
|||||||
}
|
}
|
||||||
if (dontclone) {
|
if (dontclone) {
|
||||||
for (const thing of Object.keys(userjson)) {
|
for (const thing of Object.keys(userjson)) {
|
||||||
|
if (thing === "bio") {
|
||||||
|
this.bio = new MarkDown(userjson[thing], this.localuser);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
this[thing] = userjson[thing];
|
this[thing] = userjson[thing];
|
||||||
}
|
}
|
||||||
this.hypotheticalpfp = false;
|
this.hypotheticalpfp = false;
|
||||||
@@ -146,7 +150,7 @@ class User {
|
|||||||
userbody.appendChild(pronounshtml);
|
userbody.appendChild(pronounshtml);
|
||||||
const rule = document.createElement("hr");
|
const rule = document.createElement("hr");
|
||||||
userbody.appendChild(rule);
|
userbody.appendChild(rule);
|
||||||
const biohtml = markdown(this.bio);
|
const biohtml = this.bio.makeHTML();
|
||||||
userbody.appendChild(biohtml);
|
userbody.appendChild(biohtml);
|
||||||
}
|
}
|
||||||
console.log(div);
|
console.log(div);
|
||||||
|
@@ -3,7 +3,7 @@ import { Message } from "./message.js";
|
|||||||
import {Voice} from "./audio.js";
|
import {Voice} from "./audio.js";
|
||||||
import {Contextmenu} from "./contextmenu.js";
|
import {Contextmenu} from "./contextmenu.js";
|
||||||
import {Fullscreen} from "./fullscreen.js";
|
import {Fullscreen} from "./fullscreen.js";
|
||||||
import {markdown} from "./markdown.js";
|
import {MarkDown} from "./markdown.js";
|
||||||
import {Guild} from "./guild.js";
|
import {Guild} from "./guild.js";
|
||||||
import { Localuser } from "./localuser.js";
|
import { Localuser } from "./localuser.js";
|
||||||
import { Permissions } from "./permissions.js";
|
import { Permissions } from "./permissions.js";
|
||||||
@@ -744,10 +744,10 @@ class Channel{
|
|||||||
if (!("Notification" in window)) {
|
if (!("Notification" in window)) {
|
||||||
|
|
||||||
} else if (Notification.permission === "granted") {
|
} else if (Notification.permission === "granted") {
|
||||||
let noticontent=markdown(message.content).textContent;
|
let noticontent=message.content.textContent;
|
||||||
if(message.embeds[0]){
|
if(message.embeds[0]){
|
||||||
noticontent||=message.embeds[0].json.title;
|
noticontent||=message.embeds[0].json.title;
|
||||||
noticontent||=markdown(message.embeds[0].json.description).textContent;
|
noticontent||=message.content.textContent;
|
||||||
}
|
}
|
||||||
noticontent||="Blank Message";
|
noticontent||="Blank Message";
|
||||||
let imgurl=null;
|
let imgurl=null;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import {Fullscreen} from "./fullscreen.js";
|
import {Fullscreen} from "./fullscreen.js";
|
||||||
import {Message} from "./message.js";
|
import {Message} from "./message.js";
|
||||||
import {markdown} from "./markdown.js";
|
import {MarkDown} from "./markdown.js";
|
||||||
|
|
||||||
class Embed{
|
class Embed{
|
||||||
type:string;
|
type:string;
|
||||||
@@ -29,6 +29,18 @@ class Embed{
|
|||||||
return document.createElement("div");//prevent errors by giving blank div
|
return document.createElement("div");//prevent errors by giving blank div
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
get message(){
|
||||||
|
return this.owner;
|
||||||
|
}
|
||||||
|
get channel(){
|
||||||
|
return this.message.channel;
|
||||||
|
}
|
||||||
|
get guild(){
|
||||||
|
return this.channel.guild;
|
||||||
|
}
|
||||||
|
get localuser(){
|
||||||
|
return this.guild.localuser;
|
||||||
|
}
|
||||||
generateRich(){
|
generateRich(){
|
||||||
console.log(this.json)
|
console.log(this.json)
|
||||||
const div=document.createElement("div");
|
const div=document.createElement("div");
|
||||||
@@ -59,7 +71,7 @@ class Embed{
|
|||||||
embed.append(authorline);
|
embed.append(authorline);
|
||||||
}
|
}
|
||||||
const title=document.createElement("a");
|
const title=document.createElement("a");
|
||||||
title.append(markdown(this.json.title));
|
title.append(new MarkDown(this.json.title,this.localuser).makeHTML());
|
||||||
if(this.json.url){
|
if(this.json.url){
|
||||||
title.href=this.json.url;
|
title.href=this.json.url;
|
||||||
}
|
}
|
||||||
@@ -68,7 +80,7 @@ class Embed{
|
|||||||
|
|
||||||
if(this.json.description){
|
if(this.json.description){
|
||||||
const p=document.createElement("p");
|
const p=document.createElement("p");
|
||||||
p.append(markdown(this.json.description));
|
p.append(new MarkDown(this.json.description,this.channel).makeHTML());
|
||||||
embed.append(p);
|
embed.append(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +92,7 @@ class Embed{
|
|||||||
b.textContent=thing.name;
|
b.textContent=thing.name;
|
||||||
div.append(b);
|
div.append(b);
|
||||||
const p=document.createElement("p")
|
const p=document.createElement("p")
|
||||||
p.append(markdown(thing.value));
|
p.append(new MarkDown(thing.value,this.channel).makeHTML());
|
||||||
p.classList.add("embedp");
|
p.classList.add("embedp");
|
||||||
div.append(p);
|
div.append(p);
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@ import {Direct} from "./direct.js";
|
|||||||
import {Voice} from "./audio.js";
|
import {Voice} from "./audio.js";
|
||||||
import {User} from "./user.js";
|
import {User} from "./user.js";
|
||||||
import {Member} from "./member.js";
|
import {Member} from "./member.js";
|
||||||
import {markdown} from "./markdown.js";
|
import {MarkDown} from "./markdown.js";
|
||||||
import {Fullscreen} from "./fullscreen.js";
|
import {Fullscreen} from "./fullscreen.js";
|
||||||
import {setTheme, Specialuser} from "./login.js";
|
import {setTheme, Specialuser} from "./login.js";
|
||||||
|
|
||||||
|
@@ -1,5 +1,37 @@
|
|||||||
export {markdown};
|
import { Channel } from "./channel";
|
||||||
function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
import { Localuser } from "./localuser";
|
||||||
|
|
||||||
|
export {MarkDown};
|
||||||
|
class MarkDown{
|
||||||
|
txt : string[];
|
||||||
|
keep:boolean;
|
||||||
|
stdsize:boolean;
|
||||||
|
owner:Localuser|Channel;
|
||||||
|
info:Localuser["info"];
|
||||||
|
constructor(text : string|string[],owner:MarkDown["owner"],{keep=false,stdsize=false} = {}){
|
||||||
|
if((typeof text)===(typeof "")){
|
||||||
|
this.txt=(text as string).split("");
|
||||||
|
}else{
|
||||||
|
this.txt=(text as string[]);
|
||||||
|
}
|
||||||
|
if(this.txt===undefined){
|
||||||
|
this.txt=[];
|
||||||
|
}
|
||||||
|
this.info=owner.info;
|
||||||
|
this.keep=keep;
|
||||||
|
this.owner=owner;
|
||||||
|
this.stdsize=stdsize;
|
||||||
|
}
|
||||||
|
get rawString(){
|
||||||
|
return this.txt.concat("");
|
||||||
|
}
|
||||||
|
get textContent(){
|
||||||
|
return this.makeHTML().textContent;
|
||||||
|
}
|
||||||
|
makeHTML({keep=this.keep,stdsize=this.stdsize}={}){
|
||||||
|
return this.markdown(this.txt,{keep:keep,stdsize:stdsize});
|
||||||
|
}
|
||||||
|
markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
||||||
let txt : string[];
|
let txt : string[];
|
||||||
if((typeof text)===(typeof "")){
|
if((typeof text)===(typeof "")){
|
||||||
txt=(text as string).split("");
|
txt=(text as string).split("");
|
||||||
@@ -69,7 +101,7 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
if(keep){
|
if(keep){
|
||||||
element.append(keepys);
|
element.append(keepys);
|
||||||
}
|
}
|
||||||
element.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
element.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
span.append(element);
|
span.append(element);
|
||||||
i--;
|
i--;
|
||||||
continue;
|
continue;
|
||||||
@@ -183,20 +215,20 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
if(count===1){
|
if(count===1){
|
||||||
const i=document.createElement("i");
|
const i=document.createElement("i");
|
||||||
if(keep){i.append(stars)}
|
if(keep){i.append(stars)}
|
||||||
i.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
i.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){i.append(stars)}
|
if(keep){i.append(stars)}
|
||||||
span.appendChild(i);
|
span.appendChild(i);
|
||||||
}else if(count===2){
|
}else if(count===2){
|
||||||
const b=document.createElement("b");
|
const b=document.createElement("b");
|
||||||
if(keep){b.append(stars)}
|
if(keep){b.append(stars)}
|
||||||
b.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
b.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){b.append(stars)}
|
if(keep){b.append(stars)}
|
||||||
span.appendChild(b);
|
span.appendChild(b);
|
||||||
}else{
|
}else{
|
||||||
const b=document.createElement("b");
|
const b=document.createElement("b");
|
||||||
const i=document.createElement("i");
|
const i=document.createElement("i");
|
||||||
if(keep){b.append(stars)}
|
if(keep){b.append(stars)}
|
||||||
b.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
b.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){b.append(stars)}
|
if(keep){b.append(stars)}
|
||||||
i.appendChild(b);
|
i.appendChild(b);
|
||||||
span.appendChild(i);
|
span.appendChild(i);
|
||||||
@@ -236,20 +268,20 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
if(count===1){
|
if(count===1){
|
||||||
const i=document.createElement("i");
|
const i=document.createElement("i");
|
||||||
if(keep){i.append(underscores)}
|
if(keep){i.append(underscores)}
|
||||||
i.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
i.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){i.append(underscores)}
|
if(keep){i.append(underscores)}
|
||||||
span.appendChild(i);
|
span.appendChild(i);
|
||||||
}else if(count===2){
|
}else if(count===2){
|
||||||
const u=document.createElement("u");
|
const u=document.createElement("u");
|
||||||
if(keep){u.append(underscores)}
|
if(keep){u.append(underscores)}
|
||||||
u.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
u.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){u.append(underscores)}
|
if(keep){u.append(underscores)}
|
||||||
span.appendChild(u);
|
span.appendChild(u);
|
||||||
}else{
|
}else{
|
||||||
const u=document.createElement("u");
|
const u=document.createElement("u");
|
||||||
const i=document.createElement("i");
|
const i=document.createElement("i");
|
||||||
if(keep){i.append(underscores)}
|
if(keep){i.append(underscores)}
|
||||||
i.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
i.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){i.append(underscores)}
|
if(keep){i.append(underscores)}
|
||||||
u.appendChild(i)
|
u.appendChild(i)
|
||||||
span.appendChild(u);
|
span.appendChild(u);
|
||||||
@@ -282,7 +314,7 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
if(count===2){
|
if(count===2){
|
||||||
const s=document.createElement("s");
|
const s=document.createElement("s");
|
||||||
if(keep){s.append(tildes)}
|
if(keep){s.append(tildes)}
|
||||||
s.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
s.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
if(keep){s.append(tildes)}
|
if(keep){s.append(tildes)}
|
||||||
span.appendChild(s);
|
span.appendChild(s);
|
||||||
}
|
}
|
||||||
@@ -312,9 +344,9 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
if(count===2){
|
if(count===2){
|
||||||
const j=document.createElement("j");
|
const j=document.createElement("j");
|
||||||
if(keep){j.append(pipes)}
|
if(keep){j.append(pipes)}
|
||||||
j.appendChild(markdown(build,{keep:keep,stdsize:stdsize}));
|
j.appendChild(this.markdown(build,{keep:keep,stdsize:stdsize}));
|
||||||
j.classList.add("spoiler");
|
j.classList.add("spoiler");
|
||||||
j.onclick=markdown.unspoil;
|
j.onclick=MarkDown.unspoil;
|
||||||
if(keep){j.append(pipes)}
|
if(keep){j.append(pipes)}
|
||||||
span.appendChild(j);
|
span.appendChild(j);
|
||||||
}
|
}
|
||||||
@@ -377,21 +409,22 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
const parts=build.join("").match(/^<(a)?:\w+:(\d{10,30})>$/);
|
const buildjoin=build.join("");
|
||||||
|
const parts=buildjoin.match(/^<(a)?:\w+:(\d{10,30})>$/);
|
||||||
if (parts && parts[2]) {
|
if (parts && parts[2]) {
|
||||||
appendcurrent();
|
appendcurrent();
|
||||||
i=j;
|
i=j;
|
||||||
console.log(typeof txt,txt);
|
console.log(typeof txt,txt);
|
||||||
const isEmojiOnly = txt.join("").trim()===build.join("").trim();
|
const isEmojiOnly = txt.join("").trim()===buildjoin.trim();
|
||||||
|
console.log(isEmojiOnly,":3");
|
||||||
|
|
||||||
const emojiElem=document.createElement("img");
|
const emojiElem=document.createElement("img");
|
||||||
emojiElem.classList.add("md-emoji");
|
emojiElem.classList.add("md-emoji");
|
||||||
emojiElem.width=isEmojiOnly ? 48 : 22;
|
emojiElem.classList.add(isEmojiOnly ? "bigemoji" : "smallemoji");
|
||||||
emojiElem.height=isEmojiOnly ? 48 : 22;
|
|
||||||
emojiElem.crossOrigin="anonymous";
|
emojiElem.crossOrigin="anonymous";
|
||||||
//emojiElem.src=this.info.cdn.toString() + "/emojis/" + parts[2] + "." + (parts[1] ? "gif" : "png") + "?size=32";
|
emojiElem.src=this.info.cdn.toString() + "emojis/" + parts[2] + "." + (parts[1] ? "gif" : "png") + "?size=32";
|
||||||
//must uncomment later
|
|
||||||
emojiElem.alt="";
|
emojiElem.alt=buildjoin;
|
||||||
emojiElem.loading="lazy";
|
emojiElem.loading="lazy";
|
||||||
span.appendChild(emojiElem);
|
span.appendChild(emojiElem);
|
||||||
|
|
||||||
@@ -404,10 +437,10 @@ function markdown(text : string|string[],{keep=false,stdsize=false} = {}){
|
|||||||
}
|
}
|
||||||
appendcurrent();
|
appendcurrent();
|
||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
markdown.unspoil=function(e:any) : void{
|
static unspoil(e:any) : void{
|
||||||
//console.log("undone")
|
|
||||||
e.target.classList.remove("spoiler")
|
e.target.classList.remove("spoiler")
|
||||||
e.target.classList.add("unspoiled")
|
e.target.classList.add("unspoiled")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import {Contextmenu} from "./contextmenu.js";
|
import {Contextmenu} from "./contextmenu.js";
|
||||||
import {User} from "./user.js";
|
import {User} from "./user.js";
|
||||||
import {Member} from "./member.js";
|
import {Member} from "./member.js";
|
||||||
import {markdown} from "./markdown.js";
|
import {MarkDown} from "./markdown.js";
|
||||||
import {Embed} from "./embed.js";
|
import {Embed} from "./embed.js";
|
||||||
import { Channel } from "./channel.js";
|
import { Channel } from "./channel.js";
|
||||||
import {Localuser} from "./localuser.js";
|
import {Localuser} from "./localuser.js";
|
||||||
@@ -21,7 +21,7 @@ class Message{
|
|||||||
message_reference;
|
message_reference;
|
||||||
type:number;
|
type:number;
|
||||||
timestamp:number;
|
timestamp:number;
|
||||||
content:string;
|
content:MarkDown;
|
||||||
static del:Promise<void>;
|
static del:Promise<void>;
|
||||||
static resolve:Function;
|
static resolve:Function;
|
||||||
div:HTMLDivElement;
|
div:HTMLDivElement;
|
||||||
@@ -37,7 +37,7 @@ class Message{
|
|||||||
}
|
}
|
||||||
static setupcmenu(){
|
static setupcmenu(){
|
||||||
Message.contextmenu.addbutton("Copy raw text",function(){
|
Message.contextmenu.addbutton("Copy raw text",function(){
|
||||||
navigator.clipboard.writeText(this.content);
|
navigator.clipboard.writeText(this.content.rawString);
|
||||||
});
|
});
|
||||||
Message.contextmenu.addbutton("Reply",function(this:Message,div:HTMLDivElement){
|
Message.contextmenu.addbutton("Reply",function(this:Message,div:HTMLDivElement){
|
||||||
this.channel.setReplying(this);
|
this.channel.setReplying(this);
|
||||||
@@ -67,6 +67,9 @@ class Message{
|
|||||||
this.attachments.push(new File(thing,this));
|
this.attachments.push(new File(thing,this));
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
}else if(thing==="content"){
|
||||||
|
this.content=new MarkDown(messagejson[thing],this.channel);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
this[thing]=messagejson[thing];
|
this[thing]=messagejson[thing];
|
||||||
}
|
}
|
||||||
@@ -210,7 +213,7 @@ class Message{
|
|||||||
replyline.classList.add("replyflex")
|
replyline.classList.add("replyflex")
|
||||||
this.channel.getmessage(this.message_reference.message_id).then(message=>{
|
this.channel.getmessage(this.message_reference.message_id).then(message=>{
|
||||||
const author=message.author;
|
const author=message.author;
|
||||||
reply.appendChild(markdown(message.content,{stdsize:true}));
|
reply.appendChild(message.content.makeHTML({stdsize:true}));
|
||||||
minipfp.src=author.getpfpsrc()
|
minipfp.src=author.getpfpsrc()
|
||||||
author.bind(minipfp);
|
author.bind(minipfp);
|
||||||
username.textContent=author.username;
|
username.textContent=author.username;
|
||||||
@@ -271,7 +274,7 @@ class Message{
|
|||||||
}else{
|
}else{
|
||||||
div.classList.remove("topMessage");
|
div.classList.remove("topMessage");
|
||||||
}
|
}
|
||||||
const messaged=markdown(this.content);
|
const messaged=this.content.makeHTML();
|
||||||
div["txt"]=messaged;
|
div["txt"]=messaged;
|
||||||
const messagedwrap=document.createElement("div");
|
const messagedwrap=document.createElement("div");
|
||||||
messagedwrap.classList.add("flexttb")
|
messagedwrap.classList.add("flexttb")
|
||||||
|
@@ -1359,3 +1359,11 @@ span {
|
|||||||
.sizeupdown{
|
.sizeupdown{
|
||||||
height:4in;
|
height:4in;
|
||||||
}
|
}
|
||||||
|
.bigemoji{
|
||||||
|
width:48px;
|
||||||
|
height:48px;
|
||||||
|
}
|
||||||
|
.smallemoji{
|
||||||
|
width:22px;
|
||||||
|
height:22px;
|
||||||
|
}
|
@@ -1,6 +1,6 @@
|
|||||||
//const usercache={};
|
//const usercache={};
|
||||||
import {Member} from "./member.js";
|
import {Member} from "./member.js";
|
||||||
import {markdown} from "./markdown.js";
|
import {MarkDown} from "./markdown.js";
|
||||||
import {Contextmenu} from "./contextmenu.js";
|
import {Contextmenu} from "./contextmenu.js";
|
||||||
import {Localuser} from "./localuser.js";
|
import {Localuser} from "./localuser.js";
|
||||||
import {Guild} from "./guild.js";
|
import {Guild} from "./guild.js";
|
||||||
@@ -12,7 +12,7 @@ class User{
|
|||||||
id:string;
|
id:string;
|
||||||
avatar:string;
|
avatar:string;
|
||||||
username:string;
|
username:string;
|
||||||
bio:string;
|
bio:MarkDown;
|
||||||
discriminator:string;
|
discriminator:string;
|
||||||
pronouns:string;
|
pronouns:string;
|
||||||
bot:boolean;
|
bot:boolean;
|
||||||
@@ -49,6 +49,10 @@ class User{
|
|||||||
if(!owner){console.error("missing localuser")}
|
if(!owner){console.error("missing localuser")}
|
||||||
if(dontclone){
|
if(dontclone){
|
||||||
for(const thing of Object.keys(userjson)){
|
for(const thing of Object.keys(userjson)){
|
||||||
|
if(thing==="bio"){
|
||||||
|
this.bio=new MarkDown(userjson[thing],this.localuser);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
this[thing]=userjson[thing];
|
this[thing]=userjson[thing];
|
||||||
}
|
}
|
||||||
this.hypotheticalpfp=false;
|
this.hypotheticalpfp=false;
|
||||||
@@ -152,7 +156,7 @@ class User{
|
|||||||
|
|
||||||
const rule=document.createElement("hr");
|
const rule=document.createElement("hr");
|
||||||
userbody.appendChild(rule);
|
userbody.appendChild(rule);
|
||||||
const biohtml=markdown(this.bio);
|
const biohtml=this.bio.makeHTML();
|
||||||
userbody.appendChild(biohtml);
|
userbody.appendChild(biohtml);
|
||||||
}
|
}
|
||||||
console.log(div);
|
console.log(div);
|
||||||
|
Reference in New Issue
Block a user