Created
September 2, 2024 08:44
-
-
Save gyfis/82f481bcb22ca365b4905f633a70d9e7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
async function ddProgress() { | |
function sleep(ms) { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} | |
function clearAllTimeouts() { | |
let id = window.setTimeout(function() {}, 0); | |
while (id--) { | |
window.clearTimeout(id); | |
} | |
} | |
clearAllTimeouts(); // Disable twitter feed from updating | |
const headerText = document.querySelector(".status-header__label"); | |
headerText.innerHTML = "DD Status"; | |
const statusText = document.querySelector(".status-page__resource-name"); | |
statusText.childNodes[2].nodeValue = "Creandum x Better Stack DD"; | |
const twitterContainer = document.querySelector(".status-page__twitter"); | |
//twitterContainer.style.display = "none"; | |
const statusSection = document.querySelector(".status-page__section"); | |
statusSection.style.position = "sticky"; | |
statusSection.style.top = "0"; | |
statusSection.style.zIndex = "999"; | |
const twitterIcon = document.querySelector(".status-page__twitter-card a"); | |
//twitterIcon.style.display = "none"; | |
const twitterTitle = document.querySelector(".status-page__twitter-card b"); | |
//twitterTitle.innerHTML = "Portfolio references & DD findings"; | |
const contactButton = document.querySelector(".btn--contact"); | |
contactButton.style.transition = "transform 0.4s ease-in, opacity 0.4s ease-in"; | |
contactButton.style.transform = "scale(0.5)"; | |
contactButton.style.opacity = "0"; | |
contactButton.innerHTML = `Our Term Sheet<span class="hand" style="position: absolute;left: -16px;font-size: 40px;top: -5px; ">👉</span>`; | |
contactButton.href = "https://www.creandum.com/"; | |
const statusContainer = document.querySelector(".status-page__overview"); | |
statusContainer.style.transition = "all 1s ease-in"; | |
statusContainer.style.opacity = "0"; | |
statusContainer.style.maxHeight = "0px"; | |
document.querySelector(".status-page__overview-icon")?.remove(); | |
const tweetBase = document.createElement("div"); | |
tweetBase.classList.add('tweet'); | |
tweetBase.style.display = "none"; | |
tweetBase.style.maxHeight = "0"; | |
tweetBase.style.opacity = "0"; | |
tweetBase.style.overflow = "hidden"; | |
tweetBase.style.transition = "all 1s ease-in"; | |
const tweetAvatar = document.createElement("div"); | |
tweetAvatar.classList.add('tweet__avatar'); | |
tweetBase.insertAdjacentElement("afterbegin", tweetAvatar); | |
const avatarImg = document.createElement("img"); | |
avatarImg.src = "https://betteruptime.com/assets/static_assets/logo_used_in_tests_do_not_delete.png"; | |
tweetAvatar.insertAdjacentElement("afterbegin", avatarImg); | |
const tweetContent = document.createElement("div"); | |
tweetContent.classList.add('tweet__content'); | |
tweetBase.insertAdjacentElement("beforeend", tweetContent); | |
const tweetText = document.createElement("div"); | |
tweetText.classList.add('tweet__text'); | |
tweetContent.insertAdjacentElement("beforeend", tweetText); | |
const tweetMeta = document.createElement("div"); | |
tweetMeta.classList.add('tweet_meta'); | |
tweetContent.insertAdjacentElement("beforeend", tweetMeta); | |
const smallText = document.createElement("small"); | |
smallText.classList.add("text-muted"); | |
tweetMeta.insertAdjacentElement("beforeend", smallText); | |
statusSection.insertAdjacentElement("afterend", tweetBase); | |
//const [tweetBase, ...tweets] = document.querySelectorAll('.tweet'); | |
//tweets.forEach((tweet)=>tweet.remove()); | |
const quotes = [ | |
{ | |
//avatarUrl: "", | |
name: "CTO of a B2B SaaS Startup", | |
text: "BetterUptime gives me a peace of mind with outstanding UI/UX. Having incident management & status pages built-in is a huge bonus." | |
}, | |
{ | |
//avatarUrl: "", | |
name: "Anonymous reference", | |
text: "Juraj is a rockstar – very capable engineer & product mind with a passion for growth go-to-market and popular amongst engineers – a very rare combo." | |
}, | |
{ | |
// avatarUrl: "https://s3.amazonaws.com/spoke-profiles-prod-assets/avatars/210x210h/504144ef5a84098b0bc5fc0053709bf578051d08.png", | |
name: "Bálint Dali, CTO of Seon.io", | |
text: "Observability is a core to our service offering, but ELK stack is a pain to manage, expensive, and we need a better collaborative experience to solve issues faster." | |
}, | |
{ | |
//avatarUrl: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHCBIVEhgUEhIYGRgYGBgYGBgaGBIYGhkaGBgZGRgYGBgcIS4lHB4rHxgYJjgmKy8xNTU1GiQ7QDs0Py40NTEBDAwMEA8QHBISHjQkIys0NDQ0NDQ0NDQ2NDQ0NDQ0NDQ0NDY2NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NP/AABEIAPYAzQMBIgACEQEDEQH/xAAcAAABBQEBAQAAAAAAAAAAAAABAAIDBAUGBwj/xAA6EAACAQIEAwUGAwgCAwAAAAABAgADEQQSITEFQVEGImFxgRMykaGxwQfR8BQjQlJicpLxFYIzwuH/xAAYAQEBAQEBAAAAAAAAAAAAAAAAAQIDBP/EACQRAQEBAQABBQABBQEAAAAAAAABAhEhAxIxQVEiQmFxgaEy/9oADAMBAAIRAxEAPwDWRJIqRyLJVSdHE1UhCSVVjwsKYEjwkcFjwsCMLCEkoWOCwIgsIWSZYQsio8sOWS5YLQI8sWWMqYymu7X8rn5yJOI0ybKD8pLrP617b+LGWLLGVMUBpboZWbilMbgye/P6eyreWArKg4xR/mPwMnp46k2zj1uPrLNS/aXN/DysaVk4sdoCsrKuVgKSwVjCsCuUjCkslY0rArMkjKS0yxmWUJVkyrEiyVVgNCx4WPCwhYACwhY8LHhZFRhY4LH5YbQGZYjpGVapHQDqTIEx4Zsnd6k30AEzdSNTNqWqHtyA8ZQxFO+7E+H+pojE0ib3uBoD8NR4bayO6tc3FvH7zlq2uuc8YVWkf1+Url8p6W9JpYjCF721H/X6esycThcuh+l/9zlfDrw/H47OgINiNDfn4jxmT+1sSbiCtRO+e48dB6SrXQEg319frBxa9uNtZYoYsKdbkTNrPcC3LT0ka1uoIliWOwwGPUHS9uYsTablNwwupvPPMNimU3UzsOCY4PpoG5ja/jO2NfThrPPLVKxpWT2jSs6uaErGFZOVjSsCuVjcssFYzLCAiyZVgVZKqygBY8LHBYQJFALCFjgI4CA0CMqA8h5CTBZIVA+gmdXjWZ1zPFHYHU68hKWBwLPUzAn7eUvcTTNUyDckC/1v+uU38DgwiAWnnk7XrzJmKScOUDa0rVsDpYevptebrLImE1yEtc46OpuL21sOWvX4CZ+Jr1ASSNOS294nr+vznU1lHSZeKoK24+czY3J1zoq030q5UbYbAHy1lLF8LZGP2P2tNLHYIC+UmQ062UFG7ya2B1K6nVT5EG3nJZC5sY60yp+IN4kpWP5y5XI5Hr8uolU68hf4fST4YsNdLG4mv2frfvFHPU/LWZOfrHYOsUqKy+8pBHj4TWa56nh6gmoiIjcHUD01YcwDJSJ6nmRlY0rJSI0iBCVjcsnIjMsAIsmCxqCSAQEBHAQgRwEAAQgQgQgQoDTWNT3b7nf1hrr3TG0Bew6/actfLpj4VcFg81XOR4/W33+M13WSU6YG0JWJnkdfd1WIkLiWWW0r1Y41KoVpSxG0v4giZtYzFdsqFZLzJxNK02mWZuL3MxY2w6q228fnIgsuVRB7OGLGfiDZTG4ByWF+X2l56QKkSjgxYk9NJZHDT1vBqBTWw0yj6SW0r8JJNCmTvkX6S2RPTHlqMiAiSERpEqIiILSQiNIgJBJQIxBJQICAhAiAjgIUAIbQgQ2gMdbgiMoA3AHKT2keG0bff5azGm8LyXtrHGIGBpHRFWMpuLx+MxarvymQ/GUG5t8PkJLW8ypsSh3Eyq5tpLj8SpuO66k+YleqA1zM2O2b48mlO6Zl4mnveatNv3QPO7D4GZOIxCAXY2tM2Nys50kFQytiuNUwxC6/reUf+SJO28nGLuNVJRqrldl6m/xkmExF94caQXWx7xAAHW3+pqOOnqPCjegh/oH0loiVeDXOHp5hY5BceQlwidp8PLTCICI8iNImgwiNkhEbaAlEeBAojwICAjgIgI4CALQgQgQ2gDKTtMbF4iuj5Fp6WJzEEiw8RtNLiFVlpsUNiLa2B0vrvL5W6jncTlb28ejGOYmv1kUuOJbvoy2FyQCwA6m2oHjJMRxzDLTzNXRVt7zOqj5yHG8JPs3ane5R1yje7LutvpPLezXBv2riWJ9oM3sizBWA07+Ud09LHSa546zL9WO4qdosI9/ZirVG96dGu6+efLl+c5LjvFEvpRq2bUBzTT5Z7/KdBxGhihakha17k6kADb0528Jg8U4Q2UXQXuGZ8zZyQddbe6ehvM+K7WWTx5YOH4gFYFqdRehDU3+rCb+G48if+VnQOO7nR1Vt/dcDKfQzFrL/AA5RubjlqbzZxNNF4XVSpsULIDqFdQWGU/8AW8nJbxf5Zz1aqdpaC0rCql9TuDvrOLx/FmqE5SSL+IEmfsVihhxXbKuZQ4Q3zZSLi/Q25TLwtO9MHoSDp4mX2yMXWr8zielcakj/ABvv5m0toSdfaNbwWmCPQrJqGHDj3uQFtOW2lpZ/ZBYC+20XhM6/0hOHqAEpWYnkClM36bASmuIqpi0WsneNgLXTuvoGsQdfuJ0HDKB9ogbUZh011lrtzhEfiyE6BKCMbdQ7hB+ukTnLaxqX3ST7dV2CrO9F2ObJmsubwGpHhtOpImb2Zwns8JTT+nMfNtfvNOazP4zrn6tl1bDbRpEktGkTTCMiAiPIjbShLJAI1RJBAQEIEQjhAQEMVopACgYFTsQQfWDEVMlMKrWYKBfntHSHFYIuwZWtbceUxufcej0LO81fHyt4VmKKWGpAvObrYYUuMpUAsMVhnQm29SgysLnqUPwTwnTUWuouLcreUp8a4WMQirnam6OHp1FsWR1uAwB0IILKQdwxEkXXzUOPSwLAX8Jh4sh1NzbztLGIp8VUZSMJV/qviKDH/qFcfOYWM/5MXvQw48qtVvlkEljpiw5eE0C2Zreu8i43gkxFTD4NCO+4NRB/DSQh2YgbAhcvm8zGweOd7VK6U155FufRj+U7bsz2fo4YM4YvUewao5u7DcLfkOdhGbF3LzyXabDXXQaW5Tx+tajiKiNojnMvTN/EPPnPbeMMDTIPTSeUcawgObMt9ZLeVfbdZn9ioUkIuLS0lICYeD4cp91nXyZh8gZprwfTWo/+bj6GTx+rnOvz/qyWCd9mCgaksQo+Jh4pX/aar4pVYK7IiBhY+zRWs1uV2Zj5WkVHh1NGzZATyY95v8jczpOz+HD1UU6gNmIPOyn72l79RjU5fdfp22GS1NB0VR8hJCI6CdnjMiIjjAYQwiNtHmNlCWSCMWSCAhHQQiAoYoZAJLSexkcULLyrLMLjxiMrA6gyw50mLOOs1KjrMLTnOMYoKDNbFYpVpl2Nhr8rj7TgMVinxT/u9Eva/M+Uzq+Hp9LMnmomxL1agSn1no+GpjKpJ1sL/DWc5wrg601BAubanx85qtUIW42FvE67aesmc8+V9Tfu5IPG1GQkHlPPuJKAxBPXebXF+Muj5BZwzWsRqvipG/kZxvF2qPVJY6X2AO/xMl80mvbniNbByV2vebOHrgroZhohtrtJMKWPueh5HymVzutRn3nT9izeo1/5D9V/OcziKeUa72nUdiU/eOeiW+JH5Gaz8xn1v/NdhFDBO7wBAY6AwGGCOMbAKx4jFjxKCIYBCIBhgEMgUUMUBpkzHu+kiMmt3RJp0x8sbHYXPhmT+/5sSPrPOcBgn9tkRyjIbqRy16c56rVGhHWcY+EKYxXA7rXB9dvnOGpyx7MXssv+UFPtNjcPWVMZQRqTMB7dA6hQSAHcai2up0tOyyZ1DJlYFcwKsLEeB2MauHRhlYAjl4TNx/CGUBqNV0yKyoEayhWIJGU6Ed0cuU35Y5Lrx4Y/GuGFXzGm1ydALHXoNZzWNDlu+ES5AAYi5ubC3wnRcSw2Jq5BUxbd0gjIMjXXUEspFzpMPiXC6aNnd2dgLAuxZvDUzNjtMW/NjlBRqVanfY5AxsBoDYnvaTp+HIAQANBKVNLa8zLuGNtZKzJImxJBfwvedt2QwmSgXI1qHMP7Rov3PrOR4NgGxFYJrl3c9FG/qdvWelogAAAsAAAOgGwm8Z+3n9bf9IwR0E6vMbEYojAaY2OMbAKx4jFjxKFHCC0IkBhghgGKKY3aLtJh8EgasTdr5UUXZrfQSjXMsJsJ5LW/E6pUqJTw9FUzuqBnJY95gNhpznra7CY06ZiviEmdXwoblNZ5VdLGYsds3iCncAX3EbiKmkssoIlYoOcLLK5vieJCC+n6F/ntOY4hXLHb9WnY4+lTcgFRflOe4phAvS2sza7Tv6wkB5yZFJIA1J0t49InYXsJ0fYvAh6xdhcILr57A/WJO1z1qZjp+z3Chh6QB99rM58eS+Q/OasME7yceO3t7SghghAgMMBgAxscYDASxwjVjhKCIRAI6QGKKKAHcKpZjYAEk9AN5452sxX7ZUdm22T+kDb4zue3nFfZ01og2NS5b+wcvUzzysfnOuM+O1z1rz4R/hxwMvxBDUGlMlwOrLqD9J72dp4jwTiTYaulZRfKbMv8ynQ+s9mwWMp1qa1KbBkYXBH0PQ+E47zZXozqWTh7NIn1grNYyA1bGc3WQ5yeW8z62JsbG4mg55iUsWARA5Pi+KPtFIbQEXOuw3lLj2PTLZGGbW/21+M0uKIgubD4TksSLtoJHTtDBKzNcz0bsbRtTd+rBR5KPzM4LDrlXxP0np3Z6kEwqAc1ufMm5msfLj6niNKCGCdHAoIYIAghgMAGCExsoKxwjVjhAIjo2UuKcYoYdc1WoF6Lux8l3gaEocU4zh8Mt61RV6Ddj5KNTPOO0P4iVHumGGRds2hc+uwnCV8Y71MzuWJ3JJJ+Jl9v6Or7VcZTFVzUp5soAVQ2hGXw5XveUi91E59MTlqFT7p08jyM2qZ0nbNc9TiUPNjs92iqYR7qC1Nj30/906N9ZgsYM0ak1OUzbm9j2vC8TpV0D0nDKR6jwI5GMxBsZ43g+IVKD56TEdV5H0nbcL7WLVUB9DPJrNzfL2+nqanh29JrrK+IQmUcDxNCbXmmtRTJ8tWcrmeK0NDOTrJ3p3HaVMlPMNjpOGeprMWeXTx7epE6mXPwu7Ul6j4Wo3vM70r+ZLJ9x6zHx9bLSc88rW+E4ThmMejVSqh7yMGHodvXb1m8PN630+o4JV4bjUrUkqoQQ6q3xF7S1OriUEMEgEBhMBgAxkeY2UJZW4jxOjh0z1qgQcr7nwVdyZx3aDt8iXTCAO22c+6P7F/i89vOedcV4tUdi9WoXc9Tew+w8BLz9Tv47ftB+ITkFcMuRf52sXP9q7L855zj+J1KjEszEnckkk+ZMp1KrMbkxgkt/Fk/VijHgWN5FTaSIb6SwRYk65pscIxYdch94D4jr5iZy0AV19JTSoyMCuhB0ll9t6We6OpY2kRMZQxIqIGGnIjoenl0hvOvXIGMjV2Rsyeo6x8VpnU7OVrOrm9jawHFWsGB850eA7RW94zzoOyNdfUcjNDD4lX90kEbjmJ5dZua9mfVmp5d12i4+tSkEUa31M5dDcyFLx7NZSZmunfHFLjNf92w8Jx6CbnF6/dPjMams3mPPu9rf4J2jxWFCvRqHKDZkOqnppynqXZn8QsNibJV/d1OhPdJ8DPGcPbVeokDrYzo58fUCuCLg3EM8H7M9tsVhSFZjUp80Y6gf0mewcB7Q4fF0w1Jxfmh0YHxEI1ojEYjAaY2OMbA+cquIyjTc8+cpM19THuIxjFpIaYrw2gyw0KyxSNpWkiNEqVbpNoJBiKN9RCrR4ea+WfhVwuJNNvDZh1E3UcMAym4I0PX/wCiY2IpBtRGYLFGm1m90nXwPURnXPFLO+W6TEIxX+B1EWIrhEzNz0UfzH8p16wrcSxAQW3YjQdP6j9hMihVZWz5je97xmIdmYuxuTqf10jFM4ava65nI7Dh+Mzrc7jQ/nHY6vZZhYDHogJYnW2wvteMx3EQ98l7eM5XPl2m/wCKPGVMzb6CQM6r4mVojNzw5Xys03PPnJne++438ehlW8lY7GUHNLWBxtSk4ek5RhsQfr1lNoBKPYuyn4hJUy08VZH2D/wt59DO+RwwupuDzE+ZFM7Dsl20qYZglVi9Lax1K+I8IZ+HtZjZW4fxCnXQPTYMp6SxA+aat7SEGXs6tmU8jl+e8pVqZRipl1DNJmjQ0BMEjSS8KGNGohQQJheEnSNDQF9YZPVpBUW8kJjRAlwOJyHI57vI9PDykGLxZqPmOw0UdBHFAZC1KLbzhyd6QMYyw5DFYw0aOhjithb4xKLkAx7i6hut7yCO0IWOEUASRDpI45YEkDCNBiLQFeK8BMUDpuyXaephH07yE95PuPGe08K4vSxFMVKRBB36g9DPnJGtNbhXG6uHDBHIDWO/S/5ys2Mp6hWqxH8x+svcQS9JH57HxvFFNT4qX5jNgMUUw2KmPBhilZAmJYooBJhEUUB4kbwxQGEwCKKRohuPX6QWiilZNvDeKKRoQIYooB5wNFFAUEUUAyZDpFFKy//Z", | |
name: "CEO & Founder of a unicorn devtools company", | |
text: "ClickHouse is an amazing feat of engineering. I believe a new ecosystem of devtools will be built around that, and Better Stack seems early to the ball with strong product execution." | |
}, | |
{ | |
//avatarUrl: "data:image/jpeg;base64,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", | |
name: "CTO of a Fintech Startup", | |
text: "We're heavy users of DataDog, but it's bloated with features and has a steep learning curve. If Better Stack can solve wider adoption, collaboration, and performance for us, we will migrate in a heartbeat. But to be honest, in our case, it's not a cost consideration, but how it helps our workflows and how reliable the service is." | |
}, | |
{ | |
name: "CTO of an Enterprise Saas app", | |
text: "Mainstream observability tools have arcane configurations... Better Stack seems like a breat of fresh air, I would love to take a closer look." | |
} | |
]; | |
const quotesInterval = 100 / quotes.length; | |
const ticks = [...document.querySelectorAll(".status-page__resource-tick-inner")]; | |
const progress = document.querySelector(".status-page__resource-interval"); | |
// Make ticks grey | |
for (let i = 0; i < ticks.length; i++) { | |
const tick = ticks[i]; | |
tick.style.backgroundColor = "#dfe0e1"; | |
tick.style.transition = "background-color 300ms ease-in"; | |
} | |
progress.innerHTML = `0% conviction`; | |
await sleep(1000); | |
// Add love container | |
const love = document.createElement("div"); | |
love.classList.add("status-page__overview-icon", "status-page__overview-icon--operational"); | |
love.style.fontSize = "80px"; | |
love.style.width = "auto"; | |
love.style.textAlign = "center"; | |
love.style.marginBottom = "20px"; | |
love.innerHTML = "💚"; | |
statusContainer.prepend(love); | |
// Animate ticks | |
for (let i = 0; i < ticks.length; i++) { | |
const tick = ticks[i]; | |
await sleep(50); | |
const pct = Math.round(i / (ticks.length - 1) * 100); | |
const prevPct = Math.round((i - 1) / (ticks.length - 1) * 100); | |
const quoteId = Math.floor(pct / quotesInterval); | |
const prevQuoteId = Math.floor(prevPct / quotesInterval); | |
if (quoteId > prevQuoteId) { | |
const quoteId = Math.floor(pct / quotesInterval); | |
const quote = quotes[quoteId]; | |
if (quote) { | |
const tweet = tweetBase.cloneNode(true); | |
tweet.style.display = "flex"; | |
if (quote.avatarUrl) { | |
tweet.querySelector("img").src = quote.avatarUrl; | |
} | |
tweet.querySelector(".tweet__text").innerHTML = `<p>${quote.text}</p>`; | |
tweet.querySelector(".text-muted").innerHTML = `${quote.name}`; | |
document.querySelector('.status-page__footer').insertAdjacentElement('beforebegin', tweet); | |
await sleep(1); | |
tweet.style.maxHeight = "500px"; | |
tweet.style.opacity = "1"; | |
tweet.scrollIntoView({behavior: "smooth"}); | |
await sleep(2000); | |
} | |
} | |
progress.innerHTML = `${pct}% conviction`; | |
tick.style.backgroundColor = "#03A84E"; | |
} | |
window.scrollTo({top: 0, behavior: 'smooth'}); | |
statusContainer.style.opacity = "1"; | |
statusContainer.style.maxHeight = "500px"; | |
const title = document.querySelector(".status-page__title"); | |
title.innerHTML = ""; | |
const typewriter = new Typewriter(title, { delay: 30 }); | |
typewriter | |
.typeString("Juraj, our heart is beating for Better Stack.") | |
.pauseFor(2500) | |
.deleteAll() | |
.typeString("We would love to partner up and redefine the observability space together with you!"); | |
typewriter | |
.start() | |
.callFunction(async ()=>{ | |
await sleep(1000); | |
contactButton.style.transform = "scale(1)"; | |
contactButton.style.opacity = "1"; | |
}); | |
}; | |
document.addEventListener('keydown', (e) => { | |
if (e.key === "c") return ddProgress(); | |
}); | |
if (window.location.hash === "#dd") { | |
setTimeout(ddProgress, 3000); | |
} | |
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Typewriter",[],t):"object"==typeof exports?exports.Typewriter=t():e.Typewriter=t()}("undefined"!=typeof self?self:this,(function(){return(()=>{var e={75:function(e){(function(){var t,n,r,o,a,s;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-a)/1e6},n=process.hrtime,o=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),s=1e9*process.uptime(),a=o-s):Date.now?(e.exports=function(){return Date.now()-r},r=Date.now()):(e.exports=function(){return(new Date).getTime()-r},r=(new Date).getTime())}).call(this)},4087:(e,t,n)=>{for(var r=n(75),o="undefined"==typeof window?n.g:window,a=["moz","webkit"],s="AnimationFrame",i=o["request"+s],u=o["cancel"+s]||o["cancelRequest"+s],l=0;!i&&l<a.length;l++)i=o[a[l]+"Request"+s],u=o[a[l]+"Cancel"+s]||o[a[l]+"CancelRequest"+s];if(!i||!u){var c=0,p=0,d=[];i=function(e){if(0===d.length){var t=r(),n=Math.max(0,16.666666666666668-(t-c));c=n+t,setTimeout((function(){var e=d.slice(0);d.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(c)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return d.push({handle:++p,callback:e,cancelled:!1}),p},u=function(e){for(var t=0;t<d.length;t++)d[t].handle===e&&(d[t].cancelled=!0)}}e.exports=function(e){return i.call(o,e)},e.exports.cancel=function(){u.apply(o,arguments)},e.exports.polyfill=function(e){e||(e=o),e.requestAnimationFrame=i,e.cancelAnimationFrame=u}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r={};return(()=>{"use strict";n.d(r,{default:()=>S});var e=n(4087),t=n.n(e);const o=function(e){return new RegExp(/<[a-z][\s\S]*>/i).test(e)},a=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes},s=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var i="TYPE_CHARACTER",u="REMOVE_CHARACTER",l="REMOVE_ALL",c="REMOVE_LAST_VISIBLE_NODE",p="PAUSE_FOR",d="CALL_FUNCTION",f="ADD_HTML_TAG_ELEMENT",v="CHANGE_DELETE_SPEED",h="CHANGE_DELAY",m="CHANGE_CURSOR",y="PASTE_STRING",g="HTML_TAG";function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?E(Object(n),!0).forEach((function(t){N(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function T(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function A(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const S=function(){function n(r,E){var b=this;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),N(this,"state",{cursorAnimation:null,lastFrameTime:null,pauseUntil:null,eventQueue:[],eventLoop:null,eventLoopPaused:!1,reverseCalledEvents:[],calledEvents:[],visibleNodes:[],initialOptions:null,elements:{container:null,wrapper:document.createElement("span"),cursor:document.createElement("span")}}),N(this,"options",{strings:null,cursor:"|",delay:"natural",pauseFor:1500,deleteSpeed:"natural",loop:!1,autoStart:!1,devMode:!1,skipAddStyles:!1,wrapperClassName:"Typewriter__wrapper",cursorClassName:"Typewriter__cursor",stringSplitter:null,onCreateTextNode:null,onRemoveNode:null}),N(this,"setupWrapperElement",(function(){b.state.elements.container&&(b.state.elements.wrapper.className=b.options.wrapperClassName,b.state.elements.cursor.className=b.options.cursorClassName,b.state.elements.cursor.innerHTML=b.options.cursor,b.state.elements.container.innerHTML="",b.state.elements.container.appendChild(b.state.elements.wrapper),b.state.elements.container.appendChild(b.state.elements.cursor))})),N(this,"start",(function(){return b.state.eventLoopPaused=!1,b.runEventLoop(),b})),N(this,"pause",(function(){return b.state.eventLoopPaused=!0,b})),N(this,"stop",(function(){return b.state.eventLoop&&((0,e.cancel)(b.state.eventLoop),b.state.eventLoop=null),b})),N(this,"pauseFor",(function(e){return b.addEventToQueue(p,{ms:e}),b})),N(this,"typeOutAllStrings",(function(){return"string"==typeof b.options.strings?(b.typeString(b.options.strings).pauseFor(b.options.pauseFor),b):(b.options.strings.forEach((function(e){b.typeString(e).pauseFor(b.options.pauseFor).deleteAll(b.options.deleteSpeed)})),b)})),N(this,"typeString",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(o(e))return b.typeOutHTMLString(e,t);if(e){var n=b.options||{},r=n.stringSplitter,a="function"==typeof r?r(e):e.split("");b.typeCharacters(a,t)}return b})),N(this,"pasteString",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return o(e)?b.typeOutHTMLString(e,t,!0):(e&&b.addEventToQueue(y,{character:e,node:t}),b)})),N(this,"typeOutHTMLString",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2?arguments[2]:void 0,r=a(e);if(r.length>0)for(var o=0;o<r.length;o++){var s=r[o],i=s.innerHTML;s&&3!==s.nodeType?(s.innerHTML="",b.addEventToQueue(f,{node:s,parentNode:t}),n?b.pasteString(i,s):b.typeString(i,s)):s.textContent&&(n?b.pasteString(s.textContent,t):b.typeString(s.textContent,t))}return b})),N(this,"deleteAll",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"natural";return b.addEventToQueue(l,{speed:e}),b})),N(this,"changeDeleteSpeed",(function(e){if(!e)throw new Error("Must provide new delete speed");return b.addEventToQueue(v,{speed:e}),b})),N(this,"changeDelay",(function(e){if(!e)throw new Error("Must provide new delay");return b.addEventToQueue(h,{delay:e}),b})),N(this,"changeCursor",(function(e){if(!e)throw new Error("Must provide new cursor");return b.addEventToQueue(m,{cursor:e}),b})),N(this,"deleteChars",(function(e){if(!e)throw new Error("Must provide amount of characters to delete");for(var t=0;t<e;t++)b.addEventToQueue(u);return b})),N(this,"callFunction",(function(e,t){if(!e||"function"!=typeof e)throw new Error("Callbak must be a function");return b.addEventToQueue(d,{cb:e,thisArg:t}),b})),N(this,"typeCharacters",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e||!Array.isArray(e))throw new Error("Characters must be an array");return e.forEach((function(e){b.addEventToQueue(i,{character:e,node:t})})),b})),N(this,"removeCharacters",(function(e){if(!e||!Array.isArray(e))throw new Error("Characters must be an array");return e.forEach((function(){b.addEventToQueue(u)})),b})),N(this,"addEventToQueue",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return b.addEventToStateProperty(e,t,n,"eventQueue")})),N(this,"addReverseCalledEvent",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=b.options.loop;return r?b.addEventToStateProperty(e,t,n,"reverseCalledEvents"):b})),N(this,"addEventToStateProperty",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0,o={eventName:e,eventArgs:t||{}};return b.state[r]=n?[o].concat(T(b.state[r])):[].concat(T(b.state[r]),[o]),b})),N(this,"runEventLoop",(function(){b.state.lastFrameTime||(b.state.lastFrameTime=Date.now());var e=Date.now(),n=e-b.state.lastFrameTime;if(!b.state.eventQueue.length){if(!b.options.loop)return;b.state.eventQueue=T(b.state.calledEvents),b.state.calledEvents=[],b.options=w({},b.state.initialOptions)}if(b.state.eventLoop=t()(b.runEventLoop),!b.state.eventLoopPaused){if(b.state.pauseUntil){if(e<b.state.pauseUntil)return;b.state.pauseUntil=null}var r,o=T(b.state.eventQueue),a=o.shift();if(!(n<=(r=a.eventName===c||a.eventName===u?"natural"===b.options.deleteSpeed?s(40,80):b.options.deleteSpeed:"natural"===b.options.delay?s(120,160):b.options.delay))){var E=a.eventName,A=a.eventArgs;switch(b.logInDevMode({currentEvent:a,state:b.state,delay:r}),E){case y:case i:var N=A.character,S=A.node,C=document.createTextNode(N),_=C;b.options.onCreateTextNode&&"function"==typeof b.options.onCreateTextNode&&(_=b.options.onCreateTextNode(N,C)),_&&(S?S.appendChild(_):b.state.elements.wrapper.appendChild(_)),b.state.visibleNodes=[].concat(T(b.state.visibleNodes),[{type:"TEXT_NODE",character:N,node:_}]);break;case u:o.unshift({eventName:c,eventArgs:{removingCharacterNode:!0}});break;case p:var O=a.eventArgs.ms;b.state.pauseUntil=Date.now()+parseInt(O);break;case d:var L=a.eventArgs,D=L.cb,M=L.thisArg;D.call(M,{elements:b.state.elements});break;case f:var x=a.eventArgs,P=x.node,R=x.parentNode;R?R.appendChild(P):b.state.elements.wrapper.appendChild(P),b.state.visibleNodes=[].concat(T(b.state.visibleNodes),[{type:g,node:P,parentNode:R||b.state.elements.wrapper}]);break;case l:var j=b.state.visibleNodes,k=A.speed,Q=[];k&&Q.push({eventName:v,eventArgs:{speed:k,temp:!0}});for(var F=0,H=j.length;F<H;F++)Q.push({eventName:c,eventArgs:{removingCharacterNode:!1}});k&&Q.push({eventName:v,eventArgs:{speed:b.options.deleteSpeed,temp:!0}}),o.unshift.apply(o,Q);break;case c:var I=a.eventArgs.removingCharacterNode;if(b.state.visibleNodes.length){var U=b.state.visibleNodes.pop(),q=U.type,G=U.node,Y=U.character;b.options.onRemoveNode&&"function"==typeof b.options.onRemoveNode&&b.options.onRemoveNode({node:G,character:Y}),G&&G.parentNode.removeChild(G),q===g&&I&&o.unshift({eventName:c,eventArgs:{}})}break;case v:b.options.deleteSpeed=a.eventArgs.speed;break;case h:b.options.delay=a.eventArgs.delay;break;case m:b.options.cursor=a.eventArgs.cursor,b.state.elements.cursor.innerHTML=a.eventArgs.cursor}b.options.loop&&(a.eventName===c||a.eventArgs&&a.eventArgs.temp||(b.state.calledEvents=[].concat(T(b.state.calledEvents),[a]))),b.state.eventQueue=o,b.state.lastFrameTime=e}}})),r)if("string"==typeof r){var A=document.querySelector(r);if(!A)throw new Error("Could not find container element");this.state.elements.container=A}else this.state.elements.container=r;E&&(this.options=w(w({},this.options),E)),this.state.initialOptions=w({},this.options),this.init()}var r,E;return r=n,(E=[{key:"init",value:function(){var e,t;this.setupWrapperElement(),this.addEventToQueue(m,{cursor:this.options.cursor},!0),this.addEventToQueue(l,null,!0),!window||window.___TYPEWRITER_JS_STYLES_ADDED___||this.options.skipAddStyles||(e=".Typewriter__cursor{-webkit-animation:Typewriter-cursor 1s infinite;animation:Typewriter-cursor 1s infinite;margin-left:1px}@-webkit-keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}",(t=document.createElement("style")).appendChild(document.createTextNode(e)),document.head.appendChild(t),window.___TYPEWRITER_JS_STYLES_ADDED___=!0),!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings().start()}},{key:"logInDevMode",value:function(e){this.options.devMode&&console.log(e)}}])&&A(r.prototype,E),n}()})(),r.default})()})); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment