{"version":3,"file":"copy-DtiY2mkc.js","sources":["../../../app/javascript/src/copy.ts"],"sourcesContent":["import FetchRails from \"@src/fetch-rails\"\n\nexport function bind(): void {\n document.body.removeAndAddEventListener(\"click\", copyToClipboard)\n}\n\nexport default function copyToClipboard(event: MouseEvent, optionalContent = \"\"): void {\n let eventTarget = event.target as HTMLElement | undefined | null\n if (eventTarget?.dataset?.action != \"copy\") eventTarget = eventTarget?.closest(\"[data-action~='copy-to-clipboard']\")\n\n if (!eventTarget) return\n\n event.preventDefault()\n\n const target: string = eventTarget.dataset.target || \"\"\n const targetElement = document.querySelector(`[data-copy=\"${target}\"]`) as HTMLElement\n\n const { textContent } = targetElement\n\n if (!textContent) return\n\n copyValueToClipboard(optionalContent || textContent)\n\n const notificationElement = document.createElement(\"div\")\n notificationElement.classList.add(\"copy__notification\")\n notificationElement.innerHTML = \"✓\"\n\n let copyParent = eventTarget.closest(\"button\")?.querySelector(\".copy\")\n if (!copyParent) copyParent = eventTarget\n copyParent.append(notificationElement)\n\n setTimeout((): void | undefined => copyParent.querySelector(\".copy__notification\")?.remove(), 1000)\n\n if (eventTarget.dataset.trackCopy === undefined) return\n\n if (eventTarget.dataset.trackCopy !== \"false\" && eventTarget.dataset.trackCopy !== undefined) trackCopy(textContent)\n eventTarget.dataset.trackCopy = \"false\" // Don't track repeat clicks\n}\n\nexport function copyValueToClipboard(value: string): void {\n const input = document.createElement(\"textarea\")\n input.value = value\n document.body.appendChild(input)\n\n input.select()\n document.execCommand(\"copy\")\n document.body.removeChild(input)\n}\n\nfunction trackCopy(label: string): void {\n new FetchRails(\"/copy-code\", { code: label }).post()\n}\n"],"names":["bind","copyToClipboard","event","optionalContent","eventTarget","_a","target","targetElement","textContent","copyValueToClipboard","notificationElement","copyParent","_b","trackCopy","value","input","label","FetchRails"],"mappings":"2CAEO,SAASA,GAAa,CAClB,SAAA,KAAK,0BAA0B,QAASC,CAAe,CAClE,CAEwB,SAAAA,EAAgBC,EAAmBC,EAAkB,GAAU,SACrF,IAAIC,EAAcF,EAAM,OAGxB,KAFIG,EAAAD,GAAA,YAAAA,EAAa,UAAb,YAAAC,EAAsB,SAAU,SAAsBD,EAAAA,GAAA,YAAAA,EAAa,QAAQ,uCAE3E,CAACA,EAAa,OAElBF,EAAM,eAAe,EAEf,MAAAI,EAAiBF,EAAY,QAAQ,QAAU,GAC/CG,EAAgB,SAAS,cAAc,eAAeD,CAAM,IAAI,EAEhE,CAAE,YAAAE,GAAgBD,EAExB,GAAI,CAACC,EAAa,OAElBC,EAAqBN,GAAmBK,CAAW,EAE7C,MAAAE,EAAsB,SAAS,cAAc,KAAK,EACpCA,EAAA,UAAU,IAAI,oBAAoB,EACtDA,EAAoB,UAAY,IAEhC,IAAIC,GAAaC,EAAAR,EAAY,QAAQ,QAAQ,IAA5B,YAAAQ,EAA+B,cAAc,SACzDD,IAAyBA,EAAAP,GAC9BO,EAAW,OAAOD,CAAmB,EAErC,WAAW,IAAwB,OAAA,OAAAL,EAAAM,EAAW,cAAc,qBAAqB,IAA9C,YAAAN,EAAiD,UAAU,GAAI,EAE9FD,EAAY,QAAQ,YAAc,SAElCA,EAAY,QAAQ,YAAc,SAAWA,EAAY,QAAQ,YAAc,QAAWS,EAAUL,CAAW,EACnHJ,EAAY,QAAQ,UAAY,QAClC,CAEO,SAASK,EAAqBK,EAAqB,CAClD,MAAAC,EAAQ,SAAS,cAAc,UAAU,EAC/CA,EAAM,MAAQD,EACL,SAAA,KAAK,YAAYC,CAAK,EAE/BA,EAAM,OAAO,EACb,SAAS,YAAY,MAAM,EAClB,SAAA,KAAK,YAAYA,CAAK,CACjC,CAEA,SAASF,EAAUG,EAAqB,CACtC,IAAIC,EAAW,aAAc,CAAE,KAAMD,CAAM,CAAC,EAAE,KAAK,CACrD"}