@thebase/ui
Version:
CDN-installable Owl and Bootstrap 5 UI component library.
5 lines (3 loc) • 2.05 kB
JavaScript
import{n as N}from"./chunk-R43NMSZO.js";import{Ka as T,P as S,T as b,U as x,_a as D,db as O,ga as y,ja as P,rb as M}from"./chunk-XNCXGIZE.js";import{l as g,m as h}from"./chunk-OQJVATGH.js";function u(e){if(!e)return!1;if(Array.isArray(e))return e.length>1?!1:u(e[0]);let r=e.content;return r?u(r):e.type==="text"}function A(e,r){return Object.assign(e,{meta:{package:"@milkdown/plugin-clipboard",...r}}),e}function z(e,r){let i=y(r);if(i)return e.dispatch(e.state.tr.replaceSelectionWith(i,!0)),!0;try{return e.dispatch(e.state.tr.replaceSelection(r)),!0}catch{return!1}}var $=N(e=>{let r=e.get(T);e.update(M,t=>({...t,editable:t.editable??(()=>!0),transformPastedHTML:(n,o)=>{let s=t.transformPastedHTML;return s&&(n=s(n,o)),n.includes("docs-internal-guid")&&(n=n.replace(/<b[^>]*id="docs-internal-guid[^"]*"[^>]*>([\s\S]*)<\/b>/,"$1"),n=n.replace(/<div[^>]*>(<table[\s\S]*?<\/table>)<\/div>/g,"$1")),n}}));let i=new x("MILKDOWN_CLIPBOARD");return new b({key:i,props:{handlePaste:(t,n,o)=>{let s=e.get(D),k=t.props.editable?.(t.state),{clipboardData:c}=n;if(!k||!c||t.state.selection.$from.node().type.spec.code)return!1;let l=c.getData("text/plain"),m=c.getData("vscode-editor-data");if(m){let a=JSON.parse(m)?.mode;if(l&&a){let{tr:p}=t.state,L=P("code_block",r);return p.replaceSelectionWith(L.create({language:a})).setSelection(S.near(p.doc.resolve(Math.max(0,p.selection.from-2)))).insertText(l.replace(/\r\n?/g,`
`)),t.dispatch(p),!0}}let d=c.getData("text/html");if(d.length===0&&l.length===0)return!1;if(d.length>0&&o)return z(t,o);let C=g.fromSchema(r),f;if(d.length===0){let a=s(l);if(!a||typeof a=="string")return!1;f=h.fromSchema(r).serializeFragment(a.content)}else{let a=document.createElement("template");a.innerHTML=d,f=a.content.cloneNode(!0),a.remove()}return z(t,C.parseSlice(f))},clipboardTextSerializer:t=>{let n=e.get(O);if(u(t.content.toJSON()))return t.content.textBetween(0,t.content.size,`
`);let o=r.topNodeType.createAndFill(void 0,t.content);return o?n(o):""}}})});A($,{displayName:"Prose<clipboard>"});export{$ as a};