{"version":3,"names":["DropOnBodyHandler","DropElementHandler","__SystemJSRewritingHack","dropOnDocumentBehavior","applyDragCSSClass","addEventListener","evt","classList","add","remove","appendToContainerAt","node","openAt","findDropContext","element","path","container","document","body","find","ea","contains","localName","__unload__","removeListeners","_export","setters","_reactiveJsx","_childText","childText","_childExpression","childExpression","_childElement","childElement","_children","children","_attributeExpression","attributeExpression","_attributeStringLiteral","attributeStringLiteral","_attributes","attributes","_element","_addSourceLocation","addSourceLocation","_srcClientGraphicsJs","pt","_utils","debounce","through","asDragImageFor","getObjectFor","removeTempKey","_srcClientVivideVivideJs","letsScript","_srcClientLiteratureJs","MicrosoftAcademicEntities","_srcClientStringsJs","Strings","default","execute","_recorder_","_src_client_draganddrop_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","mimeType","handler","handle","dt","dataTransfer","types","includes","getData","then","r","customHandler","handleElement","composedPath","appendChild","lively","setClientPosition","getPosition","lastDragOffset","moveBy","tempKey","cb","removeEventListener","load","onDragOver","bind","onDrop","handlers","dataTempKey","data","viewTempKey","sourceView","icon","offset","JSON","parse","clientX","clientY","subPt","knotURL","create","file","end","column","line","start","urlString","match","openInspector","getClientPosition","existing","querySelector","notify","infoSpan","link","info","m","matchAll","id","raw","files","loadJSON","entity","entities","type","getEntityType","Ty","label","innerHTML","preventDefault","stopPropagation","openBrowser","replace","elementByID","parentElement","text","comp","updateView","entries","querySelectorAll","length","style","width","htmlString","div","target","lastDropTarget","lastDropTargetHighlight","Array","from","showElement","handleFiles","forEach","extension","name","ctrlKey","reader","FileReader","onload","event","dataURL","result","img","readAsDataURL","item","url","readBlobAsDataURL","cssText","split","pair","value","warn"],"sources":["draganddrop.js"],"sourcesContent":["import { pt } from 'src/client/graphics.js';\nimport { debounce, through, asDragImageFor, getObjectFor, removeTempKey } from \"utils\";\nimport { letsScript } from 'src/client/vivide/vivide.js';\nimport { MicrosoftAcademicEntities} from \"src/client/literature.js\"\nimport Strings from \"src/client/strings.js\"\n\n\nexport function applyDragCSSClass() {\n  this.addEventListener('dragenter', evt => this.classList.add(\"drag\"), false);\n  this.addEventListener('dragleave', evt => this.classList.remove(\"drag\"), false);\n  this.addEventListener('drop', evt => this.classList.remove(\"drag\"));\n}\n\nfunction appendToContainerAt(node, evt) {\n  dropOnDocumentBehavior.openAt(node, evt)\n  // document.body.appendChild(node);\n  // lively.setClientPosition(node, pt(evt.clientX, evt.clientY));\n}\n\n\n//class DataTransferItemHandler {\n//  handle() {\n//    \n//  }\n//}\n\nclass DropOnBodyHandler {\n  constructor(mimeType, handler) {\n    this.mimeType = mimeType;\n    this.handler = handler;\n  }\n  \n  handle(evt) {\n    const dt = evt.dataTransfer;\n    if(!dt.types.includes(this.mimeType)) { return false; }\n    \n    const element = this.handler(dt.getData(this.mimeType));\n    if(element) {\n      if(element.then) {\n        element.then( r => {\n          appendToContainerAt(r, evt);  \n        })\n      } else {\n        appendToContainerAt(element, evt);\n      }\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n\nfunction findDropContext(element, path, container=document.body) {\n  return path.find(ea => {\n    return ea && (ea === container || (ea.classList && ea.classList.contains(\"lively-content\")) || ea.localName == \"lively-folder\")\n  }) || container\n}\n\n\n// drop and a dragged html element into a container\nexport class DropElementHandler {\n  constructor(container, customHandler) {\n    this.container = container;\n    if (customHandler) {\n      this.handleElement = customHandler\n    }\n  }\n  \n  handleElement(element, evt) {\n    var container = findDropContext(element, evt.composedPath(), this.container)\n    container.appendChild(element)\n    lively.setClientPosition(element, lively.getPosition(evt))\n    if (element.lastDragOffset) {\n      lively.moveBy(element, element.lastDragOffset)\n    }\n  }\n  \n  handle(evt) {\n    const dt = evt.dataTransfer\n    if(!dt.types.includes(\"lively/element\")) { return false }\n    const tempKey = dt.getData(\"lively/element\")\n    const element = getObjectFor(tempKey)\n    if (!element) return false\n    \n    this.handleElement(element, evt)\n    \n    removeTempKey(tempKey)\n    return true\n  }\n  \n  static handle(evt, container, cb) {\n    new this(container, cb).handle(evt)\n  }\n}\n\nconst dropOnDocumentBehavior = {\n  \n  removeListeners() {\n    lively.removeEventListener(\"dropOnDocumentBehavior\", document);\n  },\n  \n  load() {\n    // #HACK: we remove listeners here, because this module is called three times (without unloading in between!!)\n    this.removeListeners();\n    lively.addEventListener(\"dropOnDocumentBehavior\", document, \"dragover\", ::this.onDragOver);\n    lively.addEventListener(\"dropOnDocumentBehavior\", document, \"drop\", ::this.onDrop);\n    \n    this.handlers = [\n      // lively elements\n      new DropElementHandler(document.body),\n      // {\n      //   handle(evt) {\n      //     const dt = evt.dataTransfer;\n      //     if(!dt.types.includes(\"lively/element\")) { return false; }\n      //     const tempKey = dt.getData(\"lively/element\");\n      //     const element = getObjectFor(tempKey);\n      //     if (!element) return false;\n      //     document.body.appendChild(element)\n      //     lively.setClientPosition(element, lively.getPosition(evt))\n      //     if (element.lastDragOffset) {\n      //       lively.moveBy(element, element.lastDragOffset)\n      //     }\n      //     removeTempKey(tempKey);\n      //     return true;\n      //   }\n      // },\n      // vivide list\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"vivide\")) { return false; }\n          if(!dt.types.includes(\"javascript/object\")) { return false; }\n          const dataTempKey = dt.getData(\"javascript/object\");\n          const data = getObjectFor(dataTempKey);\n          const viewTempKey = dt.getData(\"vivide/source-view\");\n          const sourceView = getObjectFor(viewTempKey);\n          getObjectFor\n          letsScript(data, evt, sourceView);\n          return true;\n        }\n      },\n\n      // move a desktop item\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"desktop-icon/object\")) { return false; }\n          const tempKey = dt.getData(\"desktop-icon/object\");\n          const icon = getObjectFor(tempKey);\n          removeTempKey(tempKey);\n\n          const offset = dt.types.includes(\"desktop-icon/offset\") ?\n            JSON.parse(dt.getData(\"desktop-icon/offset\")) :\n            pt(0, 0);\n          lively.setClientPosition(icon, pt(evt.clientX, evt.clientY).subPt(offset));\n          return true;\n        }\n      },\n\n      // knot/url to desktop item\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"knot/url\")) { return false; }\n          const knotURL = dt.getData(\"knot/url\");\n\n          lively.create('knot-desktop-icon')\n            .through(icon => lively.setClientPosition(icon, pt(evt.clientX, evt.clientY)))\n            .then(icon => icon.knotURL = knotURL);\n\n          return true;\n        }\n      },\n      \n      new DropOnBodyHandler('text/uri-list', urlString => {\n        if (!urlString.match(/^data\\:image\\/png/)) { return false; }\n        \n        return <img class=\"lively-content\" src={urlString}></img>;\n      }),\n      \n      // open javascript/object in inspector\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"javascript/object\")) { return false; }\n          const tempKey = dt.getData(\"javascript/object\");\n          \n          lively.openInspector(getObjectFor(tempKey), pt(\n            evt.clientX,\n            evt.clientY).subPt(lively.getClientPosition(document.body)));\n          removeTempKey(tempKey);\n\n          return true;\n        }\n      },\n\n      new DropOnBodyHandler('text/uri-list', urlString => {\n        if (!urlString.match(/^plex:\\//)) { return false; }\n        var existing = document.body.querySelector(`plex-link[src=\"${urlString}\"]`)\n        if (existing) {\n          existing.remove()\n        }\n        lively.notify(\"dropped \" + urlString)\n        return <plex-link src={urlString}></plex-link>\n      }),\n\n      // #ExampleForLeo #Bibilograpy #TODO #Refactor\n      new DropOnBodyHandler('text/uri-list', urlString => {\n        if (!urlString.match(/^academic:\\//)) { return false; }\n        lively.notify(\"academic \" + urlString)\n        \n        var infoSpan = <div id=\"info\"></div>\n        var link = <div class=\"lively-content\" style=\"background-color: lightgray; border:1px solid orange\"><a  href={urlString}>\n            {urlString}  \n        </a>{infoSpan}</div>;\n        \n        (async () => {\n          let info = \"\";\n          for(var m of Strings.matchAll(/[Ii]d=([0-9]+)/, urlString)) {\n            let id = m[1]\n            let raw  = await lively.files.loadJSON(`academic://raw:Id=${id}?attr=AuN,Ty,AA.AuN,Y,Ti,FN`)\n\n            var entity = raw.entities[0]\n            var type = MicrosoftAcademicEntities.getEntityType(entity.Ty)\n            var label = \"\"\n            if(type ==\"author\") { \n              label = entity[\"AuN\"]\n            } else if(type == \"field-of-study\") { \n              label =  entity[\"FN\"] \n            } else if(type ==\"paper\") { \n              label =  entity[\"Ti\"] \n            }\n\n            info += `<span>${id}: ${type}, ${label}</span><br>` \n          }\n          infoSpan.innerHTML = info\n        })()\n        \n        // register the event... to be able to remove it again...\n        lively.addEventListener(\"link\", link, \"click\", evt => {\n          // #TODO make this bevior persistent?\n          evt.preventDefault();\n          evt.stopPropagation();\n          lively.openBrowser(urlString);\n          return true;\n        })\n        return link\n      }),\n      \n      \n      new DropOnBodyHandler('text/uri-list', urlString => {\n        \n        var link = <div class=\"lively-content\"><a  href={urlString}>\n          {urlString.replace(/\\/$/,\"\").replace(/.*\\//,\"\")}\n        </a></div>;\n        // register the event... to be able to remove it again...\n        lively.addEventListener(\"link\", link, \"click\", evt => {\n          // #TODO make this bevior persistent?\n          evt.preventDefault();\n          evt.stopPropagation();\n          lively.openBrowser(urlString);\n          return true;\n        })\n        return link\n      }),\n\n        new DropOnBodyHandler('application/lively4id', id => {\n        var element = lively.elementByID(id)\n    \n        if (element && \n            (element.parentElement === document.body) /* move element */) {          \n          return element\n        }\n        \n        lively.notify(\"drop id:\" + id)\n    \n        return false\n      }),\n  \n      new DropOnBodyHandler('text/plain', async text => {\n        // test for bibtex content\n         if (text.match(/^\\s*@[a-zA-Z]+\\{/)) {          \n            const comp = await (<lively-bibtex style=\"width:700px\"></lively-bibtex>);\n            comp.innerHTML = text;\n            await comp.updateView();\n            var entries = comp.querySelectorAll(\"lively-bibtex-entry\")\n             if (entries.length == 1) {\n                entries[0].style.width = \"700px\"\n                return entries[0]\n             }\n            return comp\n        }\n        return false\n      }),\n  \n  \n      new DropOnBodyHandler('text/html', htmlString => {\n        const div = <div></div>;\n        div.innerHTML = htmlString;\n\n        return div;\n      }),\n  \n  \n      new DropOnBodyHandler('text/plain', text => {\n        return <p>{text}</p>;\n      }),\n\n      // just an ui interaction, no data\n      {\n        handle(evt) {\n          return evt.dataTransfer.types.includes(\"ui/interaction\");\n        }\n      }\n    ];\n  },\n  \n  openAt(node, evt) {  \n    var target = this.lastDropTarget || document.body\n    target.appendChild(node);\n    lively.setClientPosition(node, pt(evt.clientX, evt.clientY));\n    if (this.lastDropTargetHighlight) this.lastDropTargetHighlight.remove()\n  },\n\n\n  \n  \n  onDragOver(evt) {\n    this.lastDropTarget = Array.from(evt.composedPath())\n      .find(ea => ea && ((ea.classList && ea.classList.contains(\"lively-content\")) || ea.localName == \"lively-folder\"))\n    if (this.lastDropTargetHighlight) this.lastDropTargetHighlight.remove()\n    this.lastDropTargetHighlight = lively.showElement(this.lastDropTarget)\n    \n    evt.stopPropagation();\n    evt.preventDefault();\n  },\n\n  handleFiles(evt) {\n    const files = evt.dataTransfer.files;\n\n    if(files.length === 0) { return false; }\n\n    lively.notify(`Dropped ${files.length} file(s).`);\n    Array.from(files).forEach(async (file) => {\n        const extension = lively.files.extension(file.name)\n        // #Research how do we deal with content vs. container... drop a picture here or a file that contains the picture? #Journal #Interesting\n        if (extension == \"png\" && !evt.ctrlKey) {\n            // #Refactor #TODO use lively.files.readBlobAsDataURL\n            const reader = new FileReader();\n            reader.onload = event => {\n              const dataURL = event.target.result.replace(/^data\\:image\\/png;/, `data:image/png;name=${file.name};`);\n              const img = <img class=\"lively-content\" src={dataURL}></img>;\n              appendToContainerAt(img, evt);\n            };\n            reader.readAsDataURL(file); \n        } \n        // else if (extension == \"html\") {\n        //   var source = await lively.files.readBlobAsText(file)\n        //   lively.clipboard.pasteHTMLDataInto(source, document.body, false, lively.getPosition(evt));\n        // } \n        else {          \n          var item = await (<lively-file></lively-file>)\n          item.classList.add(\"lively-content\") // for persistence\n          // #TODO check for existing \"file\"\n          item.name = file.name\n          this.openAt(item, evt);\n          item.url = await lively.files.readBlobAsDataURL(file) \n        }\n      });\n    return true;\n  },\n  \n  async onDrop(evt) {\n    // var target = evt.composedPath().find(ea => ea.classList.contains(\"lively-content\") )\n    const dt = evt.dataTransfer;\n    \n    /*\n    console.group(\"Drop Event on body\");\n    console.log(dt);\n    console.log(`#files ${dt.files.length}`);\n    console.log(Array.from(dt.items));\n    lively.notify(Array.from(dt.types).join(\" \"));\n    console.groupEnd();\n    */\n\n    evt.stopPropagation();\n    evt.preventDefault();\n    \n    if(this.handleFiles(evt)) { return; }\n\n    if(Array.from(dt.types).length > 0) {\n      if(this.handlers.find(handler => handler.handle(evt))) {\n        return;\n      }\n    }\n    var cssText = evt.dataTransfer.getData(\"lively/cssText\")\n    if (this.lastDropTarget && cssText) {\n      cssText.split(/; */).forEach(pair => {\n        var name, value;\n        [name,value] = pair.split(/: */)\n        lively.notify(\"set \" + this.lastDropTarget + \"'s \" + name + \" to \" + value)\n        name = name.replace(/ /g,\"\")\n        this.lastDropTarget.style[name] = value\n        // window.LastDT = this.lastDropTarget\n        // window.LastName = name\n        // window.LastCSS = value\n        // target.style[\"background\"] = \"red\"\n      })\n    } else {  \n      lively.warn(\"Dragged content contained neither files nor handled items\");\n    }\n    \n  }\n}\n\nexport function __unload__() {\n  dropOnDocumentBehavior.removeListeners();\n}\n\ndropOnDocumentBehavior.load()"],"mappings":"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"}