{"version":3,"sources":["../src/kopasin-js.ts"],"sourcesContent":["import { CopyInterface, KopasinInterface, PasteInterface } from \"./types\";\n\nclass Kopasin implements KopasinInterface {\n  public copy?: CopyInterface;\n  public paste?: PasteInterface;\n\n  constructor({ copy, paste }: { copy?: CopyInterface; paste?: PasteInterface }) {\n    if (copy) {\n      this.copy = {\n        ...copy,\n        source: this.getElement(copy.source),\n        trigger: this.getElement(copy.trigger),\n        on: copy.on || 'click',\n        success: copy.success || (() => { }),\n        error: copy.error || (() => { }),\n      };\n    }\n\n    if (paste) {\n      this.paste = {\n        ...paste,\n        target: this.getElement(paste.target),\n        trigger: this.getElement(paste.trigger),\n        on: paste.on || 'click',\n        success: paste.success || (() => { }),\n        error: paste.error || (() => { }),\n      };\n    }\n\n    this.init();\n  }\n\n  private init(): void {\n    if (this.copy) this.handleCopy(this.copy);\n    if (this.paste) this.handlePaste(this.paste);\n  }\n\n  private handleCopy(c: CopyInterface) {\n    c.trigger.addEventListener(c.on, function () {\n      if (c.source instanceof HTMLInputElement) {\n        c.source.select();\n      } else {\n        const selection = window.getSelection();\n        const range = document.createRange();\n\n        range.selectNodeContents(c.source);\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n\n      try {\n        window.navigator.clipboard.writeText(c.source instanceof HTMLInputElement ? c.source.value : c.source.textContent);\n        if (c.success) c.success();\n      } catch (err) {\n        if (c.error) c.error();\n      }\n    });\n  }\n\n  private handlePaste(p: PasteInterface) {\n    p.trigger.addEventListener(p.on, function () {\n      try {\n        if (p.target instanceof HTMLInputElement) {\n          window.navigator.clipboard.readText().then((text) => {\n            (p.target as HTMLInputElement).value = text\n          })\n        } else {\n          window.navigator.clipboard.readText().then((text) => {\n            p.target.innerText = text\n          })\n        }\n\n        if (p.success) p.success()\n      } catch {\n        if (p.error) p.error()\n      }\n    })\n  }\n\n  private getElement(selector: string | HTMLElement): HTMLElement {\n    return selector instanceof HTMLElement\n      ? selector\n      : document.querySelector(selector) as HTMLElement;\n  }\n}\n\nmodule.exports = Kopasin"],"mappings":"2eAAA,IAAAA,EAAAC,EAAA,CAAAC,EAAAC,IAAA,CAEA,IAAMC,EAAN,KAA0C,CAIxC,YAAY,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAqD,CACzED,IACF,KAAK,KAAOE,EAAAC,EAAA,GACPH,GADO,CAEV,OAAQ,KAAK,WAAWA,EAAK,MAAM,EACnC,QAAS,KAAK,WAAWA,EAAK,OAAO,EACrC,GAAIA,EAAK,IAAM,QACf,QAASA,EAAK,UAAY,IAAM,CAAE,GAClC,MAAOA,EAAK,QAAU,IAAM,CAAE,EAChC,IAGEC,IACF,KAAK,MAAQC,EAAAC,EAAA,GACRF,GADQ,CAEX,OAAQ,KAAK,WAAWA,EAAM,MAAM,EACpC,QAAS,KAAK,WAAWA,EAAM,OAAO,EACtC,GAAIA,EAAM,IAAM,QAChB,QAASA,EAAM,UAAY,IAAM,CAAE,GACnC,MAAOA,EAAM,QAAU,IAAM,CAAE,EACjC,IAGF,KAAK,KAAK,CACZ,CAEQ,MAAa,CACf,KAAK,MAAM,KAAK,WAAW,KAAK,IAAI,EACpC,KAAK,OAAO,KAAK,YAAY,KAAK,KAAK,CAC7C,CAEQ,WAAWG,EAAkB,CACnCA,EAAE,QAAQ,iBAAiBA,EAAE,GAAI,UAAY,CAC3C,GAAIA,EAAE,kBAAkB,iBACtBA,EAAE,OAAO,OAAO,MACX,CACL,IAAMC,EAAY,OAAO,aAAa,EAChCC,EAAQ,SAAS,YAAY,EAEnCA,EAAM,mBAAmBF,EAAE,MAAM,EACjCC,EAAU,gBAAgB,EAC1BA,EAAU,SAASC,CAAK,CAC1B,CAEA,GAAI,CACF,OAAO,UAAU,UAAU,UAAUF,EAAE,kBAAkB,iBAAmBA,EAAE,OAAO,MAAQA,EAAE,OAAO,WAAW,EAC7GA,EAAE,SAASA,EAAE,QAAQ,CAC3B,OAASG,EAAK,CACRH,EAAE,OAAOA,EAAE,MAAM,CACvB,CACF,CAAC,CACH,CAEQ,YAAYI,EAAmB,CACrCA,EAAE,QAAQ,iBAAiBA,EAAE,GAAI,UAAY,CAC3C,GAAI,CACEA,EAAE,kBAAkB,iBACtB,OAAO,UAAU,UAAU,SAAS,EAAE,KAAMC,GAAS,CAClDD,EAAE,OAA4B,MAAQC,CACzC,CAAC,EAED,OAAO,UAAU,UAAU,SAAS,EAAE,KAAMA,GAAS,CACnDD,EAAE,OAAO,UAAYC,CACvB,CAAC,EAGCD,EAAE,SAASA,EAAE,QAAQ,CAC3B,OAAQE,EAAA,CACFF,EAAE,OAAOA,EAAE,MAAM,CACvB,CACF,CAAC,CACH,CAEQ,WAAWG,EAA6C,CAC9D,OAAOA,aAAoB,YACvBA,EACA,SAAS,cAAcA,CAAQ,CACrC,CACF,EAEAb,EAAO,QAAUC","names":["require_kopasin_js","__commonJSMin","exports","module","Kopasin","copy","paste","__spreadProps","__spreadValues","c","selection","range","err","p","text","e","selector"]}