JSFiddle - React, Tailwind, and code Playground

HTML

<pre id="phrases"></pre>

JavaScript

var answer=prompt('Podaj elementy do "spermutowania" oddzielone spacjami:','Lubicie przestawiać wyrazy więc ofiaruję Wam mój kod');

var words2permute = answer.split(' ');

function permutations(words)
{
	var res='';
	var factorials = [];
    factorials.push(1);
    for(var i=1; i<=words.length; ++i)
	{
		factorials.push(factorials[i-1] * i);
    }

	for(var i=0; i<factorials[words.length]; ++i)
	{
		var phrase = '';
		var temp = words.slice();
		var positionCode = i;
		for(var position=words.length; position>0; --position)
		{
			var selected = Math.floor(positionCode / factorials[position-1]);
			phrase += temp[selected] +' ';
			positionCode = positionCode % factorials[position-1];
			temp.splice(selected,1);
		}
		res += phrase.charAt(0).toUpperCase() + phrase.slice(1, phrase.length-1) + '\n';
	}
	return(res);
}
//alert(permutations(words2permute));
var start = new Date().getTime();
var res2 = permutations(words2permute);
var end = new Date().getTime();
var time = end - start;
document.getElementById('phrases').innerHTML = res2;
//alert(res2);
//alert('Liczba permutacji dla ' + words2permute.length + ' elementow: '+(res2.split('\n').length-1) + '\nOrientacyjny czas wykonania (wersja iteracyjna): ' + time);