UNPKG

@progracol/bingo-board-component

Version:
1 lines 7.01 kB
import{r as t,h as s,g as i}from"./p-cacf3edd.js";class e{constructor(t,s){this.number=t,this.checked=s}}const r=class{constructor(s){t(this,s),this.moduleId="",this.numbers=[],this.numbersBoard2=[],this.ranking=1,this.probability=0,this.bet=0,this.king=!1,this.secProbability=0,this.manual=!1,this.validated=!1,this.miniBoard=!1,this.select=!1,this.register=!1,this.hide=!1,this.posLast=-1,this.posFigure=[]}componentDidLoad(){}componentDidUnload(){}async newNumber(t){let s=[...this.numbersBoard];s[t].checked=!0,this.numbersBoard=[...s],this.posLast=t}async newBallotNumber(t){let s=this.numbers.indexOf(t);-1!=s?this.newNumber(s):this.posLast=-1}async noNumber(){this.posLast=-1}addNumber(t){this.manual&&!this.miniBoard&&(this.numbersBoard[t].checked?this.deleteNumber(t):this.newNumber(t))}async deleteNumber(t){let s=[...this.numbersBoard];s[t].checked=!1,this.numbersBoard=[...s]}componentWillUpdate(){}async clean(){this.numbersBoard.forEach(t=>{t.checked=!1})}async validateFigure(t){let s=[];for(let i=0;i<t.length;i++)s.push(this.oneValidate(t[i].positions));return Promise.all(s).then(t=>{let s=0;for(;s<t.length;){if(t[s].hasBingo)return{element:this.element,pattern:t[s].pattern,hasBingo:!0,moduleId:this.moduleId};++s}return{element:this.element,pattern:0,hasBingo:!1,moduleId:this.moduleId}})}async validate(t){let s=[];for(let i=0;i<t.length;i++)s.push(this.oneValidate(t[i]));return Promise.all(s).then(t=>{let s=0;for(;s<t.length;){if(t[s].hasBingo)return{element:this.element,pattern:t[s].pattern,hasBingo:!0,moduleId:this.moduleId};++s}return{element:this.element,pattern:0,hasBingo:!1,moduleId:this.moduleId}})}async oneValidate(t){let s=this.intFromBytes(this.numbersBoard)&t,i=this.countOnes(t)-this.countOnes(s),e=this.calcProbability(i,10);return this.getPositions(t),e>this.probability?(this.secProbability=this.probability,this.probability=e):e>this.secProbability&&(this.secProbability=e),{pattern:t,hasBingo:s==t}}calcProbability(t,s){let i=1;for(let e=0;e<t;e++)i*=(e+1)/(s-e);return 100*i}intFromBytes(t){for(var s=0,i=0;i<t.length;++i)s+=+t[i].checked,i<t.length-1&&(s<<=1);return s}getPositions(t){let s=24;for(this.posFigure=[];t>0;)1&t&&this.posFigure.push(s),t>>=1,--s}countOnes(t){let s=0;for(;t>0;)1&t&&++s,t>>=1;return s}parseNumbersProp(t){t&&(this.numbers=t,this.numbersBoard=[],this.numbers.forEach(t=>{this.numbersBoard.push(new e(t,!1))}))}parseNumbersBoard2Prop(t){t&&(this.numbersBoard=[...t])}componentWillLoad(){this.parseNumbersProp(this.numbers),this.numbers.length||this.parseNumbersBoard2Prop(this.numbersBoard2)}render(){return this.hide?s("div",{class:"board"}):s("div",{class:"board"+(this.select?" selected":"")+(this.register?" registered":"")+(this.validated?" validated":"")+(this.miniBoard?" mini":"")},s("div",{class:"border"},this.numbersBoard.map((t,i)=>s("div",{onClick:()=>{this.addNumber(i)},class:"column text-center"+(t.checked?" active":"")+(-1==this.posFigure.indexOf(i)?"":" belong")+(i==this.posLast?" last":"")},s("div",{class:"number"+(t.number?"":" center")},s("span",null,t.number?t.number:this.moduleId))))),s("div",{key:this.bet,class:"bet"},this.bet>0?this.bet:""))}get element(){return i(this)}static get watchers(){return{numbers:["parseNumbersProp"],numbersBoard2:["parseNumbersBoard2Prop"]}}static get style(){return"\@charset \"UTF-8\";:host{--bg-main:transparent;--bg-board:#000;--header-color:#edcb32;--bg-ballot:#fff;--bg-ballot-active:#edcb32;--bg-ballot-last:#33ad15;--bg-ballot-check:red;--color-ballot:#000;--color-ballot-active:#fff;--color-ballot-last:#fff;--color-text:#fff;--bg-bet-color:#fff;--border-board-color:#edcb32;--border-board-width:5px;--border-board-color-select:#33ad15;--border-board-color-select-contrast:#000;--border-board-color-register:red;--border-board-color-register-contrast:#fff;--height:25vh;--font-size:2rem;--font-size-center:2rem;--font-family:\"Geometry\";--border-radius:5%}.board{font-family:var(--font-family);font-size:calc(var(--font-size));background:var(--bg-main);width:100%;padding:2%;position:relative;float:left}.board .border{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;margin:auto;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;background:var(--bg-board);background-size:100% 100%;background-clip:padding-box;\n /* !importanté */border-width:calc(var(--border-board-width));border-radius:var(--border-radius);border-style:solid;border-color:var(--border-board-color);\n /* !importanté */padding:0;height:calc(var(--height))}.board .border:before{content:\" \";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;border-radius:inherit}.board .border .column{float:left;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:20%;height:20%;text-align:center}.board .border .column.active .number{background:var(--bg-ballot-active);background-size:100% 100%}.board .border .column.active .number span{color:var(--color-ballot-active)}.board .border .column.last .number{background:var(--bg-ballot-last);background-size:100% 100%}.board .border .column.last .number span{color:var(--color-ballot-last)}.board .border .column .number{padding:0;height:75%;margin:2% auto;background:var(--bg-ballot);background-size:100% 100%;width:90%;border:none;border-radius:50%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:75%}.board .border .column .number.center{background:transparent;border:0;margin:0;width:100%}.board .border .column .number.center span{color:var(--color-text);font-size:calc(var(--font-size-center))}.board .border .column .number span{color:var(--color-ballot);font-size:calc(var(--font-size));max-width:100%;padding:0;margin:0 auto;display:block}.board .bet,.board .ranking{position:absolute;width:20%;height:12%;display:none;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;bottom:-8%;border-radius:15%;color:var(--bg-bet-color);font-size:120%}.board .ranking{left:10%}.board .bet{right:10%}.board.validated{width:90%;float:none;margin:auto}.board.validated .border{height:40vw}.board.validated .column.belong .number{background:var(--bg-ballot-check);background-size:100% 100%}.board.validated .column.last .number{background:var(--bg-ballot-last);background-size:100% 100%}.board.selected .border{border-color:var(--border-board-color-select)}.board.selected .bet,.board.selected .ranking{background:var(--border-board-color-select);color:var(--border-board-color-select-contrast);display:-ms-flexbox;display:flex}.board.registered .border{border-color:var(--border-board-color-register)}.board.registered .bet,.board.registered .ranking{background:var(--border-board-color-register);color:var(--border-board-color-register-contrast);display:-ms-flexbox;display:flex}.board.mini .border:before{content:none}.board.mini .border .column .number span{display:none}.text-center{text-align:center!important}"}};export{r as bingo_board};