{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/components/halo/lively-halo-copy-item.js"],"names":["HaloGrabItem","nodes","events","pt","scriptManager","persistence","HaloService","default","copyBlacklist","HaloCopyItem","isCopyItem","onClick","copiedObject","copyObject","window","that","style","position","setPosition","getPosition","copyTarget","addPt","showHalos","cloneObject","obj","html","lively","clipboard","nodesToHTML","lastClickPos","getGlobalPosition","result","pasteHTMLDataInto","parentElement","el","haloCopyObject","isAllowedToBeCopied","parentNode","appendChild","notify","element","indexOf","tagName","toLowerCase","prepareGrabTarget","grabTarget"],"mappings":";;;;;;AAAOA,kB;;AACKC,W;;AACAC,Y;;AACJC,Q,wBAAAA,E;;AACDC,mB;;AACAC,iB;;AAIYC,iB,kCAAXC,O;;;;;;;;;;;AATDP,uD;;;;;;;;;;;;;AACKC,gD;;;;;;;;;;;;;AACAC,iD;;;;;;;;;;;;;AACJC,6C;;;;;;;;;;;;;AACDC,wD;;;;;;;;;;;;;AACAC,sD;;;;;;;;;AAEP,UAAIG,gBAAgB,CAAC,MAAD,EAAS,MAAT,CAApB;;;;;;;;AAAIA,wD;;;;;;;;;;;;;AAEeF,sD;;;;;;;AAEJ,YAAMG,YAAN,SAA2BT,YAA3B,CAAwC;;AAErD,YAAIU,UAAJ,GAAiB;AACf,iBAAO,IAAP;AACD;;AAGDC,kBAAU;AACR,cAAI,CAAC,KAAKC,YAAV,EAAwB;AACtB,iBAAKC,UAAL,CAAgBC,OAAOC,IAAvB;AACA,iBAAKH,YAAL,CAAkBI,KAAlB,CAAwBC,QAAxB,GAAmC,UAAnC;AACAhB,kBAAMiB,WAAN,CAAkB,KAAKN,YAAvB,EAAqCX,MAAMkB,WAAN,CAAkB,KAAKC,UAAvB,EAAmCC,KAAnC,CAAyClB,GAAG,EAAH,EAAM,EAAN,CAAzC,CAArC;AACAW,mBAAOC,IAAP,GAAc,KAAKH,YAAnB;AACAN,wBAAYgB,SAAZ,CAAsBR,OAAOC,IAA7B;AACD;AACD,eAAKH,YAAL,GAAoB,IAApB;AACD;;AAEDW,oBAAYC,GAAZ,EAAiB;AACf,cAAIC,OAAOC,OAAOC,SAAP,CAAiBC,WAAjB,CAA6B,CAACJ,GAAD,CAA7B,CAAX;AACAE,iBAAOC,SAAP,CAAiBE,YAAjB,GAAgCH,OAAOI,iBAAP,CAAyBN,GAAzB,CAA8B;AAA9B,WAAhC,CACA,IAAIO,SAASL,OAAOC,SAAP,CAAiBK,iBAAjB,CAAmCP,IAAnC,EAAyCD,IAAIS,aAA7C,EAA4D,IAA5D,CAAb;AACA,iBAAOF,OAAO,CAAP,CAAP;AACD;;AAEDlB,mBAAWqB,EAAX,EAAe;AACb,eAAKd,UAAL,GAAkBc,EAAlB;AACA,cAAIA,GAAGC,cAAP,EAAuB;AACnB,iBAAKvB,YAAL,GAAoBsB,GAAGC,cAAH,CAAkB,IAAlB,CAApB,CADmB,CAC0B;AAChD,WAFD,MAEO;AACL,gBAAI,KAAKC,mBAAL,CAAyB,KAAKhB,UAA9B,CAAJ,EAA+C;AAC7C,mBAAKR,YAAL,GAAoB,KAAKW,WAAL,CAAiB,KAAKH,UAAtB,CAApB;AACA,mBAAKA,UAAL,CAAgBiB,UAAhB,CAA2BC,WAA3B,CAAuC,KAAK1B,YAA5C;AACD,aAHD,MAGO;AACLc,qBAAOa,MAAP,CAAc,oBAAoB,KAAKnB,UAAvC;AACD;AACF;AACD,iBAAO,KAAKR,YAAZ;AACD;;AAEDwB,4BAAoBI,OAApB,EAA6B;AAC3B,iBAAOhC,cAAciC,OAAd,CAAsBD,QAAQE,OAAR,CAAgBC,WAAhB,EAAtB,IAAuD,CAA9D;AACD;;AAED;AACAC,4BAAoB;AAClB,eAAKC,UAAL,GAAkB,KAAKhC,UAAL,CAAgB,KAAKgC,UAArB,CAAlB;AACA/B,iBAAOC,IAAP,GAAc,KAAK8B,UAAnB;AACAvC,sBAAYgB,SAAZ,CAAsB,KAAKuB,UAA3B;;AAEA,gBAAMD,iBAAN;AACD;AAnDoD;;yBAAlCnC,Y;;;;;;;;6BAAAA,6C","file":"lively-halo-copy-item.js","sourcesContent":["import HaloGrabItem from './lively-halo-grab-item.js';\nimport * as nodes from 'src/client/morphic/node-helpers.js';\nimport * as events from 'src/client/morphic/event-helpers.js';\nimport {pt} from 'src/client/graphics.js';\nimport scriptManager from  \"src/client/script-manager.js\";\nimport persistence from  \"src/client/persistence.js\";\n\nvar copyBlacklist = [\"body\", \"html\"];\n\nimport {default as HaloService} from \"src/components/halo/lively-halo.js\"\n\nexport default class HaloCopyItem extends HaloGrabItem {\n \n  get isCopyItem() {\n    return true;\n  }\n  \n  \n  onClick() {\n    if (!this.copiedObject) {\n      this.copyObject(window.that);\n      this.copiedObject.style.position = 'absolute';\n      nodes.setPosition(this.copiedObject, nodes.getPosition(this.copyTarget).addPt(pt(10,10)));\n      window.that = this.copiedObject;\n      HaloService.showHalos(window.that);\n    } \n    this.copiedObject = null;\n  }\n  \n  cloneObject(obj) {\n    var html = lively.clipboard.nodesToHTML([obj])\n    lively.clipboard.lastClickPos = lively.getGlobalPosition(obj) // used in pasted as offset\n    var result = lively.clipboard.pasteHTMLDataInto(html, obj.parentElement, true)\n    return result[0];\n  }\n  \n  copyObject(el) {\n    this.copyTarget = el;\n    if (el.haloCopyObject) {\n        this.copiedObject = el.haloCopyObject(this); // copy selection etc...\n    } else {\n      if (this.isAllowedToBeCopied(this.copyTarget)) {\n        this.copiedObject = this.cloneObject(this.copyTarget);\n        this.copyTarget.parentNode.appendChild(this.copiedObject);    \n      } else {\n        lively.notify(\"Could not copy \" + this.copyTarget);\n      }\n    }\n    return this.copiedObject;\n  }\n\n  isAllowedToBeCopied(element) {\n    return copyBlacklist.indexOf(element.tagName.toLowerCase()) < 0;\n  }\n\n  // DRAG API\n  prepareGrabTarget() {\n    this.grabTarget = this.copyObject(this.grabTarget);\n    window.that = this.grabTarget;\n    HaloService.showHalos(this.grabTarget);\n    \n    super.prepareGrabTarget();\n  }\n}"]}