{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-petrinet/src/components/demo/lively-petrinet-code-transition.js"],"names":["Morph","ContextMenu","pt","Helper","scriptManager","IS_ACTIVE","PLACES_BEFORE","PLACES_AFTER","defaultCode","LivelyPetrinetCodeTransition","initialize","windowTitle","registerButtons","currentCode","get","text","addScript","name","componentId","lively","addEventListener","evt","startDragAndDrop","getAttribute","id","setAttribute","petrinet","getPetrinetOf","isActiveTransition","placesBefore","placesAfter","customFunctionality","getPlacesToRemoveTokenFrom","getPlacesToAddTokenTo","onAddCodeButton","codeEditor","openComponentInWindow","code","setOnSave","addTransactionFunction","graphicElement","setSelectedStyle","style","border","getSelectedBorder","setDisselectedStyle","getDisselectedBorder","removeScript"],"mappings":"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","file":"lively-petrinet-code-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\"\nimport scriptManager from  \"src/client/script-manager.js\";\n\nconst IS_ACTIVE = \"GET_IS_ACTIVE\";\nconst PLACES_BEFORE = \"GET_PLACES_BEFORE\";\nconst PLACES_AFTER = \"GET_PLACES_AFTER\";\n\nconst defaultCode = ` \n  function customFunctionality(MODE, placesBefore, placesAfter){\n    \n    // How should be decided if transition can fire?\n\n    if (MODE === \"GET_IS_ACTIVE\") {\n      return true;\n\n    // From what places should a token be removed?\n\n    } else if(MODE === \"GET_PLACES_BEFORE\") {\n      return placesBefore;\n\n    // To what places should a token be added?\n\n    } else if(MODE === \"GET_PLACES_AFTER\") {\n      return placesAfter;\n    }\n  }\n`\n\n\nexport default class LivelyPetrinetCodeTransition extends Morph {\n  \n  \n  \n  \n  // Initialization\n  \n  \n  \n  async initialize() {\n    this.windowTitle = \"LivelyPetrinetCodeTransition\";\n    this.registerButtons();\n    this.currentCode = defaultCode;\n    if (this.get(\"script\") != null) {\n      this.currentCode = this.get(\"script\").text;\n    } else {\n      scriptManager.addScript(this, defaultCode, {name: \"customFunctionality\"});\n    }\n\n    if (!this.componentId) {\n        this.componentId = this.get(\"lively-petrinet-transition\").componentId;\n    }\n\n    \n    lively.addEventListener(\"dragAndDrop\", this, \"pointerdown\", evt => Helper.startDragAndDrop(evt, this));\n}\n  \n  \n  \n  // Access\n  \n  \n  \n  get componentId() {\n    return this.getAttribute(\"componentId\");\n  }\n  \n  set componentId(id) {\n    this.setAttribute(\"componentId\", id);\n  }\n  \n  get petrinet() {\n    return Helper.getPetrinetOf(this);\n  }\n  \n  \n  \n  // Interface\n  \n  \n  \n  isActiveTransition(placesBefore, placesAfter){\n    return this.customFunctionality(IS_ACTIVE, placesBefore, placesAfter);\n  }\n  \n  getPlacesToRemoveTokenFrom(placesBefore, placesAfter) {\n    return this.customFunctionality(PLACES_BEFORE, placesBefore, placesAfter);\n  }\n  \n  getPlacesToAddTokenTo(placesBefore, placesAfter) {\n    return this.customFunctionality(PLACES_AFTER, placesBefore, placesAfter);\n  }\n  \n  \n  \n  // Interaction\n  \n  \n  \n  async onAddCodeButton() {\n    const codeEditor = await lively.openComponentInWindow(\"lively-petrinet-code-editor\");\n    codeEditor.code = this.currentCode;\n    codeEditor.setOnSave((text) => this.addTransactionFunction(text));\n  }\n  \n  graphicElement() {\n    return this.get(\"lively-petrinet-transition\").graphicElement();\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  addTransactionFunction(text) {\n      scriptManager.removeScript(this, \"customFunctionality\")\n      scriptManager.addScript(this, text, {name: \"customFunctionality\"});\n      this.currentCode = text;\n    }\n\n}\n"]}