JSFiddle - React, Tailwind, and code Playground

HTML

<body>
<script>

    /**
     * This is a quasi clone of jQuery's extend() function.
     * by Romain WEEGER for wJs library - www.wexample.com
     * @returns {*|{}}
     */
    function extend() {
        // Make a copy of arguments to avoid JS inspector hints.
        var to_add, name, copy_is_array, clone,
        // The target object who receive parameters
        // form other objects.
                target = arguments[0] || {},
        // Index of first argument to mix to target.
                i = 1,
        // Mix target with all function arguments.
                length = arguments.length,
        // Define if we merge object recursively.
                deep = false;

        // Handle a deep copy situation.
        if (typeof target === 'boolean') {
            deep = target;
            // Skip the boolean and the target.
            target = arguments[ i ] || {};
            // Use next object as first added.
            i++;
        }

        // Handle case when target is a string or something (possible in deep copy)
        if (typeof target !== 'object' && typeof target !== 'function') {
            target = {};
        }

        // Loop trough arguments.
        for (false; i < length; i += 1) {
            // Only deal with non-null/undefined values
            if ((to_add = arguments[ i ]) !== null) {
                // Extend the base object.
                for (name in to_add) {
                    // We do not wrap for loop into hasOwnProperty,
                    // to access to all values of object.
                    // Prevent never-ending loop.
                    if (target === to_add[name]) {
                        continue;
                    }
                    // Recurse if we're merging plain objects or arrays.
                    if (deep && to_add[name] && (is_plain_object(to_add[name]) || (copy_is_array = Array.isArray(to_add[name])))) {
                        if (copy_is_array) {
                           ...