@thebase/ui
Version:
CDN-installable Owl and Bootstrap 5 UI component library.
2 lines (1 loc) • 2.17 kB
JavaScript
import{n as U,t as F}from"./chunk-R43NMSZO.js";import{Ka as b,T as D,U as P,b as y,qa as k,ra as C}from"./chunk-XNCXGIZE.js";function A(o){return new Promise(i=>{let n=new FileReader;n.addEventListener("load",()=>{i({alt:o.name,src:n.result})},!1),n.readAsDataURL(o)})}var E=async(o,i)=>{let n=[];for(let e=0;e<o.length;e++){let t=o.item(e);t&&t.type.includes("image")&&n.push(t)}let{image:d}=i.nodes;if(!d)throw y("image");return(await Promise.all(n.map(e=>A(e)))).map(({alt:e,src:t})=>d.createAndFill({src:t,alt:e}))},p=F({uploader:E,enableHtmlFileUploader:!1,uploadWidgetFactory:(o,i)=>{let n=document.createElement("span");return n.textContent="Upload in progress...",k.widget(o,n,i)}},"uploadConfig");p.meta={package:"@milkdown/plugin-upload",displayName:"Ctx<uploadConfig>"};var w=U(o=>{let i=new P("MILKDOWN_UPLOAD"),n=(e,t)=>{let a=i.getState(e);if(!a)return-1;let r=a.find(void 0,void 0,s=>s.id===t);return r.length?r[0]?.from??-1:-1},d=(e,t,a)=>{if(!a||a.length<=0)return!1;let r=Symbol("upload symbol"),s=o.get(b),{uploader:l,getInsertPos:f}=o.get(p.key),{tr:c}=e.state,g=t instanceof DragEvent?e.posAtCoords({left:t.clientX,top:t.clientY})?.pos??c.selection.from:c.selection.from,h=typeof f=="function"?f(t,o,g):g;return e.dispatch(c.setMeta(i,{add:{id:r,pos:h}})),l(a,s,o,h).then(u=>{let m=n(e.state,r);m<0||e.dispatch(e.state.tr.replaceWith(m,m,u).setMeta(i,{remove:{id:r}}))}).catch(u=>{console.error(u)}),!0};return new D({key:i,state:{init(){return C.empty},apply(e,t){let a=t.map(e.mapping,e.doc),r=e.getMeta(this);if(!r)return a;if(r.add){let{uploadWidgetFactory:s}=o.get(p.key),l=s(r.add.pos,{id:r.add.id});return a.add(e.doc,[l])}if(r.remove){let s=a.find(void 0,void 0,l=>l.id===r.remove.id);return a.remove(s)}return a}},props:{decorations(e){return this.getState(e)},handlePaste:(e,t)=>{let{enableHtmlFileUploader:a}=o.get(p.key);return!(t instanceof ClipboardEvent)||!a&&t.clipboardData?.getData("text/html")?!1:d(e,t,t.clipboardData?.files)},handleDrop:(e,t)=>t instanceof DragEvent?d(e,t,t.dataTransfer?.files):!1}})});w.meta={package:"@milkdown/plugin-upload",displayName:"Prose<upload>"};var W=[p,w];export{A as a,E as b,p as c,w as d,W as e};