JSFiddle - React, Tailwind, and code Playground

HTML

<input type='button' value='dale' />

JavaScript

(function(w){
	var morse = {
		alpha:{a:'.-',b:'-...',c:'-.-.',d:'-..',e:'.',f:'..-.',g:'--.',h:'....',i:'..',j:'.---',k:'-.-',l:'.-..',m:'--',n:'-.',o:'---',p:'.--.',q:'--.-',r:'.-.',s:'...',t:'-',u:'..-',v:'...-',w:'.--',x:'-..-',y:'-.--',z:'--..'},
		code:{},
		maxl:0,
		encode:function(string){
			var p=[];
			string.toLowerCase().split(" ").forEach(function(v){
				var s=[];
				v.split("").forEach(function(l){
					s.push(morse.alpha[l]);
				});
				p.push(s.join(""));
			})
			return p.join(" ");
		},
		_decode:function(string){
			var  l = string.length, c=[];
			for ( var i = 0; i<l; i++){
				c.push((function(){
					var p=[]; n='';
					for(var ik = 1; ik<=morse.maxl; ik++){
						var res	= string.substr(i,ik);
						if( n != res ){
							n=res;
							p.push(res); 
						}
					};
					return p;
				})())
				
			}
			
			var li = c.length;
			matrix = [];
			var fn = function(col, st, mt){
				if(!c[col]) return false;
				for(var n in c[col]){
					var co = c[col][n];
					if( string == st+co){
						matrix.push((mt?mt+',':'')+col+'.'+n);
					}else{
						var ac = col+1;
						for( var i=col+1; i<li ;i++ )
						fn(i,st+co,(mt?mt+',':'')+col+'.'+n);
					}
				}
			}
			fn(0,'','');
			
			var list=[];
			matrix.forEach(function(v){
				var lis = [];
				v.split(",").forEach(function(k){
					var i = k.split(".");
					lis.push(morse.code[c[i[0]][i[1]]]);
				});
				list.push(lis);
			});
			var res = [];
			list.forEach(function(v){
				v = v.join("");
				if( res.indexOf(v) == -1)
				 	res.push(v);
			});
			
			return res.sort();
		},
		decode:function(string){
			var res = [];
			string.split(" ").forEach(function(v){
				res.push(morse._decode(v));
			});
			return res;
		},
		ini:function(){
			var keys=[],tm={};
			for (var n in morse.alpha){
				var c = morse.alpha[n];
				tm[c]=n;
				keys.push(c);
				if( morse.maxl< c.length...