JSFiddle - React, Tailwind, and code Playground

by cCarlson

JavaScript

/**
 * ngLazyStyle := module
 * TODO: move this to new file, add dependency to requirejs.config shim
 */
(function(angular){
	var ngLazyStyle = angular.module('ngLazyStyle', []);
	ngLazyStyle.factory('$lazyCSS', function LazyCSS(){
		return function RequireCSS(url){
			var link = null;
			if(!RequireCSS[url] && !document.querySelector('link[href*="' + url + '"]')){
				link = document.createElement('link');
				link.type = 'text/css';
				link.rel = 'stylesheet';
				link.href = url;
				RequireCSS[url] = link;
				document.getElementsByTagName('head')[0].appendChild(link);
			}
			return RequireCSS;
		}
	});
})(angular);


/**
 * TODO: !!!!!!!!!! DOES THIS WORK WITH MULTIPLE INSTANCES ??????????? :: NO! -- Links are broken
 * 		* MAKE this.presolve A new Presolve(), OR, WRAP ENTIRE MODULE IN A FUNCTION.
 * 		* OR... WAS IT JUST THE navControls CAUSING THE ERROR???
 * 		* !!!! DOES Angular AUTOMATICALLY CREATE A new Instance() FOR .providers???
 * TODO: $interpolate EVERYTHING!
 * TODO: ADD 'resolve' PROPERTY???
 * TODO: ADD 'interpolate' METHOD (does not lazyLoad)???
 * 		* STILL USE resolve??? (think about $route.current.params)
 * TODO: ADD ngPresolve.filter('titleCase', ...)  ( actually, ngPresolve.filter('Title?', ...) )
 * 
 * TODO: check for data/variable/object presence/integrity before manipulations ($interpolate, etc)
 */
(function(angular, require){
	var ngPresolve = angular.module('ngPresolve', ['ngRoute', 'ngLazyStyle']);
	var $injector = angular.injector(['ng'])
	  , $interpolate = $injector.get('$interpolate')
	  , $controller = $injector.get('$controller');
	
	ngPresolve.provider('$presolve', function PresolveProvider($routeProvider, $controllerProvider, $filterProvider){
		
		$filterProvider.register('TitleCase', function TitleCase($interpolate){
			return function titleCase(exp){
				var ex = exp[0].toUpperCase() + exp.slice(1);
				return ex;
			};
		});
		
		var thus = this;
		
		var toTitleCase = function PRIVATE(str){
			return...