{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-pipes-and-filters/templates/dice-roller-3.js"],"names":["Morph","DiceRoller3","initialize","updateView","onMouseDownOverAmount","evt","currentAmount","preventDefault","stopPropagation","onMouseOverType","currentType","onMouseOverBonus","currentBonus","currentDigit","min","rollDice","roll","regex","matchArray","matchAll","diceResults","map","array","sign","undefined","faces","count","result","i","floor","random","modifier","join","reduce","acc","val","e","onMouseUp","output","makeAmountCell","value","del","cell","addEventListener","makeTypeCell","makeBonusCell","makeBonusStack","bonusStack","appendChild","pane","get","table","amount","addAmountInput","addAmountButton","additionalAmount","typeTable","type","addTypeInput","addTypeButton","additionalType","bonusStacks","bonus","bonusDigit","stack","previousRolls","button","footer","roller","livelyExample"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AAEOA,W;;;;;;;;;;;;;;AAAAA,gS;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,WAAN,SAA0BD,KAA1B,CAAgC;AAC7C,cAAME,UAAN,GAAmB;AACjB,yCAAkB,CAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oCAAa,EAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4CAAqB,EAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHiB;AAIjB,eAAKC,UAAL;;AAJiB;AAKlB;;AAEDC,8BAAsBC,GAAtB,EAA2BC,aAA3B,EAA0C;AAAA;AAAA;;AACxC,uHAAIC,cAAJ;AADwC;AAExC,uHAAIC,eAAJ;;AAEA,sCAAcF,aAAd,YAAcA,aAAd,oGAAcA,aAAd,EAAcA,aAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJwC;AAKxC,eAAKH,UAAL;AACD;;AAEDM,wBAAgBJ,GAAhB,EAAqBK,WAArB,EAAkC;AAAA;AAAA;;AAChC,uHAAIH,cAAJ;AADgC;AAEhC,uHAAIC,eAAJ;;AAEA,yBAAI,IAAJ,aAAiB;AACf,sCAAYE,WAAZ,YAAYA,WAAZ,gGAAYA,WAAZ,EAAYA,WAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADe;AAEf,iBAAKP,UAAL;AACD;AACF;;AAEDQ,yBAAiBN,GAAjB,EAAsBO,YAAtB,EAAoCC,YAApC,EAAkD;AAAA;AAAA;;AAChD,uHAAIN,cAAJ;AADgD;AAEhD,uHAAIC,eAAJ;;AAEA,yBAAI,IAAJ,aAAiB;AACf,gBAAI,mDAAoBK,YAApB,YAAoBA,YAApB,kGAAoBA,YAApB,EAAoBA,YAApB,CAAJ,EAAsC;AACpC,qEAAgBD,YAAhB,YAAgBA,YAAhB,kGAAgBA,YAAhB,EAAgBA,YAAhB;AACD,aAFD,MAEO;AACL,oDAAW,qKAAe,CAA1B,GAA+BA,YAA/B,YAA+BA,YAA/B,kGAA+BA,YAA/B,EAA+BA,YAA/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qEAAa,IAAb,sBAA8B,CAA9B,GAAiCC,YAAjC,YAAiCA,YAAjC,kGAAiCA,YAAjC,EAAiCA,YAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;AACD,kHAAkB,sEAAKC,GAAL,CAAS,qKAAe,CAAxB,EAA2B,CAA3B,CAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAPe;AAQf,iBAAKX,UAAL;AACD;AACF;;AAEDY,iBAASC,IAAT,EAAe;AAAA;;AACb,gBAAMC,QAAQ,oCAAd;AACA,gBAAMC,aAAa,CAAC,+EAAG,mHAAKC,QAAL,EAAcF,KAAd,YAAcA,KAAd,oFAAcA,KAAd,EAAcA,KAAd,EAAH,CAAD,CAAnB;AACA,gBAAMG,2FAAc,uJAAWC,GAAX,CAAgBC,KAAD,IAAW;AAAA;;AAC5C,kBAAMC,OAAO,uJAAM,CAAN,mBAAoB,GAApB,GAA0B,CAAC,CAA3B,GAA+B,CAA5C;AACA,gBAAI,qIAAM,CAAN,2EAAaC,SAAb,KAA0B,qIAAM,CAAN,2EAAaA,SAAb,CAA9B,EAAsD;AAAA;;AACpD;AACA,oBAAMC,QAAQ,0FAASH,KAAT,YAASA,KAAT,oFAASA,KAAT,EAASA,KAAT,GAAe,CAAf,EAAd;AACA,oBAAMI,QAAQ,qIAAM,CAAN,MAAa,EAAb,GAAkB,CAAlB,GAAsB,0FAASJ,KAAT,YAASA,KAAT,oFAASA,KAAT,EAASA,KAAT,GAAe,CAAf,EAApC;AACA,kBAAIK,SAAS,CAAb;AACA,mBAAK,IAAIC,IAAI,CAAb,EAAgBA,KAAKF,KAArB,EAA4BE,GAA5B,EAAiC;AAC/BD,0BAAU,+IAAKE,KAAL,CAAW,gJAAKC,MAAL,OAAgBL,KAAhB,YAAgBA,KAAhB,oFAAgBA,KAAhB,EAAgBA,KAAhB,CAAX,KAAoC,CAA9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;AACDE,yBAAUJ,IAAV,YAAUA,IAAV,kFAAUA,IAAV,EAAUA,IAAV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sGAAOI,MAAP;AACD,aAVD;AAUO,8BAAIL,KAAJ,YAAIA,KAAJ,oFAAIA,KAAJ,EAAIA,KAAJ,GAAU,CAAV,GAAc;AAAA;;AACnB;AACA,sBAAMS,WAAW,0FAAST,KAAT,YAASA,KAAT,oFAASA,KAAT,EAASA,KAAT,GAAe,CAAf,MAAqBC,IAArB,YAAqBA,IAArB,kFAAqBA,IAArB,EAAqBA,IAArB,CAAjB;AACA,uBAAOQ,QAAP,YAAOA,QAAP,0FAAOA,QAAP,EAAOA,QAAP;AACD;AAdD;AAeD,WAjBmB,CAAd,CAAN;AAkBA,cAAIJ,SAAU,oFAAK,6JAAYK,IAAZ,CAAiB,GAAjB,CAAL,IAA6B,GAA7B,oFAAmC,6JAAYC,MAAZ,CAAmB,CAACC,GAAD,EAAMC,GAAN;AAAA;AAAc,oIAAMA,GAAN,YAAMA,GAAN,iFAAMA,GAAN,EAAMA,GAAN;AAAd,WAAnB,CAAnC,CAAd;AACA,sCAAcnB,IAAd,YAAcA,IAAd,kFAAcA,IAAd,EAAcA,IAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sCAAcW,MAAd,YAAcA,MAAd,sFAAcA,MAAd,EAAcA,MAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,yEAAqB,IAArB,+BAA+CS;AAAA;AAAK,yHAAKpB,IAAL,YAAKA,IAAL,kFAAKA,IAAL,EAAKA,IAAL;AAAL,WAA/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4EAA2BA,IAA3B,YAA2BA,IAA3B,kFAA2BA,IAA3B,EAA2BA,IAA3B;AACA,cAAI,0DAA4B,EAAhC,EAAoC;AAAC;AAAyB;AA1BjD;AA2Bb,eAAKb,UAAL;AACD;;AAEDkC,kBAAUhC,GAAV,EAAe;AAAA;;AACb,cAAI,yCAAe,IAAf,SAAJ,EAA8B;AAC5B,gBAAIiC,SAAS,wCAAc,IAAd,SAAb;AACA,gBAAI,6BAAc,EAAlB,EAAqB;AACnBA,uBAAS,6FAAS,GAAT,gCAAe,IAAf,qBAA+B,EAA/B,CAAmC;AAAnC,gBAAT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;AAJ2B;AAK5B,iBAAKvB,QAAL,oFAAcuB,MAAd;AACD;AACD,0GAAcd,SAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wGAAYA,SAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oCAAa,EAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,yCAAkB,CAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAXa;AAYb,eAAKrB,UAAL;AACD;;AAEDoC,uBAAeX,CAAf,EAAkB;AAAA;;AAChB,cAAIY,oEAAkB,OAAlB,oCAAgC,wFAAhC,gCAA0HZ,CAA1H,YAA0HA,CAA1H,6EAA0HA,CAA1H,EAA0HA,CAA1H;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,0JAAcA,CAAd,YAAcA,CAAd,6EAAcA,CAAd,EAAcA,CAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,cAAI,8JAAgB,IAAhB,WAAJ,EAAiC;AAC/B,iLAAqB,iBAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;AACD,cAAIa,kEAAgB,KAAhB,oCAA4B,8CAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAEA,gBAAMnC,4BAAgBkC,KAAhB,YAAgBA,KAAhB,qFAAgBA,KAAhB,EAAgBA,KAAhB,WAAN;;AAEA,cAAIE,mEACU,cADV,oHAEY,YAFZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qHAGY,YAHZ,gCAG0BF,KAH1B,YAG0BA,KAH1B,qFAG0BA,KAH1B,EAG0BA,KAH1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qHAIY,YAJZ,gCAI0BC,GAJ1B,YAI0BA,GAJ1B,iFAI0BA,GAJ1B,EAI0BA,GAJ1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAVgB;AAgBhB,8HAAKE,gBAAL,CAAsB,WAAtB,EAAoCtC,GAAD;AAAA;AAAS,gHAAKD,qBAAL,EAA2BC,GAA3B,YAA2BA,GAA3B,iFAA2BA,GAA3B,EAA2BA,GAA3B,IAAgCC,aAAhC,YAAgCA,aAAhC,qGAAgCA,aAAhC,EAAgCA,aAAhC;AAAT,WAAnC;AACA,iBAAOoC,IAAP,YAAOA,IAAP,mFAAOA,IAAP,EAAOA,IAAP;AACD;;AAEDE,qBAAaR,CAAb,EAAgB;AAAA;;AACd,cAAII,oEAAkB,OAAlB,oCAAgC,sGAAhC,gCAAwIJ,CAAxI,YAAwIA,CAAxI,6EAAwIA,CAAxI,EAAwIA,CAAxI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,0JAAcA,CAAd,YAAcA,CAAd,6EAAcA,CAAd,EAAcA,CAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,cAAI,8JAAgB,IAAhB,SAAJ,EAA+B;AAC7B,iLAAqB,iBAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;AACD,cAAIK,kEAAgB,KAAhB,oCAA4B,8CAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAEA,gBAAM/B,0BAAc8B,KAAd,YAAcA,KAAd,qFAAcA,KAAd,EAAcA,KAAd,WAAN;AARc;AASd,oIAAMG,gBAAN,CAAuB,WAAvB,EAAqCtC,GAAD;AAAA;AAAS,0GAAKI,eAAL,EAAqBJ,GAArB,YAAqBA,GAArB,iFAAqBA,GAArB,EAAqBA,GAArB,IAA0BK,WAA1B,YAA0BA,WAA1B,iGAA0BA,WAA1B,EAA0BA,WAA1B;AAAT,WAApC;;AAEA,cAAIgC,qJAEY,YAFZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qHAGY,YAHZ,gCAG0BF,KAH1B,YAG0BA,KAH1B,qFAG0BA,KAH1B,EAG0BA,KAH1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qHAIY,YAJZ,gCAI0BC,GAJ1B,YAI0BA,GAJ1B,iFAI0BA,GAJ1B,EAI0BA,GAJ1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAMA,iBAAOC,IAAP,YAAOA,IAAP,mFAAOA,IAAP,EAAOA,IAAP;AACD;;AAEDG,sBAAcT,CAAd,EAAiBvB,YAAjB,EAA+B;AAAA;;AAC7B,cAAI2B,oEAAkB,OAAlB,oCAAgC,sGAAhC,gCAAwIJ,CAAxI,YAAwIA,CAAxI,6EAAwIA,CAAxI,EAAwIA,CAAxI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,0JAAcA,CAAd,YAAcA,CAAd,6EAAcA,CAAd,EAAcA,CAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,cAAI,sCAAW,sKAAe,CAA1B,kBAAiCI,KAAjC,YAAiCA,KAAjC,qFAAiCA,KAAjC,EAAiCA,KAAjC,WAAJ,EAAkD;AAChD,iLAAqB,iBAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;;AAED,gBAAM5B,2BAAe4B,KAAf,YAAeA,KAAf,qFAAeA,KAAf,EAAeA,KAAf,WAAN;;AAP6B;AAS7B,oIAAMG,gBAAN,CAAuB,WAAvB,EAAqCtC,GAAD;AAAA;AAAS,2GAAKM,gBAAL,EAAsBN,GAAtB,YAAsBA,GAAtB,iFAAsBA,GAAtB,EAAsBA,GAAtB,IAA2BO,YAA3B,YAA2BA,YAA3B,mGAA2BA,YAA3B,EAA2BA,YAA3B,IAAyCC,YAAzC,YAAyCA,YAAzC,mGAAyCA,YAAzC,EAAyCA,YAAzC;AAAT,WAApC;;AAEA,cAAI6B,mJAEOF,KAFP,YAEOA,KAFP,qFAEOA,KAFP,EAEOA,KAFP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAIA,iBAAOE,IAAP,YAAOA,IAAP,mFAAOA,IAAP,EAAOA,IAAP;AACD;;AAEDI,uBAAejC,YAAf,EAA6B;AAAA;;AAC3B,cAAIkC,4EAA0B,YAA1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,6BAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,EAAoC,GAApC,EAAyC,GAAzC,EAA8C,GAA9C,eAA2DX,KAAK;AAAA;;AAC9D,gBAAIM,wFAAO,KAAKG,aAAL,EAAmBT,CAAnB,YAAmBA,CAAnB,6EAAmBA,CAAnB,EAAmBA,CAAnB,IAAsBvB,YAAtB,YAAsBA,YAAtB,mGAAsBA,YAAtB,EAAsBA,YAAtB,EAAP,CAAJ;AACA,0LAAmBA,YAAnB,YAAmBA,YAAnB,mGAAmBA,YAAnB,EAAmBA,YAAnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAF8D;AAG9D,oKAAWmC,WAAX,EAAuBN,IAAvB,YAAuBA,IAAvB,mFAAuBA,IAAvB,EAAuBA,IAAvB;AACD,WAJD;AAKA,iBAAOK,UAAP,YAAOA,UAAP,+FAAOA,UAAP,EAAOA,UAAP;AACD;;AAED5C,qBAAY;AAAA;;AACV,cAAI8C,8EAAO,KAAKC,GAAL,CAAS;;AAEpB;AAFW,WAAP,CAAJ,CAGA,IAAIC,uEAAqB,8BAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,sEAAoB,aAApB,mHACW,sCADX,4DAEGD,KAFH,YAEGA,KAFH,qFAEGA,KAFH,EAEGA,KAFH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAMA,eAAK,IAAIvB,IAAI,CAAb,EAAgBA,KAAK,CAArB,EAAwBA,GAAxB,EAA6B;AAC3B,gBAAIc,yFAAO,KAAKH,cAAL,0EAAoBX,CAApB,EAAP,CAAJ;AAD2B;AAE3B,sIAAMoB,WAAN,EAAkBN,IAAlB,YAAkBA,IAAlB,mFAAkBA,IAAlB,EAAkBA,IAAlB;AACD;AACD;AACA,cAAIW,+EAA6B,QAA7B,oCAA4C,6BAA5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,kFACY,cADZ,iCACkC,MAAM;AAAA;;AACtC,gBAAIZ,yFAAO,KAAKH,cAAL,aAAoBc,cAApB,YAAoBA,cAApB,uGAAoBA,cAApB,EAAoBA,cAApB,YAAP,CAAJ;AADsC;AAEtC,sIAAML,WAAN,EAAkBN,IAAlB,YAAkBA,IAAlB,mFAAkBA,IAAlB,EAAkBA,IAAlB;AACD,WAJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAKA,cAAIa,0GAEGF,cAFH,YAEGA,cAFH,uGAEGA,cAFH,EAEGA,cAFH,kDAGGC,eAHH,YAGGA,eAHH,yGAGGA,eAHH,EAGGA,eAHH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAtBU;AA2BV,0IAAON,WAAP,EAAmBO,gBAAnB,YAAmBA,gBAAnB,2GAAmBA,gBAAnB,EAAmBA,gBAAnB;;AAEA;AACA,cAAIC,2EAAyB,8BAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,oEAAkB,aAAlB,mHACW,sCADX,4DAEGD,SAFH,YAEGA,SAFH,6FAEGA,SAFH,EAEGA,SAFH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAMA,6BAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,KAAnB,EAA0B,KAA1B,EAAiC,KAAjC,eAAgDpB,KAAK;AAAA;;AACnD,gBAAIM,uFAAO,KAAKE,YAAL,EAAkBR,CAAlB,YAAkBA,CAAlB,6EAAkBA,CAAlB,EAAkBA,CAAlB,EAAP,CAAJ;AADmD;AAEnD,8JAAUY,WAAV,EAAsBN,IAAtB,YAAsBA,IAAtB,mFAAsBA,IAAtB,EAAsBA,IAAtB;AACD;AACD;AAJA,aAKA,IAAIgB,6EAA2B,QAA3B,kCAAwC,GAAxC,oCAAkD,6BAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,gFACY,cADZ,iCACkC,MAAM;AAAA;;AACtC,gBAAIjB,uFAAO,KAAKE,YAAL,CAAkB,kBAAMc,YAAN,YAAMA,YAAN,mGAAMA,YAAN,EAAMA,YAAN,WAAlB,CAAP,CAAJ;AADsC;AAEtC,8JAAUV,WAAV,EAAsBN,IAAtB,YAAsBA,IAAtB,mFAAsBA,IAAtB,EAAsBA,IAAtB;AACD,WAJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAKA,cAAIkB,wGAEGF,YAFH,YAEGA,YAFH,mGAEGA,YAFH,EAEGA,YAFH,kDAGGC,aAHH,YAGGA,aAHH,qGAGGA,aAHH,EAGGA,aAHH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAhDU;AAqDV,8HAAKX,WAAL,EAAiBY,cAAjB,YAAiBA,cAAjB,uGAAiBA,cAAjB,EAAiBA,cAAjB;;AAGA;AACA,cAAIC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,qEAAmB,aAAnB,mHACW,sCADX,qHAEUD,WAFV,YAEUA,WAFV,iGAEUA,WAFV,EAEUA,WAFV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAMA,eAAKjC,IAAI,CAAT,EAAYA,KAAK,KAAKmC,UAAtB,EAAkCnC,GAAlC,EAAuC;AACrC,gBAAIoC,0FAAQ,KAAKlB,cAAL,0EAAoBlB,CAApB,EAAR,CAAJ;AADqC;AAErC,0KAAYoB,WAAZ,2DAA6BgB,KAA7B,YAA6BA,KAA7B,qFAA6BA,KAA7B,EAA6BA,KAA7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;;AAED;AACA,cAAI1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,yBAAI,IAAJ,aAAiB;AAAE,4KAAe,IAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4B;AAC/C,cAAIX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,yBAAI,IAAJ,aAAiB;AAAE,4KAAe,IAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4B;;AAE/C;AACA,cAAIsC,6EAA2B,aAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,yBAAI,IAAJ,oBAAwB;AACtB,iBAAK,IAAIvC,KAAT,eAAkB,IAAlB,oBAAsC;AAAA;;AACpC,oBAAMV,6BAAO,IAAP,qBAA0BU,KAA1B,YAA0BA,KAA1B,qFAA0BA,KAA1B,EAA0BA,KAA1B,EAAN;AACA,kBAAIwC,sEAAwB;AAAM,uGAAKnD,QAAL,EAAcC,IAAd,YAAcA,IAAd,mFAAcA,IAAd,EAAcA,IAAd;AAAN,eAAxB,gCAAoDA,IAApD,YAAoDA,IAApD,mFAAoDA,IAApD,EAAoDA,IAApD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAJ;AAFoC;AAGpC,wLAAcgC,WAAd,EAA0BkB,MAA1B,YAA0BA,MAA1B,uFAA0BA,MAA1B,EAA0BA,MAA1B;AACD;AACF;;AAED,cAAIC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6DAGGF,aAHH,YAGGA,aAHH,qGAGGA,aAHH,EAGGA,aAHH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAMA,uJAAiB,EAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,cAAIG,2JAEe,sDAFf,4MAIgB,WAJhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yHAKgB,WALhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yHAMgB,WANhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2MASWhB,MATX,YASWA,MATX,uFASWA,MATX,EASWA,MATX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uHAUWK,IAVX,YAUWA,IAVX,mFAUWA,IAVX,EAUWA,IAVX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uHAWWK,KAXX,YAWWA,KAXX,qFAWWA,KAXX,EAWWA,KAXX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAc4BxB,MAd5B,YAc4BA,MAd5B,uFAc4BA,MAd5B,EAc4BA,MAd5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAc2DX,MAd3D,YAc2DA,MAd3D,uFAc2DA,MAd3D,EAc2DA,MAd3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AA5FU;AA4GV,0IAAOgB,gBAAP,CAAwB,YAAxB,EAAuCtC,GAAD;AAAA;AAAS,oGAAKgC,SAAL,EAAehC,GAAf,YAAeA,GAAf,iFAAeA,GAAf,EAAeA,GAAf;AAAT,WAAtC;AA5GU;AA6GV,0IAAOsC,gBAAP,CAAwB,SAAxB,EAAoCtC,GAAD;AAAA;AAAS,oGAAKgC,SAAL,EAAehC,GAAf,YAAeA,GAAf,iFAAeA,GAAf,EAAeA,GAAf;AAAT,WAAnC;AA7GU;AA8GV,8HAAK2C,WAAL,EAAiBoB,MAAjB,YAAiBA,MAAjB,uFAAiBA,MAAjB,EAAiBA,MAAjB;AA9GU;AA+GV,8HAAKpB,WAAL,EAAiBmB,MAAjB,YAAiBA,MAAjB,uFAAiBA,MAAjB,EAAiBA,MAAjB;AACD;;AAED,cAAME,aAAN,GAAsB;AACpB,4CAAqB,CAAC,MAAD,EAAS,OAAT,CAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADoB;AAEpB,eAAKlE,UAAL;AACD;;AAhR4C;;yBAA1BF,W;;;;;;;;;;6BAAAA,6R","file":"dice-roller-3.js","sourcesContent":["\"enable aexpr\";\n\nimport Morph from 'src/components/widgets/lively-morph.js';\n\nexport default class DiceRoller3 extends Morph {\n  async initialize() {\n    this.bonusDigit = 1;\n    this.bonus = [];\n    this.previousRolls = [];\n    this.updateView();\n  }\n  \n  onMouseDownOverAmount(evt, currentAmount) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    \n    this.amount = currentAmount;\n    this.updateView();\n  }\n  \n  onMouseOverType(evt, currentType) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    \n    if (this.amount) {\n      this.type = currentType;\n      this.updateView();\n    }\n  }\n  \n  onMouseOverBonus(evt, currentBonus, currentDigit) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    \n    if (this.amount) {\n      if (this.bonus.length < currentDigit) {\n        this.bonus.push(currentBonus);\n      } else {\n        this.bonus[currentDigit - 1] = currentBonus;\n        this.bonus = this.bonus.slice(0, currentDigit);\n      }\n      this.bonusDigit = Math.min(currentDigit + 1, 3);\n      this.updateView();\n    }\n  }\n  \n  rollDice(roll) {\n    const regex = /(^| *[+-] *)(?:(\\d*)d(\\d+)|(\\d+))/g;\n    const matchArray = [...roll.matchAll(regex)];\n    const diceResults = matchArray.map((array) => {\n      const sign = array[1].trim() === \"-\" ? -1 : 1;\n      if (array[2] !== undefined && array[3] !== undefined) {\n        // die\n        const faces = parseInt(array[3]);\n        const count = array[2] === \"\" ? 1 : parseInt(array[2]);\n        let result = 0;\n        for (let i = 1; i <= count; i++) {\n          result += Math.floor(Math.random() * faces) + 1;\n        }\n        result *= sign;\n        return result;\n      } else if (array[4]) {\n        // mod\n        const modifier = parseInt(array[4]) * sign;\n        return modifier;\n      }\n    })\n    var result =  \"\" + diceResults.join(\"+\") + \"=\" + diceResults.reduce((acc, val) => acc + val);\n    this.output = roll;\n    this.result = result;\n    this.previousRolls = this.previousRolls.filter(e => e != roll);  \n    this.previousRolls.unshift(roll);\n    if (this.previousRolls.length > 20) {this.previousRolls.pop()}\n    this.updateView();\n  }\n  \n  onMouseUp(evt) {\n    if (this.amount && this.type) {\n      var output = this.amount + this.type\n      if (this.bonus != []){\n        output = output + \"+\" + this.bonus.join('') // TODO: Vorzeichen\n      }\n      this.rollDice(output);\n    }\n    this.amount = undefined;\n    this.type = undefined;\n    this.bonus = [];\n    this.bonusDigit = 1;\n    this.updateView();\n  }\n  \n  makeAmountCell(i) {\n    var value = <div name=\"value\" style=\"width:max; text-align:center; background-color: lightgray; border: 1px lightgray solid\">{i}</div>\n    value.value = i;\n    if (value.value === this.amount) {\n      value.style.border = \"1px black solid\";\n    }\n    var del = <div name=\"del\" style=\"width:max; text-align:right; cursor: pointer\">X</div>;\n\n    const currentAmount = value.value;\n\n    var cell = \n        <tr style=\"cursor: grab\">\n          <td style=\"width: 33%\"></td>\n          <td style=\"width: 33%\">{value}</td>\n          <td style=\"width: 33%\">{del}</td>\n        </tr>\n    cell.addEventListener('mousedown', (evt) => this.onMouseDownOverAmount(evt, currentAmount));\n    return cell;\n  }\n  \n  makeTypeCell(e) {\n    var value = <div name=\"value\" style=\"width:max; text-align:center; background-color: lightgray; border: 1px lightgray solid; cursor: grab\">{e}</div>\n    value.value = e;\n    if (value.value === this.type) {\n      value.style.border = \"1px black solid\"\n    }\n    var del = <div name=\"del\" style=\"width:max; text-align:right; cursor: pointer\">X</div>;\n\n    const currentType = value.value;\n    value.addEventListener('mouseover', (evt) => this.onMouseOverType(evt, currentType));\n\n    var cell = \n        <tr>\n          <td style=\"width: 33%\"></td>\n          <td style=\"width: 33%\">{value}</td>\n          <td style=\"width: 33%\">{del}</td>\n        </tr>\n    return cell;\n  }\n  \n  makeBonusCell(e, currentDigit) {\n    var value = <div name=\"value\" style=\"width:max; text-align:center; background-color: lightgray; border: 1px lightgray solid; cursor: grab\">{e}</div>\n    value.value = e;\n    if (this.bonus[currentDigit - 1] === value.value) {\n      value.style.border = \"1px black solid\"\n    }\n    \n    const currentBonus = value.value;\n    \n    value.addEventListener('mouseover', (evt) => this.onMouseOverBonus(evt, currentBonus, currentDigit));\n\n    var cell = \n        <tr>\n          <td>{value}</td>\n        </tr>\n    return cell;\n  }\n  \n  makeBonusStack(currentDigit) {\n    var bonusStack = <table style=\"width:50px\"></table>;\n    [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].forEach(e => {\n      var cell = this.makeBonusCell(e, currentDigit);\n      bonusStack.digit = currentDigit;\n      bonusStack.appendChild(cell);\n    })\n    return bonusStack;\n  }\n  \n  updateView(){\n    var pane = this.get(\"#pane\")\n    \n    // amount\n    var table = <table style=\"width:100%; min-width: 120px\"></table>\n    var amount = <div style=\"padding:5px\">\n        <div style=\"border: 1px solid black; margin:auto\">\n          {table}\n        </div>\n      </div>\n\n    for (var i = 1; i <= 6; i++) {\n      var cell = this.makeAmountCell(i);\n      table.appendChild(cell)\n    }\n    // to add amounts\n    var addAmountInput = <input type=\"number\" style=\"width: 70%; margin-top: 5px\"></input>\n    var addAmountButton = \n      <button style=\"float: right\" click={() => {\n          var cell = this.makeAmountCell(addAmountInput.value);\n          table.appendChild(cell);\n        }}>add</button>\n    var additionalAmount = \n        <div>\n          {addAmountInput}\n          {addAmountButton}\n        </div>\n    amount.appendChild(additionalAmount)\n\n    // type\n    var typeTable = <table style=\"width:100%; min-width: 120px\"></table>;\n    var type = <div style=\"padding:5px\">\n        <div style=\"border: 1px solid black; margin:auto\">\n          {typeTable}\n        </div>\n      </div>;\n    \n    [\"d4\", \"d6\", \"d8\", \"d10\", \"d12\", \"d20\"].forEach(e => {\n      var cell = this.makeTypeCell(e);\n      typeTable.appendChild(cell)\n    })\n    // to add dice types\n    var addTypeInput = <input type=\"number\" min=\"0\" style=\"width: 70%; margin-top: 5px\"></input>\n    var addTypeButton = \n      <button style=\"float: right\" click={() => {\n          var cell = this.makeTypeCell(\"d\" + addTypeInput.value);\n          typeTable.appendChild(cell);\n        }}>add</button>\n    var additionalType = \n        <div>\n          {addTypeInput}\n          {addTypeButton}\n        </div>\n    type.appendChild(additionalType)\n    \n    \n    // bonus\n    var bonusStacks = <tr></tr>;\n    var bonus = <div style=\"padding:5px\">\n        <div style=\"border: 1px solid black; margin:auto\">\n          <table>{bonusStacks}</table>\n        </div>\n      </div>;\n    \n    for (i = 1; i <= this.bonusDigit; i++) {\n      var stack = this.makeBonusStack(i);\n      bonusStacks.appendChild(<td>{stack}</td>);\n    }\n    \n    // result\n    var output = <input></input>;\n    if (this.output) { output.value = this.output }\n    var result = <input></input>;\n    if (this.result) { result.value = this.result }\n    \n    // previous rolls\n    var previousRolls = <div style=\"width: 100%\"></div>;\n    if (this.previousRolls) {\n      for (var count in this.previousRolls) {\n        const roll = this.previousRolls[count];\n        var button = <button click={() => this.rollDice(roll)}>{roll}</button>;\n        previousRolls.appendChild(button);\n      }\n    }\n    \n    var footer = \n        <div>\n          <div>Previous Rolls: </div>\n          {previousRolls}\n        </div>\n    \n    pane.innerHTML = \"\"\n    var roller = \n      <div>\n          <table style=\"width:100%, height:100%; border: 1px lightgray solid\">\n            <tr>\n              <th style=\"width:33%\">Amount</th>\n              <th style=\"width:33%\">Type</th>\n              <th style=\"width:33%\">Bonus</th>\n            </tr>\n            <tr>\n              <td>{amount}</td>\n              <td>{type}</td>\n              <td>{bonus}</td>\n            </tr>\n          </table>\n          <div><span>Roll: </span> {output} <span>Result: </span> {result}</div>\n        </div>\n    roller.addEventListener('mouseleave', (evt) => this.onMouseUp(evt));\n    roller.addEventListener('mouseup', (evt) => this.onMouseUp(evt));\n    pane.appendChild(roller);\n    pane.appendChild(footer);\n  }\n  \n  async livelyExample() {\n    this.previousRolls = [\"1d20\", \"2d8+5\"];\n    this.updateView();\n  }\n  \n}"]}