Frontend Forever App
We have a mobile app for you to download and use. And you can unlock many features in the app.
Get it now
Intall Later
Run
HTML
CSS
Javascript
Output
Document
Emojis:
@charset "UTF-8"; @import url(https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800); *, :after, :before { box-sizing: border-box; padding: 0; margin: 0; } body { margin: 0 auto; background: #f5f5f5; font-family: 'Roboto', sans-serif; } #s, #p { min-height: 200px; min-width: 200px; } #s { height: 95vh; width: 95vw; max-height: 100vw; max-width: 100vh; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); /* border:1px solid #ccc; */ border-radius: 50%; } #c { height: 100%; width: 100%; } input { min-width: 100px; } .slice:hover > path, .slice:hover > text { transition: 300ms; transform: translate(-3.125%, -3.125%) scale(1.0625); } .winner > path { transition: 300ms; transform: translate(-12.5%, -12.5%) scale(1.25); } .winner > text { transition: 300ms; /* transform: translate(-5%, -5%) scale(1.1); */ transform: translate(-10%, -10%) scale(1.2); /* transform: translate(-12.5%, -12.5%) scale(1.25); */ } .spinner { transition: 100ms; cursor: pointer; } .spinner:hover { transform: translate(-3.125%, -3.125%) scale(1.0625); } .spinner:active { transition: 50ms; transform: translate(-12.5%, -12.5%) scale(1.25); } .increaseNumbers { position: fixed; right: 15px; top: 10px; }
console.log("Event Fired") let emojis = ["๐", "๐", "๐", "๐", "๐", "๐ ", "๐", "๐", "๐", "๐ฟ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐ก", "๐ข", "๐ฃ", "๐ค", "๐ฅ", "๐ฆ", "๐ง", "๐จ", "๐ฉ", "๐ช", "๐ซ", "๐ฌ", "๐ญ", "๐ฎ", "๐ฏ", "๐ฐ", "๐ฑ", "๐ฒ", "๐ณ", "๐ด", "๐ต", "๐ถ", "๐ท", "๐ธ", "๐น", "๐บ", "๐ป", "๐ผ", "๐ฝ", "๐พ", "๐ฟ", "๐", "๐ฃ", "๐ค", "๐ฅ", "๐ถ", "๐ถ๐ป", "๐ถ๐ผ", "๐ถ๐ฝ", "๐ถ๐พ", "๐ถ๐ฟ", "๐ฆ", "๐ฆ๐ป", "๐ฆ๐ผ", "๐ฆ๐ฝ", "๐ฆ๐พ", "๐ฆ๐ฟ", "๐ง", "๐ง๐ป", "๐ง๐ผ", "๐ง๐ฝ", "๐ง๐พ", "๐ง๐ฟ", "๐จ", "๐จ๐ป", "๐จ๐ผ", "๐จ๐ฝ", "๐จ๐พ", "๐จ๐ฟ", "๐ฉ", "๐ฉ๐ป", "๐ฉ๐ผ", "๐ฉ๐ฝ", "๐ฉ๐พ", "๐ฉ๐ฟ", "๐ช", "๐จโ๐ฉโ๐ง", "๐จโ๐ฉโ๐งโ๐ฆ", "๐จโ๐ฉโ๐ฆโ๐ฆ", "๐จโ๐ฉโ๐งโ๐ง", "๐ฉโ๐ฉโ๐ฆ", "๐ฉโ๐ฉโ๐ง", "๐ฉโ๐ฉโ๐งโ๐ฆ", "๐ฉโ๐ฉโ๐ฆโ๐ฆ", "๐ฉโ๐ฉโ๐งโ๐ง", "๐จโ๐จโ๐ฆ", "๐จโ๐จโ๐ง", "๐จโ๐จโ๐งโ๐ฆ", "๐จโ๐จโ๐ฆโ๐ฆ", "๐จโ๐จโ๐งโ๐ง", "๐ซ", "๐ฌ", "๐ญ", "๐ฏ", "๐ฐ", "๐ฐ๐ป", "๐ฐ๐ผ", "๐ฐ๐ฝ", "๐ฐ๐พ", "๐ฐ๐ฟ", "๐ฑ", "๐ฑ๐ป", "๐ฑ๐ผ", "๐ฑ๐ฝ", "๐ฑ๐พ", "๐ฑ๐ฟ", "๐ฒ", "๐ฒ๐ป", "๐ฒ๐ผ", "๐ฒ๐ฝ", "๐ฒ๐พ", "๐ฒ๐ฟ", "๐ณ", "๐ณ๐ป", "๐ณ๐ผ", "๐ณ๐ฝ", "๐ณ๐พ", "๐ณ๐ฟ", "๐ด", "๐ด๐ป", "๐ด๐ผ", "๐ด๐ฝ", "๐ด๐พ", "๐ด๐ฟ", "๐ต", "๐ต๐ป", "๐ต๐ผ", "๐ต๐ฝ", "๐ต๐พ", "๐ต๐ฟ", "๐ฎ", "๐ฎ๐ป", "๐ฎ๐ผ", "๐ฎ๐ฝ", "๐ฎ๐พ", "๐ฎ๐ฟ", "๐ท", "๐ท๐ป", "๐ท๐ผ", "๐ท๐ฝ", "๐ท๐พ", "๐ท๐ฟ", "๐ธ", "๐ธ๐ป", "๐ธ๐ผ", "๐ธ๐ฝ", "๐ธ๐พ", "๐ธ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐ผ", "๐ผ๐ป", "๐ผ๐ผ", "๐ผ๐ฝ", "๐ผ๐พ", "๐ผ๐ฟ", "๐ ", "๐ ๐ป", "๐ ๐ผ", "๐ ๐ฝ", "๐ ๐พ", "๐ ๐ฟ", "๐ป", "๐น", "๐บ", "๐ฉ", "๐", "๐ฝ", "๐พ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐ ", "๐ ๐ป", "๐ ๐ผ", "๐ ๐ฝ", "๐ ๐พ", "๐ ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐ฉโโค๏ธโ๐ฉ", "๐จโโค๏ธโ๐จ", "๐", "๐ฉโโค๏ธโ๐โ๐ฉ", "๐จโโค๏ธโ๐โ๐จ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐", "๐ ", "๐ ", "๐ ๐ป", "๐ ๐ผ", "๐ ๐ฝ", "๐ ๐พ", "๐ ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "โ", "โ๐ป", "โ๐ผ", "โ๐ฝ", "โ๐พ", "โ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "โ", "โ๐ป", "โ๐ผ", "โ๐ฝ", "โ๐พ", "โ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "โ", "โ๐ป", "โ๐ผ", "โ๐ฝ", "โ๐พ", "โ๐ฟ", "โ", "โ๐ป", "โ๐ผ", "โ๐ฝ", "โ๐พ", "โ๐ฟ", "๐ช", "๐ช๐ป", "๐ช๐ผ", "๐ช๐ฝ", "๐ช๐พ", "๐ช๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐ฑ", "๐ฒ", "๐ณ", "๐ด", "๐ต", "๐ท", "๐ธ", "๐น", "๐บ", "๐ป", "๐ผ", "๐", "๐พ", "๐ฟ", "๐", "๐", "๐", "๐", "๐", "๐ฐ", "๐", "๐", "๐ญ", "๐น", "๐", "๐", "๐", "๐ฎ", "๐ ", "๐", "๐ฏ", "๐", "๐ฐ", "๐", "๐ฑ", "๐", "๐ด", "๐", "๐", "๐", "๐", "๐", "๐ค", "๐ฃ", "๐ฅ", "๐ฆ", "๐ง", "๐", "๐ช", "๐ซ", "๐", "๐", "๐ท", "๐ฝ", "๐", "๐ฉ", "๐ถ", "๐บ", "๐ป", "๐จ", "๐ผ", "๐ต", "๐", "๐", "๐", "๐", "๐", "๐ฒ", "๐", "๐", "๐ข", "๐ธ", "๐", "๐ณ", "๐ฌ", "๐", "๐", "๐ ", "๐ก", "๐", "๐", "๐", "๐", "๐", "๐", "๐พ", "โก๏ธ", "๐ฅ", "๐", "โ๏ธ", "โ ๏ธ", "โ๏ธ", "๐ง", "๐ฆ", "โ๏ธ", "๐จ", "โ๏ธ", "๐", "โญ๏ธ", "๐ ", "๐", "๐ ", "๐", "๐", "๐", "๐", "๐ป", "๐พ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐", "๐ฝ", "๐ ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ก", "๐ข", "๐ฃ", "๐ค", "๐ฅ", "๐ฆ", "๐ง", "๐จ", "๐ฉ", "๐ช", "๐ซ", "๐ฌ", "๐ญ", "๐ฎ", "๐ฏ", "๐ฐ", "๐ฑ", "๐ฒ", "๐ณ", "๐ด", "๐ต", "โ๏ธ", "๐ถ", "๐ท", "๐ธ", "๐น", "๐บ", "๐ป", "๐ผ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ซ", "โจ", "๐ฅ", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฎ", "๐", "โค๏ธ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐ถ", "๐ถ๐ป", "๐ถ๐ผ", "๐ถ๐ฝ", "๐ถ๐พ", "๐ถ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐ฃ", "๐ฃ๐ป", "๐ฃ๐ผ", "๐ฃ๐ฝ", "๐ฃ๐พ", "๐ฃ๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "๐", "๐ฟ", "โ๏ธ", "๐ด", "๐ด๐ป", "๐ด๐ผ", "๐ด๐ฝ", "๐ด๐พ", "๐ด๐ฟ", "๐ต", "๐ต๐ป", "๐ต๐ผ", "๐ต๐ฝ", "๐ต๐พ", "๐ต๐ฟ", "๐", "๐๐ป", "๐๐ผ", "๐๐ฝ", "๐๐พ", "๐๐ฟ", "โบ๏ธ", "๐ฃ", "โฝ๏ธ", "๐", "๐", "โพ๏ธ", "๐พ", "๐", "โณ๏ธ", "๐", "๐ฝ", "๐", "๐น", "๐ธ", "๐ป", "๐ท", "๐บ", "๐ต", "๐ถ", "๐ผ", "๐ง", "๐ค", "๐ญ", "๐ซ", "๐ฉ", "๐ช", "๐ฌ", "๐จ", "๐ฏ", "๐ฑ", "๐ณ", "๐ฐ", "๐ฒ", "๐ฎ", "๐ด", "๐", "๐๏ธ", "๐ ", "๐ก", "๐ข", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐จ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ฒ", "๐", "โฝ๏ธ", "๐ง", "๐ฆ", "๐ฅ", "๐", "๐", "โ๏ธ", "๐บ", "โ๏ธ", "๐ข", "๐ค", "โต๏ธ", "๐ก", "๐ ", "๐", "๐", "๐", "๐", "๐ ", "๐ด", "๐ถ", "๐ท", "๐ต", "๐ฝ", "๐ฟ", "๐", "๐ผ", "โฒ๏ธ", "๐ฐ", "๐ฏ", "๐", "๐", "๐", "๐", "๐ ", "๐ก", "๐ข", "๐ฌ", "๐ญ", "๐ฃ", "๐ค", "๐ฅ", "๐ฆ", "๐จ", "๐ฉ", "๐", "โช๏ธ", "๐ช", "๐ซ", "๐ฆ๐บ", "๐ฆ๐น", "๐ง๐ช", "๐ง๐ท", "๐จ๐ฆ", "๐จ๐ฑ", "๐จ๐ณ", "๐จ๐ด", "๐ฉ๐ฐ", "๐ซ๐ฎ", "๐ซ๐ท", "๐ฉ๐ช", "๐ญ๐ฐ", "๐ฎ๐ณ", "๐ฎ๐ฉ", "๐ฎ๐ช", "๐ฎ๐ฑ", "๐ฎ๐น", "๐ฏ๐ต", "๐ฐ๐ท", "๐ฒ๐ด", "๐ฒ๐พ", "๐ฒ๐ฝ", "๐ณ๐ฑ", "๐ณ๐ฟ", "๐ณ๐ด", "๐ต๐ญ", "๐ต๐ฑ", "๐ต๐น", "๐ต๐ท", "๐ท๐บ", "๐ธ๐ฆ", "๐ธ๐ฌ", "๐ฟ๐ฆ", "๐ช๐ธ", "๐ธ๐ช", "๐จ๐ญ", "๐น๐ท", "๐ฌ๐ง", "๐บ๐ธ", "๐ฆ๐ช", "๐ป๐ณ", "โ๏ธ", "๐ฑ", "๐ฒ", "๐ป", "โฐ", "โณ", "โ๏ธ", "๐ท", "๐น", "๐ฅ", "๐บ", "๐ป", "๐", "๐", "โ๏ธ", "๐ ", "๐ฝ", "๐พ", "๐ฟ", "๐", "๐ผ", "๐", "๐", "๐ก", "๐ฆ", "๐ก", "๐ณ", "๐ธ", "๐ฐ", "๐", "๐", "๐", "๐", "๐", "๐ผ", "๐", "๐", "๐", "๐", "๐ก", "๐ ", "๐ข", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ช", "๐ฟ", "๐", "๐ฝ", "๐", "๐", "๐", "๐ฌ", "๐ญ", "๐ฎ", "๐ง", "๐ช", "๐ฉ", "๐จ", "๐ฃ", "๐ฌ", "๐ซ", "๐", "๐ฐ", "๐", "โ๏ธ", "๐ฉ", "๐จ", "๐ง", "๐ฅ", "๐ค", "๐ฆ", "๐ฏ", "๐ฎ", "๐ช", "๐ซ", "๐ฌ", "๐ญ", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐", "๐ ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "โ๏ธ", "๐", "๐", "๐", "๐ฉ", "๐", "๐", "โ๏ธ", "โ๏ธ", "๐", "๐", "๐", "๐", "๐", "๐ฃ", "๐ข", "๐", "๐", "๐", "๐", "๐ค", "๐", "๐", "๐ญ", "๐ฌ", "๐ธ", "๐", "๐", "๐ซ", "โ๏ธ", "๐", "๐ท", "๐ฏ", "๐ณ", "๐ฑ", "๐ต", "๐", "๐", "๐", "๐ฎ", "ใ๏ธ", "ใ๏ธ", "๐ด", "๐ต", "๐ฒ", "๐ถ", "๐๏ธ", "๐ธ", "๐บ", "๐ท", "๐น", "๐ณ", "๐", "๐", "๐ฏ๏ธ", "๐น", "โ๏ธ", "โณ๏ธ", "โ", "โ ", "โด๏ธ", "๐ณ", "๐ด", "๐", "๐ ฐ", "๐ ฑ", "๐", "๐", "๐ พ", "๐", "๐", "๐ ฟ๏ธ", "๐พ", "๐", "๐", "๐", "๐", "๐", "๐", "๐ง", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "๐ป", "๐น", "๐บ", "๐ผ", "โฟ๏ธ", "๐ฐ", "๐ญ", "๐ฎ", "โถ๏ธ", "โ๏ธ", "๐ผ", "๐ฝ", "โฉ", "โช", "โซ", "โฌ", "โก๏ธ", "โฌ ๏ธ", "โฌ๏ธ", "โฌ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "โ๏ธ", "๐", "โช๏ธ", "โฉ๏ธ", "โคด๏ธ", "โคต๏ธ", "๐", "๐", "๐", "#โฃ", "0โฃ", "1โฃ", "2โฃ", "3โฃ", "4โฃ", "5โฃ", "6โฃ", "7โฃ", "8โฃ", "9โฃ", "๐", "๐ข", "๐ค", "๐ก", "๐ ", "โน๏ธ", "๐ถ", "๐ฆ", "๐ฃ", "โ", "โ", "ใฐ", "โ", "โ๏ธ", "โ๏ธ", "๐", "โข", "ยฉ", "ยฎ", "๐ฑ", "๐ฒ", "โฐ", "โฟ", "ใฝ๏ธ", "โ๏ธ", "โ", "โ", "โ", "โผ๏ธ", "โ๏ธ", "โ", "โญ๏ธ", "๐ฏ", "๐", "๐", "๐", "๐", "๐", "๐", "โ๏ธ", "โ", "๐ฏ", "๐ฐ", "๐ฑ", "โ ๏ธ", "โจ๏ธ", "โป๏ธ", "๐ข", "๐ ", "โ ๏ธ", "โฃ๏ธ", "โฅ๏ธ", "โฆ๏ธ", "โ๏ธ", "โช๏ธ", "โซ๏ธ", "๐", "๐ด", "๐ต", "๐บ", "๐ป", "๐ธ", "๐น", "๐ถ", "๐ท", "โช๏ธ", "โซ๏ธ", "โฌ๏ธ", "โฌ๏ธ", "โผ๏ธ", "โป๏ธ", "โพ๏ธ", "โฝ๏ธ", "๐ฒ", "๐ณ", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐ ", "๐ก", "๐ข", "๐ฃ", "๐ค", "๐ฅ", "๐ฆ", "๐ง"]; const randInt = (min, max) => { return Math.floor(Math.random() * (max - min + 1)) + min; }; let rr = randInt(55, 255); let gg = randInt(55, 255); let bb = randInt(55, 255); // store the timeout so we can cancel it if we spin again or change the number of emojis mid-spin let spinTimeout = false; function createSpinner(svgElt, slices = 12, list = emojis) { clearTimeout(spinTimeout); const percentC = 100 / slices; const ang = 270 - percentC * 1.8; const cx = 50; const cy = 50; const r = 25; const sw = 30; const startAngle = (ang * Math.PI) / 180; // convert to radians const angle = (percentC / 100) * (2 * Math.PI); const x = cx + r * Math.cos(startAngle + angle); const y = cy + r * Math.sin(startAngle + angle); const largeArc = percentC > 50 ? 1 : 0; let d = `M ${cx + r * Math.cos(startAngle)} ${cy + r * Math.sin(startAngle)} A ${r} ${r} 0 ${largeArc} 1 ${x} ${y}`; let textPath = `
`; svgElt.insertAdjacentHTML("afterbegin", `
`); svgElt.insertAdjacentHTML("afterbegin", textPath); let sidewaysText = false; let sidewaysTextTransform = ""; let textY = 15; let textSize = 200 / slices; if (textSize >= 20) { textSize = 20; } if (slices <= 8) { textY = 23; } if (sidewaysText) { sidewaysTextTransform = ` transform="rotate(-90 50 25)"`; textY = 25; textSize = 2; } for (let i = 0; i < slices; i++) { let sliceColor = `rgb(${((i + 1) * rr) % 255}, ${((i + 1) * gg) % 255}, ${((i + 1) * bb) % 255})`; let path = `
${list[i % list.length]}
`; svgElt.querySelector(".slicesHere").insertAdjacentHTML("beforeend", path); } let spinAnimation = `
`; svgElt.querySelector(".slicesHere").insertAdjacentHTML("afterbegin", spinAnimation); let spinner = `
`; svgElt.insertAdjacentHTML("beforeend", spinner); } createSpinner(document.querySelector("#c"), 12); let numSlices = 12; const allInputs = document.querySelectorAll("input"); allInputs[0].addEventListener("input", () => { const svgElt = document.querySelector("#c"); while (svgElt.firstChild) { svgElt.removeChild(svgElt.lastChild); } numSlices = allInputs[0].value * 1; createSpinner(svgElt, numSlices); }); function spin(len = 12) { clearTimeout(spinTimeout); let segments = len; // give us a random angle to end on between 5 and 10 spins const winAngle = randInt(1800, 3600); const time = randInt(3000, 5000); // set the animation attribute values to the win angle document.querySelector(".ballAnim").setAttribute("values", `0 50 50; ${winAngle} 50 50`); document.querySelector(".ballAnim").setAttribute("dur", `${time}ms`); const index = (segments - Math.round((winAngle % 360) / (360 / segments))) % segments; const winner = document.querySelector(`[data-value="${index}"] > text`); const winName = winner.textContent.trim(); let slicess = document.querySelectorAll(`.slice`); for (let i = 0; i < slicess.length; i++) { slicess[i].classList.remove("winner"); } // start the animation document.querySelector(".ballAnim").beginElement(); spinTimeout = setTimeout(() => { confetti(document.querySelector("#c"), {type: [winName], flakes: 50, spin: false, fadeout: true, colors: ["gold", "goldenrod", "#000"], scale: 0.8, angle: 180, angleEmoji: 180}); document.querySelector(`[data-value="${index}"]`).classList.add("winner"); }, time); } document.querySelector("#c").addEventListener("click", () => { spin(numSlices); });