JSFiddle - React, Tailwind, and code Playground

by harperj1029

JavaScript

var uri = function(url, displayLength) {
    var public = {};
    url = url || '';
    var r = /^(?:([^:\/?\#]+):)?(?:\/\/([^\/?\#]*))?([^?\#]*)(?:\?([^\#]*))?(?:\#(.*))?/;
    var parts = url.match(r);
    public.scheme = parts[1] || '';
    public.authority = parts[2] || '';
    public.path = parts[3] || '';
    public.query = parts[4] || '';
    public.fragment = parts[5] || '';
    public.displayText = function() {
        var length = displayLength || 20;
        var result = (public.authority.replace('www.', '') + public.path.replace('www.', '')).substring(0, length);
        if (result.length > 20) {
            result = result.substring(0, 17) + '...';
        }
        return result;
    };
    public.toString = function() {
        var result = (public.scheme || 'http') + '://';
        if (public.authority) {
            result += public.authority;
        }
        if (public.path) {
            result += public.path;
        }
        if (public.query) {
            result += '?' + public.query;
        }
        if (public.fragment) {
            result += '#' + public.fragment;
        }
        return result;
    };
    return public;
};
var log = function(message) {
    document.write(message + "<br/>");
};
Array.prototype.sum = function(predicate) {
    predicate = predicate ||
    function(match) {
        if (typeof match == "string") {
            return match.length;
        }
        return match;
    };
    var result = 0;
    for (var i = 0; i < this.length; i++) {
        result += predicate(this[i]);
    }
    return result;
};
var linkRegex = /\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[A-Z0-9+&@#/%=~_|$])/gi;
var shortenUrls = function(input) {
    var matches = (input.match(linkRegex) || []);
    for (var i = 0; i < matches.length; i++) {
        var uri = new uri(matches[i]);
        input = input.replace(matches[i], '<a class="chat-link"...