{"version":3,"file":"clipboard-DKBVw-_V.js","sources":["../../../app/javascript/src/helpers/clipboard.js"],"sourcesContent":["/**\n * Element parameters in dataset (attribute)\n * data-clipboard-text - Values to be stored in clipboard\n * data-error - Text to show if error\n * data-success - Text to show if success\n * data-button-text - Optional. Text to be shown after copied time out.\n * data-trigger-target - Optional. Child element CSS selector that will trigger the copy.\n * data-status-container - Optional. Child element CSS selector that will show the copy status\n */\nclass Clipboard {\n constructor() {\n this.clipboards = document.querySelectorAll(\".js-clipboard\");\n this.bind();\n }\n\n toggleStatus(clipboard, status) {\n const color = status + \"Color\";\n\n let statusContainer = clipboard;\n if (clipboard.dataset.statusContainer) {\n statusContainer = clipboard.querySelector(clipboard.dataset.statusContainer);\n }\n const content = statusContainer.innerHTML;\n statusContainer.innerText = clipboard.dataset[status];\n clipboard.classList.add(clipboard.dataset[color]);\n\n setTimeout(() => {\n if (clipboard.dataset.buttonText) {\n statusContainer.innerText = clipboard.dataset.buttonText;\n } else {\n statusContainer.innerHTML = content;\n }\n clipboard.classList.remove(clipboard.dataset[color]);\n }, 3000);\n }\n\n copy(element) {\n try {\n navigator.clipboard.writeText(element.dataset.clipboardText);\n return \"success\";\n } catch {\n return \"error\";\n }\n }\n\n bind() {\n if (!this.clipboards) {\n return;\n }\n\n this.clipboards.forEach((clipboard) => {\n let clickElem = clipboard;\n if (clipboard.dataset.triggerTarget) {\n clickElem = clipboard.querySelector(clipboard.dataset.triggerTarget);\n }\n clickElem.addEventListener(\"click\", (e) => {\n const elem = e.target.closest('.js-clipboard');\n this.toggleStatus(elem, this.copy(elem));\n })\n });\n }\n}\n\nexport default Clipboard;\n"],"names":["Clipboard","clipboard","status","color","statusContainer","content","element","clickElem","e","elem"],"mappings":"AASA,MAAMA,CAAU,CACd,aAAc,CACZ,KAAK,WAAa,SAAS,iBAAiB,eAAe,EAC3D,KAAK,KAAI,CACV,CAED,aAAaC,EAAWC,EAAQ,CAC9B,MAAMC,EAAQD,EAAS,QAEvB,IAAIE,EAAkBH,EAClBA,EAAU,QAAQ,kBACpBG,EAAkBH,EAAU,cAAcA,EAAU,QAAQ,eAAe,GAE7E,MAAMI,EAAUD,EAAgB,UAChCA,EAAgB,UAAYH,EAAU,QAAQC,CAAM,EACpDD,EAAU,UAAU,IAAIA,EAAU,QAAQE,CAAK,CAAC,EAEhD,WAAW,IAAM,CACXF,EAAU,QAAQ,WACpBG,EAAgB,UAAYH,EAAU,QAAQ,WAE9CG,EAAgB,UAAYC,EAE9BJ,EAAU,UAAU,OAAOA,EAAU,QAAQE,CAAK,CAAC,CACpD,EAAE,GAAI,CACR,CAED,KAAKG,EAAS,CACZ,GAAI,CACF,iBAAU,UAAU,UAAUA,EAAQ,QAAQ,aAAa,EACpD,SACb,MAAY,CACN,MAAO,OACR,CACF,CAED,MAAO,CACA,KAAK,YAIV,KAAK,WAAW,QAASL,GAAc,CACrC,IAAIM,EAAYN,EACZA,EAAU,QAAQ,gBACpBM,EAAYN,EAAU,cAAcA,EAAU,QAAQ,aAAa,GAErEM,EAAU,iBAAiB,QAAUC,GAAM,CACzC,MAAMC,EAAOD,EAAE,OAAO,QAAQ,eAAe,EAC7C,KAAK,aAAaC,EAAM,KAAK,KAAKA,CAAI,CAAC,CAC/C,CAAO,CACP,CAAK,CACF,CACH"}