{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-petrinet/src/components/demo/lively-petrinet-prob-transition.js"],"names":["Morph","ContextMenu","pt","Helper","LivelyPetrinetProbTransition","initialize","windowTitle","registerButtons","componentId","get","inputProbability","addEventListener","evt","onProbabilityChange","lively","startDragAndDrop","probability","getAttribute","value","isActiveTransition","placesBefore","placesAfter","hasNormalTokens","every","place","getNormalTokens","length","randomNumber","Math","random","prob","getPlacesToRemoveTokenFrom","map","defaultColour","getPlacesToAddTokenTo","petrinet","getPetrinetOf","id","setAttribute","graphicElement","setSelectedStyle","style","border","getSelectedBorder","setDisselectedStyle","getDisselectedBorder"],"mappings":";;;;;;AAAOA,W;;AACAC,iB;;AACCC,Q,wBAAAA,E;;AACAC,Y,4CAAAA,M;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,YAAMC,4BAAN,SAA2CJ,KAA3C,CAAiD;;AAI9D;;;AAKA,cAAMK,UAAN,GAAmB;AACjB,eAAKC,WAAL,GAAmB,8BAAnB;AACA,eAAKC,eAAL;AACA,cAAI,CAAC,KAAKC,WAAV,EAAuB;AACpB,iBAAKA,WAAL,GAAmB,KAAKC,GAAL,CAAS,4BAAT,EAAuCD,WAA1D;AACF;;AAED,gBAAME,mBAAmB,KAAKD,GAAL,CAAS,mBAAT,CAAzB;;AAGAC,2BAAiBC,gBAAjB,CAAkC,QAAlC,EAA6CC,GAAD,IAAS,KAAKC,mBAAL,CAAyBD,GAAzB,CAArD;AACAE,iBAAOH,gBAAP,CAAwB,aAAxB,EAAuC,IAAvC,EAA6C,aAA7C,EAA4DC,OAAOT,OAAOY,gBAAP,CAAwBH,GAAxB,EAA6B,IAA7B,CAAnE;;AAEA,gBAAMI,cAAc,KAAKC,YAAL,CAAkB,aAAlB,CAApB;AACA,cAAID,WAAJ,EAAiB;AACfN,6BAAiBQ,KAAjB,GAAyBF,WAAzB;AACD;AACJ;;AAGC;;;AAIAG,2BAAmBC,YAAnB,EAAiCC,WAAjC,EAA6C;AAC3C,gBAAMC,kBAAkBF,aAAaG,KAAb,CAAmBC,SAASA,MAAMC,eAAN,GAAwBC,MAAxB,GAAiC,CAA7D,CAAxB;AACA,cAAI,CAACJ,eAAL,EAAsB;AACpB,mBAAO,KAAP;AACD;AACD,gBAAMK,eAAeC,KAAKC,MAAL,EAArB;AACA,cAAIC,OAAO,KAAKrB,GAAL,CAAS,mBAAT,EAA8BS,KAAzC;AACA,cAAIS,gBAAgBG,IAApB,EAAyB;AACvB,mBAAO,IAAP;AACD,WAFD,MAEO;AACL,mBAAO,KAAP;AACD;AACF;;AAEDC,mCAA2BX,YAA3B,EAAyCC,WAAzC,EAAsD;AACpD,iBAAOD,aAAaY,GAAb,CAAiBR,SAAS,CAACA,KAAD,EAAQA,MAAMS,aAAN,EAAR,CAA1B,CAAP;AACD;;AAEDC,8BAAsBd,YAAtB,EAAoCC,WAApC,EAAiD;AAC/C,iBAAOA,YAAYW,GAAZ,CAAgBR,SAAS,CAACA,KAAD,EAAQA,MAAMS,aAAN,EAAR,CAAzB,CAAP;AACD;;AAID;;AAEA,YAAIE,QAAJ,GAAc;AACZ,iBAAOhC,OAAOiC,aAAP,CAAqB,IAArB,CAAP;AACD;;AAED,YAAI5B,WAAJ,GAAkB;AAChB,iBAAO,KAAKS,YAAL,CAAkB,aAAlB,CAAP;AACD;;AAED,YAAIT,WAAJ,CAAgB6B,EAAhB,EAAoB;AAClB,eAAKC,YAAL,CAAkB,aAAlB,EAAiCD,EAAjC;AACD;;AAEDE,yBAAiB;AACf,iBAAO,KAAK9B,GAAL,CAAS,4BAAT,EAAuC8B,cAAvC,EAAP;AACD;;AAMD;;;AAIAC,2BAAmB;AACjB,eAAKD,cAAL,GAAsBE,KAAtB,CAA4BC,MAA5B,GAAqCvC,OAAOwC,iBAAP,EAArC;AACD;;AAEDC,8BAAsB;AACpB,eAAKL,cAAL,GAAsBE,KAAtB,CAA4BC,MAA5B,GAAqCvC,OAAO0C,oBAAP,EAArC;AACD;;AAEDhC,4BAAoBD,GAApB,EAAyB;AACvB,eAAK0B,YAAL,CAAkB,aAAlB,EAAiC,KAAK7B,GAAL,CAAS,mBAAT,EAA8BS,KAA/D;AACD;;AA7F6D;;yBAA3Cd,4B","file":"lively-petrinet-prob-transition.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport ContextMenu from 'src/client/contextmenu.js';\nimport {pt} from 'src/client/graphics.js';\nimport {Helper} from \"src/components/demo/lively-petrinet-helper.js\"\n\n\n\nexport default class LivelyPetrinetProbTransition extends Morph {\n  \n  \n  \n  // Initialization\n  \n  \n  \n\n  async initialize() {\n    this.windowTitle = \"LivelyPetrinetProbTransition\";\n    this.registerButtons();\n    if (!this.componentId) {\n       this.componentId = this.get(\"lively-petrinet-transition\").componentId;\n    }\n    \n    const inputProbability = this.get(\"#inputProbability\");\n\n    \n    inputProbability.addEventListener(\"change\", (evt) => this.onProbabilityChange(evt));\n    lively.addEventListener(\"dragAndDrop\", this, \"pointerdown\", evt => Helper.startDragAndDrop(evt, this));\n    \n    const probability = this.getAttribute(\"probability\");\n    if (probability) {\n      inputProbability.value = probability;\n    }\n}\n  \n  \n  // Interface\n  \n  \n  \n  isActiveTransition(placesBefore, placesAfter){\n    const hasNormalTokens = placesBefore.every(place => place.getNormalTokens().length > 0)\n    if (!hasNormalTokens) {\n      return false;\n    }\n    const randomNumber = Math.random();\n    var prob = this.get(\"#inputProbability\").value;\n    if( randomNumber <= prob){\n      return true\n    } else {\n      return false\n    }\n  }\n  \n  getPlacesToRemoveTokenFrom(placesBefore, placesAfter) {\n    return placesBefore.map(place => [place, place.defaultColour()]);\n  }\n  \n  getPlacesToAddTokenTo(placesBefore, placesAfter) {\n    return placesAfter.map(place => [place, place.defaultColour()]);\n  }\n  \n  \n  \n  // Access\n  \n  get petrinet(){\n    return Helper.getPetrinetOf(this);\n  }\n  \n  get componentId() {\n    return this.getAttribute(\"componentId\");\n  }\n  \n  set componentId(id) {\n    this.setAttribute(\"componentId\", id);\n  }\n  \n  graphicElement() {\n    return this.get(\"lively-petrinet-transition\").graphicElement();\n  }\n  \n  \n  \n  \n  \n  // Interaction\n  \n  \n  \n  setSelectedStyle() {\n    this.graphicElement().style.border = Helper.getSelectedBorder();\n  }\n  \n  setDisselectedStyle() {\n    this.graphicElement().style.border = Helper.getDisselectedBorder();\n  }\n  \n  onProbabilityChange(evt) {\n    this.setAttribute(\"probability\", this.get(\"#inputProbability\").value);\n  }\n  \n\n  \n\n}"]}