ami/src/ami.js/ts_utils.js

74 lines
3.7 KiB
JavaScript

#include ts_20_ui.js
var Utils = (function () {
function Utils() {
}
Utils.replaceAll = function (haystack, needle, replace, ignore) {
if (ignore === void 0) { ignore = false; }
return haystack.replace(new RegExp(needle.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g, "\\$&"), (ignore ? "gi" : "g")), (typeof (replace) == "string") ? replace.replace(/\$/g, "$$$$") : replace);
};
Utils.Sanitize = function (str) {
return Utils.replaceAll(Utils.replaceAll(Utils.replaceAll(str, ">", "&gt;"), "<", "&lt;"), "\n", " <br /> ");
};
Utils.StripCharacters = function (str, chars) {
if (chars != "") {
for (var i = 0; i < chars.length; i++)
str = Utils.replaceAll(str, chars[i], "");
}
return str;
};
Utils.EmbedImage = function (link) {
var id = link.parentElement.title;
var holder = link.parentElement.getElementsByTagName("span")[0];
var imglink = holder.getElementsByTagName("a")[0];
imglink.innerHTML = holder.title == "link" ? "<img src='" + id + "' alt='userimg' class='insertImage' />" : id;
link.innerHTML = holder.title == "link" ? "Remove" : "Embed";
holder.title = holder.title == "link" ? "image" : "link";
link.classList[holder.title == 'link' ? 'add' : 'remove']('js-embed-btn');
link.classList[holder.title == 'link' ? 'remove' : 'add']('js-unembed-btn');
};
Utils.EmbedAudio = function (link) {
var id = link.parentElement.title;
var holder = link.parentElement.getElementsByTagName("span")[0];
holder.innerHTML = holder.title == "link" ? "<audio src='" + id + "' class='insertAudio' controls></audio>" : "<a href='"+ id +"' onclick='window.open(this.href);return false;'>"+ id +"</a>";
link.innerHTML = holder.title == "link" ? "Remove" : "Embed";
holder.title = holder.title == "link" ? "image" : "link";
link.classList[holder.title == 'link' ? 'add' : 'remove']('js-embed-btn');
link.classList[holder.title == 'link' ? 'remove' : 'add']('js-unembed-btn');
};
Utils.EmbedVideo = function (link) {
var id = link.parentElement.title;
var holder = link.parentElement.getElementsByTagName("span")[0];
holder.innerHTML = holder.title == "link" ? "<video src='" + id + "' style='max-width: 480px; max-height: 360px;' controls class='insertVideo'></video>" : "<a href='"+ id +"' onclick='window.open(this.href);return false;'>"+ id +"</a>";
link.innerHTML = holder.title == "link" ? "Remove" : "Embed";
holder.title = holder.title == "link" ? "image" : "link";
link.classList[holder.title == 'link' ? 'add' : 'remove']('js-embed-btn');
link.classList[holder.title == 'link' ? 'remove' : 'add']('js-unembed-btn');
};
Utils.ToggleSpoiler = function(element) {
var container = element.parentElement,
target = container.getElementsByTagName("span")[0];
if(container.dataset.revealed === 'yes') {
container.dataset.revealed = 'no';
target.textContent = '*** HIDDEN ***';
element.textContent = 'Reveal';
} else {
container.dataset.revealed = 'yes';
target.textContent = container.dataset.shit;
element.textContent = 'Hide';
}
}
Utils.SanitizeRegex = function (input) {
var out = "";
for (var i = 0; i < input.length; i++) {
var cc = input.charCodeAt(i);
if (!((cc > 47 && cc < 58) || (cc > 64 && cc < 91) || (cc > 96 && cc < 123)))
out += "\\";
out += input.charAt(i);
}
return out;
};
return Utils;
})();