{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/directives/click-icon-copy/index.ts"],"sourcesContent":["/**\n * v-iconCopy\n * 左侧插入复制图标，复制某个值至剪贴板\n * 接收参数：string类型/Ref<string>类型/Reactive<string>类型\n */\nimport { h, render } from \"vue\";\nimport { CopyDocument } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElMessage } from \"element-plus\";\nimport { copy as copyToClipboard, withInstallDirective } from \"../../utils\";\nimport type { Directive, DirectiveBinding } from \"vue\";\n\ninterface IconCopyElement extends HTMLElement {\n\tcopyData: string | number;\n\t__iconElement__?: Node;\n}\n\nconst IconCopyDirective: Directive = {\n\tmounted(el: IconCopyElement, binding: DirectiveBinding<string | number>) {\n\t\tel.copyData = binding.value;\n\n\t\tif (!el.copyData) return;\n\n\t\tconst handleCopyClick = (): void => {\n\t\t\tcopyToClipboard(String(el.copyData)).then(\n\t\t\t\t() => {\n\t\t\t\t\tElMessage({\n\t\t\t\t\t\ttype: \"success\",\n\t\t\t\t\t\tmessage: \"复制成功\",\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tElMessage({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: \"复制失败\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\t// 创建 ELIcon 组件\n\t\tconst iconEl = h(\n\t\t\tElIcon,\n\t\t\t{\n\t\t\t\tclass: \"fa__copy-icon\",\n\t\t\t\ttitle: \"复制\",\n\t\t\t\tonClick: handleCopyClick,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => h(CopyDocument),\n\t\t\t}\n\t\t);\n\n\t\tconst tempDiv = document.createElement(\"div\");\n\t\trender(iconEl, tempDiv);\n\n\t\tconst iconElement = tempDiv.firstChild;\n\t\tconst parentElement = el.parentElement;\n\t\tif (iconElement === null || parentElement === null) return;\n\t\tel.__iconElement__ = iconElement;\n\t\tparentElement.insertBefore(iconElement, el);\n\t},\n\tupdated(el: IconCopyElement, binding: DirectiveBinding<string | number>) {\n\t\tel.copyData = binding.value;\n\t},\n\tbeforeUnmount(el: IconCopyElement) {\n\t\tif (el.__iconElement__ && el.parentElement) {\n\t\t\tel.parentElement.removeChild(el.__iconElement__);\n\t\t}\n\t},\n};\n\n/** 在目标元素前渲染复制图标的 Vue 指令。 */\nexport const vIconCopy = withInstallDirective(IconCopyDirective, \"iconCopy\");\nexport default vIconCopy;\n"],"mappings":";;;;;;AAwEA,MAAa,YAAY,qBAAqB;CAvD7C,QAAQ,IAAqB,SAA4C;EACxE,GAAG,WAAW,QAAQ;EAEtB,IAAI,CAAC,GAAG,UAAU;EAElB,MAAM,wBAA8B;GACnC,KAAgB,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,WAC9B;IACL,UAAU;KACT,MAAM;KACN,SAAS;IACV,CAAC;GACF,SACM;IACL,UAAU;KACT,MAAM;KACN,SAAS;IACV,CAAC;GACF,CACD;EACD;EAGA,MAAM,SAAS,EACd,QACA;GACC,OAAO;GACP,OAAO;GACP,SAAS;EACV,GACA,EACC,eAAe,EAAE,YAAY,EAC9B,CACD;EAEA,MAAM,UAAU,SAAS,cAAc,KAAK;EAC5C,OAAO,QAAQ,OAAO;EAEtB,MAAM,cAAc,QAAQ;EAC5B,MAAM,gBAAgB,GAAG;EACzB,IAAI,gBAAgB,QAAQ,kBAAkB,MAAM;EACpD,GAAG,kBAAkB;EACrB,cAAc,aAAa,aAAa,EAAE;CAC3C;CACA,QAAQ,IAAqB,SAA4C;EACxE,GAAG,WAAW,QAAQ;CACvB;CACA,cAAc,IAAqB;EAClC,IAAI,GAAG,mBAAmB,GAAG,eAC5B,GAAG,cAAc,YAAY,GAAG,eAAe;CAEjD;AAI6C,GAAmB,UAAU"}