{"version":3,"names":["WidgetChooser","VivideView","__SystemJSRewritingHack","_export","setters","_reactiveJsx","_addSourceLocation","addSourceLocation","_srcComponentsWidgetsLivelyMorphJs","Morph","default","_utils","uuid","without","getTempKeyFor","getObjectFor","flatMap","_srcClientVivideVivideobjectJs","VivideObject","_srcClientVivideVividescriptJs","Script","execute","_recorder_","_src_client_vivide_components_vivide_view_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","getPreferredWidgetType","forest","viewConfig","has","length","model","properties","findAppropriateWidget","type","includes","findViewWithId","id","context","document","body","lively","query","getIdForView","view","idAttribute","outportAttribute","scriptAttribute","widgetId","widgetSelector","forestToData","map","m","object","dataToForest","data","d","widget","input","_input","val","getAttribute","newId","setAttribute","outportTargets","ids","getJSONAttribute","call","findWorldContext","error","targets","setJSONAttribute","addOutportTarget","target","concat","removeOutportTarget","inportSources","Array","from","querySelectorAll","targetHull","hull","Set","addToHull","add","forEach","connectTo","removeConnectionTo","transmitDataToOutportTargets","dataToTransmit","newDataFromUpstream","reallyNotifyOutportTargets","stuffToTransmit","notifyOutportTargets","forestToDisplay","updateOutportTargets","getDataToTransmit","multiSelectionEnabled","getSelectedData","localName","undefined","selectionChanged","addDragInfoTo","evt","dt","dataTransfer","selection","setData","initialize","windowTitle","addEventListener","onExtentChanged","dragenter","dragover","dragleave","drop","myCurrentScript","scriptJSON","fromJSON","dataJSON","JSON","parse","childNodes","childNode","dispatchEvent","CustomEvent","preventDefault","_resetDropOverEffects","classList","hasSourceView","types","dropEffect","hasData","remove","shouldPreventPropagation","success","getData","sourceView","warn","stopPropagation","_myCurrentScript","script","toJSON","initDefaultScript","createDefaultScript","calculateOutputModel","updateWidget","getInputData","firstStep","getInitialStep","slice","processData","scriptGotUpdated","notify","innerHTML","getViewConfig","chosenWidgetType","create","file","end","column","line","start","setView","appendChild","display","createScriptEditor","viewWindow","findWindow","reference","tagName","pos","getClientBounds","topRight","scriptEditor","openComponentInWindow","setScript","livelyPrepareSave","json","stringify","e","console","livelyExample","exampleData","name","subclasses","livelyMigrate","other","livelyInspect","contentNode","inspector","livelyHalo","configureHalo","halo","style","outportContainer","item","createElement","setTarget","inportContainer","source","setSource"],"sources":["vivide-view.js"],"sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport { uuid, without, getTempKeyFor, getObjectFor, flatMap } from 'utils';\nimport VivideObject from 'src/client/vivide/vivideobject.js';\nimport Script from 'src/client/vivide/vividescript.js';\n\n/**\n * Smart widget choosing\n */\nclass WidgetChooser {\n  static getPreferredWidgetType(forest, viewConfig) {\n    if (viewConfig.has('widget')) { \n      return viewConfig.get('widget');\n    }\n    \n    // #TODO: this is too dependent on internal structure of the model/VivideObject\n    // PROPOSAL: Models should not know about views, therefore they cannot return\n    //   a suggested view, but they could return a data type suggestion like:\n    //     model.dataType == \"data-points\" || \"list\" || \"text\"\n    //   Additionally, this data type could be set manually or via an \"intelligent\"\n    //   algorithm.\n    if (forest && forest.length > 0) {\n      // #Question: this model has an objects array, what is the data structure of this model?\n      const model = forest[0];\n      \n      if(model.properties.has('dataPoints') && typeof model.properties.get('dataPoints')[0] === 'number') {\n        return 'boxplot';\n      } else if (model.properties.has('text')) {\n        return 'text';\n      }\n    }\n    return 'tree';\n  }\n  static findAppropriateWidget(forest, viewConfig) {\n    const type = this.getPreferredWidgetType(forest, viewConfig);\n    \n    // full type specified\n    if(type.includes('-')) {\n      return type;\n    }\n    \n    // shorthand notation used\n    return `vivide-${type}-widget`;\n  }\n}\n\nexport default class VivideView extends Morph {\n  static findViewWithId(id, context=document.body) {\n    return lively.query(context, `vivide-view[vivide-view-id=${id}]`);\n  }\n  \n  static getIdForView(view) {\n    return view.id;\n  }\n  \n  static get idAttribute() { return 'vivide-view-id'; }\n  \n  static get outportAttribute() { return 'outport-target'; }\n  \n  static get scriptAttribute() { return 'vivide-script'; }\n  \n  static get widgetId() { return 'widget'; }\n  \n  static get widgetSelector() { return '#' + this.widgetId; }\n  \n  static forestToData(model) {\n    return model.map(m => m.object);\n  }\n  \n  // unused?\n  static dataToForest(data) {\n    return data.map(d => new VivideObject(d));\n  }\n\n  get widget() { return this.get(VivideView.widgetSelector); }\n  \n  get input() { return this._input || (this._input = []); }\n  set input(val) { return this._input = val; }\n  \n  get id() {\n    let id = this.getAttribute(VivideView.idAttribute);\n    if(id) { return id; }\n    \n    // ensure uuid begins with a letter to match the requirements for a css selector\n    let newId = 'vivide-view-' + uuid();\n    this.setAttribute(VivideView.idAttribute, newId);\n    return newId;\n  }\n  \n  get outportTargets() {\n    let ids = this.getJSONAttribute(VivideView.outportAttribute);\n    if(ids) {\n      return flatMap.call(ids, id => {\n        let view = VivideView.findViewWithId(id, lively.findWorldContext(this)) ;\n        if(view === null) {\n          lively.error('could not find view: ' + id);\n          return [];\n        }\n        return [view];\n      });\n    }\n    \n    return this.outportTargets = [];\n  }\n  \n  set outportTargets(targets) {\n    return this.setJSONAttribute(\n      VivideView.outportAttribute,\n      targets.map(VivideView.getIdForView)\n    );\n  }\n  \n  addOutportTarget(target) {\n    return this.outportTargets = this.outportTargets.concat(target);\n  }\n  \n  removeOutportTarget(target) {\n    return this.outportTargets = without.call(this.outportTargets, target);\n  }\n  \n  get inportSources() {\n    return Array.from(document.body.querySelectorAll(`vivide-view[${VivideView.outportAttribute}*=${this.id}]`));\n  }\n  \n  get targetHull() {\n    let hull = new Set();\n    \n    function addToHull(view) {\n      if(view && !hull.has(view)) {\n        hull.add(view);\n        view.outportTargets.forEach(addToHull);\n      }\n    }\n    addToHull(this);\n    \n    return Array.from(hull);\n  }\n  \n  connectTo(target) {\n    // #TODO: cycle detection, here?\n    this.addOutportTarget(target);\n  }\n  removeConnectionTo(target) {\n    this.removeOutportTarget(target);\n  }\n  \n  transmitDataToOutportTargets(dataToTransmit) {\n    this.outportTargets.forEach(target => target.newDataFromUpstream(dataToTransmit));\n  }\n  reallyNotifyOutportTargets(stuffToTransmit) {\n    this.transmitDataToOutportTargets(VivideView.forestToData(stuffToTransmit));\n  }\n  notifyOutportTargets() {\n    // lively.warn('VIEW::NOTIFY2', this.forestToDisplay[0])\n    this.reallyNotifyOutportTargets(this.forestToDisplay);\n  }\n  \n  updateOutportTargets() {\n    const dataToTransmit = this.getDataToTransmit();\n    if(dataToTransmit) {\n      // lively.warn('VIEW::UPDATE', dataToTransmit[0])\n      this.transmitDataToOutportTargets(dataToTransmit);\n    }\n  }\n  \n  getDataToTransmit() {\n      // lively.warn('display all data')\n    if(this.widget && this.widget.multiSelectionEnabled) {\n      return this.getSelectedData();\n    } else if (this.widget && this.widget.localName === 'vivide-text-widget') {\n      return this.getSelectedData();\n    } else {\n      // use all data\n      return VivideObject.forestToData(this.forestToDisplay);\n    }\n  }\n  \n  getSelectedData() {\n    const widget = this.widget;\n    if(widget) {\n      return widget.getSelectedData();\n    }\n    return undefined;\n  }\n\n  selectionChanged() {\n    this.updateOutportTargets();\n  }\n  \n  addDragInfoTo(evt) {\n    const dt = evt.dataTransfer;\n    // #TODO: An improved fix would be to change what is returned by the widget selection\n    let selection = this.getDataToTransmit();\n    if(selection) {\n      // lively.warn('VivideView::addDragInfoTo', selection[0])\n      dt.setData(\"javascript/object\", getTempKeyFor(selection));\n    } else {\n      lively.error('could not add drag data');\n    }\n\n    dt.setData(\"vivide\", \"\");\n    dt.setData(\"vivide/source-view\", getTempKeyFor(this));\n  }\n\n  async initialize() {\n    this.windowTitle = \"VivideView\";\n    this.addEventListener('extent-changed', evt => this.onExtentChanged(evt));\n    \n    this.addEventListener('dragenter', evt => this.dragenter(evt), false);\n    this.addEventListener('dragover', evt => this.dragover(evt), false);\n    this.addEventListener('dragleave', evt => this.dragleave(evt), false);\n    this.addEventListener('drop', evt => this.drop(evt), false);\n\n    // restore data... \n    \n    // not migrating, but initializing from source\n    if (!this.myCurrentScript) {\n      var scriptJSON = this.getAttribute(\"vivide-script\")\n      if (scriptJSON) {\n        this.myCurrentScript = await Script.fromJSON(scriptJSON, this)\n      } else {\n        //This got commented because it is not reliable. It will often overwrite or take longer to setup and overwrite later on\n        // await this.initDefaultScript();\n      }\n\n      var dataJSON = this.getAttribute(\"vivide-data\")\n      if (dataJSON) {\n        // await this.createScriptEditor();\n        var data = JSON.parse(dataJSON)\n        this.newDataFromUpstream(data)\n      }      \n    }\n  }\n  \n  onExtentChanged() {\n    this.childNodes.forEach(childNode => {\n      if(childNode.dispatchEvent) {\n        childNode.dispatchEvent(new CustomEvent(\"extent-changed\"));\n      }\n    })\n  }\n  \n  dragenter(evt) {}\n  dragover(evt) {\n    evt.preventDefault();\n\n    this._resetDropOverEffects();\n    this.classList.add('over');\n    \n    const dt = evt.dataTransfer;\n    \n    let hasSourceView = dt.types.includes(\"vivide\") && dt.types.includes(\"vivide/source-view\");\n    if(hasSourceView) {\n      // unfortunately, we cannot check for a circular dependency here,\n      // because we cannot get data from the dataTransfer outside dragStart and drop\n      // see: https://stackoverflow.com/a/31922258/1152174\n      this.classList.add('accept-drop');\n      dt.dropEffect = \"link\";\n      \n      return;\n    }\n    \n    let hasData = dt.types.includes(\"javascript/object\");\n    if(hasData) {\n      this.classList.add('accept-drop');\n      dt.dropEffect = \"copy\";\n      \n      return;\n    }\n    \n    this.classList.add('reject-drop');\n  }\n  dragleave(evt) {\n    this._resetDropOverEffects();\n  }\n  _resetDropOverEffects() {\n    this.classList.remove('over');\n    this.classList.remove('reject-drop');\n    this.classList.remove('accept-drop');\n  }\n  drop(evt) {\n    this._resetDropOverEffects();\n\n    let shouldPreventPropagation = false;\n    \n    const dt = evt.dataTransfer;\n    if (dt.types.includes(\"javascript/object\")) {\n      lively.success('drop data');\n\n      const data = getObjectFor(dt.getData(\"javascript/object\"));\n      this.newDataFromUpstream(data);\n      \n      shouldPreventPropagation = true;\n    }\n    \n    if (dt.types.includes(\"vivide\") && dt.types.includes(\"vivide/source-view\")) {\n      lively.success('drop vivide');\n      \n      const sourceView = getObjectFor(dt.getData(\"vivide/source-view\"));\n\n      if(this.targetHull.includes(sourceView)) {\n        lively.warn('cannot connect views', 'preventing cyclic dependencies')\n      } else {\n        sourceView.connectTo(this);\n      }\n\n      shouldPreventPropagation = true;\n    }\n\n    if(shouldPreventPropagation) {\n      evt.stopPropagation();\n    }\n  }\n  \n  get myCurrentScript() { return this._myCurrentScript; }\n  set myCurrentScript(script) {\n    this._myCurrentScript = script;\n    this.setAttribute(VivideView.scriptAttribute, script.toJSON());\n  }\n\n  async initDefaultScript() {\n    const script = await Script.createDefaultScript(this);\n    this.myCurrentScript = script;\n    return script;\n    // this.setJSONAttribute(VivideView.scriptAttribute, this.myCurrentScript.toJSON());\n  }\n  \n  async newDataFromUpstream(data) {\n    this.input = data;\n    \n    await this.calculateOutputModel();\n    await this.updateWidget();\n    this.updateOutportTargets();\n  }\n  \n  getInputData() {\n    return this.input;\n  }\n  \n  async calculateOutputModel() {\n    const firstStep = this.myCurrentScript.getInitialStep();\n    const data = this.input.slice(0);\n    \n    this.forestToDisplay = await firstStep.processData(data);\n  }\n  \n  // #TODO: nearly a duplicate with newDataFromUpstream; remove duplication\n  async scriptGotUpdated() {\n    // #TODO: save script to web-component\n    // #TODO: later support multiple profiles\n    lively.notify('VivideView::scriptGotUpdated');\n    await this.calculateOutputModel();\n    await this.updateWidget();\n    // Update outport views\n    // #TODO: nearly a duplicate with notifyOutportTargets, remove duplication\n    this.updateOutportTargets();\n  }\n  \n  async updateWidget() {\n    this.innerHTML = '';\n\n    const viewConfig = await this.myCurrentScript.getViewConfig();\n    const chosenWidgetType = WidgetChooser.findAppropriateWidget(this.forestToDisplay, viewConfig);\n\n    const widget = await lively.create(chosenWidgetType);\n    widget.setView(this);\n    widget.setAttribute('id', VivideView.widgetId);\n    this.appendChild(widget);\n    await widget.display(this.forestToDisplay, viewConfig);\n  }\n  \n  async createScriptEditor() {\n    const viewWindow = lively.findWindow(this);\n    const reference = viewWindow && viewWindow.tagName === \"LIVELY-WINDOW\" ?\n        viewWindow : this;\n    const pos = lively.getClientBounds(reference).topRight();\n\n    const scriptEditor = await lively.openComponentInWindow('vivide-script-editor', pos);\n    scriptEditor.setView(this);\n    // #TODO: only do setView with this as argument, the following line should not be required\n    await scriptEditor.setScript(this.myCurrentScript);\n\n    return scriptEditor;\n  }\n  \n  livelyPrepareSave() {\n    this.setAttribute(\"vivide-script\", this.myCurrentScript.toJSON());\n\n    try {\n      var json = JSON.stringify(this.getInputData())\n      this.setAttribute(\"vivide-data\", json)\n    } catch(e) {\n      console.warn(\"could not persist vivide data\", this.getInputData() )\n    }\n  }\n  \n  async livelyExample() {\n    const exampleData = [\n      {\n        name: \"object\",\n        subclasses:[\n          {name: \"morph\"}\n        ]},\n      {\n        name: \"list\",\n        subclasses:[\n          {\n            name: \"linkedlist\",\n            subclasses:[\n              {name: \"stack\"}\n            ]},\n          {\n            name: \"arraylist\"\n          }]\n      },\n      {\n        name: \"usercontrol\",\n        subclasses:[\n          {name: \"textbox\"},\n          {name: \"button\"},\n          {name: \"label\"}\n        ]},\n    ];\n    \n    await this.initDefaultScript();\n    await this.createScriptEditor();\n    await this.newDataFromUpstream(exampleData);\n  }\n  \n  livelyMigrate(other) {\n    lively.notify('VivideView::migrate')\n    this.myCurrentScript = other.myCurrentScript;\n    this.myCurrentScript.setView(this);\n\n    this.newDataFromUpstream(other.input);\n  }\n  \n  livelyInspect(contentNode, inspector) {\n    if (this.myCurrentScript) {\n      contentNode.appendChild(inspector.display(this.myCurrentScript, false, \"#script\", this));\n    }\n    if (this.input) {\n      contentNode.appendChild(inspector.display(this.input, false, \"#input\", this));\n    }\n    \n    var outportTargets = this.outportTargets\n    if (outportTargets) {\n      contentNode.appendChild(inspector.display(outportTargets, false, \"#outportTargets\", this));\n    }\n    \n    \n  }\n  \n  \n  livelyHalo() {\n    return {\n      configureHalo(halo) {\n        halo.get('#default-items').style.display = 'none';\n        halo.get('#vivide-items').style.display = 'flex';\n\n        // dynamically create outport connection visualizations\n        const outportContainer = halo.get('#vivide-outport-connection-items');\n        this.outportTargets.forEach(target => {\n          const item = document.createElement('lively-halo-vivide-outport-connection-item')\n          item.classList.add('halo');\n          item.setTarget(target);\n          outportContainer.appendChild(item);\n        });\n        \n        const inportContainer = halo.get('#vivide-inport-connection-items');\n        this.inportSources.forEach(source => {\n          const item = document.createElement('lively-halo-vivide-inport-connection-item')\n          item.classList.add('halo');\n          item.setSource(source);\n          inportContainer.appendChild(item);\n        });\n      }\n    };\n  }\n}\n"],"mappings":"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"}