{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-pipes-and-filters/templates/dice-roller-2.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","makeTypeCell","constVal","value","del","addEventListener","cell","makeBonusCell","pane","get","typeTable","type","appendChild","addTypeInput","addTypeButton","additionalType","bonusTable","bonus","addBonusInput","addBonusButton","newBonus","additionalBonus","rollButton","rollIt","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;;AAEA,oCAAa,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,KAAnB,EAA0B,KAA1B,EAAiC,KAAjC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mCAAY,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,CAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0CAAmB,EAAnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAPiB;AAQjB,eAAKC,UAAL;;AARiB;AASlB;;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,0CAAmB,EAAnB;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;AA3BjD;AA4Bb,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,qBAAaH,CAAb,EAAgB;AAAA;;AACd,gBAAMI,YAAWJ,CAAX,YAAWA,CAAX,6EAAWA,CAAX,EAAWA,CAAX,CAAN;AACA,cAAIK,iIAA6B,OAA7B,oCAA2C,aAA3C,iCAAgE,MAAM;AAChE,wEAAsB,QAAOD,QAAP,YAAOA,QAAP,2FAAOA,QAAP,EAAOA,QAAP,CAAtB;AADgE;AAEhE,iBAAKrC,UAAL;AACD,WAHL,gCAGQiC,CAHR,YAGQA,CAHR,6EAGQA,CAHR,EAGQA,CAHR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAIA,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,cAAIM,kEAAgB,KAAhB,oCAA4B,8CAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAEA,gBAAMhC,0BAAc+B,KAAd,YAAcA,KAAd,qFAAcA,KAAd,EAAcA,KAAd,WAAN;AAZc;AAad,oIAAME,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,cAAIkC,qJAEY,YAFZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qHAGY,YAHZ,gCAG0BH,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,iBAAOE,IAAP,YAAOA,IAAP,mFAAOA,IAAP,EAAOA,IAAP;AACD;;AAEDC,sBAAcT,CAAd,EAAiBvB,YAAjB,EAA+B;AAAA;;AAC7B,gBAAM2B,YAAWJ,CAAX,YAAWA,CAAX,6EAAWA,CAAX,EAAWA,CAAX,CAAN;AACA,cAAIK,iIAA6B,OAA7B,oCAA2C,aAA3C,iCAAgE,MAAM;AAChE,yEAAsBD,QAAtB,YAAsBA,QAAtB,2FAAsBA,QAAtB,EAAsBA,QAAtB;AADgE;AAEhE,iBAAKrC,UAAL;AACD,WAHL,gCAGQiC,CAHR,YAGQA,CAHR,6EAGQA,CAHR,EAGQA,CAHR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAIA,0JAAcA,CAAd,YAAcA,CAAd,6EAAcA,CAAd,EAAcA,CAAd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,cAAI,sCAAW,sKAAe,CAA1B,kBAAiCK,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,gBAAM7B,2BAAe6B,KAAf,YAAeA,KAAf,qFAAeA,KAAf,EAAeA,KAAf,WAAN;;AAX6B;AAa7B,oIAAME,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,cAAI+B,mJAEOH,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,iBAAOG,IAAP,YAAOA,IAAP,mFAAOA,IAAP,EAAOA,IAAP;AACD;;AAEDzC,qBAAY;AAAA;;AACV,cAAI2C,8EAAO,KAAKC,GAAL,CAAS;;AAEpB;AAFW,WAAP,CAAJ,CAGA,IAAIC,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,mEAAmBZ,KAAK;AAAA;;AACtB,gBAAIQ,uFAAO,KAAKL,YAAL,EAAkBH,CAAlB,YAAkBA,CAAlB,6EAAkBA,CAAlB,EAAkBA,CAAlB,EAAP,CAAJ;AADsB;AAEtB,8JAAUc,WAAV,EAAsBN,IAAtB,YAAsBA,IAAtB,mFAAsBA,IAAtB,EAAsBA,IAAtB;AACD;AACD;AAJA,aAKA,IAAIO,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,gBAAIR,uFAAO,KAAKL,YAAL,CAAkB,kBAAMY,YAAN,YAAMA,YAAN,mGAAMA,YAAN,EAAMA,YAAN,WAAlB,CAAP,CAAJ;AADsC;AAEtC,8JAAUD,WAAV,EAAsBN,IAAtB,YAAsBA,IAAtB,mFAAsBA,IAAtB,EAAsBA,IAAtB;AACD,WAJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAKA,cAAIS,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;AAtBU;AA2BV,8HAAKF,WAAL,EAAiBG,cAAjB,YAAiBA,cAAjB,uGAAiBA,cAAjB,EAAiBA,cAAjB;;AAGA;AACA,cAAIC,4EAA0B,YAA1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,qEAAmB,aAAnB,mHACW,sCADX,4DAEGD,UAFH,YAEGA,UAFH,+FAEGA,UAFH,EAEGA,UAFH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAMA,kEAAkBlB,KAAK;AAAA;;AACrB,gBAAIQ,wFAAO,KAAKC,aAAL,EAAmBT,CAAnB,YAAmBA,CAAnB,6EAAmBA,CAAnB,EAAmBA,CAAnB,EAAP,CAAJ;AADqB;AAErB,oKAAWc,WAAX,EAAuBN,IAAvB,YAAuBA,IAAvB,mFAAuBA,IAAvB,EAAuBA,IAAvB;AACD;AACD;AAJA,aAKA,IAAIY,8EAA4B,QAA5B,oCAA2C,6BAA3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAIC,iFACY,cADZ,iCACkC,MAAM;AAAA;;AACtC,gBAAIC,uBAAWF,aAAX,YAAWA,aAAX,qGAAWA,aAAX,EAAWA,aAAX,WAAJ;AACA,gBAAI,oGAAY,CAAhB,EAAmB;AACjBE,yBAAW,6FAAMA,QAAN,CAAX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD,aAFD,MAEO;AACLA,yBAAW,4FAAKA,QAAL,CAAX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;AACD,gBAAId,wFAAO,KAAKC,aAAL,wFAAmBa,QAAnB,EAAP,CAAJ;AAPsC;AAQtC,oKAAWR,WAAX,EAAuBN,IAAvB,YAAuBA,IAAvB,mFAAuBA,IAAvB,EAAuBA,IAAvB;AACD,WAVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAWA,cAAIe,yGAEGH,aAFH,YAEGA,aAFH,qGAEGA,aAFH,EAEGA,aAFH,kDAGGC,cAHH,YAGGA,cAHH,uGAGGA,cAHH,EAGGA,cAHH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAvDU;AA4DV,oIAAMP,WAAN,EAAkBS,eAAlB,YAAkBA,eAAlB,yGAAkBA,eAAlB,EAAkBA,eAAlB;;AAEA;AACA,cAAIC,6EAA2B,4BAA3B,iCAA+D,MAAM;AAAA;;AACjE,iBAAK7C,QAAL,8BAAc,IAAd,2BAAoC,EAApC;AACD,WAFH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kGAEyB,IAFzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AAGA,cAAI8C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;;AAEA;AACA,cAAIvB;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,cAAImC,6EAA2B,aAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,yBAAI,IAAJ,oBAAwB;AACtB,iBAAK,IAAIpC,KAAT,eAAkB,IAAlB,oBAAsC;AAAA;;AACpC,oBAAMV,6BAAO,IAAP,qBAA0BU,KAA1B,YAA0BA,KAA1B,qFAA0BA,KAA1B,EAA0BA,KAA1B,EAAN;AACA,kBAAIqC,sEAAwB;AAAM,uGAAKhD,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,wLAAckC,WAAd,EAA0Ba,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,sEACS,WADT,uHAEe,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2MAQWhB,IARX,YAQWA,IARX,mFAQWA,IARX,EAQWA,IARX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uHASWM,KATX,YASWA,KATX,qFASWA,KATX,EASWA,KATX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uHAUWK,UAVX,YAUWA,UAVX,+FAUWA,UAVX,EAUWA,UAVX;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,kDAa4BtB,MAb5B,YAa4BA,MAb5B,uFAa4BA,MAb5B,EAa4BA,MAb5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAa2DX,MAb3D,YAa2DA,MAb3D,uFAa2DA,MAb3D,EAa2DA,MAb3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AA3FU;AA0GV,8HAAKuB,WAAL,EAAiBe,MAAjB,YAAiBA,MAAjB,uFAAiBA,MAAjB,EAAiBA,MAAjB;AA1GU;AA2GV,8HAAKf,WAAL,EAAiBc,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,eAAK/D,UAAL;AACD;;AA3P4C;;yBAA1BF,W;;;;;;;;;;6BAAAA,6R","file":"dice-roller-2.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    \n    this.types = [\"d4\", \"d6\", \"d8\", \"d10\", \"d12\", \"d20\"];\n    this.boni = [\"-1\", \"+0\", \"+1\", \"+2\", \"+3\", \"+4\"];\n    this.currentRoll = [];\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.currentRoll = [];\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  makeTypeCell(e) {\n    const constVal = e;\n    var value = <center><button name=\"value\" style=\"width: 80px\" click={() => {\n              this.currentRoll.push(\"+1\" + constVal);\n              this.updateView();\n            }}>{e}</button></center>\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    const constVal = e;\n    var value = <center><button name=\"value\" style=\"width: 80px\" click={() => {\n              this.currentRoll.push(constVal);\n              this.updateView();\n            }}>{e}</button></center>\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  updateView(){\n    var pane = this.get(\"#pane\")\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    this.types.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: 65%; 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 bonusTable = <table style=\"width:100%\"></table>;\n    var bonus = <div style=\"padding:5px\">\n        <div style=\"border: 1px solid black; margin:auto\">\n          {bonusTable}\n        </div>\n      </div>;\n    \n    this.boni.forEach(e => {\n      var cell = this.makeBonusCell(e);\n      bonusTable.appendChild(cell)\n    })\n    // to add bonuses\n    var addBonusInput = <input type=\"number\" style=\"width: 65%; margin-top: 5px\"></input>\n    var addBonusButton = \n      <button style=\"float: right\" click={() => {\n          var newBonus = addBonusInput.value;\n          if (newBonus >= 0) {\n            newBonus = \"+\" + newBonus;\n          } else {\n            newBonus = \"\" + newBonus;\n          }\n          var cell = this.makeBonusCell(newBonus);\n          bonusTable.appendChild(cell);\n        }}>add</button>\n    var additionalBonus = \n        <div>\n          {addBonusInput}\n          {addBonusButton}\n        </div>\n    bonus.appendChild(additionalBonus)\n    \n    // ROLL IT button\n    var rollButton = <button style=\"width: 100%; height: 150px\" click={() => {\n            this.rollDice(this.currentRoll.join(''))\n          }}><p>ROLL IT</p><div>{this.currentRoll}</div></button>\n    var rollIt = <div></div>\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 style=\"width:66%\">\n          <table style=\"width:100%, height:100%; border: 1px lightgray solid\">\n            <tr>\n              <th style=\"width:33%\">Type</th>\n              <th style=\"width:33%\">Bonus</th>\n            </tr>\n            <tr>\n              <td>{type}</td>\n              <td>{bonus}</td>\n              <td>{rollButton}</td>\n            </tr>\n          </table>\n          <div><span>Roll: </span> {output} <span>Result: </span> {result}</div>\n        </div>\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}"]}