{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-eventsourcing/src/components/halo/lively-halo-connectors-item.js"],"names":["HaloItem","pt","ContextMenu","Connection","domEvents","cssProperties","LivelyHaloConnectorsItem","initialize","registerEvent","onClick","evt","window","showStartingConnectorsMenuFor","hideHalo","attachedCallback","detachedCallback","showMenu","menuItems","openIn","document","undefined","myConnectionsMenu","allConnectionsFor","connection","getLabel","openConnectionEditor","startCreatingConnectionFor","getAllEventsFor","getAllStylesFor","startCreatingConnectionCustom","object","allEvents","map","domEvent","isFinishing","result","forEach","cssProperty","push","event","finishCreatingConnection","showFinishingConnectorsMenuFor","morph","finishCreatingConnectionCustom","elementUnderHand","lively","onPointerMove","showElement","setGlobalPosition","getPosition","onPointerUp","removeEventListener","editor","openComponentInWindow","setExtent","setConnection","userinput","prompt","property","isEvent","addEventListener","e","capture","target","targetProperty","activate","drawConnectionLine"],"mappings":"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","file":"lively-halo-connectors-item.js","sourcesContent":["\"enable aexpr\";\n\nimport HaloItem from 'src/components/halo/lively-halo-item.js';\nimport {pt} from 'src/client/graphics.js';\nimport ContextMenu from \"src/client/contextmenu.js\";\nimport Connection from \"./Connection.js\";\nimport { domEvents, cssProperties } from \"src/client/constants.js\";\n\n\nexport default class LivelyHaloConnectorsItem extends HaloItem {\n  \n  async initialize() {\n    this.windowTitle = \"LivelyHaloConnectorsItem\";\n\n    this.registerEvent('click', 'onClick');\n  }\n  \n  onClick(evt) {\n      this.source = window.that;\n    \n      this.showStartingConnectorsMenuFor(evt);\n    \n      this.hideHalo();\n  }\n  \n  attachedCallback() {\n  }\n  \n  detachedCallback() {\n  \n  }\n\n  async showMenu(evt, menuItems) {\n    return ContextMenu.openIn(document.body, evt, undefined, document.body, menuItems);\n  }\n  \n  async showStartingConnectorsMenuFor(evt) {  \n    \n    let myConnectionsMenu = Connection.allConnectionsFor(this.source)\n        .map(connection => [\n          connection.getLabel(), \n          () => this.openConnectionEditor(connection)]);\n    \n    const menuItems = [\n      ['Value', () => this.startCreatingConnectionFor(evt, 'value', false)],\n      ['Width', () => this.startCreatingConnectionFor(evt, 'style.width', false)],\n      ['Height', () => this.startCreatingConnectionFor(evt, 'style.height', false)],\n      ['Events', this.getAllEventsFor(this.source, evt)],\n      ['Style', this.getAllStylesFor(this.source, evt)],\n      ['On custom...', () => this.startCreatingConnectionCustom(evt)],\n      ['Connections', myConnectionsMenu, '', '<i class=\"fa fa-arrow-right\" aria-hidden=\"true\"></i>'],\n    ];\n    \n    return this.showMenu(evt, menuItems);\n  }\n  \n  //More events https://developer.mozilla.org/en-US/docs/Web/Events\n  getAllEventsFor(object, evt) {\n    const allEvents = domEvents.map(domEvent => [domEvent, () => this.startCreatingConnectionFor(evt, domEvent, true)]);\n    \n    return [\n      ['click', () => this.startCreatingConnectionFor(evt, 'click', true)],\n      ['dblclick', () => this.startCreatingConnectionFor(evt, 'dblclick', true)],\n      ['mousemove', () => this.startCreatingConnectionFor(evt, 'mousemove', true)],\n      ['more', allEvents]\n    ];\n  }\n  \n  getAllStylesFor(object, evt, isFinishing = false) {\n    const result = [];\n    \n    cssProperties.forEach(cssProperty => {\n      if(isFinishing){\n        result.push([cssProperty, event => this.finishCreatingConnection(object, 'style.' + cssProperty, event)]);\n      } else {\n        result.push([cssProperty, () => this.startCreatingConnectionFor(evt, 'style.' + cssProperty, false)]); \n      }\n    });\n\n    return result;\n  }\n  \n  async showFinishingConnectorsMenuFor(evt, morph) {\n    const menuItems = [\n      ['Value', event => this.finishCreatingConnection(morph, 'value', event)],\n      ['Width', event => this.finishCreatingConnection(morph, 'style.width', event)],\n      ['Height', event => this.finishCreatingConnection(morph, 'style.height', event)],\n      ['innerHTML', event => this.finishCreatingConnection(morph, 'innerHTML', event)],\n      // Hook for chained events\n      //['Events', this.getAllEventsFor(morph, evt, true)],\n      ['Style', this.getAllStylesFor(morph, evt, true)],\n      ['On custom...', event => this.finishCreatingConnectionCustom(morph, event)]];\n    return await this.showMenu(evt, menuItems);\n  }\n  \n  elementUnderHand(evt) {\n    return lively.hand.elementUnderHand(evt)\n  }\n  \n  onPointerMove(evt) {\n    if (this.dropIndicator) this.dropIndicator.remove()\n    this.dropTarget = this.elementUnderHand(evt)\n    if (this.dropTarget) {\n      this.dropIndicator = lively.showElement(this.dropTarget)\n      this.dropIndicator.style.border = \"3px dashed rgba(0,100,0,0.5)\"\n      this.dropIndicator.innerHTML = \"\"\n    }\n    \n    if (this.valueIndicator) {\n      this.valueIndicator.remove();\n    }\n    this.valueIndicator = <span>{this.sourceProperty}</span>;\n    this.valueIndicator.isMetaNode = true\n    this.valueIndicator.style.zIndex = 200;\n    document.body.appendChild(this.valueIndicator);\n    lively.setGlobalPosition(this.valueIndicator, pt(lively.getPosition(evt).x+1, lively.getPosition(evt).y+1));\n  }\n  \n  onPointerUp(evt) {\n    lively.removeEventListener(\"Connectors\")\n    \n    if (this.dropIndicator) this.dropIndicator.remove()\n    if (this.valueIndicator) this.valueIndicator.remove()\n    var morph = this.elementUnderHand(evt)\n    \n    this.showFinishingConnectorsMenuFor(evt, morph);\n  }\n  \n  async openConnectionEditor(connection) {\n    let editor = await lively.openComponentInWindow('lively-connection-editor')\n    lively.setExtent(editor.parentElement, lively.pt(800, 50))\n    editor.setConnection(connection)\n  }\n  \n  async startCreatingConnectionCustom(evt) {\n    var userinput = await lively.prompt(\"Enter something\", \"value\");\n    this.startCreatingConnectionFor(evt, userinput, false);\n  }\n  \n  startCreatingConnectionFor(evt, property, isEvent) {\n    this.sourceProperty = property;\n    this.isEvent = isEvent;\n    \n    lively.addEventListener(\"Connectors\", document.body.parentElement, \"pointermove\",\n      e => this.onPointerMove(e), { capture: true });\n    lively.addEventListener(\"Connectors\", document.body.parentElement, \"pointerup\",\n      e => this.onPointerUp(e), { capture: true });\n  }\n  \n  async finishCreatingConnectionCustom(target, event) {\n    var userinput = await lively.prompt(\"Enter something\", \"style.width\");\n    this.finishCreatingConnection(target, userinput, event);\n  }\n  \n  finishCreatingConnection(target, targetProperty, event) {\n    let connection = new Connection(this.source, this.sourceProperty, \n                                    target, targetProperty, this.isEvent);\n    connection.activate();\n    connection.drawConnectionLine();\n    if(!event.shiftKey){\n      this.openConnectionEditor(connection);\n    }\n  } \n}"]}