JSFiddle - React, Tailwind, and code Playground

by dougneiner

JavaScript

/*!
 * Amplify Core @VERSION
 * 
 * Copyright 2011 appendTo LLC. (http://appendto.com/team)
 * Dual licensed under the MIT or GPL licenses.
 * http://appendto.com/open-source-licenses
 * 
 * http://amplifyjs.com
 */
(function( global, undefined ) {

var slice = [].slice,
    subscriptions = {};

var amplify = global.amplify = {
    publish: function( topic ) {
        var args = slice.call( arguments, 1 ),
            topicSubscriptions,
            subscription,
            length,
            i = 0,
            ret;

        if ( !subscriptions[ topic ] ) {
            return true;
        }

        topicSubscriptions = subscriptions[ topic ].slice();
        for ( length = topicSubscriptions.length; i < length; i++ ) {
            subscription = topicSubscriptions[ i ];
            subscription.callback.topic = topic;
            ret = subscription.callback.apply( subscription.context || subscription.callback, args );
            if ( ret === false ) {
                break;
            }
        }
        return ret !== false;
    },

    subscribe: function( topic, context, callback, priority ) {
        if ( arguments.length === 3 && typeof callback === "number" ) {
            priority = callback;
            callback = context;
            context = null;
        }
        if ( arguments.length === 2 ) {
            callback = context;
            context = null;
        }
        priority = priority || 10;

        var topicIndex = 0,
            topics = topic.split( /\s/ ),
            topicLength = topics.length,
            added;
        for ( ; topicIndex < topicLength; topicIndex++ ) {
            topic = topics[ topicIndex ];
            added = false;
            if ( !subscriptions[ topic ] ) {
                subscriptions[ topic ] = [];
            }
    
            var i = subscriptions[ topic ].length - 1,
                subscriptionInfo = {
                    callback: callback,
                    context: context,
                   ...