{"version":3,"names":["Connection","uuid","window","Set","nextId","targetIsFunction","Function","e","constructor","source","sourceProperty","target","targetProperty","isEvent","evt","connectionFunction","cleanProperty","makeSavingScript","property","split","each","camelCaseIfNeeded","propertyPart","includes","camelCase","lively","ensureID","saveSerializedConnectionIntoWidget","serializedConnections","Array","from","connection","serialize","sourceId","targetId","trackingCode","modifyingCode","label","deserialize","json","forEach","connectionData","connectionFromExistingData","deserializeFromObjectIfNeeded","object","hasAttribute","getJSONAttribute","config","elementByID","undeadConnection","setModifyingCode","setTrackingCode","setLabel","activate","deactivate","activateEvent","activateAexpr","addEventListener","myFunction","onChange","svalue","getTrackingCode","string","isActive","sourceValue","drawConnectionLine","removeConnectionLine","getSource","to","getTarget","connector","document","createElement","setAttribute","connectFrom","connectTo","setActive","shouldBeActive","toggleDirection","oldTarget","copyAndActivate","newConnection","removeEventListener","destroy","setSource","getSourceId","setTarget","getTargetId","getAexpr","getSourceProperty","setSourceProperty","newProperty","getModifyingCode","allConnections","allConnectionsFor","connections","objectId","getAttribute","push","getLabel","getFullLabel","elementToCSSName","migrateTo"],"sources":["Connection.js"],"sourcesContent":["\"enable aexpr\";\n\nwindow.allConnections = window.allConnections || new Set()\n\nimport { uuid } from 'utils';\n\n\nexport default class Connection {\n  \n  static nextId(){\n    return uuid()\n    // this._currentId = this._currentId || 1\n    // return this._currentId++\n  }\n  \n  targetIsFunction() {\n    try {\n      return this.target[this._targetProperty] instanceof Function\n    } catch(e) {\n      return false\n    }\n  }\n  \n  constructor(source, sourceProperty, target, targetProperty, isEvent) {\n    this.id = Connection.nextId();\n    window.allConnections.add(this);\n    \n    this.target = target;\n    this._targetProperty = targetProperty;\n    this.source = source;\n    this._sourceProperty = sourceProperty;\n    this.isEvent = isEvent;\n    this.isActive = false\n    this._eventListener = evt => this.connectionFunction(evt)\n    this._targetProperty = this.cleanProperty(this._targetProperty)\n    \n    \n    if(isEvent){\n      if (this.targetIsFunction()) { \n      this.modifyingCode = \n`(target, event) => {\n  target.${this._targetProperty}(event);\n}`;        \n      } else {\n      this.modifyingCode = `(target, event) => {\n  target.${this._targetProperty} = event;\n}`;\n      }\n        \n      this.trackingCode = this._sourceProperty;\n    } else {\n      if (this.targetIsFunction()) {\n        this.modifyingCode = \n`(target, sourceValue) => {\n  target.${this._targetProperty}(sourceValue);\n}`;   \n      } else {\n        this.modifyingCode = \n`(target, sourceValue) => {\n  target.${this._targetProperty} = sourceValue;\n}`;        \n      }\n      \n      \n      \n      \n      this._sourceProperty = this.cleanProperty(this._sourceProperty)\n      this.trackingCode = `(source) => {\n  return source.${this._sourceProperty};\n}`\n    }\n    this.makeSavingScript();\n  }\n  \n  get sourceProperty() {\n    return this._sourceProperty\n  }\n  \n  get targetProperty() {\n    return this._targetProperty\n  }\n  \n  \n  cleanProperty(property) {\n    return property.split(\".\").map(each => this.camelCaseIfNeeded(each)).join(\".\")\n  }\n  \n  camelCaseIfNeeded(propertyPart) {\n    if(propertyPart.includes('-')) {\n      return propertyPart.camelCase();\n    } else {\n      return propertyPart;\n    }\n  }\n  \n  makeSavingScript() {\n    if (this.target) {\n      this.targetId = lively.ensureID(this.target);\n    } \n    if (this.source) {\n      this.sourceId = lively.ensureID(this.source);\n    }\n    if (this.target && this.source) {\n      this.saveSerializedConnectionIntoWidget();\n    }\n  }\n  \n  saveSerializedConnectionIntoWidget() {\n    if (!this.source) return; // cannot save it...\n    const serializedConnections = Array.from(window.allConnections)\n      .filter(connection => connection.source === this.source)\n      .map(connection => connection.serialize())\n    this.source.setJSONAttribute('data-connection', serializedConnections);\n  }\n  \n  serialize() {\n    return {\n      sourceId: this.sourceId,\n      targetId: this.targetId,\n      sourceProperty: this._sourceProperty,\n      targetProperty: this._targetProperty,      \n      trackingCode: this.trackingCode,\n      modifyingCode: this.modifyingCode,\n      label: this.label,\n      isEvent: this.isEvent\n    }\n  }\n  \n  static deserialize(json) {\n    json.forEach(connectionData => {\n      this.connectionFromExistingData(connectionData)\n    })\n  }\n  \n  static deserializeFromObjectIfNeeded(object) {\n    if (object.hasAttribute && object.hasAttribute('data-connection')) {\n      this.deserialize(object.getJSONAttribute('data-connection'))\n    }\n  }\n  \n  static connectionFromExistingData(config) {\n    \n    const target = lively.elementByID(config.targetId);\n    const source = lively.elementByID(config.sourceId);\n    const undeadConnection = new Connection(\n        source, config.targetProperty, \n        target, config.sourceProperty,\n        config.isEvent);\n    undeadConnection.setModifyingCode(config.modifyingCode);\n    undeadConnection.setTrackingCode(config.trackingCode);\n    undeadConnection.setLabel(config.label);\n    undeadConnection.activate();\n  }\n  \n  activate() {\n    \n    if(this.isActive) {\n       this.deactivate()\n    }\n    \n    if(this.isEvent) {\n      this.activateEvent()\n    }\n    else {\n      this.activateAexpr()\n    }\n    this.isActive = true\n  }\n  \n  async activateEvent() {\n    if (this.source) {\n      lively.addEventListener('Connections', this.source, this.trackingCode, this._eventListener);\n    }\n  }\n  \n  async activateAexpr() {\n    let myFunction = await this.trackingCode.boundEval()\n    this.ae = aexpr(() => myFunction(this.source));\n    this.ae.onChange(svalue => this.connectionFunction(svalue));\n  }\n  \n  getTrackingCode() {\n    return this.trackingCode\n  }\n  \n  setTrackingCode(string) {\n    const isActive = this.isActive\n    if(isActive){this.deactivate()}\n    this.trackingCode = string;\n    this.saveSerializedConnectionIntoWidget();\n    if(isActive){this.activate()}\n  }\n  \n  async connectionFunction(sourceValue) {  \n    let myFunction = await this.modifyingCode.boundEval()\n    myFunction(this.target, sourceValue)\n  }\n  \n  async drawConnectionLine() {\n    this.removeConnectionLine()\n    var from = this.getSource()\n    var to = this.getTarget()\n    if (!from || !to) return\n    \n    var connector = document.createElement(\"lively-connector\")\n    connector.setAttribute(\"data-lively4-donotpersist\", true)\n    await lively.components.openIn(document.body, connector)\n    this.connectionLine = connector\n    \n    connector.connectFrom(from)\n    connector.connectTo(to)\n    return connector\n  }\n  \n  async removeConnectionLine() {\n    if (this.connectionLine) this.connectionLine.remove()\n  }\n  \n  setActive(shouldBeActive) {\n    if(shouldBeActive){\n      this.activate()\n    }\n    else{\n       this.deactivate()\n    }\n  }\n  \n  toggleDirection() {\n    this.deactivate();\n    let oldTarget = this.target;\n    this.target = this.source;\n    this.source = oldTarget;\n    this.saveSerializedConnectionIntoWidget();\n    this.activate();\n  }\n  \n  copyAndActivate() {\n    let newConnection = new Connection(\n      this.source, this.sourceProperty, \n      this.target, this._targetProperty, \n      this.isEvent);\n    newConnection.setModifyingCode(this.modifyingCode);\n    newConnection.activate();\n    return newConnection;\n  }\n  \n  deactivate() {\n    this.ae && this.ae.dispose()\n    if(this.isEvent){\n      lively.removeEventListener ('Connections', this.source, this.trackingCode, this._eventListener)\n    }\n    this.isActive = false\n  }\n  \n  destroy() {\n    this.deactivate()\n    window.allConnections.delete(this)\n  }\n  \n  getSource() {\n    return this.source\n  }\n  \n  setSource(object) {\n    this.source = object\n  }\n  \n  getSourceId() {\n    return this.sourceId\n  }\n  \n  getTarget() {\n    return this.target\n  }\n  \n  setTarget(object) {\n    this.target = object\n  }\n  \n  getTargetId() {\n    return this.targetId\n  }\n  \n  getAexpr() {\n    return this.ae\n  }\n  \n  getSourceProperty() {\n    return this._sourceProperty\n  }\n  \n  setSourceProperty(newProperty) {\n    this._sourceProperty = newProperty;\n    this.saveSerializedConnectionIntoWidget();\n    this.activate();\n  }\n  \n  getModifyingCode() {\n    return this.modifyingCode\n  }\n  \n  setModifyingCode(string) {\n    this.modifyingCode = string;\n    this.saveSerializedConnectionIntoWidget();\n  }\n  \n  static get allConnections() {\n    return window.allConnections\n  }\n  \n  static allConnectionsFor(object) {\n    let connections = [];\n    if (object.hasAttribute && object.hasAttribute('data-lively-id')) {\n      let objectId = object.getAttribute('data-lively-id');\n      this.allConnections.forEach(connection => {\n        if((connection.targetId == objectId) || (connection.sourceId == objectId)) {connections.push(connection)}\n      })\n    }\n    return connections\n  }\n  \n  getLabel() {\n    return this._sourceProperty + \"⇨\" + this._targetProperty \n  }\n\n  getFullLabel() {\n    try {\n      return lively.elementToCSSName(this.getSource()) + \" \" + this._sourceProperty +\n        \"⇨\" + lively.elementToCSSName(this.getTarget()) + \" \"+ this._targetProperty      \n    } catch(e) {\n      return this.getLabel()\n    }\n    \n  }\n\n  \n  setLabel(string) {\n    this.label = string // not used...\n  }\n  \n}\n\nwindow.allConnections.forEach(connection => connection.migrateTo(Connection));"],"mappings":"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"}