{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-pipes-and-filters/src/components/halo/lively-halo-copy-item.js"],"names":["HaloGrabItem","nodes","events","pt","scriptManager","persistence","copyBlacklist","HaloCopyItem","isCopyItem","onClick","copiedObject","copyObject","window","that","style","position","setPosition","getPosition","copyTarget","addPt","HaloService","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;;;;;;;;;;;AALAL,uD;;;;;;;;;;;;;AACKC,gD;;;;;;;;;;;;;AACAC,iD;;;;;;;;;;;;;AACJC,6C;;;;;;;;;;;;;AACDC,wD;;;;;;;;;;;;;AACAC,sD;;;;;;;;;AAEP,UAAIC,gBAAgB,CAAC,MAAD,EAAS,MAAT,CAApB;;;;;;;;AAAIA,wD;;;;;;;AAEW,YAAMC,YAAN,SAA2BP,YAA3B,CAAwC;;AAErD,YAAIQ,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;AACAd,kBAAMe,WAAN,CAAkB,KAAKN,YAAvB,EAAqCT,MAAMgB,WAAN,CAAkB,KAAKC,UAAvB,EAAmCC,KAAnC,CAAyChB,GAAG,EAAH,EAAM,EAAN,CAAzC,CAArC;AACAS,mBAAOC,IAAP,GAAc,KAAKH,YAAnB;AACAE,mBAAOQ,WAAP,CAAmBC,SAAnB,CAA6BT,OAAOC,IAApC;AACD;AACD,eAAKH,YAAL,GAAoB,IAApB;AACD;;AAEDY,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;;AAEDnB,mBAAWsB,EAAX,EAAe;AACb,eAAKf,UAAL,GAAkBe,EAAlB;AACA,cAAIA,GAAGC,cAAP,EAAuB;AACnB,iBAAKxB,YAAL,GAAoBuB,GAAGC,cAAH,CAAkB,IAAlB,CAApB,CADmB,CAC0B;AAChD,WAFD,MAEO;AACL,gBAAI,KAAKC,mBAAL,CAAyB,KAAKjB,UAA9B,CAAJ,EAA+C;AAC7C,mBAAKR,YAAL,GAAoB,KAAKY,WAAL,CAAiB,KAAKJ,UAAtB,CAApB;AACA,mBAAKA,UAAL,CAAgBkB,UAAhB,CAA2BC,WAA3B,CAAuC,KAAK3B,YAA5C;AACD,aAHD,MAGO;AACLe,qBAAOa,MAAP,CAAc,oBAAoB,KAAKpB,UAAvC;AACD;AACF;AACD,iBAAO,KAAKR,YAAZ;AACD;;AAEDyB,4BAAoBI,OAApB,EAA6B;AAC3B,iBAAOjC,cAAckC,OAAd,CAAsBD,QAAQE,OAAR,CAAgBC,WAAhB,EAAtB,IAAuD,CAA9D;AACD;;AAED;AACAC,4BAAoB;AAClB,eAAKC,UAAL,GAAkB,KAAKjC,UAAL,CAAgB,KAAKiC,UAArB,CAAlB;AACAhC,iBAAOC,IAAP,GAAc,KAAK+B,UAAnB;AACAxB,sBAAYC,SAAZ,CAAsB,KAAKuB,UAA3B;;AAEA,gBAAMD,iBAAN;AACD;AAnDoD;;yBAAlCpC,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\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      window.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}"]}