RaMemory/build/js/index.js

1 line
25 KiB
JavaScript
Raw Normal View History

2024-02-08 17:35:42 +01:00
"use strict";const Css={classes:{displayNone:"d-none",darkTheme:"dark-theme",lightTheme:"light-theme",bgBlack:"bg-black",bgWhite:"bg-white",bgPrimary:"bg-primary",bgOrange:"bg-primary",bgGreen:"bg-success",bgBlue:"bg-blue",memoryCardStyleOne:"style-one",memoryCardStyleTwo:"style-two"}},Firework={set:0,intervalIds:[],stopTimeoutId:0,fireworkClass:"firework",fireworkTime:750,autoRemoveFfireworkTime:9e3,random:function(e,t){return e+Math.random()*(t+1-e)},create:function(){var t=Firework.random(40,60),s=Firework.random(40,60),o="#"+Math.random().toString(16).substr(2,6);for(let e=1;e<=30;e++){var n=document.createElement("div");n.className=Firework.fireworkClass,n.classList.add(Firework.fireworkClass+e),n.classList.add("set"+this.set),n.style.backgroundColor=o,n.style.left=t+"%",n.style.top=s+"%",document.body.appendChild(n)}this.set++},delete:function(){var e=this.set-1;0<=this.set&&document.getElemntsByClassName("set"+e).forEach(e=>{e.remove()})},start:function(){var e=Firework;e.create(),e.intervalIds.push(setInterval(Firework.create,e.fireworkTime)),e.intervalIds.push(setInterval(Firework.delete,3*e.fireworkTime)),setTimeout(e.stop,e.autoRemoveFfireworkTime)},stop:function(){var t=Firework;for(let e=0;e<t.intervalIds.length;e++)clearInterval(t.intervalIds[e])}},PWA={installBtnClass:"btn-install-as-app",deferredPrompt:null,displaNoneClass:Css.classes.displayNone,installBtnDoms:[],getDeferredPromptEvent:function(){let t=this;null===t.deferredPrompt&&window.addEventListener("beforeinstallprompt",async function(e){e.preventDefault(),t.deferredPrompt=e;for(let e=0;e<t.installBtnDoms.length;e++)t.installBtnDoms[e].classList.remove(t.displaNoneClass)})},installBtnAction:function(){var t=PWA;for(let e=0;e<t.installBtnDoms.length;e++)t.installBtnDoms[e].classList.add(t.displaNoneClass);t.deferredPrompt.prompt(),t.deferredPrompt.userChoice,t.deferredPrompt=null},setBtnActions:function(){let t=PWA;for(let e=0;e<t.installBtnDoms.length;e++)t.installBtnDoms[e].addEventListener("click",t.installBtnAction,!1);window.addEventListener("appinstalled",function(){for(let e=0;e<t.installBtnDoms.length;e++)t.installBtnDoms[e].classList.add(t.displaNoneClass);t.deferredPrompt=null})},isStandalone:!1,getPWADisplayMode:function(){return this.isStandalone=window.matchMedia("(display-mode: standalone)").matches,document.referrer.startsWith("android-app://")?"twa":navigator.standalone||this.isStandalone?"standalone":"browser"},init:function(){this.installBtnDoms=document.getElementsByClassName(PWA.installBtnClass),this.getDeferredPromptEvent(),this.setBtnActions()}},Memory=(PWA.init(),{memoryId:"memory",wonId:"won",inputMemoryPairsCountId:"memory-pair-count",inputMemoryPairsId:"memory-pairs",inputMemorySizeId:"memory-size",selectFrontStyleId:"front-style-select",selectBackStyleId:"back-style-select",selectSpeedId:"speed-select",countId:"tries-counter",countWrapId:"tries-counter-wrap",displayNoneClass:Css.classes.displayNone,foundPairClass:"found",activePairClass:"active",memoryCardIdPrefix:"memory-card-",memoryCardClass:"memory-flip-card",memoryCardInnerClass:"inner",memoryCardFrontClass:"front",memoryCardBackClass:"back",generateMemoryBtnId:"generate-memory",memoryLoaderId:"memory-loader",highscorePairsCountId:"highscore-pairs-count",highscorePairsId:"highscore-pairs",highscoreCountId:"highscore-count",imageUrl:"./config/images.json",emojiUrl:"./config/emojis.min.json",emojiCategoriesUrl:"./config/emoji-categories.min.json",emojis:null,emojiCategories:null,amountPairs:5,countPairs:2,speed:3,size:14,backStyle:0,frontStyle:0,foundPairs:0,counter:0,highscorePairsCount:0,highscorePairs:0,highscoreCount:0,memoryDom:null,countDom:null,wonDom:null,loaderDom:null,selectFrontStyleDom:null,selectBackStyleDom:null,images:null,intervalIds:[],colors:[],actives:[],activeFlipTimeoutId:0,cookies:!1,speedMap:[6e3,4500,3e3,1700,850,650,300],MAP:{frontStyle2Class:{0:Css.classes.memoryCardStyleTwo+" "+Css.classes.bgBlack,1:Css.classes.memoryCardStyleTwo+" "+Css.classes.bgWhite,2:Css.classes.memoryCardStyleTwo+" "+Css.classes.bgOrange,3:Css.classes.memoryCardStyleTw