{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-constraints/src/components/demo/lively-petrinet-edge.js"],"names":["Morph","SVG","pt","debounce","LivelyConnector","isConnector","initialize","resetBoundsDelay","resetBounds","loadVertices","fromElement","lively","elementByID","getAttribute","findWorldContext","toElement","connect","withAttributeDo","color","stroke","width","strokeWidth","getPath","c","setAttribute","shadowRoot","querySelectorAll","forEach","ea","w","livelyExample","a","document","createElement","style","backgroundColor","textContent","setExtent","setPosition","b","container","parentElement","appendChild","indicateError","minWidth","minHeight","updationPathConnection","selectorA","selectorB","p","querySelector","offset","getGlobalPosition","v","getPathVertices","p1","getGlobalBounds","expandBy","x1","x","y1","y","p2","setPathVertices","updateConnector","keepbounds","path","b1","b2","dist","center","subPt","Math","abs","observePositionChange","obervername","cb","disconnect","MutationObserver","mutations","observer","record","target","attributeName","observe","childList","subtree","characterData","attributes","connectFrom","connectTo","doNotUpdate","ensureID","disconnectFromElement","disconnectToElement","fromObjectObserver","toObjectObserver","getVertices","setVertices","vertices","pointTo","svg","get","getExtent","pos","getPosition","moveBy","saveVertices","x2","y2","livelyPrepareSave","livelyMigrate","other","livelyHalo","configureHalo","halo","setHandleVisibility","ensureControlPoint","dragBehaviorMove","evt","connectPetrinetComponents","connectFromPetrinetComponent","connectToPetrinetComponent","graphicElement","fromComponentId","componentId","toComponentId"],"mappings":"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","file":"lively-petrinet-edge.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport SVG from \"src/client/svg.js\"\nimport {pt} from 'src/client/graphics.js';\nimport {debounce} from \"utils\"\n\nexport default class LivelyConnector extends Morph {\n \n  get isConnector() { return true; }\n\n  initialize() {\n    \n    this.resetBoundsDelay = (() => {\n      this.resetBounds()\n    })::debounce(500)\n\n    this.loadVertices() // if not connected\n\n    this.fromElement = lively.elementByID(this.getAttribute(\"fromElement\"), lively.findWorldContext(this))\n    this.toElement = lively.elementByID(this.getAttribute(\"toElement\"), lively.findWorldContext(this))\n   \n    \n    this.connect(this.fromElement, this.toElement)\n    \n    \n    this.withAttributeDo(\"stroke\", (color) => {\n      this.stroke = color\n    })\n    \n    this.withAttributeDo(\"stroke-width\", (width) => {\n     this.strokeWidth = width\n    })\n  } \n  \n  get stroke() {\n    return this.getPath().getAttribute(\"stroke\")\n  }\n\n  set stroke(c) {\n    this.setAttribute(\"stroke\", c)\n    return this.shadowRoot.querySelectorAll(\"path\").forEach(ea =>\n      ea.setAttribute(\"stroke\", c))\n  }\n\n  get strokeWidth() {\n    return this.getPath().getAttribute(\"stroke-width\")\n  }\n\n  set strokeWidth(w) {\n    this.setAttribute(\"stroke-width\", w)\n    return this.getPath().setAttribute(\"stroke-width\", w)\n  }\n  \n\n  livelyExample() {\n    var a = document.createElement(\"div\")\n    a.style.backgroundColor = \"red\"\n    a.textContent = \"a\"\n    lively.setExtent(a, pt(100,100))\n    lively.setPosition(a, pt(100,100))\n\n    var b = document.createElement(\"div\")\n    b.style.backgroundColor = \"blue\"\n    b.textContent = \"b\"\n    lively.setExtent(b, pt(100,100))\n    lively.setPosition(b, pt(300,100))\n\n    var container = document.createElement(\"div\")\n    this.parentElement.appendChild(container)\n    container.appendChild(a)\n    container.appendChild(this)\n    container.appendChild(b)\n\n    this.connect(a, b) \n  }\n \n  indicateError() {\n    this.style.backgroundColor = \"red\";\n    this.style.minWidth = \"50px\"\n    this.style.minHeight = \"50px\"    \n  }\n\n  /*\n   * Simple Path Based Connector.... should we make this a template? #TODO\n   */\n  updationPathConnection(c, a, selectorA, b, selectorB) {\n    var p = c.shadowRoot.querySelector(\"path#path\")\n    if (!p) {\n      this.indicateError()\n      return \n    }\n    var offset = lively.getGlobalPosition(c)\n    var v = SVG.getPathVertices(p)\n    if (a) {\n      var p1 = lively.getGlobalBounds(a).expandBy(0)[selectorA]() // no, extent because no arrow head\n      v[0].x1 = p1.x - offset.x\n      v[0].y1 = p1.y - offset.y\n    }\n    if (b) {\n      var p2 = lively.getGlobalBounds(b).expandBy(1)[selectorB]() // The arrow head goes into the object\n      v[1].x1 = p2.x - offset.x\n      v[1].y1 = p2.y - offset.y\n    }\n    SVG.setPathVertices(p,v)\n    // svg.resetBounds(c, p)\n  }\n  \n  updateConnector(keepbounds) {\n    var path = this\n    var b1 = lively.getGlobalBounds(path.fromElement || path);\n    var b2 = lively.getGlobalBounds(path.toElement || path)\n    \n    var dist = b1.center().subPt(b2.center())\n    var selectorA, selectorB;\n    if (Math.abs(dist.x) > Math.abs(dist.y)) {\n      if (b1.center().x > b2.center().x) {\n        selectorA = \"leftCenter\"\n        selectorB = \"rightCenter\"\n      }  else {\n        selectorA = \"rightCenter\"\n        selectorB = \"leftCenter\"\n      }\n    } else {\n      if (b1.center().y > b2.center().y) {\n        selectorA = \"topCenter\"\n        selectorB = \"bottomCenter\"\n      }  else {\n        selectorA = \"bottomCenter\"\n        selectorB = \"topCenter\"\n      }\n    }\n    this.updationPathConnection(path, path.fromElement, selectorA, path.toElement, selectorB)\n    if (!keepbounds) {\n      this.resetBoundsDelay()\n    }\n  }\n  \n  observePositionChange(a, obervername, cb) {\n    if (!a) return\n    var c = this\n    if (c[obervername]) { \n      c[obervername].disconnect()\n    };\n    c[obervername] = new MutationObserver((mutations, observer) => {\n        mutations.forEach(record => {\n          if (record.target == a && record.attributeName == \"style\") {\n            cb()\n          }\n        })\n    });\n    c[obervername].observe(a, {\n      childList: false, \n      subtree: false, \n      characterData: false, \n      attributes: true});\n  }\n  \n  connect(a, b) {\n    this.connectFrom(a, false)\n    this.connectTo(b)\n  }\n  \n  connectFrom(a, doNotUpdate, keepbounds) {\n    if (!a) return\n    this.setAttribute(\"fromElement\", lively.ensureID(a));\n    this.fromElement = a\n    this.observePositionChange(a,  \"fromObjectObserver\", () => this.updateConnector())\n    if (!doNotUpdate)\n      this.updateConnector(keepbounds); // just don't do it twice\n  }\n  \n  connectTo(b, doNotUpdate, keepbounds) {\n    if (!b) return   \n    this.toElement = b\n\n    this.setAttribute(\"toElement\", lively.ensureID(b))\n    this.observePositionChange(b,  \"toObjectObserver\", () => this.updateConnector())\n    if (!doNotUpdate)\n      this.updateConnector(keepbounds); // just don't do it twice\n  }\n  \n\n  disconnect() {\n    this.disconnectFromElement()\n    this.disconnectToElement()\n  }\n  \n  disconnectFromElement() {\n    if (this.fromObjectObserver) {\n      this.fromObjectObserver.disconnect()\n    }\n    this.fromElement = null\n  }\n  \n  disconnectToElement() {\n    if (this.toObjectObserver) {\n      this.toObjectObserver.disconnect()\n    }\n    this.toElement = null\n  }\n  \n  getPath() {\n    return this.shadowRoot.querySelector(\"path#path\")\n  }\n  \n  getVertices() {\n    return SVG.getPathVertices(this.getPath())\n  }\n\n  setVertices(vertices) {\n    return SVG.setPathVertices(this.getPath(), vertices)\n  }\n  \n  pointTo(p) {\n    this.disconnectToElement()\n    var path = this.getPath()\n    var v = SVG.getPathVertices(path)\n    v[1].x1 = p.x\n    v[1].y1 = p.y\n    var v = SVG.setPathVertices(path, v)\n  }\n  \n  resetBounds() {\n    var svg = this.get(\"#svg\")\n    SVG.resetBounds(svg, this.getPath())\n    lively.setExtent(this, lively.getExtent(svg))\n    var pos = lively.getPosition(svg)\n    lively.moveBy(this, pos)\n    lively.setPosition(svg, pt(0,0))\n  }\n  \n  saveVertices() {\n    var vertices = this.getVertices()\n    this.setAttribute(\"x1\", vertices[0].x1)\n    this.setAttribute(\"y1\", vertices[0].y1)\n    this.setAttribute(\"x2\", vertices[1].x1)\n    this.setAttribute(\"y2\", vertices[1].y1)\n  }\n\n  loadVertices() {\n    var vertices = this.getVertices()\n    \n    var x1 = this.getAttribute(\"x1\")\n    if (x1 !== null) { vertices[0].x1 = x1}\n    var y1 = this.getAttribute(\"y1\")\n    if (y1 !== null) { vertices[0].y1 = y1}\n\n    var x2 = this.getAttribute(\"x2\")\n    if (x2 !== null) { vertices[1].x1 = x2}\n    var y2 = this.getAttribute(\"y2\")\n    if (y2 !== null) { vertices[1].y1 = y2}\n\n    this.setVertices(vertices)\n  }\n\n  livelyPrepareSave() {\n    this.saveVertices()\n  }\n\n  livelyMigrate(other) {\n    // this.fromElement = other.fromElement\n    // this.toElement = other.toElement\n    // this.connect(this.fromElement, this.toElement)\n  }\n\n  livelyHalo() {\n    return {\n      configureHalo(halo) {\n        halo.setHandleVisibility(true);\n        \n        let path = this.getPath();\n        // halo.get(\"lively-halo-drag-item\").style.visibility= \"hidden\"\n        halo.ensureControlPoint(path, 0, true);\n        halo.ensureControlPoint(path, 1, true);\n      },\n      dragBehaviorMove(halo, evt, pos) {}\n    };\n  }\n  \n  \n  \n  // Added Methods by Linus and Anne\n  \n  \n  connectPetrinetComponents(a, b) {\n    this.connectFromPetrinetComponent(a, false)\n    this.connectToPetrinetComponent(b)\n  }\n  \n  connectFromPetrinetComponent(a, doNotUpdate, keepbounds) {\n    this.connectFrom(a.graphicElement(), doNotUpdate, keepbounds);\n    this.fromComponentId = a.componentId;\n    this.observePositionChange(a,  \"fromObjectObserver\", () => this.updateConnector())\n\n  }\n  \n  connectToPetrinetComponent(b, doNotUpdate, keepbounds) {\n    this.connectTo(b.graphicElement(), doNotUpdate, keepbounds);\n    this.toComponentId = b.componentId;\n    this.observePositionChange(b,  \"toObjectObserver\", () => this.updateConnector())\n\n  }\n  \n  get fromComponentId() {\n    return this.getAttribute(\"fromComponent\");\n  }\n  \n  set fromComponentId(componentId) {\n    this.setAttribute(\"fromComponent\", componentId);\n  }\n  \n  get toComponentId() {\n    return this.getAttribute(\"toComponent\");\n  }\n  \n  set toComponentId(componentId) {\n    this.setAttribute(\"toComponent\", componentId)\n  }\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n}"]}