marked.use({ extensions: [ { name: 'mention', level: 'inline', start: function(src){ const match = src.match(/@[a-zA-Z0-9_\-]+/); return match != null ? match.index : -1; }, tokenizer: function(src) { const rule = /^@[a-zA-Z0-9_\-]+/; const match = rule.exec(src); if(match){ return { type: 'mention', raw: match[0], text: match[0].trim().slice(1), tokens: [] }; } }, renderer(token) { const u = token.raw; return ` ${u}`; } } ] }); const reDisableBeforeUnload = /^\/submit|^\/h\/[a-zA-Z0-9_\-]{3,20}\/submit/; function markdown(t) { let input = t.value; if (!reDisableBeforeUnload.test(location.pathname)) { if (!window.onbeforeunload) { window.onbeforeunload = function (e) { e = e || window.event; if (e) { e.returnValue = 'Any string'; } return 'Any string'; }; } else if (!input) { window.onbeforeunload = null } } if (!input.includes('```') && !input.includes('
'))
		input = input.replace(/\n/g, '\n\n')
	input = input.replace(/\|\|(.*?)\|\|/g, '$1')
	input = input.replace(/(\n|^)>([^ >][^\n]*)/g, '$1\>$2')

	const emojis = Array.from(input.matchAll(/:([a-z0-9_\-!#@]{1,36}):(?![^`]*`)/gi))
	if(emojis != null){
		for(i = 0; i < emojis.length; i++){
			const old = emojis[i][0];
			if (old.includes('marseyrandom')) continue
			const emoji = old.replace(/[:!@#]/g,'').toLowerCase();
			const mirroredClass = old.indexOf('!') == -1 ? '' : 'mirrored';
			const emojiClass = old.indexOf('#') == -1 ? 'emoji' : 'emoji-lg';
			if (emoji.endsWith('pat') && emoji != 'marseyunpettablepat') {
				emoji = emoji.substr(0, emoji.length - 3);
				const url = old.indexOf('@') != -1 ? `/@${emoji}/pic` : `/e/${emoji}.webp`;
				input = input.replace(old, ``);
			} else {
				input = input.replace(old, ``);
			}
		}
	}

	let options = Array.from(input.matchAll(/\s\$\$([^\$\n]+)\$\$\s*(?![^`]*`)/gi))
	if(options != null){
		for(i = 0; i < options.length; i++){
			const option = options[i][0];
			const option2 = option.replace(/\$\$/g, '').replace(/\n/g, '')
			input = input.replace(option, '');
			input += `
`; } } options = Array.from(input.matchAll(/\s*&&([^\$\n]+)&&\s*(?![^`]*`)/gi)) if(options != null){ for(i = 0; i < options.length; i++){ const option = options[i][0]; const option2 = option.replace(/&&/g, '').replace(/\n/g, '') input = input.replace(option, ''); input += `
`; } } input = marked(input) input = input.replace(/\n\n/g, '
') document.getElementById(t.dataset.preview).innerHTML = input } function charLimit(form, text) { const input = document.getElementById(form); text = document.getElementById(text); const length = input.value.length; const maxLength = input.getAttribute("maxlength"); if (length >= maxLength) { text.style.color = "#E53E3E"; } else if (length >= maxLength * .72){ text.style.color = "#FFC107"; } else { text.style.color = "#A0AEC0"; } text.innerText = length + ' / ' + maxLength; } function remove_dialog() { window.onbeforeunload = null; }