@bothub-chat/ui
Version:
Bothub UI Components
2 lines (1 loc) • 901 B
JavaScript
import{useEffect as t}from"react";import{processSelection as e}from"./processSelection.js";const a=(t=!0,a=!0)=>function(r){var o,n;const i=r.target;if(i&&("TEXTAREA"===i.tagName||"INPUT"===i.tagName))return;if(!r.clipboardData)return;const c=window.getSelection();if(!c||!c.rangeCount)return;if(!a)return r.clipboardData.setData("text/plain",c.toString()),void r.preventDefault();const l=c.getRangeAt(0);if(l.collapsed)return;const p=!!(null===(n=null===(o=r.target)||void 0===o?void 0:o.closest)||void 0===n?void 0:n.call(o,'[data-codeblock="true"]')),{html:s,plain:u}=e(l,t,p);r.clipboardData.setData("text/html",s),r.clipboardData.setData("text/plain",u),r.preventDefault()},r=(e,r=!0,o=!1)=>{t(()=>{const t=a(r,o),n=e.current;return n&&n.addEventListener("copy",t,{capture:!1}),()=>{n&&n.removeEventListener("copy",t,{capture:!1})}},[r,o,e])};export{a as buildOnCopy,r as useMessageCopyHandler};