create-message.d0e57848.js 12 KB

1
  1. import{O as he}from"./index.739f0cb9.js";import{s as we}from"./index.module.cd675ce1.js";import{m as G,d as Z,aq as M,w as q,R as _,aC as ye,S as K,v as O,C as V,Y as Pe,k as n,a0 as J,aF as U,L as oe,b0 as pe,D as ne,W as be,ar as Ce,aD as Ie,X as Se,E as Q,av as N,P as xe,t as A,aT as ie,q as L,O as ee,n as X,ao as ke,aI as ze,a1 as E,aw as le,a6 as Re,N as $,aW as Te,aX as Fe,y as se,a3 as re,M as Ae,b1 as ce,Z as De,a7 as Le,aQ as Xe,a8 as Oe,aA as Ue,K as Ye}from"./index.520b75b9.js";import{a as Me,S as Ne}from"./index.c8b7053e.js";import{I as ue}from"./index.92b10066.js";import{C as Ve}from"./index.e3abb450.js";import{C as Y}from"./index.c0eb6d00.js";import{F as Ee}from"./index.a8a55e23.js";const te=e=>Math.sqrt((e[0].clientX-e[1].clientX)**2+(e[0].clientY-e[1].clientY)**2),j=G("image-preview")[1];var Ze=Z({props:{src:String,show:Boolean,active:Number,minZoom:M(q),maxZoom:M(q),rootWidth:M(Number),rootHeight:M(Number)},emits:["scale","close","longPress"],setup(e,{emit:i,slots:r}){const t=_({scale:1,moveX:0,moveY:0,moving:!1,zooming:!1,imageRatio:0,displayWidth:0,displayHeight:0}),l=ye(),w=K(),C=O(()=>{const{rootWidth:a,rootHeight:u}=e,m=u/a;return t.imageRatio>m}),x=O(()=>{const{scale:a,moveX:u,moveY:m,moving:S,zooming:T}=t,H={transitionDuration:T||S?"0s":".3s"};if(a!==1){const fe=u/a,ge=m/a;H.transform=`scale(${a}, ${a}) translate(${fe}px, ${ge}px)`}return H}),P=O(()=>{if(t.imageRatio){const{rootWidth:a,rootHeight:u}=e,m=C.value?u/t.imageRatio:a;return Math.max(0,(t.scale*m-a)/2)}return 0}),s=O(()=>{if(t.imageRatio){const{rootWidth:a,rootHeight:u}=e,m=C.value?u:a*t.imageRatio;return Math.max(0,(t.scale*m-u)/2)}return 0}),v=a=>{a=U(a,+e.minZoom,+e.maxZoom+1),a!==t.scale&&(t.scale=a,i("scale",{scale:a,index:e.active}))},p=()=>{v(1),t.moveX=0,t.moveY=0},h=()=>{const a=t.scale>1?1:2;v(a),t.moveX=0,t.moveY=0};let k,F,R,c,I,b,B;const o=a=>{const{touches:u}=a,{offsetX:m}=l;l.start(a),k=u.length,F=t.moveX,R=t.moveY,B=Date.now(),t.moving=k===1&&t.scale!==1,t.zooming=k===2&&!m.value,t.zooming&&(c=t.scale,I=te(a.touches))},d=a=>{const{touches:u}=a;if(l.move(a),(t.moving||t.zooming)&&J(a,!0),t.moving){const{deltaX:m,deltaY:S}=l,T=m.value+F,H=S.value+R;t.moveX=U(T,-P.value,P.value),t.moveY=U(H,-s.value,s.value)}if(t.zooming&&u.length===2){const m=te(u),S=c*m/I;v(S)}},y=()=>{if(k>1)return;const{offsetX:a,offsetY:u}=l,m=Date.now()-B,S=250,T=5;a.value<T&&u.value<T&&(m<S?b?(clearTimeout(b),b=null,h()):b=setTimeout(()=>{i("close"),b=null},S):m>pe&&i("longPress"))},f=a=>{let u=!1;(t.moving||t.zooming)&&(u=!0,t.moving&&F===t.moveX&&R===t.moveY&&(u=!1),a.touches.length||(t.zooming&&(t.moveX=U(t.moveX,-P.value,P.value),t.moveY=U(t.moveY,-s.value,s.value),t.zooming=!1),t.moving=!1,F=0,R=0,c=1,t.scale<1&&p(),t.scale>e.maxZoom&&(t.scale=+e.maxZoom))),J(a,u),y(),l.reset()},z=a=>{const{naturalWidth:u,naturalHeight:m}=a.target;t.imageRatio=m/u};return V(()=>e.active,p),V(()=>e.show,a=>{a||p()}),Pe("touchmove",d,{target:O(()=>{var a;return(a=w.value)==null?void 0:a.$el})}),()=>{const a={loading:()=>n(oe,{type:"spinner"},null)};return n(Me,{ref:w,class:j("swipe-item"),onTouchstartPassive:o,onTouchend:f,onTouchcancel:f},{default:()=>[r.image?n("div",{class:j("image-wrap")},[r.image({src:e.src})]):n(ue,{src:e.src,fit:"contain",class:j("image",{vertical:C.value}),style:x.value,onLoad:z},a)]})}}});const[Be,D]=G("image-preview"),He=["show","transition","overlayStyle","closeOnPopstate"],We={show:Boolean,loop:A,images:ie(),minZoom:L(1/3),maxZoom:L(3),overlay:A,closeable:Boolean,showIndex:A,className:ee,closeIcon:X("clear"),transition:String,beforeClose:Function,overlayClass:ee,overlayStyle:Object,swipeDuration:L(300),startPosition:L(0),showIndicators:Boolean,closeOnPopstate:A,closeIconPosition:X("top-right")};var de=Z({name:Be,props:We,emits:["scale","close","closed","change","longPress","update:show"],setup(e,{emit:i,slots:r}){const t=K(),l=_({active:0,rootWidth:0,rootHeight:0}),w=()=>{if(t.value){const c=ke(t.value.$el);l.rootWidth=c.width,l.rootHeight=c.height,t.value.resize()}},C=c=>i("scale",c),x=c=>i("update:show",c),P=()=>{le(e.beforeClose,{args:[l.active],done:()=>x(!1)})},s=c=>{c!==l.active&&(l.active=c,i("change",c))},v=()=>{if(e.showIndex)return n("div",{class:D("index")},[r.index?r.index({index:l.active}):`${l.active+1} / ${e.images.length}`])},p=()=>{if(r.cover)return n("div",{class:D("cover")},[r.cover()])},h=()=>n(Ne,{ref:t,lazyRender:!0,loop:e.loop,class:D("swipe"),duration:e.swipeDuration,initialSwipe:e.startPosition,showIndicators:e.showIndicators,indicatorColor:"white",onChange:s},{default:()=>[e.images.map((c,I)=>n(Ze,{src:c,show:e.show,active:l.active,maxZoom:e.maxZoom,minZoom:e.minZoom,rootWidth:l.rootWidth,rootHeight:l.rootHeight,onScale:C,onClose:P,onLongPress:()=>i("longPress",{index:I})},{image:r.image}))]}),k=()=>{if(e.closeable)return n(E,{role:"button",name:e.closeIcon,class:[D("close-icon",e.closeIconPosition),ze],onClick:P},null)},F=()=>i("closed"),R=(c,I)=>{var b;return(b=t.value)==null?void 0:b.swipeTo(c,I)};return ne({swipeTo:R}),be(w),V([Ce,Ie],w),V(()=>e.startPosition,c=>s(+c)),V(()=>e.show,c=>{const{images:I,startPosition:b}=e;c?(s(+b),Se(()=>{w(),R(+b,{immediate:!0})})):i("close",{index:l.active,url:I[l.active]})}),()=>n(xe,Q({class:[D(),e.className],overlayClass:[D("overlay"),e.overlayClass],onClosed:F,"onUpdate:show":x},N(e,He)),{default:()=>[k(),h(),v(),p()]})}});let W;const $e={loop:!0,images:[],maxZoom:3,minZoom:1/3,onScale:void 0,onClose:void 0,onChange:void 0,teleport:"body",className:"",showIndex:!0,closeable:!1,closeIcon:"clear",transition:void 0,beforeClose:void 0,overlayStyle:void 0,overlayClass:void 0,startPosition:0,swipeDuration:300,showIndicators:!1,closeOnPopstate:!0,closeIconPosition:"top-right"};function _e(){({instance:W}=Te({setup(){const{state:e,toggle:i}=Fe(),r=()=>{e.images=[]};return()=>n(de,Q(e,{onClosed:r,"onUpdate:show":i}),null)}}))}const je=(e,i=0)=>{if(!!Re)return W||_e(),e=Array.isArray(e)?{images:e,startPosition:i}:e,W.open($({},$e,e)),W};se(de);const[qe,g,Ge]=G("uploader");function ae(e,i){return new Promise(r=>{if(i==="file"){r();return}const t=new FileReader;t.onload=l=>{r(l.target.result)},i==="dataUrl"?t.readAsDataURL(e):i==="text"&&t.readAsText(e)})}function me(e,i){return re(e).some(r=>r.file?Ae(i)?i(r.file):r.file.size>i:!1)}function Ke(e,i){const r=[],t=[];return e.forEach(l=>{me(l,i)?t.push(l):r.push(l)}),{valid:r,invalid:t}}const Qe=/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i,Je=e=>Qe.test(e);function ve(e){return e.isImage?!0:e.file&&e.file.type?e.file.type.indexOf("image")===0:e.url?Je(e.url):typeof e.content=="string"?e.content.indexOf("data:image")===0:!1}var et=Z({props:{name:q,item:M(Object),index:Number,imageFit:String,lazyLoad:Boolean,deletable:Boolean,previewSize:[Number,String,Array],beforeDelete:Function},emits:["delete","preview"],setup(e,{emit:i,slots:r}){const t=()=>{const{status:s,message:v}=e.item;if(s==="uploading"||s==="failed"){const p=s==="failed"?n(E,{name:"close",class:g("mask-icon")},null):n(oe,{class:g("loading")},null),h=De(v)&&v!=="";return n("div",{class:g("mask")},[p,h&&n("div",{class:g("mask-message")},[v])])}},l=s=>{const{name:v,item:p,index:h,beforeDelete:k}=e;s.stopPropagation(),le(k,{args:[p,{name:v,index:h}],done:()=>i("delete")})},w=()=>i("preview"),C=()=>{if(e.deletable&&e.item.status!=="uploading"){const s=r["preview-delete"];return n("div",{role:"button",class:g("preview-delete",{shadow:!s}),tabindex:0,"aria-label":Ge("delete"),onClick:l},[s?s():n(E,{name:"cross",class:g("preview-delete-icon")},null)])}},x=()=>{if(r["preview-cover"]){const{index:s,item:v}=e;return n("div",{class:g("preview-cover")},[r["preview-cover"]($({index:s},v))])}},P=()=>{const{item:s,lazyLoad:v,imageFit:p,previewSize:h}=e;return ve(s)?n(ue,{fit:p,src:s.content||s.url,class:g("preview-image"),width:Array.isArray(h)?h[0]:h,height:Array.isArray(h)?h[1]:h,lazyLoad:v,onClick:w},{default:x}):n("div",{class:g("file"),style:ce(e.previewSize)},[n(E,{class:g("file-icon"),name:"description"},null),n("div",{class:[g("file-name"),"van-ellipsis"]},[s.file?s.file.name:s.url]),x()])};return()=>n("div",{class:g("preview")},[P(),t(),C()])}});const tt={name:L(""),accept:X("image/*"),capture:String,multiple:Boolean,disabled:Boolean,readonly:Boolean,lazyLoad:Boolean,maxCount:L(1/0),imageFit:X("cover"),resultType:X("dataUrl"),uploadIcon:X("photograph"),uploadText:String,deletable:A,afterRead:Function,showUpload:A,modelValue:ie(),beforeRead:Function,beforeDelete:Function,previewSize:[Number,String,Array],previewImage:A,previewOptions:Object,previewFullImage:A,maxSize:{type:[Number,String,Function],default:1/0}};var at=Z({name:qe,props:tt,emits:["delete","oversize","clickUpload","closePreview","clickPreview","update:modelValue"],setup(e,{emit:i,slots:r}){const t=K(),l=[],w=(o=e.modelValue.length)=>({name:e.name,index:o}),C=()=>{t.value&&(t.value.value="")},x=o=>{if(C(),me(o,e.maxSize))if(Array.isArray(o)){const d=Ke(o,e.maxSize);if(o=d.valid,i("oversize",d.invalid,w()),!o.length)return}else{i("oversize",o,w());return}o=_(o),i("update:modelValue",[...e.modelValue,...re(o)]),e.afterRead&&e.afterRead(o,w())},P=o=>{const{maxCount:d,modelValue:y,resultType:f}=e;if(Array.isArray(o)){const z=+d-y.length;o.length>z&&(o=o.slice(0,z)),Promise.all(o.map(a=>ae(a,f))).then(a=>{const u=o.map((m,S)=>{const T={file:m,status:"",message:""};return a[S]&&(T.content=a[S]),T});x(u)})}else ae(o,f).then(z=>{const a={file:o,status:"",message:""};z&&(a.content=z),x(a)})},s=o=>{const{files:d}=o.target;if(e.disabled||!d||!d.length)return;const y=d.length===1?d[0]:[].slice.call(d);if(e.beforeRead){const f=e.beforeRead(y,w());if(!f){C();return}if(Ye(f)){f.then(z=>{P(z||y)}).catch(C);return}}P(y)};let v;const p=()=>i("closePreview"),h=o=>{if(e.previewFullImage){const d=e.modelValue.filter(ve),y=d.map(f=>(f.file&&!f.url&&f.status!=="failed"&&(f.url=URL.createObjectURL(f.file),l.push(f.url)),f.url)).filter(Boolean);v=je($({images:y,startPosition:d.indexOf(o),onClose:p},e.previewOptions))}},k=()=>{v&&v.close()},F=(o,d)=>{const y=e.modelValue.slice(0);y.splice(d,1),i("update:modelValue",y),i("delete",o,w(d))},R=(o,d)=>{const y=["imageFit","deletable","previewSize","beforeDelete"],f=$(N(e,y),N(o,y,!0));return n(et,Q({item:o,index:d,onClick:()=>i("clickPreview",o,w(d)),onDelete:()=>F(o,d),onPreview:()=>h(o)},N(e,["name","lazyLoad"]),f),N(r,["preview-cover","preview-delete"]))},c=()=>{if(e.previewImage)return e.modelValue.map(R)},I=o=>i("clickUpload",o),b=()=>{if(e.modelValue.length>=e.maxCount)return;const o=e.readonly?null:n("input",{ref:t,type:"file",class:g("input"),accept:e.accept,capture:e.capture,multiple:e.multiple,disabled:e.disabled,onChange:s},null);return r.default?n("div",{class:g("input-wrapper"),onClick:I},[r.default(),o]):Oe(n("div",{class:g("upload",{readonly:e.readonly}),style:ce(e.previewSize),onClick:I},[n(E,{name:e.uploadIcon,class:g("upload-icon")},null),e.uploadText&&n("span",{class:g("upload-text")},[e.uploadText]),o]),[[Ue,e.showUpload]])},B=()=>{t.value&&!e.disabled&&t.value.click()};return Le(()=>{l.forEach(o=>URL.revokeObjectURL(o))}),ne({chooseFile:B,closeImagePreview:k}),Xe(()=>e.modelValue),()=>n("div",{class:g()},[n("div",{class:g("wrapper",{disabled:e.disabled})},[c(),b()])])}});const ot=se(at);var mt=Z({name:"create-message",setup(){const e=_({type:null,content:null});return()=>n("div",{class:we["create-message"]},[n(he,null,null),n(Ve,{inset:!0},{default:()=>[n(Y,{title:"\u53D1\u9001\u65B9\u5F0F",value:"",isLink:!0},null),n(Y,{title:"\u53D1\u9001\u65F6\u95F4",value:"",isLink:!0},null),n(Y,{title:"\u53D1\u9001\u5185\u5BB9"},{label:()=>n(Ee,{style:{padding:"0"},placeholder:"\u8BF7\u8F93\u5165\u53D1\u9001\u5185\u5BB9",modelValue:e.content,"onUpdate:modelValue":i=>e.content=i,type:"textarea",rows:3},null)}),n(Y,{title:"\u4E0A\u4F20\u8F85\u4EF6"},{default:()=>[n(ot,null,null)]}),n(Y,{title:"\u53D1\u9001\u5BF9\u8C61"},null)]})])}});export{mt as default};